rename HKL_BEGIN/END_DECLS -> G_BEGIN/END_DECLS
[hkl.git] / configure.ac
blobc233e7d54dc620b8e03a7d6349b81e700f46bcdf
1 ##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--##
2 ##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--##
3 m4_define([v_maj], [4])
4 m4_define([v_min], [99])
5 m4_define([v_mic], [99])
6 m4_define([v_rev], m4_esyscmd([(git rev-list --count HEAD 2>/dev/null || echo 0) | tr -d '\n']))dnl
7 ##--   When released, remove the dnl on the below line
8 dnl m4_undefine([v_rev])
9 ##--   When doing snapshots - change soname. remove dnl on below line
10 dnl m4_define([relname], [ver-pre-svn-07])
11 dnl m4_define([v_rel], [-release relname])
12 ##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--##
13 m4_ifdef([v_rev], [m4_define([v_ver], [v_maj.v_min.v_mic.v_rev])], [m4_define([v_ver], [v_maj.v_min.v_mic])])
14 m4_define([lt_cur], m4_eval(v_maj + v_min))
15 m4_define([lt_rev], v_mic)
16 m4_define([lt_age], v_min)
17 ##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--##
18 ##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--##
20 AC_PREREQ([2.69])
21 AC_INIT([hkl],[v_ver],[picca@synchrotron-soleil.fr])
22 AC_CONFIG_SRCDIR([config.h.in])
23 AC_CONFIG_HEADERS([config.h])
24 AC_CONFIG_MACRO_DIR([m4])
25 AC_CONFIG_AUX_DIR(config)
27 AM_INIT_AUTOMAKE([silent-rules tar-ustar -Wno-portability subdir-objects])
29 # Checks for programs.
30 AC_PROG_CXX
31 AC_PROG_AWK
32 AC_PROG_CC_C99
33 AC_PROG_CPP
34 AC_PROG_INSTALL
35 AC_PROG_LN_S
36 AC_PROG_MAKE_SET
37 LT_INIT
38 AM_SILENT_RULES
40 ##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--##
41 ##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--##
42 m4_ifdef([v_rev], , [m4_define([v_rev], [0])])
43 m4_ifdef([v_rel], , [m4_define([v_rel], [])])
44 AC_DEFINE_UNQUOTED(VMAJ, [v_maj], [Major version])
45 AC_DEFINE_UNQUOTED(VMIN, [v_min], [Minor version])
46 AC_DEFINE_UNQUOTED(VMIC, [v_mic], [Micro version])
47 AC_DEFINE_UNQUOTED(VREV, [v_rev], [Revison])
48 version_info="lt_cur:lt_rev:lt_age"
49 release_info="v_rel"
50 AC_SUBST(version_info)
51 AC_SUBST(release_info)
52 ##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--##
53 ##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--##
54 VMAJ=v_maj
55 AC_SUBST(VMAJ)
57 # Checks for libraries.
58 AX_PATH_GSL
59 AM_PATH_GLIB_2_0
61 # Checks for header files.
62 AC_HEADER_STDBOOL
63 AC_HEADER_STDC
64 AC_HEADER_TIME
65 AC_FUNC_ALLOCA
66 AC_CHECK_HEADERS([float.h limits.h malloc.h memory.h stddef.h stdint.h stdlib.h string.h sys/time.h unistd.h])
68 # Checks for typedefs, structures, and compiler characteristics.
69 AC_C_CONST
70 AC_C_INLINE
71 AC_TYPE_INT16_T
72 AC_TYPE_INT32_T
73 AC_TYPE_INT64_T
74 AC_TYPE_INT8_T
75 AC_TYPE_SIZE_T
76 AC_TYPE_UINT16_T
77 AC_TYPE_UINT32_T
78 AC_TYPE_UINT64_T
79 AC_TYPE_UINT8_T
81 # Checks for library functions.
82 AC_FUNC_ERROR_AT_LINE
83 AC_FUNC_MALLOC
84 AC_FUNC_REALLOC
85 AC_FUNC_VPRINTF
86 AC_CHECK_FUNCS([floor getcwd gettimeofday memmove memset pow select sqrt strchr strdup strstr])
88 dnl OPTION_DEFAULT_OFF(NAME, HELP-STRING)
89 dnl Create a new --with option that defaults to being disabled.
90 dnl NAME is the base name of the option.  The shell variable with_NAME
91 dnl   will be set to either the user's value (if the option is
92 dnl   specified; 'yes' for a plain --with-NAME) or to 'no' (if the
93 dnl   option is not specified).  Note that the shell variable name is
94 dnl   constructed as autoconf does, by replacing non-alphanumeric
95 dnl   characters with "_".
96 dnl HELP-STRING is the help text for the option.
97 AC_DEFUN([OPTION_DEFAULT_OFF], [dnl
98   AC_ARG_WITH([$1],[AS_HELP_STRING([--with-$1],[$2])],[],[dnl
99     m4_bpatsubst([with_$1], [[^0-9a-z]], [_])=no])dnl
100 ])dnl
102 dnl ***************
103 dnl *** gtk-doc ***
104 dnl ***************
106 GTK_DOC_CHECK([1.9],[--flavour no-tmpl])
108 dnl ***********
109 dnl *** asy ***
110 dnl ***********
112 AC_PATH_PROG([ASY], [asy], [echo])
114 dnl *********************************************
115 dnl *** took from the bullet configure script ***
116 dnl *********************************************
118 AC_CANONICAL_HOST
119 case "$host" in
120         *-*-mingw*|*-*-cygwin*)
121                 AC_DEFINE(PLATFORM_WIN32, 1, [Platform is Win32])
122                 opengl_LIBS="-lunsupported_platform"
123                 PLATFORM_STRING="Win32"
124                 ;;
125         *-*-linux*)
126                 AC_DEFINE(PLATFORM_LINUX, 1, [Platform is Linux])
127                 opengl_LIBS="-lGL -lGLU"
128                 PLATFORM_STRING="Linux"
129                 ;;
130         *-*-darwin*)
131                 AC_DEFINE(PLATFORM_APPLE, 1, [Platform is Apple])
132                 opengl_LIBS="-framework AGL -framework OpenGL -framework GLUT"
133                 PLATFORM_STRING="Apple"
134                 ;;
135         *)
136                 AC_MSG_WARN([*** Please add $host to configure.ac checks!])
137                 ;;
138 esac
139 AC_SUBST(opengl_LIBS)
141 case "$host" in
142         i?86-* | k?-* | athlon-* | pentium*-)
143                 AC_DEFINE(ARCH_X86, 1, [Architecture is x86])
144                 ARCH_SPECIFIC_CFLAGS=""
145                 ARCH_STRING="X86"
146                 ;;
147         x86_64-*)
148                 AC_DEFINE(ARCH_X86_64, 1, [Architecture is x86-64])
149                 ARCH_SPECIFIC_CFLAGS="-DUSE_ADDR64"
150                 ARCH_STRING="X86-64"
151                 ;;
152         ppc-* | powerpc-*)
153                 AC_DEFINE(ARCH_PPC, 1, [Architecture is PowerPC])
154                 ARCH_SPECIFIC_CFLAGS=""
155                 ARCH_STRING="PowerPC"
156                 ;;
157         *)
158                 AC_MSG_ERROR([Unknown Architecture])
159                 ;;
160 esac
161 AC_C_BIGENDIAN
163 #----------------------------------------------------------------------------
164 # Package configuration switches.
165 #----------------------------------------------------------------------------
166 AC_ARG_ENABLE([multithreaded],
167         [AS_HELP_STRING([--enable-multithreaded],[build BulletMultiThreaded (default NO)])],
168         [disable_multithreaded=no], [disable_multithreaded=yes])
169 AC_MSG_CHECKING([BulletMultiThreaded])
170 AS_IF([test "$disable_multithreaded" = yes], [build_multithreaded=no], [build_multithreaded=yes])
171 AC_MSG_RESULT([$build_multithreaded])
172 AM_CONDITIONAL([CONDITIONAL_BUILD_MULTITHREADED], [test "$build_multithreaded" = yes])
174 AC_ARG_ENABLE([demos],
175     [AS_HELP_STRING([--disable-demos],
176             [disable Bullet demos])],
177     [],
178     [enable_demos=yes])
179 AM_CONDITIONAL([CONDITIONAL_BUILD_DEMOS], [false])
180 if test "x$enable_demos" != xno; then
181     AC_MSG_NOTICE([Building Bullet demos])
182     AM_CONDITIONAL([CONDITIONAL_BUILD_DEMOS],[true])
187 AC_ARG_ENABLE([debug],
188     [AS_HELP_STRING([--enable-debug],[build with debugging information (default NO)])],
189     [], [enable_debug=no])
191 AC_MSG_CHECKING([build mode])
192 AS_IF([test $enable_debug = yes], [build_mode=debug], [build_mode=optimize])
193 AC_MSG_RESULT([$build_mode])
195 CFLAGS="$ARCH_SPECIFIC_CFLAGS $CFLAGS"
196 CXXFLAGS="$ARCH_SPECIFIC_CFLAGS $CXXFLAGS $CFLAGS"
198 ### end bullet configure script
200 dnl *******************************
201 dnl *** add an option for hkl3d ***
202 dnl *******************************
204 AC_ARG_ENABLE([hkl3d],
205         AS_HELP_STRING([--enable-hkl3d],
206                 [compile the hkl3d library]),
207         [],
208         [enable_hkl3d=no])
209 AM_CONDITIONAL([HKL3D], [test x$enable_hkl3d != xno])
210 AM_COND_IF([HKL3D],
211            [PKG_CHECK_MODULES([G3D], [libg3d >= 0.0.8])
212            dnl check for yaml
213            AC_SEARCH_LIBS([yaml_get_version], [yaml],
214                           [AC_CHECK_HEADERS([yaml.h], [],
215                                             [AC_MSG_ERROR([Could not find the yaml headers, please install yaml developement files])]
216                           )],
217                           [AC_MSG_ERROR([Could not find the libyaml runtime, please install yaml])]
218            )
219            YAML_CFLAGS=""
220            AC_SUBST(YAML_CFLAGS)
221            YAML_LIBS="-lyaml"
222            AC_SUBST(YAML_LIBS)
225 dnl ****************************************
226 dnl *** add an option for the ghkl build ***
227 dnl ****************************************
229 AC_ARG_ENABLE([gui],
230         AS_HELP_STRING([--disable-gui],
231                 [do not compile the gui interface]),
232         [],
233         [enable_gui=yes])
234 AM_CONDITIONAL([GUI], [test x$enable_gui = xyes])
235 AM_COND_IF([GUI],
236         [PKG_CHECK_MODULES([GTKMM], [gtkmm-2.4 >= 2.18])
237         AM_COND_IF([HKL3D],
238                    [PKG_CHECK_MODULES([GLU], [glu >= 7.7.1])
239                     PKG_CHECK_MODULES([GTKGLEXTMM], [gtkglextmm-1.2])
240         ])
243 dnl ************************************
244 dnl *** Enable lcov coverage reports ***
245 dnl ************************************
247 AC_ARG_ENABLE(gcov,
248         AS_HELP_STRING([--enable-gcov],
249                 [Enable gcov]),
250         [use_gcov=$enableval],
251         [use_gcov=no])
253 if test "x$use_gcov" = "xyes"; then
254    dnl we need gcc:
255    if test "$GCC" != "yes"; then
256       AC_MSG_ERROR([GCC is required for --enable-gcov])
257    fi
259   dnl Check if ccache is being used
260   AC_CHECK_PROG(SHTOOL, shtool, shtool)
261   case `$SHTOOL path $CC` in
262     *ccache*[)] gcc_ccache=yes;;
263     *[)] gcc_ccache=no;;
264   esac
266   if test "$gcc_ccache" = "yes" && (test -z "$CCACHE_DISABLE" || test "$CCACHE_DISABLE" != "1"); then
267     AC_MSG_ERROR([ccache must be disabled when --enable-gcov option is used. You can disable ccache by setting environment variable CCACHE_DISABLE=1.])
268   fi
270   ltp_version_list="1.6 1.7 1.8 1.9"
271   AC_CHECK_PROG(LTP, lcov, lcov)
272   AC_CHECK_PROG(LTP_GENHTML, genhtml, genhtml)
274   if test "$LTP"; then
275     AC_CACHE_CHECK([for ltp version], glib_cv_ltp_version, [
276       glib_cv_ltp_version=invalid
277       ltp_version=`$LTP -v 2>/dev/null | $SED -e 's/^.* //'`
278       for ltp_check_version in $ltp_version_list; do
279         if test "$ltp_version" = "$ltp_check_version"; then
280           glib_cv_ltp_version="$ltp_check_version (ok)"
281         fi
282       done
283     ])
284   else
285     ltp_msg="To enable code coverage reporting you must have one of the following LTP versions installed: $ltp_version_list"
286     AC_MSG_ERROR([$ltp_msg])
287   fi
289   case $glib_cv_ltp_version in
290     ""|invalid[)]
291       ltp_msg="You must have one of the following versions of LTP: $ltp_version_list (found: $ltp_version)."
292       AC_MSG_ERROR([$ltp_msg])
293       LTP="exit 0;"
294       ;;
295   esac
297   if test -z "$LTP_GENHTML"; then
298     AC_MSG_ERROR([Could not find genhtml from the LTP package])
299   fi
301   AC_DEFINE(HAVE_GCOV, 1, [Whether you have gcov])
303   dnl Remove all optimization flags from CFLAGS
304   changequote({,})
305   CFLAGS=`echo "$CFLAGS" | $SED -e 's/-O[0-9]*//g'`
306   CXXFLAGS=`echo "$CXXFLAGS" | $SED -e 's/-O[0-9]*//g'`
307   changequote([,])
309   dnl Add the special gcc flags
310   CFLAGS="$CFLAGS -O0 -fprofile-arcs -ftest-coverage"
311   CXXFLAGS="$CXXFLAGS -O0 -fprofile-arcs -ftest-coverage"
312   LDFLAGS="$LDFLAGS -lgcov"
315 dnl *********************
316 dnl *** introspection ***
317 dnl *********************
319 GOBJECT_INTROSPECTION_CHECK([0.6.7])
321 AM_COND_IF([HAVE_INTROSPECTION],
322         [PKG_CHECK_MODULES([GOBJECT], [gobject-2.0])])
325 dnl ************
326 dnl *** ccan ***
327 dnl ************
329 AC_DEFINE([HAVE_SECTION_START_STOP], [1], ["do we support section or not"])
330 AC_DEFINE([HAVE_TYPEOF], [1], ["do we have typeof"])
331 AC_DEFINE([HAVE_STATEMENT_EXPR], [1], ["do we have typeof"])
332 AC_DEFINE([HAVE_ATTRIBUTE_COLD], [1], ["do we have typeof"])
333 AC_DEFINE([HAVE_ATTRIBUTE_PRINTF], [1], ["do we have typeof"])
334 AC_DEFINE([HAVE_ATTRIBUTE_CONST], [1], ["do we have typeof"])
335 AC_DEFINE([HAVE_ATTRIBUTE_UNUSED], [1], ["do we have typeof"])
336 AC_DEFINE([HAVE_BUILTIN_CONSTANT_P], [1], ["do we have typeof"])
337 AC_DEFINE([HAVE_WARN_UNUSED_RESULT], [1], ["do we have typeof"])
338 AC_DEFINE([HAVE_ATTRIBUTE_NORETURN], [1], ["do we have typeof"])
339 AC_DEFINE([HAVE_ATTRIBUTE_USED], [1], ["do we have typeof"])
340 AC_DEFINE([HAVE_BUILTIN_TYPES_COMPATIBLE_P], [1], ["do we have typeof"])
342 AC_CONFIG_FILES([Makefile
343                  hkl/Makefile
344                  hkl/ccan/Makefile
345                  hkl.pc
346                  hkl3d/Makefile
347                  hkl3d/bullet/Makefile
348                  hkl3d/bullet/src/Makefile
349                  hkl3d.pc
350                  tests/Makefile
351                  tests/bindings/Makefile
352                  tests/tap/Makefile
353                  Documentation/Makefile
354                  Documentation/api/Makefile
355                  Documentation/figures/Makefile
356                  Documentation/sphinx/Makefile
357                  Documentation/sphinx/source/conf.py
358                  gui/Makefile
359                  gui/hkl3d/Makefile
360                  data/Makefile
363 AC_OUTPUT