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.