| Patrick Williams | c124f4f | 2015-09-15 14:41:29 -0500 | [diff] [blame] | 1 | # We want native packages to be relocatable | 
|  | 2 | inherit relocatable | 
|  | 3 |  | 
|  | 4 | # Native packages are built indirectly via dependency, | 
|  | 5 | # no need for them to be a direct target of 'world' | 
|  | 6 | EXCLUDE_FROM_WORLD = "1" | 
|  | 7 |  | 
|  | 8 | PACKAGES = "" | 
|  | 9 | PACKAGES_class-native = "" | 
|  | 10 | PACKAGES_DYNAMIC = "" | 
|  | 11 | PACKAGES_DYNAMIC_class-native = "" | 
|  | 12 | PACKAGE_ARCH = "${BUILD_ARCH}" | 
|  | 13 |  | 
|  | 14 | # used by cmake class | 
|  | 15 | OECMAKE_RPATH = "${libdir}" | 
|  | 16 | OECMAKE_RPATH_class-native = "${libdir}" | 
|  | 17 |  | 
|  | 18 | # When this class has packaging enabled, setting | 
|  | 19 | # RPROVIDES becomes unnecessary. | 
|  | 20 | RPROVIDES = "${PN}" | 
|  | 21 |  | 
|  | 22 | TARGET_ARCH = "${BUILD_ARCH}" | 
|  | 23 | TARGET_OS = "${BUILD_OS}" | 
|  | 24 | TARGET_VENDOR = "${BUILD_VENDOR}" | 
|  | 25 | TARGET_PREFIX = "${BUILD_PREFIX}" | 
|  | 26 | TARGET_CC_ARCH = "${BUILD_CC_ARCH}" | 
|  | 27 | TARGET_LD_ARCH = "${BUILD_LD_ARCH}" | 
|  | 28 | TARGET_AS_ARCH = "${BUILD_AS_ARCH}" | 
|  | 29 | TARGET_CPPFLAGS = "${BUILD_CPPFLAGS}" | 
|  | 30 | TARGET_CFLAGS = "${BUILD_CFLAGS}" | 
|  | 31 | TARGET_CXXFLAGS = "${BUILD_CXXFLAGS}" | 
|  | 32 | TARGET_LDFLAGS = "${BUILD_LDFLAGS}" | 
|  | 33 | TARGET_FPU = "" | 
|  | 34 |  | 
|  | 35 | HOST_ARCH = "${BUILD_ARCH}" | 
|  | 36 | HOST_OS = "${BUILD_OS}" | 
|  | 37 | HOST_VENDOR = "${BUILD_VENDOR}" | 
|  | 38 | HOST_PREFIX = "${BUILD_PREFIX}" | 
|  | 39 | HOST_CC_ARCH = "${BUILD_CC_ARCH}" | 
|  | 40 | HOST_LD_ARCH = "${BUILD_LD_ARCH}" | 
|  | 41 | HOST_AS_ARCH = "${BUILD_AS_ARCH}" | 
|  | 42 |  | 
|  | 43 | CPPFLAGS = "${BUILD_CPPFLAGS}" | 
|  | 44 | CFLAGS = "${BUILD_CFLAGS}" | 
| Patrick Williams | d8c66bc | 2016-06-20 12:57:21 -0500 | [diff] [blame] | 45 | CXXFLAGS = "${BUILD_CXXFLAGS}" | 
| Patrick Williams | c124f4f | 2015-09-15 14:41:29 -0500 | [diff] [blame] | 46 | LDFLAGS = "${BUILD_LDFLAGS}" | 
| Patrick Williams | c124f4f | 2015-09-15 14:41:29 -0500 | [diff] [blame] | 47 |  | 
|  | 48 | STAGING_BINDIR = "${STAGING_BINDIR_NATIVE}" | 
|  | 49 | STAGING_BINDIR_CROSS = "${STAGING_BINDIR_NATIVE}" | 
|  | 50 |  | 
|  | 51 | # native pkg doesn't need the TOOLCHAIN_OPTIONS. | 
|  | 52 | TOOLCHAIN_OPTIONS = "" | 
|  | 53 |  | 
| Patrick Williams | c124f4f | 2015-09-15 14:41:29 -0500 | [diff] [blame] | 54 | # Don't build ptest natively | 
|  | 55 | PTEST_ENABLED = "0" | 
|  | 56 |  | 
|  | 57 | # Don't use site files for native builds | 
|  | 58 | export CONFIG_SITE = "${COREBASE}/meta/site/native" | 
|  | 59 |  | 
|  | 60 | # set the compiler as well. It could have been set to something else | 
|  | 61 | export CC = "${BUILD_CC}" | 
|  | 62 | export CXX = "${BUILD_CXX}" | 
|  | 63 | export FC = "${BUILD_FC}" | 
|  | 64 | export CPP = "${BUILD_CPP}" | 
|  | 65 | export LD = "${BUILD_LD}" | 
|  | 66 | export CCLD = "${BUILD_CCLD}" | 
|  | 67 | export AR = "${BUILD_AR}" | 
|  | 68 | export AS = "${BUILD_AS}" | 
|  | 69 | export RANLIB = "${BUILD_RANLIB}" | 
|  | 70 | export STRIP = "${BUILD_STRIP}" | 
|  | 71 | export NM = "${BUILD_NM}" | 
|  | 72 |  | 
|  | 73 | # Path prefixes | 
|  | 74 | base_prefix = "${STAGING_DIR_NATIVE}" | 
|  | 75 | prefix = "${STAGING_DIR_NATIVE}${prefix_native}" | 
|  | 76 | exec_prefix = "${STAGING_DIR_NATIVE}${prefix_native}" | 
|  | 77 |  | 
|  | 78 | bindir = "${STAGING_BINDIR_NATIVE}" | 
|  | 79 | sbindir = "${STAGING_SBINDIR_NATIVE}" | 
| Brad Bishop | 1a4b7ee | 2018-12-16 17:11:34 -0800 | [diff] [blame] | 80 | base_libdir = "${STAGING_LIBDIR_NATIVE}" | 
| Patrick Williams | c124f4f | 2015-09-15 14:41:29 -0500 | [diff] [blame] | 81 | libdir = "${STAGING_LIBDIR_NATIVE}" | 
|  | 82 | includedir = "${STAGING_INCDIR_NATIVE}" | 
|  | 83 | sysconfdir = "${STAGING_ETCDIR_NATIVE}" | 
|  | 84 | datadir = "${STAGING_DATADIR_NATIVE}" | 
|  | 85 |  | 
|  | 86 | baselib = "lib" | 
|  | 87 |  | 
| Patrick Williams | c0f7c04 | 2017-02-23 20:41:17 -0600 | [diff] [blame] | 88 | export lt_cv_sys_lib_dlsearch_path_spec = "${libdir} ${base_libdir} /lib /lib64 /usr/lib /usr/lib64" | 
| Patrick Williams | c124f4f | 2015-09-15 14:41:29 -0500 | [diff] [blame] | 89 |  | 
|  | 90 | NATIVE_PACKAGE_PATH_SUFFIX ?= "" | 
|  | 91 | bindir .= "${NATIVE_PACKAGE_PATH_SUFFIX}" | 
| Brad Bishop | 1a4b7ee | 2018-12-16 17:11:34 -0800 | [diff] [blame] | 92 | base_libdir .= "${NATIVE_PACKAGE_PATH_SUFFIX}" | 
| Patrick Williams | c124f4f | 2015-09-15 14:41:29 -0500 | [diff] [blame] | 93 | libdir .= "${NATIVE_PACKAGE_PATH_SUFFIX}" | 
|  | 94 | libexecdir .= "${NATIVE_PACKAGE_PATH_SUFFIX}" | 
|  | 95 |  | 
|  | 96 | do_populate_sysroot[sstate-inputdirs] = "${SYSROOT_DESTDIR}/${STAGING_DIR_NATIVE}/" | 
| Brad Bishop | 6e60e8b | 2018-02-01 10:27:11 -0500 | [diff] [blame] | 97 | do_populate_sysroot[sstate-outputdirs] = "${COMPONENTS_DIR}/${PACKAGE_ARCH}/${PN}" | 
| Patrick Williams | c124f4f | 2015-09-15 14:41:29 -0500 | [diff] [blame] | 98 |  | 
|  | 99 | # Since we actually install these into situ there is no staging prefix | 
|  | 100 | STAGING_DIR_HOST = "" | 
|  | 101 | STAGING_DIR_TARGET = "" | 
|  | 102 | PKG_CONFIG_DIR = "${libdir}/pkgconfig" | 
|  | 103 |  | 
|  | 104 | EXTRA_NATIVE_PKGCONFIG_PATH ?= "" | 
|  | 105 | PKG_CONFIG_PATH .= "${EXTRA_NATIVE_PKGCONFIG_PATH}" | 
|  | 106 | PKG_CONFIG_SYSROOT_DIR = "" | 
| Patrick Williams | d8c66bc | 2016-06-20 12:57:21 -0500 | [diff] [blame] | 107 | PKG_CONFIG_SYSTEM_LIBRARY_PATH[unexport] = "1" | 
|  | 108 | PKG_CONFIG_SYSTEM_INCLUDE_PATH[unexport] = "1" | 
| Patrick Williams | c124f4f | 2015-09-15 14:41:29 -0500 | [diff] [blame] | 109 |  | 
| Brad Bishop | d7bf8c1 | 2018-02-25 22:55:05 -0500 | [diff] [blame] | 110 | # we dont want libc-*libc to kick in for native recipes | 
| Patrick Williams | c124f4f | 2015-09-15 14:41:29 -0500 | [diff] [blame] | 111 | LIBCOVERRIDE = "" | 
|  | 112 | CLASSOVERRIDE = "class-native" | 
|  | 113 | MACHINEOVERRIDES = "" | 
| Brad Bishop | 6e60e8b | 2018-02-01 10:27:11 -0500 | [diff] [blame] | 114 | MACHINE_FEATURES = "" | 
| Patrick Williams | c124f4f | 2015-09-15 14:41:29 -0500 | [diff] [blame] | 115 |  | 
|  | 116 | PATH_prepend = "${COREBASE}/scripts/native-intercept:" | 
|  | 117 |  | 
| Brad Bishop | 6e60e8b | 2018-02-01 10:27:11 -0500 | [diff] [blame] | 118 | # This class encodes staging paths into its scripts data so can only be | 
|  | 119 | # reused if we manipulate the paths. | 
|  | 120 | SSTATE_SCAN_CMD ?= "${SSTATE_SCAN_CMD_NATIVE}" | 
|  | 121 |  | 
| Brad Bishop | 1932369 | 2019-04-05 15:28:33 -0400 | [diff] [blame] | 122 | # No strip sysroot when DEBUG_BUILD is enabled | 
|  | 123 | INHIBIT_SYSROOT_STRIP ?= "${@oe.utils.vartrue('DEBUG_BUILD', '1', '', d)}" | 
|  | 124 |  | 
| Patrick Williams | c124f4f | 2015-09-15 14:41:29 -0500 | [diff] [blame] | 125 | python native_virtclass_handler () { | 
| Brad Bishop | 6e60e8b | 2018-02-01 10:27:11 -0500 | [diff] [blame] | 126 | pn = e.data.getVar("PN") | 
|  | 127 | if not pn.endswith("-native"): | 
| Patrick Williams | c124f4f | 2015-09-15 14:41:29 -0500 | [diff] [blame] | 128 | return | 
|  | 129 |  | 
| Brad Bishop | 6e60e8b | 2018-02-01 10:27:11 -0500 | [diff] [blame] | 130 | # Set features here to prevent appends and distro features backfill | 
|  | 131 | # from modifying native distro features | 
|  | 132 | features = set(d.getVar("DISTRO_FEATURES_NATIVE").split()) | 
|  | 133 | filtered = set(bb.utils.filter("DISTRO_FEATURES", d.getVar("DISTRO_FEATURES_FILTER_NATIVE"), d).split()) | 
|  | 134 | d.setVar("DISTRO_FEATURES", " ".join(sorted(features | filtered))) | 
|  | 135 |  | 
|  | 136 | classextend = e.data.getVar('BBCLASSEXTEND') or "" | 
|  | 137 | if "native" not in classextend: | 
| Patrick Williams | c124f4f | 2015-09-15 14:41:29 -0500 | [diff] [blame] | 138 | return | 
|  | 139 |  | 
|  | 140 | def map_dependencies(varname, d, suffix = ""): | 
|  | 141 | if suffix: | 
|  | 142 | varname = varname + "_" + suffix | 
| Brad Bishop | 6e60e8b | 2018-02-01 10:27:11 -0500 | [diff] [blame] | 143 | deps = d.getVar(varname) | 
| Patrick Williams | c124f4f | 2015-09-15 14:41:29 -0500 | [diff] [blame] | 144 | if not deps: | 
|  | 145 | return | 
|  | 146 | deps = bb.utils.explode_deps(deps) | 
|  | 147 | newdeps = [] | 
|  | 148 | for dep in deps: | 
|  | 149 | if dep == pn: | 
|  | 150 | continue | 
|  | 151 | elif "-cross-" in dep: | 
|  | 152 | newdeps.append(dep.replace("-cross", "-native")) | 
|  | 153 | elif not dep.endswith("-native"): | 
|  | 154 | newdeps.append(dep + "-native") | 
|  | 155 | else: | 
|  | 156 | newdeps.append(dep) | 
|  | 157 | d.setVar(varname, " ".join(newdeps)) | 
|  | 158 |  | 
| Patrick Williams | c124f4f | 2015-09-15 14:41:29 -0500 | [diff] [blame] | 159 | map_dependencies("DEPENDS", e.data) | 
| Brad Bishop | 6e60e8b | 2018-02-01 10:27:11 -0500 | [diff] [blame] | 160 | for pkg in [e.data.getVar("PN"), "", "${PN}"]: | 
| Patrick Williams | c124f4f | 2015-09-15 14:41:29 -0500 | [diff] [blame] | 161 | map_dependencies("RDEPENDS", e.data, pkg) | 
|  | 162 | map_dependencies("RRECOMMENDS", e.data, pkg) | 
|  | 163 | map_dependencies("RSUGGESTS", e.data, pkg) | 
|  | 164 | map_dependencies("RPROVIDES", e.data, pkg) | 
|  | 165 | map_dependencies("RREPLACES", e.data, pkg) | 
|  | 166 |  | 
| Brad Bishop | 6e60e8b | 2018-02-01 10:27:11 -0500 | [diff] [blame] | 167 | provides = e.data.getVar("PROVIDES") | 
| Patrick Williams | c124f4f | 2015-09-15 14:41:29 -0500 | [diff] [blame] | 168 | nprovides = [] | 
|  | 169 | for prov in provides.split(): | 
|  | 170 | if prov.find(pn) != -1: | 
|  | 171 | nprovides.append(prov) | 
|  | 172 | elif not prov.endswith("-native"): | 
|  | 173 | nprovides.append(prov.replace(prov, prov + "-native")) | 
|  | 174 | else: | 
|  | 175 | nprovides.append(prov) | 
|  | 176 | e.data.setVar("PROVIDES", ' '.join(nprovides)) | 
|  | 177 |  | 
|  | 178 |  | 
|  | 179 | } | 
|  | 180 |  | 
|  | 181 | addhandler native_virtclass_handler | 
|  | 182 | native_virtclass_handler[eventmask] = "bb.event.RecipePreFinalise" | 
|  | 183 |  | 
| Brad Bishop | 6e60e8b | 2018-02-01 10:27:11 -0500 | [diff] [blame] | 184 | python do_addto_recipe_sysroot () { | 
|  | 185 | bb.build.exec_func("extend_recipe_sysroot", d) | 
|  | 186 | } | 
|  | 187 | addtask addto_recipe_sysroot after do_populate_sysroot | 
|  | 188 |  | 
| Patrick Williams | d8c66bc | 2016-06-20 12:57:21 -0500 | [diff] [blame] | 189 | inherit nopackages | 
| Patrick Williams | c124f4f | 2015-09-15 14:41:29 -0500 | [diff] [blame] | 190 |  | 
|  | 191 | do_packagedata[stamp-extra-info] = "" | 
|  | 192 | do_populate_sysroot[stamp-extra-info] = "" | 
|  | 193 |  | 
|  | 194 | USE_NLS = "no" | 
| Brad Bishop | 1932369 | 2019-04-05 15:28:33 -0400 | [diff] [blame] | 195 |  | 
|  | 196 | RECIPERDEPTASK = "do_populate_sysroot" | 
|  | 197 | do_populate_sysroot[rdeptask] = "${RECIPERDEPTASK}" |