1 dnl Autoconf requirements
2 dnl AC_INIT(package, version, bug-report-address)
3 dnl information on the package
4 dnl checks for programs
5 dnl checks for libraries
6 dnl checks for header files
8 dnl checks for structures
9 dnl checks for compiler characteristics
10 dnl checks for library functions
11 dnl checks for system services
12 dnl AC_CONFIG_FILES([file...])
15 dnl **************************************************************************
17 dnl **************************************************************************
18 AC_INIT([[[LLVM]]],[[[1.0]]],[llvmbugs@cs.uiuc.edu])
20 dnl Place all of the extra autoconf files into the config subdirectory
21 AC_CONFIG_AUX_DIR([autoconf])
23 dnl Quit if the source directory has already been configured.
24 dnl NOTE: This relies upon undocumented autoconf behavior.
25 if test ${srcdir} != "."
27 if test -f ${srcdir}/include/Config/config.h
29 AC_MSG_ERROR([Already configured in ${srcdir}])
34 dnl Configure all of the projects present in our source tree.
36 for i in `ls ${srcdir}/projects`
40 if test -d ${srcdir}/projects/${i}
42 AC_CONFIG_SUBDIRS(projects/${i})
47 dnl Configure a header file
48 AC_CONFIG_HEADERS(include/Config/config.h)
49 AC_CONFIG_MAKEFILE(Makefile)
50 AC_CONFIG_MAKEFILE(Makefile.common)
51 AC_CONFIG_MAKEFILE(lib/Makefile)
52 AC_CONFIG_MAKEFILE(runtime/Makefile)
53 AC_CONFIG_MAKEFILE(test/Makefile)
54 AC_CONFIG_MAKEFILE(test/Makefile.tests)
55 AC_CONFIG_MAKEFILE(test/QMTest/llvm.py)
56 AC_CONFIG_MAKEFILE(test/QMTest/llvmdb.py)
57 AC_CONFIG_MAKEFILE(test/Programs/Makefile)
58 AC_CONFIG_MAKEFILE(test/Programs/Makefile.programs)
59 AC_CONFIG_MAKEFILE(test/Programs/TEST.aa.Makefile)
60 AC_CONFIG_MAKEFILE(test/Programs/TEST.dsgraph.report)
61 AC_CONFIG_MAKEFILE(test/Programs/TEST.micro.report)
62 AC_CONFIG_MAKEFILE(test/Programs/TEST.aa.report)
63 AC_CONFIG_MAKEFILE(test/Programs/TEST.example.Makefile)
64 AC_CONFIG_MAKEFILE(test/Programs/TEST.nightly.Makefile)
65 AC_CONFIG_MAKEFILE(test/Programs/TEST.buildrepo.Makefile)
66 AC_CONFIG_MAKEFILE(test/Programs/TEST.jit.Makefile)
67 AC_CONFIG_MAKEFILE(test/Programs/TEST.nightly.report)
68 AC_CONFIG_MAKEFILE(test/Programs/TEST.dsgraph.Makefile)
69 AC_CONFIG_MAKEFILE(test/Programs/TEST.jit.report)
70 AC_CONFIG_MAKEFILE(test/Programs/TEST.typesafe.Makefile)
71 AC_CONFIG_MAKEFILE(test/Programs/TEST.dsgraph.gnuplot)
72 AC_CONFIG_MAKEFILE(test/Programs/TEST.micro.Makefile)
73 AC_CONFIG_MAKEFILE(test/Programs/External/Makefile)
74 AC_CONFIG_MAKEFILE(test/Programs/External/SPEC/Makefile)
75 AC_CONFIG_MAKEFILE(test/Programs/External/SPEC/Makefile.spec)
76 AC_CONFIG_MAKEFILE(test/Programs/MultiSource/Makefile)
77 AC_CONFIG_MAKEFILE(test/Programs/MultiSource/Makefile.multisrc)
78 AC_CONFIG_MAKEFILE(test/Programs/MultiSource/Benchmarks/FreeBench/analyzer/test.in)
79 AC_CONFIG_MAKEFILE(test/Programs/MultiSource/Benchmarks/FreeBench/distray/Makefile)
80 AC_CONFIG_MAKEFILE(test/Programs/MultiSource/Benchmarks/FreeBench/distray/test.in)
81 AC_CONFIG_MAKEFILE(test/Programs/MultiSource/Benchmarks/FreeBench/fourinarow/Makefile)
82 AC_CONFIG_MAKEFILE(test/Programs/MultiSource/Benchmarks/FreeBench/fourinarow/test.in)
83 AC_CONFIG_MAKEFILE(test/Programs/MultiSource/Benchmarks/FreeBench/mason/Makefile)
84 AC_CONFIG_MAKEFILE(test/Programs/MultiSource/Benchmarks/FreeBench/mason/test.in)
85 AC_CONFIG_MAKEFILE(test/Programs/MultiSource/Benchmarks/FreeBench/neural/Makefile)
86 AC_CONFIG_MAKEFILE(test/Programs/MultiSource/Benchmarks/FreeBench/neural/test.in)
87 AC_CONFIG_MAKEFILE(test/Programs/MultiSource/Benchmarks/FreeBench/pcompress2/Makefile)
88 AC_CONFIG_MAKEFILE(test/Programs/MultiSource/Benchmarks/FreeBench/pcompress2/test.in)
89 AC_CONFIG_MAKEFILE(test/Programs/MultiSource/Benchmarks/FreeBench/pifft/Makefile)
90 AC_CONFIG_MAKEFILE(test/Programs/MultiSource/Benchmarks/FreeBench/pifft/test.in)
91 AC_CONFIG_MAKEFILE(test/Programs/SingleSource/Makefile)
92 AC_CONFIG_MAKEFILE(test/Programs/SingleSource/Makefile.singlesrc)
93 AC_CONFIG_MAKEFILE(tools/Makefile)
94 AC_CONFIG_MAKEFILE(utils/Makefile)
95 AC_CONFIG_MAKEFILE(projects/Makefile)
97 dnl **************************************************************************
98 dnl * Determine which system we are building on
99 dnl **************************************************************************
101 dnl Check the install program (needs to be done before canonical stuff)
104 dnl Check which host for which we're compiling. This will tell us which LLVM
105 dnl compiler will be used for compiling SSA into object code.
108 dnl Set the "OS" Makefile variable based on the system we are building on.
109 dnl We will use the build machine information to set some variables.
113 if test -d /home/vadve/lattner/local/x86/llvm-gcc
115 AC_SUBST(LLVMGCCDIR,[/home/vadve/lattner/local/x86/llvm-gcc/])
121 if test -d /home/vadve/lattner/local/sparc/llvm-gcc
123 AC_SUBST(LLVMGCCDIR,[/home/vadve/lattner/local/sparc/llvm-gcc/])
128 AC_SUBST(OS,[Darwin])
131 *) AC_SUBST(OS,[Unknown])
135 dnl If we are targetting a Sparc machine running Solaris, pretend that it is
136 dnl V9, since that is all that we support at the moment, and autoconf will only
137 dnl tell us we're a sparc.
139 sparc*-*-solaris*) AC_SUBST(target,[[sparcv9-sun-solaris2.8]])
143 dnl Determine what our target architecture is and configure accordingly.
144 dnl This will allow Makefiles to make a distinction between the hardware and
147 i*86-*) AC_SUBST(ARCH,[x86])
149 sparc*-*) AC_SUBST(ARCH,[Sparc])
151 powerpc*-*) AC_SUBST(ARCH,[PowerPC])
153 *) AC_SUBST(ARCH,[Unknown])
157 dnl **************************************************************************
158 dnl * Check for programs.
159 dnl **************************************************************************
161 dnl Check for compilation tools
166 dnl Ensure that compilation tools are GCC; we use GCC specific extensions
167 if test "$GCC" != "yes"
169 AC_MSG_ERROR([gcc required but not found])
172 if test "$GXX" != "yes"
174 AC_MSG_ERROR([g++ required but not found])
177 dnl Verify that GCC is version 3.0 or higher
178 gccmajor=`$CC --version | head -n 1 | awk '{print $NF;}' | cut -d. -f1`
179 if test "$gccmajor" -lt "3"
181 AC_MSG_ERROR([gcc 3.x required])
184 dnl Check for GNU Make. We use its extensions to, so don't build without it
186 if test -z "$_cv_gnu_make_command"
188 AC_MSG_ERROR([GNU Make required but not found])
191 dnl Check for compiler-compiler tools (reminds me of Little Caesar's Pizza)
195 dnl Check for libtool
198 dnl Check for our special programs
199 AC_PATH_PROG(RPWD,[pwd],[false])
200 if test ${RPWD} = "false"
202 AC_MSG_ERROR([pwd required but not found])
205 AC_PATH_PROG(AR,[ar],[false])
206 if test ${AR} = "false"
208 AC_MSG_ERROR([ar required but not found])
211 AC_PATH_PROG(SED,[sed],[false])
212 if test ${SED} = "false"
214 AC_MSG_ERROR([sed required but not found])
217 AC_PATH_PROG(RM,[rm],[false])
218 if test ${RM} = "false"
220 AC_MSG_ERROR([rm required but not found])
223 AC_PATH_PROG(ECHO,[echo],[false])
224 if test ${ECHO} = "false"
226 AC_MSG_ERROR([echo required but not found])
229 AC_PATH_PROG(MKDIR,[mkdir],[false])
230 if test ${MKDIR} = "false"
232 AC_MSG_ERROR([mkdir required but not found])
235 AC_PATH_PROG(DATE,[date],[false])
236 if test ${DATE} = "false"
238 AC_MSG_ERROR([date required but not found])
241 AC_PATH_PROG(MV,[mv],[false])
242 if test ${MV} = "false"
244 AC_MSG_ERROR([mv required but not found])
247 AC_PATH_PROG(DOT,[dot],[false])
249 AC_PATH_PROG(ETAGS,[etags],[false])
251 AC_PATH_PROG(PYTHON,[python],[false])
252 if test ${PYTHON} = "false"
254 AC_MSG_WARN([python required but not found])
257 AC_PATH_PROG(QMTEST,[qmtest],[false])
258 if test ${QMTEST} = "false"
260 AC_MSG_WARN([qmtest required but not found])
263 dnl Verify that the version of python available is high enough for qmtest
264 pyversion=`$PYTHON -V 2>&1 | cut -d\ -f2`
265 pymajor=`echo $pyversion | cut -d. -f1`
266 pyminor=`echo $pyversion | cut -d. -f2`
268 if test "$pymajor" -ge "2"
270 if test "$pymajor" -eq "2"
272 if test "$pyminor" -lt "2"
274 AC_MSG_WARN([Python 2.2 or greater required for qmtest])
278 AC_MSG_WARN([Python 2.2 or greater required for qmtest])
281 dnl Verify that the source directory is valid
282 AC_CONFIG_SRCDIR(["Makefile.config.in"])
284 dnl **************************************************************************
285 dnl * Check for libraries.
286 dnl **************************************************************************
288 dnl libelf is for sparc only; we can ignore it if we don't have it
289 AC_CHECK_LIB(elf, elf_begin)
291 dnl dlopen() is required for plugin support.
292 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]))
294 dnl mallinfo is optional; the code can compile (minus features) without it
295 AC_SEARCH_LIBS(mallinfo,malloc,AC_DEFINE([HAVE_MALLINFO],[1],[Define if mallinfo() is available on this platform.]))
298 dnl The math libraries are used by the test code, but not by the actual LLVM
301 dnl AC_CHECK_LIB(m, cos)
303 dnl **************************************************************************
304 dnl * Checks for header files.
305 dnl * Chances are, if the standard C or POSIX type header files are missing,
306 dnl * then LLVM just isn't going to compile. However, it is possible that
307 dnl * the necessary functions/macros will be included from other
308 dnl * (non-standard and non-obvious) header files.
310 dnl * So, we'll be gracious, give it a chance, and try to go on without
312 dnl **************************************************************************
316 dnl Check for ANSI C/POSIX header files
317 AC_CHECK_HEADERS(assert.h fcntl.h limits.h sys/time.h unistd.h errno.h signal.h math.h)
319 dnl Check for system specific header files
320 AC_CHECK_HEADERS(malloc.h sys/mman.h sys/resource.h)
322 dnl Check for header files associated with dlopen and friends
323 AC_CHECK_HEADERS(dlfcn.h link.h)
325 dnl **************************************************************************
326 dnl * Checks for typedefs, structures, and compiler characteristics.
327 dnl **************************************************************************
329 dnl Check for const and inline keywords
333 dnl Check for machine endian-ness
334 AC_C_BIGENDIAN(AC_DEFINE([ENDIAN_BIG],[],[Define if the machine is Big-Endian]),AC_DEFINE([ENDIAN_LITTLE],[],[Define if the machine is Little-Endian]))
339 AC_CHECK_TYPES([int64_t],,AC_MSG_ERROR([Type int64_t required but not found]))
340 AC_CHECK_TYPES([uint64_t],,AC_MSG_ERROR([Type uint64_t required but not found]))
344 dnl Check for various C features
347 dnl Check for C++ extensions
350 AC_CXX_HAVE_EXT_SLIST
351 AC_CXX_HAVE_STD_ITERATOR
352 AC_CXX_HAVE_BI_ITERATOR
353 AC_CXX_HAVE_FWD_ITERATOR
355 dnl **************************************************************************
356 dnl * Checks for library functions.
357 dnl **************************************************************************
359 AC_PROG_GCC_TRADITIONAL
363 if test ${ac_cv_func_mmap_file} = "no"
365 AC_MSG_ERROR([mmap() of files required but not found])
367 AC_HEADER_MMAP_ANONYMOUS
369 AC_CHECK_FUNCS(getcwd gettimeofday strcspn strdup strerror strspn strstr strtod strtol strtoq strtoll)
372 dnl Need to check mmap for MAP_PRIVATE, MAP_ANONYMOUS, MAP_ANON, MAP_FIXED
373 dnl MAP_FIXED is only needed for Sparc
374 dnl MAP_ANON is used for Sparc and BSD
375 dnl Everyone should have MAP_PRIVATE
378 dnl Check for certain functions (even if we've already found them) so that we
379 dnl can quit with an error if they are unavailable.
381 dnl As the code is made more portable (i.e. less reliant on these functions,
382 dnl these checks should go away.
383 AC_CHECK_FUNC(mmap,,AC_MSG_ERROR([Function mmap() required but not found]))
384 AC_CHECK_FUNC(mprotect,,AC_MSG_ERROR([Function mprotect() required but not found]))
386 dnl Determine if the linker supports the -R option.
389 dnl **************************************************************************
390 dnl * Enable various compile-time options
391 dnl **************************************************************************
394 AC_ARG_ENABLE(purify,AC_HELP_STRING([--enable-purify],[Compile with purify (default is NO)]),,enableval="no")
395 if test ${enableval} = "no"
397 AC_SUBST(ENABLE_PURIFY,[[]])
399 AC_SUBST(ENABLE_PURIFY,[[ENABLE_PURIFY=1]])
403 AC_ARG_ENABLE(optimized,AC_HELP_STRING([--enable-optimized],[Compile with optimizations enabled (default is NO)]),,enableval=no)
404 if test ${enableval} = "no"
406 AC_SUBST(ENABLE_OPTIMIZED,[[]])
408 AC_SUBST(ENABLE_OPTIMIZED,[[ENABLE_OPTIMIZED=1]])
412 AC_ARG_ENABLE(spec2000,AC_HELP_STRING([--enable-spec],[Compile SPEC 2000 benchmarks (default is NO)]),,enableval=no)
413 if test ${enableval} = "no"
415 if test -d /home/vadve/shared/benchmarks/speccpu2000/benchspec
417 AC_SUBST(SPEC_ROOT,[/home/vadve/shared/benchmarks/speccpu2000/benchspec])
418 AC_SUBST(USE_SPEC,[[USE_SPEC=1]])
420 AC_SUBST(USE_SPEC,[[]])
421 AC_SUBST(SPEC_ROOT,[])
424 if test ${enableval} = ""
426 AC_SUBST(SPEC_ROOT,[/home/vadve/shared/benchmarks/speccpu2000/benchspec])
428 AC_SUBST(SPEC_ROOT,[${enableval}])
430 AC_SUBST(USE_SPEC,[[USE_SPEC=1]])
433 dnl Precompiled Bytecode Option
434 AC_ARG_ENABLE(precompiled_bytecode,AC_HELP_STRING([--enable-precompiled_bytecode],[Use pre-compiled bytecode (default is NO)]),,enableval=no)
435 if test ${enableval} = "no"
439 AC_SUBST(UPB,[[USE_PRECOMPILED_BYTECODE=1]])
444 AC_ARG_ENABLE(llc_diffs,AC_HELP_STRING([--enable-llc_diffs],[Enable LLC Diffs when testing (default is YES)]),,enableval=yes)
445 if test ${enableval} = "no"
447 AC_SUBST(DISABLE_LLC_DIFFS,[DISABLE_LLC_DIFFS:=1])
449 AC_SUBST(DISABLE_LLC_DIFFS,[[]])
453 AC_ARG_ENABLE(jit,AC_HELP_STRING([--enable-jit],[Enable Just In Time Compiling (default is YES)]),,enableval=default)
455 if test ${enableval} = "no"
461 AC_SUBST(JIT,[[TARGET_HAS_JIT=1]])
464 AC_SUBST(JIT,[[TARGET_HAS_JIT=1]])
472 dnl **************************************************************************
473 dnl * Set the location of various third-party software packages
474 dnl **************************************************************************
476 dnl Location of the LLVM C front end
477 AC_ARG_WITH(llvmgccdir,AC_HELP_STRING([--with-llvmgccdir],[Location of LLVM GCC front-end]),AC_SUBST(LLVMGCCDIR,[$withval]))
479 AC_MSG_CHECKING([for llvm-gcc])
481 if test -d "$LLVMGCCDIR"
483 if test -x "$LLVMGCCDIR/bin/gcc"
485 LLVM_GCC_CHECK="$LLVMGCCDIR/bin/gcc"
489 AC_MSG_RESULT($LLVM_GCC_CHECK)
490 if test "$LLVM_GCC_CHECK" = "no"
495 AC_MSG_CHECKING([whether llvm-gcc is sane])
497 if test -x "$LLVM_GCC_CHECK"
499 cp /dev/null conftest.c
500 "$LLVM_GCC_CHECK" -S -o - conftest.c | grep implementation > /dev/null 2>&1
507 AC_MSG_RESULT($LLVM_GCC_SANE)
508 if test "$LLVM_GCC_SANE" = "no"
513 dnl Location of the bytecode repository
514 AC_ARG_WITH(bcrepos,AC_HELP_STRING([--with-bcrepos],[Location of Bytecode Repository]),AC_SUBST(BCR,[$withval]),AC_SUBST(BCR,[/home/vadve/lattner/LLVMPrograms]))
517 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]))
519 dnl Location of the purify program
520 AC_ARG_WITH(purify,AC_HELP_STRING([--with-purify],[Location of purify program]),AC_SUBST(PURIFY,[$withval]))
522 dnl **************************************************************************
523 dnl * Configure other software packages (via AC_CONFIG_SUBDIRS)
524 dnl **************************************************************************
526 dnl **************************************************************************
527 dnl * Create the output files
528 dnl **************************************************************************
529 AC_OUTPUT(Makefile.config)
531 if test $llvmgccwarn = yes
533 AC_MSG_WARN([***** llvm C/C++ front end was not found, or does not])
534 AC_MSG_WARN([***** appear to be working.])
535 AC_MSG_WARN([***** ])
536 AC_MSG_WARN([***** Please check configure's --with-llvmgccdir option.])
537 AC_MSG_WARN([***** Runtime libraries (in llvm/runtime) will not be built,])
538 AC_MSG_WARN([***** but you should be able to build the llvm tools.])