From 6dab68ce4793bb43fa79e21aa8577d449073d1c5 Mon Sep 17 00:00:00 2001 From: Jerome Duval Date: Sat, 3 Apr 2021 23:29:21 +0200 Subject: [PATCH] llvm12: add recipe for version 12.0.0~rc4, disabled for now --- sys-devel/llvm/llvm12-12.0.0~rc4.recipe | 616 ++++++++++++++++++ .../llvm/patches/clang-12.0.0~rc4.patchset | 174 +++++ .../llvm/patches/lld-12.0.0~rc4.patchset | 70 ++ .../llvm/patches/llvm-12.0.0~rc4.patchset | 100 +++ 4 files changed, 960 insertions(+) create mode 100644 sys-devel/llvm/llvm12-12.0.0~rc4.recipe create mode 100644 sys-devel/llvm/patches/clang-12.0.0~rc4.patchset create mode 100644 sys-devel/llvm/patches/lld-12.0.0~rc4.patchset create mode 100644 sys-devel/llvm/patches/llvm-12.0.0~rc4.patchset diff --git a/sys-devel/llvm/llvm12-12.0.0~rc4.recipe b/sys-devel/llvm/llvm12-12.0.0~rc4.recipe new file mode 100644 index 000000000..8448debda --- /dev/null +++ b/sys-devel/llvm/llvm12-12.0.0~rc4.recipe @@ -0,0 +1,616 @@ +SUMMARY="Modular and reuseable compiler and toolchain technologies" +DESCRIPTION="LLVM is a collection of modular and reuseable compiler and and \ +toolchain technologies.The LLVM compiler system for C and C++ includes the \ +following: + +- Front-ends for C, C++, Objective-C, Fortran, etc. based on the GCC 4.2 \ +parsers. They support the ANSI-standard C and C++ languages to the same \ +degree that GCC supports them. Additionally, many GCC extensions are \ +supported. +- A stable implementation of the LLVM instruction set, which serves as both \ +the online and offline code representation, together with assembly (ASCII) \ +and bytecode (binary) readers and writers, and a verifier. +- A powerful pass-management system that automatically sequences passes \ +(including analysis, transformation, and code-generation passes) based on \ +their dependences, and pipelines them for efficiency. +- A wide range of global scalar optimizations. +- A link-time interprocedural optimization framework with a rich set of \ +analyses and transformations, including sophisticated whole-program pointer \ +analysis, call graph construction, and support for profile-guided optimizations. +- An easily retargettable code generator, which currently supports X86, \ +X86-64, PowerPC, PowerPC-64, ARM, Thumb, SPARC, Alpha, CellSPU, MIPS, MSP430, \ +SystemZ, and XCore. +- A Just-In-Time (JIT) code generation system, which currently supports X86, \ +X86-64, ARM, AArch64, Mips, SystemZ, PowerPC, and PowerPC-64. +- Support for generating DWARF debugging information. +- A C back-end useful for testing and for generating native code on targets \ +other than the ones listed above. +- A profiling system similar to gprof. +- A test framework with a number of benchmark codes and applications. +- APIs and debugging tools to simplify rapid development of LLVM components." +HOMEPAGE="https://www.llvm.org/" +COPYRIGHT="2003-2019 University of Illinois at Urbana-Champaign" +LICENSE="Apache v2 with LLVM Exception" +REVISION="1" +SOURCE_URI="https://github.com/llvm/llvm-project/releases/download/llvmorg-12.0.0-rc4/llvm-12.0.0rc4.src.tar.xz" +CHECKSUM_SHA256="6efbb5c3be4538a077915aab60de8c36fb308b976e3bcd1c0b04161362312eca" +SOURCE_DIR="llvm-12.0.0rc4.src" +SOURCE_URI_2="https://github.com/llvm/llvm-project/releases/download/llvmorg-12.0.0-rc4/clang-12.0.0rc4.src.tar.xz" +CHECKSUM_SHA256_2="7ce1b0168eaf8d1589f4e09e539d7b64327a7f3d984557687cdeb9809c385e85" +SOURCE_DIR_2="clang-12.0.0rc4.src" +SOURCE_URI_3="https://github.com/llvm/llvm-project/releases/download/llvmorg-12.0.0-rc4/clang-tools-extra-12.0.0rc4.src.tar.xz" +CHECKSUM_SHA256_3="4f9130cdf2d88b77a6a8d3d84c614bb14f1af8c43d75de27feeb9854917a38d4" +SOURCE_DIR_3="clang-tools-extra-12.0.0rc4.src" +SOURCE_URI_4="https://github.com/llvm/llvm-project/releases/download/llvmorg-12.0.0-rc4//compiler-rt-12.0.0rc4.src.tar.xz" +CHECKSUM_SHA256_4="3f99813ab73dfa90b65ff873abd5048a02fc9494060a0e719513a382468ebb05" +SOURCE_DIR_4="compiler-rt-12.0.0rc4.src" +SOURCE_URI_5="https://github.com/llvm/llvm-project/releases/download/llvmorg-12.0.0-rc4//lld-12.0.0rc4.src.tar.xz" +CHECKSUM_SHA256_5="e152617312980ea674e17b4acca3751f8c86adb60ecda2d3cef1461b37ec3765" +SOURCE_DIR_5="lld-12.0.0rc4.src" +PATCHES="llvm-$portVersion.patchset" +PATCHES_2="clang-$portVersion.patchset" + +ARCHITECTURES="!x86_gcc2 ?x86 ?x86_64" +SECONDARY_ARCHITECTURES="?x86" + +PROVIDES=" + llvm12$secondaryArchSuffix = $portVersion compat >= 12 + cmd:bugpoint + cmd:diagtool + cmd:dsymutil + cmd:find_all_symbols + cmd:hmaptool + cmd:llc + cmd:lli + cmd:llvm_addr2line + cmd:llvm_ar + cmd:llvm_as + cmd:llvm_bcanalyzer + cmd:llvm_c_test + cmd:llvm_cat + cmd:llvm_cfi_verify + cmd:llvm_config = $portVersion compat >= 12 + cmd:llvm_cov + cmd:llvm_cvtres + cmd:llvm_cxxdump + cmd:llvm_cxxfilt + cmd:llvm_cxxmap + cmd:llvm_diff + cmd:llvm_dis + cmd:llvm_dlltool + cmd:llvm_dwarfdump + cmd:llvm_dwp + cmd:llvm_elfabi + cmd:llvm_exegesis + cmd:llvm_extract + cmd:llvm_jitlink + cmd:llvm_lib + cmd:llvm_link + cmd:llvm_lipo + cmd:llvm_lto + cmd:llvm_lto2 + cmd:llvm_mc + cmd:llvm_mca + cmd:llvm_modextract + cmd:llvm_mt + cmd:llvm_nm + cmd:llvm_objcopy + cmd:llvm_objdump + cmd:llvm_opt_report + cmd:llvm_pdbutil + cmd:llvm_profdata + cmd:llvm_ranlib + cmd:llvm_rc + cmd:llvm_readelf + cmd:llvm_readobj + cmd:llvm_rtdyld + cmd:llvm_size + cmd:llvm_split + cmd:llvm_stress + cmd:llvm_strings + cmd:llvm_strip + cmd:llvm_symbolizer + cmd:llvm_tblgen + cmd:llvm_undname + cmd:llvm_xray + cmd:obj2yaml + cmd:opt + cmd:sancov + cmd:sanstats + cmd:verify_uselistorder + cmd:yaml2obj + devel:libfindAllSymbols$secondaryArchSuffix + devel:libLLVM$secondaryArchSuffix = $portVersion compat >= 12 + devel:libLLVM_$portVersion$secondaryArchSuffix = $portVersion compat >= 12 + devel:libLLVM_12$secondaryArchSuffix = $portVersion compat >= 12 + devel:libLLVMAArch64AsmParser$secondaryArchSuffix + devel:libLLVMAArch64CodeGen$secondaryArchSuffix + devel:libLLVMAArch64Desc$secondaryArchSuffix + devel:libLLVMAArch64Disassembler$secondaryArchSuffix + devel:libLLVMAArch64Info$secondaryArchSuffix + devel:libLLVMAArch64Utils$secondaryArchSuffix + devel:libLLVMAMDGPUAsmParser$secondaryArchSuffix + devel:libLLVMAMDGPUCodeGen$secondaryArchSuffix + devel:libLLVMAMDGPUDesc$secondaryArchSuffix + devel:libLLVMAMDGPUDisassembler$secondaryArchSuffix + devel:libLLVMAMDGPUInfo$secondaryArchSuffix + devel:libLLVMAMDGPUUtils$secondaryArchSuffix + devel:libLLVMARMAsmParser$secondaryArchSuffix + devel:libLLVMARMCodeGen$secondaryArchSuffix + devel:libLLVMARMDesc$secondaryArchSuffix + devel:libLLVMARMDisassembler$secondaryArchSuffix + devel:libLLVMARMInfo$secondaryArchSuffix + devel:libLLVMARMUtils$secondaryArchSuffix + devel:libLLVMAggressiveInstCombine$secondaryArchSuffix + devel:libLLVMAnalysis$secondaryArchSuffix + devel:libLLVMAsmParser$secondaryArchSuffix + devel:libLLVMAsmPrinter$secondaryArchSuffix + devel:libLLVMBPFAsmParser$secondaryArchSuffix + devel:libLLVMBPFCodeGen$secondaryArchSuffix + devel:libLLVMBPFDesc$secondaryArchSuffix + devel:libLLVMBPFDisassembler$secondaryArchSuffix + devel:libLLVMBPFInfo$secondaryArchSuffix + devel:libLLVMBinaryFormat$secondaryArchSuffix + devel:libLLVMBitReader$secondaryArchSuffix + devel:libLLVMBitWriter$secondaryArchSuffix + devel:libLLVMBitstreamReader$secondaryArchSuffix + devel:libLLVMCodeGen$secondaryArchSuffix + devel:libLLVMCore$secondaryArchSuffix + devel:libLLVMCoroutines$secondaryArchSuffix + devel:libLLVMCoverage$secondaryArchSuffix + devel:libLLVMDebugInfoCodeView$secondaryArchSuffix + devel:libLLVMDebugInfoDWARF$secondaryArchSuffix + devel:libLLVMDebugInfoGSYM$secondaryArchSuffix + devel:libLLVMDebugInfoMSF$secondaryArchSuffix + devel:libLLVMDebugInfoPDB$secondaryArchSuffix + devel:libLLVMDemangle$secondaryArchSuffix + devel:libLLVMDlltoolDriver$secondaryArchSuffix + devel:libLLVMExecutionEngine$secondaryArchSuffix + devel:libLLVMFuzzMutate$secondaryArchSuffix + devel:libLLVMGlobalISel$secondaryArchSuffix + devel:libLLVMHexagonAsmParser$secondaryArchSuffix + devel:libLLVMHexagonCodeGen$secondaryArchSuffix + devel:libLLVMHexagonDesc$secondaryArchSuffix + devel:libLLVMHexagonDisassembler$secondaryArchSuffix + devel:libLLVMHexagonInfo$secondaryArchSuffix + devel:libLLVMIRReader$secondaryArchSuffix + devel:libLLVMInstCombine$secondaryArchSuffix + devel:libLLVMInstrumentation$secondaryArchSuffix + devel:libLLVMInterpreter$secondaryArchSuffix + devel:libLLVMJITLink$secondaryArchSuffix + devel:libLLVMLTO$secondaryArchSuffix + devel:libLLVMLanaiAsmParser$secondaryArchSuffix + devel:libLLVMLanaiCodeGen$secondaryArchSuffix + devel:libLLVMLanaiDesc$secondaryArchSuffix + devel:libLLVMLanaiDisassembler$secondaryArchSuffix + devel:libLLVMLanaiInfo$secondaryArchSuffix + devel:libLLVMLibDriver$secondaryArchSuffix + devel:libLLVMLineEditor$secondaryArchSuffix + devel:libLLVMLinker$secondaryArchSuffix + devel:libLLVMMC$secondaryArchSuffix + devel:libLLVMMCA$secondaryArchSuffix + devel:libLLVMMCDisassembler$secondaryArchSuffix + devel:libLLVMMCJIT$secondaryArchSuffix + devel:libLLVMMCParser$secondaryArchSuffix + devel:libLLVMMIRParser$secondaryArchSuffix + devel:libLLVMMSP430AsmParser$secondaryArchSuffix + devel:libLLVMMSP430CodeGen$secondaryArchSuffix + devel:libLLVMMSP430Desc$secondaryArchSuffix + devel:libLLVMMSP430Disassembler$secondaryArchSuffix + devel:libLLVMMSP430Info$secondaryArchSuffix + devel:libLLVMMipsAsmParser$secondaryArchSuffix + devel:libLLVMMipsCodeGen$secondaryArchSuffix + devel:libLLVMMipsDesc$secondaryArchSuffix + devel:libLLVMMipsDisassembler$secondaryArchSuffix + devel:libLLVMMipsInfo$secondaryArchSuffix + devel:libLLVMNVPTXCodeGen$secondaryArchSuffix + devel:libLLVMNVPTXDesc$secondaryArchSuffix + devel:libLLVMNVPTXInfo$secondaryArchSuffix + devel:libLLVMObjCARCOpts$secondaryArchSuffix + devel:libLLVMObject$secondaryArchSuffix + devel:libLLVMObjectYAML$secondaryArchSuffix + devel:libLLVMOption$secondaryArchSuffix + devel:libLLVMOrcJIT$secondaryArchSuffix + devel:libLLVMPasses$secondaryArchSuffix + devel:libLLVMPowerPCAsmParser$secondaryArchSuffix + devel:libLLVMPowerPCCodeGen$secondaryArchSuffix + devel:libLLVMPowerPCDesc$secondaryArchSuffix + devel:libLLVMPowerPCDisassembler$secondaryArchSuffix + devel:libLLVMPowerPCInfo$secondaryArchSuffix + devel:libLLVMProfileData$secondaryArchSuffix + devel:libLLVMRISCVAsmParser$secondaryArchSuffix + devel:libLLVMRISCVCodeGen$secondaryArchSuffix + devel:libLLVMRISCVDesc$secondaryArchSuffix + devel:libLLVMRISCVDisassembler$secondaryArchSuffix + devel:libLLVMRISCVInfo$secondaryArchSuffix + devel:libLLVMRISCVUtils$secondaryArchSuffix + devel:libLLVMRemarks$secondaryArchSuffix + devel:libLLVMRuntimeDyld$secondaryArchSuffix + devel:libLLVMScalarOpts$secondaryArchSuffix + devel:libLLVMSelectionDAG$secondaryArchSuffix + devel:libLLVMSparcAsmParser$secondaryArchSuffix + devel:libLLVMSparcCodeGen$secondaryArchSuffix + devel:libLLVMSparcDesc$secondaryArchSuffix + devel:libLLVMSparcDisassembler$secondaryArchSuffix + devel:libLLVMSparcInfo$secondaryArchSuffix + devel:libLLVMSupport$secondaryArchSuffix + devel:libLLVMSymbolize$secondaryArchSuffix + devel:libLLVMSystemZAsmParser$secondaryArchSuffix + devel:libLLVMSystemZCodeGen$secondaryArchSuffix + devel:libLLVMSystemZDesc$secondaryArchSuffix + devel:libLLVMSystemZDisassembler$secondaryArchSuffix + devel:libLLVMSystemZInfo$secondaryArchSuffix + devel:libLLVMTableGen$secondaryArchSuffix + devel:libLLVMTarget$secondaryArchSuffix + devel:libLLVMTextAPI$secondaryArchSuffix + devel:libLLVMTransformUtils$secondaryArchSuffix + devel:libLLVMVectorize$secondaryArchSuffix + devel:libLLVMWebAssemblyAsmParser$secondaryArchSuffix + devel:libLLVMWebAssemblyCodeGen$secondaryArchSuffix + devel:libLLVMWebAssemblyDesc$secondaryArchSuffix + devel:libLLVMWebAssemblyDisassembler$secondaryArchSuffix + devel:libLLVMWebAssemblyInfo$secondaryArchSuffix + devel:libLLVMWindowsManifest$secondaryArchSuffix + devel:libLLVMX86AsmParser$secondaryArchSuffix + devel:libLLVMX86CodeGen$secondaryArchSuffix + devel:libLLVMX86Desc$secondaryArchSuffix + devel:libLLVMX86Disassembler$secondaryArchSuffix + devel:libLLVMX86Info$secondaryArchSuffix + devel:libLLVMX86Utils$secondaryArchSuffix + devel:libLLVMXCoreCodeGen$secondaryArchSuffix + devel:libLLVMXCoreDesc$secondaryArchSuffix + devel:libLLVMXCoreDisassembler$secondaryArchSuffix + devel:libLLVMXCoreInfo$secondaryArchSuffix + devel:libLLVMXRay$secondaryArchSuffix + devel:libLLVMipo$secondaryArchSuffix + devel:libLTO$secondaryArchSuffix = $portVersion compat >= 12 + devel:libRemarks$secondaryArchSuffix = $portVersion compat >= 12 +# lib:BugpointPasses$secondaryArchSuffix + lib:CheckerDependencyHandlingAnalyzerPlugin$secondaryArchSuffix + lib:CheckerOptionHandlingAnalyzerPlugin$secondaryArchSuffix +# lib:LLVMHello$secondaryArchSuffix + lib:SampleAnalyzerPlugin$secondaryArchSuffix +# lib:testplugin$secondaryArchSuffix + " +REQUIRES=" + haiku$secondaryArchSuffix + lib:libclang_cpp$secondaryArchSuffix + lib:libLLVM_12$secondaryArchSuffix + lib:libz$secondaryArchSuffix + " +CONFLICTS=" + llvm$secondaryArchSuffix + llvm6$secondaryArchSuffix + llvm7$secondaryArchSuffix + llvm8$secondaryArchSuffix + llvm9$secondaryArchSuffix + " + +PROVIDES_clang=" + llvm12${secondaryArchSuffix}_clang = $portVersion + cmd:c_index_test = $portVersion + cmd:clang = $portVersion + cmd:clang++ = $portVersion + cmd:clang_12 = $portVersion + cmd:clang_apply_replacements = $portVersion + cmd:clang_change_namespace = $portVersion + cmd:clang_check = $portVersion + cmd:clang_cl = $portVersion + cmd:clang_cpp = $portVersion + cmd:clang_doc = $portVersion + cmd:clang_extdef_mapping = $portVersion + cmd:clang_format = $portVersion + cmd:clang_func_mapping = $portVersion + cmd:clang_import_test = $portVersion + cmd:clang_include_fixer = $portVersion + cmd:clang_offload_bundler = $portVersion + cmd:clang_query = $portVersion + cmd:clang_refactor = $portVersion + cmd:clang_rename = $portVersion + cmd:clang_reorder_fields = $portVersion + cmd:clang_scan_deps = $portVersion + cmd:clang_tidy = $portVersion + cmd:clangd = $portVersion + cmd:git_clang_format = $portVersion + cmd:modularize = $portVersion + devel:libclang$secondaryArchSuffix = $portVersion compat >= 12 + devel:libclang_cpp$secondaryArchSuffix = $portVersion compat >= 12 + devel:libclanganalysis$secondaryArchSuffix = $portVersion + devel:libclangapplyreplacements$secondaryArchSuffix = $portVersion + devel:libclangarcmigrate$secondaryArchSuffix = $portVersion + devel:libclangast$secondaryArchSuffix = $portVersion + devel:libclangastmatchers$secondaryArchSuffix = $portVersion + devel:libclangbasic$secondaryArchSuffix = $portVersion + devel:libclangchangenamespace$secondaryArchSuffix = $portVersion + devel:libclangcodegen$secondaryArchSuffix = $portVersion + devel:libclangcrosstu$secondaryArchSuffix = $portVersion + devel:libclangdaemon$secondaryArchSuffix = $portVersion + devel:libclangdaemontweaks$secondaryArchSuffix = $portVersion + devel:libclangdependencyscanning$secondaryArchSuffix = $portVersion + devel:libclangdoc$secondaryArchSuffix = $portVersion + devel:libclangdirectorywatcher$secondaryArchSuffix = $portVersion + devel:libclangdriver$secondaryArchSuffix = $portVersion + devel:libclangdynamicastmatchers$secondaryArchSuffix = $portVersion + devel:libclangedit$secondaryArchSuffix = $portVersion + devel:libclangformat$secondaryArchSuffix = $portVersion + devel:libclangfrontend$secondaryArchSuffix = $portVersion + devel:libclangfrontendtool$secondaryArchSuffix = $portVersion + devel:libclanghandlecxx$secondaryArchSuffix = $portVersion + devel:libclanghandlellvm$secondaryArchSuffix = $portVersion + devel:libclangincludefixer$secondaryArchSuffix = $portVersion + devel:libclangincludefixerplugin$secondaryArchSuffix = $portVersion + devel:libclangindex$secondaryArchSuffix = $portVersion + devel:libclanglex$secondaryArchSuffix = $portVersion + devel:libclangmove$secondaryArchSuffix = $portVersion + devel:libclangparse$secondaryArchSuffix = $portVersion + devel:libclangquery$secondaryArchSuffix = $portVersion + devel:libclangreorderfields$secondaryArchSuffix = $portVersion + devel:libclangrewrite$secondaryArchSuffix = $portVersion + devel:libclangrewritefrontend$secondaryArchSuffix = $portVersion + devel:libclangsema$secondaryArchSuffix = $portVersion + devel:libclangserialization$secondaryArchSuffix = $portVersion + devel:libclangstaticanalyzercheckers$secondaryArchSuffix = $portVersion + devel:libclangstaticanalyzercore$secondaryArchSuffix = $portVersion + devel:libclangstaticanalyzerfrontend$secondaryArchSuffix = $portVersion + devel:libclangtidy$secondaryArchSuffix = $portVersion + devel:libclangtidyabseilmodule$secondaryArchSuffix = $portVersion + devel:libclangtidyandroidmodule$secondaryArchSuffix = $portVersion + devel:libclangtidyboostmodule$secondaryArchSuffix = $portVersion + devel:libclangtidybugpronemodule$secondaryArchSuffix = $portVersion + devel:libclangtidycertmodule$secondaryArchSuffix = $portVersion + devel:libclangtidycppcoreguidelinesmodule$secondaryArchSuffix = $portVersion + devel:libclangtidyfuchsiamodule$secondaryArchSuffix = $portVersion + devel:libclangtidygooglemodule$secondaryArchSuffix = $portVersion + devel:libclangtidyhicppmodule$secondaryArchSuffix = $portVersion + devel:libclangtidyllvmmodule$secondaryArchSuffix = $portVersion + devel:libclangtidymiscmodule$secondaryArchSuffix = $portVersion + devel:libclangtidymodernizemodule$secondaryArchSuffix = $portVersion + devel:libclangtidympimodule$secondaryArchSuffix = $portVersion + devel:libclangtidyobjcmodule$secondaryArchSuffix = $portVersion + devel:libclangtidyopenmpmodule$secondaryArchSuffix = $portVersion + devel:libclangtidyperformancemodule$secondaryArchSuffix = $portVersion + devel:libclangtidyplugin$secondaryArchSuffix = $portVersion + devel:libclangtidyportabilitymodule$secondaryArchSuffix = $portVersion + devel:libclangtidyreadabilitymodule$secondaryArchSuffix = $portVersion + devel:libclangtidyutils$secondaryArchSuffix = $portVersion + devel:libclangtidyzirconmodule$secondaryArchSuffix = $portVersion + devel:libclangtooling$secondaryArchSuffix = $portVersion + devel:libclangtoolingastdiff$secondaryArchSuffix = $portVersion + devel:libclangtoolingcore$secondaryArchSuffix = $portVersion + devel:libclangtoolinginclusions$secondaryArchSuffix = $portVersion + devel:libclangtoolingrefactor$secondaryArchSuffix = $portVersion + devel:libclangtoolingrefactoring$secondaryArchSuffix = $portVersion + devel:libclangtoolingsyntax$secondaryArchSuffix = $portVersion + " +REQUIRES_clang=" + haiku$secondaryArchSuffix + lib:libclang$secondaryArchSuffix + lib:libclang_cpp$secondaryArchSuffix + lib:libLLVM_12$secondaryArchSuffix + lib:libz$secondaryArchSuffix + " +CONFLICTS_clang=" + llvm${secondaryArchSuffix}_clang + llvm6${secondaryArchSuffix}_clang + llvm7${secondaryArchSuffix}_clang + llvm8${secondaryArchSuffix}_clang + llvm9${secondaryArchSuffix}_clang + " + +PROVIDES_clang_analysis=" + llvm12${secondaryArchSuffix}_clang_analysis = $portVersion + cmd:c++_analyzer = $portVersion + cmd:ccc_analyzer = $portVersion + cmd:scan_build = $portVersion + cmd:scan_view = $portVersion + " +REQUIRES_clang_analysis=" + llvm12${secondaryArchSuffix}_clang == $portVersion base + cmd:python + " +CONFLICTS_clang_analysis=" + llvm${secondaryArchSuffix}_clang_analysis + llvm6${secondaryArchSuffix}_clang_analysis + llvm7${secondaryArchSuffix}_clang_analysis + llvm8${secondaryArchSuffix}_clang_analysis + llvm9${secondaryArchSuffix}_clang_analysis + " + +PROVIDES_lld=" + llvm12${secondaryArchSuffix}_lld = $portVersion + cmd:ld.lld = $portVersion + cmd:ld64.lld = $portVersion + cmd:lld = $portVersion + cmd:lld_link = $portVersion + cmd:wasm_ld = $portVersion + devel:liblldCOFF$secondaryArchSuffix = $portVersion + devel:liblldCommon$secondaryArchSuffix = $portVersion + devel:liblldCore$secondaryArchSuffix = $portVersion + devel:liblldDriver$secondaryArchSuffix = $portVersion + devel:liblldELF$secondaryArchSuffix = $portVersion + devel:liblldMachO$secondaryArchSuffix = $portVersion + devel:liblldMinGW$secondaryArchSuffix = $portVersion + devel:liblldReaderWriter$secondaryArchSuffix = $portVersion + devel:liblldWasm$secondaryArchSuffix = $portVersion + devel:liblldYAML$secondaryArchSuffix = $portVersion + " +REQUIRES_lld=" + haiku$secondaryArchSuffix + lib:libLLVM_12$secondaryArchSuffix + " + +PROVIDES_libs=" + llvm12${secondaryArchSuffix}_libs = $portVersion + lib:libclang$secondaryArchSuffix = $portVersion compat >= 12 + lib:libclang_cpp$secondaryArchSuffix = $portVersion compat >= 12 + lib:libLLVM_12$secondaryArchSuffix = 12.0.0 compat >= 12.0 + lib:libLTO$secondaryArchSuffix = 12.0.0 compat >= 12 + lib:libRemarks$secondaryArchSuffix = 12.0.0 compat >= 12 + " +REQUIRES_libs=" + haiku$secondaryArchSuffix + lib:libz$secondaryArchSuffix + " + +PYTHON3_VERSION="3.9" +PROVIDES_python3=" + llvm12${secondaryArchSuffix}_python3 = $portVersion + cmd:lit + " +REQUIRES_python3=" + setuptools_python3 + cmd:python$PYTHON3_VERSION + " + +BUILD_REQUIRES=" + haiku${secondaryArchSuffix}_devel + devel:libz$secondaryArchSuffix + setuptools_python39 + " +BUILD_PREREQUIRES=" + cmd:cmake + cmd:diff + cmd:find + cmd:gcc$secondaryArchSuffix + cmd:grep + cmd:groff + cmd:ld$secondaryArchSuffix + cmd:make + cmd:ninja + cmd:python$PYTHON3_VERSION + cmd:sed + " + +BUILD() +{ + # Add clang tools + mkdir -p tools/clang + cp -rdn $sourceDir2/* tools/clang/ + + mkdir -p $sourceDir/../clang-tools-extra + cp -rdn $sourceDir3/* $sourceDir/../clang-tools-extra + + mkdir -p projects/compiler-rt + cp -rdn $sourceDir4/* projects/compiler-rt + + mkdir -p tools/lld + cp -rdn $sourceDir5/* tools/lld + + local cmakeFlags + if [ -n "$secondaryArchSuffix" ]; then + cmakeFlags=-DHAIKU_HYBRID_SECONDARY="\"${effectiveTargetArchitecture}\"" + cmakeFlags="$cmakeFlags -DLLVM_LIBDIR_SUFFIX=/${effectiveTargetArchitecture}" + fi + + mkdir -p build; cd build + # Haiku C++ requires rtti in a lot of central system components + # such as Mesa + cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=$prefix \ + -DCMAKE_SKIP_RPATH=YES $cmakeFlags \ + -DLLVM_ENABLE_RTTI=ON -DLLVM_LINK_LLVM_DYLIB=YES \ + -DLLVM_EXTERNAL_CLANG_TOOLS_EXTRA_SOURCE_DIR=$sourceDir/../clang-tools-extra \ + -G Ninja \ + .. + + ninja +} + +INSTALL() +{ + cd build + + mkdir -p $binDir $developDir $dataDir $docDir $includeDir $manDir $libDir + + ninja install + + # GENERIC: all python_setuptools-based installs need this + local pythonPackageName="${portName}_python3-$portFullVersion" + local packageLinksDir=$(dirname $portPackageLinksDir) + python=$packageLinksDir/${pythonPackageName}/cmd~python$PYTHON3_VERSION/bin/python$PYTHON3_VERSION + pythonVersion=$($python --version 2>&1 | sed 's/Python //' | head -c3) + installLocation=$prefix/lib/python$pythonVersion/vendor-packages/ + export PYTHONPATH=$installLocation:$OLDPYTHONPATH + + pushd ../utils/lit + $python setup.py install --root=/ --prefix="$prefix" -O1 + popd + + if [ -n $secondaryArchSuffix ]; then + binDir=$prefix/bin + fi + + # You can try and be fancy here parsing each arch in a for loop... but + # not all arches contain the same libraries. The inventory for each arch + # also changes between releases... so lets KISS. + prepareInstalledDevelLibs \ + libfindAllSymbols \ + libLLVM* \ + libLTO \ + libclang* \ + liblld* \ + libRemarks + + mv $prefix/include/* $includeDir/ + mv $prefix/libexec/* $binDir/ + mv $prefix/share/man/* $manDir/ + mv $prefix/share/clang $dataDir/ + mv $prefix/share/opt-viewer $dataDir/ + mv $prefix/share/scan-build $dataDir/ + mv $prefix/share/scan-view $dataDir/ + rmdir $prefix/include $prefix/libexec $prefix/share/man $prefix/share + + sed -i 's|/libexec/|/bin/|' $binDir/scan-build + sed -i 's|/share/|/data/|' $binDir/scan-build $binDir/scan-view + + # clang package + packageEntries clang \ + $binDir/c-index-test \ + $binDir/clang* \ + $binDir/git-clang-format \ + $binDir/modularize \ + $dataDir/clang \ + $includeDir/clang* \ + $libDir/clang \ + $libDir/cmake/clang \ + $developLibDir/libclang* + + # analysis package + packageEntries clang_analysis \ + $binDir/scan-build \ + $binDir/scan-view \ + $binDir/c++-analyzer \ + $binDir/ccc-analyzer \ + $dataDir/scan-build \ + $dataDir/scan-view \ + $manDir/man1/scan-build.1 + + # lld package + packageEntries lld \ + $binDir/ld.lld \ + $binDir/ld64.lld \ + $binDir/lld \ + $binDir/lld-link \ + $binDir/wasm-ld \ + $includeDir/lld* \ + $developLibDir/liblld* + + # libs package + packageEntries libs \ + $libDir/libclang* \ + $libDir/libLLVM* \ + $libDir/libLTO* \ + $libDir/libRemarks* + + # python3 package + packageEntries python3 \ + $binDir/lit \ + $prefix/lib/python* +} + +TEST() +{ + cd build + export LIBRARY_PATH=$LIBRARY_PATH:$sourceDir/build/lib + export LIT_ARGS="-v" + make check-llvm +} diff --git a/sys-devel/llvm/patches/clang-12.0.0~rc4.patchset b/sys-devel/llvm/patches/clang-12.0.0~rc4.patchset new file mode 100644 index 000000000..b64985199 --- /dev/null +++ b/sys-devel/llvm/patches/clang-12.0.0~rc4.patchset @@ -0,0 +1,174 @@ +From 1c9c296d5ce0b393fa0e853b461bcd5b46da978f Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Duval?= +Date: Mon, 18 Jul 2016 14:13:19 +0200 +Subject: support for secondary arch. + + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 9e74014..bc4efa2 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -403,6 +403,10 @@ if (APPLE) + endif() + message(STATUS "Host linker version: ${HOST_LINK_VERSION}") + endif() ++if(DEFINED HAIKU_HYBRID_SECONDARY) ++ add_definitions(-DHAIKU_HYBRID_SECONDARY=${HAIKU_HYBRID_SECONDARY}) ++endif() ++ + + include(CMakeParseArguments) + include(AddClang) +diff --git a/lib/Driver/ToolChains/Haiku.cpp b/lib/Driver/ToolChains/Haiku.cpp +index 18f550c..2716f58 100644 +--- a/lib/Driver/ToolChains/Haiku.cpp ++++ b/lib/Driver/ToolChains/Haiku.cpp +@@ -19,6 +19,13 @@ using namespace llvm::opt; + Haiku::Haiku(const Driver &D, const llvm::Triple& Triple, const ArgList &Args) + : Generic_ELF(D, Triple, Args) { + ++#ifdef HAIKU_HYBRID_SECONDARY ++ getProgramPaths().insert(getProgramPaths().begin(), getDriver().SysRoot ++ + "/system/bin/" HAIKU_HYBRID_SECONDARY); ++ getFilePaths().clear(); ++ getFilePaths().push_back(getDriver().SysRoot + "/system/lib/" ++ HAIKU_HYBRID_SECONDARY); ++#endif + } + + void Haiku::addLibCxxIncludePaths(const llvm::opt::ArgList &DriverArgs, +@@ -29,6 +36,12 @@ void Haiku::addLibCxxIncludePaths(const llvm::opt::ArgList &DriverArgs, + + void Haiku::addLibStdCxxIncludePaths(const llvm::opt::ArgList &DriverArgs, + llvm::opt::ArgStringList &CC1Args) const { ++#ifdef HAIKU_HYBRID_SECONDARY ++ addLibStdCXXIncludePaths(getDriver().SysRoot, "/system/develop/headers/" ++ HAIKU_HYBRID_SECONDARY "/c++", getTriple().str(), "", "", "", ++ DriverArgs, CC1Args); ++#else + addLibStdCXXIncludePaths(getDriver().SysRoot, "/system/develop/headers/c++", +- getTriple().str(), "", "", "", DriverArgs, CC1Args); ++ getTriple().str(), "", "", "", DriverArgs, CC1Args); ++#endif + } +diff --git a/lib/Frontend/InitHeaderSearch.cpp b/lib/Frontend/InitHeaderSearch.cpp +index bc31445..b8ecee0 100644 +--- a/lib/Frontend/InitHeaderSearch.cpp ++++ b/lib/Frontend/InitHeaderSearch.cpp +@@ -246,7 +246,20 @@ void InitHeaderSearch::AddDefaultCIncludePaths(const llvm::Triple &triple, + if (HSOpts.UseBuiltinIncludes) { + // Ignore the sys root, we *always* look for clang headers relative to + // supplied path. ++#ifdef HAIKU_HYBRID_SECONDARY ++ // Remove version from foo/lib/clang/version ++ StringRef Ver = llvm::sys::path::filename(HSOpts.ResourceDir); ++ StringRef NoVer = llvm::sys::path::parent_path(HSOpts.ResourceDir); ++ // Remove clang from foo/lib/clang ++ StringRef Clang = llvm::sys::path::filename(NoVer); ++ SmallString<128> P = llvm::sys::path::parent_path(NoVer); ++ ++ // Get foo/include/c++/v1 ++ llvm::sys::path::append(P, Clang, Ver); ++#else + SmallString<128> P = StringRef(HSOpts.ResourceDir); ++#endif ++ + llvm::sys::path::append(P, "include"); + AddUnmappedPath(P, ExternCSystem, false); + } +@@ -282,7 +295,12 @@ void InitHeaderSearch::AddDefaultCIncludePaths(const llvm::Triple &triple, + } + + case llvm::Triple::Haiku: ++#ifdef HAIKU_HYBRID_SECONDARY ++ AddPath("/boot/system/non-packaged/develop/headers/" HAIKU_HYBRID_SECONDARY, ++ System, false); ++#else + AddPath("/boot/system/non-packaged/develop/headers", System, false); ++#endif + AddPath("/boot/system/develop/headers/os", System, false); + AddPath("/boot/system/develop/headers/os/app", System, false); + AddPath("/boot/system/develop/headers/os/arch", System, false); +@@ -314,6 +332,13 @@ void InitHeaderSearch::AddDefaultCIncludePaths(const llvm::Triple &triple, + AddPath("/boot/system/develop/headers/bsd", System, false); + AddPath("/boot/system/develop/headers/glibc", System, false); + AddPath("/boot/system/develop/headers/posix", System, false); ++#ifdef HAIKU_HYBRID_SECONDARY ++ AddPath("/boot/system/develop/headers/" HAIKU_HYBRID_SECONDARY, System, false); ++ AddPath("/boot/system/develop/headers/" HAIKU_HYBRID_SECONDARY "/os", System, ++ false); ++ AddPath("/boot/system/develop/headers/" HAIKU_HYBRID_SECONDARY "/os/opengl", ++ System, false); ++#endif + AddPath("/boot/system/develop/headers", System, false); + break; + case llvm::Triple::RTEMS: +-- +2.30.0 + + +From 0b2698769c2911197e61a0589f319cbc29f62c22 Mon Sep 17 00:00:00 2001 +From: Jerome Duval +Date: Thu, 7 Apr 2016 18:30:52 +0000 +Subject: add a test for haiku driver. + +* upstream wants a case for libcxx in ToolChains.cpp, so add it. + +diff --git a/test/Driver/haiku.c b/test/Driver/haiku.c +new file mode 100644 +index 0000000..9591739 +--- /dev/null ++++ b/test/Driver/haiku.c +@@ -0,0 +1,12 @@ ++// RUN: %clang -no-canonical-prefixes -target x86_64-unknown-haiku %s -### 2> %t.log ++// RUN: FileCheck --check-prefix=CHECK-X86_64 -input-file %t.log %s ++ ++// CHECK-X86_64: clang{{.*}}" "-cc1" "-triple" "x86_64-unknown-haiku" ++// CHECK-X86_64: gcc{{.*}}" "-o" "a.out" "{{.*}}.o" ++ ++// RUN: %clang -no-canonical-prefixes -target i586-pc-haiku %s -### 2> %t.log ++// RUN: FileCheck --check-prefix=CHECK-X86 -input-file %t.log %s ++ ++// CHECK-X86: clang{{.*}}" "-cc1" "-triple" "i586-pc-haiku" ++// CHECK-X86: gcc{{.*}}" "-o" "a.out" "{{.*}}.o" ++ +-- +2.30.0 + + +From 849fae3751214d060a10bfc1b69ed04a89891ae2 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Duval?= +Date: Mon, 18 Jul 2016 14:13:19 +0200 +Subject: Enable thread-local storage and disable PIE by default + + +diff --git a/lib/Basic/Targets/OSTargets.h b/lib/Basic/Targets/OSTargets.h +index 67fa1a5..ce5f8ff 100644 +--- a/lib/Basic/Targets/OSTargets.h ++++ b/lib/Basic/Targets/OSTargets.h +@@ -309,7 +309,6 @@ public: + this->IntPtrType = TargetInfo::SignedLong; + this->PtrDiffType = TargetInfo::SignedLong; + this->ProcessIDType = TargetInfo::SignedLong; +- this->TLSSupported = false; + switch (Triple.getArch()) { + default: + break; +diff --git a/lib/Driver/ToolChains/Haiku.h b/lib/Driver/ToolChains/Haiku.h +index 2bc9832..50a20c2 100644 +--- a/lib/Driver/ToolChains/Haiku.h ++++ b/lib/Driver/ToolChains/Haiku.h +@@ -22,9 +22,7 @@ public: + Haiku(const Driver &D, const llvm::Triple &Triple, + const llvm::opt::ArgList &Args); + +- bool isPIEDefault() const override { +- return getTriple().getArch() == llvm::Triple::x86_64; +- } ++ bool isPIEDefault() const override { return false; } + + void addLibCxxIncludePaths( + const llvm::opt::ArgList &DriverArgs, +-- +2.30.0 + diff --git a/sys-devel/llvm/patches/lld-12.0.0~rc4.patchset b/sys-devel/llvm/patches/lld-12.0.0~rc4.patchset new file mode 100644 index 000000000..fb160ac74 --- /dev/null +++ b/sys-devel/llvm/patches/lld-12.0.0~rc4.patchset @@ -0,0 +1,70 @@ +From 538789bccfab4c63771a2459d99c44f5c4fe11b7 Mon Sep 17 00:00:00 2001 +From: Jerome Duval +Date: Sat, 3 Apr 2021 23:23:24 +0200 +Subject: MachO needs libunwind somehow, disable + + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index d4e561b..cd853a0 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -197,7 +197,9 @@ endif() + add_subdirectory(docs) + add_subdirectory(COFF) + add_subdirectory(ELF) ++if (NOT HAIKU) + add_subdirectory(MachO) ++endif() + add_subdirectory(MinGW) + add_subdirectory(wasm) + +diff --git a/tools/lld/CMakeLists.txt b/tools/lld/CMakeLists.txt +index 5cff736..2d4907a 100644 +--- a/tools/lld/CMakeLists.txt ++++ b/tools/lld/CMakeLists.txt +@@ -9,6 +9,17 @@ add_lld_tool(lld + ) + export_executable_symbols_for_plugins(lld) + ++if (HAIKU) ++target_link_libraries(lld ++ PRIVATE ++ lldCommon ++ lldCOFF ++ lldDriver ++ lldELF ++ lldMinGW ++ lldWasm ++ ) ++else() + target_link_libraries(lld + PRIVATE + lldCommon +@@ -19,6 +30,7 @@ target_link_libraries(lld + lldMinGW + lldWasm + ) ++endif() + + install(TARGETS lld + RUNTIME DESTINATION bin) +diff --git a/tools/lld/lld.cpp b/tools/lld/lld.cpp +index 77d7792..973fbf3 100644 +--- a/tools/lld/lld.cpp ++++ b/tools/lld/lld.cpp +@@ -153,10 +153,12 @@ static int lldMain(int argc, const char **argv, llvm::raw_ostream &stdoutOS, + return !elf::link(args, exitEarly, stdoutOS, stderrOS); + case WinLink: + return !coff::link(args, exitEarly, stdoutOS, stderrOS); ++#ifndef __HAIKU__ + case Darwin: + return !mach_o::link(args, exitEarly, stdoutOS, stderrOS); + case DarwinNew: + return !macho::link(args, exitEarly, stdoutOS, stderrOS); ++#endif + case Wasm: + return !lld::wasm::link(args, exitEarly, stdoutOS, stderrOS); + default: +-- +2.30.0 + diff --git a/sys-devel/llvm/patches/llvm-12.0.0~rc4.patchset b/sys-devel/llvm/patches/llvm-12.0.0~rc4.patchset new file mode 100644 index 000000000..f3aeabe59 --- /dev/null +++ b/sys-devel/llvm/patches/llvm-12.0.0~rc4.patchset @@ -0,0 +1,100 @@ +From 090bb7d67f32c41a0f3caeb834000fbcc91ac3bb Mon Sep 17 00:00:00 2001 +From: Jerome Duval +Date: Wed, 20 Jan 2016 21:13:28 +0000 +Subject: llvm-config: use /develop/headers instead of /include + +* don't provide obj-root and src-root. + +diff --git a/tools/llvm-config/llvm-config.cpp b/tools/llvm-config/llvm-config.cpp +index 1a2f045..ee0cd89 100644 +--- a/tools/llvm-config/llvm-config.cpp ++++ b/tools/llvm-config/llvm-config.cpp +@@ -357,11 +357,16 @@ int main(int argc, char **argv) { + ("-I" + ActiveIncludeDir + " " + "-I" + ActiveObjRoot + "/include"); + } else { + ActivePrefix = CurrentExecPrefix; ++#ifdef __HAIKU__ ++ ActiveIncludeDir = ActivePrefix + "/develop/headers"; ++ ActiveLibDir = ActivePrefix + "/develop/lib" + LLVM_LIBDIR_SUFFIX; ++#else + ActiveIncludeDir = ActivePrefix + "/include"; ++ ActiveLibDir = ActivePrefix + "/lib" + LLVM_LIBDIR_SUFFIX; ++#endif + SmallString<256> path(StringRef(LLVM_TOOLS_INSTALL_DIR)); + sys::fs::make_absolute(ActivePrefix, path); + ActiveBinDir = std::string(path.str()); +- ActiveLibDir = ActivePrefix + "/lib" + LLVM_LIBDIR_SUFFIX; + ActiveCMakeDir = ActiveLibDir + "/cmake/llvm"; + ActiveIncludeOption = "-I" + ActiveIncludeDir; + } +@@ -581,10 +586,16 @@ int main(int argc, char **argv) { + OS << (LLVM_HAS_RTTI ? "YES" : "NO") << '\n'; + } else if (Arg == "--shared-mode") { + PrintSharedMode = true; +- } else if (Arg == "--obj-root") { +- OS << ActivePrefix << '\n'; +- } else if (Arg == "--src-root") { +- OS << LLVM_SRC_ROOT << '\n'; ++ } else if (Arg == "--obj-root" || Arg == "--src-root") { ++ if (IsInDevelopmentTree) { ++ if (Arg == "--obj-root") ++ OS << ActivePrefix << '\n'; ++ else ++ OS << LLVM_SRC_ROOT << '\n'; ++ } else { ++ llvm::errs() << "llvm-config: sources not installed\n"; ++ exit(1); ++ } + } else if (Arg == "--ignore-libllvm") { + LinkDyLib = false; + LinkMode = BuiltSharedLibs ? LinkModeShared : LinkModeAuto; +-- +2.30.0 + + +From 9c738041dffad94b591ecc4edc3129c6c0d31f31 Mon Sep 17 00:00:00 2001 +From: Calvin Hill +Date: Sun, 9 Sep 2018 16:11:42 +0100 +Subject: import header dir suffix patch from 3dEyes. + + +diff --git a/tools/llvm-config/llvm-config.cpp b/tools/llvm-config/llvm-config.cpp +index ee0cd89..87a23c4 100644 +--- a/tools/llvm-config/llvm-config.cpp ++++ b/tools/llvm-config/llvm-config.cpp +@@ -358,7 +358,7 @@ int main(int argc, char **argv) { + } else { + ActivePrefix = CurrentExecPrefix; + #ifdef __HAIKU__ +- ActiveIncludeDir = ActivePrefix + "/develop/headers"; ++ ActiveIncludeDir = ActivePrefix + "/develop/headers" + LLVM_LIBDIR_SUFFIX; + ActiveLibDir = ActivePrefix + "/develop/lib" + LLVM_LIBDIR_SUFFIX; + #else + ActiveIncludeDir = ActivePrefix + "/include"; +-- +2.30.0 + + +From f3f431960bb61dc388c2eab5d5e0d9ae3e57244a Mon Sep 17 00:00:00 2001 +From: Calvin Hill +Date: Sun, 9 Sep 2018 16:17:33 +0100 +Subject: llvm: allow llvm gtests to build on Haiku. + + +diff --git a/utils/unittest/googletest/include/gtest/internal/gtest-port.h b/utils/unittest/googletest/include/gtest/internal/gtest-port.h +index 17410d3..3e039a8 100644 +--- a/utils/unittest/googletest/include/gtest/internal/gtest-port.h ++++ b/utils/unittest/googletest/include/gtest/internal/gtest-port.h +@@ -793,7 +793,8 @@ using ::std::tuple_size; + (GTEST_OS_MAC && !GTEST_OS_IOS) || \ + (GTEST_OS_WINDOWS_DESKTOP && _MSC_VER >= 1400) || \ + GTEST_OS_WINDOWS_MINGW || GTEST_OS_AIX || GTEST_OS_HPUX || \ +- GTEST_OS_OPENBSD || GTEST_OS_QNX || GTEST_OS_FREEBSD || GTEST_OS_NETBSD) ++ GTEST_OS_OPENBSD || GTEST_OS_QNX || GTEST_OS_FREEBSD || GTEST_OS_NETBSD \ ++ || GTEST_OS_HAIKU) + # define GTEST_HAS_DEATH_TEST 1 + #endif + +-- +2.30.0 +