diff --git a/config/functions b/config/functions index dbfd6e886b..5f06046fc7 100644 --- a/config/functions +++ b/config/functions @@ -174,7 +174,7 @@ reset_pkg_vars() { PKG_REV="0" PKG_ARCH="any" PKG_LICENSE="unknown" - PKG_AUTORECONF="no" + PKG_TOOLCHAIN="auto" PKG_IS_ADDON="no" PKG_PYTHON_VERSION="python2.7" } @@ -757,6 +757,7 @@ print_color() { CLR_APPLY_PATCH) clr_actual="boldgreen";; CLR_AUTORECONF) clr_actual="boldmagenta";; CLR_BUILD) clr_actual="boldyellow";; + CLR_TOOLCHAIN) clr_actual="boldmagenta";; CLR_CLEAN) clr_actual="boldred";; CLR_FIXCONFIG) clr_actual="boldyellow";; CLR_GET) clr_actual="boldcyan";; diff --git a/packages/addons/README.md b/packages/addons/README.md index e83ef25675..6bc31da8cf 100644 --- a/packages/addons/README.md +++ b/packages/addons/README.md @@ -33,7 +33,7 @@ PKG_DEPENDS_TARGET="toolchain curl" # dependencies that are neede PKG_SECTION="service" # service, tools, virtual, driver, driver.remote ... PKG_SHORTDESC="Addon name: sort description" # Addon: is a program that does this and that PKG_LONGDESC="Addon name ($PKG_VERSION): detailed description" -PKG_TOOLCHAIN="auto" # auto, meson, cmake, cmake-make, configure, autotools, other +PKG_TOOLCHAIN="auto" # auto, meson, cmake, cmake-make, configure, make, ninja, autotools, manual PKG_IS_ADDON="yes" PKG_ADDON_NAME="Addon name" # proper name of the addon that is shown at the repo diff --git a/scripts/build b/scripts/build index df88c44ca9..1be3ae3a23 100755 --- a/scripts/build +++ b/scripts/build @@ -121,7 +121,7 @@ if [ ! -f $STAMP ]; then unset -f makeinstall_bootstrap unset -f post_makeinstall_bootstrap - # configure TARGET build defaults + # configure TARGET build defaults TARGET_CONFIGURE_OPTS="--host=$TARGET_NAME \ --build=$HOST_NAME \ --prefix=/usr \ @@ -134,24 +134,21 @@ if [ ! -f $STAMP ]; then --disable-static \ --enable-shared" + # cmake build defaults if [ "$DEBUG" = "yes" ]; then CMAKE_BUILD_TYPE="Debug" else CMAKE_BUILD_TYPE="MinSizeRel" fi - if [ "$PKG_USE_NINJA" = "no" ]; then - CMAKE_GENERATOR="" - else - CMAKE_GENERATOR="-GNinja \ - -DCMAKE_EXPORT_COMPILE_COMMANDS=ON" - fi + CMAKE_GENERATOR_NINJA="-GNinja \ + -DCMAKE_EXPORT_COMPILE_COMMANDS=ON" - TARGET_CMAKE_OPTS="$CMAKE_GENERATOR \ - -DCMAKE_TOOLCHAIN_FILE=$CMAKE_CONF \ + TARGET_CMAKE_OPTS="-DCMAKE_TOOLCHAIN_FILE=$CMAKE_CONF \ -DCMAKE_INSTALL_PREFIX=/usr \ -DCMAKE_BUILD_TYPE=$CMAKE_BUILD_TYPE" + # meson build defaults if [ "$DEBUG" = "yes" ]; then MESON_BUILD_TYPE="debug" else @@ -213,31 +210,33 @@ if [ ! -f $STAMP ]; then fi fi - if [ "$TARGET" = "target" ]; then - for p in $PKG_DEPENDS_TARGET; do - $SCRIPTS/build $p - done - elif [ "$TARGET" = "host" ]; then - for p in $PKG_DEPENDS_HOST; do - $SCRIPTS/build $p - done - elif [ "$TARGET" = "init" ]; then - for p in $PKG_DEPENDS_INIT; do - $SCRIPTS/build $p - done - elif [ "$TARGET" = "bootstrap" ]; then - for p in $PKG_DEPENDS_BOOTSTRAP; do - $SCRIPTS/build $p - done - fi + # build dependencies + case "$TARGET" in + "target") + for p in $PKG_DEPENDS_TARGET; do + $SCRIPTS/build $p + done + ;; + "host") + for p in $PKG_DEPENDS_HOST; do + $SCRIPTS/build $p + done + ;; + "init") + for p in $PKG_DEPENDS_INIT; do + $SCRIPTS/build $p + done + ;; + "bootstrap") + for p in $PKG_DEPENDS_BOOTSTRAP; do + $SCRIPTS/build $p + done + ;; + esac printf "%${BUILD_INDENT}c $(print_color CLR_BUILD "BUILD") $PACKAGE_NAME $(print_color CLR_TARGET "($TARGET)")\n" ' '>&$SILENT_OUT export BUILD_INDENT=$((${BUILD_INDENT:-1}+$BUILD_INDENT_SIZE)) - if [ "$PKG_AUTORECONF" = yes ]; then - $SCRIPTS/autoreconf $PACKAGE_NAME - fi - # virtual packages dont must be build, they only contains dependencies, so dont go further here if [ ! "$PKG_SECTION" = "virtual" ]; then @@ -269,6 +268,33 @@ if [ ! -f $STAMP ]; then PKG_MESON_SCRIPT="$PKG_BUILD/meson.build" fi + # auto detect toolchain + _auto_toolchain="" + if [ -z "$PKG_TOOLCHAIN" -o "$PKG_TOOLCHAIN" = "auto" ]; then + if [ -f "$PKG_MESON_SCRIPT" ]; then + PKG_TOOLCHAIN="meson" + elif [ -f "$PKG_CMAKE_SCRIPT" -a ! "$PKG_USE_CMAKE" = "no" ]; then + PKG_TOOLCHAIN="cmake" + elif [ -f "$PKG_CONFIGURE_SCRIPT" ]; then + PKG_TOOLCHAIN="configure" + elif [ -f $PKG_BUILD/Makefile ]; then + PKG_TOOLCHAIN="make" + else + echo "Not possible to detect toolchain automatically. Add PKG_TOOLCHAIN= to package.mk" + exit 1 + fi + _auto_toolchain=" (auto-detect)" + fi + if ! listcontains "meson cmake cmake-make configure ninja make autotools manual" "$PKG_TOOLCHAIN"; then + printf "$(print_color bold-red "ERROR:") unknown toolchain $PKG_TOOLCHAIN" + exit 1 + fi + printf "%${BUILD_INDENT}c $(print_color CLR_TOOLCHAIN "TOOLCHAIN") $PKG_TOOLCHAIN${_auto_toolchain}\n" ' '>&$SILENT_OUT + + if [ "$PKG_TOOLCHAIN" = "autotools" ]; then + $SCRIPTS/autoreconf $PACKAGE_NAME + fi + # include build template and build if [ "$(type -t pre_build_$TARGET)" = "function" ]; then pre_build_$TARGET @@ -281,26 +307,25 @@ if [ ! -f $STAMP ]; then cd $PKG_BUILD - if [ "$TARGET" = "target" ]; then - if [ -f "$PKG_CONFIGURE_SCRIPT" -o -f "$PKG_CMAKE_SCRIPT" -o -f "$PKG_MESON_SCRIPT" ]; then - mkdir -p .$TARGET_NAME - cd .$TARGET_NAME - fi - elif [ "$TARGET" = "host" ]; then - if [ -f "$PKG_CONFIGURE_SCRIPT" -o -f "$PKG_CMAKE_SCRIPT" -o -f "$PKG_MESON_SCRIPT" ]; then - mkdir -p .$HOST_NAME - cd .$HOST_NAME - fi - elif [ "$TARGET" = "init" ]; then - if [ -f "$PKG_CONFIGURE_SCRIPT" -o -f "$PKG_CMAKE_SCRIPT" -o -f "$PKG_MESON_SCRIPT" ]; then - mkdir -p .$TARGET_NAME-$TARGET - cd .$TARGET_NAME-$TARGET - fi - elif [ "$TARGET" = "bootstrap" ]; then - if [ -f "$PKG_CONFIGURE_SCRIPT" -o -f "$PKG_CMAKE_SCRIPT" -o -f "$PKG_MESON_SCRIPT" ]; then - mkdir -p .$HOST_NAME-$TARGET - cd .$HOST_NAME-$TARGET - fi + if [ -f "$PKG_CONFIGURE_SCRIPT" -o -f "$PKG_CMAKE_SCRIPT" -o -f "$PKG_MESON_SCRIPT" ]; then + case "$TARGET" in + "target") + mkdir -p .$TARGET_NAME + cd .$TARGET_NAME + ;; + "host") + mkdir -p .$HOST_NAME + cd .$HOST_NAME + ;; + "init") + mkdir -p .$TARGET_NAME-$TARGET + cd .$TARGET_NAME-$TARGET + ;; + "bootstrap") + mkdir -p .$HOST_NAME-$TARGET + cd .$HOST_NAME-$TARGET + ;; + esac fi # configure @@ -309,48 +334,80 @@ if [ ! -f $STAMP ]; then fi if [ "$(type -t configure_$TARGET)" = "function" ]; then configure_$TARGET - elif [ -f "$PKG_MESON_SCRIPT" -a ! "$PKG_USE_MESON" = "no" ]; then - if [ "$TARGET" = "target" ]; then - echo "Executing (target): meson $TARGET_MESON_OPTS $PKG_MESON_OPTS_TARGET $(dirname $PKG_MESON_SCRIPT)" | tr -s " " - meson $TARGET_MESON_OPTS $PKG_MESON_OPTS_TARGET $(dirname $PKG_MESON_SCRIPT) - elif [ "$TARGET" = "host" ]; then - echo "Executing (host): meson $HOST_MESON_OPTS $PKG_MESON_OPTS_HOST $(dirname $PKG_MESON_SCRIPT)" | tr -s " " - meson $HOST_MESON_OPTS $PKG_MESON_OPTS_HOST $(dirname $PKG_MESON_SCRIPT) - elif [ "$TARGET" = "init" ]; then - echo "Executing (init): meson $INIT_MESON_OPTS $PKG_MESON_OPTS_INIT $(dirname $PKG_MESON_SCRIPT)" | tr -s " " - meson $INIT_MESON_OPTS $PKG_MESON_OPTS_INIT $(dirname $PKG_MESON_SCRIPT) - elif [ "$TARGET" = "bootstrap" ]; then - echo "Executing (bootstrap): meson $BOOTSTRAP_MESON_OPTS $PKG_MESON_OPTS_BOOTSTRAP $(dirname $PKG_MESON_SCRIPT)" | tr -s " " - meson $BOOTSTRAP_MESON_OPTS $PKG_MESON_OPTS_BOOTSTRAP $(dirname $PKG_MESON_SCRIPT) - fi - elif [ -f "$PKG_CMAKE_SCRIPT" -a ! "$PKG_USE_CMAKE" = "no" ]; then - if [ "$TARGET" = "target" ]; then - echo "Executing (target): cmake $TARGET_CMAKE_OPTS $PKG_CMAKE_OPTS_TARGET $(dirname $PKG_CMAKE_SCRIPT)" | tr -s " " - cmake $TARGET_CMAKE_OPTS $PKG_CMAKE_OPTS_TARGET $(dirname $PKG_CMAKE_SCRIPT) - elif [ "$TARGET" = "host" ]; then - echo "Executing (host): cmake $HOST_CMAKE_OPTS $PKG_CMAKE_OPTS_HOST $(dirname $PKG_CMAKE_SCRIPT)" | tr -s " " - cmake $HOST_CMAKE_OPTS $PKG_CMAKE_OPTS_HOST $(dirname $PKG_CMAKE_SCRIPT) - elif [ "$TARGET" = "init" ]; then - echo "Executing (init): cmake $INIT_CMAKE_OPTS $PKG_CMAKE_OPTS_INIT $(dirname $PKG_CMAKE_SCRIPT)" | tr -s " " - cmake $INIT_CMAKE_OPTS $PKG_CMAKE_OPTS_INIT $(dirname $PKG_CMAKE_SCRIPT) - elif [ "$TARGET" = "bootstrap" ]; then - echo "Executing (bootstrap): cmake $BOOTSTRAP_CMAKE_OPTS $PKG_CMAKE_OPTS_BOOTSTRAP $(dirname $PKG_CMAKE_SCRIPT)" | tr -s " " - cmake $BOOTSTRAP_CMAKE_OPTS $PKG_CMAKE_OPTS_BOOTSTRAP $(dirname $PKG_CMAKE_SCRIPT) - fi - elif [ -f "$PKG_CONFIGURE_SCRIPT" ]; then - if [ "$TARGET" = "target" ]; then - echo "Executing (target): $PKG_CONFIGURE_SCRIPT $TARGET_CONFIGURE_OPTS $PKG_CONFIGURE_OPTS_TARGET" | tr -s " " - $PKG_CONFIGURE_SCRIPT $TARGET_CONFIGURE_OPTS $PKG_CONFIGURE_OPTS_TARGET - elif [ "$TARGET" = "host" ]; then - echo "Executing (host): $PKG_CONFIGURE_SCRIPT $HOST_CONFIGURE_OPTS $PKG_CONFIGURE_OPTS_HOST" | tr -s " " - $PKG_CONFIGURE_SCRIPT $HOST_CONFIGURE_OPTS $PKG_CONFIGURE_OPTS_HOST - elif [ "$TARGET" = "init" ]; then - echo "Executing (init): $PKG_CONFIGURE_SCRIPT $INIT_CONFIGURE_OPTS $PKG_CONFIGURE_OPTS_INIT" | tr -s " " - $PKG_CONFIGURE_SCRIPT $INIT_CONFIGURE_OPTS $PKG_CONFIGURE_OPTS_INIT - elif [ "$TARGET" = "bootstrap" ]; then - echo "Executing (bootstrap): $PKG_CONFIGURE_SCRIPT $BOOTSTRAP_CONFIGURE_OPTS $PKG_CONFIGURE_OPTS_BOOTSTRAP" | tr -s " " - $PKG_CONFIGURE_SCRIPT $BOOTSTRAP_CONFIGURE_OPTS $PKG_CONFIGURE_OPTS_BOOTSTRAP - fi + else + case "$PKG_TOOLCHAIN:$TARGET" in + # meson builds + "meson:target") + echo "Executing (target): meson $TARGET_MESON_OPTS $PKG_MESON_OPTS_TARGET $(dirname $PKG_MESON_SCRIPT)" | tr -s " " + meson $TARGET_MESON_OPTS $PKG_MESON_OPTS_TARGET $(dirname $PKG_MESON_SCRIPT) + ;; + "meson:host") + echo "Executing (host): meson $HOST_MESON_OPTS $PKG_MESON_OPTS_HOST $(dirname $PKG_MESON_SCRIPT)" | tr -s " " + meson $HOST_MESON_OPTS $PKG_MESON_OPTS_HOST $(dirname $PKG_MESON_SCRIPT) + ;; + "meson:init") + echo "Executing (init): meson $INIT_MESON_OPTS $PKG_MESON_OPTS_INIT $(dirname $PKG_MESON_SCRIPT)" | tr -s " " + meson $INIT_MESON_OPTS $PKG_MESON_OPTS_INIT $(dirname $PKG_MESON_SCRIPT) + ;; + "meson:bootstrap") + echo "Executing (bootstrap): meson $BOOTSTRAP_MESON_OPTS $PKG_MESON_OPTS_BOOTSTRAP $(dirname $PKG_MESON_SCRIPT)" | tr -s " " + meson $BOOTSTRAP_MESON_OPTS $PKG_MESON_OPTS_BOOTSTRAP $(dirname $PKG_MESON_SCRIPT) + ;; + + # cmake builds with ninja + "cmake:target") + echo "Executing (target): cmake $CMAKE_GENERATOR_NINJA $TARGET_CMAKE_OPTS $PKG_CMAKE_OPTS_TARGET $(dirname $PKG_CMAKE_SCRIPT)" | tr -s " " + cmake $CMAKE_GENERATOR_NINJA $TARGET_CMAKE_OPTS $PKG_CMAKE_OPTS_TARGET $(dirname $PKG_CMAKE_SCRIPT) + ;; + "cmake:host") + echo "Executing (host): cmake $CMAKE_GENERATOR_NINJA $HOST_CMAKE_OPTS $PKG_CMAKE_OPTS_HOST $(dirname $PKG_CMAKE_SCRIPT)" | tr -s " " + cmake $CMAKE_GENERATOR_NINJA $HOST_CMAKE_OPTS $PKG_CMAKE_OPTS_HOST $(dirname $PKG_CMAKE_SCRIPT) + ;; + "cmake:init") + echo "Executing (init): cmake $CMAKE_GENERATOR_NINJA $INIT_CMAKE_OPTS $PKG_CMAKE_OPTS_INIT $(dirname $PKG_CMAKE_SCRIPT)" | tr -s " " + cmake $CMAKE_GENERATOR_NINJA $INIT_CMAKE_OPTS $PKG_CMAKE_OPTS_INIT $(dirname $PKG_CMAKE_SCRIPT) + ;; + "cmake:bootstrap") + echo "Executing (bootstrap): cmake $CMAKE_GENERATOR_NINJA $BOOTSTRAP_CMAKE_OPTS $PKG_CMAKE_OPTS_BOOTSTRAP $(dirname $PKG_CMAKE_SCRIPT)" | tr -s " " + cmake $CMAKE_GENERATOR_NINJA $BOOTSTRAP_CMAKE_OPTS $PKG_CMAKE_OPTS_BOOTSTRAP $(dirname $PKG_CMAKE_SCRIPT) + ;; + + # cmake builds with make + "cmake-make:target") + echo "Executing (target): cmake $TARGET_CMAKE_OPTS $PKG_CMAKE_OPTS_TARGET $(dirname $PKG_CMAKE_SCRIPT)" | tr -s " " + cmake $TARGET_CMAKE_OPTS $PKG_CMAKE_OPTS_TARGET $(dirname $PKG_CMAKE_SCRIPT) + ;; + "cmake-make:host") + echo "Executing (host): cmake $HOST_CMAKE_OPTS $PKG_CMAKE_OPTS_HOST $(dirname $PKG_CMAKE_SCRIPT)" | tr -s " " + cmake $HOST_CMAKE_OPTS $PKG_CMAKE_OPTS_HOST $(dirname $PKG_CMAKE_SCRIPT) + ;; + "cmake-make:init") + echo "Executing (init): cmake $INIT_CMAKE_OPTS $PKG_CMAKE_OPTS_INIT $(dirname $PKG_CMAKE_SCRIPT)" | tr -s " " + cmake $INIT_CMAKE_OPTS $PKG_CMAKE_OPTS_INIT $(dirname $PKG_CMAKE_SCRIPT) + ;; + "cmake-make:bootstrap") + echo "Executing (bootstrap): cmake $BOOTSTRAP_CMAKE_OPTS $PKG_CMAKE_OPTS_BOOTSTRAP $(dirname $PKG_CMAKE_SCRIPT)" | tr -s " " + cmake $BOOTSTRAP_CMAKE_OPTS $PKG_CMAKE_OPTS_BOOTSTRAP $(dirname $PKG_CMAKE_SCRIPT) + ;; + + # configure builds + "configure:target"|"autotools:target") + echo "Executing (target): $PKG_CONFIGURE_SCRIPT $TARGET_CONFIGURE_OPTS $PKG_CONFIGURE_OPTS_TARGET" | tr -s " " + $PKG_CONFIGURE_SCRIPT $TARGET_CONFIGURE_OPTS $PKG_CONFIGURE_OPTS_TARGET + ;; + "configure:host"|"autotools:host") + echo "Executing (host): $PKG_CONFIGURE_SCRIPT $HOST_CONFIGURE_OPTS $PKG_CONFIGURE_OPTS_HOST" | tr -s " " + $PKG_CONFIGURE_SCRIPT $HOST_CONFIGURE_OPTS $PKG_CONFIGURE_OPTS_HOST + ;; + "configure:init"|"autotools:init") + echo "Executing (init): $PKG_CONFIGURE_SCRIPT $INIT_CONFIGURE_OPTS $PKG_CONFIGURE_OPTS_INIT" | tr -s " " + $PKG_CONFIGURE_SCRIPT $INIT_CONFIGURE_OPTS $PKG_CONFIGURE_OPTS_INIT + ;; + "configure:bootstrap"|"autotools:bootstrap") + echo "Executing (bootstrap): $PKG_CONFIGURE_SCRIPT $BOOTSTRAP_CONFIGURE_OPTS $PKG_CONFIGURE_OPTS_BOOTSTRAP" | tr -s " " + $PKG_CONFIGURE_SCRIPT $BOOTSTRAP_CONFIGURE_OPTS $PKG_CONFIGURE_OPTS_BOOTSTRAP + ;; + esac fi if [ "$(type -t post_configure_$TARGET)" = "function" ]; then post_configure_$TARGET @@ -362,34 +419,44 @@ if [ ! -f $STAMP ]; then fi if [ "$(type -t make_$TARGET)" = "function" ]; then make_$TARGET - elif [ \( -f "$PKG_CMAKE_SCRIPT" -a ! "$PKG_USE_CMAKE" = "no" -a ! "$PKG_USE_NINJA" = "no" \) -o \( -f "$PKG_MESON_SCRIPT" -a ! "$PKG_USE_MESON" = "no" \) ]; then - if [ "$TARGET" = "target" ]; then - echo "Executing (target): ninja $PKG_MAKE_OPTS_TARGET" | tr -s " " - ninja $PKG_MAKE_OPTS_TARGET - elif [ "$TARGET" = "host" ]; then - echo "Executing (host): ninja $PKG_MAKE_OPTS_HOST" | tr -s " " - ninja $PKG_MAKE_OPTS_HOST - elif [ "$TARGET" = "init" ]; then - echo "Executing (init): ninja $PKG_MAKE_OPTS_INIT" | tr -s " " - ninja $PKG_MAKE_OPTS_INIT - elif [ "$TARGET" = "bootstrap" ]; then - echo "Executing (bootstrap): ninja $PKG_MAKE_OPTS_BOOTSTRAP" | tr -s " " - ninja $PKG_MAKE_OPTS_BOOTSTRAP - fi else - if [ "$TARGET" = "target" ]; then - echo "Executing (target): make $PKG_MAKE_OPTS_TARGET" | tr -s " " - make $PKG_MAKE_OPTS_TARGET - elif [ "$TARGET" = "host" ]; then - echo "Executing (host): make $PKG_MAKE_OPTS_HOST" | tr -s " " - make $PKG_MAKE_OPTS_HOST - elif [ "$TARGET" = "init" ]; then - echo "Executing (init): make $PKG_MAKE_OPTS_INIT" | tr -s " " - make $PKG_MAKE_OPTS_INIT - elif [ "$TARGET" = "bootstrap" ]; then - echo "Executing (bootstrap): make $PKG_MAKE_OPTS_BOOTSTRAP" | tr -s " " - make $PKG_MAKE_OPTS_BOOTSTRAP - fi + case "$PKG_TOOLCHAIN:$TARGET" in + # ninja based builds + "meson:target"|"cmake:target"|"ninja:target") + echo "Executing (target): ninja $PKG_MAKE_OPTS_TARGET" | tr -s " " + ninja $PKG_MAKE_OPTS_TARGET + ;; + "meson:host"|"cmake:host"|"ninja:host") + echo "Executing (host): ninja $PKG_MAKE_OPTS_HOST" | tr -s " " + ninja $PKG_MAKE_OPTS_HOST + ;; + "meson:init"|"cmake:init"|"ninja:init") + echo "Executing (init): ninja $PKG_MAKE_OPTS_INIT" | tr -s " " + ninja $PKG_MAKE_OPTS_INIT + ;; + "meson:bootstrap"|"cmake:bootstrap"|"ninja:bootstrap") + echo "Executing (bootstrap): ninja $PKG_MAKE_OPTS_BOOTSTRAP" | tr -s " " + ninja $PKG_MAKE_OPTS_BOOTSTRAP + ;; + + # make based builds + "configure:target"|"cmake-make:target"|"autotools:target"|"make:target") + echo "Executing (target): make $PKG_MAKE_OPTS_TARGET" | tr -s " " + make $PKG_MAKE_OPTS_TARGET + ;; + "configure:host"|"cmake-make:host"|"autotools:host"|"make:host") + echo "Executing (host): make $PKG_MAKE_OPTS_HOST" | tr -s " " + make $PKG_MAKE_OPTS_HOST + ;; + "configure:init"|"cmake-make:init"|"autotools:init"|"make:init") + echo "Executing (init): make $PKG_MAKE_OPTS_INIT" | tr -s " " + make $PKG_MAKE_OPTS_INIT + ;; + "configure:bootstrap"|"cmake-make:bootstrap"|"autotools:bootstrap"|"make:bootstrap") + echo "Executing (bootstrap): make $PKG_MAKE_OPTS_BOOTSTRAP" | tr -s " " + make $PKG_MAKE_OPTS_BOOTSTRAP + ;; + esac fi if [ "$(type -t post_make_$TARGET)" = "function" ]; then post_make_$TARGET @@ -401,28 +468,38 @@ if [ ! -f $STAMP ]; then fi if [ "$(type -t makeinstall_$TARGET)" = "function" ]; then makeinstall_$TARGET - elif [ \( -f "$PKG_CMAKE_SCRIPT" -a ! "$PKG_USE_CMAKE" = "no" -a ! "$PKG_USE_NINJA" = "no" \) -o \( -f "$PKG_MESON_SCRIPT" -a ! "$PKG_USE_MESON" = "no" \) ]; then - if [ "$TARGET" = "target" ]; then - DESTDIR=$SYSROOT_PREFIX ninja install $PKG_MAKEINSTALL_OPTS_TARGET - DESTDIR=$INSTALL ninja install $PKG_MAKEINSTALL_OPTS_TARGET - elif [ "$TARGET" = "host" ]; then - ninja install $PKG_MAKEINSTALL_OPTS_HOST - elif [ "$TARGET" = "init" ]; then - DESTDIR=$INSTALL ninja install $PKG_MAKEINSTALL_OPTS_INIT - elif [ "$TARGET" = "bootstrap" ]; then - ninja install $PKG_MAKEINSTALL_OPTS_BOOTSTRAP - fi else - if [ "$TARGET" = "target" ]; then - $MAKEINSTALL $PKG_MAKEINSTALL_OPTS_TARGET - make install DESTDIR=$INSTALL $PKG_MAKEINSTALL_OPTS_TARGET - elif [ "$TARGET" = "host" ]; then - make install $PKG_MAKEINSTALL_OPTS_HOST - elif [ "$TARGET" = "init" ]; then - make install DESTDIR=$INSTALL $PKG_MAKEINSTALL_OPTS_INIT - elif [ "$TARGET" = "bootstrap" ]; then - make install $PKG_MAKEINSTALL_OPTS_BOOTSTRAP - fi + case "$PKG_TOOLCHAIN:$TARGET" in + # ninja based builds + "meson:target"|"cmake:target") + DESTDIR=$SYSROOT_PREFIX ninja install $PKG_MAKEINSTALL_OPTS_TARGET + DESTDIR=$INSTALL ninja install $PKG_MAKEINSTALL_OPTS_TARGET + ;; + "meson:host"|"cmake:host") + ninja install $PKG_MAKEINSTALL_OPTS_HOST + ;; + "meson:init"|"cmake:init") + DESTDIR=$INSTALL ninja install $PKG_MAKEINSTALL_OPTS_INIT + ;; + "meson:bootstrap"|"cmake:bootstrap") + ninja install $PKG_MAKEINSTALL_OPTS_BOOTSTRAP + ;; + + # make based builds + "configure:target"|"cmake-make:target"|"autotools:target"|"make:target") + $MAKEINSTALL $PKG_MAKEINSTALL_OPTS_TARGET + make install DESTDIR=$INSTALL $PKG_MAKEINSTALL_OPTS_TARGET + ;; + "configure:host"|"cmake-make:host"|"autotools:host"|"make:host") + make install $PKG_MAKEINSTALL_OPTS_HOST + ;; + "configure:init"|"cmake-make:init"|"autotools:init"|"make:init") + make install DESTDIR=$INSTALL $PKG_MAKEINSTALL_OPTS_INIT + ;; + "configure:bootstrap"|"cmake-make:bootstrap"|"autotools:bootstrap"|"make:bootstrap") + make install $PKG_MAKEINSTALL_OPTS_BOOTSTRAP + ;; + esac fi if [ "$(type -t post_makeinstall_$TARGET)" = "function" ]; then post_makeinstall_$TARGET