Properly account for libdw paths in make build system
authorBen Gamari <ben@smart-cactus.org>
Mon, 11 Nov 2019 23:49:09 +0000 (18:49 -0500)
committerMarge Bot <ben+marge-bot@smart-cactus.org>
Tue, 19 Nov 2019 16:56:21 +0000 (11:56 -0500)
Should finally fix #17255.

hadrian/src/Settings/Packages.hs
mk/config.mk.in
rts/ghc.mk
rts/package.conf.in

index 4d399ca..b0e012d 100644 (file)
@@ -207,6 +207,7 @@ rtsPackageArgs = package rts ? do
           [ arg "-Irts"
           , arg $ "-I" ++ path
           , flag WithLibdw ? if not (null libdwIncludeDir) then arg ("-I" ++ libdwIncludeDir) else mempty
+          , flag WithLibdw ? if not (null libdwLibraryDir) then arg ("-L" ++ libdwLibraryDir) else mempty
           , arg $ "-DRtsWay=\"rts_" ++ show way ++ "\""
           -- Set the namespace for the rts fs functions
           , arg $ "-DFS_NAMESPACE=rts"
@@ -222,6 +223,7 @@ rtsPackageArgs = package rts ? do
     let cArgs = mconcat
           [ rtsWarnings
           , flag UseSystemFfi ? arg ("-I" ++ ffiIncludeDir)
+          , flag WithLibdw ? arg ("-I" ++ libdwIncludeDir)
           , arg "-fomit-frame-pointer"
           -- RTS *must* be compiled with optimisations. The INLINE_HEADER macro
           -- requires that functions are inlined to work as expected. Inlining
@@ -319,13 +321,14 @@ rtsPackageArgs = package rts ? do
         , builder (Ghc CompileCWithGhc) ? map ("-optc" ++) <$> cArgs
         , builder Ghc ? ghcArgs
 
-          , builder HsCpp ? pure
+        , builder HsCpp ? pure
           [ "-DTOP="             ++ show top
           , "-DFFI_INCLUDE_DIR=" ++ show ffiIncludeDir
           , "-DFFI_LIB_DIR="     ++ show ffiLibraryDir
           , "-DFFI_LIB="         ++ show libffiName
-          , "-DLIBDW_LIB_DIR="     ++ show libdwLibraryDir ]
+          , "-DLIBDW_LIB_DIR="   ++ show libdwLibraryDir ]
 
+        , builder HsCpp ? flag WithLibdw ? arg "-DUSE_LIBDW"
         , builder HsCpp ? flag HaveLibMingwEx ? arg "-DHAVE_LIBMINGWEX" ]
 
 -- Compile various performance-critical pieces *without* -fPIC -dynamic
index eff6b36..41cd71c 100644 (file)
@@ -363,6 +363,7 @@ UseSystemLibFFI=@UseSystemLibFFI@
 FFILibDir=@FFILibDir@
 FFIIncludeDir=@FFIIncludeDir@
 
+UseLibdw=@UseLibdw@
 LibdwLibDir=@LibdwLibDir@
 LibdwIncludeDir=@LibdwIncludeDir@
 
index f25f2f9..dfff8df 100644 (file)
@@ -544,8 +544,10 @@ rts_PACKAGE_CPP_OPTS += '-DFFI_LIB="C$(LIBFFI_NAME)"'
 endif
 
 ifeq "$(UseLibdw)" "YES"
+rts_PACKAGE_CPP_OPTS += -DLIBDW_INCLUDE_DIR=$(LibdwIncludeDir)
 rts_PACKAGE_CPP_OPTS += -DLIBDW_LIB_DIR=$(LibdwLibDir)
 else
+rts_PACKAGE_CPP_OPTS += -DLIBDW_INCLUDE_DIR=
 rts_PACKAGE_CPP_OPTS += -DLIBDW_LIB_DIR=
 endif
 
index 93b664a..e4cb159 100644 (file)
@@ -67,7 +67,12 @@ extra-libraries:
 #if defined(INSTALLING)
 include-dirs:           INCLUDE_DIR FFI_INCLUDE_DIR
 #else /* !INSTALLING */
-include-dirs:           TOP"/rts/dist/build" TOP"/includes" TOP"/includes/dist-derivedconstants/header" FFI_INCLUDE_DIR TOP"/includes/dist-install/build"
+include-dirs:           TOP"/rts/dist/build"
+                        TOP"/includes"
+                        TOP"/includes/dist-derivedconstants/header"
+                        FFI_INCLUDE_DIR
+                        LIBDW_INCLUDE_DIR
+                        TOP"/includes/dist-install/build"
 #endif
 
 includes:               Stg.h