[Git][ghc/ghc][wip/supersven/correctly_propagate_host-build-target] Only add flags if they are new
Sven Tennie pushed to branch wip/supersven/correctly_propagate_host-build-target at Glasgow Haskell Compiler / GHC Commits: 9ce6620f by Sven Tennie at 2026-03-25T17:01:40+01:00 Only add flags if they are new This prevents duplicated when the user already set the arguments in CXXFLAGS or CFLAGS. - - - - - 2 changed files: - utils/ghc-toolchain/src/GHC/Toolchain/Tools/Cpp.hs - utils/ghc-toolchain/src/GHC/Toolchain/Tools/Link.hs Changes: ===================================== utils/ghc-toolchain/src/GHC/Toolchain/Tools/Cpp.hs ===================================== @@ -61,7 +61,7 @@ findHsCpp progOpt cc = checking "for Haskell C preprocessor" $ do let rawHsCppProgram = addFlagIfNew "-E" foundHsCppProg -- Always try to add the Haskell-specific CPP flags, regardless of the user options hppArgs <- findHsCppArgs rawHsCppProgram - let hsCppProgram = over _prgFlags (++hppArgs) rawHsCppProgram + let hsCppProgram = foldr addFlagIfNew rawHsCppProgram (reverse hppArgs) return HsCpp{hsCppProgram} -- | Given a C preprocessor, figure out how it should be invoked to preprocess ===================================== utils/ghc-toolchain/src/GHC/Toolchain/Tools/Link.hs ===================================== @@ -345,30 +345,30 @@ addPlatformDepLinkFlags archOs cc ccLink0 = do -- -- On OpenSolaris uses gnu ld whereas SmartOS appears to use the Solaris -- implementation, which rather uses the -64 flag. - return $ ccLink2 & _prgFlags %++ "-m64" + return $ addFlagIfNew "-m64" ccLink2 ArchOS ArchAlpha _ -> -- For now, to suppress the gcc warning "call-clobbered -- register used for global register variable", we simply -- disable all warnings altogether using the -w flag. Oh well. - return $ ccLink2 & over _prgFlags (++["-w","-mieee","-D_REENTRANT"]) + return $ foldr addFlagIfNew ccLink2 (reverse ["-w","-mieee","-D_REENTRANT"]) -- ArchOS ArchHPPA? _ -> ArchOS ArchARM{} OSFreeBSD -> -- On arm/freebsd, tell gcc to generate Arm -- instructions (ie not Thumb). - return $ ccLink2 & _prgFlags %++ "-Wl,-z,noexecstack" + return $ addFlagIfNew "-Wl,-z,noexecstack" ccLink2 ArchOS ArchARM{} OSLinux -> -- On arm/linux and arm/android, tell gcc to generate Arm -- instructions (ie not Thumb). - return $ ccLink2 & _prgFlags %++ "-Wl,-z,noexecstack" + return $ addFlagIfNew "-Wl,-z,noexecstack" ccLink2 ArchOS ArchAArch64 OSFreeBSD -> - return $ ccLink2 & _prgFlags %++ "-Wl,-z,noexecstack" + return $ addFlagIfNew "-Wl,-z,noexecstack" ccLink2 ArchOS ArchAArch64 OSLinux -> - return $ ccLink2 & _prgFlags %++ "-Wl,-z,noexecstack" + return $ addFlagIfNew "-Wl,-z,noexecstack" ccLink2 ArchOS ArchAArch64 OSNetBSD -> - return $ ccLink2 & _prgFlags %++ "-Wl,-z,noexecstack" + return $ addFlagIfNew "-Wl,-z,noexecstack" ccLink2 ArchOS ArchPPC OSAIX -> -- We need `-D_THREAD_SAFE` to unlock the thread-local `errno`. - return $ ccLink2 & over _prgFlags (++["-D_THREAD_SAFE","-Wl,-bnotextro"]) + return $ foldr addFlagIfNew ccLink2 (reverse ["-D_THREAD_SAFE","-Wl,-bnotextro"]) _ -> return ccLink2 @@ -383,7 +383,7 @@ addOSMinGW32CcFlags archOs cc link -- See Note [Windows stack allocations]. checkFStackCheck :: Cc -> Program -> M Program checkFStackCheck cc link = checking "that -fstack-check works" $ do - let link' = link & _prgFlags %++ "-fstack-check" + let link' = addFlagIfNew "-fstack-check" link checkLinkWorks cc link' return link' @@ -393,7 +393,7 @@ addNoAsNeeded archOs cc ccLink | os <- archOS_OS archOs , osElfTarget os = checking "that --no-as-needed works" $ do - let ccLink' = over _prgFlags (++["-Wl,--no-as-needed"]) ccLink + let ccLink' = addFlagIfNew "-Wl,--no-as-needed" ccLink checkLinkWorks cc ccLink' return ccLink' | otherwise = return ccLink View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/commit/9ce6620f4254da92b848af3e1a3c750e... -- View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/commit/9ce6620f4254da92b848af3e1a3c750e... You're receiving this email because of your account on gitlab.haskell.org.
participants (1)
-
Sven Tennie (@supersven)