Olivier Dion schreef op zo 06-02-2022 om 17:05 [-0500]: > > 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. > > Since it's glued to my project, and since I'm very familiar with > Makefiles, it only support Makefiles for now.  What would be the > other > targets you have in mind? I was thinking of something like $ cd ~/the-source-code # (I haven't looked much yet, possibly the CLI needs to be very different) $ cbuild make --target=aarch64-linux-gnu --prefix=/foo/bar $ cbuild install --staged-install=/blah Basically, don't delegate to 'make' or 'ninja' or whatever, just build it. That's way less portable than 'make' of course, but people that don't have 'cbuild' or don't want to learn 'cbuild' can still use the Makefile. Seems like I'll have to make some changes to support cross-compilation (basically, pass --target=aarch64-linux-gnu or the like to "guild compile", and search for TARGET-gcc/clang instead of gcc/clang) but otherwise looks mostly ok. I noted that you are using #nil in some places. #nil (an amalgation of #false and the empty list ()) is mostly an implementation detail for Emacs Lisp support, and not something that needs to be used in pure Guile. I would use '() instead; it's also more portable to other Schemes. There's also some potential reproducibility problems: in https://gitlab.com/oldiob/cbuild/-/blob/master/config.scm#L19, D1CACHE_LINE_SIZE is set based on the cache size where it was compiled, instead of the cache size where it is supposed to run on. For now, I'll keep using the Autotools-based system (if it works, don't break it :p, also doing other things at the moment than tweaking build systems), but I'll keep cbuild in mind for the future. Greetings, Maxime.