[vsipl++] PATCH: installation / packaging
Jules Bergmann
jules at codesourcery.com
Wed Jan 4 16:22:22 UTC 2006
Stefan Seefeld wrote:
> The appended patch adds or completes the following targets:
Stefan, this looks good. Please check it in. -- Jules
>
> To create a source distribution simply do:
>
> configure
> make doc maintainer_mode=1
> make doc2src
> make sdist
Very nice!
>
> (The root directory name is determined from configure.ac to be
> sourceryvsipl++-1.0, but for snapshot packages one could also call
>
> make sdist PACKAGE_VERSION=`date +%Y-%m-%d`
> )
>
> A typical command sequence to create a multi-config binary package
> would be:
>
> configure --some-optimization-flags
> make
> make doc maintainer_mode=1
> make install DESTDIR=tmp suffix=-opt
> configure --some-debug-flags
> make
> make install DESTDIR=tmp suffix=-debug
> make bdist DESTDIR=tmp
IIUC, the DESTDIR is prepended to the different directories objdir,
libdir, etc. I think this is the right thing to do, because it lets
build a binary package to live in an arbitrary system directory
(/opt/csl/vsipl++) without having to have modify that directory on our
build machine.
However, there might be a problem when trying to build one copy of the
ATLAS/FFTW libraries to be used by all variants. Consider:
# first, build optimized version of VSIPL++, ATLAS, and FFTW
prefix=/opt/vsipl++
configure "opt-flags" --with-fft=builtin --with-lapack=builtin
--prefix=$prefix
make
make doc maintainer_mode=1
make install DESTDIR=tmp suffix=-opt
# second, build debug version of VSIPL++,
# Don't build ATLAS and FFTW again, instead use the versions already in
/opt/vsipl++
LDFLAGS="-L$prefix/lib"
CPPFLAGS="-L$prefix/include"
configure "debug-flags" --with-fft=fftw3 -with-lapack=atlas
make
make install DESTDIR=tmp suffix=-debug
... make other variants ...
... create alias (vsipl++.pc -> vsipl++-opt.pc)
... make binary package ...
When configuring for the debug build, the libraries for ATLAS and FFTW
will not be found, since they are in /tmp/opt/vsipl++, not
/opt/vsipl++. Also, when making the debug library, the headers will not
be in the right spot either.
A work around is to build the ATLAS and FFTW libraries for each variant
(optimized, debug, etc), rely on them to be overwritten so that only one
copy of those libraries are in the final package, and make sure to
build the version of the external libraries that we want to keep last.
However, if we have many variants, this will result in a lot of time
spent building ATLAS.
Another idea is to have ATLAS and FFTW installed on our build system so
that the bogus paths are not noticed by configure/make. However this
makes the build process a little less robust.
A final idea is to tell configure to trust that fftw3 and atlas are
present and not test for them. ("--with-fft=trust-fftw3" ?). We would
also need to handle the include paths during the make (via INT_CPPFLAGS?)
Any thoughts on how to handle this?
>
>
> Mark, doc/csl-docbook/GNUmakefile.inc contains two changes:
>
> * I prefixed all installation paths with $(DESTDIR) to make the above
> work for documentation.
> * I fixed the %.html target for the case where $(docbook_html) is not
> set,
> as that case seems to have slipped through in Carlos' latest
> adjustments.
Is there an email list that we should send csl-docbook CVS changes to?
More information about the vsipl++
mailing list