configure.ac 10.3 KB
Newer Older
1
2
3
#                                               -*- Autoconf -*-
# Process this file with autoconf to produce a configure script.

4
m4_pattern_forbid([^OLN_])
5

Roland Levillain's avatar
Roland Levillain committed
6
AC_PREREQ([2.61])
7
8
9
10
11
12


## ---------------- ##
## Package set up.  ##
## ---------------- ##

13
AC_INIT([Olena], [1.0], [olena@lrde.epita.fr], [olena])
14

Roland Levillain's avatar
Roland Levillain committed
15
16
17
# M4 macros.
AC_CONFIG_MACRO_DIR([m4])

18
19
20
21
22
# Auxiliary files.
AC_CONFIG_AUX_DIR([build-aux])
AC_CONFIG_FILES([build-aux/Makefile])

# Automake.
Roland Levillain's avatar
Roland Levillain committed
23
AM_INIT_AUTOMAKE([1.10 foreign check-news dist-bzip2 nostdinc -Wall])
24

25
26
27
# Package metadata.
AC_CONFIG_FILES([milena/mln/version.hh])
AC_DEFINE_UNQUOTED([OLN_PACKAGE_NAME], ["$PACKAGE_NAME"],
28
		   [Package Full name.])
29
30
31
32
33
34
AC_DEFINE_UNQUOTED([OLN_PACKAGE_BUGREPORT], ["$PACKAGE_BUGREPORT"],
		   [Bug report address.])
AC_DEFINE_UNQUOTED([OLN_PACKAGE_STRING], ["$PACKAGE_STRING"],
		   [Full name and version.])
AC_DEFINE_UNQUOTED([OLN_PACKAGE_VERSION], ["$PACKAGE_VERSION"],
		   [Package Version.])
35

36
37

## --------------------- ##
38
## C++ compiler set up.  ##
39
40
## --------------------- ##

Roland Levillain's avatar
Roland Levillain committed
41
42
43
44
45
46
# If the user doesn't provide any CXXFLAGS, prevent Autoconf from
# settings its own default ones (e.g., `-g -O2' for g++).
if test ! ${CXXFLAGS+set}; then
   CXXFLAGS=""
fi

47
48
49
50
# Look for a C++ compiler.
AC_LANG([C++])
AC_PROG_CXX

51
# Speed up compiling times.
52
53
54
55
if test "$GXX" = yes; then
  CXXFLAGS="$CXXFLAGS -pipe"
fi

56
57
58
59
60
61
# ------------------------------ #
# C++ compiler flags for tests.  #
# ------------------------------ #

# FIXME: We might want to write an Autoconf macro to factor this.

62
# Standard flags for tests.
63
AC_ARG_VAR([TESTS_CXXFLAGS])
64
# We want no optimization for the tests (it slows down compiling
65
# times), and debugging information.
66
if test "$GXX" = yes && test -z "$TESTS_CXXFLAGS"; then
67
68
69
  TESTS_CXXFLAGS="-O0 -ggdb -Wall -W"
fi

70
# Flags for complex tests.
71
72
73
74
75
76
77
AC_ARG_VAR([TESTS_CXXFLAGS_SPEED])
# We want optimization for complex tests, and keep debugging flags
# (still useful).
if test "$GXX" = yes && test -z "$TESTS_CXXFLAGS_SPEED"; then
  TESTS_CXXFLAGS_SPEED="-O3 -DNDEBUG -ggdb -Wall -W"
fi

78
79
80
81
82
83
84
85
86
# Flags for tests with with all debugging features turned on.
AC_ARG_VAR([TESTS_CXXFLAGS_DEBUG])
# We want no optimization for the tests (it slows down compiling
# times), and a lot of debugging features.
# * GNU C++ Library Debug Mode:
#   http://gcc.gnu.org/onlinedocs/libstdc++/manual/debug_mode.html
# * GNU C++ Library Compile Time Checks (a.k.a. concept checking):
#   http://gcc.gnu.org/onlinedocs/libstdc++/manual/bk01pt12ch29.html
if test "$GXX" = yes && test -z "$TESTS_CXXFLAGS_DEBUG"; then
Roland Levillain's avatar
Roland Levillain committed
87
  TESTS_CXXFLAGS_DEBUG="-O0 -ggdb -Wall -W -D_GLIBCXX_DEBUG -D_GLIBCXX_CONCEPT_CHECKS"
88
89
90
fi


91

92

93
94
95
96
97
## ------------------ ##
## Libraries set up.  ##
## ------------------ ##

# Use Libtool.
98
99
# To be replaced by a call to LT_INIT as soon as Libtool 2.2 is used.
AC_PROG_LIBTOOL
100
101
102
103
104

# Check for Darwin.
AC_CANONICAL_HOST
AM_CONDITIONAL([DARWIN], [echo "$host_os" | grep '^darwin'])

Roland Levillain's avatar
Roland Levillain committed
105

106
107
108
## -------------------- ##
## External libraries.  ##
## -------------------- ##
109
110

# FreeImage library.
111
112
OLN_WITH_FREEIMAGEPLUS
AM_CONDITIONAL([FREEIMAGEPLUS], [test x$oln_have_freeimageplus = xyes])
113

114
# CFITSIO library.
115
116
117
OLN_WITH_CFITSIO
AM_CONDITIONAL([CFITSIO], [test x$oln_have_cfitsio = xyes])

118

119
120
121
122
123
124
125
126
127
128
## ---------------------------- ##
## (Bundled) trimesh2 library.  ##
## ---------------------------- ##

AC_ARG_ENABLE([trimesh],
              [AS_HELP_STRING([--with-trimesh],
                              [build the (bundled) trimesh2 library])])
AM_CONDITIONAL([ENABLE_TRIMESH], [test x$enable_trimesh = xyes])
AC_CONFIG_SUBDIRS([external/trimesh])

Roland Levillain's avatar
Roland Levillain committed
129
130
131
132
133
134
135
## --------- ##
## Swilena.  ##
## --------- ##

OLN_WITH_SWILENA([with_swilena=yes], [with_swilena=no])
AM_CONDITIONAL([ENABLE_SWILENA], [test x$with_swilena = xyes])

136
137
# FIXME: Should we still configure these files if ENABLE_SWILENA is
# false?
138
AC_CONFIG_FILES([swilena/Makefile
139
		 swilena/python/Makefile])
140

Roland Levillain's avatar
Roland Levillain committed
141
142
AC_CONFIG_FILES([swilena/run], [chmod +x swilena/run])

143
AC_CONFIG_FILES(m4_do([swilena/python/sps],
144
145
146
		      [:swilena/python/sps-common.in],
		      [:swilena/python/sps.in]),
		[chmod +x swilena/python/sps])
147
AC_CONFIG_FILES(m4_do([swilena/python/sps-local],
148
149
150
		      [:swilena/python/sps-common.in],
		      [:swilena/python/sps-local.in]),
		[chmod +x swilena/python/sps-local])
151

Roland Levillain's avatar
Roland Levillain committed
152

153
154
155
156
## --------------- ##
## Configuration.  ##
## --------------- ##

157
158
# Ask for config.h creation.
AC_CONFIG_HEADERS([config.h])
159
160
161
162

# Ask for the Makefile creations.
AC_CONFIG_FILES([
  Makefile
Roland Levillain's avatar
Roland Levillain committed
163
    external/Makefile
164
165
    milena/Makefile
      milena/doc/Makefile
166
167
      milena/doc/examples/Makefile
      milena/doc/ref_guide/Makefile
168
      milena/doc/tutorial/Makefile
169
      milena/doc/white_paper/Makefile
170
      milena/mesh/Makefile
171
])
172
173
174
175
176

## ------- ##
## Tests.  ##
## ------- ##

Roland Levillain's avatar
Roland Levillain committed
177
178
# Ask for the creation of a milena/tests/data.hh, used to access to
# data (images) from tests.
179
180
AC_CONFIG_FILES([milena/tests/data.hh])

Roland Levillain's avatar
Roland Levillain committed
181
# Ask for the creation of tests' Makefiles.
182
# FIXME: Should it be achieved through oln.m4 macros, as we did in Olena 0.11?
183
AC_CONFIG_FILES([
184
  milena/tests/Makefile
Roland Levillain's avatar
Roland Levillain committed
185
    milena/tests/accu/Makefile
186
    milena/tests/accu/image/Makefile
187
    milena/tests/accu/site_set/Makefile
188
    milena/tests/accu/stat/Makefile
189
    milena/tests/algebra/Makefile
190
    milena/tests/arith/Makefile
191
    milena/tests/binarization/Makefile
Roland Levillain's avatar
Roland Levillain committed
192
    milena/tests/border/Makefile
193
194
195
196
    milena/tests/canvas/Makefile
      milena/tests/canvas/browsing/Makefile
      milena/tests/canvas/morpho/Makefile
    milena/tests/convert/Makefile
197
    milena/tests/convert/impl/Makefile
Roland Levillain's avatar
Roland Levillain committed
198
    milena/tests/core/Makefile
Nicolas Ballas's avatar
Nicolas Ballas committed
199
200
201
202
203
      milena/tests/core/alias/Makefile
      milena/tests/core/image/Makefile
      milena/tests/core/other/Makefile
      milena/tests/core/routine/Makefile
      milena/tests/core/site_set/Makefile
204
    milena/tests/data/Makefile
Roland Levillain's avatar
Roland Levillain committed
205
206
207
    milena/tests/debug/Makefile
    milena/tests/display/Makefile
    milena/tests/draw/Makefile
208
    milena/tests/estim/Makefile
209
    milena/tests/extension/Makefile
210
    milena/tests/extract/Makefile
211
212
213
    milena/tests/fun/Makefile
      milena/tests/fun/i2v/Makefile
      milena/tests/fun/p2b/Makefile
214
      milena/tests/fun/p2p/Makefile
215
      milena/tests/fun/p2v/Makefile
216
      milena/tests/fun/stat/Makefile
217
      milena/tests/fun/v2v/Makefile
218
      milena/tests/fun/vv2v/Makefile
Roland Levillain's avatar
Roland Levillain committed
219
220
      milena/tests/fun/x2x/Makefile
    milena/tests/geom/Makefile
221
222
    milena/tests/graph/Makefile
      milena/tests/graph/attribute/Makefile
Roland Levillain's avatar
Roland Levillain committed
223
    milena/tests/histo/Makefile
224
    milena/tests/io/Makefile
225
      milena/tests/io/dicom/Makefile
226
      milena/tests/io/dump/Makefile
Roland Levillain's avatar
Roland Levillain committed
227
      milena/tests/io/fits/Makefile
228
      milena/tests/io/magick/Makefile
229
      milena/tests/io/off/Makefile
Roland Levillain's avatar
Roland Levillain committed
230
      milena/tests/io/pbm/Makefile
231
232
233
234
      milena/tests/io/pfm/Makefile
      milena/tests/io/pgm/Makefile
      milena/tests/io/pnm/Makefile
      milena/tests/io/ppm/Makefile
235
      milena/tests/io/tiff/Makefile
236
    milena/tests/labeling/Makefile
Roland Levillain's avatar
Roland Levillain committed
237
238
239
240
    milena/tests/level/Makefile
      milena/tests/level/approx/Makefile
      milena/tests/level/naive/Makefile
    milena/tests/linear/Makefile
241
      milena/tests/linear/gaussian/Makefile
Roland Levillain's avatar
Roland Levillain committed
242
243
244
      milena/tests/linear/local/Makefile
    milena/tests/literal/Makefile
    milena/tests/logical/Makefile
245
    milena/tests/make/Makefile
Roland Levillain's avatar
Roland Levillain committed
246
247
248
249
250
    milena/tests/math/Makefile
    milena/tests/metal/Makefile
      milena/tests/metal/make/Makefile
      milena/tests/metal/math/Makefile
    milena/tests/morpho/Makefile
251
      milena/tests/morpho/attribute/Makefile
252
      milena/tests/morpho/approx/Makefile
253
254
      milena/tests/morpho/elementary/Makefile
      milena/tests/morpho/tree/Makefile
255
      milena/tests/morpho/watershed/Makefile
256
      milena/tests/morpho/closing/Makefile
257
      milena/tests/morpho/closing/approx/Makefile
258
      milena/tests/morpho/opening/Makefile
259
      milena/tests/morpho/opening/approx/Makefile
260
    milena/tests/norm/Makefile
261
    milena/tests/opt/Makefile
Roland Levillain's avatar
Roland Levillain committed
262
    milena/tests/pw/Makefile
263
    milena/tests/registration/Makefile
Roland Levillain's avatar
Roland Levillain committed
264
    milena/tests/set/Makefile
265
    milena/tests/subsampling/Makefile
Roland Levillain's avatar
Roland Levillain committed
266
    milena/tests/tag/Makefile
267
    milena/tests/test/Makefile
268
    milena/tests/topo/Makefile
Roland Levillain's avatar
Roland Levillain committed
269
270
271
272
273
    milena/tests/trace/Makefile
    milena/tests/trait/Makefile
      milena/tests/trait/image/Makefile
      milena/tests/trait/op/Makefile
      milena/tests/trait/value/Makefile
274
    milena/tests/transform/Makefile
Roland Levillain's avatar
Roland Levillain committed
275
    milena/tests/util/Makefile
276
    milena/tests/unit_test/Makefile
Roland Levillain's avatar
Roland Levillain committed
277
278
279
280
    milena/tests/value/Makefile
      milena/tests/value/builtin/Makefile
      milena/tests/value/concept/Makefile
    milena/tests/win/Makefile
281
282
283
    milena/tests/world/Makefile
      milena/tests/world/inter_pixel/Makefile
	milena/tests/world/inter_pixel/dim2/Makefile
284
])
285

286
287
288
289
290

## -------------- ##
## Applications.  ##
## -------------- ##

291
292
293
294
295
AC_ARG_ENABLE([apps],
              [AS_HELP_STRING([--enable-apps],
                              [enable application])])
AM_CONDITIONAL([ENABLE_APPS], [test "x$enable_apps" = "xyes"])

296
# Ask for the creation of applications' Makefiles.
297
298
299
300
AC_CONFIG_FILES([
  milena/apps/Makefile
    milena/apps/statues/Makefile
])
301
302

# Configure tests.
303
304
# FIXME: Consider using `sed' instead of `configure' to create these
# tests for the sake of speed.
305
306
AC_CONFIG_FILES([milena/apps/statues/test-mesh-max-curv],
		[chmod +x milena/apps/statues/test-mesh-max-curv])
307
308
AC_CONFIG_FILES([milena/apps/statues/test-mesh-complex-max-curv],
		[chmod +x milena/apps/statues/test-mesh-complex-max-curv])
309
310
311
312
AC_CONFIG_FILES([milena/apps/statues/test-mesh-segm],
		[chmod +x milena/apps/statues/test-mesh-segm])
AC_CONFIG_FILES([milena/apps/statues/test-mesh-complex-segm],
		[chmod +x milena/apps/statues/test-mesh-complex-segm])
313
314
AC_CONFIG_FILES([milena/apps/statues/test-mesh-complex-max-curv-segm],
		[chmod +x milena/apps/statues/test-mesh-complex-max-curv-segm])
315

316
317
AC_CONFIG_FILES([milena/apps/statues/test-mesh-complex-skel],
		[chmod +x milena/apps/statues/test-mesh-complex-skel])
318

319
320
321
322
323
324
325
# Flags for apps.
AC_ARG_VAR([APPS_CXXFLAGS])
# We want fast binaries for apps.
if test "$GXX" = yes && test -z "$APPS_CXXFLAGS"; then
  APPS_CXXFLAGS="-O3 -DNDEBUG -ggdb -Wall -W"
fi

326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
## ------- ##
## Tools.  ##
## ------- ##

AC_ARG_ENABLE([tools],
              [AS_HELP_STRING([--enable-tools],
                              [enable tools])])
AM_CONDITIONAL([ENABLE_TOOLS], [test "x$enable_tools" = "xyes"])

# Ask for the creation of tools' Makefiles.
AC_CONFIG_FILES([milena/tools/Makefile])

# Flags for tools.
AC_ARG_VAR([TOOLS_CXXFLAGS])
# We want fast binaries for tools.
if test "$GXX" = yes && test -z "$TOOLS_CXXFLAGS"; then
  TOOLS_CXXFLAGS="-O3 -DNDEBUG -ggdb -Wall -W"
fi


346
AC_OUTPUT