Back out include/llvm/System changes until a satisfactory solution can
[oota-llvm.git] / autoconf / configure.ac
1 dnl Initialize autoconf
2 AC_INIT([[LLVM]],[[1.3]],[llvmbugs@cs.uiuc.edu])
3
4 dnl Place all of the extra autoconf files into the config subdirectory
5 AC_CONFIG_AUX_DIR([autoconf])
6
7 dnl Quit if the source directory has already been configured.
8 dnl NOTE: This relies upon undocumented autoconf behavior.
9 if test ${srcdir} != "."
10 then
11         if test -f ${srcdir}/include/Config/config.h
12         then
13                 AC_MSG_ERROR([Already configured in ${srcdir}])
14         fi
15 fi
16
17 dnl Configure all of the projects present in our source tree.
18 for i in `ls ${srcdir}/projects`
19 do
20   if test ${i} != "CVS"
21   then
22     if test -f ${srcdir}/projects/${i}/configure
23     then
24       AC_CONFIG_SUBDIRS(projects/${i})
25     fi
26   fi
27 done
28
29 dnl Configure header files
30 AC_CONFIG_HEADERS(include/Config/config.h)
31
32 dnl Configure other output file
33 AC_CONFIG_FILES(Makefile.config
34  include/Support/DataTypes.h
35  include/Support/ThreadSupport.h
36  include/Support/hash_map
37  include/Support/hash_set
38  include/Support/iterator)
39
40 dnl Do special configuration of Makefiles
41 AC_CONFIG_MAKEFILE(Makefile)
42 AC_CONFIG_MAKEFILE(Makefile.common)
43 AC_CONFIG_MAKEFILE(lib/Makefile)
44 AC_CONFIG_MAKEFILE(runtime/Makefile)
45 AC_CONFIG_MAKEFILE(test/Makefile)
46 AC_CONFIG_MAKEFILE(test/Makefile.tests)
47 AC_CONFIG_MAKEFILE(test/QMTest/llvm.py)
48 AC_CONFIG_MAKEFILE(test/QMTest/llvmdb.py)
49 AC_CONFIG_MAKEFILE(test/Programs/Makefile)
50 AC_CONFIG_MAKEFILE(test/Programs/Makefile.programs)
51 AC_CONFIG_MAKEFILE(test/Programs/Makefile.tests)
52 AC_CONFIG_MAKEFILE(test/Programs/TEST.aa.Makefile)
53 AC_CONFIG_MAKEFILE(test/Programs/TEST.dsgraph.report)
54 AC_CONFIG_MAKEFILE(test/Programs/TEST.aa.report)
55 AC_CONFIG_MAKEFILE(test/Programs/TEST.example.Makefile)
56 AC_CONFIG_MAKEFILE(test/Programs/TEST.nightly.Makefile)
57 AC_CONFIG_MAKEFILE(test/Programs/TEST.buildrepo.Makefile)
58 AC_CONFIG_MAKEFILE(test/Programs/TEST.jit.Makefile)
59 AC_CONFIG_MAKEFILE(test/Programs/TEST.nightly.report)
60 AC_CONFIG_MAKEFILE(test/Programs/TEST.dsgraph.Makefile)
61 AC_CONFIG_MAKEFILE(test/Programs/TEST.jit.report)
62 AC_CONFIG_MAKEFILE(test/Programs/TEST.typesafe.Makefile)
63 AC_CONFIG_MAKEFILE(test/Programs/TEST.dsgraph.gnuplot)
64 AC_CONFIG_MAKEFILE(test/Programs/TEST.vtl.Makefile)
65 AC_CONFIG_MAKEFILE(test/Programs/External/Makefile)
66 AC_CONFIG_MAKEFILE(test/Programs/External/SPEC/Makefile)
67 AC_CONFIG_MAKEFILE(test/Programs/External/SPEC/Makefile.spec)
68 AC_CONFIG_MAKEFILE(test/Programs/External/SPEC/Makefile.spec2000)
69 AC_CONFIG_MAKEFILE(test/Programs/External/SPEC/Makefile.spec95)
70 AC_CONFIG_MAKEFILE(test/Programs/MultiSource/Makefile)
71 AC_CONFIG_MAKEFILE(test/Programs/MultiSource/Makefile.multisrc)
72 AC_CONFIG_MAKEFILE(test/Programs/MultiSource/Benchmarks/FreeBench/analyzer/test.in)
73 AC_CONFIG_MAKEFILE(test/Programs/MultiSource/Benchmarks/FreeBench/distray/Makefile)
74 AC_CONFIG_MAKEFILE(test/Programs/MultiSource/Benchmarks/FreeBench/distray/test.in)
75 AC_CONFIG_MAKEFILE(test/Programs/MultiSource/Benchmarks/FreeBench/fourinarow/Makefile)
76 AC_CONFIG_MAKEFILE(test/Programs/MultiSource/Benchmarks/FreeBench/fourinarow/test.in)
77 AC_CONFIG_MAKEFILE(test/Programs/MultiSource/Benchmarks/FreeBench/mason/Makefile)
78 AC_CONFIG_MAKEFILE(test/Programs/MultiSource/Benchmarks/FreeBench/mason/test.in)
79 AC_CONFIG_MAKEFILE(test/Programs/MultiSource/Benchmarks/FreeBench/neural/Makefile)
80 AC_CONFIG_MAKEFILE(test/Programs/MultiSource/Benchmarks/FreeBench/neural/test.in)
81 AC_CONFIG_MAKEFILE(test/Programs/MultiSource/Benchmarks/FreeBench/pcompress2/Makefile)
82 AC_CONFIG_MAKEFILE(test/Programs/MultiSource/Benchmarks/FreeBench/pcompress2/test.in)
83 AC_CONFIG_MAKEFILE(test/Programs/MultiSource/Benchmarks/FreeBench/pifft/Makefile)
84 AC_CONFIG_MAKEFILE(test/Programs/MultiSource/Benchmarks/FreeBench/pifft/test.in)
85 AC_CONFIG_MAKEFILE(test/Programs/SingleSource/Makefile)
86 AC_CONFIG_MAKEFILE(test/Programs/SingleSource/Makefile.singlesrc)
87 AC_CONFIG_MAKEFILE(test/Programs/SingleSource/UnitTests/SetjmpLongjmp/Makefile)
88 AC_CONFIG_MAKEFILE(tools/Makefile)
89 AC_CONFIG_MAKEFILE(utils/Makefile)
90 AC_CONFIG_MAKEFILE(projects/Makefile)
91
92 dnl Find the install program (needs to be done before canonical stuff)
93 AC_PROG_INSTALL
94
95 dnl Check which host for which we're compiling.  This will tell us which LLVM
96 dnl compiler will be used for compiling SSA into object code.
97 AC_CANONICAL_TARGET
98
99 dnl Set the "OS" Makefile variable based on the system we are building on.
100 dnl We will use the build machine information to set some variables.
101 case $build in
102         *-*-linux*)
103              AC_SUBST(OS,[Linux])
104                          if test -d /home/vadve/lattner/local/x86/llvm-gcc
105                          then
106                            AC_SUBST(LLVMGCCDIR,[/home/vadve/lattner/local/x86/llvm-gcc/])
107                          fi
108                  ;;
109         *-*-solaris*)
110              AC_SUBST(OS,[SunOS])
111                          if test -d /home/vadve/lattner/local/sparc/llvm-gcc
112                          then
113                    AC_SUBST(LLVMGCCDIR,[/home/vadve/lattner/local/sparc/llvm-gcc/])
114                          fi
115                  ;;
116         *-*-cygwin*)
117              AC_SUBST(OS,[Cygwin])
118                  ;;
119         *-*-darwin*)
120              AC_SUBST(OS,[Darwin])
121                  ;;
122         *-*-aix*)
123              AC_SUBST(OS,[AIX])
124                  ;;
125         *)       AC_SUBST(OS,[Unknown])
126                  ;;
127 esac
128
129 dnl If we are targetting a Sparc machine running Solaris, pretend that it is
130 dnl V9, since that is all that we support at the moment, and autoconf will only
131 dnl tell us we're a sparc.
132 case $target in
133         sparc*-*-solaris*)  AC_SUBST(target,[[sparcv9-sun-solaris2.8]])
134                             ;;
135 esac
136
137 dnl Determine what our target architecture is and configure accordingly.
138 dnl This will allow Makefiles to make a distinction between the hardware and
139 dnl the OS.
140 case $target in
141         i*86-*)           AC_SUBST(ARCH,[x86])
142                           ;;
143         sparc*-*)         AC_SUBST(ARCH,[Sparc])
144                           ;;
145         powerpc*-*)       AC_SUBST(ARCH,[PowerPC])
146                           ;;
147         *)                AC_SUBST(ARCH,[Unknown])
148                           ;;
149 esac
150
151 dnl Check for compilation tools
152 AC_PROG_CXX
153 AC_PROG_CC(gcc)
154 AC_PROG_CPP
155
156 dnl Ensure that compilation tools are GCC; we use GCC specific extensions
157 if test "$GCC" != "yes"
158 then
159         AC_MSG_ERROR([gcc required but not found])
160 fi
161 if test "$GXX" != "yes"
162 then
163         AC_MSG_ERROR([g++ required but not found])
164 fi
165
166 dnl Verify that GCC is version 3.0 or higher
167 gccmajor=`$CC --version | head -n 1 | awk '{print $NF;}' | cut -d. -f1`
168 if test "$gccmajor" -lt "3"
169 then
170         AC_MSG_ERROR([gcc 3.x required, but you have a lower version])
171 fi
172
173 dnl Check for GNU Make.  We use its extensions too, so don't build without it
174 CHECK_GNU_MAKE
175 if test -z "$_cv_gnu_make_command"
176 then
177         AC_MSG_ERROR([GNU Make required but not found])
178 fi
179
180 dnl Checks for other tools
181 AC_PROG_FLEX
182 AC_PROG_BISON
183 AC_PROG_LIBTOOL
184
185 dnl Checks for tools we can get away with not having:
186 AC_PATH_PROG(DOT,[dot],[true dot])
187 AC_PATH_PROG(ETAGS,[etags],[true etags])
188 dnl Check if we know how to tell etags we are using C++:
189 etags_version=`$ETAGS --version 2>&1`
190 case "$etags_version" in
191         *[Ee]xuberant*) ETAGSFLAGS="--language-force=c++" ;;
192         *GNU\ Emacs*) ETAGSFLAGS="-l c++" ;;
193         *) ETAGSFLAGS="" ;;
194 esac
195 AC_SUBST(ETAGSFLAGS,$ETAGSFLAGS)
196 AC_PATH_PROG(PYTHON,[python],[true python])
197 if test "$PYTHON" = "false"
198 then
199         AC_MSG_WARN([Python is required for the test suite, but it was not found])
200 fi
201 AC_PATH_PROG(QMTEST,[qmtest],[true qmtest])
202 if test "$QMTEST" = "false"
203 then
204         AC_MSG_WARN([QMTest is required for the test suite, but it was not found])
205 fi
206
207 dnl Verify that the version of python available is high enough for qmtest
208 pyversion=`$PYTHON -V 2>&1 | cut -d\  -f2`
209 pymajor=`echo $pyversion | cut -d. -f1`
210 pyminor=`echo $pyversion | cut -d. -f2`
211
212 if test "$pymajor" -ge "2"
213 then
214         if test "$pymajor" -eq "2"
215         then
216                 if test "$pyminor" -lt "2"
217                 then
218                         AC_MSG_WARN([QMTest requires Python 2.2 or later])
219                 fi
220         fi
221 else
222         AC_MSG_WARN([QMTest requires Python 2.2 or later])
223 fi
224
225 dnl Verify that the source directory is valid
226 AC_CONFIG_SRCDIR(["Makefile.config.in"])
227
228 dnl Checks for libraries:
229 dnl libelf is for sparc only; we can ignore it if we don't have it
230 AC_CHECK_LIB(elf, elf_begin)
231
232 dnl dlopen() is required for plugin support.
233 AC_SEARCH_LIBS(dlopen,dl,AC_DEFINE([HAVE_DLOPEN],[1],[Define if dlopen() is available on this platform.]),AC_MSG_WARN([dlopen() not found - disabling plugin support]))
234
235 dnl mallinfo is optional; the code can compile (minus features) without it
236 AC_SEARCH_LIBS(mallinfo,malloc,AC_DEFINE([HAVE_MALLINFO],[1],[Define if mallinfo() is available on this platform.]))
237
238 dnl pthread locking functions are optional - but llvm will not be thread-safe
239 dnl without locks.
240 AC_SEARCH_LIBS(pthread_mutex_lock,pthread,HAVE_PTHREAD_MUTEX_LOCK=1,HAVE_PTHREAD_MUTEX_LOCK=0)
241 AC_SUBST(HAVE_PTHREAD_MUTEX_LOCK)
242
243 dnl Checks for header files.
244 dnl We don't check for ancient stuff or things that are guaranteed to be there
245 dnl by the C++ standard. We always use the <cfoo> versions of <foo.h> C headers.
246 AC_HEADER_STDC
247 AC_HEADER_SYS_WAIT
248
249 dnl Checks for POSIX and other various system-specific header files
250 AC_CHECK_HEADERS(fcntl.h limits.h sys/time.h unistd.h malloc.h sys/mman.h sys/resource.h dlfcn.h link.h execinfo.h windows.h)
251
252 dnl Check for things that need to be included in public headers, and so
253 dnl for which we may not have access to a HAVE_* preprocessor #define.
254 dnl (primarily used in DataTypes.h)
255 AC_CHECK_HEADER([sys/types.h],
256                 [INCLUDE_SYS_TYPES_H='#include <sys/types.h>'],
257                 [INCLUDE_SYS_TYPES_H=''])
258 AC_SUBST(INCLUDE_SYS_TYPES_H)
259 AC_CHECK_HEADER([inttypes.h],
260                 [INCLUDE_INTTYPES_H='#include <inttypes.h>'],
261                 [INCLUDE_INTTYPES_H=''])
262 AC_SUBST(INCLUDE_INTTYPES_H)
263 AC_CHECK_HEADER([stdint.h],
264                 [INCLUDE_STDINT_H='#include <stdint.h>'],
265                 [INCLUDE_STDINT_H=''])
266 AC_SUBST(INCLUDE_STDINT_H)
267
268
269 dnl Check for types
270 AC_TYPE_PID_T
271 AC_TYPE_SIZE_T
272 AC_CHECK_TYPES([int64_t],,AC_MSG_ERROR([Type int64_t required but not found]))
273 AC_CHECK_TYPES([uint64_t],,AC_MSG_ERROR([Type uint64_t required but not found]))
274 AC_HEADER_TIME
275 AC_STRUCT_TM
276
277 dnl Check for various C features
278 AC_C_PRINTF_A
279
280 dnl Check for the endianness of the target
281 AC_C_BIGENDIAN(AC_SUBST([ENDIAN],[big]),AC_SUBST([ENDIAN],[little]))
282
283 dnl Check for C++ extensions
284 AC_CXX_HAVE_HASH_MAP
285 AC_CXX_HAVE_HASH_SET
286 AC_CXX_HAVE_STD_ITERATOR
287 AC_CXX_HAVE_BI_ITERATOR
288 AC_CXX_HAVE_FWD_ITERATOR
289
290 AC_FUNC_ISNAN
291 AC_FUNC_ISINF
292
293 dnl Checks for library functions.
294 AC_FUNC_ALLOCA
295 AC_FUNC_MMAP
296 if test "$ac_cv_func_mmap_fixed_mapped" = "no"
297 then
298         AC_MSG_WARN([mmap() required but not found])
299 fi
300 AC_FUNC_MMAP_FILE
301 if test "$ac_cv_func_mmap_file" = "no"
302 then
303         AC_MSG_WARN([mmap() of files required but not found])
304 fi
305 AC_HEADER_MMAP_ANONYMOUS
306 AC_TYPE_SIGNAL
307 AC_CHECK_FUNCS(getcwd gettimeofday strdup strtoq strtoll backtrace isatty mkstemp getrusage)
308 AC_CHECK_FUNC(mprotect,,AC_MSG_ERROR([Function mprotect() required but not found]))
309
310 dnl Determine if the linker supports the -R option.
311 AC_LINK_USE_R
312
313 dnl --enable/--with command-line options:
314 dnl Check whether they want to do an optimized build:
315 AC_ARG_ENABLE(optimized,AC_HELP_STRING([--enable-optimized],[Compile with optimizations enabled (default is NO)]),,enableval=no)
316 if test ${enableval} = "no"
317 then
318         AC_SUBST(ENABLE_OPTIMIZED,[[]])
319 else
320         AC_SUBST(ENABLE_OPTIMIZED,[[ENABLE_OPTIMIZED=1]])
321 fi
322
323 AC_DEFUN(EXTERNAL_BENCHMARK,
324 [m4_define([allcapsname],translit($1,a-z,A-Z))
325  AC_ARG_ENABLE($1,
326  AC_HELP_STRING([--enable-$1=ARG], 
327                 [Use $1 as a benchmark (srcs in DIR)]),
328  checkresult=$enableval,
329  checkresult=auto)
330 AC_MSG_CHECKING([for $1 benchmark sources])
331 case "$checkresult" in
332 auto|yes)
333     defaultdir=$2
334         if test -d "$defaultdir"
335         then
336                 AC_SUBST(allcapsname()[_ROOT],[$defaultdir])
337                 AC_SUBST([USE_]allcapsname(),[USE_]allcapsname()=1)
338         checkresult="yes, found in $defaultdir"
339     else
340         checkresult=no
341     fi
342     ;;
343 no)
344     AC_SUBST(allcapsname()[_ROOT],[])
345     AC_SUBST([USE_]allcapsname(),[])
346     checkresult=no
347     ;;
348 *)  if test -d "$checkresult"
349     then
350         AC_SUBST(allcapsname()[_ROOT],"$checkresult")
351         AC_SUBST([USE_]allcapsname(),[USE_]allcapsname()=1)
352         checkresult="yes, in $checkresult"
353     else
354         AC_SUBST(allcapsname()[_ROOT],[])
355         AC_SUBST([USE_]allcapsname(),[])
356         checkresult="no, not found in $checkresult"
357     fi
358     ;;
359 esac
360 AC_MSG_RESULT($checkresult)
361 m4_undefine([allcapsname])
362 ])
363
364 EXTERNAL_BENCHMARK(spec95,/home/vadve/shared/benchmarks/spec95/benchspec)
365 EXTERNAL_BENCHMARK(spec2000,/home/vadve/shared/benchmarks/speccpu2000/benchspec)
366 EXTERNAL_BENCHMARK(povray,/home/vadve/shared/benchmarks/povray31)
367
368 dnl Precompiled Bytecode Option
369 AC_ARG_ENABLE(precompiled_bytecode,AC_HELP_STRING([--enable-precompiled_bytecode],[Use pre-compiled bytecode (default is NO)]),,enableval=no)
370 if test ${enableval} = "no"
371 then
372         AC_SUBST(UPB,[[]])
373 else
374         AC_SUBST(UPB,[[USE_PRECOMPILED_BYTECODE=1]])
375 fi
376
377 dnl LLC Diff Option
378 AC_ARG_ENABLE(llc_diffs,AC_HELP_STRING([--enable-llc_diffs],[Enable LLC Diffs when testing (default is YES)]),,enableval=yes)
379 if test ${enableval} = "no"
380 then
381         AC_SUBST(DISABLE_LLC_DIFFS,[DISABLE_LLC_DIFFS:=1])
382 else
383         AC_SUBST(DISABLE_LLC_DIFFS,[[]])
384 fi
385
386 dnl JIT Option
387 AC_ARG_ENABLE(jit,AC_HELP_STRING([--enable-jit],[Enable Just In Time Compiling (default is YES)]),,enableval=default)
388 if test ${enableval} = "no"
389 then
390         AC_SUBST(JIT,[[]])
391 else
392         case $target in
393                 *i*86*)
394                         AC_SUBST(JIT,[[TARGET_HAS_JIT=1]])
395                         ;;
396                 *sparc*)
397                         AC_SUBST(JIT,[[TARGET_HAS_JIT=1]])
398                         ;;
399                 *)
400                         AC_SUBST(JIT,[[]])
401                         ;;
402         esac
403 fi
404
405 dnl Find the LLVM GCC-based C/C++ front end
406 AC_ARG_WITH(llvmgccdir,AC_HELP_STRING([--with-llvmgccdir],[Location of LLVM GCC front-end]),AC_SUBST(LLVMGCCDIR,[$withval]))
407 AC_MSG_CHECKING([for llvm-gcc])
408 LLVM_GCC_CHECK=no
409 if test -d "$LLVMGCCDIR"
410 then
411         if test -x "$LLVMGCCDIR/bin/gcc"
412         then
413                 LLVM_GCC_CHECK="$LLVMGCCDIR/bin/gcc"
414         fi
415 fi
416 llvmgccwarn=no
417 AC_MSG_RESULT($LLVM_GCC_CHECK)
418 if test "$LLVM_GCC_CHECK" = "no"
419 then
420     llvmgccwarn=yes
421 fi
422 AC_MSG_CHECKING([whether llvm-gcc is sane])
423 LLVM_GCC_SANE=no
424 if test -x "$LLVM_GCC_CHECK"
425 then
426         cp /dev/null conftest.c
427     "$LLVM_GCC_CHECK" -S -o - conftest.c | grep implementation > /dev/null 2>&1
428         if test $? -eq 0
429         then
430                 LLVM_GCC_SANE=yes
431         fi
432         rm conftest.c
433         llvmcc1path=`"$LLVM_GCC_CHECK" --print-prog-name=cc1`
434         AC_SUBST(LLVMCC1,$llvmcc1path)
435         llvmcc1pluspath=`"$LLVM_GCC_CHECK" --print-prog-name=cc1plus`
436         AC_SUBST(LLVMCC1PLUS,$llvmcc1pluspath)
437 fi
438 AC_MSG_RESULT($LLVM_GCC_SANE)
439 if test "$LLVM_GCC_SANE" = "no"
440 then
441         llvmgccwarn=yes
442 fi
443
444 dnl Location of the bytecode repository
445 AC_ARG_WITH(bcrepos,AC_HELP_STRING([--with-bcrepos],[Location of Bytecode Repository]),AC_SUBST(BCR,[$withval]),AC_SUBST(BCR,[/home/vadve/lattner/LLVMPrograms]))
446
447 dnl Location of PAPI
448 AC_ARG_WITH(papi,AC_HELP_STRING([--with-papi],[Location of PAPI]),AC_SUBST(PAPIDIR,[$withval]),AC_SUBST(PAPIDIR,[/home/vadve/shared/Sparc/papi-2.3.4.1]))
449
450 dnl Get libtool's idea of what the shared library suffix is.
451 dnl (This is a hack; it relies on undocumented behavior.)
452 AC_MSG_CHECKING([for shared library suffix])
453 eval "SHLIBEXT=$shrext"
454 AC_MSG_RESULT($SHLIBEXT)
455 dnl Propagate it to the Makefiles and config.h (for gccld & bugpoint).
456 AC_SUBST(SHLIBEXT,$SHLIBEXT)
457 AC_DEFINE_UNQUOTED(SHLIBEXT,"$SHLIBEXT",
458                    [Extension that shared libraries have, e.g., ".so".])
459
460 dnl Create the output files
461 AC_OUTPUT()
462
463 dnl Warn loudly if llvm-gcc was not obviously working
464 if test $llvmgccwarn = yes
465 then
466         AC_MSG_WARN([***** llvm C/C++ front end was not found, or does not])
467         AC_MSG_WARN([***** appear to be working.])
468         AC_MSG_WARN([***** ])
469         AC_MSG_WARN([***** Please check configure's --with-llvmgccdir option.])
470         AC_MSG_WARN([***** Runtime libraries (in llvm/runtime) will not be built,])
471         AC_MSG_WARN([***** but you should be able to build the llvm tools.])
472 fi
473