summaryrefslogtreecommitdiffhomepage
path: root/subr.pkg/pkg_build.subr
diff options
context:
space:
mode:
Diffstat (limited to 'subr.pkg/pkg_build.subr')
-rw-r--r--subr.pkg/pkg_build.subr67
1 files changed, 67 insertions, 0 deletions
diff --git a/subr.pkg/pkg_build.subr b/subr.pkg/pkg_build.subr
new file mode 100644
index 00000000..8ea97368
--- /dev/null
+++ b/subr.pkg/pkg_build.subr
@@ -0,0 +1,67 @@
+#
+# set +o errexit -o noglob -o nounset is assumed.
+#
+
+pkg_build() {
+ local _pb_group_name="${1}" _pb_pkg_name="${2}" _pb_restart_at="${3}" \
+ _pb_libtool="" _pb_makeflags_verbosity="" _pb_no_autoconf="" \
+ _pb_rc=0 _pb_subdir="";
+ _pb_makeflags_verbosity="${PKG_MAKEFLAGS_VERBOSITY:-none}";
+ if [ "${_pb_makeflags_verbosity}" = "none" ]; then
+ _pb_makeflags_verbosity="";
+ fi;
+
+ case "${PKG_LIBTOOL:-}" in
+ "") _pb_libtool=""; ;;
+ none) _pb_libtool=""; ;;
+ *) _pb_libtool="${PKG_LIBTOOL}"; ;;
+ esac;
+
+ if [ ! -x "${PKG_CONFIGURE:-}" ]; then
+ _pb_no_autoconf=1;
+ fi;
+
+ for _pb_subdir in ${PKG_MAKE_SUBDIRS:-:}; do
+ if [ "${_pb_subdir}" = ":" ]; then
+ _pb_subdir="";
+ fi;
+
+ if [ "${#_pb_libtool}" -gt 0 ]; then
+ export MAKE="make LIBTOOL=${_pb_libtool}";
+ 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 "${PKG_MAKE}" \
+ ${PKG_MAKEFLAGS_BUILD:-} \
+ ${PKG_MAKEFLAGS_BUILD_EXTRA:-} \
+ "AR=${PKG_AR}" "${_pb_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}}" \
+ ${_pb_libtool:+"LIBTOOL=${_pb_libtool}"} \
+ ${_pb_makeflags_verbosity} \
+ ${_pb_subdir:+-C "${_pb_subdir}"};
+ _pb_rc="${?}";
+
+ if [ "${#_pb_libtool}" -gt 0 ]; then
+ unset MAKE;
+ fi;
+
+ if [ "${_pb_rc}" -ne 0 ]; then
+ break;
+ fi;
+ done;
+
+ return "${_pb_rc}";
+};
+
+# vim:filetype=sh