diff options
Diffstat (limited to 'classes/cross.bbclass')
| -rw-r--r-- | classes/cross.bbclass | 77 |
1 files changed, 46 insertions, 31 deletions
diff --git a/classes/cross.bbclass b/classes/cross.bbclass index 68e3803f3e..d3b27e6cf0 100644 --- a/classes/cross.bbclass +++ b/classes/cross.bbclass @@ -1,7 +1,15 @@ +# We want cross packages to be relocatable +inherit relocatable + # Cross packages are built indirectly via dependency, # no need for them to be a direct target of 'world' EXCLUDE_FROM_WORLD = "1" +# In order to keep TARGET_PREFIX decoupled from TARGET_SYS, let's force the +# binary names to match the former, rather than relying on autoconf's implicit +# prefixing based on the latter. +EXTRA_OECONF_append = " --program-prefix=${TARGET_PREFIX}" + # Save PACKAGE_ARCH before changing HOST_ARCH OLD_PACKAGE_ARCH := "${PACKAGE_ARCH}" PACKAGE_ARCH = "${OLD_PACKAGE_ARCH}" @@ -9,8 +17,6 @@ PACKAGE_ARCH = "${OLD_PACKAGE_ARCH}" OLD_BASE_PACKAGE_ARCH := "${BASE_PACKAGE_ARCH}" BASE_PACKAGE_ARCH = "${OLD_BASE_PACKAGE_ARCH}" -PACKAGES = "" - HOST_ARCH = "${BUILD_ARCH}" HOST_VENDOR = "${BUILD_VENDOR}" HOST_OS = "${BUILD_OS}" @@ -27,40 +33,49 @@ LDFLAGS_build-darwin = "-L${STAGING_LIBDIR_NATIVE}" TOOLCHAIN_OPTIONS = "" -# Overrides for paths +DEPENDS_GETTEXT = "gettext-native" -# Path prefixes -base_prefix = "${exec_prefix}" -prefix = "${CROSS_DIR}" -exec_prefix = "${prefix}" +# Path mangling needed by the cross packaging +# Note that we use := here to ensure that libdir and includedir are +# target paths, not CROSS_DIR paths. +target_libdir := "${libdir}" +target_includedir := "${includedir}" +target_base_libdir := "${base_libdir}" +target_prefix := "${prefix}" -# Base paths -base_bindir = "${base_prefix}/bin" +# Overrides for paths +base_prefix = "${STAGING_DIR_NATIVE}" +prefix = "${base_prefix}${prefix_native}/${BASE_PACKAGE_ARCH}" +exec_prefix = "${prefix}" base_sbindir = "${base_prefix}/bin" -base_libdir = "${base_prefix}/lib" - -# Architecture independent paths -datadir = "${prefix}/share" -sysconfdir = "${prefix}/etc" -sharedstatedir = "${prefix}/com" -localstatedir = "${prefix}/var" -infodir = "${datadir}/info" -mandir = "${datadir}/man" -docdir = "${datadir}/doc" -servicedir = "${prefix}/srv" - -# Architecture dependent paths -bindir = "${exec_prefix}/bin" sbindir = "${exec_prefix}/bin" -libexecdir = "${exec_prefix}/libexec" -libdir = "${exec_prefix}/lib" -includedir = "${exec_prefix}/include" -oldincludedir = "${exec_prefix}/include" -do_stage () { - oe_runmake install -} +# staging should be special for cross +STAGING_DIR_HOST = "" +SHLIBSDIR = "${STAGING_DIR_NATIVE}/shlibs" do_install () { - : + oe_runmake 'DESTDIR=${D}' install } + +# +# Override the default sysroot staging copy since this won't look like a target system +# +sysroot_stage_all() { + sysroot_stage_dir ${D} ${SYSROOT_DESTDIR} + install -d ${SYSROOT_DESTDIR}${STAGING_DIR_TARGET}${target_base_libdir}/ + install -d ${SYSROOT_DESTDIR}${STAGING_DIR_TARGET}${target_libdir}/ + if [ -d ${SYSROOT_DESTDIR}${target_base_libdir} ]; then + sysroot_stage_libdir ${SYSROOT_DESTDIR}${target_base_libdir} ${SYSROOT_DESTDIR}${STAGING_DIR_TARGET}${target_base_libdir} + fi + if [ -d ${SYSROOT_DESTDIR}${target_libdir} ]; then + sysroot_stage_libdir ${SYSROOT_DESTDIR}${target_libdir} ${SYSROOT_DESTDIR}${STAGING_DIR_TARGET}${target_libdir} + fi +} + +# +# Cross .la files have more path issues we have to correct +SYSROOTEXTRALIBDIRSED = '-e "/^libdir=/s,.*,libdir=${STAGING_DIR_TARGET}${target_libdir},g" \ + -e "/^dependency_libs=/s,\([[:space:]']\)-L${STAGING_LIBDIR_NATIVE},,g" \ +' + |
