Updated version to 1.7cvs.
[oota-llvm.git] / autoconf / configure.ac
index f43c2bcc9eb647be109a28cb1a097af64a3079f0..51639eb2b5bb0a49dacb5f2ed05aa4726059b453 100644 (file)
@@ -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]],[[1.5]],[llvmbugs@cs.uiuc.edu])
+AC_INIT([[llvm]],[[1.7cvs]],[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 U University of Illinois at Urbana-Champaign."])
-AC_COPYRIGHT($LLVM_COPYRIGHT)
+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.])
 
 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.
@@ -74,8 +74,7 @@ do
       "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-fefw")    AC_CONFIG_SUBDIRS([projects/llvm-fefw]) ;;
-      "poolalloc")    AC_CONFIG_SUBDIRS([projects/poolalloc]) ;;
+      "llvm-poolalloc") AC_CONFIG_SUBDIRS([projects/llvm-poolalloc]) ;;
       *)              
         AC_MSG_WARN([Unknown project (${i}) won't be configured automatically])
         ;;
@@ -112,6 +111,9 @@ AC_CACHE_CHECK([type of operating system we're on],
   *-*-freebsd*) 
     llvm_cv_os_type="FreeBSD" 
     llvm_cv_platform_type="Unix" ;;
+  *-*-hpux*) 
+    llvm_cv_os_type="HP-UX" 
+    llvm_cv_platform_type="Unix" ;;
   *-*-interix*) 
     llvm_cv_os_type="Interix"
     llvm_cv_platform_type="Unix" ;;
@@ -157,14 +159,6 @@ case $llvm_cv_platform_type in
     ;;
 esac
 
-dnl If we are targetting a Sparc machine running Solaris, pretend that it is
-dnl V9, since that is all that we support at the moment, and autoconf will only
-dnl tell us we're a sparc.
-case $target in
-  sparc*-*-solaris*)  AC_SUBST(target,[[sparcv9-sun-solaris2.8]])
-  ;;
-esac
-
 dnl Determine what our target architecture is and configure accordingly.
 dnl This will allow Makefiles to make a distinction between the hardware and
 dnl the OS.
@@ -174,6 +168,8 @@ AC_CACHE_CHECK([target architecture],[llvm_cv_target_arch],
   amd64-* | x86_64-*)     llvm_cv_target_arch="x86_64" ;;
   sparc*-*)               llvm_cv_target_arch="Sparc" ;;
   powerpc*-*)             llvm_cv_target_arch="PowerPC" ;;
+  alpha*-*)               llvm_cv_target_arch="Alpha" ;;
+  ia64-*)                 llvm_cv_target_arch="IA64" ;;
   *)                      llvm_cv_target_arch="Unknown" ;;
 esac])
 
@@ -216,6 +212,8 @@ else
     Sparc)   AC_SUBST(JIT,[[TARGET_HAS_JIT=1]]) ;;
     PowerPC) AC_SUBST(JIT,[[TARGET_HAS_JIT=1]]) ;;
     x86_64)  AC_SUBST(JIT,[[]]) ;;
+    Alpha)   AC_SUBST(JIT,[[TARGET_HAS_JIT=1]]) ;;
+    IA64)    AC_SUBST(JIT,[[]]) ;;
     *)       AC_SUBST(JIT,[[]]) ;;
   esac
 fi
@@ -232,6 +230,53 @@ case "$enableval" in
   *) AC_MSG_ERROR([Invalid setting for --enable-doxygen. Use "yes" or "no"]) ;;
 esac
 
+dnl Allow disablement of threads
+AC_ARG_ENABLE(threads,
+              AS_HELP_STRING([--enable-threads],
+                             [Use threads if available (default is YES)]),,
+                             enableval=yes)
+case "$enableval" in
+  yes) AC_SUBST(ENABLE_THREADS,[1]) ;;
+  no)  AC_SUBST(ENABLE_THREADS,[0]) ;;
+  *) AC_MSG_ERROR([Invalid setting for --enable-threads. Use "yes" or "no"]) ;;
+esac
+AC_DEFINE_UNQUOTED([ENABLE_THREADS],$ENABLE_THREADS,[Define if threads enabled])
+
+dnl Allow specific targets to be specified for building (or not)
+TARGETS_TO_BUILD=""
+AC_ARG_ENABLE([targets],AS_HELP_STRING([--enable-target],
+    [Build specific host targets: all,host-only,{target-name} (default=all)]),,
+    enableval=all)
+case "$enableval" in
+  all) TARGETS_TO_BUILD="X86 SparcV8 SparcV9 PowerPC Alpha IA64 Skeleton" ;;
+  host-only)
+    case "$llvm_cv_target_arch" in
+      x86)     TARGETS_TO_BUILD="X86" ;;
+      x86_64)  TARGETS_TO_BUILD="X86" ;;
+      Sparc)   TARGETS_TO_BUILD="SparcV8 SparcV9" ;;
+      PowerPC) TARGETS_TO_BUILD="PowerPC" ;;
+      Alpha)   TARGETS_TO_BUILD="Alpha" ;;
+      IA64)    TARGETS_TO_BUILD="IA64" ;;
+      *)       AC_MSG_ERROR([Can not set target to build]) ;;
+    esac 
+    ;;
+  *)for a_target in `echo $enableval|sed -e 's/,/ /g' ` ; do
+      case "$a_target" in
+        x86)     TARGETS_TO_BUILD="X86 $TARGETS_TO_BUILD" ;;
+        x86_64)  TARGETS_TO_BUILD="X86 $TARGETS_TO_BUILD" ;;
+        sparc)   TARGETS_TO_BUILD="SparcV8 SparcV9 $TARGETS_TO_BUILD" ;;
+        powerpc) TARGETS_TO_BUILD="PowerPC $TARGETS_TO_BUILD" ;;
+        alpha)   TARGETS_TO_BUILD="Alpha $TARGETS_TO_BUILD" ;;
+        ia64)    TARGETS_TO_BUILD="IA64 $TARGETS_TO_BUILD" ;;
+        skeleton)TARGETS_TO_BUILD="Skeleton $TARGETS_TO_BUILD";;
+        *) AC_MSG_ERROR([Unrecognized target $a_target]) ;;
+      esac
+  done 
+  ;;
+esac
+TARGETS_TO_BUILD="CBackend $TARGETS_TO_BUILD"
+AC_SUBST(TARGETS_TO_BUILD,$TARGETS_TO_BUILD)
+
 dnl Allow a specific llvm-gcc/llvm-g++ pair to be used with this LLVM config.
 AC_ARG_WITH(llvmgccdir,
   AS_HELP_STRING([--with-llvmgccdir],
@@ -243,6 +288,7 @@ case "$withval" in
   *) AC_MSG_ERROR([Invalid path for --with-llvmgccdir. Provide full path]) ;;
 esac
 
+
 dnl===-----------------------------------------------------------------------===
 dnl===
 dnl=== SECTION 4: Check for programs we need and that they are the right version
@@ -266,11 +312,22 @@ AC_PATH_PROG(FIND, [find], [find])
 AC_PATH_PROG(GREP, [grep], [grep])
 AC_PATH_PROG(MKDIR,[mkdir],[mkdir])
 AC_PATH_PROG(MV,   [mv],   [mv])
-AC_PATH_PROG(PAX,  [pax],  [pax])
 AC_PROG_RANLIB
 AC_PATH_PROG(RM,   [rm],   [rm])
 AC_PATH_PROG(SED,  [sed],  [sed])
 AC_PATH_PROG(TAR,  [tar],  [gtar])
+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])
+  AC_DEFINE_UNQUOTED([LLVM_PATH_GRAPHVIZ],"$GRAPHVIZ",
+   [Define to path to Graphviz program if found or 'echo Graphviz' otherwise])
+fi
+AC_PATH_PROG(GV, [gv], [echo gv])
+if test "$GV" != "echo gv" ; then
+  AC_DEFINE([HAVE_GV],[1],[Define if the gv program is available])
+  AC_DEFINE_UNQUOTED([LLVM_PATH_GV],"$GV",
+   [Define to path to gv program if found or 'echo gv' otherwise])
+fi
 
 dnl Find the install program
 AC_PROG_INSTALL
@@ -316,11 +373,13 @@ esac
 AC_SUBST(ETAGSFLAGS,$ETAGSFLAGS)
 
 if test "$WITH_LLVMGCCDIR" = "default" ; then
-  AC_PATH_PROG(LLVMGCC, [llvm-gcc], [llvm-gcc])
-  AC_PATH_PROG(LLVMGXX, [llvm-g++], [llvm-g++])
+  LLVMGCC="llvm-gcc${EXEEXT}"
+  LLVMGXX="llvm-g++${EXEEXT}"
+  AC_PATH_PROG(LLVMGCC, $LLVMGCC, [])
+  AC_PATH_PROG(LLVMGXX, $LLVMGXX, [])
 else
-  LLVMGCC=$WITH_LLVMGCCDIR/bin/llvm-gcc
-  LLVMGXX=$WITH_LLVMGCCDIR/bin/llvm-g++
+  LLVMGCC="$WITH_LLVMGCCDIR/bin/llvm-gcc${EXEEXT}"
+  LLVMGXX="$WITH_LLVMGCCDIR/bin/llvm-g++${EXEEXT}"
   AC_SUBST(LLVMGCC,$LLVMGCC)
   AC_SUBST(LLVMGXX,$LLVMGXX)
 fi
@@ -357,7 +416,7 @@ fi
 dnl Verify that GCC is version 3.0 or higher
 if test "$GCC" = "yes"
 then
-  gccmajor=`$CC --version | head -n 1 | awk '{print $NF;}' | cut -d. -f1`
+  gccmajor=`$CC --version | head -n 1 | sed 's/[[^0-9]]*\([[0-9.]]\).*/\1/'` 
   if test "$gccmajor" -lt "3"
   then
     AC_MSG_ERROR([gcc 3.x required, but you have a lower version])
@@ -382,6 +441,7 @@ dnl===-----------------------------------------------------------------------===
 dnl libelf is for sparc only; we can ignore it if we don't have it
 AC_CHECK_LIB(elf, elf_begin)
 
+
 dnl lt_dlopen may be required for plugin support.
 AC_SEARCH_LIBS(lt_dlopen,ltdl,AC_DEFINE([HAVE_LT_DLOPEN],[1],
               [Define if lt_dlopen() is available on this platform]),
@@ -399,9 +459,12 @@ AC_SEARCH_LIBS(mallinfo,malloc,AC_DEFINE([HAVE_MALLINFO],[1],
 
 dnl pthread locking functions are optional - but llvm will not be thread-safe
 dnl without locks.
-AC_SEARCH_LIBS(pthread_mutex_lock,pthread,
-               AC_DEFINE([HAVE_PTHREAD_MUTEX_LOCK],[1],
-                         [Have pthread_mutex_lock]))
+if test "$ENABLE_THREADS" -eq 1 ; then
+  AC_CHECK_LIB(pthread,pthread_mutex_init)
+  AC_SEARCH_LIBS(pthread_mutex_lock,pthread,
+                 AC_DEFINE([HAVE_PTHREAD_MUTEX_LOCK],[1],
+                           [Have pthread_mutex_lock]))
+fi
 
 dnl===-----------------------------------------------------------------------===
 dnl===
@@ -424,6 +487,9 @@ AC_CHECK_HEADERS([dlfcn.h execinfo.h fcntl.h inttypes.h limits.h link.h])
 AC_CHECK_HEADERS([malloc.h signal.h stdint.h unistd.h utime.h windows.h])
 AC_CHECK_HEADERS([sys/mman.h sys/param.h sys/resource.h sys/time.h sys/types.h])
 AC_CHECK_HEADERS([rw/stdex/hash_map.h rw/stdex/hash_set.h])
+if test "$ENABLE_THREADS" -eq 1 ; then
+  AC_CHECK_HEADERS(pthread.h)
+fi
 
 dnl===-----------------------------------------------------------------------===
 dnl===
@@ -446,8 +512,8 @@ dnl=== SECTION 8: Check for specific functions needed
 dnl===
 dnl===-----------------------------------------------------------------------===
 
-AC_CHECK_FUNCS([backtrace getcwd getpagesize getrusage gettimeofday isatty ])
-AC_CHECK_FUNCS([mkdtemp mkstemp mktemp ])
+AC_CHECK_FUNCS([backtrace getcwd getpagesize getrusage gettimeofday ])
+AC_CHECK_FUNCS([isatty mkdtemp mkstemp mktemp ])
 AC_CHECK_FUNCS([realpath sbrk setrlimit strdup strerror strerror_r ])
 AC_CHECK_FUNCS([strtoll strtoq sysconf])
 AC_C_PRINTF_A
@@ -568,24 +634,24 @@ dnl===
 dnl===-----------------------------------------------------------------------===
 
 dnl Configure header files
-AC_CONFIG_HEADERS(include/llvm/Config/config.h)
-
+dnl WARNING: dnl If you add or remove any of the following config headers, then
+dnl you MUST also update Makefile.rules so that the variable FilesToConfig
+dnl contains the same list of files as AC_CONFIG_HEADERS below. This ensures the
+dnl files can be updated automatically when their *.in sources change.
+AC_CONFIG_HEADERS([include/llvm/Config/config.h])
 AC_CONFIG_HEADERS([include/llvm/Support/DataTypes.h])
 AC_CONFIG_HEADERS([include/llvm/ADT/hash_map])
 AC_CONFIG_HEADERS([include/llvm/ADT/hash_set])
-AC_CONFIG_HEADERS([include/llvm/Support/ThreadSupport.h])
 AC_CONFIG_HEADERS([include/llvm/ADT/iterator])
 
 dnl Configure the makefile's configuration data
 AC_CONFIG_FILES([Makefile.config])
 
-dnl Configure llvmc's configuration files
-AC_CONFIG_FILES([tools/llvmc/st tools/llvmc/cpp tools/llvmc/ll tools/llvmc/c])
-
 dnl Configure doxygen's configuration file
 AC_CONFIG_FILES([docs/doxygen.cfg])
 
 dnl Do special configuration of Makefiles
+AC_CONFIG_COMMANDS([setup],,[llvm_src="${srcdir}"])
 AC_CONFIG_MAKEFILE(Makefile)
 AC_CONFIG_MAKEFILE(Makefile.common)
 AC_CONFIG_MAKEFILE(examples/Makefile)