1AC_INIT(mdds, 1.7.0, kohei.yoshida@gmail.com)
2AM_INIT_AUTOMAKE([foreign dist-bzip2 dist-xz subdir-objects])
3AM_MAINTAINER_MODE
4
5VERSION=AC_PACKAGE_VERSION
6API_VERSION=1.5
7
8AC_SUBST(VERSION)
9AC_SUBST(API_VERSION)
10
11PACKAGE_TARNAME=AC_PACKAGE_TARNAME
12AC_SUBST(PACKAGE_TARNAME)
13
14OBJDIR=obj
15SRCDIR=src
16INCDIR=include
17MISCDIR=misc
18QUICKCHECKDIR=quickcheck
19AC_SUBST(OBJDIR)
20AC_SUBST(SRCDIR)
21AC_SUBST(INCDIR)
22AC_SUBST(MISCDIR)
23AC_SUBST(QUICKCHECKDIR)
24
25CPPFLAGS="$CPPFLAGS -Wall -g -pedantic-errors"
26CPPFLAGS="$CPPFLAGS -I/usr/include -I/usr/local/include"
27CXXFLAGS="$CXXFLAGS -Wshadow -std=c++11"
28
29AC_ARG_ENABLE(debug-stdcxx,
30[
31  --enable-debug-stdcxx   Enable libstdc++ debug mode during make check.
32]
33,debug_stdcxx=yes)
34
35AS_IF([test x"$debug_stdcxx" == "xyes"], [
36  CXXFLAGS="$CXXFLAGS -D_GLIBCXX_DEBUG"
37])
38
39AC_ARG_ENABLE(release-tests,
40[
41  --enable-release-tests   Enable release builds for unit tests.
42]
43,release_tests=yes)
44
45AS_IF([test x"$release_tests" == "xyes"], [
46  CXXFLAGS="$CXXFLAGS -DNDEBUG -O2"
47])
48
49AC_ARG_ENABLE(gcov,
50    AS_HELP_STRING([--enable-gcov], [Enable generation of gcov information.]),
51    [enable_gcov="$enableval"],[enable_gcov=no]
52)
53
54AC_ARG_ENABLE(loop-unrolling,
55    AS_HELP_STRING([--disable-loop-unrolling], [Disable use of loop unrolling.]),
56    [enable_loop_unrolling="$enableval"],[enable_loop_unrolling=yes]
57)
58
59AS_IF([test x"$enable_loop_unrolling" == "xno"], [
60  CXXFLAGS="$CXXFLAGS -DMDDS_LOOP_UNROLLING=0"
61])
62
63AS_IF([test x"$enable_gcov" == "xyes"], [
64  CXXFLAGS="$CXXFLAGS --coverage -O0"
65])
66
67AC_ARG_ENABLE(openmp,
68    AS_HELP_STRING([--disable-openmp], [Disable use of OpenMP.]),
69    [enable_openmp="$enableval"],[enable_openmp=yes]
70)
71
72AS_IF([test x"$enable_openmp" == "xyes"], [
73  CXXFLAGS="$CXXFLAGS -fopenmp -DMDDS_USE_OPENMP=1"
74  LDFLAGS="$LDFLAGS -fopenmp"
75])
76
77AC_ARG_ENABLE(sanitizer-coverage,
78    AS_HELP_STRING([--enable-sanitizer-coverage], [Enable generation of sanitizer coverage information.]),
79    [enable_sanitizer_coverage="$enableval"],[enable_sanitizer_coverage=no]
80)
81
82AS_IF([test x"$enable_sanitizer_coverage" == "xyes"], [
83  CXXFLAGS="$CXXFLAGS -fprofile-instr-generate -fcoverage-mapping -O0"
84])
85
86AC_SUBST(CPPFLAGS)
87AC_SUBST(CPPFLAGS_NODEBUG)
88
89AC_PROG_CXX
90AC_PATH_PROG([GDB], [gdb])
91AC_PATH_PROG([EXPECT], [expect])
92AC_PATH_PROG([RUNTEST_BIN], [runtest])
93
94AC_ARG_ENABLE([memory-tests],
95  [AS_HELP_STRING([--enable-memory-tests], [Run memory tests.])],
96  [enable_memory_tests=$enableval],
97  [enable_memory_tests=no]
98)
99AS_IF([test "$enable_memory_tests" = yes],
100  [AC_PATH_PROG([VALGRIND], [valgrind])]
101  AS_IF([test -z "$VALGRIND"], [AC_MSG_ERROR([valgrind not found])])
102)
103AM_CONDITIONAL([RUN_MEMORY_TESTS], [test "$enable_memory_tests" = yes])
104
105AC_ARG_ENABLE([docs],
106  [AS_HELP_STRING([--enable-docs], [Generate docs during build.])],
107  [enable_docs=$enableval],
108  [enable_docs=no]
109)
110AS_IF([test "$enable_docs" = yes],
111  [
112    AC_PATH_PROG([DOXYGEN], [doxygen])
113    AS_IF([test -z "$DOXYGEN"], [AC_MSG_ERROR([doxygen not found])])
114    AC_PATH_PROG([SPHINX], [sphinx-build])
115    AS_IF([test -z "$SPHINX"], [AC_MSG_ERROR([sphinx-build not found])])
116  ]
117)
118AM_CONDITIONAL([BUILD_DOCS], [test "$enable_docs" = yes])
119
120AC_ARG_ENABLE([werror],
121	[AS_HELP_STRING([--enable-werror], [Treat all warnings as errors, useful for development])],
122	[enable_werror="$enableval"],
123	[enable_werror=no]
124)
125AS_IF([test x"$enable_werror" == "xyes"], [
126	CXXFLAGS="$CXXFLAGS -Werror"
127])
128
129CXXFLAGS_UNITTESTS="-DMDDS_DEBUG_NODE_BASE -DMDDS_UNIT_TEST"
130AC_SUBST(CXXFLAGS_UNITTESTS)
131
132AC_CONFIG_FILES([
133Makefile
134include/Makefile
135include/mdds/Makefile
136include/mdds/multi_type_vector/Makefile
137example/Makefile
138test/Makefile
139test/gdb/Makefile
140test/gdb/src/Makefile
141flat_segment_tree_test_mem.mem:src/test.mem.in
142misc/mdds-$API_VERSION.pc:misc/mdds.pc.in
143multi_type_matrix_test_mem.mem:src/test.mem.in
144multi_type_matrix_test_walk_mem.mem:src/test.mem.in
145multi_type_vector_test_event_mem.mem:src/test.mem.in
146multi_type_vector_test_custom_mem.mem:src/test.mem.in
147multi_type_vector_test_default_mem.mem:src/test.mem.in
148multi_type_vector_test_collection_mem.mem:src/test.mem.in
149point_quad_tree_test_mem.mem:src/test.mem.in
150rectangle_set_test_mem.mem:src/test.mem.in
151segment_tree_test_mem.mem:src/test.mem.in
152sorted_string_map_test_mem.mem:src/test.mem.in
153trie_map_test_mem.mem:src/test.mem.in
154rtree_test_mem.mem:src/test.mem.in
155rtree_test_bulkload_mem.mem:src/test.mem.in
156])
157AC_OUTPUT
158
159AC_MSG_NOTICE([
160==============================================================================
161Build configuration:
162        gcov                  $enable_gcov
163        openmp                $enable_openmp
164        sanitizer-coverage    $enable_sanitizer_coverage
165        loop-unrolling        $enable_loop_unrolling
166
167        CXXFLAGS              $CXXFLAGS
168==============================================================================
169])
170