X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=autoconf%2Fconfigure.ac;h=c8fd77f43283f1744b958eb3d02c815877d6edba;hb=9a0930dbd99af7958ef24bb4887ae6b1e294532f;hp=445e1ba9110eac73781fa75c7396fd109a6b0188;hpb=ac90d5e50b327476dcb468668f8e0eec3fb923d0;p=oota-llvm.git diff --git a/autoconf/configure.ac b/autoconf/configure.ac index 445e1ba9110..c8fd77f4328 100644 --- a/autoconf/configure.ac +++ b/autoconf/configure.ac @@ -31,12 +31,12 @@ dnl=== dnl===-----------------------------------------------------------------------=== dnl Initialize autoconf and define the package name, version number and dnl email address for reporting bugs. -AC_INIT([[llvm]],[[2.0cvs]],[llvmbugs@cs.uiuc.edu]) +AC_INIT([[llvm]],[[2.1cvs]],[llvmbugs@cs.uiuc.edu]) dnl Provide a copyright substitution and ensure the copyright notice is included dnl in the output of --version option of the generated configure script. -AC_SUBST(LLVM_COPYRIGHT,["Copyright (c) 2003-2005 University of Illinois at Urbana-Champaign."]) -AC_COPYRIGHT([Copyright (c) 2003-2005 University of Illinois at Urbana-Champaign.]) +AC_SUBST(LLVM_COPYRIGHT,["Copyright (c) 2003-2007 University of Illinois at Urbana-Champaign."]) +AC_COPYRIGHT([Copyright (c) 2003-2007 University of Illinois at Urbana-Champaign.]) dnl Indicate that we require autoconf 2.59 or later. Ths is needed because we dnl use some autoconf macros only available in 2.59. @@ -66,17 +66,17 @@ for i in `ls ${srcdir}/projects` do if test -d ${srcdir}/projects/${i} ; then case ${i} in - "CVS") ;; - "sample") AC_CONFIG_SUBDIRS([projects/sample]) ;; - "Stacker") AC_CONFIG_SUBDIRS([projects/Stacker]) ;; - "privbracket") AC_CONFIG_SUBDIRS([projects/privbracket]) ;; - "llvm-test") AC_CONFIG_SUBDIRS([projects/llvm-test]) ;; - "llvm-reopt") AC_CONFIG_SUBDIRS([projects/llvm-reopt]);; - "llvm-gcc") AC_CONFIG_SUBDIRS([projects/llvm-gcc]) ;; - "llvm-java") AC_CONFIG_SUBDIRS([projects/llvm-java]) ;; - "llvm-tv") AC_CONFIG_SUBDIRS([projects/llvm-tv]) ;; - "llvm-poolalloc") AC_CONFIG_SUBDIRS([projects/llvm-poolalloc]) ;; - "llvm-kernel") AC_CONFIG_SUBDIRS([projects/llvm-kernel]) ;; + CVS) ;; + sample) AC_CONFIG_SUBDIRS([projects/sample]) ;; + privbracket) AC_CONFIG_SUBDIRS([projects/privbracket]) ;; + llvm-stacker) AC_CONFIG_SUBDIRS([projects/llvm-stacker]) ;; + llvm-test) AC_CONFIG_SUBDIRS([projects/llvm-test]) ;; + llvm-reopt) AC_CONFIG_SUBDIRS([projects/llvm-reopt]);; + llvm-gcc) AC_CONFIG_SUBDIRS([projects/llvm-gcc]) ;; + llvm-java) AC_CONFIG_SUBDIRS([projects/llvm-java]) ;; + llvm-tv) AC_CONFIG_SUBDIRS([projects/llvm-tv]) ;; + llvm-poolalloc) AC_CONFIG_SUBDIRS([projects/llvm-poolalloc]) ;; + llvm-kernel) AC_CONFIG_SUBDIRS([projects/llvm-kernel]) ;; *) AC_MSG_WARN([Unknown project (${i}) won't be configured automatically]) ;; @@ -131,6 +131,11 @@ AC_CACHE_CHECK([type of operating system we're going to host on], llvm_cv_no_link_all_option="-Wl,--no-whole-archive" llvm_cv_os_type="OpenBSD" llvm_cv_platform_type="Unix" ;; + *-*-netbsd*) + llvm_cv_link_all_option="-Wl,--whole-archive" + llvm_cv_no_link_all_option="-Wl,--no-whole-archive" + llvm_cv_os_type="NetBSD" + llvm_cv_platform_type="Unix" ;; *-*-hpux*) llvm_cv_link_all_option="-Wl,--whole-archive" llvm_cv_no_link_all_option="-Wl,--no-whole-archive" @@ -208,6 +213,7 @@ AC_CACHE_CHECK([target architecture],[llvm_cv_target_arch], powerpc*-*) llvm_cv_target_arch="PowerPC" ;; alpha*-*) llvm_cv_target_arch="Alpha" ;; ia64-*) llvm_cv_target_arch="IA64" ;; + arm-*) llvm_cv_target_arch="ARM" ;; *) llvm_cv_target_arch="Unknown" ;; esac]) @@ -229,13 +235,13 @@ else AC_SUBST(LLVM_CROSS_COMPILING, [0]) fi -dnl Check to see if there's a "CVS" directory indicating that this build is -dnl being done from a CVS checkout. This sets up several defaults for the +dnl Check to see if there's a "CVS" (or .svn) directory indicating that this +dnl build is being done from a checkout. This sets up several defaults for the dnl command line switches. When we build with a CVS directory, we get a dnl debug with assertions turned on. Without, we assume a source release and we dnl get an optimized build without assertions. See --enable-optimized and dnl --enable-assertions below -if test -d "CVS" -o -d "${srcdir}/CVS"; then +if test -d "CVS" -o -d "${srcdir}/CVS" -o -d ".svn" -o -d "${srcdir}/.svn"; then cvsbuild="yes" optimize="no" AC_SUBST(CVSBUILD,[[CVSBUILD=1]]) @@ -268,6 +274,15 @@ else AC_SUBST(DISABLE_ASSERTIONS,[[DISABLE_ASSERTIONS=1]]) fi +dnl --enable-debug-runtime : should runtime libraries have debug symbols? +AC_ARG_ENABLE(debug-runtime, + AS_HELP_STRING([--enable-debug-runtime,Build runtime libs with debug symbols (default is NO)]),,enableval=no) +if test ${enableval} = "no" ; then + AC_SUBST(DEBUG_RUNTIME,[[]]) +else + AC_SUBST(DEBUG_RUNTIME,[[DEBUG_RUNTIME=1]]) +fi + dnl --enable-jit: check whether they want to enable the jit AC_ARG_ENABLE(jit, AS_HELP_STRING(--enable-jit, @@ -279,11 +294,12 @@ then else case "$llvm_cv_target_arch" in x86) AC_SUBST(TARGET_HAS_JIT,1) ;; - Sparc) AC_SUBST(TARGET_HAS_JIT,1) ;; + Sparc) AC_SUBST(TARGET_HAS_JIT,0) ;; PowerPC) AC_SUBST(TARGET_HAS_JIT,1) ;; - x86_64) AC_SUBST(TARGET_HAS_JIT,0) ;; + x86_64) AC_SUBST(TARGET_HAS_JIT,1) ;; Alpha) AC_SUBST(TARGET_HAS_JIT,1) ;; IA64) AC_SUBST(TARGET_HAS_JIT,0) ;; + ARM) AC_SUBST(TARGET_HAS_JIT,0) ;; *) AC_SUBST(TARGET_HAS_JIT,0) ;; esac fi @@ -313,6 +329,20 @@ case "$enableval" in esac AC_DEFINE_UNQUOTED([ENABLE_THREADS],$ENABLE_THREADS,[Define if threads enabled]) +dnl Allow building with position independent code +AC_ARG_ENABLE(pic, + AS_HELP_STRING([--enable-pic], + [Build LLVM with Position Independent Code (default is NO)]),, + enableval=default) +case "$enableval" in + yes) AC_SUBST(ENABLE_PIC,[1]) ;; + no) AC_SUBST(ENABLE_PIC,[0]) ;; + default) AC_SUBST(ENABLE_PIC,[0]) ;; + *) AC_MSG_ERROR([Invalid setting for --enable-pic. Use "yes" or "no"]) ;; +esac +AC_DEFINE_UNQUOTED([ENABLE_PIC],$ENABLE_PIC, + [Define if position independent code is enabled]) + dnl Allow specific targets to be specified for building (or not) TARGETS_TO_BUILD="" AC_ARG_ENABLE([targets],AS_HELP_STRING([--enable-targets], @@ -328,6 +358,7 @@ case "$enableval" in PowerPC) TARGETS_TO_BUILD="PowerPC" ;; Alpha) TARGETS_TO_BUILD="Alpha" ;; IA64) TARGETS_TO_BUILD="IA64" ;; + ARM) TARGETS_TO_BUILD="ARM" ;; *) AC_MSG_ERROR([Can not set target to build]) ;; esac ;; @@ -339,12 +370,13 @@ case "$enableval" in powerpc) TARGETS_TO_BUILD="PowerPC $TARGETS_TO_BUILD" ;; alpha) TARGETS_TO_BUILD="Alpha $TARGETS_TO_BUILD" ;; ia64) TARGETS_TO_BUILD="IA64 $TARGETS_TO_BUILD" ;; + arm) TARGETS_TO_BUILD="ARM $TARGETS_TO_BUILD" ;; *) AC_MSG_ERROR([Unrecognized target $a_target]) ;; esac done ;; esac -TARGETS_TO_BUILD="CBackend $TARGETS_TO_BUILD" +TARGETS_TO_BUILD="CBackend MSIL $TARGETS_TO_BUILD" AC_SUBST(TARGETS_TO_BUILD,$TARGETS_TO_BUILD) dnl Prevent the CBackend from using printf("%a") for floating point so older @@ -421,7 +453,7 @@ AC_PATH_PROG(GRAPHVIZ, [Graphviz], [echo Graphviz]) if test "$GRAPHVIZ" != "echo Graphviz" ; then AC_DEFINE([HAVE_GRAPHVIZ],[1],[Define if the Graphviz program is available]) dnl If we're targeting for mingw we should emit windows paths, not msys - if test "$llvm_cv_os_type" == "MingW" ; then + if test "$llvm_cv_os_type" = "MingW" ; then GRAPHVIZ=`echo $GRAPHVIZ | sed 's/^\/\([[A-Za-z]]\)\//\1:\//' ` fi AC_DEFINE_UNQUOTED([LLVM_PATH_GRAPHVIZ],"$GRAPHVIZ${EXEEXT}", @@ -431,7 +463,7 @@ AC_PATH_PROG(DOT, [dot], [echo dot]) if test "$DOT" != "echo dot" ; then AC_DEFINE([HAVE_DOT],[1],[Define if the dot program is available]) dnl If we're targeting for mingw we should emit windows paths, not msys - if test "$llvm_cv_os_type" == "MingW" ; then + if test "$llvm_cv_os_type" = "MingW" ; then DOT=`echo $DOT | sed 's/^\/\([[A-Za-z]]\)\//\1:\//' ` fi AC_DEFINE_UNQUOTED([LLVM_PATH_DOT],"$DOT${EXEEXT}", @@ -441,7 +473,7 @@ AC_PATH_PROGS(GV, [gv gsview32], [echo gv]) if test "$GV" != "echo gv" ; then AC_DEFINE([HAVE_GV],[1],[Define if the gv program is available]) dnl If we're targeting for mingw we should emit windows paths, not msys - if test "$llvm_cv_os_type" == "MingW" ; then + if test "$llvm_cv_os_type" = "MingW" ; then GV=`echo $GV | sed 's/^\/\([[A-Za-z]]\)\//\1:\//' ` fi AC_DEFINE_UNQUOTED([LLVM_PATH_GV],"$GV${EXEEXT}", @@ -451,7 +483,7 @@ AC_PATH_PROG(DOTTY, [dotty], [echo dotty]) if test "$DOTTY" != "echo dotty" ; then AC_DEFINE([HAVE_DOTTY],[1],[Define if the dotty program is available]) dnl If we're targeting for mingw we should emit windows paths, not msys - if test "$llvm_cv_os_type" == "MingW" ; then + if test "$llvm_cv_os_type" = "MingW" ; then DOTTY=`echo $DOTTY | sed 's/^\/\([[A-Za-z]]\)\//\1:\//' ` fi AC_DEFINE_UNQUOTED([LLVM_PATH_DOTTY],"$DOTTY${EXEEXT}", @@ -463,6 +495,7 @@ LLVM_PROG_PERL([5.006]) AC_SUBST(PERL) if test x"$PERL" = xnone; then AC_SUBST(HAVE_PERL,0) + AC_MSG_ERROR([perl is required but was not found, please install it]) else AC_SUBST(HAVE_PERL,1) fi @@ -577,7 +610,7 @@ dnl===-----------------------------------------------------------------------=== dnl libelf is for sparc only; we can ignore it if we don't have it AC_CHECK_LIB(elf, elf_begin) AC_CHECK_LIB(m,sin) -if test "$llvm_cv_os_type" == "MingW" ; then +if test "$llvm_cv_os_type" = "MingW" ; then AC_CHECK_LIB(imagehlp, main) AC_CHECK_LIB(psapi, main) fi @@ -606,6 +639,25 @@ if test "$ENABLE_THREADS" -eq 1 ; then [Have pthread_mutex_lock])) fi +dnl Allow extra x86-disassembler library +AC_ARG_WITH(udis86, + AS_HELP_STRING([--with-udis86=], + [Use udis86 external x86 disassembler library]), + [ + AC_SUBST(USE_UDIS86, [1]) + case "$withval" in + /usr/lib|yes) ;; + *) LDFLAGS="$LDFLAGS -L${withval}" ;; + esac + AC_CHECK_LIB(udis86, ud_init, [], [ + echo "Error! You need to have libudis86 around." + exit -1 + ]) + ], + AC_SUBST(USE_UDIS86, [0])) +AC_DEFINE_UNQUOTED([USE_UDIS86],$USE_UDIS86, + [Define if use udis86 library]) + dnl===-----------------------------------------------------------------------=== dnl=== dnl=== SECTION 6: Check for header files @@ -628,7 +680,11 @@ AC_CHECK_HEADERS([malloc.h setjmp.h signal.h stdint.h unistd.h utime.h]) AC_CHECK_HEADERS([windows.h sys/mman.h sys/param.h sys/resource.h sys/time.h]) AC_CHECK_HEADERS([sys/types.h malloc/malloc.h mach/mach.h]) if test "$ENABLE_THREADS" -eq 1 ; then - AC_CHECK_HEADERS(pthread.h) + AC_CHECK_HEADER(pthread.h, + AC_SUBST(HAVE_PTHREAD, 1), + AC_SUBST(HAVE_PTHREAD, 0)) +else + AC_SUBST(HAVE_PTHREAD, 0) fi dnl===-----------------------------------------------------------------------=== @@ -654,10 +710,11 @@ dnl=== dnl===-----------------------------------------------------------------------=== AC_CHECK_FUNCS([backtrace ceilf floorf roundf rintf nearbyintf getcwd ]) -AC_CHECK_FUNCS([getpagesize getrusage gettimeofday isatty mkdtemp mkstemp ]) +AC_CHECK_FUNCS([getpagesize getrusage getrlimit setrlimit gettimeofday]) +AC_CHECK_FUNCS([isatty mkdtemp mkstemp ]) AC_CHECK_FUNCS([mktemp realpath sbrk setrlimit strdup strerror strerror_r ]) AC_CHECK_FUNCS([strtoll strtoq sysconf malloc_zone_statistics ]) -AC_CHECK_FUNCS([_setjmp _longjmp setjmp longjmp sigsetjmp siglongjmp]) +AC_CHECK_FUNCS([setjmp longjmp sigsetjmp siglongjmp]) AC_C_PRINTF_A AC_FUNC_ALLOCA AC_FUNC_RAND48 @@ -672,22 +729,22 @@ AC_CXX_HAVE_FWD_ITERATOR AC_FUNC_ISNAN AC_FUNC_ISINF -dnl Check for mmap and mprotect support. We need both to do the JIT and for -dnl bytecode loading, etc. We also need to know if /dev/zero is required to -dnl be opened for allocating RWX memory. -AC_FUNC_MMAP -AC_FUNC_MMAP_FILE -AC_NEED_DEV_ZERO_FOR_MMAP -AC_CHECK_FUNC(mprotect,, - AC_MSG_ERROR([Function mprotect() required but not found])) +dnl Check for mmap support.We also need to know if /dev/zero is required to +dnl be opened for allocating RWX memory. +dnl Make sure we aren't attempting to configure for an unknown system +if test "$llvm_cv_platform_type" = "Unix" ; then + AC_FUNC_MMAP + AC_FUNC_MMAP_FILE + AC_NEED_DEV_ZERO_FOR_MMAP -if test "$ac_cv_func_mmap_fixed_mapped" = "no" -then - AC_MSG_WARN([mmap() of a fixed address required but not supported]) -fi -if test "$ac_cv_func_mmap_file" = "no" -then - AC_MSG_WARN([mmap() of files required but not found]) + if test "$ac_cv_func_mmap_fixed_mapped" = "no" + then + AC_MSG_WARN([mmap() of a fixed address required but not supported]) + fi + if test "$ac_cv_func_mmap_file" = "no" + then + AC_MSG_WARN([mmap() of files required but not found]) + fi fi dnl===-----------------------------------------------------------------------=== @@ -701,7 +758,8 @@ AC_CACHE_CHECK([whether llvm-gcc is sane],[llvm_cv_llvmgcc_sanity], [llvm_cv_llvmgcc_sanity="no" if test -x "$LLVMGCC" ; then cp /dev/null conftest.c - "$LLVMGCC" -emit-llvm -S -o - conftest.c | grep implementation > /dev/null 2>&1 + "$LLVMGCC" -emit-llvm -S -o - conftest.c | \ + grep 'target datalayout =' > /dev/null 2>&1 if test $? -eq 0 ; then llvm_cv_llvmgcc_sanity="yes" fi @@ -710,16 +768,22 @@ fi]) dnl Since we have a sane llvm-gcc, identify it and its sub-tools if test "$llvm_cv_llvmgcc_sanity" = "yes" ; then + AC_MSG_CHECKING([llvm-gcc component support]) llvmcc1path=`"$LLVMGCC" --print-prog-name=cc1` AC_SUBST(LLVMCC1,$llvmcc1path) llvmcc1pluspath=`"$LLVMGCC" --print-prog-name=cc1plus` AC_SUBST(LLVMCC1PLUS,$llvmcc1pluspath) llvmgccdir=`echo "$llvmcc1path" | sed 's,/libexec/.*,,'` AC_SUBST(LLVMGCCDIR,$llvmgccdir) + llvmgcclibexec=`echo "$llvmcc1path" | sed 's,/cc1,,'` + AC_SUBST(LLVMGCCLIBEXEC,$llvmgcclibexec) llvmgccversion=[`"$LLVMGCC" -dumpversion 2>&1 | sed 's/^\([0-9.]*\).*/\1/'`] llvmgccmajvers=[`echo $llvmgccversion | sed 's/^\([0-9]\).*/\1/'`] AC_SUBST(LLVMGCC_VERSION,$llvmgccversion) AC_SUBST(LLVMGCC_MAJVERS,$llvmgccmajvers) + llvmgcclangs=[`"$LLVMGCC" -v --help 2>&1 | grep '^Configured with:' | sed 's/^.*--enable-languages=\([^ -]*\).*/\1/'`] + AC_SUBST(LLVMGCC_LANGS,$llvmgcclangs) + AC_MSG_RESULT([ok]) fi dnl Propagate the shared library extension that the libltdl checks did to @@ -729,7 +793,7 @@ AC_SUBST(SHLIBEXT,$libltdl_cv_shlibext) # Translate the various configuration directories and other basic # information into substitutions that will end up in Makefile.config.in # that these configured values can be used by the makefiles -if test "${prefix}" == "NONE" ; then +if test "${prefix}" = "NONE" ; then prefix="/usr/local" fi eval LLVM_PREFIX="${prefix}"; @@ -811,6 +875,7 @@ AC_CONFIG_MAKEFILE(Makefile) AC_CONFIG_MAKEFILE(Makefile.common) AC_CONFIG_MAKEFILE(examples/Makefile) AC_CONFIG_MAKEFILE(lib/Makefile) +AC_CONFIG_MAKEFILE(runtime/Makefile) AC_CONFIG_MAKEFILE(test/Makefile) AC_CONFIG_MAKEFILE(test/Makefile.tests) AC_CONFIG_MAKEFILE(tools/Makefile) @@ -820,9 +885,3 @@ AC_CONFIG_MAKEFILE(projects/Makefile) dnl Finally, crank out the output AC_OUTPUT -dnl Warn loudly if llvm-gcc was not obviously working -if test "$llvm_cv_llvmgcc_sanity" = "no" ; then - AC_MSG_WARN([***** llvm-gcc/llvm-g++ was not found, or does not appear to be ]) - AC_MSG_WARN([***** working. Please make sure you have llvm-gcc and llvm-g++ ]) - AC_MSG_WARN([***** in your path before configuring LLVM.]) -fi