[Git][ghc/ghc][master] 9 commits: Move apple compat check to RTS configure

Marge Bot (@marge-bot) gitlab at gitlab.haskell.org
Thu Oct 12 14:31:42 UTC 2023



Marge Bot pushed to branch master at Glasgow Haskell Compiler / GHC


Commits:
c74c4f00 by John Ericson at 2023-10-12T10:31:13-04:00
Move apple compat check to RTS configure

- - - - -
c80778ea by John Ericson at 2023-10-12T10:31:13-04:00
Move clock/timer fun checks to RTS configure

Actual library check (which will set the Cabal flag) is left in the
top-level configure for now.

Progress towards #17191

- - - - -
7f9f2686 by John Ericson at 2023-10-12T10:31:13-04:00
Move visibility and "musttail" annotation checks to the RTS configure

All of this should boil down to `AC_DEFINE` not `AC_SUBST`, so it
belongs in the RTS configure and should be safe to move without
modification.

Progress towards #17191

- - - - -
ffb3efe6 by John Ericson at 2023-10-12T10:31:13-04:00
Move leading underscore checks to RTS configure

`CabalLeadingUnderscore` is done via Hadrian already, so we can stop
`AC_SUBST`ing it completely.

- - - - -
25fa4b02 by John Ericson at 2023-10-12T10:31:13-04:00
Move alloca, fork, const, and big endian checks to RTS configure

All of this should boil down to `AC_DEFINE` not `AC_SUBST`, so it
belongs in the RTS configure and should be safe to move without
modification.

- - - - -
5170f42a by John Ericson at 2023-10-12T10:31:13-04:00
Move libdl check to RTS configure

- - - - -
ea7a1447 by John Ericson at 2023-10-12T10:31:13-04:00
Adjust `FP_FIND_LIBFFI`

Just set vars, and `AC_SUBST` in top-level configure.

Don't define `HAVE_SYSTEM_LIBFFI` because nothing is using it. It hasn't
be in used since 3609340743c1b25fdfd0e18b1670dac54c8d8623 (part of the
make build system).

- - - - -
f399812c by John Ericson at 2023-10-12T10:31:13-04:00
Split BFD support to RTS configure

The flag is still in the top-level configure, but the other checks
(which define various macros --- important) are in the RTS configure.

- - - - -
f64f44e9 by John Ericson at 2023-10-12T10:31:13-04:00
Split libm check between top level and RTS

- - - - -


4 changed files:

- configure.ac
- m4/fp_bfd_support.m4
- m4/fp_find_libffi.m4
- rts/configure.ac


Changes:

=====================================
configure.ac
=====================================
@@ -951,18 +951,13 @@ dnl    Keep that check as early as possible.
 dnl    as we need to know whether we need libm
 dnl    for math functions or not
 dnl    (see https://gitlab.haskell.org/ghc/ghc/issues/3730)
-AC_CHECK_LIB(m, atan, HaveLibM=YES, HaveLibM=NO)
-if test $HaveLibM = YES
-then
-  AC_DEFINE([HAVE_LIBM], [1], [Define to 1 if you need to link with libm])
-  AC_SUBST([UseLibm],[YES])
-else
-  AC_SUBST([UseLibm],[NO])
-fi
-TargetHasLibm=$HaveLibM
+AC_CHECK_LIB(m, atan, UseLibm=YES, UseLibm=NO)
+AC_SUBST([UseLibm])
+TargetHasLibm=$UseLibm
 AC_SUBST(TargetHasLibm)
 
-FP_BFD_SUPPORT
+FP_BFD_FLAG
+AC_SUBST([UseLibbfd])
 
 dnl ################################################################
 dnl Check for libraries
@@ -970,70 +965,20 @@ dnl ################################################################
 
 FP_FIND_LIBFFI
 AC_SUBST(UseSystemLibFFI)
+AC_SUBST(FFILibDir)
+AC_SUBST(FFIIncludeDir)
 
 dnl ** check whether we need -ldl to get dlopen()
-AC_CHECK_LIB([dl], [dlopen])
-AC_CHECK_LIB([dl], [dlopen], HaveLibdl=YES, HaveLibdl=NO)
-AC_SUBST([UseLibdl],[$HaveLibdl])
-dnl ** check whether we have dlinfo
-AC_CHECK_FUNCS([dlinfo])
-
-dnl --------------------------------------------------
-dnl * Miscellaneous feature tests
-dnl --------------------------------------------------
-
-dnl ** can we get alloca?
-AC_FUNC_ALLOCA
-
-dnl ** working vfork?
-AC_FUNC_FORK
-
-dnl ** determine whether or not const works
-AC_C_CONST
-
-dnl ** are we big endian?
-AC_C_BIGENDIAN
-FPTOOLS_FLOAT_WORD_ORDER_BIGENDIAN
+AC_CHECK_LIB([dl], [dlopen], UseLibdl=YES, UseLibdl=NO)
+AC_SUBST([UseLibdl])
 
 dnl ** check for leading underscores in symbol names
 FP_LEADING_UNDERSCORE
 AC_SUBST([LeadingUnderscore], [`echo $fptools_cv_leading_underscore | sed 'y/yesno/YESNO/'`])
-if test x"$fptools_cv_leading_underscore" = xyes; then
-   AC_SUBST([CabalLeadingUnderscore],[True])
-   AC_DEFINE([LEADING_UNDERSCORE], [1], [Define to 1 if C symbols have a leading underscore added by the compiler.])
-else
-   AC_SUBST([CabalLeadingUnderscore],[False])
-fi
-
-FP_VISIBILITY_HIDDEN
-
-FP_MUSTTAIL
 
 dnl ** check for librt
-AC_CHECK_LIB([rt], [clock_gettime])
-AC_CHECK_LIB([rt], [clock_gettime], HaveLibrt=YES, HaveLibrt=NO)
-if test $HaveLibrt = YES
-then
-  AC_SUBST([UseLibrt],[YES])
-else
-  AC_SUBST([UseLibrt],[NO])
-fi
-AC_CHECK_FUNCS(clock_gettime timer_settime)
-FP_CHECK_TIMER_CREATE
-
-dnl ** check for Apple's "interesting" long double compatibility scheme
-AC_MSG_CHECKING(for printf\$LDBLStub)
-AC_LINK_IFELSE([AC_LANG_CALL([], [printf\$LDBLStub])],
-    [
-        AC_MSG_RESULT(yes)
-        AC_DEFINE([HAVE_PRINTF_LDBLSTUB],[1],
-            [Define to 1 if we have printf$LDBLStub (Apple Mac OS >= 10.4, PPC).])
-    ],
-    [
-        AC_MSG_RESULT(no)
-        AC_DEFINE([HAVE_PRINTF_LDBLSTUB],[0],
-            [Define to 1 if we have printf$LDBLStub (Apple Mac OS >= 10.4, PPC).])
-    ])
+AC_CHECK_LIB([rt], [clock_gettime], UseLibrt=YES, UseLibrt=NO)
+AC_SUBST([UseLibrt])
 
 FP_CHECK_PTHREAD_LIB
 AC_SUBST([UseLibpthread])


=====================================
m4/fp_bfd_support.m4
=====================================
@@ -1,49 +1,59 @@
 # FP_BFD_SUPPORT()
 # ----------------------
-# whether to use libbfd for debugging RTS
-AC_DEFUN([FP_BFD_SUPPORT], [
-    HaveLibbfd=NO
-    AC_ARG_ENABLE(bfd-debug,
-        [AS_HELP_STRING([--enable-bfd-debug],
-              [Enable symbol resolution for -debug rts ('+RTS -Di') via binutils' libbfd [default=no]])],
-        [
-            # don't pollute general LIBS environment
-            save_LIBS="$LIBS"
-            AC_CHECK_HEADERS([bfd.h])
-            dnl ** check whether this machine has BFD and libiberty installed (used for debugging)
-            dnl    the order of these tests matters: bfd needs libiberty
-            AC_CHECK_LIB(iberty, xmalloc)
-            dnl 'bfd_init' is a rare non-macro in libbfd
-            AC_CHECK_LIB(bfd,    bfd_init)
+# Whether to use libbfd for debugging RTS
+#
+# Sets:
+#   UseLibbfd: [YES|NO]
+AC_DEFUN([FP_BFD_FLAG], [
+  UseLibbfd=NO
+  AC_ARG_ENABLE(bfd-debug,
+    [AS_HELP_STRING([--enable-bfd-debug],
+          [Enable symbol resolution for -debug rts ('+RTS -Di') via binutils' libbfd [default=no]])],
+    [UseLibbfd=YES],
+    [UseLibbfd=NO])
+])
+
+# FP_WHEN_ENABLED_BFD
+# ----------------------
+# Checks for libraries in the default way, which will define various
+# `HAVE_*` macros.
+AC_DEFUN([FP_WHEN_ENABLED_BFD], [
+  # don't pollute general LIBS environment
+  save_LIBS="$LIBS"
+  AC_CHECK_HEADERS([bfd.h])
+  dnl ** check whether this machine has BFD and libiberty installed (used for debugging)
+  dnl    the order of these tests matters: bfd needs libiberty
+  AC_CHECK_LIB(iberty, xmalloc)
+  dnl 'bfd_init' is a rare non-macro in libbfd
+  AC_CHECK_LIB(bfd,    bfd_init)
 
-            AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <bfd.h>]],
-                        [[
-                                /* mimic our rts/Printer.c */
-                                bfd* abfd;
-                                const char * name;
-                                char **matching;
+  AC_LINK_IFELSE(
+    [AC_LANG_PROGRAM(
+      [[#include <bfd.h>]],
+      [[
+        /* mimic our rts/Printer.c */
+        bfd* abfd;
+        const char * name;
+        char **matching;
 
-                                name = "some.executable";
-                                bfd_init();
-                                abfd = bfd_openr(name, "default");
-                                bfd_check_format_matches (abfd, bfd_object, &matching);
-                                {
-                                    long storage_needed;
-                                    storage_needed = bfd_get_symtab_upper_bound (abfd);
-                                }
-                                {
-                                    asymbol **symbol_table;
-                                    long number_of_symbols;
-                                    symbol_info info;
+        name = "some.executable";
+        bfd_init();
+        abfd = bfd_openr(name, "default");
+        bfd_check_format_matches (abfd, bfd_object, &matching);
+        {
+            long storage_needed;
+            storage_needed = bfd_get_symtab_upper_bound (abfd);
+        }
+        {
+            asymbol **symbol_table;
+            long number_of_symbols;
+            symbol_info info;
 
-                                    number_of_symbols = bfd_canonicalize_symtab (abfd, symbol_table);
-                                    bfd_get_symbol_info(abfd,symbol_table[0],&info);
-                                }
-                        ]])],
-                        HaveLibbfd=YES,dnl bfd seems to work
-                        [AC_MSG_ERROR([can't use 'bfd' library])])
-            LIBS="$save_LIBS"
-        ]
-    )
-    AC_SUBST([UseLibbfd],[$HaveLibbfd])
+            number_of_symbols = bfd_canonicalize_symtab (abfd, symbol_table);
+            bfd_get_symbol_info(abfd,symbol_table[0],&info);
+        }
+      ]])],
+    [], dnl bfd seems to work
+    [AC_MSG_ERROR([can't use 'bfd' library])])
+  LIBS="$save_LIBS"
 ])


=====================================
m4/fp_find_libffi.m4
=====================================
@@ -1,6 +1,11 @@
-dnl ** Have libffi?
-dnl --------------------------------------------------------------
-dnl Sets UseSystemLibFFI.
+# FP_FIND_LIBFFI
+# --------------------------------------------------------------
+# Should we used libffi? (yes or no)
+#
+# Sets variables:
+#   - UseSystemLibFFI: [YES|NO]
+#   - FFILibDir: optional path
+#   - FFIIncludeDir: optional path
 AC_DEFUN([FP_FIND_LIBFFI],
 [
   # system libffi
@@ -28,8 +33,6 @@ AC_DEFUN([FP_FIND_LIBFFI],
    fi
   ])
 
-  AC_SUBST(FFIIncludeDir)
-
   AC_ARG_WITH([ffi-libraries],
   [AS_HELP_STRING([--with-ffi-libraries=ARG],
     [Find libffi in ARG [default=system default]])
@@ -42,8 +45,6 @@ AC_DEFUN([FP_FIND_LIBFFI],
    fi
   ])
 
-  AC_SUBST(FFILibDir)
-
   AS_IF([test "$UseSystemLibFFI" = "YES"], [
    CFLAGS2="$CFLAGS"
    CFLAGS="$LIBFFI_CFLAGS $CFLAGS"
@@ -63,7 +64,7 @@ AC_DEFUN([FP_FIND_LIBFFI],
    AC_CHECK_LIB(ffi, ffi_call,
     [AC_CHECK_HEADERS(
       [ffi.h],
-      [AC_DEFINE([HAVE_SYSTEM_LIBFFI], [1], [Define to 1 if you have libffi.])],
+      [],
       [AC_MSG_ERROR([Cannot find ffi.h for system libffi])]
      )],
     [AC_MSG_ERROR([Cannot find system libffi])]


=====================================
rts/configure.ac
=====================================
@@ -33,6 +33,70 @@ GHC_CONVERT_PLATFORM_PARTS([host], [Host])
 FPTOOLS_SET_PLATFORM_VARS([host], [Host])
 FPTOOLS_SET_HASKELL_PLATFORM_VARS([Host])
 
+dnl ** check for math library
+dnl    Keep that check as early as possible.
+dnl    as we need to know whether we need libm
+dnl    for math functions or not
+dnl    (see https://gitlab.haskell.org/ghc/ghc/issues/3730)
+AS_IF(
+  [test "$CABAL_FLAG_libm" = 1],
+  [AC_DEFINE([HAVE_LIBM], [1], [Define to 1 if you need to link with libm])])
+
+AS_IF([test "$CABAL_FLAG_libbfd" = 1], [FP_WHEN_ENABLED_BFD])
+
+dnl ################################################################
+dnl Check for libraries
+dnl ################################################################
+
+dnl ** check whether we need -ldl to get dlopen()
+AC_CHECK_LIB([dl], [dlopen])
+dnl ** check whether we have dlinfo
+AC_CHECK_FUNCS([dlinfo])
+
+dnl --------------------------------------------------
+dnl * Miscellaneous feature tests
+dnl --------------------------------------------------
+
+dnl ** can we get alloca?
+AC_FUNC_ALLOCA
+
+dnl ** working vfork?
+AC_FUNC_FORK
+
+dnl ** determine whether or not const works
+AC_C_CONST
+
+dnl ** are we big endian?
+AC_C_BIGENDIAN
+FPTOOLS_FLOAT_WORD_ORDER_BIGENDIAN
+
+dnl ** check for leading underscores in symbol names
+if test "$CABAL_FLAG_leading_underscore" = 1; then
+   AC_DEFINE([LEADING_UNDERSCORE], [1], [Define to 1 if C symbols have a leading underscore added by the compiler.])
+fi
+
+FP_VISIBILITY_HIDDEN
+
+FP_MUSTTAIL
+
+dnl ** check for librt
+AC_CHECK_FUNCS(clock_gettime timer_settime)
+FP_CHECK_TIMER_CREATE
+
+dnl ** check for Apple's "interesting" long double compatibility scheme
+AC_MSG_CHECKING(for printf\$LDBLStub)
+AC_LINK_IFELSE([AC_LANG_CALL([], [printf\$LDBLStub])],
+    [
+        AC_MSG_RESULT(yes)
+        AC_DEFINE([HAVE_PRINTF_LDBLSTUB],[1],
+            [Define to 1 if we have printf$LDBLStub (Apple Mac OS >= 10.4, PPC).])
+    ],
+    [
+        AC_MSG_RESULT(no)
+        AC_DEFINE([HAVE_PRINTF_LDBLSTUB],[0],
+            [Define to 1 if we have printf$LDBLStub (Apple Mac OS >= 10.4, PPC).])
+    ])
+
 FP_CHECK_PTHREAD_FUNCS
 
 dnl ** check for eventfd which is needed by the I/O manager



View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/compare/df81536f2e53abf521a05eb1e482a076f5849c21...f64f44e9ebbe4ed59265d91bd3b483c1fbcd5b0e

-- 
View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/compare/df81536f2e53abf521a05eb1e482a076f5849c21...f64f44e9ebbe4ed59265d91bd3b483c1fbcd5b0e
You're receiving this email because of your account on gitlab.haskell.org.


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/ghc-commits/attachments/20231012/47440b23/attachment-0001.html>


More information about the ghc-commits mailing list