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