gnustep-dev
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Out-of-tree builds?


From: David Chisnall
Subject: Re: Out-of-tree builds?
Date: Tue, 20 Mar 2018 15:18:07 +0000

On 20 Mar 2018, at 15:03, Richard Frith-Macdonald <address@hidden> wrote:
> 
> 
> 
>> On 20 Mar 2018, at 13:04, David Chisnall <address@hidden> wrote:
>> 
>> Hello the list,
>> 
>> I need to build GNUstep in a couple of different configurations, for 
>> testing.  For most projects, I would do this by using out-of-tree builds, 
>> but this doesn’t appear to work for GNUstep.  Is there a mechanism for doing 
>> this that I can’t find, or is it just a limitation of the build system?
> 
> I'm fairly sure it's not supported;
> I remember seeing an ancient patch to add this on savannah, but I hadn't 
> noticed it when new.  It might be easy to apply, but I suspect it's too old 
> to be helpful.
> Even if I had seen it I'm not sure I'd have jumped in to apply it myself, 
> since I've never been on a system with so little disk space that I 
> needed/wanted to build that way.

It has nothing to do with disk space, it has to do with my sanity.  With 
libobjc2 (and LLVM, Clang, and most other projects I use), I have a single 
checkout of the code and build directories for release and debug versions (and 
some more exotic ones for cross-compilation or testing newer compilers).  If I 
find a bug in my release build, I can build exactly the same sources in a debug 
config by changing to the correct directory and typing ‘ninja’.  If I think I 
have fixed the bug, I can change to the release directory, rebuild there, and 
see if it’s gone away in the original place.

Because they are in separate directories, there is no chance of pollution 
between them and I get incremental rebuilds of all configurations when I change 
any source.  This is invaluable with cross-compiling, if I want to test a 
change on x86, ARM and MIPS, or even just 32- and 64-bit x86 versions.

And, as an aside, I can often stick the build directories in faster but less 
reliable storage (I don’t care if I lose my build directories if the power goes 
out, I do care if I lose my source directories.  I want my source directories 
to be spread across disks in a RAID configuration with redundancy, but I’m 
happy for my build directories to have no redundancy and fewer syncs, so 
infrequently-written files stay in RAM).  

Oh, and for the CMake ones I also typically have a build directory that uses 
XCode so that I can use the static analyser and refactoring tools from there, 
rather than via the command line.

David




reply via email to

[Prev in Thread] Current Thread [Next in Thread]