summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIan Lynagh <igloo@earth.li>2011-02-11 18:42:44 +0000
committerIan Lynagh <igloo@earth.li>2011-02-11 18:42:44 +0000
commit650d644055ff9cf23891611efb578e4fff07a1d9 (patch)
treefb1f911dc3a86843292f1223fb1e8a1aeafc2501
parent72c40bc5f2d193ebd89471f6e1f2a36b81042304 (diff)
downloadhaskell-650d644055ff9cf23891611efb578e4fff07a1d9.tar.gz
Fix platform detection in bindists
In a bindist, we generate files like the hsc2hs wrapper. This means we need to have the right values for the variables like CONF_GCC_LINKER_OPTS_STAGE1 which in turn means we need to know what platform we're on.
-rw-r--r--aclocal.m477
-rw-r--r--configure.ac67
-rw-r--r--distrib/configure.ac.in3
3 files changed, 81 insertions, 66 deletions
diff --git a/aclocal.m4 b/aclocal.m4
index 09ef225166..ae9e41ed34 100644
--- a/aclocal.m4
+++ b/aclocal.m4
@@ -4,6 +4,83 @@
# ensure we don't clash with any pre-supplied autoconf ones.
+# FPTOOLS_SET_PLATFORM_VARS
+# ----------------------------------
+# Set the platform variables
+AC_DEFUN([FPTOOLS_SET_PLATFORM_VARS],
+[
+ # If no argument was given for a configuration variable, then discard
+ # the guessed canonical system and use the configuration of the
+ # bootstrapping ghc. If an argument was given, map it from gnu format
+ # to ghc format.
+ #
+ # For why we do it this way, see: #3637, #1717, #2951
+ #
+ # In bindists, we haven't called AC_CANONICAL_{BUILD,HOST,TARGET}
+ # so this justs uses $bootstrap_target.
+
+ if test "$build_alias" = ""
+ then
+ if test "$bootstrap_target" != ""
+ then
+ build=$bootstrap_target
+ echo "Build platform inferred as: $build"
+ else
+ echo "Can't work out build platform"
+ exit 1
+ fi
+
+ BuildArch=`echo "$build" | sed 's/-.*//'`
+ BuildVendor=`echo "$build" | sed -e 's/.*-\(.*\)-.*/\1/'`
+ BuildOS=`echo "$build" | sed 's/.*-//'`
+ else
+ GHC_CONVERT_CPU([$build_cpu], [BuildArch])
+ GHC_CONVERT_VENDOR([$build_vendor], [BuildVendor])
+ GHC_CONVERT_OS([$build_os], [BuildOS])
+ fi
+
+ if test "$host_alias" = ""
+ then
+ if test "$bootstrap_target" != ""
+ then
+ host=$bootstrap_target
+ echo "Host platform inferred as: $host"
+ else
+ echo "Can't work out host platform"
+ exit 1
+ fi
+
+ HostArch=`echo "$host" | sed 's/-.*//'`
+ HostVendor=`echo "$host" | sed -e 's/.*-\(.*\)-.*/\1/'`
+ HostOS=`echo "$host" | sed 's/.*-//'`
+ else
+ GHC_CONVERT_CPU([$host_cpu], [HostArch])
+ GHC_CONVERT_VENDOR([$host_vendor], [HostVendor])
+ GHC_CONVERT_OS([$host_os], [HostOS])
+ fi
+
+ if test "$target_alias" = ""
+ then
+ if test "$bootstrap_target" != ""
+ then
+ target=$bootstrap_target
+ echo "Target platform inferred as: $target"
+ else
+ echo "Can't work out target platform"
+ exit 1
+ fi
+
+ TargetArch=`echo "$target" | sed 's/-.*//'`
+ TargetVendor=`echo "$target" | sed -e 's/.*-\(.*\)-.*/\1/'`
+ TargetOS=`echo "$target" | sed 's/.*-//'`
+ else
+ GHC_CONVERT_CPU([$target_cpu], [TargetArch])
+ GHC_CONVERT_VENDOR([$target_vendor], [TargetVendor])
+ GHC_CONVERT_OS([$target_os], [TargetOS])
+ fi
+])
+
+
# FPTOOLS_SET_C_LD_FLAGS
# ----------------------------------
# Set the C, LD and CPP flags for a given platform
diff --git a/configure.ac b/configure.ac
index 14a3ad154c..a0e0021496 100644
--- a/configure.ac
+++ b/configure.ac
@@ -200,72 +200,7 @@ AC_CANONICAL_BUILD
AC_CANONICAL_HOST
AC_CANONICAL_TARGET
-# If no argument was given for a configuration variable, then discard
-# the guessed canonical system and use the configuration of the
-# bootstrapping ghc. If an argument was given, map it from gnu format
-# to ghc format.
-#
-# For why we do it this way, see: #3637, #1717, #2951
-
-if test "$build_alias" = ""
-then
- if test "${WithGhc}" != ""
- then
- build=$bootstrap_target
- echo "Build platform inferred as: $build"
- else
- echo "Can't work out build platform"
- exit 1
- fi
-
- BuildArch=`echo "$build" | sed 's/-.*//'`
- BuildVendor=`echo "$build" | sed -e 's/.*-\(.*\)-.*/\1/'`
- BuildOS=`echo "$build" | sed 's/.*-//'`
-else
- GHC_CONVERT_CPU([$build_cpu], [BuildArch])
- GHC_CONVERT_VENDOR([$build_vendor], [BuildVendor])
- GHC_CONVERT_OS([$build_os], [BuildOS])
-fi
-
-if test "$host_alias" = ""
-then
- if test "${WithGhc}" != ""
- then
- host=$bootstrap_target
- echo "Host platform inferred as: $host"
- else
- echo "Can't work out host platform"
- exit 1
- fi
-
- HostArch=`echo "$host" | sed 's/-.*//'`
- HostVendor=`echo "$host" | sed -e 's/.*-\(.*\)-.*/\1/'`
- HostOS=`echo "$host" | sed 's/.*-//'`
-else
- GHC_CONVERT_CPU([$host_cpu], [HostArch])
- GHC_CONVERT_VENDOR([$host_vendor], [HostVendor])
- GHC_CONVERT_OS([$host_os], [HostOS])
-fi
-
-if test "$target_alias" = ""
-then
- if test "${WithGhc}" != ""
- then
- target=$bootstrap_target
- echo "Target platform inferred as: $target"
- else
- echo "Can't work out target platform"
- exit 1
- fi
-
- TargetArch=`echo "$target" | sed 's/-.*//'`
- TargetVendor=`echo "$target" | sed -e 's/.*-\(.*\)-.*/\1/'`
- TargetOS=`echo "$target" | sed 's/.*-//'`
-else
- GHC_CONVERT_CPU([$target_cpu], [TargetArch])
- GHC_CONVERT_VENDOR([$target_vendor], [TargetVendor])
- GHC_CONVERT_OS([$target_os], [TargetOS])
-fi
+FPTOOLS_SET_PLATFORM_VARS
exeext=''
soext='.so'
diff --git a/distrib/configure.ac.in b/distrib/configure.ac.in
index e17bcf52b4..d5aa2be68d 100644
--- a/distrib/configure.ac.in
+++ b/distrib/configure.ac.in
@@ -18,6 +18,9 @@ dnl--------------------------------------------------------------------
FP_GMP
+bootstrap_target=`ghc/stage2/build/tmp/ghc-stage2 +RTS --info | grep '^ ,("Target platform"' | sed -e 's/.*, "//' -e 's/")//' | tr -d '\r'`
+FPTOOLS_SET_PLATFORM_VARS
+
#
dnl ** Check Perl installation **
#