Mac OS Catalina hadrian build fails with ld error
Summary
Building GHC in a fresh Mac OS X Catalina results in an error reported by LD:
...
ar: creating archive _build/stage1/libraries/libiserv/build/libHSlibiserv-8.8.4.a
/--------------------------------------------------------------------------------\
| Successfully built library 'libiserv' (Stage1, way v). |
| Library: _build/stage1/libraries/libiserv/build/libHSlibiserv-8.8.4.a |
| Library synopsis: Provides shared functionality between iserv and iserv-proxy. |
\--------------------------------------------------------------------------------/
| Run Ghc CompileHs Stage1: libraries/Cabal/Cabal/Distribution/SPDX/License.hs => _build/stage1/libraries/Cabal/Cabal/build/Distribution/SPDX/License.o
| Run Ghc CompileHs Stage1: libraries/Cabal/Cabal/Distribution/Fields/Lexer.hs => _build/stage1/libraries/Cabal/Cabal/build/Distribution/Fields/Lexer.o
| Run Ghc CompileHs Stage1: libraries/Cabal/Cabal/Distribution/SPDX.hs => _build/stage1/libraries/Cabal/Cabal/build/Distribution/SPDX.o
| Run Ghc CompileHs Stage1: libraries/Cabal/Cabal/Distribution/Simple/Utils/Json.hs => _build/stage1/libraries/Cabal/Cabal/build/Distribution/Simple/Utils/Json.o
| Run Ghc CompileHs Stage1: libraries/Cabal/Cabal/Distribution/Utils/MapAccum.hs => _build/stage1/libraries/Cabal/Cabal/build/Distribution/Utils/MapAccum.o
| Run Ghc FindHsDependencies Stage1: utils/iserv/src/Main.hs => _build/stage1/utils/iserv/.dependencies.mk
| Remove file _build/stage1/utils/iserv/.dependencies.mk.bak
| Run Ghc CompileHs Stage1: utils/iserv/src/Main.hs => _build/stage1/utils/iserv/build/Main.o
| Run Cc FindCDependencies Stage1: utils/iserv/cbits/iservmain.c => _build/stage1/utils/iserv/build/c/cbits/iservmain.o.d
| Run Ghc CompileCWithGhc Stage1: utils/iserv/cbits/iservmain.c => _build/stage1/utils/iserv/build/c/cbits/iservmain.o
| Run Ghc CompileHs Stage1: libraries/Cabal/Cabal/Distribution/Types/SourceRepo.hs => _build/stage1/libraries/Cabal/Cabal/build/Distribution/Types/SourceRepo.p_o
| Run Ghc LinkHs Stage1: _build/stage1/utils/iserv/build/c/cbits/iservmain.o (and 1 more) => _build/stage1/lib/bin/ghc-iserv
ld: unknown option: --export-dynamic
clang: error: linker command failed with exit code 1 (use -v to see invocation)
`gcc' failed in phase `Linker'. (Exit code: 1)
Error when running Shake build system:
at action, called at src/Rules.hs:35:19 in main:Rules
at need, called at src/Rules.hs:52:5 in main:Rules
* Depends on: _build/stage1/lib/bin/ghc-iserv
at cmd, called at src/Builder.hs:276:23 in main:Builder
* Raised the exception:
Development.Shake.cmd, system command failed
Command line: _build/stage0/bin/ghc -Wall -hisuf hi -osuf o -hcsuf hc -static -hide-all-packages -no-user-package-db '-package-db _build/stage1/lib/package.conf.d' '-package-id array-0.5.4.0' '-package-id base-4.13.0.0' '-package-id binary-0.8.7.0' '-package-id bytestring-0.10.10.1' '-package-id containers-0.6.2.1' '-package-id deepseq-1.4.4.0' '-package-id ghci-8.8.4' '-package-id libiserv-8.8.4' '-package-id unix-2.7.2.2' -i -i_build/stage1/utils/iserv/build -i_build/stage1/utils/iserv/build/iserv/autogen -iutils/iserv/src -Iincludes -I_build/generated -I_build/stage1/utils/iserv/build -I_build/stage1/utils/iserv/build/. -Iutils/iserv/. -I/Users/javier/ghc/_build/stage1/lib/x86_64-osx-ghc-8.8.4/unix-2.7.2.2/include -I/Users/javier/ghc/_build/stage1/lib/x86_64-osx-ghc-8.8.4/time-1.9.3/include -I/Users/javier/ghc/_build/stage1/lib/x86_64-osx-ghc-8.8.4/bytestring-0.10.10.1/include -I/Users/javier/ghc/_build/stage1/lib/x86_64-osx-ghc-8.8.4/base-4.13.0.0/include -I/Users/javier/ghc/_build/stage1/lib/x86_64-osx-ghc-8.8.4/rts-1.0/include -I_build/generated -optc-I_build/generated -optP-include -optP_build/stage1/utils/iserv/build/iserv/autogen/cabal_macros.h -outputdir _build/stage1/utils/iserv/build -no-auto-link-packages -no-hs-main -Wnoncanonical-monad-instances -optc-Wno-unknown-pragmas _build/stage1/utils/iserv/build/c/cbits/iservmain.o _build/stage1/utils/iserv/build/Main.o -o _build/stage1/lib/bin/ghc-iserv -O2 -H32m -no-hs-main -XHaskell2010 -ghcversion-file=/Users/javier/ghc/_build/generated/ghcversion.h -optl-Wl,--export-dynamic
Exit code: 1
Stderr:
ld: unknown option: --export-dynamic
clang: error: linker command failed with exit code 1 (use -v to see invocation)
`gcc' failed in phase `Linker'. (Exit code: 1)
Steps to reproduce
These were the literal steps followed on the Mac OS machine from a fresh installation:
xcode-select --install # follow the dialog
curl --proto '=https' --tlsv1.2 -sSf https://get-ghcup.haskell.org | sh #install ghc 8.8.4 and cabal 3.2.0.0
source .zshrc
git clone -b ghc-8.8 https://gitlab.haskell.org/ghc/ghc.git --recurse-submodules
cd ghc
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" # to install brew
brew install autoconf automake libtool
./boot
./hadrian/build.sh -c --integer-simple -j3 --docs=none
Environment
- GHC version used: GHC 8.8.4 installed via ghcup compiling ghc-8.8.4 from gitlab.
Optional:
- Operating System: Mac Os X Catalina
- System Architecture: x86_64