1deltask do_configure 2deltask do_compile 3deltask do_install 4deltask do_populate_sysroot 5deltask do_populate_lic 6RM_WORK_EXCLUDE += "${PN}" 7 8inherit nopackages 9 10PN = "llvm-project-source-${PV}" 11WORKDIR = "${TMPDIR}/work-shared/llvm-project-source-${PV}-${PR}" 12SSTATE_SWSPEC = "sstate:llvm-project-source::${PV}:${PR}::${SSTATE_VERSION}:" 13 14STAMP = "${STAMPS_DIR}/work-shared/llvm-project-source-${PV}-${PR}" 15STAMPCLEAN = "${STAMPS_DIR}/work-shared/llvm-project-source-${PV}-*" 16 17INHIBIT_DEFAULT_DEPS = "1" 18DEPENDS = "" 19PACKAGES = "" 20TARGET_ARCH = "allarch" 21TARGET_AS_ARCH = "none" 22TARGET_CC_ARCH = "none" 23TARGET_LD_ARCH = "none" 24TARGET_OS = "linux" 25baselib = "lib" 26PACKAGE_ARCH = "all" 27 28# space separated list of additional distro vendor values we want to support e.g. 29# "yoe webos" or "-yoe -webos" '-' is optional 30CLANG_EXTRA_OE_VENDORS ?= "${TARGET_VENDOR} ${SDK_VENDOR}" 31# Extra OE DISTRO that want to support as build host. space separated list of additional distro. 32# ":" separated the ID in "/etc/os-release" and the triple for finding gcc on this OE DISTRO. 33# eg: "poky:poky wrlinux:wrs" 34CLANG_EXTRA_OE_DISTRO ?= "poky:poky" 35# Match with MULTILIB_GLOBAL_VARIANTS 36MULTILIB_VARIANTS = "lib32 lib64 libx32" 37python add_distro_vendor() { 38 import subprocess 39 case = "" 40 triple = "" 41 vendors = d.getVar('CLANG_EXTRA_OE_VENDORS') 42 multilib_variants = (d.getVar("MULTILIB_VARIANTS") or "").split() 43 vendors_to_add = [] 44 for vendor in vendors.split(): 45 # convert -yoe into yoe 46 vendor = vendor.lstrip('-') 47 # generate possible multilib vendor names for yoe 48 # such as yoemllib32 49 vendors_to_add.extend([vendor + 'ml' + variant for variant in multilib_variants]) 50 # skip oe since already part of the cpp file 51 if vendor != "oe": 52 vendors_to_add.append(vendor) 53 54 for vendor_to_add in vendors_to_add: 55 case += '\\n .Case("' + vendor_to_add + '", Triple::OpenEmbedded)' 56 triple += ' "x86_64-' + vendor_to_add + '-linux",' 57 58 bb.note("Adding support following TARGET_VENDOR values") 59 bb.note(str(vendors_to_add)) 60 bb.note("in llvm/lib/Support/Triple.cpp and ${S}/clang/lib/Driver/ToolChains/Gnu.cpp") 61 cmd = d.expand("sed -i 's#//CLANG_EXTRA_OE_VENDORS_TRIPLES#%s#g' ${S}/clang/lib/Driver/ToolChains/Gnu.cpp" % (triple)) 62 subprocess.check_output(cmd, stderr=subprocess.STDOUT, shell=True) 63 cmd = d.expand("sed -i 's#//CLANG_EXTRA_OE_VENDORS_CASES#%s#g' -i ${S}/llvm/lib/Support/Triple.cpp" % (case)) 64 subprocess.check_output(cmd, stderr=subprocess.STDOUT, shell=True) 65 66 67 case = "" 68 triple = "" 69 name = "" 70 check = "" 71 oe_names = "" 72 distros = d.getVar('CLANG_EXTRA_OE_DISTRO') 73 for distro in distros.split(): 74 distro_id = distro.split(":")[0].replace('-','_') 75 distro_triple = distro.split(":")[1] 76 case += '\\n .Case("' + distro_id + '", Distro::' + distro_id.upper() + ')' 77 triple += '\\n if (Distro.Is' + distro_id.upper() + '())\\n return "x86_64-' + distro_triple + '-linux",' 78 name += '\\n '+ distro_id.upper() + ',' 79 check += '\\nbool Is' + distro_id.upper() + '() const { return DistroVal == ' + distro_id.upper() + '; }' 80 oe_names += distro_id.upper() + ' ||' 81 82 check += '\\nbool IsOpenEmbedded() const { return DistroVal == ' + oe_names[0:-3] + '; }' 83 84 cmd = d.expand("sed -i 's#//CLANG_EXTRA_OE_DISTRO_NAME#%s#g' ${S}/clang/include/clang/Driver/Distro.h" % (name)) 85 subprocess.check_output(cmd, stderr=subprocess.STDOUT, shell=True) 86 cmd = d.expand("sed -i 's#//CLANG_EXTRA_OE_DISTRO_CHECK#%s#g' ${S}/clang/include/clang/Driver/Distro.h" % (check)) 87 subprocess.check_output(cmd, stderr=subprocess.STDOUT, shell=True) 88 cmd = d.expand("sed -i 's#//CLANG_EXTRA_OE_DISTRO_TRIPLES#%s#g' ${S}/clang/lib/Driver/ToolChains/Linux.cpp" % (triple)) 89 subprocess.check_output(cmd, stderr=subprocess.STDOUT, shell=True) 90 cmd = d.expand("sed -i 's#//CLANG_EXTRA_OE_DISTRO_CASES#%s#g' -i ${S}/clang/lib/Driver/Distro.cpp" % (case)) 91 subprocess.check_output(cmd, stderr=subprocess.STDOUT, shell=True) 92} 93 94do_patch[postfuncs] += "add_distro_vendor" 95do_create_spdx[depends] += "${PN}:do_patch" 96 97