summaryrefslogtreecommitdiff
path: root/meta/classes/nativesdk.bbclass
diff options
context:
space:
mode:
Diffstat (limited to 'meta/classes/nativesdk.bbclass')
-rw-r--r--meta/classes/nativesdk.bbclass111
1 files changed, 111 insertions, 0 deletions
diff --git a/meta/classes/nativesdk.bbclass b/meta/classes/nativesdk.bbclass
new file mode 100644
index 000000000..a58fce204
--- /dev/null
+++ b/meta/classes/nativesdk.bbclass
@@ -0,0 +1,111 @@
+inherit relocatable
+
+# SDK packages are built either explicitly by the user,
+# or indirectly via dependency. No need to be in 'world'.
+EXCLUDE_FROM_WORLD = "1"
+
+STAGING_BINDIR_TOOLCHAIN = "${STAGING_DIR_NATIVE}${bindir_native}/${SDK_ARCH}${SDK_VENDOR}-${SDK_OS}"
+
+# we dont want libc-uclibc or libc-glibc to kick in for nativesdk recipes
+LIBCOVERRIDE = ""
+CLASSOVERRIDE = "class-nativesdk"
+
+#
+# Update PACKAGE_ARCH and PACKAGE_ARCHS
+#
+PACKAGE_ARCH = "${SDK_ARCH}-nativesdk"
+PACKAGE_ARCHS = "${SDK_PACKAGE_ARCHS}"
+
+STAGING_DIR_HOST = "${STAGING_DIR}/${MULTIMACH_HOST_SYS}"
+STAGING_DIR_TARGET = "${STAGING_DIR}/${MULTIMACH_TARGET_SYS}"
+
+HOST_ARCH = "${SDK_ARCH}"
+HOST_VENDOR = "${SDK_VENDOR}"
+HOST_OS = "${SDK_OS}"
+HOST_PREFIX = "${SDK_PREFIX}"
+HOST_CC_ARCH = "${SDK_CC_ARCH}"
+HOST_LD_ARCH = "${SDK_LD_ARCH}"
+HOST_AS_ARCH = "${SDK_AS_ARCH}"
+#HOST_SYS = "${HOST_ARCH}${TARGET_VENDOR}-${HOST_OS}"
+
+TARGET_ARCH = "${SDK_ARCH}"
+TARGET_VENDOR = "${SDK_VENDOR}"
+TARGET_OS = "${SDK_OS}"
+TARGET_PREFIX = "${SDK_PREFIX}"
+TARGET_CC_ARCH = "${SDK_CC_ARCH}"
+TARGET_LD_ARCH = "${SDK_LD_ARCH}"
+TARGET_AS_ARCH = "${SDK_AS_ARCH}"
+TARGET_FPU = ""
+
+CPPFLAGS = "${BUILDSDK_CPPFLAGS}"
+CFLAGS = "${BUILDSDK_CFLAGS}"
+CXXFLAGS = "${BUILDSDK_CFLAGS}"
+LDFLAGS = "${BUILDSDK_LDFLAGS}"
+
+# Change to place files in SDKPATH
+base_prefix = "${SDKPATHNATIVE}"
+prefix = "${SDKPATHNATIVE}${prefix_nativesdk}"
+exec_prefix = "${SDKPATHNATIVE}${prefix_nativesdk}"
+baselib = "lib"
+
+export PKG_CONFIG_DIR = "${STAGING_DIR_HOST}${libdir}/pkgconfig"
+export PKG_CONFIG_SYSROOT_DIR = "${STAGING_DIR_HOST}"
+
+PKGSUFFIX = "-nativesdk"
+
+python nativesdk_virtclass_handler () {
+ if not isinstance(e, bb.event.RecipePreFinalise):
+ return
+
+ pn = e.data.getVar("PN", True)
+ if not pn.endswith("-nativesdk"):
+ return
+
+ e.data.setVar("OVERRIDES", e.data.getVar("OVERRIDES", False) + ":virtclass-nativesdk")
+}
+
+python () {
+ pn = d.getVar("PN", True)
+ if not pn.endswith("-nativesdk"):
+ return
+
+ def map_dependencies(varname, d, suffix = ""):
+ if suffix:
+ varname = varname + "_" + suffix
+ deps = d.getVar(varname, True)
+ if not deps:
+ return
+ deps = bb.utils.explode_deps(deps)
+ newdeps = []
+ for dep in deps:
+ if dep.endswith("-native") or dep.endswith("-cross"):
+ newdeps.append(dep)
+ elif dep.endswith("-gcc-intermediate") or dep.endswith("-gcc-initial") or dep.endswith("-gcc") or dep.endswith("-g++"):
+ newdeps.append(dep + "-crosssdk")
+ elif not dep.endswith("-nativesdk"):
+ newdeps.append(dep.replace("-nativesdk", "") + "-nativesdk")
+ else:
+ newdeps.append(dep)
+ d.setVar(varname, " ".join(newdeps))
+
+ map_dependencies("DEPENDS", d)
+ #for pkg in (d.getVar("PACKAGES", True).split() + [""]):
+ # map_dependencies("RDEPENDS", d, pkg)
+ # map_dependencies("RRECOMMENDS", d, pkg)
+ # map_dependencies("RSUGGESTS", d, pkg)
+ # map_dependencies("RPROVIDES", d, pkg)
+ # map_dependencies("RREPLACES", d, pkg)
+
+ provides = d.getVar("PROVIDES", True)
+ for prov in provides.split():
+ if prov.find(pn) != -1:
+ continue
+ if not prov.endswith("-nativesdk"):
+ provides = provides.replace(prov, prov + "-nativesdk")
+ d.setVar("PROVIDES", provides)
+}
+
+addhandler nativesdk_virtclass_handler
+
+do_populate_sysroot[stamp-extra-info] = ""
+do_package[stamp-extra-info] = ""