discuss-gnustep
[Top][All Lists]
Advanced

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

gnustep-make now supports building in separate build directory


From: Nicola Pero
Subject: gnustep-make now supports building in separate build directory
Date: Tue, 14 Oct 2003 00:48:42 +0100 (BST)

I have implemented support for building in a separate build directory in
gnustep-make - separate from the source directory.  This has been often
requested and has never been available.


1. What is it 

For example, you have your project in Source/ (that is, you have
Source/GNUmakefile, Source/NSNicola.m, etc).  To build it in another 
directory, you do

cd Source
make GNUSTEP_BUILD_DIR=../Build

and nothing is [/should be] written into Source - all object files and
compilation results and generated stuff should be put into ../Build
automatically, leaving Source completely clean.  Not sure why it is that
useful ;-) but some people love this feature.  I suppose you could build a
source tree from a non-writable CD, for example, without having to copy it
on your hard-disk.


2. How complete is the implementation

The implementation of all the C/C++/ObjC part is done, including the
difficult thorny bits - aggregate projects, applications, tools,
libraries, test-applications, test-tools, test-libraries, ctools, objc
programs, palettes, services, frameworks and subprojects should all work.

Building documentation is missing;  building Java stuff is also not
implemented (I'm not sure Java is particularly friendly in that respect -
it might be that it won't be implemented for a long time); building the
core libraries in a separate build dir is also not done yet.

Building the core libraries outside the source directory will work by
having ./configure generate GNUmakefile fragments rather than the
GNUmakefile themselves; the GNUmakefiles will include the generated
fragments from the build directory.  In practice, you first do ./configure
--build-dir=../Build which puts the generate makefile fragments in
../Build and you then "make GNUSTEP_BUILD_DIR=../build" and that reads the
GNUmakefiles in the source directory, but those will grab the makefile
fragments from the build dir.  I'll implement this in next days, but
thought I'd sketch it so you know what I'll be doing when I start messing
up makefiles there :-)


3. Problems, feedback

Implementing this has required extensive changes to gnustep-make.  Given
all the obscure complexities of frameworks, subprojects and other stuff,
it's likely that something might have been broken during the change.

Please double-check that everything still compiles in your project(s)  
using current CVS, and let me know if something is broken - I'll fix it as
soon as possible.

If you want to play with the new stuff, give it a try! do a 'make
GNUSTEP_BUILD_DIR=<some other directory>' and let me know if you have
problems.  Make sure you understand that if you're using autoconf, the
thing won't probably work without changes.  The core libraries use
autoconf, so won't build outside the source dir yet.  Also, your custom
makefile code might need updating to support this functionality.  I'm
happy to help with this.

Thanks.  Comments welcome.





reply via email to

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