#
# Copyright (c) 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023 LucĂa Andrea Illanes Albornoz <lucia@luciaillanes.de>
# set +o errexit -o noglob -o nounset is assumed.
#
# Package make command execution
#
#
# ex_rtl_make() - run make(1)
# @_ar: ar(1) command name or pathname
# @_cc: C compiler command name or pathname
# @_cxx: C++ compiler command name or pathname
# @_ld: ld(1) command name or pathname
# @_libtool: libtool(1) command name or pathname or "none"
# @_make: make(1) command name or pathname
# @_pkg_config: pkg-config(1) command name or pathname
# @_ranlib: ranlib(1) command name or pathname
# @--: (ignored)
# @_set_ccfl: 1 if CC=... is to be passed to make(1), 0 if CC=... is not to be passed to make(1)
# @_subdir: make(1) -C argument
# @--: (ignored)
# @_makeflags: make(1) flags as a whitespace-separated list
# @_makeflags_extra: extra make(1) flags as a whitespace-separated likst
# @_makeflags_list: make(1) flags as a :-separated list
# @_makeflags_extra_list: extra make(1) flags as a :-separated list
# @_makeflags_loadavg: make(1) -l load argument
# @_makeflags_parallelise: make(1) -j jobs argument
# @_makeflags_verbosity: make(1) Makefile verbosity arguments or "none"
# @--: (ignored)
# @_cflags: $CFLAGS
# @_cflags_extra: extra $CFLAGS
# @_cppflags: $CPPFLAGS
# @_cppflags_extra: extra $CPPFLAGS
# @_cxxflags: $CXXFLAGS
# @_cxxflags_extra: extra $CXXFLAGS
# @_ldflags: $LDFLAGS
# @_ldflags_extra: extra $LDFLAGS
# @_pkg_config_libdir: pkg-config(1) search directory
# @--: (ignored)
# @_destdir_spec: DESTDIR=... specification
# @_target: make(1) target
#
# Returns: zero (0) on success, non-zero (>0) on failure
#
ex_rtl_make() {
local _erm_ar="${1}" _erm_cc="${2}" _erm_cxx="${3}" _erm_ld="${4}" \
_erm_libtool="${5}" _erm_make="${6}" _erm_pkg_config="${7}" _erm_ranlib="${8}" \
_erm_ignored="${9}" \
_erm_set_ccfl="${10}" _erm_subdir="${11}" \
_erm_ignored="${12}" \
_erm_makeflags="${13}" _erm_makeflags_extra="${14}" _erm_makeflags_list="${15}" \
_erm_makeflags_extra_list="${16}" _erm_makeflags_loadavg="${17}" \
_erm_makeflags_parallelise="${18}" _erm_makeflags_verbosity="${19}" \
_erm_ignored="${20}" \
_erm_cflags="${21}" _erm_cflags_extra="${22}" _erm_cppflags="${23}" \
_erm_cppflags_extra="${24}" _erm_cxxflags="${25}" _erm_cxxflags_extra="${26}" \
_erm_ldflags="${27}" _erm_ldflags_extra="${28}" _erm_pkg_config_libdir="${29}" \
_erm_ignored="${30}" \
_erm_destdir_spec="${31}" _erm_target="${32}" \
_erm_rc=0;
case "${_erm_makeflags_loadavg:-}" in
none) _erm_makeflags_loadavg=""; ;;
esac;
case "${_erm_libtool:-}" in
none) _erm_libtool=""; ;;
esac;
case "${_erm_makeflags_verbosity}" in
none) _erm_makeflags_verbosity=""; ;;
esac;
case "${_erm_set_ccfl}" in
1) _erm_set_ccfl="1"; ;;
*) _erm_set_ccfl=""; ;;
esac;
(
if [ "${_erm_libtool:+1}" = 1 ]; then
export MAKE="make LIBTOOL=${_erm_libtool}";
fi;
if [ "${_erm_makeflags_list:+1}" = 1 ]; then
rtl_run_cmdlineV ":" "${_erm_make}" \
AR="${_erm_ar}" \
${_erm_set_ccfl:+CC="${_erm_cc}"} \
${_erm_set_ccfl:+CXX="${_erm_cxx}"} \
LD="${_erm_ld}" \
${_erm_libtool:+LIBTOOL="${_erm_libtool}"} \
${_erm_pkg_config:+PKG_CONFIG="${_erm_pkg_config}"} \
RANLIB="${_erm_ranlib}" \
\
"${_erm_makeflags_list}" \
"${_erm_makeflags_extra_list:-}" \
${_erm_makeflags_loadavg:-} \
${_erm_makeflags_parallelise:-} \
${_erm_makeflags_verbosity} \
\
${_erm_cflags:+CFLAGS="${_erm_cflags}"} \
${_erm_cflags_extra:+CFLAGS+="${_erm_cflags_extra}"} \
${_erm_cppflags:+CPPFLAGS="${_erm_cppflags}"} \
${_erm_cppflags_extra:+CPPFLAGS+="${_erm_cppflags_extra}"} \
${_erm_cxxflags:+CXXFLAGS="${_erm_cxxflags}"} \
${_erm_cxxflags_extra:+CXXFLAGS+="${_erm_cxxflags_extra}"} \
${_erm_ldflags:+LDFLAGS="${_erm_ldflags}"} \
${_erm_ldflags_extra:+LDFLAGS+="${_erm_ldflags_extra}"} \
${_erm_pkg_config_libdir:+PKG_CONFIG_LIBDIR="${_erm_pkg_config_libdir}"} \
\
${_erm_subdir:+-C "${_erm_subdir}"} \
${_erm_destdir_spec:+"${_erm_destdir_spec}"} \
${_erm_target:+"${_erm_target}"} \
;
exit "${?}";
elif [ "${_erm_makeflags_extra_list:+1}" = 1 ]; then
rtl_run_cmdlineV ":" "${_erm_make}" \
AR="${_erm_ar}" \
${_erm_set_ccfl:+CC="${_erm_cc}"} \
${_erm_set_ccfl:+CXX="${_erm_cxx}"} \
LD="${_erm_ld}" \
${_erm_libtool:+LIBTOOL="${_erm_libtool}"} \
${_erm_pkg_config:+PKG_CONFIG="${_erm_pkg_config}"} \
RANLIB="${_erm_ranlib}" \
\
${_erm_makeflags:-} \
"${_erm_makeflags_extra_list}" \
${_erm_makeflags_loadavg:-} \
${_erm_makeflags_parallelise:-} \
${_erm_makeflags_verbosity} \
\
${_erm_cflags:+CFLAGS="${_erm_cflags}"} \
${_erm_cflags_extra:+CFLAGS+="${_erm_cflags_extra}"} \
${_erm_cppflags:+CPPFLAGS="${_erm_cppflags}"} \
${_erm_cppflags_extra:+CPPFLAGS+="${_erm_cppflags_extra}"} \
${_erm_cxxflags:+CXXFLAGS="${_erm_cxxflags}"} \
${_erm_cxxflags_extra:+CXXFLAGS+="${_erm_cxxflags_extra}"} \
${_erm_ldflags:+LDFLAGS="${_erm_ldflags}"} \
${_erm_ldflags_extra:+LDFLAGS+="${_erm_ldflags_extra}"} \
${_erm_pkg_config_libdir:+PKG_CONFIG_LIBDIR="${_erm_pkg_config_libdir}"} \
\
${_erm_subdir:+-C "${_erm_subdir}"} \
${_erm_destdir_spec:+"${_erm_destdir_spec}"} \
${_erm_target:+"${_erm_target}"} \
;
exit "${?}";
else
rtl_run_cmdlineV ":" "${_erm_make}" \
AR="${_erm_ar}" \
${_erm_set_ccfl:+CC="${_erm_cc}"} \
${_erm_set_ccfl:+CXX="${_erm_cxx}"} \
LD="${_erm_ld}" \
${_erm_libtool:+LIBTOOL="${_erm_libtool}"} \
${_erm_pkg_config:+PKG_CONFIG="${_erm_pkg_config}"} \
RANLIB="${_erm_ranlib}" \
\
${_erm_makeflags:-} \
${_erm_makeflags_extra:-} \
${_erm_makeflags_loadavg:-} \
${_erm_makeflags_parallelise:-} \
${_erm_makeflags_verbosity} \
\
${_erm_cflags:+CFLAGS="${_erm_cflags}"} \
${_erm_cflags_extra:+CFLAGS+="${_erm_cflags_extra}"} \
${_erm_cppflags:+CPPFLAGS="${_erm_cppflags}"} \
${_erm_cppflags_extra:+CPPFLAGS+="${_erm_cppflags_extra}"} \
${_erm_cxxflags:+CXXFLAGS="${_erm_cxxflags}"} \
${_erm_cxxflags_extra:+CXXFLAGS+="${_erm_cxxflags_extra}"} \
${_erm_ldflags:+LDFLAGS="${_erm_ldflags}"} \
${_erm_ldflags_extra:+LDFLAGS+="${_erm_ldflags_extra}"} \
${_erm_pkg_config_libdir:+PKG_CONFIG_LIBDIR="${_erm_pkg_config_libdir}"} \
\
${_erm_subdir:+-C "${_erm_subdir}"} \
${_erm_destdir_spec:+"${_erm_destdir_spec}"} \
${_erm_target:+"${_erm_target}"} \
;
exit "${?}";
fi;
);
_erm_rc="${?}";
return "${_erm_rc}";
};
# vim:filetype=sh textwidth=0