X-Git-Url: http://git.megacz.com/?p=ghc-hetmet.git;a=blobdiff_plain;f=aclocal.m4;h=f5ae279eb812fb0f67b19e16ea3482ed7abc99b4;hp=816e1f5b24ebe60ee09750f6ef8b5191ca0a3039;hb=27310213397bb89555bb03585e057ba1b017e895;hpb=cfdf2515dd5b491f8229d44b98fa33adeeac7e60 diff --git a/aclocal.m4 b/aclocal.m4 index 816e1f5..f5ae279 100644 --- a/aclocal.m4 +++ b/aclocal.m4 @@ -4,6 +4,68 @@ # ensure we don't clash with any pre-supplied autoconf ones. +# FPTOOLS_SET_C_LD_FLAGS +# ---------------------------------- +# Set the C and LD flags for a given platform +AC_DEFUN([FPTOOLS_SET_C_LD_FLAGS], +[ + AC_MSG_CHECKING([Setting up $2, $3 and $4]) + case $$1 in + i386-apple-darwin) + # By default, gcc on OS X will generate SSE + # instructions, which need things 16-byte aligned, + # but we don't 16-byte align things. Thus drop + # back to generic i686 compatibility. Trac #2983. + $2="$$2 -march=i686 -m32" + $3="$$3 -march=i686 -m32" + $4="$$4 -march=i686 -m32" + ;; + x86_64-apple-darwin) + $2="$$2 -m64" + $3="$$3 -m64" + $4="$$4 -m64" + ;; + esac + + case $$1 in + i386-apple-darwin|x86_64-apple-darwin) + # We support back to OS X 10.5 + $2="$$2 -isysroot /Developer/SDKs/MacOSX10.5.sdk -mmacosx-version-min=10.5" + $3="$$3 -isysroot /Developer/SDKs/MacOSX10.5.sdk -mmacosx-version-min=10.5" + $4="$$4 -isysroot /Developer/SDKs/MacOSX10.5.sdk -mmacosx-version-min=10.5" + ;; + esac + + # If gcc knows about the stack protector, turn it off. + # Otherwise the stack-smash handler gets triggered. + echo 'int main(void) {return 0;}' > conftest.c + if $CC -c conftest.c -fno-stack-protector > /dev/null 2>&1 + then + $2="$$2 -fno-stack-protector" + fi + rm -f conftest.c conftest.o + AC_MSG_RESULT([done]) +]) + + +# FP_VISIBILITY_HIDDEN +# ---------------------------------- +# Is the visibility hidden attribute supported? +AC_DEFUN([FP_VISIBILITY_HIDDEN], +[ + AC_MSG_CHECKING([whether __attribute__((visibility("hidden"))) is supported]) + echo '__attribute__((visibility("hidden"))) void foo(void) {}' > conftest.c + if $CC -Wall -Werror -c conftest.c > /dev/null 2>&1 + then + AC_MSG_RESULT([yes]) + AC_DEFINE(HAS_VISIBILITY_HIDDEN, 1, [Has visibility hidden]) + else + AC_MSG_RESULT([no]) + fi + rm -f conftest.c conftest.o +]) + + # FPTOOLS_FLOAT_WORD_ORDER_BIGENDIAN # ---------------------------------- # Little endian Arm on Linux with some ABIs has big endian word order @@ -123,7 +185,7 @@ AC_DEFUN([FP_COMPUTE_INT], # A variation of AC_CHECK_SIZEOF for computing the alignment restrictions of a # given type. Defines ALIGNMENT_TYPE. AC_DEFUN([FP_CHECK_ALIGNMENT], -[AS_LITERAL_IF([$1], [], +[AS_LITERAL_IF(m4_translit([[$1]], [*], [p]), [], [AC_FATAL([$0: requires literal arguments])])[]dnl AC_CHECK_TYPE([$1], [], [], [$3])[]dnl m4_pushdef([fp_Cache], [AS_TR_SH([fp_cv_alignment_$1])])[]dnl @@ -264,7 +326,7 @@ if test "x$HostPlatform" = "xi386-unknown-mingw32" && \ test "${HappyCmd}" != "" then # Canonicalise to :/path/to/gcc - HappyCmd=`cygpath -m ${HappyCmd}` + HappyCmd=`cygpath -m "${HappyCmd}"` AC_MSG_NOTICE([normalized happy command to $HappyCmd]) fi @@ -300,7 +362,7 @@ if test "x$HostPlatform" = "xi386-unknown-mingw32" && \ test "${AlexCmd}" != "" then # Canonicalise to :/path/to/gcc - AlexCmd=`cygpath -m ${AlexCmd}` + AlexCmd=`cygpath -m "${AlexCmd}"` fi AC_CACHE_CHECK([for version of alex], fptools_cv_alex_version, @@ -372,10 +434,10 @@ AC_DEFUN([FP_PROG_AR], if test -z "$fp_prog_ar_raw"; then AC_MSG_ERROR([cannot find ar in your PATH, no idea how to make a library]) fi -fp_prog_ar=$fp_prog_ar_raw +fp_prog_ar="$fp_prog_ar_raw" case $HostPlatform in *mingw32) if test x${OSTYPE} != xmsys; then - fp_prog_ar="`cygpath -w ${fp_prog_ar_raw} | sed -e 's@\\\\@/@g'`" + fp_prog_ar="`cygpath -w "${fp_prog_ar_raw}" | sed -e 's@\\\\@/@g'`" AC_MSG_NOTICE([normalized ar command to $fp_prog_ar]) fi ;; @@ -389,15 +451,42 @@ esac AC_DEFUN([FP_PROG_AR_IS_GNU], [AC_REQUIRE([FP_PROG_AR]) AC_CACHE_CHECK([whether $fp_prog_ar_raw is GNU ar], [fp_cv_prog_ar_is_gnu], -[if $fp_prog_ar_raw --version 2> /dev/null | grep "GNU" > /dev/null 2>&1; then +[if "$fp_prog_ar_raw" --version 2> /dev/null | grep "GNU" > /dev/null 2>&1; then fp_cv_prog_ar_is_gnu=yes else fp_cv_prog_ar_is_gnu=no fi]) fp_prog_ar_is_gnu=$fp_cv_prog_ar_is_gnu +AC_SUBST([ArIsGNUAr], [`echo $fp_prog_ar_is_gnu | tr 'a-z' 'A-Z'`]) ])# FP_PROG_AR_IS_GNU +# FP_PROG_AR_SUPPORTS_ATFILE +# ----------------- +# Sets fp_prog_ar_supports_atfile to yes or no, depending on whether +# or not it supports the @file syntax +AC_DEFUN([FP_PROG_AR_SUPPORTS_ATFILE], +[AC_REQUIRE([FP_PROG_AR]) + AC_REQUIRE([FP_PROG_AR_ARGS]) +AC_CACHE_CHECK([whether $fp_prog_ar_raw supports @file], [fp_cv_prog_ar_supports_atfile], +[ +rm -f conftest* +touch conftest.file +echo conftest.file > conftest.atfile +echo conftest.file >> conftest.atfile +"$fp_prog_ar_raw" $fp_prog_ar_args conftest.a @conftest.atfile > /dev/null 2>&1 +fp_prog_ar_supports_atfile_tmp=`"$fp_prog_ar_raw" t conftest.a 2> /dev/null | grep -c conftest.file` +rm -f conftest* +if test "$fp_prog_ar_supports_atfile_tmp" -eq 2 +then + fp_cv_prog_ar_supports_atfile=yes +else + fp_cv_prog_ar_supports_atfile=no +fi]) +fp_prog_ar_supports_atfile=$fp_cv_prog_ar_supports_atfile +AC_SUBST([ArSupportsAtFile], [`echo $fp_prog_ar_supports_atfile | tr 'a-z' 'A-Z'`]) +])# FP_PROG_AR_SUPPORTS_ATFILE + # FP_PROG_AR_ARGS # --------------- # Sets fp_prog_ar_args to the arguments for ar and the output variable ArCmd @@ -473,7 +562,7 @@ AC_CACHE_CHECK([whether $fp_prog_ar_raw supports -input], [fp_cv_prog_ar_support if test $fp_prog_ar_is_gnu = no; then rm -f conftest* touch conftest.lst - if FP_EVAL_STDERR([$fp_prog_ar_raw $fp_prog_ar_args conftest.a -input conftest.lst]) >/dev/null; then + if FP_EVAL_STDERR(["$fp_prog_ar_raw" $fp_prog_ar_args conftest.a -input conftest.lst]) >/dev/null; then test -s conftest.err || fp_cv_prog_ar_supports_input=yes fi rm -f conftest* @@ -697,7 +786,7 @@ AS_VAR_POPDEF([fp_func])dnl # FP_GEN_DOCBOOK_XML # ------------------ -# Generates a DocBook XML V4.2 document in conftest.xml. +# Generates a DocBook XML V4.5 document in conftest.xml. # # It took a lot of experimentation to find a document that will cause # xsltproc to fail with an error code when the relevant @@ -709,8 +798,8 @@ AC_DEFUN([FP_GEN_DOCBOOK_XML], [rm -f conftest.xml conftest-book.xml cat > conftest.xml << EOF - ]]> @@ -804,7 +893,7 @@ if test -n "$XmllintCmd"; then AC_MSG_RESULT([ok]) else AC_MSG_RESULT([failed]) - AC_MSG_WARN([cannot find a DTD for DocBook XML V4.2, you will not be able to validate your documentation]) + AC_MSG_WARN([cannot find a DTD for DocBook XML V4.5, you will not be able to validate your documentation]) AC_MSG_WARN([check your XML_CATALOG_FILES environment variable and/or /etc/xml/catalog]) fi rm -rf conftest* @@ -880,24 +969,24 @@ fi # FP_PROG_GHC_PKG # ---------------- # Try to find a ghc-pkg matching the ghc mentioned in the environment variable -# WithGhc. If the latter is unset or no matching ghc-pkg can be found, try to -# find a plain ghc-pkg. Sets the output variable GhcPkgCmd. +# WithGhc. Sets the output variable GhcPkgCmd. AC_DEFUN([FP_PROG_GHC_PKG], [AC_CACHE_CHECK([for ghc-pkg matching $WithGhc], fp_cv_matching_ghc_pkg, -[fp_ghc_pkg_guess=`echo $WithGhc | sed 's,ghc\(@<:@^/\\@:>@*\)$,ghc-pkg\1,'` -if "$fp_ghc_pkg_guess" -l > /dev/null 2>&1; then - fp_cv_matching_ghc_pkg=$fp_ghc_pkg_guess -elif "$fp_ghc_pkg_guess" list > /dev/null 2>&1; then - # from 6.10, ghc-pkg doesn't support the old -l syntax any more +[ +# If we are told to use ghc-stage2, then we're using an in-tree +# compiler. In this case, we just want ghc-pkg, not ghc-pkg-stage2, +# so we sed off -stage[0-9]$. However, if we are told to use +# ghc-6.12.1 then we want to use ghc-pkg-6.12.1, so we keep any +# other suffix. +fp_ghc_pkg_guess=`echo $WithGhc | sed -e 's/-stage@<:@0-9@:>@$//' -e 's,ghc\(@<:@^/\\@:>@*\)$,ghc-pkg\1,'` +if "$fp_ghc_pkg_guess" list > /dev/null 2>&1; then fp_cv_matching_ghc_pkg=$fp_ghc_pkg_guess else - fp_cv_matching_ghc_pkg=no + AC_MSG_ERROR([Cannot find matching ghc-pkg]) fi]) -if test x"$fp_cv_matching_ghc_pkg" = xno; then - AC_PATH_PROG([GhcPkgCmd], [ghc-pkg]) -else - GhcPkgCmd=$fp_cv_matching_ghc_pkg -fi])# FP_PROG_GHC_PKG +GhcPkgCmd=$fp_cv_matching_ghc_pkg +AC_SUBST([GhcPkgCmd]) +])# FP_PROG_GHC_PKG # FP_GCC_EXTRA_FLAGS @@ -1141,27 +1230,53 @@ case $fptools_cv_timer_create_works in esac ]) -# FP_ARG_GMP +# FP_ICONV # ------------- -AC_DEFUN([FP_ARG_GMP], +AC_DEFUN([FP_ICONV], [ -AC_ARG_WITH([gmp-includes], - [AC_HELP_STRING([--with-gmp-includes], - [directory containing gmp.h])], - [gmp_includes=$withval], - [gmp_includes=NONE]) - -AC_ARG_WITH([gmp-libraries], - [AC_HELP_STRING([--with-gmp-libraries], - [directory containing gmp library])], - [gmp_libraries=$withval], - [gmp_libraries=NONE]) -])# FP_ARG_GMP - -AC_DEFUN([CHECK_GMP], -[AC_REQUIRE([AC_PROG_CPP]) -AC_REQUIRE([AC_PROG_CC]) -]) + dnl-------------------------------------------------------------------- + dnl * Deal with arguments telling us iconv is somewhere odd + dnl-------------------------------------------------------------------- + + dnl Note: ICONV_LIB_DIRS and ICONV_INCLUDE_DIRS are not predefined + dnl to the empty string to allow them to be overridden from the + dnl environment. + + AC_ARG_WITH([iconv-includes], + [AC_HELP_STRING([--with-iconv-includes], + [directory containing iconv.h])], + [ICONV_INCLUDE_DIRS=$withval]) + + AC_ARG_WITH([iconv-libraries], + [AC_HELP_STRING([--with-iconv-libraries], + [directory containing iconv library])], + [ICONV_LIB_DIRS=$withval]) + + AC_SUBST(ICONV_INCLUDE_DIRS) + AC_SUBST(ICONV_LIB_DIRS) +])# FP_ICONV + +# FP_GMP +# ------------- +AC_DEFUN([FP_GMP], +[ + dnl-------------------------------------------------------------------- + dnl * Deal with arguments telling us gmp is somewhere odd + dnl-------------------------------------------------------------------- + + AC_ARG_WITH([gmp-includes], + [AC_HELP_STRING([--with-gmp-includes], + [directory containing gmp.h])], + [GMP_INCLUDE_DIRS=$withval]) + + AC_ARG_WITH([gmp-libraries], + [AC_HELP_STRING([--with-gmp-libraries], + [directory containing gmp library])], + [GMP_LIB_DIRS=$withval]) + + AC_SUBST(GMP_INCLUDE_DIRS) + AC_SUBST(GMP_LIB_DIRS) +])# FP_GMP # FP_CHECK_MACOSX_DEPLOYMENT_TARGET # --------------------------------- @@ -1196,43 +1311,49 @@ fi # Calculate absolute path to build tree # -------------------------------------------------------------- -AC_DEFUN([FP_FIND_ROOT],[ -AC_MSG_CHECKING(for path to top of build tree) +AC_DEFUN([FP_INTREE_GHC_PWD],[ +AC_MSG_NOTICE(Building in-tree ghc-pwd) + dnl This would be + dnl make -C utils/ghc-pwd clean && make -C utils/ghc-pwd + dnl except we don't want to have to know what make is called. Sigh. + rm -rf utils/ghc-pwd/dist-boot + mkdir utils/ghc-pwd/dist-boot + if ! "$WithGhc" -v0 -no-user-package-conf -hidir utils/ghc-pwd/dist-boot -odir utils/ghc-pwd/dist-boot -stubdir utils/ghc-pwd/dist-boot --make utils/ghc-pwd/Main.hs -o utils/ghc-pwd/dist-boot/ghc-pwd + then + AC_MSG_ERROR([Building ghc-pwd failed]) + fi -dnl This would be -dnl make -C utils/ghc-pwd clean && make -C utils/ghc-pwd -dnl except we don't want to have to know what make is called. Sigh. -if test ! -f utils/ghc-pwd/ghc-pwd && test ! -f utils/ghc-pwd/ghc-pwd.exe; then - cd utils/ghc-pwd - rm -f *.o - rm -f *.hi - rm -f ghc-pwd - rm -f ghc-pwd.exe - "$WithGhc" -v0 --make ghc-pwd -o ghc-pwd - cd ../.. -fi + GHC_PWD=utils/ghc-pwd/dist-boot/ghc-pwd +]) + +AC_DEFUN([FP_BINDIST_GHC_PWD],[ + GHC_PWD=utils/ghc-pwd/dist/build/tmp/ghc-pwd +]) -hardtop=`utils/ghc-pwd/ghc-pwd` +AC_DEFUN([FP_FIND_ROOT],[ +AC_MSG_CHECKING(for path to top of build tree) + hardtop=`$GHC_PWD` -if ! test -d "$hardtop"; then - AC_MSG_ERROR([cannot determine current directory]) -fi + dnl Remove common automounter nonsense + hardtop=`echo $hardtop | sed 's|^/tmp_mnt.*\(/local/.*\)$|\1|' | sed 's|^/tmp_mnt/|/|'` -dnl Remove common automounter nonsense -dnl -hardtop=`echo $hardtop | sed 's|^/tmp_mnt.*\(/local/.*\)$|\1|' | sed 's|^/tmp_mnt/|/|'` + if ! test -d "$hardtop"; then + AC_MSG_ERROR([cannot determine current directory]) + fi -AC_SUBST(hardtop) + dnl We don't support building in directories with spaces. + case "$hardtop" in + *' '*) + AC_MSG_ERROR([ + The build system does not support building in a directory + containing space characters. + Suggestion: move the build tree somewhere else.]) + ;; + esac -AC_MSG_RESULT(${hardtop}) + AC_SUBST(hardtop) -# We don't support building in directories with spaces. -case "$hardtop" in - *' '*) AC_MSG_ERROR([ - The build system does not support building in a directory containing - space characters. Suggestion: move the build tree somewhere else.]) - ;; -esac + AC_MSG_RESULT($hardtop) ]) # GHC_CONVERT_CPU(cpu, target_var)