Feature #1484
Support out-of-source builds
Status: | Closed | Start date: | 06/28/2015 | |
---|---|---|---|---|
Priority: | Normal | Due date: | ||
Assigned To: | Knödlseder Jürgen | % Done: | 100% | |
Category: | - | |||
Target version: | 1.1.0 | |||
Duration: |
Description
Looks like Gammalib doesn’t support out-of-source builds ... it falls over with the Python extensions:
https://gist.github.com/cdeil/804e727d7b5bd038f8ea
Out-of-source builds are important for developers that want to test multiple compilers / options, or have debug / production builds, switch between branches ... basically everyone that wants to have more than one build.
Possible?
Recurrence
No recurrence.
History
#1 Updated by Knödlseder Jürgen over 9 years ago
What are out of source builds?
#2 Updated by Deil Christoph over 9 years ago
An in-source build is if the generated files (object files, library files ... any generated files) are mixed with the source files.
An out-of source build is if the generated files go to a separate folder, leaving the source folder clean.
http://stackoverflow.com/a/1311299/498873
http://www.gnu.org/software/automake/manual/html_node/VPATH-Builds.html
http://voices.canonical.com/jussi.pakkanen/2013/04/16/why-you-should-consider-using-separate-build-directories/
#3 Updated by Knödlseder Jürgen over 8 years ago
- Status changed from New to In Progress
- Assigned To set to Knödlseder Jürgen
- Target version set to 1.1.0
The following should work:
make distclean mkdir build cd build ../configure --srcdir=.. make
For the moment it crashes with:
../../pyext/gammalib/app.i:43: Error: Unable to find 'typemap_GFilename.i' ../../pyext/gammalib/model.i:43: Error: Unable to find 'typemap_GFilename.i' ../../pyext/gammalib/model.i:46: Error: Unable to find 'GBase.i' ../../pyext/gammalib/model.i:47: Error: Unable to find 'GContainer.i' ../../pyext/gammalib/model.i:48: Error: Unable to find 'GRegistry.i' ../../pyext/gammalib/model.i:51: Error: Unable to find 'GException.i' ...
#4 Updated by Knödlseder Jürgen over 8 years ago
- % Done changed from 0 to 50
The following works now:
make distclean mkdir build cd build ../configure --srcdir=.. make -j8 make check
however the following still fails:
./configure make dist make distcheck clang -fno-strict-aliasing -fno-common -dynamic -g -O2 -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -I../../../include -I../../../inst/mwl/include -I../../../inst/cta/include -I../../../inst/lat/include -I../../../inst/com/include -I/usr/local/include -I/usr/local/opt/openssl/include -I/usr/local/opt/sqlite/include -I/usr/local/Cellar/python/2.7.11/Frameworks/Python.framework/Versions/2.7/include/python2.7 -c gammalib/app_wrap.cpp -o build/temp.macosx-10.11-x86_64-2.7/gammalib/app_wrap.o clang: error: no such file or directory: 'gammalib/app_wrap.cpp' clang: error: no input files error: command 'clang' failed with exit status 1
and also the following
../configure make dist make distcheck Making all in pyext /Applications/Xcode.app/Contents/Developer/usr/bin/make all-am make[4]: *** No rule to make target `../test/test_python.py', needed by `all-am'. Stop.
#5 Updated by Knödlseder Jürgen over 8 years ago
The second problem was solved by adding the .py
files to EXTRA_DIST
in the test Makefile.am
, now we have
../configure make dist make distcheck clang -fno-strict-aliasing -fno-common -dynamic -g -O2 -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -I../../../include -I../../../inst/mwl/include -I../../../inst/cta/include -I../../../inst/lat/include -I../../../inst/com/include -I/usr/local/include -I/usr/local/opt/openssl/include -I/usr/local/opt/sqlite/include -I/usr/local/Cellar/python/2.7.11/Frameworks/Python.framework/Versions/2.7/include/python2.7 -c gammalib/app_wrap.cpp -o build/temp.macosx-10.11-x86_64-2.7/gammalib/app_wrap.o clang: error: no such file or directory: 'gammalib/app_wrap.cpp' clang: error: no input files error: command 'clang' failed with exit status 1so the same error is for the build in the source directory.
#6 Updated by Knödlseder Jürgen over 8 years ago
- % Done changed from 50 to 80
This now works for Gammalib. Merged into devel
. Still need to make sure that ctools also supports out of source builds.
#7 Updated by Knödlseder Jürgen over 8 years ago
- Status changed from In Progress to Closed
- % Done changed from 80 to 100
This now also works for ctools.