dnl===-----------------------------------------------------------------------===
dnl Initialize autoconf and define the package name, version number and
dnl email address for reporting bugs.
-AC_INIT([[llvm]],[[1.8cvs]],[llvmbugs@cs.uiuc.edu])
+AC_INIT([[llvm]],[[2.0cvs]],[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.
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([type of operating system we're on],
+AC_CACHE_CHECK([type of operating system we're going to host on],
[llvm_cv_os_type],
-[case $build in
+[case $host in
*-*-aix*)
+ llvm_cv_link_all_option="-Wl,--whole-archive"
+ llvm_cv_no_link_all_option="-Wl,--no-whole-archive"
llvm_cv_os_type="AIX"
llvm_cv_platform_type="Unix" ;;
+ *-*-irix*)
+ llvm_cv_link_all_option="-Wl,--whole-archive"
+ llvm_cv_no_link_all_option="-Wl,--no-whole-archive"
+ llvm_cv_os_type="IRIX"
+ llvm_cv_platform_type="Unix" ;;
*-*-cygwin*)
+ llvm_cv_link_all_option="-Wl,--whole-archive"
+ llvm_cv_no_link_all_option="-Wl,--no-whole-archive"
llvm_cv_os_type="Cygwin"
llvm_cv_platform_type="Unix" ;;
*-*-darwin*)
+ llvm_cv_link_all_option="-Wl,-all_load"
+ llvm_cv_link_all_option="-Wl,-noall_load"
llvm_cv_os_type="Darwin"
llvm_cv_platform_type="Unix" ;;
*-*-freebsd*)
+ llvm_cv_link_all_option="-Wl,--whole-archive"
+ llvm_cv_no_link_all_option="-Wl,--no-whole-archive"
llvm_cv_os_type="FreeBSD"
llvm_cv_platform_type="Unix" ;;
*-*-openbsd*)
+ llvm_cv_link_all_option="-Wl,--whole-archive"
+ llvm_cv_no_link_all_option="-Wl,--no-whole-archive"
llvm_cv_os_type="OpenBSD"
llvm_cv_platform_type="Unix" ;;
*-*-hpux*)
+ llvm_cv_link_all_option="-Wl,--whole-archive"
+ llvm_cv_no_link_all_option="-Wl,--no-whole-archive"
llvm_cv_os_type="HP-UX"
llvm_cv_platform_type="Unix" ;;
*-*-interix*)
+ llvm_cv_link_all_option="-Wl,--whole-archive"
+ llvm_cv_no_link_all_option="-Wl,--no-whole-archive"
llvm_cv_os_type="Interix"
llvm_cv_platform_type="Unix" ;;
*-*-linux*)
+ llvm_cv_link_all_option="-Wl,--whole-archive"
+ llvm_cv_no_link_all_option="-Wl,--no-whole-archive"
llvm_cv_os_type="Linux"
llvm_cv_platform_type="Unix" ;;
*-*-solaris*)
+ llvm_cv_link_all_option="-Wl,-z,allextract"
+ llvm_cv_no_link_all_option="-Wl,-z,defaultextract"
llvm_cv_os_type="SunOS"
llvm_cv_platform_type="Unix" ;;
*-*-win32*)
+ llvm_cv_link_all_option="-Wl,--whole-archive"
+ llvm_cv_no_link_all_option="-Wl,--no-whole-archive"
llvm_cv_os_type="Win32"
llvm_cv_platform_type="Win32" ;;
*-*-mingw*)
+ llvm_cv_link_all_option="-Wl,--whole-archive"
+ llvm_cv_no_link_all_option="-Wl,--no-whole-archive"
llvm_cv_os_type="MingW"
llvm_cv_platform_type="Win32" ;;
*)
+ llvm_cv_link_all_option=""
+ llvm_cv_no_link_all_option=""
llvm_cv_os_type="Unknown"
llvm_cv_platform_type="Unknown" ;;
esac])
dnl makefile can configure itself to specific build hosts
AC_SUBST(OS,$llvm_cv_os_type)
+dnl Set the LINKALL and NOLINKALL Makefile variables based on the platform
+AC_SUBST(LINKALL,$llvm_cv_link_all_option)
+AC_SUBST(NOLINKALL,$llvm_cv_no_link_all_option)
+
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.
dnl Check for the endianness of the target
AC_C_BIGENDIAN(AC_SUBST([ENDIAN],[big]),AC_SUBST([ENDIAN],[little]))
+dnl Check for build platform executable suffix if we're crosscompiling
+if test "$cross_compiling" = yes; then
+ AC_SUBST(LLVM_CROSS_COMPILING, [1])
+ AC_BUILD_EXEEXT
+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 command line switches. When we build with a CVS directory, we get a
AC_ARG_ENABLE(threads,
AS_HELP_STRING([--enable-threads],
[Use threads if available (default is YES)]),,
- enableval=yes)
+ enableval=default)
case "$enableval" in
yes) AC_SUBST(ENABLE_THREADS,[1]) ;;
no) AC_SUBST(ENABLE_THREADS,[0]) ;;
+ default) AC_SUBST(ENABLE_THREADS,[1]) ;;
*) 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 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-target],
+AC_ARG_ENABLE([targets],AS_HELP_STRING([--enable-targets],
[Build specific host targets: all,host-only,{target-name} (default=all)]),,
enableval=all)
case "$enableval" in
TARGETS_TO_BUILD="CBackend $TARGETS_TO_BUILD"
AC_SUBST(TARGETS_TO_BUILD,$TARGETS_TO_BUILD)
+dnl Prevent the CBackend from using printf("%a") for floating point so older
+dnl C compilers that cannot deal with the 0x0p+0 hex floating point format
+dnl can still compile the CBE's output
+AC_ARG_ENABLE([cbe-printf-a],AS_HELP_STRING([--enable-cbe-printf-a],
+ [Enable C Backend output with hex floating point via %a (default is YES)]),,
+ enableval=default)
+case "$enableval" in
+ yes) AC_SUBST(ENABLE_CBE_PRINTF_A,[1]) ;;
+ no) AC_SUBST(ENABLE_CBE_PRINTF_A,[0]) ;;
+ default) AC_SUBST(ENABLE_CBE_PRINTF_A,[1]) ;;
+ *) AC_MSG_ERROR([Invalid setting for --enable-cbe-printf-a. Use "yes" or "no"]) ;;
+esac
+AC_DEFINE_UNQUOTED([ENABLE_CBE_PRINTF_A],$ENABLE_CBE_PRINTF_A,
+ [Define if CBE is enabled for printf %a output])
+
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],
*) AC_MSG_ERROR([Invalid path for --with-llvmgccdir. Provide full path]) ;;
esac
+dnl Specify extra build options
+AC_ARG_WITH(extra-options,
+ AS_HELP_STRING([--with-extra-options],
+ [Specify addtional options to compile LLVM with]),,
+ withval=default)
+case "$withval" in
+ default) EXTRA_OPTIONS= ;;
+ *) EXTRA_OPTIONS=$withval ;;
+esac
+AC_SUBST(EXTRA_OPTIONS,$EXTRA_OPTIONS)
dnl===-----------------------------------------------------------------------===
dnl===
AC_PROG_FLEX
AC_PROG_BISON
+AC_PROG_NM
+AC_SUBST(NM)
+
dnl Check for the tools that the makefiles require
AC_CHECK_GNU_MAKE
AC_PROG_LN_S
AC_PATH_PROG(RM, [rm], [rm])
AC_PATH_PROG(SED, [sed], [sed])
AC_PATH_PROG(TAR, [tar], [gtar])
+AC_PATH_PROG(BINPWD,[pwd], [pwd])
dnl Looking for misc. graph plotting software
AC_PATH_PROG(GRAPHVIZ, [Graphviz], [echo Graphviz])
dnl something if the tool was available.
AC_PATH_PROG(BZIP2,[bzip2],[echo "Skipped: bzip2 not found"])
AC_PATH_PROG(DOXYGEN,[doxygen],[echo "Skipped: doxygen not found"])
-AC_PATH_PROG(ETAGS,[etags],[echo "Skipped: etags not found"])
AC_PATH_PROG(GROFF,[groff],[echo "Skipped: groff not found"])
AC_PATH_PROG(GZIP,[gzip],[echo "Skipped: gzip not found"])
AC_PATH_PROG(POD2HTML,[pod2html],[echo "Skipped: pod2html not found"])
AC_CHECK_HEADERS([dlfcn.h execinfo.h fcntl.h inttypes.h limits.h link.h])
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])
+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===-----------------------------------------------------------------------===
dnl===
dnl===-----------------------------------------------------------------------===
+AC_HUGE_VAL_CHECK
AC_TYPE_PID_T
AC_TYPE_SIZE_T
AC_TYPE_SIGNAL
AC_CHECK_FUNCS([getpagesize getrusage gettimeofday 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
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)
dnl Configure the makefile's configuration data
AC_CONFIG_FILES([Makefile.config])
+dnl Configure the RPM spec file for LLVM
+AC_CONFIG_FILES([llvm.spec])
+
dnl Configure doxygen's configuration file
AC_CONFIG_FILES([docs/doxygen.cfg])
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 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])
- AC_MSG_WARN([***** build the llvm tools.])
-fi