Remove trailing whitespace
[oota-llvm.git] / autoconf / configure.ac
index e81a57efad919bc43088271df7f4444d05302ac3..5f0d5b62384787f858f87469bfd7aa4391d63b30 100644 (file)
@@ -31,7 +31,7 @@ dnl===
 dnl===-----------------------------------------------------------------------===
 dnl Initialize autoconf and define the package name, version number and
 dnl email address for reporting bugs.
-AC_INIT([[llvm]],[[1.4]],[llvmbugs@cs.uiuc.edu])
+AC_INIT([[llvm]],[[1.5cvs]],[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.
@@ -72,10 +72,10 @@ do
       "llvm-test")    AC_CONFIG_SUBDIRS([projects/llvm-test]) ;;
       "llvm-reopt")   AC_CONFIG_SUBDIRS([projects/llvm-reopt]);;
       "llvm-gcc")     AC_CONFIG_SUBDIRS([projects/llvm-gcc])  ;;
-      "Java")         AC_CONFIG_SUBDIRS([projects/Java])      ;;
+      "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])
         ;;
@@ -97,34 +97,65 @@ AC_CANONICAL_TARGET
 
 dnl Determine the platform type and cache its value. This helps us configure
 dnl the System library to the correct build platform.
-AC_CACHE_CHECK([support for generic build operating system],
-               [llvm_cv_platform_type],
+AC_CACHE_CHECK([type of operating system we're on],
+               [llvm_cv_os_type],
 [case $build in
-  *-*-aix*) llvm_cv_platform_type="AIX" ;;
-  *-*-cygwin*) llvm_cv_platform_type="Cygwin" ;;
-  *-*-darwin*) llvm_cv_platform_type="Darwin" ;;
-  *-*-freebsd*) llvm_cv_platform_type="FreeBSD" ;;
-  *-*-interix*) llvm_cv_platform_type="Interix" ;;
-  *-*-linux*) llvm_cv_platform_type="Linux" ;;
-  *-*-solaris*) llvm_cv_platform_type="SunOS" ;;
-  *-*-win32*) llvm_cv_platform_type="Win32" ;;
-  *-*-mingw*) llvm_cv_platform_type="Win32" ;;
-  *) llvm_cv_platform_type="Unknown" ;;
+  *-*-aix*) 
+    llvm_cv_os_type="AIX" 
+    llvm_cv_platform_type="Unix" ;;
+  *-*-cygwin*) 
+    llvm_cv_os_type="Cygwin" 
+    llvm_cv_platform_type="Unix" ;;
+  *-*-darwin*) 
+    llvm_cv_os_type="Darwin"
+    llvm_cv_platform_type="Unix" ;;
+  *-*-freebsd*) 
+    llvm_cv_os_type="FreeBSD" 
+    llvm_cv_platform_type="Unix" ;;
+  *-*-interix*) 
+    llvm_cv_os_type="Interix"
+    llvm_cv_platform_type="Unix" ;;
+  *-*-linux*) 
+    llvm_cv_os_type="Linux"
+    llvm_cv_platform_type="Unix" ;;
+  *-*-solaris*) 
+    llvm_cv_os_type="SunOS"
+    llvm_cv_platform_type="Unix" ;;
+  *-*-win32*) 
+    llvm_cv_os_type="Win32"
+    llvm_cv_platform_type="Win32" ;;
+  *-*-mingw*) 
+    llvm_cv_os_type="MingW" 
+    llvm_cv_platform_type="Win32" ;;
+  *) 
+    llvm_cv_os_type="Unknown" 
+    llvm_cv_platform_type="Unknown" ;;
 esac])
 
 dnl Make sure we aren't attempting to configure for an unknown system
-if test "$llvm_cv_platform_type" = "Unknown" ; then
-  AC_MSG_ERROR([Operating system platform is unknown, configure can't continue])
+if test "$llvm_cv_os_type" = "Unknown" ; then
+  AC_MSG_ERROR([Operating system is unknown, configure can't continue])
 fi
 
 dnl Set the "OS" Makefile variable based on the platform type so the
 dnl makefile can configure itself to specific build hosts
-AC_SUBST(OS,$llvm_cv_platform_type)
-
-dnl Make a link from lib/System/platform to lib/System/$llvm_cv_platform_type
-dnl This helps the #inclusion of the system specific include files
-dnl for the operating system abstraction library, lib/System.
-AC_CONFIG_LINKS(lib/System/platform:lib/System/$llvm_cv_platform_type)
+AC_SUBST(OS,$llvm_cv_os_type)
+
+dnl Set the "LLVM_ON_*" variables based on llvm_cvs_platform_type
+dnl This is used by lib/System to determine the basic kind of implementation
+dnl to use.
+case $llvm_cv_platform_type in
+  Unix)  
+    AC_DEFINE([LLVM_ON_UNIX],[1],[Define if this is Unixish platform]) 
+    AC_SUBST(LLVM_ON_UNIX,[1])
+    AC_SUBST(LLVM_ON_WIN32,[0])
+    ;;
+  Win32) 
+    AC_DEFINE([LLVM_ON_WIN32],[1],[Define if this is Win32ish platform]) 
+    AC_SUBST(LLVM_ON_UNIX,[0])
+    AC_SUBST(LLVM_ON_WIN32,[1])
+    ;;
+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
@@ -139,10 +170,13 @@ dnl This will allow Makefiles to make a distinction between the hardware and
 dnl the OS.
 AC_CACHE_CHECK([target architecture],[llvm_cv_target_arch],
 [case $target in
-  i*86-*)      llvm_cv_target_arch="x86" ;;
-  sparc*-*)    llvm_cv_target_arch="Sparc" ;;
-  powerpc*-*)  llvm_cv_target_arch="PowerPC" ;;
-  *)           llvm_cv_target_arch="Unknown" ;;
+  i?86-*)                 llvm_cv_target_arch="x86" ;;
+  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])
 
 if test "$llvm_cv_target_arch" = "Unknown" ; then
@@ -183,6 +217,7 @@ else
     x86)     AC_SUBST(JIT,[[TARGET_HAS_JIT=1]]) ;;
     Sparc)   AC_SUBST(JIT,[[TARGET_HAS_JIT=1]]) ;;
     PowerPC) AC_SUBST(JIT,[[TARGET_HAS_JIT=1]]) ;;
+    x86_64)  AC_SUBST(JIT,[[]]) ;;
     *)       AC_SUBST(JIT,[[]]) ;;
   esac
 fi
@@ -199,6 +234,17 @@ case "$enableval" in
   *) AC_MSG_ERROR([Invalid setting for --enable-doxygen. Use "yes" or "no"]) ;;
 esac
 
+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],
+    [Specify location of llvm-gcc install dir (default searches PATH)]),,
+    withval=default)
+case "$withval" in
+  default) WITH_LLVMGCCDIR=default ;;
+  /*)      WITH_LLVMGCCDIR=$withval ;;
+  *) 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
@@ -220,11 +266,8 @@ AC_PATH_PROG(CP, [cp], [cp])
 AC_PATH_PROG(DATE, [date], [date])
 AC_PATH_PROG(FIND, [find], [find])
 AC_PATH_PROG(GREP, [grep], [grep])
-AC_PATH_PROG(LLVMGCC, [llvm-gcc], [llvm-gcc])
-AC_PATH_PROG(LLVMGXX, [llvm-g++], [llvm-g++])
 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])
@@ -259,6 +302,11 @@ AC_LIBTOOL_DLOPEN
 AC_LIB_LTDL
 AC_PROG_LIBTOOL
 
+if test "$lt_cv_dlopen_self" = "yes" ; then
+  AC_DEFINE([CAN_DLOPEN_SELF],[1],
+              [Define if dlopen(0) will open the symbols of the program])
+fi
+
 dnl Check if we know how to tell etags we are using C++:
 etags_version=`$ETAGS --version 2>&1`
 case "$etags_version" in
@@ -268,6 +316,16 @@ case "$etags_version" in
 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++])
+else
+  LLVMGCC=$WITH_LLVMGCCDIR/bin/llvm-gcc
+  LLVMGXX=$WITH_LLVMGCCDIR/bin/llvm-g++
+  AC_SUBST(LLVMGCC,$LLVMGCC)
+  AC_SUBST(LLVMGXX,$LLVMGXX)
+fi
+  
 AC_MSG_CHECKING([tool compatibility])
 
 dnl Ensure that compilation tools are GCC or a GNU compatible compiler such as
@@ -352,23 +410,21 @@ dnl=== SECTION 6: Check for header files
 dnl===
 dnl===-----------------------------------------------------------------------===
 
+dnl First, use autoconf provided macros for specific headers that we need
 dnl We don't check for ancient stuff or things that are guaranteed to be there
 dnl by the C++ standard. We always use the <cfoo> versions of <foo.h> C headers.
+dnl Generally we're looking for POSIX headers.
+AC_HEADER_DIRENT
+AC_HEADER_MMAP_ANONYMOUS
+AC_HEADER_STAT
 AC_HEADER_STDC
-
-dnl However, we do need some system specific header files. Generally we're
-dnl looking for POSIX headers.
 AC_HEADER_SYS_WAIT
-AC_CHECK_HEADERS([sys/time.h sys/mman.h sys/resource.h sys/time.h sys/types.h])
-AC_CHECK_HEADERS([dlfcn.h execinfo.h fcntl.h limits.h link.h])
-AC_CHECK_HEADERS([malloc.h unistd.h windows.h])
 AC_HEADER_TIME
-AC_HEADER_MMAP_ANONYMOUS
 
-dnl Check for things that need to be included in public headers, and so
-dnl for which we may not have access to a HAVE_* preprocessor #define.
-dnl (primarily used in DataTypes.h)
-AC_CHECK_HEADERS([inttypes.h stdint.h])
+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])
 
 dnl===-----------------------------------------------------------------------===
 dnl===
@@ -393,7 +449,8 @@ dnl===-----------------------------------------------------------------------===
 
 AC_CHECK_FUNCS([backtrace getcwd getpagesize getrusage gettimeofday isatty ])
 AC_CHECK_FUNCS([mkdtemp mkstemp mktemp ])
-AC_CHECK_FUNCS([realpath strdup strtoq strtoll sysconf ])
+AC_CHECK_FUNCS([realpath sbrk setrlimit strdup strerror strerror_r ])
+AC_CHECK_FUNCS([strtoll strtoq sysconf])
 AC_C_PRINTF_A
 AC_FUNC_ALLOCA
 AC_FUNC_RAND48
@@ -409,15 +466,17 @@ 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.
+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]))
 
 if test "$ac_cv_func_mmap_fixed_mapped" = "no"
 then
-  AC_MSG_WARN([mmap() required but not found])
+  AC_MSG_WARN([mmap() of a fixed address required but not supported])
 fi
 if test "$ac_cv_func_mmap_file" = "no"
 then
@@ -430,7 +489,7 @@ dnl=== SECTION 9: Additional checks, variables, etc.
 dnl===
 dnl===-----------------------------------------------------------------------===
 
-dnl See if the llvmgcc executable can compile to LLVM assembly
+dnl See if the llvm-gcc executable can compile to LLVM assembly
 AC_CACHE_CHECK([whether llvm-gcc is sane],[llvm_cv_llvmgcc_sanity],
 [llvm_cv_llvmgcc_sanity="no"
 if test -x "$LLVMGCC" ; then
@@ -442,7 +501,7 @@ if test -x "$LLVMGCC" ; then
   rm conftest.c
 fi])
 
-dnl Since we have a sane llvmgcc, identify it and its sub-tools 
+dnl Since we have a sane llvm-gcc, identify it and its sub-tools 
 if test "$llvm_cv_llvmgcc_sanity" = "yes" ; then
   llvmcc1path=`"$LLVMGCC" --print-prog-name=cc1`
   AC_SUBST(LLVMCC1,$llvmcc1path)
@@ -528,6 +587,7 @@ 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)
@@ -544,7 +604,7 @@ AC_OUTPUT
 
 dnl Warn loudly if llvm-gcc was not obviously working
 if test "$llvm_cv_llvmgcc_sanity" = "no" ; then
- AC_MSG_WARN([***** llvmgcc/llvmg++ was not found, or does not appear to be ])
+ 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 llvmgcc and llvmg++ in])
  AC_MSG_WARN([***** your path before configuring LLVM. The runtime libraries])
  AC_MSG_WARN([***** (llvm/runtime) will not be built but you should be able to])