diff --git a/etc/README.md b/etc/README.md index bfe679d..6f0c5bc 100644 --- a/etc/README.md +++ b/etc/README.md @@ -501,6 +501,7 @@ VERSION`` and/or ``URLS_GIT``, respectively. | BUILD_STEPS_DISABLE | List of build steps to disable during package build | | BUILD_TYPE | Cross-compiled toolchain (``cross``,) host (``host``,) or cross-compiled package (``native``) build type | | CC | Command- or pathname of toolchain C compiler ``cc(1)`` | +| CFLAGS_BUILD | C compiler flags during package ``make(1)`` build | | CFLAGS_BUILD_EXTRA | Additional C compiler flags during package ``make(1)`` build | | CFLAGS_CONFIGURE | C compiler flags during package (GNU autotools or similar) configuration | | CFLAGS_CONFIGURE_EXTRA | Additional C compiler flags during package (GNU autotools or similar) configuration | @@ -533,6 +534,7 @@ VERSION`` and/or ``URLS_GIT``, respectively. | LDFLAGS_CONFIGURE_EXTRA | Additional linker flags during package (GNU autotools or similar) configuration | | LIBTOOL | Command- or pathname of ``libtool(1)`` (defaults to ``slibtool``) | | MAKE | Command line of ``make(1)`` | +| MAKE_SUBDIRS | List of ``make(1)`` subdirectories to exclusively build | | MAKEFLAGS_BUILD | List of ``make(1)`` flags during package ``make(1)`` build | | MAKEFLAGS_BUILD_EXTRA | Additional list of ``make(1)`` flags during package ``make(1)`` build | | MAKEFLAGS_INSTALL | List of ``make(1)`` flags during package ``make(1)`` installation | diff --git a/midipix.env b/midipix.env index 83f767e..efc1a6d 100644 --- a/midipix.env +++ b/midipix.env @@ -16,7 +16,7 @@ DEFAULT_BUILD_STEPS=" install_subdirs install_make install_files install_libs install install_rpm clean"; DEFAULT_BUILD_VARS=" AR BASE_DIR BUILD_DIR BUILD_STEPS_DISABLE BUILD_TYPE CC \ - CFLAGS_BUILD_EXTRA CFLAGS_CONFIGURE CFLAGS_CONFIGURE_EXTRA \ + CFLAGS_BUILD CFLAGS_BUILD_EXTRA CFLAGS_CONFIGURE CFLAGS_CONFIGURE_EXTRA \ CONFIG_CACHE CONFIG_CACHE_EXTRA CONFIG_CACHE_LOCAL CONFIGURE \ CONFIGURE_ARGS CONFIGURE_ARGS_EXTRA CXX CXXFLAGS_CONFIGURE \ CXXFLAGS_CONFIGURE_EXTRA DEPENDS DESTDIR DESTDIR_HOST DISABLED \ @@ -24,7 +24,7 @@ DEFAULT_BUILD_VARS=" INSTALL_FILES INSTALL_FILES_DESTDIR INSTALL_FILES_DESTDIR_EXTRA \ INSTALL_TARGET INSTALL_TARGET_EXTRA IN_TREE LDFLAGS_BUILD_EXTRA \ LDFLAGS_CONFIGURE LDFLAGS_CONFIGURE_EXTRA LIBTOOL MAKE \ - MAKE_INSTALL_VNAME MAKEFLAGS_BUILD MAKEFLAGS_BUILD_EXTRA \ + MAKE_INSTALL_VNAME MAKE_SUBDIRS MAKEFLAGS_BUILD MAKEFLAGS_BUILD_EXTRA \ MAKEFLAGS_INSTALL MAKEFLAGS_INSTALL_EXTRA MAKEFLAGS_VERBOSITY \ NO_CLEAN NO_CLEAN_BASE_DIR NO_LOG_VARS PYTHON PATCHES_EXTRA \ PKG_CONFIG PKG_CONFIG_LIBDIR PKGLIST_DISABLE PREFIX RANLIB \ diff --git a/subr/pkg_build.subr b/subr/pkg_build.subr index ecc049f..327edae 100644 --- a/subr/pkg_build.subr +++ b/subr/pkg_build.subr @@ -3,7 +3,7 @@ # pkg_build() { - local _libtool="" _makeflags_verbosity="${PKG_MAKEFLAGS_VERBOSITY:-none}" _no_autoconf=""; + local _libtool="" _makeflags_verbosity="${PKG_MAKEFLAGS_VERBOSITY:-none}" _no_autoconf="" _subdir=""; case "${PKG_LIBTOOL:-}" in "") _libtool=""; ;; none) _libtool=""; ;; @@ -15,25 +15,34 @@ pkg_build() { if [ ! -x "${PKG_CONFIGURE:-}" ]; then _no_autoconf=1; fi; - # N.B. We only specify CC= here if the current package does not use GNU - # autoconf as it often abuses it by appending -std={gnu99,...} to it - # instead of amending CFLAGS. - rtl_run_cmd_unsplit make \ - ${PKG_MAKEFLAGS_BUILD:-} \ - ${PKG_MAKEFLAGS_BUILD_EXTRA:-} \ - "AR=${PKG_AR}" "${_no_autoconf:+CC=${PKG_CC}}" "RANLIB=${PKG_RANLIB}" \ - "${PKG_CFLAGS_BUILD:+CFLAGS=${PKG_CFLAGS_BUILD}}" \ - "${PKG_CFLAGS_BUILD_EXTRA:+CFLAGS+=${PKG_CFLAGS_BUILD_EXTRA}}" \ - "${PKG_CPPFLAGS_BUILD:+CPPFLAGS=${PKG_CPPFLAGS_BUILD}}" \ - "${PKG_CPPFLAGS_BUILD_EXTRA:+CPPFLAGS+=${PKG_CPPFLAGS_BUILD_EXTRA}}" \ - "${PKG_CXXFLAGS_BUILD:+CXXFLAGS=${PKG_CXXFLAGS_BUILD}}" \ - "${PKG_CXXFLAGS_BUILD_EXTRA:+CXXFLAGS+=${PKG_CXXFLAGS_BUILD_EXTRA}}" \ - "${PKG_LDFLAGS_BUILD:+LDFLAGS=${PKG_LDFLAGS_BUILD}}" \ - "${PKG_LDFLAGS_BUILD_EXTRA:+LDFLAGS+=${PKG_LDFLAGS_BUILD_EXTRA}}" \ - "${PKG_PKG_CONFIG:+PKG_CONFIG=${PKG_PKG_CONFIG}}" \ - "${PKG_PKG_CONFIG_LIBDIR:+PKG_CONFIG_LIBDIR=${PKG_PKG_CONFIG_LIBDIR}}" \ - ${_libtool:+"LIBTOOL=${_libtool}"} \ - ${_makeflags_verbosity}; + for _subdir in ${PKG_MAKE_SUBDIRS:-:}; do + if [ "${_subdir}" = ":" ]; then + _subdir=""; + fi; + # N.B. We only specify CC= here if the current package does not use GNU + # autoconf as it often abuses it by appending -std={gnu99,...} to it + # instead of amending CFLAGS. + rtl_run_cmd_unsplit make \ + ${PKG_MAKEFLAGS_BUILD:-} \ + ${PKG_MAKEFLAGS_BUILD_EXTRA:-} \ + "AR=${PKG_AR}" "${_no_autoconf:+CC=${PKG_CC}}" "RANLIB=${PKG_RANLIB}" \ + "${PKG_CFLAGS_BUILD:+CFLAGS=${PKG_CFLAGS_BUILD}}" \ + "${PKG_CFLAGS_BUILD_EXTRA:+CFLAGS+=${PKG_CFLAGS_BUILD_EXTRA}}" \ + "${PKG_CPPFLAGS_BUILD:+CPPFLAGS=${PKG_CPPFLAGS_BUILD}}" \ + "${PKG_CPPFLAGS_BUILD_EXTRA:+CPPFLAGS+=${PKG_CPPFLAGS_BUILD_EXTRA}}" \ + "${PKG_CXXFLAGS_BUILD:+CXXFLAGS=${PKG_CXXFLAGS_BUILD}}" \ + "${PKG_CXXFLAGS_BUILD_EXTRA:+CXXFLAGS+=${PKG_CXXFLAGS_BUILD_EXTRA}}" \ + "${PKG_LDFLAGS_BUILD:+LDFLAGS=${PKG_LDFLAGS_BUILD}}" \ + "${PKG_LDFLAGS_BUILD_EXTRA:+LDFLAGS+=${PKG_LDFLAGS_BUILD_EXTRA}}" \ + "${PKG_PKG_CONFIG:+PKG_CONFIG=${PKG_PKG_CONFIG}}" \ + "${PKG_PKG_CONFIG_LIBDIR:+PKG_CONFIG_LIBDIR=${PKG_PKG_CONFIG_LIBDIR}}" \ + ${_libtool:+"LIBTOOL=${_libtool}"} \ + ${_makeflags_verbosity} \ + ${_subdir:+-C "${_subdir}"}; + if [ "${?}" -ne 0 ]; then + return 1; + fi; + done; }; # vim:filetype=sh diff --git a/subr/pkg_install_make.subr b/subr/pkg_install_make.subr index a5e58f6..2afcb7b 100644 --- a/subr/pkg_install_make.subr +++ b/subr/pkg_install_make.subr @@ -3,20 +3,29 @@ # pkg_install_make() { - local _libtool=""; + local _libtool="" _subdir=""; case "${PKG_LIBTOOL:-}" in "") _libtool=""; ;; none) _libtool=""; ;; *) _libtool="${PKG_LIBTOOL}"; ;; esac; - rtl_run_cmd_unsplit make \ - ${PKG_MAKEFLAGS_INSTALL:-} \ - ${PKG_MAKEFLAGS_INSTALL_EXTRA:-} \ - AR="${PKG_AR}" CC="${PKG_CC}" RANLIB="${PKG_RANLIB}" \ - "${PKG_RANLIB_INSTALL:+RANLIB=${PKG_RANLIB_INSTALL}}" \ - ${_libtool:+"LIBTOOL=${_libtool}"} \ - "${PKG_MAKE_INSTALL_VNAME:-DESTDIR}=${PKG_DESTDIR}/" \ - ${PKG_INSTALL_TARGET:-install}; + for _subdir in ${PKG_MAKE_SUBDIRS:-:}; do + if [ "${_subdir}" = ":" ]; then + _subdir=""; + fi; + rtl_run_cmd_unsplit make \ + ${PKG_MAKEFLAGS_INSTALL:-} \ + ${PKG_MAKEFLAGS_INSTALL_EXTRA:-} \ + AR="${PKG_AR}" CC="${PKG_CC}" RANLIB="${PKG_RANLIB}" \ + "${PKG_RANLIB_INSTALL:+RANLIB=${PKG_RANLIB_INSTALL}}" \ + ${_libtool:+"LIBTOOL=${_libtool}"} \ + "${PKG_MAKE_INSTALL_VNAME:-DESTDIR}=${PKG_DESTDIR}/" \ + ${PKG_INSTALL_TARGET:-install} \ + ${_subdir:+-C "${_subdir}"}; + if [ "${?}" -ne 0 ]; then + return 1; + fi; + done; }; # vim:filetype=sh