diff --git a/compiler/GHC/Driver/Pipeline.hs b/compiler/GHC/Driver/Pipeline.hs index 94d737d8d07d13fd9bf9021c9939d5336d858cc2..f0eadb239ffe6df5e693bd250025d8a8b59d7a8d 100644 --- a/compiler/GHC/Driver/Pipeline.hs +++ b/compiler/GHC/Driver/Pipeline.hs @@ -830,6 +830,12 @@ asPipeline use_cpp pipe_env hsc_env location input_fn = StopAs -> return Nothing _ -> Just <$> use (T_As use_cpp pipe_env hsc_env location input_fn) +lasPipeline :: P m => Bool -> PipeEnv -> HscEnv -> Maybe ModLocation -> FilePath -> m (Maybe ObjFile) +lasPipeline use_cpp pipe_env hsc_env location input_fn = + case stop_phase pipe_env of + StopAs -> return Nothing + _ -> Just <$> use (T_LlvmAs use_cpp pipe_env hsc_env location input_fn) + viaCPipeline :: P m => Phase -> PipeEnv -> HscEnv -> Maybe ModLocation -> FilePath -> m (Maybe FilePath) viaCPipeline c_phase pipe_env hsc_env location input_fn = do out_fn <- use (T_Cc c_phase pipe_env hsc_env location input_fn) @@ -853,7 +859,7 @@ llvmManglePipeline pipe_env hsc_env location llc_fn = do if gopt Opt_NoLlvmMangler (hsc_dflags hsc_env) then return llc_fn else use (T_LlvmMangle pipe_env hsc_env llc_fn) - asPipeline False pipe_env hsc_env location mangled_fn + lasPipeline False pipe_env hsc_env location mangled_fn cmmCppPipeline :: P m => PipeEnv -> HscEnv -> FilePath -> m (Maybe FilePath) cmmCppPipeline pipe_env hsc_env input_fn = do diff --git a/compiler/GHC/Driver/Pipeline/Execute.hs b/compiler/GHC/Driver/Pipeline/Execute.hs index 6718235af6d7b2a3183d044aaed7fecbb14ceeae..5b4ad24cd344c5d94925e1010c73d4cf7425409a 100644 --- a/compiler/GHC/Driver/Pipeline/Execute.hs +++ b/compiler/GHC/Driver/Pipeline/Execute.hs @@ -145,6 +145,8 @@ runPhase (T_LlvmOpt pipe_env hsc_env input_fn) = runLlvmOptPhase pipe_env hsc_env input_fn runPhase (T_LlvmLlc pipe_env hsc_env input_fn) = runLlvmLlcPhase pipe_env hsc_env input_fn +runPhase (T_LlvmAs cpp pipe_env hsc_env location input_fn) = do + runLlvmAsPhase cpp pipe_env hsc_env location input_fn runPhase (T_LlvmMangle pipe_env hsc_env input_fn) = runLlvmManglePhase pipe_env hsc_env input_fn runPhase (T_MergeForeign pipe_env hsc_env input_fn fos) = @@ -282,8 +284,9 @@ runLlvmOptPhase pipe_env hsc_env input_fn = do return output_fn -runAsPhase :: Bool -> PipeEnv -> HscEnv -> Maybe ModLocation -> FilePath -> IO FilePath -runAsPhase with_cpp pipe_env hsc_env location input_fn = do +-- Run either 'clang' or 'gcc' phases +runGenericAsPhase :: (Logger -> DynFlags -> [Option] -> IO ()) -> [Option] -> Bool -> PipeEnv -> HscEnv -> Maybe ModLocation -> FilePath -> IO FilePath +runGenericAsPhase run_as extra_opts with_cpp pipe_env hsc_env location input_fn = do let dflags = hsc_dflags hsc_env let logger = hsc_logger hsc_env @@ -303,7 +306,7 @@ runAsPhase with_cpp pipe_env hsc_env location input_fn = do includePathsQuoteImplicit cmdline_include_paths] let runAssembler inputFilename outputFilename = withAtomicRename outputFilename $ \temp_outputFilename -> - runAs + run_as logger dflags (local_includes ++ global_includes -- See Note [-fPIC for assembler] @@ -326,13 +329,24 @@ runAsPhase with_cpp pipe_env hsc_env location input_fn = do , GHC.SysTools.FileOption "" inputFilename , GHC.SysTools.Option "-o" , GHC.SysTools.FileOption "" temp_outputFilename - ]) + ] ++ extra_opts) debugTraceMsg logger 4 (text "Running the assembler") runAssembler input_fn output_fn return output_fn +-- Invoke `clang` to assemble a .S file produced by LLvm toolchain +runLlvmAsPhase :: Bool -> PipeEnv -> HscEnv -> Maybe ModLocation -> FilePath -> IO FilePath +runLlvmAsPhase = + runGenericAsPhase runLlvmAs [ GHC.SysTools.Option "-Wno-unused-command-line-argument" ] + +-- Invoke 'gcc' to assemble a .S file +runAsPhase :: Bool -> PipeEnv -> HscEnv -> Maybe ModLocation -> FilePath -> IO FilePath +runAsPhase = + runGenericAsPhase runAs [] + + -- Note [JS Backend .o file procedure] -- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ diff --git a/compiler/GHC/Driver/Pipeline/Phases.hs b/compiler/GHC/Driver/Pipeline/Phases.hs index 61337bad9fc4acc5b056cc579c352ad81a5289b5..279f75d1b0513da1980a1365da8076feaa270519 100644 --- a/compiler/GHC/Driver/Pipeline/Phases.hs +++ b/compiler/GHC/Driver/Pipeline/Phases.hs @@ -47,6 +47,7 @@ data TPhase res where T_ForeignJs :: PipeEnv -> HscEnv -> Maybe ModLocation -> FilePath -> TPhase FilePath T_LlvmOpt :: PipeEnv -> HscEnv -> FilePath -> TPhase FilePath T_LlvmLlc :: PipeEnv -> HscEnv -> FilePath -> TPhase FilePath + T_LlvmAs :: Bool -> PipeEnv -> HscEnv -> Maybe ModLocation -> FilePath -> TPhase FilePath T_LlvmMangle :: PipeEnv -> HscEnv -> FilePath -> TPhase FilePath T_MergeForeign :: PipeEnv -> HscEnv -> FilePath -> [FilePath] -> TPhase FilePath diff --git a/compiler/GHC/Driver/Session.hs b/compiler/GHC/Driver/Session.hs index 4eaa32657fc19c63025a8323cae150c7384d2efb..f04e1cd8ffaacd212c7be9cf05239cd146e30693 100644 --- a/compiler/GHC/Driver/Session.hs +++ b/compiler/GHC/Driver/Session.hs @@ -108,6 +108,7 @@ module GHC.Driver.Session ( sPgm_ranlib, sPgm_lo, sPgm_lc, + sPgm_las, sPgm_i, sOpt_L, sOpt_P, @@ -136,10 +137,10 @@ module GHC.Driver.Session ( extraGccViaCFlags, globalPackageDatabasePath, pgm_L, pgm_P, pgm_F, pgm_c, pgm_cxx, pgm_cpp, pgm_a, pgm_l, pgm_lm, pgm_T, pgm_windres, pgm_ar, - pgm_ranlib, pgm_lo, pgm_lc, pgm_i, + pgm_ranlib, pgm_lo, pgm_lc, pgm_las, pgm_i, opt_L, opt_P, opt_F, opt_c, opt_cxx, opt_a, opt_l, opt_lm, opt_i, opt_P_signature, - opt_windres, opt_lo, opt_lc, + opt_windres, opt_lo, opt_lc, opt_las, updatePlatformConstants, -- ** Manipulating DynFlags @@ -416,6 +417,8 @@ pgm_lo :: DynFlags -> (String,[Option]) pgm_lo dflags = toolSettings_pgm_lo $ toolSettings dflags pgm_lc :: DynFlags -> (String,[Option]) pgm_lc dflags = toolSettings_pgm_lc $ toolSettings dflags +pgm_las :: DynFlags -> (String,[Option]) +pgm_las dflags = toolSettings_pgm_las $ toolSettings dflags pgm_i :: DynFlags -> String pgm_i dflags = toolSettings_pgm_i $ toolSettings dflags opt_L :: DynFlags -> [String] @@ -453,6 +456,8 @@ opt_lo :: DynFlags -> [String] opt_lo dflags= toolSettings_opt_lo $ toolSettings dflags opt_lc :: DynFlags -> [String] opt_lc dflags= toolSettings_opt_lc $ toolSettings dflags +opt_las :: DynFlags -> [String] +opt_las dflags = toolSettings_opt_las $ toolSettings dflags opt_i :: DynFlags -> [String] opt_i dflags= toolSettings_opt_i $ toolSettings dflags @@ -1057,6 +1062,8 @@ dynamic_flags_deps = [ $ hasArg $ \f -> alterToolSettings $ \s -> s { toolSettings_pgm_lo = (f,[]) } , make_ord_flag defFlag "pgmlc" $ hasArg $ \f -> alterToolSettings $ \s -> s { toolSettings_pgm_lc = (f,[]) } + , make_ord_flag defFlag "pgmlas" + $ hasArg $ \f -> alterToolSettings $ \s -> s { toolSettings_pgm_las = (f,[]) } , make_ord_flag defFlag "pgmlm" $ hasArg $ \f -> alterToolSettings $ \s -> s { toolSettings_pgm_lm = if null f then Nothing else Just (f,[]) } @@ -1112,6 +1119,8 @@ dynamic_flags_deps = [ $ hasArg $ \f -> alterToolSettings $ \s -> s { toolSettings_opt_lo = f : toolSettings_opt_lo s } , make_ord_flag defFlag "optlc" $ hasArg $ \f -> alterToolSettings $ \s -> s { toolSettings_opt_lc = f : toolSettings_opt_lc s } + , make_ord_flag defFlag "optlas" + $ hasArg $ \f -> alterToolSettings $ \s -> s { toolSettings_opt_las = f : toolSettings_opt_las s } , make_ord_flag defFlag "opti" $ hasArg $ \f -> alterToolSettings $ \s -> s { toolSettings_opt_i = f : toolSettings_opt_i s } , make_ord_flag defFlag "optL" diff --git a/compiler/GHC/Settings.hs b/compiler/GHC/Settings.hs index e2fc7338ecdf267e701c930085604bd82254f080..58325f6a7b6d7b13b378026283fd78bc13f2fc78 100644 --- a/compiler/GHC/Settings.hs +++ b/compiler/GHC/Settings.hs @@ -41,6 +41,7 @@ module GHC.Settings , sPgm_ranlib , sPgm_lo , sPgm_lc + , sPgm_las , sPgm_i , sOpt_L , sOpt_P @@ -118,6 +119,8 @@ data ToolSettings = ToolSettings toolSettings_pgm_lo :: (String, [Option]) , -- | LLVM: llc static compiler toolSettings_pgm_lc :: (String, [Option]) + -- | LLVM: assembler + , toolSettings_pgm_las :: (String, [Option]) , toolSettings_pgm_i :: String -- options for particular phases @@ -137,6 +140,7 @@ data ToolSettings = ToolSettings toolSettings_opt_lo :: [String] , -- | LLVM: llc static compiler toolSettings_opt_lc :: [String] + , toolSettings_opt_las :: [String] , -- | iserv options toolSettings_opt_i :: [String] @@ -233,6 +237,8 @@ sPgm_lo :: Settings -> (String, [Option]) sPgm_lo = toolSettings_pgm_lo . sToolSettings sPgm_lc :: Settings -> (String, [Option]) sPgm_lc = toolSettings_pgm_lc . sToolSettings +sPgm_las :: Settings -> (String, [Option]) +sPgm_las = toolSettings_pgm_las . sToolSettings sPgm_i :: Settings -> String sPgm_i = toolSettings_pgm_i . sToolSettings sOpt_L :: Settings -> [String] diff --git a/compiler/GHC/Settings/IO.hs b/compiler/GHC/Settings/IO.hs index a26340090e1e56cf32fb1d850005cae0ab265040..9893e8032ace60040091aaa5c1b3f972369c137e 100644 --- a/compiler/GHC/Settings/IO.hs +++ b/compiler/GHC/Settings/IO.hs @@ -149,6 +149,7 @@ initSettings top_dir = do -- We just assume on command line lc_prog <- getSetting "LLVM llc command" lo_prog <- getSetting "LLVM opt command" + las_prog <- getSetting "LLVM llvm-as command" let iserv_prog = libexec "ghc-iserv" @@ -196,6 +197,7 @@ initSettings top_dir = do , toolSettings_pgm_ranlib = ranlib_path , toolSettings_pgm_lo = (lo_prog,[]) , toolSettings_pgm_lc = (lc_prog,[]) + , toolSettings_pgm_las = (las_prog, []) , toolSettings_pgm_i = iserv_prog , toolSettings_opt_L = [] , toolSettings_opt_P = [] @@ -209,6 +211,7 @@ initSettings top_dir = do , toolSettings_opt_windres = [] , toolSettings_opt_lo = [] , toolSettings_opt_lc = [] + , toolSettings_opt_las = [] , toolSettings_opt_i = [] , toolSettings_extraGccViaCFlags = extraGccViaCFlags diff --git a/compiler/GHC/SysTools/Tasks.hs b/compiler/GHC/SysTools/Tasks.hs index 3d2c5071c36b71ca6544a5cc3398994ed846f7b6..c7572e9bef374c77d7631e348149e9719b8ce716 100644 --- a/compiler/GHC/SysTools/Tasks.hs +++ b/compiler/GHC/SysTools/Tasks.hs @@ -215,6 +215,14 @@ runLlvmLlc logger dflags args = traceSystoolCommand logger "llc" $ do args1 = map Option (getOpts dflags opt_lc) runSomething logger "LLVM Compiler" p (args0 ++ args1 ++ args) +-- | Run the LLVM Assembler +runLlvmAs :: Logger -> DynFlags -> [Option] -> IO () +runLlvmAs logger dflags args = traceSystoolCommand logger "llvm-as" $ do + let (p,args0) = pgm_las dflags + args1 = map Option (getOpts dflags opt_las) + runSomething logger "LLVM assembler" p (args0 ++ args1 ++ args) + + runEmscripten :: Logger -> DynFlags -> [Option] -> IO () runEmscripten logger dflags args = traceSystoolCommand logger "emcc" $ do let (p,args0) = pgm_a dflags diff --git a/configure.ac b/configure.ac index 78872d3af865a4f400627269c611de38349b8a26..d541f14089638d8ebc345f1fdaa501d7f34fcc0c 100644 --- a/configure.ac +++ b/configure.ac @@ -529,6 +529,13 @@ FIND_LLVM_PROG([OPT], [opt], [$LlvmMinVersion], [$LlvmMaxVersion]) OptCmd="$OPT" AC_SUBST([OptCmd]) +dnl ** Which LLVM assembler to use? +dnl -------------------------------------------------------------- +AC_ARG_VAR(LLVMAS,[Use as the path to LLVM's assembler (typically clang) [default=autodetect]]) +FIND_LLVM_PROG([LLVMAS], [clang], [$LlvmMinVersion], [$LlvmMaxVersion]) +LlvmAsCmd="$LLVMAS" +AC_SUBST([LlvmAsCmd]) + dnl -------------------------------------------------------------- dnl End of configure script option section dnl -------------------------------------------------------------- @@ -1045,7 +1052,8 @@ echo "\ Using LLVM tools llc : $LlcCmd - opt : $OptCmd" + opt : $OptCmd + llvm-as : $LlvmAsCmd" if test "$HSCOLOUR" = ""; then echo " diff --git a/distrib/configure.ac.in b/distrib/configure.ac.in index 7edecf9161f98b3ea029d6f2472e3e45889bc0e7..770d8c37dfb7f6f07019f0fc24fb5d4977305afc 100644 --- a/distrib/configure.ac.in +++ b/distrib/configure.ac.in @@ -166,6 +166,13 @@ FIND_LLVM_PROG([OPT], [opt], [$LlvmMinVersion], [$LlvmMaxVersion]) OptCmd="$OPT" AC_SUBST([OptCmd]) +dnl ** Which LLVM assembler to use? +dnl -------------------------------------------------------------- +AC_ARG_VAR(LLVMAS,[Use as the path to LLVM's assembler (typically clang) [default=autodetect]]) +FIND_LLVM_PROG([LLVMAS], [clang], [$LlvmMinVersion], [$LlvmMaxVersion]) +LlvmAsCmd="$LLVMAS" +AC_SUBST([LlvmAsCmd]) + dnl ** Check gcc version and flags we need to pass it ** FP_GCC_VERSION FP_GCC_SUPPORTS_NO_PIE diff --git a/docs/users_guide/9.10.1-notes.rst b/docs/users_guide/9.10.1-notes.rst index 629352f3ea34e686cf97dd9acc586102065147da..d044791565143b3e12e31622c115beee88433f9d 100644 --- a/docs/users_guide/9.10.1-notes.rst +++ b/docs/users_guide/9.10.1-notes.rst @@ -142,6 +142,12 @@ Compiler - Late plugins have been added. These are plugins which can access and/or modify the core of a module after optimization and after interface creation. See :ghc-ticket:`24254`. +- If you use :ghc-flag:`-fllvm` we now use an assembler from the LLVM toolchain rather than + the preconfigured assembler. This is typically ``clang``. The ``LLVMAS`` environment + variable can be specified at configure time to instruct GHC which ``clang`` to use. + This means that if you are using ``-fllvm`` you now need ``llc``, ``opt`` and ``clang`` + available. + GHCi ~~~~ diff --git a/docs/users_guide/phases.rst b/docs/users_guide/phases.rst index b8240fcfc32c3ffb549a889bcfbaf837d7331be7..7940767ce688f62c79795ee912faf0073337c480 100644 --- a/docs/users_guide/phases.rst +++ b/docs/users_guide/phases.rst @@ -59,6 +59,13 @@ given compilation phase: Use ⟨cmd⟩ as the LLVM compiler. +.. ghc-flag:: -pgmlas ⟨cmd⟩ + :shortdesc: Use ⟨cmd⟩ as the LLVM assembler + :type: dynamic + :category: phase-programs + + Use ⟨cmd⟩ as the LLVM assembler + .. ghc-flag:: -pgms ⟨cmd⟩ :shortdesc: Use ⟨cmd⟩ as the splitter :type: dynamic @@ -218,6 +225,13 @@ the following flags: Pass ⟨option⟩ to the LLVM compiler. +.. ghc-flag:: -optlas ⟨option⟩ + :shortdesc: pass ⟨option⟩ to the LLVM assembler + :type: dynamic + :category: phase-options + + Pass ⟨option⟩ to the LLVM assembler (typically clang). + .. ghc-flag:: -opta ⟨option⟩ :shortdesc: pass ⟨option⟩ to the assembler :type: dynamic diff --git a/hadrian/bindist/Makefile b/hadrian/bindist/Makefile index e4ed0476d48da305bf4d94ff6d9211143a76fbac..d8e7846806efb0757b377668993b5e54dacab3ba 100644 --- a/hadrian/bindist/Makefile +++ b/hadrian/bindist/Makefile @@ -133,6 +133,7 @@ lib/settings : config.mk @echo ',("LLVM target", "$(LLVMTarget_CPP)")' >> $@ @echo ',("LLVM llc command", "$(SettingsLlcCommand)")' >> $@ @echo ',("LLVM opt command", "$(SettingsOptCommand)")' >> $@ + @echo ',("LLVM llvm-as command", "$(SettingsLlvmAsCommand)")' >> $@ @echo ',("Use inplace MinGW toolchain", "$(SettingsUseDistroMINGW)")' >> $@ @echo @echo ',("Use interpreter", "$(GhcWithInterpreter)")' >> $@ diff --git a/hadrian/bindist/config.mk.in b/hadrian/bindist/config.mk.in index fd158c411948445c7061147a2352193ec835f427..99b000412063dda954e4fd34ea8c42d72b10e835 100644 --- a/hadrian/bindist/config.mk.in +++ b/hadrian/bindist/config.mk.in @@ -230,5 +230,6 @@ SettingsLibtoolCommand = @SettingsLibtoolCommand@ SettingsTouchCommand = @SettingsTouchCommand@ SettingsLlcCommand = @SettingsLlcCommand@ SettingsOptCommand = @SettingsOptCommand@ +SettingsLlvmAsCommand = @SettingsLlvmAsCommand@ SettingsUseDistroMINGW = @SettingsUseDistroMINGW@ diff --git a/hadrian/cfg/system.config.in b/hadrian/cfg/system.config.in index a421cab043a42f7f616566830dd8ddae6472aabf..b776b391514eeea9188d5efe426616e5506fb3a0 100644 --- a/hadrian/cfg/system.config.in +++ b/hadrian/cfg/system.config.in @@ -85,6 +85,7 @@ settings-install_name_tool-command = @SettingsInstallNameToolCommand@ settings-touch-command = @SettingsTouchCommand@ settings-llc-command = @SettingsLlcCommand@ settings-opt-command = @SettingsOptCommand@ +settings-llvm-as-command = @SettingsLlvmAsCommand@ settings-use-distro-mingw = @SettingsUseDistroMINGW@ target-has-libm = @TargetHasLibm@ diff --git a/hadrian/src/Oracles/Setting.hs b/hadrian/src/Oracles/Setting.hs index 810bc2e19e3fd41c9b9b2579877d30c42161f328..ae2facae9a8bd4dc4c72e8de5dfda27da39e441c 100644 --- a/hadrian/src/Oracles/Setting.hs +++ b/hadrian/src/Oracles/Setting.hs @@ -89,6 +89,7 @@ data ToolchainSetting | ToolchainSetting_TouchCommand | ToolchainSetting_LlcCommand | ToolchainSetting_OptCommand + | ToolchainSetting_LlvmAsCommand | ToolchainSetting_DistroMinGW -- | Look up the value of a 'Setting' in @cfg/system.config@, tracking the @@ -140,6 +141,7 @@ settingsFileSetting key = lookupSystemConfig $ case key of ToolchainSetting_TouchCommand -> "settings-touch-command" ToolchainSetting_LlcCommand -> "settings-llc-command" ToolchainSetting_OptCommand -> "settings-opt-command" + ToolchainSetting_LlvmAsCommand -> "settings-llvm-as-command" ToolchainSetting_DistroMinGW -> "settings-use-distro-mingw" -- ROMES:TODO: This option doesn't seem to be in ghc-toolchain yet. It corresponds to EnableDistroToolchain -- | An expression that looks up the value of a 'Setting' in @cfg/system.config@, diff --git a/hadrian/src/Rules/Generate.hs b/hadrian/src/Rules/Generate.hs index ce437712783bdd35f34d087881031fc09fae1aa7..32fdd800f001cbf6af6416c2989a1608019d1aed 100644 --- a/hadrian/src/Rules/Generate.hs +++ b/hadrian/src/Rules/Generate.hs @@ -398,6 +398,7 @@ generateSettings = do , ("LLVM target", queryTarget tgtLlvmTarget) , ("LLVM llc command", expr $ settingsFileSetting ToolchainSetting_LlcCommand) , ("LLVM opt command", expr $ settingsFileSetting ToolchainSetting_OptCommand) + , ("LLVM llvm-as command", expr $ settingsFileSetting ToolchainSetting_LlvmAsCommand) , ("Use inplace MinGW toolchain", expr $ settingsFileSetting ToolchainSetting_DistroMinGW) , ("Use interpreter", expr $ yesNo <$> ghcWithInterpreter) diff --git a/m4/find_llvm_prog.m4 b/m4/find_llvm_prog.m4 index ece1fafee04e531331a769c7b02cc669148d7c3f..75edd9d3e1c0720cb63c9c2d025226051665796a 100644 --- a/m4/find_llvm_prog.m4 +++ b/m4/find_llvm_prog.m4 @@ -14,7 +14,7 @@ AC_DEFUN([FIND_LLVM_PROG],[ PROG_VERSION_CANDIDATES=$(for llvmVersion in `seq $(($4-1)) -1 $3`; do echo "$2-$llvmVersion $2-$llvmVersion.0 $2$llvmVersion"; done) AC_CHECK_TOOLS([$1], [$PROG_VERSION_CANDIDATES $2], []) AS_IF([test x"$$1" != x],[ - PROG_VERSION=`$$1 --version | awk '/.*version [[0-9\.]]+/{for(i=1;i<=NF;i++){ if(\$i ~ /^[[0-9\.]]+$/){print \$i}}}'` + PROG_VERSION=`$$1 --version | sed -n -e 's/.*version \(\([[0-9]]\+\.\)\+[[0-9]]\+\).*/\1/gp'` AS_IF([test x"$PROG_VERSION" = x], [AC_MSG_RESULT(no) $1="" diff --git a/m4/fp_settings.m4 b/m4/fp_settings.m4 index 1061cec05df9668f6b9fda14eef10c9c951f1c5c..832bbb9305a50cefa8a91377553242907d13e4a6 100644 --- a/m4/fp_settings.m4 +++ b/m4/fp_settings.m4 @@ -123,6 +123,11 @@ AC_DEFUN([FP_SETTINGS], fi SettingsOptCommand="$OptCmd" + if test -z "$LlvmAsCmd"; then + LlvmAsCmd="clang" + fi + SettingsLlvmAsCommand="$LlvmAsCmd" + # Mac-only tools if test -z "$OtoolCmd"; then OtoolCmd="otool" @@ -156,5 +161,6 @@ AC_DEFUN([FP_SETTINGS], AC_SUBST(SettingsTouchCommand) AC_SUBST(SettingsLlcCommand) AC_SUBST(SettingsOptCommand) + AC_SUBST(SettingsLlvmAsCommand) AC_SUBST(SettingsUseDistroMINGW) ])