Commit 2eba19a0d9e04e708dd8a06052605d05d80cc1f2

Authored by knodlseder
1 parent f49abdad

update with latest GammaLib improvements

configure.ac
1   -dnl =============================================================
2   -dnl Process this file with autoconf to produce a configure script
3   -dnl =============================================================
4   -AC_INIT([ctatools], [0.1.0], [knodlseder@cesr.fr])
  1 +# Configuration for ctatools - a set of tools for science analysis of CTA data
  2 +#
  3 +# Copyright (C) 2011
  4 +#
  5 +# Process this file with autoconf to produce a configure script
  6 +
  7 +AC_INIT([ctatools], [0.1.0], [knodlseder@cesr.fr], [ctatools], [])
5 8 AC_CONFIG_SRCDIR([src/ctselect/ctselect.cpp])
6 9 AC_CONFIG_MACRO_DIR([m4])
7 10 AC_CONFIG_HEADERS([config.h])
8 11 AM_INIT_AUTOMAKE
9 12  
10   -# Set prefix
  13 +
  14 +dnl ==========
  15 +dnl Set prefix
  16 +dnl ==========
11 17 AC_PREFIX_DEFAULT([/usr/local/gamma])
12   -AC_DEFINE([PREFIX], [$prefix], 'Installation prefix')
  18 +if test "x$prefix" = xNONE; then
  19 + AC_DEFINE_UNQUOTED([PACKAGE_PREFIX], ["/usr/local/gamma"],
  20 + [Location where library is installed])
  21 +else
  22 + AC_DEFINE_UNQUOTED([PACKAGE_PREFIX], "${prefix}",
  23 + [Location where library is installed])
  24 +fi
13 25  
14   -# Checks for programs.
15   -AC_PROG_CXX
16   -AC_PROG_INSTALL
17   -AC_PROG_LIBTOOL
18 26  
19   -# Checks for header files.
  27 +dnl ===========================
  28 +dnl things required by automake
  29 +dnl ===========================
  30 +dnl AC_ARG_PROGRAM
  31 +AC_PROG_MAKE_SET
  32 +
  33 +
  34 +dnl =========================
  35 +dnl Check for system services
  36 +dnl =========================
  37 +AC_CANONICAL_HOST
20 38  
21   -# Checks for typedefs, structures, and compiler characteristics.
22 39  
23   -# Checks for library functions.
  40 +dnl =======================
  41 +dnl Checks for header files
  42 +dnl =======================
  43 +AC_STDC_HEADERS
  44 +
  45 +
  46 +dnl =============================================================
  47 +dnl Checks for typedefs, structures, and compiler characteristics
  48 +dnl =============================================================
  49 +AC_TYPE_SIZE_T
  50 +AC_C_CONST
  51 +AC_C_INLINE
  52 +
  53 +
  54 +dnl ===================
  55 +dnl Checks for programs
  56 +dnl ===================
  57 +AC_PROG_CXX
  58 +AC_PROG_INSTALL
  59 +AC_PROG_LIBTOOL
24 60  
25 61  
26 62 dnl =================================
... ... @@ -76,57 +112,100 @@ CPPFLAGS="$CPPFLAGS $GammaLib_CFLAGS"
76 112 LDFLAGS="$LDFLAGS $GammaLib_LIBS"
77 113  
78 114 # Check for GammaLib library and determine path to library
79   -AC_ARG_WITH([gammalib-lib-dir],
80   - AC_HELP_STRING([--with-gammalib-lib-dir],
81   - [GammaLib library directory [[/usr/(local/(gamma/))lib(64)]]]),
82   - [gammalib_lib_dir=$withval])
83   -if test "x$gammalib_lib_dir" != "x"; then
84   - test -f $gammalib_lib_dir/libgamma.a -o -f $gammalib_lib_dir/libgamma.so -o -f $gammalib_lib_dir/libgamma.dylib && LIBDIR_GAMMALIB=$gammalib_lib_dir
85   -else
86   - for i in /usr/local/gamma/lib /usr/local/gamma/lib64 /usr/local/lib /usr/local/lib64 /usr/lib /usr/lib64 ; do
87   - test -f $i/libgamma.a -o -f $i/libgamma.so -o -f $i/libgamma.dylib && LIBDIR_GAMMALIB=$i
88   - done
89   -fi
90   -if test -z "$LIBDIR_GAMMALIB"; then
91   - if test "x$gammalib_lib_dir" != "x"; then
92   - AC_MSG_ERROR(Cannot find GammaLib library under $gammalib_lib_dir)
93   - else
94   - AC_MSG_ERROR(Cannot find GammaLib library. Use --with-gammalib-lib-dir= to specify non-default path.)
95   - fi
96   -fi
97   -AC_SUBST(LIBDIR_GAMMALIB)
  115 +#AC_ARG_WITH([gammalib-lib-dir],
  116 +# AC_HELP_STRING([--with-gammalib-lib-dir],
  117 +# [GammaLib library directory [[/usr/(local/(gamma/))lib(64)]]]),
  118 +# [gammalib_lib_dir=$withval])
  119 +#if test "x$gammalib_lib_dir" != "x"; then
  120 +# test -f $gammalib_lib_dir/libgamma.a -o -f $gammalib_lib_dir/libgamma.so -o -f $gammalib_lib_dir/libgamma.dylib && LIBDIR_GAMMALIB=$gammalib_lib_dir
  121 +#else
  122 +# for i in /usr/local/gamma/lib /usr/local/gamma/lib64 /usr/local/lib /usr/local/lib64 /usr/lib /usr/lib64 ; do
  123 +# test -f $i/libgamma.a -o -f $i/libgamma.so -o -f $i/libgamma.dylib && LIBDIR_GAMMALIB=$i
  124 +# done
  125 +#fi
  126 +#if test -z "$LIBDIR_GAMMALIB"; then
  127 +# if test "x$gammalib_lib_dir" != "x"; then
  128 +# AC_MSG_ERROR(Cannot find GammaLib library under $gammalib_lib_dir)
  129 +# else
  130 +# AC_MSG_ERROR(Cannot find GammaLib library. Use --with-gammalib-lib-dir= to specify non-default path.)
  131 +# fi
  132 +#fi
  133 +#AC_SUBST(LIBDIR_GAMMALIB)
98 134  
99 135  
100   -dnl =========================
101   -dnl Check for Python bindings
102   -dnl =========================
  136 +dnl ========================================================================
  137 +dnl Checks for python binding. Python binding requires Python and either the
  138 +dnl files gammalib_wrap.cpp and gammalib.py or SWIG to create these files.
  139 +dnl The following conditionals are set:
  140 +dnl HAVE_PYTHON - Python >= 2.2 is available
  141 +dnl HAVE_SWIG - swig is available
  142 +dnl ENABLE_PYTHON_BINDING - Python binding is requested
  143 +dnl WITH_PYTHON_BINDING - Either has swig or python wraper files
  144 +dnl ========================================================================
  145 +# Checks for Python (HAVE_PYTHON)
  146 +AM_PATH_PYTHON([2.2],
  147 + [],
  148 + [AC_MSG_WARN([Python not found. Python is required to build python binding. Python can be obtained from http://www.python.org])])
  149 +AM_CONDITIONAL(HAVE_PYTHON, test "$PYTHON")
103 150  
104   -# Checks for SWIG
  151 +# Checks for SWIG (HAVE_SWIG)
105 152 AC_PATH_PROG([SWIG], [swig])
106 153 AM_CONDITIONAL(HAVE_SWIG, test "$SWIG")
107 154  
108   -# Checks for Python
109   -AM_PATH_PYTHON([2.2],
110   - [],
111   - [AC_MSG_WARN([Python not found. Python is required to build python binding. Python can be obtained from http://www.python.org])])
112   -AM_CONDITIONAL(HAVE_PYTHON, test "$PYTHON")
113   -
  155 +# Python binding enabled?
114 156 AC_ARG_ENABLE([python-binding],
115   - AS_HELP_STRING([--enable-python-binding],
116   - [build python binding (default=yes)]),
117   - [ac_enable_python_binding=no],
118   - [ac_enable_python_binding=yes])
119   -if test "x$ac_enable_python_binding" = "xyes"
120   -then
121   - if test ! "$SWIG" -a ! "$PYTHON"
122   - then
123   - AC_MSG_WARN([Python binding for ctatools cannot be built. Ensure that SWIG and Python packages are available.])
  157 + AS_HELP_STRING([--enable-python-binding],
  158 + [build python binding (default=yes)]),
  159 + [ac_enable_python_binding="$enableval"],
  160 + [ac_enable_python_binding="yes"])
  161 +AM_CONDITIONAL(ENABLE_PYTHON_BINDING, test "x$ac_enable_python_binding" = "xyes")
  162 +
  163 +# Checks for ctatools_wrap.cpp and ctatools.py
  164 +AC_CHECK_FILES([pyext/ctatools_wrap.cpp pyext/ctatools.py],,)
  165 +has_python_wrap="no"
  166 +if test "x$ac_cv_file_pyext_ctatools_wrap_cpp" = "xyes"; then
  167 + if test "x$ac_cv_file_pyext_ctatools_py" = "xyes"; then
  168 + has_python_wrap="yes"
  169 + fi
  170 +fi
  171 +AM_CONDITIONAL(WITH_PYTHON_BINDING, test "x$has_python_wrap" = "xyes" -o "$SWIG")
  172 +
  173 +# Inform about missing components and set host dependent variables
  174 +if test "x$ac_enable_python_binding" = "xyes"; then
  175 + if test "$PYTHON"; then
  176 + if test "x$has_python_wrap" != "xyes"; then
  177 + if test ! "$SWIG"; then
  178 + AC_MSG_WARN([Neither pyext/ctatools_wrap.cpp and pyext/ctatools.py nor swig has not been found])
  179 + AC_MSG_WARN([Python binding for ctatools cannot be built])
  180 + AC_MSG_WARN([Either use a ctatools distribution with ctatools_wrap.cpp and ctatools.py shipped or install swig on your system])
  181 + AC_MSG_WARN([swig can be obtained from http://www.swig.org/])
  182 + fi
124 183 fi
  184 +
  185 + # Set host specific build prefix (needed for Solaris pycc bug)
  186 + PYTHON_BUILD_PREFIX=
  187 + case $host in
  188 + sparc*-sun-solaris*) PYTHON_BUILD_PREFIX="CC=CC" ;;
  189 + *) PYTHON_BUILD_PREFIX="" ;;
  190 + esac
  191 + AC_SUBST(PYTHON_BUILD_PREFIX)
  192 +
  193 + # Set host specific extra libraries. Add all host specific libraries here that
  194 + # need to be linked in the python module
  195 + PYTHON_EXTRA_LIBS=
  196 + case $host in
  197 + sparc*-sun-solaris*) PYTHON_EXTRA_LIBS="Cstd" ;;
  198 + *) PYTHON_EXTRA_LIBS="" ;;
  199 + esac
  200 + AC_SUBST(PYTHON_EXTRA_LIBS)
  201 +
  202 + else
  203 + AC_MSG_WARN([Python binding for ctatools cannot be built as Python seems not to be installed on your system])
  204 + fi
125 205 else
126   - AC_MSG_NOTICE([Python binding for ctatools will not be built.])
127   - AC_MSG_NOTICE([Enable Python binding module building with --enable-python-binding])
  206 + AC_MSG_NOTICE([Python binding for ctatools will not be built])
  207 + AC_MSG_NOTICE([Enable Python binding module building with --enable-python-binding])
128 208 fi
129   -AM_CONDITIONAL(ENABLE_PYTHON_BINDING, test "x$ac_enable_python_binding" = "xyes")
130 209  
131 210  
132 211 dnl ==================
... ... @@ -164,3 +243,40 @@ AC_CONFIG_FILES([Makefile
164 243 pyext/Makefile
165 244 pyext/setup.py])
166 245 AC_OUTPUT
  246 +
  247 +
  248 +dnl ===========================
  249 +dnl Print configuration summary
  250 +dnl ===========================
  251 +echo
  252 +echo " ctatools configuration summary"
  253 +echo " =============================="
  254 +if test ! "$SWIG"; then
  255 + echo " - swig (no)"
  256 +else
  257 + echo " * swig (yes)"
  258 +fi
  259 +if test "x$ac_enable_python_binding" = "xyes"; then
  260 + if test "$PYTHON"; then
  261 + if test "x$has_python_wrap" = "xyes"; then
  262 + if test ! "$SWIG"; then
  263 + echo " * Python binding (yes)"
  264 + else
  265 + echo " * Python binding (yes) use swig for updates"
  266 + fi
  267 + else
  268 + if test ! "$SWIG"; then
  269 + echo " - Python binding (no) swig not installed"
  270 + else
  271 + echo " * Python binding (yes) use swig for building"
  272 + fi
  273 + fi
  274 + else
  275 + echo " - Python binding (no) python not installed"
  276 + fi
  277 +else
  278 + echo " - Python binding (no)"
  279 +fi
  280 +echo
  281 +echo "Now type 'make'"
  282 +echo
... ...
pyext/Makefile.am
1 1 ## Process this file with automake to produce Makefile.in
  2 +#
  3 +# The actual implemented logic is to use swig if swig is
  4 +# available on the system
2 5  
3   -if HAVE_SWIG
4   -if HAVE_PYTHON
5 6 if ENABLE_PYTHON_BINDING
  7 +if HAVE_PYTHON
  8 +if WITH_PYTHON_BINDING
6 9  
  10 +# Set SWIG interface filename
7 11 SWIG_INTERFACE = ctatools.i
8   -BUILT_SOURCES = ctatools_wrap.cpp ctatools.py
9   -CLEANFILES = ctatools_wrap.cpp ctatools.py
  12 +
  13 +# Define the targets that should be built before anything else.
  14 +# These are honored by 'make all', 'make check' and 'make install'.
  15 +if HAVE_SWIG
  16 + BUILT_SOURCES = ctatools_wrap.cpp ctatools.py
  17 +endif
  18 +
  19 +# Set files to be removed in clean
  20 +if HAVE_SWIG
  21 + CLEANFILES = ctatools_wrap.cpp ctatools.py
  22 +endif
10 23  
11 24 all-local: ctatools_wrap.cpp ctatools.py
12   - $(PYTHON) setup.py build
  25 + $(PYTHON_BUILD_PREFIX) $(PYTHON) setup.py build
13 26  
14 27 install-exec-local:
15 28 $(PYTHON) setup.py install --prefix=$(prefix)
... ... @@ -17,13 +30,11 @@ install-exec-local:
17 30 clean-local:
18 31 rm -rf build
19 32  
  33 +if HAVE_SWIG
20 34 ctatools_wrap.cpp ctatools.py: $(SWIG_INTERFACE)
21 35 $(SWIG) -c++ -python -Wall -includeall -I$(prefix)/share/gammalib/swig -o ctatools_wrap.cpp -outdir . $(srcdir)/$(SWIG_INTERFACE)
22   - @if test "x`uname`" = "xCygwin"; then \
23   - echo "WARNING: working around bug in SWIG on Windows/Cygwin platforms ONLY"; \
24   - sed -i.bak -f $(srcdir)/fix_wrapper.sed ctatools_wrap.cpp; \
25   - fi
  36 +endif # HAVE_SWIG
26 37  
27   -endif # ENABLE_PYTHON_BINDING
  38 +endif # WITH_PYTHON_BINDING
28 39 endif # HAVE_PYTHON
29   -endif # HAVE_SWIG
  40 +endif # ENABLE_PYTHON_BINDING
... ...
pyext/setup.py.in
1 1 from distutils.core import setup, Extension
  2 +import glob
  3 +import os
  4 +
  5 +# Set default include directories and data files
  6 +include_dirs = ['@prefix@/include/gammalib']
  7 +data_files = glob.glob('@top_srcdir@/pyext/*.i')
  8 +library_dirs = ['../src/.libs','@prefix@/lib']
  9 +libraries = ['ctatools','gamma','cfitsio']
  10 +
  11 +# Add application include files
  12 +dirs = glob.glob('../src/ct*')
  13 +for dir in dirs:
  14 + if len(dir) > 0:
  15 + path = os.path.abspath(dir)
  16 + include_dirs.append(path)
  17 +
  18 +# Add extra libraries
  19 +extra_libs = ('@PYTHON_EXTRA_LIBS@').split(',')
  20 +for extra_lib in extra_libs:
  21 + if len(extra_lib) > 0:
  22 + libraries.append(extra_lib)
  23 +
  24 +# Get extra library paths
  25 +extra_lib_paths = ('@LDFLAGS@').split(' ')
  26 +for extra_lib_path in extra_lib_paths:
  27 + dir = extra_lib_path.lstrip('-L')
  28 + if len(dir) > 0:
  29 + library_dirs.append(extra_lib_path.lstrip('-L'))
  30 +print include_dirs
  31 +print libraries
  32 +print library_dirs
  33 +
  34 +# Setup
2 35 setup(name='@PACKAGE_NAME@',
3 36 version='@PACKAGE_VERSION@',
4 37 description='ctatools Python binding',
... ... @@ -7,8 +40,8 @@ setup(name='@PACKAGE_NAME@',
7 40 url='http://gammalib.sourceforge.net/',
8 41 py_modules=['ctatools'],
9 42 ext_modules=[Extension('_ctatools', ['ctatools_wrap.cpp'],
10   - include_dirs=['@prefix@/include/gammalib', '@top_srcdir@/src/ctselect', '@top_srcdir@/src/ctbin', '@top_srcdir@/src/ctlike', '@top_srcdir@/src/ctobssim'],
11   - library_dirs=['../src/.libs','@prefix@/lib'],
12   - libraries=['ctatools','gamma','cfitsio'],
  43 + include_dirs=include_dirs,
  44 + library_dirs=library_dirs,
  45 + libraries=libraries,
13 46 runtime_library_dirs=['@prefix@/lib'])],
14 47 )
... ...