Olivier Dion via General Guile related discussions schreef op zo 06-02- 2022 om 11:35 [-0500]: > I personnally end up writting something similar to hall for a project of > mine using Guix records.  From a description like so: > -------------------------------------------------------------------------------- > (project >   (name "foo") >   (version "1") >   (configuration-file "config.scm") >   (export-configuration >     '(("include/config.h" . "FOO_CONFIG_H") >       ("foo/config.scm"   . "foo config"))) >   (build-directory "./build") >   (cppflags `(-Include ,(pkg-cflags-only-I '(guile-3.0)))) >   (guile-root "foo") >   (guile-tests-root "tests") >   (scripts >     (list >       (script >         (name "foo") >         (file "scripts/foo") >         (install? #t)) >       (script >         (name "debug") >         (file "scripts/debug") >         (install? #f)))) >   (c-modules >     (list >       (c-module >         (name "foo") >         (files '("core/*.c")) >         (packages '(guile-3.0))) >       (c-module >         (name "bar") >         (files '("bar/bar.c")) >         (ldflags '(-lsomelib)) >         (packages '(some-other-lib))))) > -------------------------------------------------------------------------------- > this description end up generating a `guix.scm`, `makefile`, > `pre-install-env`, `foo/config.scm` and `include/config.h`.  Packaging > is just a matter of shipping the `makefile` with the source codes. This seems like a practical build system to me. Is it available online somewhere? I'd like to investigate it a bit for some common problems in ad-hoc Makefiles (in particular w.r.t. cross-compilation, tracking dependency information, choosing installation prefixes...) and determine if I could extend it for my usecases. Is it restricted to Makefiles, or can it also be used without generating Makefiles? If not, things like progress bars should be easy to implement and file names containing spaces or ‘special characters’ can be used without any problems. Greetings, Maxime.