Commit 60ec8f74 authored by Ben Gamari's avatar Ben Gamari Committed by Ben Gamari

distrib/configure: Fail if we can't detect machine's word size

This is a sure sign that something is terribly wrong.

We also now verify that the word size that the binary distribution
expects matches the word size produced by the local target toolchain.

Finally we rename WordSize to TargetWordSize, since non-host/target
qualified quantities are terribly confusing.

Reviewers: austin, hvr, Phyx

Reviewed By: Phyx

Subscribers: Phyx, rwbarton, thomie, erikd

Differential Revision: https://phabricator.haskell.org/D3711
parent 1ee49cb1
......@@ -875,8 +875,8 @@ FP_CHECK_SIZEOF_AND_ALIGNMENT(uint64_t)
dnl for use in settings.in
WordSize=$ac_cv_sizeof_void_p
AC_SUBST(WordSize)
TargetWordSize=$ac_cv_sizeof_void_p
AC_SUBST(TargetWordSize)
FP_CHECK_FUNC([WinExec],
[@%:@include <windows.h>], [WinExec("",0)])
......
......@@ -134,10 +134,20 @@ dnl May need to use gcc to find platform details.
dnl --------------------------------------------------------------
FPTOOLS_SET_HASKELL_PLATFORM_VARS
dnl WordSize for settings.in
dnl TargetWordSize for settings.in
AC_CHECK_SIZEOF(void *, 4)
WordSize=$ac_cv_sizeof_void_p
AC_SUBST(WordSize)
if test "x$ac_cv_sizeof_void_p" = "x0"; then
AC_MSG_ERROR([Failed to determine machine word size. Does your toolchain actually work?])
fi
dnl Check that the toolchain we have is consistent with what the compiler expects
if test "x$ac_cv_sizeof_void_p" != "x@TargetWordSize@"; then
AC_MSG_ERROR([This binary distribution produces binaries for a target with
word size of @TargetWordSize@, but your target toolchain produces binaries
with a word size of $ac_cv_sizeof_void_p. Are you sure your toolchain
targets the intended target platform of this compiler?])
fi
TargetWordSize=$ac_cv_sizeof_void_p
AC_SUBST(TargetWordSize)
#
dnl ** how to invoke `ar' and `ranlib'
......
......@@ -22,7 +22,7 @@
("cross compiling", "@CrossCompiling@"),
("target os", "@HaskellTargetOs@"),
("target arch", "@HaskellTargetArch@"),
("target word size", "@WordSize@"),
("target word size", "@TargetWordSize@"),
("target has GNU nonexec stack", "@HaskellHaveGnuNonexecStack@"),
("target has .ident directive", "@HaskellHaveIdentDirective@"),
("target has subsections via symbols", "@HaskellHaveSubsectionsViaSymbols@"),
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment