summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBryce Harrington <bryce@osg.samsung.com>2014-09-23 12:40:25 -0700
committerBryce Harrington <bryce@osg.samsung.com>2014-09-23 12:40:25 -0700
commit7cfebce15228c88ee122edb8ba575f9a609e36f4 (patch)
tree08d484725ad02f1283f5e061f8ed69cf497e8f27
parent9a19ef185884da1e7d5344b301f48aa2ba0f88b6 (diff)
downloadcairo-7cfebce15228c88ee122edb8ba575f9a609e36f4.tar.gz
build: Fix float endian configure test when using clang -O4
When using clang -O4, the compiled test object is output in bitcode format rather than as an ELF object, so when we grep the test value from the object it fails. To work around this, go ahead and link the test object into an executable, and then grep against this native binary instead of the compiler's intermediary object. We need to add __attribute__((used)) to ensure the d variable doesn't get optimized out during linking, since it's not referenced in the test's main(). Patch authored by cmuelle8 <abendstund@gmail.com> Reviewed-by: Bryce Harrington <b.harrington@samsung.com> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=63310
-rw-r--r--build/aclocal.float.m49
1 files changed, 5 insertions, 4 deletions
diff --git a/build/aclocal.float.m4 b/build/aclocal.float.m4
index 18ec31618..bc0a91c60 100644
--- a/build/aclocal.float.m4
+++ b/build/aclocal.float.m4
@@ -24,16 +24,17 @@ AC_DEFUN([AX_C_FLOAT_WORDS_BIGENDIAN],
# is found, the user is instructed to specify the ordering.
ax_cv_c_float_words_bigendian=unknown
-AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
+AC_LINK_IFELSE([AC_LANG_SOURCE([[
-double d = 90904234967036810337470478905505011476211692735615632014797120844053488865816695273723469097858056257517020191247487429516932130503560650002327564517570778480236724525140520121371739201496540132640109977779420565776568942592.0;
+double d __attribute__((used)) = 90904234967036810337470478905505011476211692735615632014797120844053488865816695273723469097858056257517020191247487429516932130503560650002327564517570778480236724525140520121371739201496540132640109977779420565776568942592.0;
+int main() { return 0; }
]])], [
-if strings - conftest.$ac_objext | grep noonsees >/dev/null ; then
+if strings - conftest | grep noonsees >/dev/null ; then
ax_cv_c_float_words_bigendian=yes
fi
-if strings - conftest.$ac_objext | grep seesnoon >/dev/null ; then
+if strings - conftest | grep seesnoon >/dev/null ; then
if test "$ax_cv_c_float_words_bigendian" = unknown; then
ax_cv_c_float_words_bigendian=no
else