From 01b00593bbae331b4fe7904542b3623e8f3331e2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luc=C3=ADa=20Andrea=20Illanes=20Albornoz?= Date: Mon, 27 Mar 2023 09:57:12 +0200 Subject: Generalise subr.pkg/pkg_configure_autotools.subr code. --- subr.ex/ex_rtl_make.subr | 184 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 184 insertions(+) create mode 100644 subr.ex/ex_rtl_make.subr (limited to 'subr.ex/ex_rtl_make.subr') diff --git a/subr.ex/ex_rtl_make.subr b/subr.ex/ex_rtl_make.subr new file mode 100644 index 00000000..6867dfad --- /dev/null +++ b/subr.ex/ex_rtl_make.subr @@ -0,0 +1,184 @@ +# +# Copyright (c) 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023 LucĂ­a Andrea Illanes Albornoz +# 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 -- cgit v1.2.3