diff --git a/scons/llvm.py b/scons/llvm.py index 4464b665751..33505f79447 100644 --- a/scons/llvm.py +++ b/scons/llvm.py @@ -100,8 +100,36 @@ def generate(env): env.Prepend(CPPPATH = [os.path.join(llvm_dir, 'include')]) env.Prepend(LIBPATH = [os.path.join(llvm_dir, 'lib')]) - # LIBS should match the output of `llvm-config --libs engine mcjit bitwriter x86asmprinter irreader` - if llvm_version >= distutils.version.LooseVersion('5.0'): + + # LLVM 5.0 and newer requires MinGW w/ pthreads due to use of std::thread and friends. + if llvm_version >= distutils.version.LooseVersion('5.0') and env['crosscompile']: + assert env['gcc'] + env.AppendUnique(CXXFLAGS = ['-posix']) + + # LIBS should match the output of `llvm-config --libs engine mcjit bitwriter x86asmprinter irreader` for LLVM<=7.0 + # and `llvm-config --libs engine irreader` for LLVM>=8.0 + # LLVMAggressiveInstCombine library part of engine component can be safely omitted as it's not used. + if llvm_version >= distutils.version.LooseVersion('9.0'): + env.Prepend(LIBS = [ + 'LLVMX86Disassembler', 'LLVMX86AsmParser', + 'LLVMX86CodeGen', 'LLVMSelectionDAG', 'LLVMAsmPrinter', + 'LLVMDebugInfoCodeView', 'LLVMCodeGen', + 'LLVMScalarOpts', 'LLVMInstCombine', + 'LLVMTransformUtils', + 'LLVMBitWriter', 'LLVMX86Desc', + 'LLVMMCDisassembler', 'LLVMX86Info', + 'LLVMX86Utils', + 'LLVMMCJIT', 'LLVMExecutionEngine', 'LLVMTarget', + 'LLVMAnalysis', 'LLVMProfileData', + 'LLVMRuntimeDyld', 'LLVMObject', 'LLVMMCParser', + 'LLVMBitReader', 'LLVMMC', 'LLVMCore', + 'LLVMSupport', + 'LLVMIRReader', 'LLVMAsmParser', + 'LLVMDemangle', 'LLVMGlobalISel', 'LLVMDebugInfoMSF', + 'LLVMBinaryFormat', + 'LLVMRemarks', 'LLVMBitstreamReader', 'LLVMDebugInfoDWARF', + ]) + elif llvm_version >= distutils.version.LooseVersion('5.0'): env.Prepend(LIBS = [ 'LLVMX86Disassembler', 'LLVMX86AsmParser', 'LLVMX86CodeGen', 'LLVMSelectionDAG', 'LLVMAsmPrinter', @@ -120,10 +148,6 @@ def generate(env): 'LLVMDemangle', 'LLVMGlobalISel', 'LLVMDebugInfoMSF', 'LLVMBinaryFormat', ]) - if env['platform'] == 'windows' and env['crosscompile']: - # LLVM 5.0 requires MinGW w/ pthreads due to use of std::thread and friends. - assert env['gcc'] - env.AppendUnique(CXXFLAGS = ['-posix']) elif llvm_version >= distutils.version.LooseVersion('4.0'): env.Prepend(LIBS = [ 'LLVMX86Disassembler', 'LLVMX86AsmParser',