diff --git a/classes/cmake.yaml b/classes/cmake.yaml index 1020fc38..babc502a 100644 --- a/classes/cmake.yaml +++ b/classes/cmake.yaml @@ -146,6 +146,7 @@ buildSetup: | -DCMAKE_BUILD_TYPE=Bob \ -DCMAKE_INSTALL_PREFIX="$CMAKE_INSTALL_PREFIX" \ -DCMAKE_INSTALL_SYSCONFDIR="$CMAKE_INSTALL_SYSCONFDIR" \ + -DCMAKE_INSTALL_LIBDIR="lib" \ -DBUILD_SHARED_LIBS=$BUILD_SHARED_LIBS \ -DCMAKE_MSVC_RUNTIME_LIBRARY="" \ "${@:2}" diff --git a/classes/sandbox-toolchain.yaml b/classes/sandbox-toolchain.yaml index 429c2475..edd706b6 100644 --- a/classes/sandbox-toolchain.yaml +++ b/classes/sandbox-toolchain.yaml @@ -62,3 +62,4 @@ provideVars: # architecture is the same. AUTOCONF_BUILD: "${SANDBOX_AUTOCONF_BUILD}" AUTOCONF_HOST: "${SANDBOX_AUTOCONF_HOST}" + ARCH: "${SANDBOX_ARCH:-$ARCH}" diff --git a/classes/sandbox.yaml b/classes/sandbox.yaml index 54667302..73c6afe1 100644 --- a/classes/sandbox.yaml +++ b/classes/sandbox.yaml @@ -71,4 +71,7 @@ provideSandbox: mount: - "/etc/resolv.conf" - "/dev/pts" + environment: + AUTOCONF_HOST: "${SANDBOX_AUTOCONF_HOST:-${AUTOCONF_HOST}}" + AUTOCONF_BUILD: "${SANDBOX_AUTOCONF_BUILD:-${AUTOCONF_BUILD}}" diff --git a/recipes/devel/bootstrap-sandbox.yaml b/recipes/devel/bootstrap-sandbox.yaml index c93fe727..f78763c3 100644 --- a/recipes/devel/bootstrap-sandbox.yaml +++ b/recipes/devel/bootstrap-sandbox.yaml @@ -41,7 +41,7 @@ depends: - name: devel::cross-toolchain environment: - AUTOCONF_TARGET: "x86_64-wendy-linux-gnu" + AUTOCONF_TARGET: "$(gen-autoconf,wendy)" ARCH: x86_64 GCC_LIBC: glibc BASEMENT_OPTIMIZE: "s" diff --git a/recipes/devel/cross-toolchain.yaml b/recipes/devel/cross-toolchain.yaml index c30354c5..1cd1bab3 100644 --- a/recipes/devel/cross-toolchain.yaml +++ b/recipes/devel/cross-toolchain.yaml @@ -88,7 +88,7 @@ multiPackage: # ARMv8-A AArch64 Linux toolchain aarch64-linux-gnu: environment: - AUTOCONF_TARGET: "aarch64-linux-gnu" + AUTOCONF_TARGET: "aarch64-cross-linux-gnu" ARCH: "arm64" GCC_TARGET_ARCH: "armv8-a" GCC_LIBC: "glibc" diff --git a/recipes/devel/git.yaml b/recipes/devel/git.yaml index 18219490..cf7f4713 100644 --- a/recipes/devel/git.yaml +++ b/recipes/devel/git.yaml @@ -21,13 +21,20 @@ checkoutSCM: digestSHA1: "851537fc03f5a99419ef20e9b836de965c7928bd" extract: False -buildTools: [target-toolchain, curl] -buildVars: [PKG_VERSION, AUTOCONF_HOST, - CPPFLAGS, CFLAGS, LDFLAGS] +buildTools: [target-toolchain, curl, host-toolchain] +buildVars: [PKG_VERSION, AUTOCONF_HOST, AUTOCONF_BUILD, + CC, CPPFLAGS, CFLAGS, LDFLAGS] buildScript: | export CFLAGS="-I${BOB_DEP_PATHS[libs::zlib-dev]}/usr/include -I${BOB_DEP_PATHS[libs::openssl-dev]}/usr/include" export LDFLAGS="-L${BOB_DEP_PATHS[libs::zlib-dev]}/usr/lib -L${BOB_DEP_PATHS[libs::openssl-dev]}/usr/lib -Wl,-rpath-link=${BOB_DEP_PATHS[libs::zlib-dev]}/usr/lib -Wl,-rpath-link=${BOB_DEP_PATHS[libs::openssl-dev]}/usr/lib" + EXTRA=( ) + if [[ "${AUTOCONF_BUILD:-unknown}" != "${AUTOCONF_HOST:-${AUTOCONF_BUILD:-unknown}}" ]]; then + export ac_cv_fread_reads_directories=yes + export ac_cv_snprintf_returns_bogus=no + EXTRA+=( "--build=${AUTOCONF_BUILD}" ) + fi + mkdir -p install tar -xf $1/git-${PKG_VERSION}.tar.xz @@ -36,7 +43,8 @@ buildScript: | --prefix=/usr \ --with-curl=${BOB_DEP_PATHS[net::curl-dev]}/usr \ --without-python \ - --without-expat + --without-expat \ + ${EXTRA:+${EXTRA[@]}} makeParallel make DESTDIR=${PWD}/../install install popd diff --git a/recipes/devel/host-compat-toolchain.yaml b/recipes/devel/host-compat-toolchain.yaml index 2e1f3ec3..321b7458 100644 --- a/recipes/devel/host-compat-toolchain.yaml +++ b/recipes/devel/host-compat-toolchain.yaml @@ -6,7 +6,7 @@ shared: True environment: - AUTOCONF_TARGET: "$(gen-autoconf,bob_compat)" + AUTOCONF_TARGET: "${SANDBOX_AUTOCONF_TARGET:-$(gen-autoconf,bob_compat)}" depends: # The following tools are needed by the cross-toolchain build process. diff --git a/recipes/devel/sandbox-toolchain.yaml b/recipes/devel/sandbox-toolchain.yaml index 1241553a..7c2083f8 100644 --- a/recipes/devel/sandbox-toolchain.yaml +++ b/recipes/devel/sandbox-toolchain.yaml @@ -1,5 +1,5 @@ inherit: [sandbox-toolchain] privateEnvironment: - SANDBOX_AUTOCONF_BUILD: "$(gen-autoconf,bob)" - SANDBOX_AUTOCONF_HOST: "$(gen-autoconf,bob)" + SANDBOX_AUTOCONF_BUILD: "${SANDBOX_AUTOCONF_BUILD:-$(gen-autoconf,bob)}" + SANDBOX_AUTOCONF_HOST: "${SANDBOX_AUTOCONF_HOST:-$(gen-autoconf,bob)}" diff --git a/recipes/devel/sandbox.yaml b/recipes/devel/sandbox.yaml index 01faee04..ced3db45 100644 --- a/recipes/devel/sandbox.yaml +++ b/recipes/devel/sandbox.yaml @@ -47,8 +47,8 @@ depends: - name: devel::cross-toolchain environment: - AUTOCONF_TARGET: "x86_64-bob-linux-gnu" - ARCH: x86_64 + AUTOCONF_TARGET: "${SANDBOX_AUTOCONF_HOST:-$(gen-autoconf,bob)}" + ARCH: "${SANDBOX_ARCH:-$(host-arch)}" GCC_LIBC: glibc BASEMENT_OPTIMIZE: "s" BASEMENT_DEBUG: "0" @@ -90,4 +90,3 @@ depends: depends: - devel::binutils - devel::gcc-native - diff --git a/recipes/libs/compat/glibc.yaml b/recipes/libs/compat/glibc.yaml index f60fd112..465a67df 100644 --- a/recipes/libs/compat/glibc.yaml +++ b/recipes/libs/compat/glibc.yaml @@ -36,6 +36,7 @@ buildScript: | --with-headers=$2/usr/include \ --enable-obsolete-rpc \ --libdir=/usr/lib \ + --disable-werror \ $EXTRA touch .configure.stamp fi diff --git a/recipes/libs/expat.yaml b/recipes/libs/expat.yaml index c6d59c1a..0a62bca6 100644 --- a/recipes/libs/expat.yaml +++ b/recipes/libs/expat.yaml @@ -9,6 +9,7 @@ checkoutSCM: digestSHA256: a00ae8a6b96b63a3910ddc1100b1a7ef50dc26dceb65ced18ded31ab392f132b stripComponents: 1 +buildTools: [host-toolchain] buildScript: | autotoolsBuild $1 diff --git a/recipes/libs/libcap.yaml b/recipes/libs/libcap.yaml index e297edb0..0ed48b8e 100644 --- a/recipes/libs/libcap.yaml +++ b/recipes/libs/libcap.yaml @@ -10,7 +10,7 @@ checkoutSCM: extract: False buildTools: [host-toolchain, target-toolchain] -buildVars: [AR, CC, OBJCOPY, RANLIB, PKG_VERSION] +buildVars: [AR, CC, OBJCOPY, RANLIB, PKG_VERSION, CROSS_COMPILE] buildScript: | tar -xf $1/libcap-${PKG_VERSION}.tar.xz mkdir -p install @@ -21,6 +21,7 @@ buildScript: | AR=$AR \ CC=$CC \ OBJCOPY=$OBJCOPY \ + ${CROSS_COMPILE:+BUILD_CC=gcc} \ RANLIB=$RANLIB \ RAISE_SETFCAP=no \ DESTDIR="$PWD/install" \ diff --git a/tests/cross-platform/recipes/cmake/greeter.yaml b/tests/cross-platform/recipes/cmake/greeter.yaml index 2bf40866..7c75264d 100644 --- a/tests/cross-platform/recipes/cmake/greeter.yaml +++ b/tests/cross-platform/recipes/cmake/greeter.yaml @@ -22,7 +22,7 @@ multiPackage: - cmake::libgreet-dev - cmake::libgreet-tgt cross: - depends: + depends: &cross - if: !expr | "${BOB_HOST_PLATFORM}" == "msys" || "${BOB_HOST_PLATFORM}" == "win32" name: devel::win::vs2019-toolchain-vc142-amd64 @@ -34,3 +34,11 @@ multiPackage: use: [tools] forward: True - depends: *deps + cross-aarch64: + environment: + # this is just an example how to use this sandbox inside a recipe + SANDBOX_AUTOCONF_HOST: "aarch64-bob-linux-gnu" + SANDBOX_AUTOCONF_BUILD: "aarch64-bob-linux-gnu" + SANDBOX_AUTOCONF_TARGET: "aarch64-bob_compat-linux-gnu" + SANDBOX_ARCH: "arm64" + depends: *cross