diff --git a/configure.ac b/configure.ac index 35a4e43dce3bdd91889648436dd2c3660c9bffce..1cbd5510dff29f0492f98c81a4c9a8ff0944c5bf 100644 --- a/configure.ac +++ b/configure.ac @@ -1131,7 +1131,14 @@ FP_FIND_LIBZSTD dnl ** Other RTS features dnl -------------------------------------------------------------- FP_FIND_LIBDW +AC_SUBST(UseLibdw) +AC_SUBST(LibdwLibDir) +AC_SUBST(LibdwIncludeDir) + FP_FIND_LIBNUMA +AC_SUBST(UseLibNuma) +AC_SUBST(LibNumaLibDir) +AC_SUBST(LibNumaIncludeDir) dnl ** Documentation dnl -------------------------------------------------------------- @@ -1282,17 +1289,15 @@ echo "\ cabal-install : $CABAL " -USING_LIBNUMA=$(if [ "$HaveLibNuma" = "1" ]; then echo "YES"; else echo "NO"; fi;) USING_LIBZSTD=$(if [ "$HaveLibZstd" = "1" ]; then echo "YES"; else echo "NO"; fi;) STATIC_LIBZSTD=$(if [ "$StaticLibZstd" = "1" ]; then echo "YES"; else echo "NO"; fi;) -USING_LIBDW=$(if [ "$USE_LIBDW" = "1" ]; then echo "YES"; else echo "NO"; fi;) echo "\ Using optional dependencies: - libnuma : $USING_LIBNUMA + libnuma : $UseLibNuma libzstd : $USING_LIBZSTD statically linked? : $STATIC_LIBZSTD - libdw : $USING_LIBDW + libdw : $UseLibdw Using LLVM tools llc : $LlcCmd diff --git a/m4/fp_find_libdw.m4 b/m4/fp_find_libdw.m4 index 29008408d792d41b48dd1efd744442cf9d88c5c2..22f24ab0232f4184685a115c4388cac6ae31c20f 100644 --- a/m4/fp_find_libdw.m4 +++ b/m4/fp_find_libdw.m4 @@ -1,6 +1,11 @@ -dnl ** Have libdw? -dnl -------------------------------------------------------------- -dnl Sets UseLibdw. +# FP_FIND_LIBDW +# -------------------------------------------------------------- +# Should we used libdw? (yes, no, or auto.) +# +# Sets variables: +# - UseLibdw: [YES|NO] +# - LibdwLibDir: optional path +# - LibdwIncludeDir: optional path AC_DEFUN([FP_FIND_LIBDW], [ AC_ARG_WITH([libdw-libraries], @@ -12,8 +17,6 @@ AC_DEFUN([FP_FIND_LIBDW], LIBDW_LDFLAGS="-L$withval" ]) - AC_SUBST(LibdwLibDir) - AC_ARG_WITH([libdw-includes], [AS_HELP_STRING([--with-libdw-includes=ARG], [Find includes for libdw in ARG [default=system default]]) @@ -23,32 +26,28 @@ AC_DEFUN([FP_FIND_LIBDW], LIBDW_CFLAGS="-I$withval" ]) - AC_SUBST(LibdwIncludeDir) + AC_ARG_ENABLE(dwarf-unwind, + [AS_HELP_STRING([--enable-dwarf-unwind], + [Enable DWARF unwinding support in the runtime system via elfutils' libdw [default=no]])], + [], + [enable_dwarf_unwind=no]) UseLibdw=NO - USE_LIBDW=0 - AC_ARG_ENABLE(dwarf-unwind, - [AS_HELP_STRING([--enable-dwarf-unwind], - [Enable DWARF unwinding support in the runtime system via elfutils' libdw [default=no]])]) - if test "$enable_dwarf_unwind" = "yes" ; then + if test "$enable_dwarf_unwind" != "no" ; then CFLAGS2="$CFLAGS" CFLAGS="$LIBDW_CFLAGS $CFLAGS" LDFLAGS2="$LDFLAGS" LDFLAGS="$LIBDW_LDFLAGS $LDFLAGS" - AC_CHECK_LIB(dw, dwfl_attach_state, - [AC_CHECK_HEADERS([elfutils/libdw.h], [break], []) - UseLibdw=YES], - [AC_MSG_ERROR([Cannot find system libdw (required by --enable-dwarf-unwind)])]) + AC_CHECK_HEADER([elfutils/libdwfl.h], + [AC_CHECK_LIB(dw, dwfl_attach_state, + [UseLibdw=YES])]) + + if test "x:$enable_dwarf_unwind:$UseLibdw" = "x:yes:NO" ; then + AC_MSG_ERROR([Cannot find system libdw (required by --enable-dwarf-unwind)]) + fi CFLAGS="$CFLAGS2" LDFLAGS="$LDFLAGS2" fi - - AC_SUBST(UseLibdw) - if test $UseLibdw = "YES" ; then - USE_LIBDW=1 - fi - AC_DEFINE_UNQUOTED([USE_LIBDW], [$USE_LIBDW], [Set to 1 to use libdw]) ]) - diff --git a/m4/fp_find_libnuma.m4 b/m4/fp_find_libnuma.m4 index 4f55453f8e32f9d5e254ee8e56ab4bbc4b540eae..83930954f475fa877a63460379a8f37b90018834 100644 --- a/m4/fp_find_libnuma.m4 +++ b/m4/fp_find_libnuma.m4 @@ -1,7 +1,13 @@ +# FP_FIND_LIBNUMA +# -------------------------------------------------------------- +# Should we used libnuma? (yes, no, or auto.) +# +# Sets variables: +# - UseLibNuma: [YES|NO] +# - LibNumaLibDir: optional path +# - LibNumaIncludeDir: optional path AC_DEFUN([FP_FIND_LIBNUMA], [ - dnl ** Have libnuma? - dnl -------------------------------------------------------------- AC_ARG_WITH([libnuma-libraries], [AS_HELP_STRING([--with-libnuma-libraries=ARG], [Find libraries for libnuma in ARG [default=system default]]) @@ -11,8 +17,6 @@ AC_DEFUN([FP_FIND_LIBNUMA], LIBNUMA_LDFLAGS="-L$withval" ]) - AC_SUBST(LibNumaLibDir) - AC_ARG_WITH([libnuma-includes], [AS_HELP_STRING([--with-libnuma-includes=ARG], [Find includes for libnuma in ARG [default=system default]]) @@ -22,14 +26,14 @@ AC_DEFUN([FP_FIND_LIBNUMA], LIBNUMA_CFLAGS="-I$withval" ]) - AC_SUBST(LibNumaIncludeDir) - - HaveLibNuma=0 AC_ARG_ENABLE(numa, - [AS_HELP_STRING([--enable-numa], - [Enable NUMA memory policy and thread affinity support in the - runtime system via numactl's libnuma [default=auto]])]) + [AS_HELP_STRING([--enable-numa], + [Enable NUMA memory policy and thread affinity support in the + runtime system via numactl's libnuma [default=auto]])], + [], + [enable_numa=auto]) + UseLibNuma=NO if test "$enable_numa" != "no" ; then CFLAGS2="$CFLAGS" CFLAGS="$LIBNUMA_CFLAGS $CFLAGS" @@ -38,23 +42,14 @@ AC_DEFUN([FP_FIND_LIBNUMA], AC_CHECK_HEADERS([numa.h numaif.h]) - if test "$ac_cv_header_numa_h$ac_cv_header_numaif_h" = "yesyes" ; then - AC_CHECK_LIB(numa, numa_available,HaveLibNuma=1) + if test "$ac_cv_header_numa_h:$ac_cv_header_numaif_h" = "yes:yes" ; then + AC_CHECK_LIB([numa], [numa_available], [UseLibNuma=YES]) fi - if test "$enable_numa:$HaveLibNuma" = "yes:0" ; then - AC_MSG_ERROR([Cannot find system libnuma (required by --enable-numa)]) + if test "$enable_numa:$UseLibNuma" = "yes:NO" ; then + AC_MSG_ERROR([Cannot find system libnuma (required by --enable-numa)]) fi CFLAGS="$CFLAGS2" LDFLAGS="$LDFLAGS2" fi - - AC_DEFINE_UNQUOTED([HAVE_LIBNUMA], [$HaveLibNuma], [Define to 1 if you have libnuma]) - if test $HaveLibNuma = "1" ; then - AC_SUBST([UseLibNuma],[YES]) - AC_SUBST([CabalHaveLibNuma],[True]) - else - AC_SUBST([UseLibNuma],[NO]) - AC_SUBST([CabalHaveLibNuma],[False]) - fi ]) diff --git a/rts/configure.ac b/rts/configure.ac index 3284a1d5d9c88815e10c45459a4b44ab54c04cc9..a4c0dc2a234b376362183d31e6ba58f67502e02d 100644 --- a/rts/configure.ac +++ b/rts/configure.ac @@ -33,6 +33,20 @@ GHC_CONVERT_PLATFORM_PARTS([host], [Host]) FPTOOLS_SET_PLATFORM_VARS([host], [Host]) FPTOOLS_SET_HASKELL_PLATFORM_VARS([Host]) +dnl ** Other RTS features +dnl -------------------------------------------------------------- +AC_DEFINE_UNQUOTED([USE_LIBDW], [$CABAL_FLAG_libdw], [Set to 1 to use libdw]) + +AC_DEFINE_UNQUOTED([HAVE_LIBNUMA], [$CABAL_FLAG_libnuma], [Define to 1 if you have libnuma]) +dnl We should have these headers if the flag is set, but check anyways +dnl in order to define `HAVE_*` macros. +AS_IF( + [test "$CABAL_FLAG_libnuma" = 1], + [AC_CHECK_HEADERS([numa.h numaif.h])]) + +dnl ** Write config files +dnl -------------------------------------------------------------- + AC_OUTPUT dnl ######################################################################