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="2" SOURCE_URI="https://github.com/llvm/llvm-project/releases/download/llvmorg-$portVersion/llvm-$portVersion.src.tar.xz" CHECKSUM_SHA256="00a1ee1f389f81e9979f3a640a01c431b3021de0d42278f6508391a2f0b81c9a" SOURCE_DIR="llvm-$portVersion.src" SOURCE_URI_2="https://github.com/llvm/llvm-project/releases/download/llvmorg-$portVersion/clang-$portVersion.src.tar.xz" CHECKSUM_SHA256_2="5778512b2e065c204010f88777d44b95250671103e434f9dc7363ab2e3804253" SOURCE_DIR_2="clang-$portVersion.src" SOURCE_URI_3="https://github.com/llvm/llvm-project/releases/download/llvmorg-$portVersion/clang-tools-extra-$portVersion.src.tar.xz" CHECKSUM_SHA256_3="b26fd72a78bd7db998a26270ec9ec6a01346651d88fa87b4b323e13049fb6f07" SOURCE_DIR_3="clang-tools-extra-$portVersion.src" SOURCE_URI_4="https://github.com/llvm/llvm-project/releases/download/llvmorg-$portVersion//compiler-rt-$portVersion.src.tar.xz" CHECKSUM_SHA256_4="c2bfab95c9986318318363d7f371a85a95e333bc0b34fbfa52edbd3f5e3a9077" SOURCE_DIR_4="compiler-rt-$portVersion.src" SOURCE_URI_5="https://github.com/llvm/llvm-project/releases/download/llvmorg-$portVersion//lld-$portVersion.src.tar.xz" CHECKSUM_SHA256_5="86262bad3e2fd784ba8c5e2158d7aa36f12b85f2515e95bc81d65d75bb9b0c82" SOURCE_DIR_5="lld-$portVersion.src" PATCHES="llvm-$portVersion.patchset" PATCHES_2="clang-$portVersion.patchset" ARCHITECTURES="!x86_gcc2 ?x86 x86_64" SECONDARY_ARCHITECTURES="x86" PROVIDES=" llvm9$secondaryArchSuffix = $portVersion compat >= 9 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 >= 9 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 >= 9 devel:libLLVM_$portVersion$secondaryArchSuffix = $portVersion compat >= 9 devel:libLLVM_9$secondaryArchSuffix = $portVersion compat >= 9 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 >= 9 devel:libRemarks$secondaryArchSuffix = $portVersion compat >= 9 # 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_9$secondaryArchSuffix lib:libz$secondaryArchSuffix " CONFLICTS=" llvm$secondaryArchSuffix llvm6$secondaryArchSuffix llvm7$secondaryArchSuffix llvm8$secondaryArchSuffix " PROVIDES_clang=" llvm9${secondaryArchSuffix}_clang = $portVersion cmd:c_index_test = $portVersion cmd:clang = $portVersion cmd:clang++ = $portVersion cmd:clang_9 = $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 >= 9 devel:libclang_cpp$secondaryArchSuffix = $portVersion compat >= 9 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_9$secondaryArchSuffix lib:libz$secondaryArchSuffix " CONFLICTS_clang=" llvm${secondaryArchSuffix}_clang llvm6${secondaryArchSuffix}_clang llvm7${secondaryArchSuffix}_clang llvm8${secondaryArchSuffix}_clang " PROVIDES_clang_analysis=" llvm9${secondaryArchSuffix}_clang_analysis = $portVersion cmd:c++_analyzer = $portVersion cmd:ccc_analyzer = $portVersion cmd:scan_build = $portVersion cmd:scan_view = $portVersion " REQUIRES_clang_analysis=" llvm9${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 " PROVIDES_lld=" llvm9${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_9$secondaryArchSuffix " PROVIDES_libs=" llvm9${secondaryArchSuffix}_libs = $portVersion lib:libclang$secondaryArchSuffix = $portVersion compat >= 9 lib:libclang_cpp$secondaryArchSuffix = $portVersion compat >= 9 lib:libLLVM_9$secondaryArchSuffix = 9.0.0 compat >= 9.0 lib:libLTO$secondaryArchSuffix = 9.0.0 compat >= 9 lib:libRemarks$secondaryArchSuffix = 9.0.0 compat >= 9 " REQUIRES_libs=" haiku$secondaryArchSuffix lib:libz$secondaryArchSuffix " PYTHON3_VERSION="3.7" PROVIDES_python3=" llvm9${secondaryArchSuffix}_python3 = $portVersion cmd:lit " REQUIRES_python3=" setuptools_python3 cmd:python$PYTHON3_VERSION " BUILD_REQUIRES=" haiku${secondaryArchSuffix}_devel devel:libz$secondaryArchSuffix setuptools_python3 " BUILD_PREREQUIRES=" cmd:cmake cmd:diff cmd:find cmd:gcc$secondaryArchSuffix cmd:grep cmd:groff cmd:ld$secondaryArchSuffix cmd:make cmd:ninja cmd:python2 cmd:python$PYTHON3_VERSION cmd:sed " BUILD() { # Add clang tools mkdir -p tools/clang cp -rdn $sourceDir2/* tools/clang/ # Add clang tools's tool's (really llvm?) mkdir -p tools/clang/tools/extra cp -rdn $sourceDir3/* tools/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_ENABLE_BUILD_TESTS=YES \ -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 }