Path: csiph.com!weretis.net!feeder8.news.weretis.net!eternal-september.org!feeder3.eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail From: Tim Rentsch Newsgroups: comp.lang.c Subject: Re: Experimental C Build System Date: Sat, 03 Feb 2024 01:05:15 -0800 Organization: A noiseless patient Spider Lines: 62 Message-ID: <86ttmp9aus.fsf@linuxsc.com> References: <86eddyba7z.fsf@linuxsc.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Injection-Info: dont-email.me; posting-host="86b83c500004563f07cda2ade1e7584b"; logging-data="3227906"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1/kykAWwT4RIMIiFD15rrbD/B5O8Ymz/s8=" User-Agent: Gnus/5.11 (Gnus v5.11) Emacs/22.4 (gnu/linux) Cancel-Lock: sha1:xFagM2eXsSsDhrfDjNYDgTzh570= sha1:vWAWSm94pOcREvRZeJxMQ0hVphY= Xref: csiph.com comp.lang.c:381664 bart writes: > On 31/01/2024 00:46, Tim Rentsch wrote: > >> Looking over one of my current projects (modest in size, >> a few thousand lines of C source, plus some auxiliary >> files adding perhaps another thousand or two), here are >> some characteristics essential for my workflow (given >> in no particular order): >> >> * have multiple outputs (some outputs the result of >> C compiles, others the result of other tools) >> >> * use different flag settings for different translation >> units >> >> * be able to express dependency information >> >> * produece generated source files, sometimes based >> on other source files >> >> * be able to invoke arbitrary commands, including >> user-written scripts or other programs >> >> * build or rebuild some outputs only when necessary >> >> * condition some processing steps on successful >> completion of other processing steps >> >> * deliver partially built as well as fully built >> program units >> >> * automate regression testing and project archival >> (in both cases depending on completion status) >> >> * produce sets of review locations for things like >> program errors or TBD items >> >> * express different ways of combining compiler >> outputs (such as .o files) depending on what >> is being combined and what output is being >> produced (sometimes a particular set of inputs >> will be combined in several different ways to >> produce several different outputs) >> >> Indeed it is the case that producing a complete program is one >> part of my overall build process. But it is only one step out >> of many, and it is easy to express without needing any special >> considerations from the build system. > > So, will a specific build of such a project produce a single > EXE/DLL//SO file? (The // includes the typical file extension of > Linux executables.) No, there are several outputs of this kind, including object files, static libraries, and dynamic libraries, and all for a C environment. (There are also other outputs but of a different kind than what you are asking about.) I have no expectation that you will incorporate these ideas or capabilities into a tool you are building for yourself. I gave the list in case other readers might have an interest.