Used right macro for array descriptor implementation
[libfirm] / configure.in
1 dnl
2 dnl Project:     libFIRM
3 dnl File name:   configure.in
4 dnl Purpose:
5 dnl Author:      Till Riedel (??)
6 dnl Modified by:
7 dnl Created:
8 dnl CVS-ID:      $Id$
9 dnl Copyright:   (c) 2002-2003 Universität Karlsruhe
10 dnl Licence:     This file protected by GPL -  GNU GENERAL PUBLIC LICENSE.
11 dnl
12
13
14 AC_REVISION($Id$)
15
16 AC_INIT(libfirm,1.3.0)
17 AC_PREREQ(2.50)
18
19 dnl if other files should be generated just add them to ac_output_files
20 ac_output_file="Makefile MakeRules ir/Makefile ir/adt/Makefile ir/debug/Makefile \
21                 ir/tv/Makefile ir/common/Makefile ir/ident/Makefile ir/ir/Makefile \
22                 ir/ana/Makefile ir/tr/Makefile ir/ana2/Makefile ir/stat/Makefile \
23                 ir/opt/Makefile ir/external/Makefile ir/config/Makefile \
24                 ir/arch/Makefile ir/lower/Makefile \
25                 testprograms/Makefile firmjni/Makefile firmjni/testprograms/Makefile \
26                 libfirm.doxygen"
27
28 dnl generate the config header file
29 AC_CONFIG_HEADER(config.h)
30
31 dnl keep track of the environment set by the user
32 libfirm_conf_env="${CC+CC='$CC'} ${CFLAGS+CFLAGS='$CFLAGS'} ${CPP+CPP='$CPP'} ${CPPFLAGS+CPPFLAGS='$CPPFLAGS'} ${LDFLAGS+LDFLAGS='$LDFLAGS'} ${LIBS+LIBS='$LIBS'}"
33 AC_SUBST(libfirm_conf_env)
34
35 dnl where is the configure file
36 CONF_DIR_NAME=`dirname $0`
37
38 dnl Package options
39 dnl ===============
40
41 dnl enabled external libFirm plugins
42 dnl -------------
43 AC_MSG_CHECKING([for external libfirm plugins])
44 AC_ARG_WITH(plugins,
45 [  --with-plugins=list     include external libfirm plugins list (space separated)],
46 [
47   plugin_subdirs=$withval
48   plugin_files=
49   for i in $withval ; do
50     plugin_files="$i/Makefile $plugin_files"
51   done
52   ac_output_file="$ac_output_file $plugin_files"
53 ],
54 [
55  plugin_files=
56  plugin_subdirs=
57 ])
58 AC_SUBST(plugin_subdirs)
59 if test "$plugin_subdirs" == ""; then
60   AC_MSG_RESULT([disabled])
61 else
62   AC_MSG_RESULT([$plugin_subdirs])
63 fi
64
65 dnl check for additional include dirs
66 AC_ARG_WITH(includedir, [  --with-includedir=add   colon seperated list of directories to include search path],
67     CPPFLAGS=$CPPFLAGS" -I"`echo $withval|sed 's;\:; -I;g'`)
68
69 dnl check for additional library dirs
70 AC_ARG_WITH(libdir, [  --with-libdir=add       colon seperated list of directories to linker search path],
71     LDFLAGS=$LDFLAGS" -L"`echo $withval|sed 's;\:; -L;g'`)
72
73 dnl check for libxml2 library installation dir
74 dnl AC_ARG_WITH(libxml2, [  --with-libxml2=prefix   installation prefix of libxml2 (IPD: --with-libxml2=/usr/public/libxml2)],
75 dnl     LDFLAGS=$LDFLAGS" -L"$withval"/lib";
76 dnl     CPPFLAGS=$CPPFLAGS" -I"$withval"/include/libxml2")
77
78 dnl check for libxml2 library installation dir
79 AC_CHECK_PROG(XML2CONFIG, xml2-config, "xml2-config", "echo")
80 if test "$XML2CONFIG" != "xml2-config"; then
81   AC_MSG_ERROR(xml2-config for detecting libxml2 not found)
82 fi
83 AC_SUBST(XML2CONFIG)
84 LDFLAGS=$LDFLAGS" -L/usr/lib `$XML2CONFIG --libs`";
85 CPPFLAGS=$CPPFLAGS" `$XML2CONFIG --cflags`";
86
87 dnl set debugging
88 dnl -------------
89 AC_ARG_ENABLE(debug,
90 [  --enable-debug          enable assertions and additional debugging routines],
91 [if test "$enableval" = yes; then
92   AC_DEFINE(DEBUG_libfirm)
93 else
94   AC_DEFINE(NDEBUG)
95 fi])
96 AC_SUBST(enable_debug_libfirm)
97
98 dnl disable inlining
99 dnl ----------------
100 AC_ARG_ENABLE(inlining,
101 [  --disable-inlining      disable inline C-extension],
102 [if test "$enableval" = yes; then
103   AC_DEFINE(USE_INLINING)
104 fi],
105 AC_DEFINE(USE_INLINING)
106 )
107
108 dnl set profiling
109 dnl -------------
110 AC_ARG_ENABLE(profile,
111 [  --enable-profile        enable profiling],
112 [if test "$enableval"=yes; then
113   enable_profile_libfirm=yes
114 fi],
115 [enable_profile_libfirm=no])
116 AC_SUBST(enable_profile_libfirm)
117
118 dnl set auto documentation
119 dnl ----------------------
120 AC_ARG_ENABLE(autodoc,
121 [  --enable-autodoc        enable auto documentation],
122 [if test "$enableval"=yes; then
123   enable_auto_documentation=yes
124 fi],
125 [enable_auto_documentation=no])
126 AC_SUBST(enable_auto_documentation)
127
128
129 dnl set firm jni
130 dnl ------------
131 AC_ARG_ENABLE(firmjni,
132 [  --enable-firmjni        check for tools necesarry to construct a java native interface for Firm],
133 [if test "$enableval"=yes; then
134   enable_firm_jni=yes
135 fi],
136 [enable_firm_jni=no])
137 AC_SUBST(enable_firm_jni)
138
139 dnl set heap analyses support
140 dnl -------------------------
141 AC_MSG_CHECKING([for heapanalysis])
142 AC_ARG_ENABLE(heapanalysis, [  --enable-heapanalysis   Compile with heap analysis.],
143         [enable_heapanalysis=$enableval], [enable_heapanalysis="no"])
144 if test "$enable_heapanalysis" = "no"; then
145   AC_MSG_RESULT([disabled])
146 else
147   AC_DEFINE(DO_HEAPANALYSIS)
148   AC_MSG_RESULT([enabled])
149 fi
150 AC_SUBST(enable_heapanalysis)
151
152 dnl disable linking of libiberty parts (xmalloc, xprintf, obstack, ...)
153 dnl ----------------------
154 AC_ARG_ENABLE(libiberty,
155 [  --disable-libiberty     disable own libiberty parts],
156 [if test "$enableval"=yes; then
157   disable_libiberty=yes
158 fi],
159 [disable_libiberty=no])
160 AC_SUBST(disable_libiberty)
161
162 dnl enable Firm hooks
163 dnl -------------
164 AC_ARG_ENABLE(hooks,
165 [  --disable-hooks         disable Firm hooks],
166 [if test "$enableval" = yes; then
167   AC_DEFINE(FIRM_ENABLE_HOOKS)
168 fi],
169 AC_DEFINE(FIRM_ENABLE_HOOKS)
170 )
171
172 dnl enable Firm inplace edges
173 dnl -------------
174 AC_ARG_ENABLE(inplace_edges,
175 [  --disable-inplace-edges disable Firm inplace edges],
176 [if test "$enableval" = yes; then
177   AC_DEFINE(FIRM_EDGES_INPLACE)
178 fi],
179 AC_DEFINE(FIRM_EDGES_INPLACE)
180 )
181
182 dnl enable Firm statistics
183 dnl -------------
184 AC_ARG_ENABLE(statistics,
185 [  --enable-statistics     enable Firm statistics],
186 [if test "$enableval"=yes; then
187   AC_DEFINE(FIRM_STATISTICS)
188 fi])
189 AC_SUBST(enable_statistics)
190
191 dnl enable libcore debugging support
192 dnl --------------------------------
193 AC_ARG_ENABLE(libcore,
194 [  --enable-libcore        enable libcore debugging],
195 [if test "$enableval"=yes; then
196   AC_DEFINE(WITH_LIBCORE)
197 fi])
198 AC_SUBST(enable_libcore)
199
200 dnl disable external effects in XML
201 dnl -------------------------------
202 AC_MSG_CHECKING([for using external effects in xml2])
203 AC_ARG_ENABLE(external-effects,
204 [  --disable-external-effects  disable descriptions of external effects in XML],
205 [if test "$enableval"="no"; then
206   enable_external_effects=no
207 fi],
208 [enable_external_effects=yes])
209 AC_SUBST(enable_external_effects)
210 if test "$enable_external_effects" == no; then
211   AC_MSG_RESULT([disabled])
212 else
213   AC_MSG_RESULT([enabled])
214 fi
215 dnl check for header and library below
216
217 dnl Checks for programs.
218 dnl ====================
219
220 dnl check for a C compiler
221 dnl ----------------------
222 AC_PROG_CC
223
224 dnl check for awk
225 dnl -------------
226 AC_PROG_AWK
227
228 dnl check for prelinkable linker
229 dnl ----------------------------
230 LIBFIRM_PROG_LD_R
231 if test "$libfirm_cv_prog_ld_r" != "yes"; then
232   AC_MSG_ERROR(need a prelinkcapable linker)
233 fi
234
235 dnl check for ar
236 dnl ------------
237 AC_CHECK_PROG(AR, ar, "ar", "")
238 if test "$AR" != "ar"; then
239   AC_MSG_ERROR(need ar for creating archives)
240 fi
241
242 dnl check for tar
243 dnl -------------
244 AC_CHECK_PROG(TAR, tar, "tar", "")
245 if test "$TAR" != "tar"; then
246   AC_MSG_ERROR(need tar for creating archives in distribution)
247 fi
248
249 dnl check whether ar can handle option -s
250 dnl if not then ranlib is needed
251 dnl for simpliticity we use ranlib every time
252
253 AC_PROG_RANLIB
254
255 AC_PROG_INSTALL
256
257 touch tmp-install.a tmp-install.b
258 if eval "$INSTALL tmp-install.a tmp-install.b" ; then
259     INSTALL="$INSTALL"
260 fi
261 rm tmp-install.a tmp-install.b
262
263
264 AC_PROG_LN_S
265
266 dnl check for doxygen if enabled
267 dnl ----------------------------
268 if test "$enable_auto_documentation" = yes; then
269   AC_CHECK_PROG(DOXYGEN, doxygen, "doxygen", "")
270   if test "$DOXYGEN" != "doxygen"; then
271     AC_MSG_ERROR(need doxygen for auto documentation)
272   fi
273   AC_CHECK_PROG(DOT, dot, "dot", "")
274   if test "$DOT" != "dot"; then
275     AC_MSG_ERROR(need dot for doxygen documentation (for class graphs) (IPD: module add Graphviz))
276   fi
277 fi
278
279 dnl check for availability of a jdk
280 dnl -------------------------------
281 if test "$enable_firm_jni" = yes; then
282   AC_CHECK_PROG(JAVAC, javac, "javac", "")
283   if test "$JAVAC" != "javac"; then
284     AC_MSG_ERROR(need java compiler javac to generate jni (IPD: module add jdk-1.3.1-sun))
285   fi
286   AC_CHECK_PROG(JAVAH, javah, "javah", "")
287   if test "$JAVAH" != "javah"; then
288     AC_MSG_ERROR(need javah to generate jni headers (IPD: module add jdk-1.3.1-sun))
289   fi
290 fi
291
292
293 dnl Checks for header files.
294 dnl ========================
295
296 AC_HEADER_STDC
297
298 dnl check for the math header file
299
300 AC_CHECK_HEADERS(math.h, ac_math_headers="yes", ac_math_headers="no")
301 if test "$ac_math_headers" != yes; then
302   dnl math header not found.
303   AC_MSG_ERROR("math header file not found")
304 fi
305
306
307 #dnl check for the gnu multiprecission (gmp) header file
308
309 #AC_CHECK_HEADERS(gmp.h, ac_gmp_headers="yes", ac_gmp_headers="no")
310 #if test "$ac_gmp_headers" != yes; then
311 #  dnl gmp header not found.
312 #  AC_MSG_ERROR("GNU multiprecission gmp header file not found")
313 #fi
314
315
316 dnl check for the obstack header file
317 dnl does not work with:
318 dnl  - cygwin
319 dnl  - MacOSX
320 #AC_FUNC_OBSTACK
321
322 AC_CHECK_HEADERS(obstack.h, ac_obstack_headers="yes", ac_obstack_headers="no")
323 if test "$ac_obstack_headers" != yes; then
324   dnl obstack header not found.
325   AC_MSG_ERROR("obstack.h not found")
326 fi
327
328
329 AC_CHECK_HEADERS(alloca.h, ac_alloca_headers="yes", ac_alloca_headers="no")
330 if test "$ac_alloca_headers" = "yes"; then
331     AC_DEFINE(HAVE_ALLOCA_H)
332 else
333   if test "$ac_cv_header_stdc" = "no"; then
334     AC_MSG_ERROR("alloca.h and stdlib.h not found")
335   fi
336 fi
337
338
339 dnl check for jni header files
340
341 if test "$enable_firm_jni" = yes; then
342   AC_CHECK_HEADERS(jni.h, ac_jni_headers="yes", ac_jni_headers="no")
343   if test "$ac_jni_headers" != yes; then
344     AC_MSG_ERROR(jni header file not found. (IPD: add --with-includedir=/usr/public2/java/jdk1.3.1-sun/include/:/usr/public2/java/jdk1.3.1-sun/include/linux/ to configure flags))
345   fi
346 fi
347
348
349 if test "$enable_external_effects" == "yes"; then
350   AC_CHECK_HEADERS(libxml/parser.h, ac_xml_headers="yes", ac_xml_headers="no")
351   if test "$ac_xml_headers" != yes; then
352     AC_MSG_ERROR(xml header files not found. (IPD: add --with-includedir=/usr/public/libxml2/include/libxml2/ to configure flags))
353   fi
354 fi
355
356 dnl Checks for libraries.
357 dnl =====================
358
359 #dnl check for the gnu multiprecission (gmp) library
360
361 #AC_CHECK_LIB(gmp, main, ac_gmp_library="yes", ac_gmp_library="no")
362 #if test "$ac_gmp_library" != yes; then
363 #  dnl gmp library not found.
364 #  AC_MSG_ERROR("GNU multiprecission gmp library not found")
365 #fi
366
367
368 AC_CHECK_LIB(m, main, ac_m_library="yes", ac_m_library="no")
369 if test "$ac_m_library" != yes; then
370   dnl std math library not found.
371   AC_MSG_ERROR("standard math library not found")
372 fi
373
374
375 if test "$enable_external_effects" == "yes"; then
376   AC_CHECK_LIB(xml2, xmlParseFile, ac_xml_library="yes", ac_xml_library="no")
377   if test "$ac_m_library" != yes; then
378     AC_MSG_ERROR("xml2 library not found (IPD: add --with-libdir=/usr/public/libxml2/lib/ to configure flags)")
379   else
380     LIBS=$LIBS" -lxml2"
381   fi
382 fi
383
384 dnl Checks for typedefs, structures, and compiler characteristics.
385 dnl ==============================================================
386 AC_C_CONST
387 AC_C_VOLATILE
388 AC_C_INLINE
389 AC_C_BIGENDIAN(,,,)
390 AC_C_LONG_DOUBLE
391
392 dnl Checks for library functions.
393 dnl =============================
394
395 dnl check for strerror
396
397 AC_CHECK_FUNC(strerror,,
398   AC_MSG_ERROR("need strerror function")
399 )
400
401
402 dnl Error messaging
403 dnl ===============
404
405
406 AC_OUTPUT($ac_output_file,[ touch stamp-h ])
407
408 dnl snip the lower part of config.h and put it to ir/config/firm_config.h
409 $AWK -f $CONF_DIR_NAME/filter.awk < config.h | sed -f $CONF_DIR_NAME/filter.sed > ir/config/firm_config.h