summaryrefslogtreecommitdiffhomepage
path: root/subr
diff options
context:
space:
mode:
authorLucio Andrés Illanes Albornoz <lucio@lucioillanes.de>2021-05-12 22:10:38 +0100
committerLucio Andrés Illanes Albornoz <lucio@lucioillanes.de>2021-05-12 22:10:38 +0100
commitb9a71579b82cd54980ff641af504bc8ad96473b1 (patch)
treee8dc1e7f2044995415ae2e21e67a60da7fe9a13b /subr
parentb7c3731e3e4104b444a0061ba4505b9bbb533906 (diff)
downloadmidipix_build-b9a71579b82cd54980ff641af504bc8ad96473b1.tar.bz2
midipix_build-b9a71579b82cd54980ff641af504bc8ad96473b1.tar.xz
Implements CMake support.
etc/README.md: updated. groups/{000.host_tools,010.host_deps,200.native_packages,800.minipix}.group:${*_SOFORT_NATIVE_{C,CXX,LD}FLAGS}: merged into midipix.env. groups/010.host_deps.group:{clang,cmake_host,libzip,llvm}_host:${PKG_CMAKE_ARGS_EXTRA}: added. groups/010.host_deps.group:cmake_host:${PKG_CONFIGURE_TYPE}: configure w/ cmake. groups/010.host_deps.group:cmake_host:${PKG_INSTALL_FILES}: added. groups/010.host_deps.group:expat_host:${PKG_CONFIGURE_TYPE}: configure w/ autotools. groups/010.host_deps.group:python[23]_host:${PKG_{ENV_VARS_EXTRA,SOFORT_FORCE}}: removed. groups/010.host_deps.group:python[23]_host:${PKG_CONFIGURE_TYPE}: configure w/ sofort. groups/010.host_deps.group:python[23]_host:${PKG_SOFORT_NATIVE_CC}: removed. groups/221.native_packages_dev.group:python[23]:${PKG_SOFORT_FORCE}: removed. groups/221.native_packages_dev.group:python[23]:${PKG_CONFIGURE_TYPE}: configure w/ sofort. groups/231.native_packages_etc.group:{cmake,minizip,openjpeg,tdnf,xpdf}:${PKG_CMAKE_ARGS_EXTRA}: added. groups/231.native_packages_etc.group:cmake:${PKG_CONFIGURE_ARGS}: removed. groups/231.native_packages_etc.group:utf8proc:${PKG_IN_TREE}: don't build in-tree. groups/251.native_packages_lib.group:lib{jpeg_turbo,solv,ssh,zip}:${PKG_CMAKE_ARGS_EXTRA}: added. midipix.env:${DEFAULT_BUILD_VARS}: adds ${PKG_{CMAKE{,_{ARGS{,_EXTRA},LISTFILE}},CONFIGURE_TYPE},SOFORT_NATIVE_{C{C,XX},{C,CXX,LD}FLAGS,LD}}. midipix.env:${DEFAULT_BUILD_VARS}: removes ${PKG_SOFORT_FORCE}. midipix.env:${DEFAULT_{CMAKE_LISTFILE,{CROSS,HOST,NATIVE}_CMAKE}}: added. subr.rtl/rtl_complex.subr:rtl_export_vars(): ignore values during -u. subr.rtl/rtl_platform.subr:rtl_set_vars(): updated. subr/ex_pkg_env.subr:exp_pkg_env_set(): always convert ${PKG_{AR,CC,CXX,PKG_CONFIG,RANLIB}} to absolute pathnames. subr/ex_pkg_env.subr:ex_pkg_env_sofort(): merged into subr/pkg_configure.subr. subr/ex_pkg_restart.subr:ex_pkg_process_restart_spec(): remove extraneous echo. subr/pkg_configure.subr:pkgp_configure_{cmake,sofort}(): initial implementation. subr/pkg_configure.subr:pkg_configure(): attempt configuration using autotools, sofort, or cmake. subr/pkg_configure_autotools.subr: skip if ${PKG_CONFIGURE_TYPE} is set and not "autotools". subr/pkg_fetch_clean.subr: fix typo. vars/{clang_host,cmake{,_host},lib{jpeg_turbo,solv,ssh,zip{,_host}},llvm_host,lolcode,minizip,openjpeg,tdnf,xpdf}.vars: deleted.
Diffstat (limited to 'subr')
-rw-r--r--subr/ex_pkg_env.subr56
-rw-r--r--subr/ex_pkg_restart.subr3
-rw-r--r--subr/pkg_configure.subr160
-rw-r--r--subr/pkg_configure_autotools.subr7
-rw-r--r--subr/pkg_fetch_clean.subr2
5 files changed, 173 insertions, 55 deletions
diff --git a/subr/ex_pkg_env.subr b/subr/ex_pkg_env.subr
index 5048c939..c7d40dce 100644
--- a/subr/ex_pkg_env.subr
+++ b/subr/ex_pkg_env.subr
@@ -61,8 +61,10 @@ exp_pkg_env_defaults() {
# Return: zero (0) on success, non-zero (>0) on failure
#
exp_pkg_env_set() {
- local _build_vars_default="${1}" _group_name="${2}" _nounset="${3}"\
- _pkg_name="${4}" _var_prefixes="" _vars_set="" _vname="" IFS IFS0;
+ local _build_vars_default="${1}" _group_name="${2}" _nounset="${3}" \
+ _pkg_name="${4}" _cmd_name="" _var_prefixes="" _vars_set="" \
+ _vname="" IFS IFS0;
+
rtl_set_vars _vars_set BUILD_TYPE "DEFAULT ${_group_name} PKG_${_pkg_name}";
rtl_set_vars _vars_set INHERIT_FROM "PKG_${_pkg_name}";
_var_prefixes="$(rtl_toupper "DEFAULT DEFAULT_${PKG_BUILD_TYPE} ${_group_name}")";
@@ -85,48 +87,13 @@ exp_pkg_env_set() {
"$(set | sed -ne '/^PKG_[^=]*=/s/=.*$//p' | paste -s -d " ")" \
"${_vars_set}");
fi;
-};
-ex_pkg_env_sofort() {
- local _pkg_base_dir="${1}" _pkg_sofort_force="${2}" _pkg_subdir="${3}" \
- _vname="" _vname_new="" _vval="" _vval_old="";
-
- if [ -d "${_pkg_base_dir}/${_pkg_subdir}/sofort" ] \
- || [ "${_pkg_sofort_force:-0}" -eq 1 ]; then
- for _vname in \
- PKG_SOFORT_NATIVE_CC \
- PKG_SOFORT_NATIVE_CFLAGS \
- PKG_SOFORT_NATIVE_CXX \
- PKG_SOFORT_NATIVE_CXXFLAGS \
- PKG_SOFORT_NATIVE_LD \
- PKG_SOFORT_NATIVE_LDFLAGS; do
- _vname_new="PKG_${_vname#PKG_SOFORT_}";
- rtl_set_var_unsafe "${_vname_new}" "";
- done;
- for _vname in \
- PKG_SOFORT_NATIVE_CC \
- PKG_SOFORT_NATIVE_CFLAGS \
- PKG_SOFORT_NATIVE_CFLAGS_EXTRA \
- PKG_SOFORT_NATIVE_CXX \
- PKG_SOFORT_NATIVE_CXXFLAGS \
- PKG_SOFORT_NATIVE_CXXFLAGS_EXTRA \
- PKG_SOFORT_NATIVE_LD \
- PKG_SOFORT_NATIVE_LDFLAGS \
- PKG_SOFORT_NATIVE_LDFLAGS_EXTRA; do
- if _vval="$(rtl_get_var_unsafe "${_vname}")" \
- && [ -n "${_vval}" ]; then
- _vname_new="${_vname#PKG_SOFORT_}";
- case "${_vname}" in
- *_EXTRA)
- _vval_old="$(rtl_get_var_unsafe "${_vname_new%_EXTRA}")";
- rtl_set_var_unsafe "${_vname_new%_EXTRA}" "${_vval_old:+${_vval_old} }${_vval}"; ;;
- *)
- rtl_set_var_unsafe "${_vname_new}" "${_vval}"; ;;
- esac;
- export "${_vname_new}";
- fi;
- done;
- fi; return 0;
+ for _vname in AR CC CXX PKG_CONFIG RANLIB; do
+ if eval [ '"${PKG_'"${_vname}"':+1}"' = 1 ]\
+ && eval [ '"${PKG_'"${_vname}"'#/}"' = '"${_cmd_name:=${PKG_'"${_vname}"'}}"' ]; then
+ eval PKG_${_vname}='$(which "${_cmd_name}")';
+ fi; _cmd_name="";
+ done;
};
#
@@ -146,8 +113,7 @@ ex_pkg_env() {
_nounset="${4}" _pkg_name="${5}" _restart_at="${6}" _workdir="${7}" _vname="";
rtl_fileop source_opt "vars/${_pkg_name}.vars" "${_group_name}/${_pkg_name}.${_group_name}";
if ! exp_pkg_env_set "${_build_vars_default}" "${_group_name}" "${_nounset}" "${_pkg_name}"\
- || ! exp_pkg_env_defaults "${_build_steps_default}" "${_pkg_name}" "${_workdir}"\
- || ! ex_pkg_env_sofort "${PKG_BASE_DIR:-}" "${PKG_SOFORT_FORCE:-0}" "${PKG_SUBDIR:-}"; then
+ || ! exp_pkg_env_defaults "${_build_steps_default}" "${_pkg_name}" "${_workdir}"; then
return 1;
fi;
};
diff --git a/subr/ex_pkg_restart.subr b/subr/ex_pkg_restart.subr
index b45851f2..d6f2bee5 100644
--- a/subr/ex_pkg_restart.subr
+++ b/subr/ex_pkg_restart.subr
@@ -280,8 +280,7 @@ ex_pkg_process_restart_spec() {
if [ "${_epprs_step}" = "${_epprs_step1}" ]; then
eval ${_epprs_rspec_at}='${'"${_epprs_rspec_at}"':+${'"${_epprs_rspec_at}"'},}finish';
fi;
- fi;
- eval echo '${'"${_epprs_rspec}"'}'; ;;
+ fi; ;;
esac; rtl_llift3 "${_epprs_rspec}" "," " " || _epprs_rc=1;
else
_epprs_rc=1;
diff --git a/subr/pkg_configure.subr b/subr/pkg_configure.subr
index c57b342b..ea265076 100644
--- a/subr/pkg_configure.subr
+++ b/subr/pkg_configure.subr
@@ -2,19 +2,27 @@
# set +o errexit -o noglob -o nounset is assumed.
#
-pkg_configure() {
+pkgp_configure_autotools() {
local _libtool="" _rc=0;
- if [ -x "${PKG_CONFIGURE:-}" ]; then
+
+ if ! [ -x "${PKG_CONFIGURE:-}" ]; then
+ return 2;
+ elif [ -d "${PKG_BASE_DIR}/${PKG_SUBDIR}/sofort" ]\
+ || [ "${PKG_CONFIGURE_TYPE:-}" = "sofort" ]; then
+ return 2;
+ else
case "${PKG_LIBTOOL:-}" in
"") _libtool=""; ;;
none) _libtool=""; ;;
*) _libtool="${PKG_LIBTOOL}"; ;;
esac;
- rtl_export_vars \
+
+ rtl_export_vars \
PKG_CONFIG "${PKG_PKG_CONFIG:-}" \
PKG_CONFIG_LIBDIR "${PKG_PKG_CONFIG_LIBDIR:-}" \
PYTHON "${PKG_PYTHON:-}" \
${_libtool:+MAKE} ${_libtool:+"make LIBTOOL=${_libtool}"};
+
AR="${PKG_AR}" \
CC="${PKG_CC}" \
RANLIB="${PKG_RANLIB}" \
@@ -23,8 +31,9 @@ pkg_configure() {
CXXFLAGS="${PKG_CXXFLAGS_CONFIGURE:-}${PKG_CXXFLAGS_CONFIGURE_EXTRA:+ ${PKG_CXXFLAGS_CONFIGURE_EXTRA}}" \
LDFLAGS="${PKG_LDFLAGS_CONFIGURE:-}${PKG_LDFLAGS_CONFIGURE_EXTRA:+ ${PKG_LDFLAGS_CONFIGURE_EXTRA}}" \
"${PKG_CONFIGURE}" ${PKG_CONFIGURE_ARGS:-} ${PKG_CONFIGURE_ARGS_EXTRA:-} ${PKG_CONFIGURE_ARGS_EXTRA_DEBUG:-};
- _rc="${?}"
- rtl_export_vars -u \
+ _rc=$((${?} ? 1 : ${_rc}));
+
+ rtl_export_vars -u \
PKG_CONFIG "${PKG_PKG_CONFIG:-}" \
PKG_CONFIG_LIBDIR "${PKG_PKG_CONFIG_LIBDIR:-}" \
PYTHON "${PKG_PYTHON:-}" \
@@ -33,4 +42,143 @@ pkg_configure() {
fi;
};
-# vim:filetype=sh
+pkgp_configure_cmake() {
+ local _cmake_args_auto"" _build_type="" _IFS0="${IFS:- }" _rc=0 IFS;
+
+ if [ "${PKG_CMAKE_LISTFILE:+1}" != 1 ]\
+ || ! [ -e "${PKG_BASE_DIR}/${PKG_SUBDIR}/${PKG_CMAKE_LISTFILE}" ]; then
+ _rc=2;
+ else
+ rtl_fileop rm config.cache || return 1;
+ rtl_export_vars \
+ PKG_CONFIG "${PKG_PKG_CONFIG:-}" \
+ PKG_CONFIG_LIBDIR "${PKG_PKG_CONFIG_LIBDIR:-}" \
+ PYTHON "${PKG_PYTHON:-}";
+
+ case "${BUILD_KIND}" in
+ debug) _build_type="debug"; ;;
+ release|*) _build_type="release"; ;;
+ esac;
+
+ _cmake_args_auto="
+ -DCMAKE_AR=${PKG_AR}
+ -DCMAKE_BUILD_TYPE=${_build_type}
+ -DCMAKE_C_COMPILER=${PKG_CC}
+ -DCMAKE_C_FLAGS=${PKG_CFLAGS_CONFIGURE:-}${PKG_CFLAGS_CONFIGURE_EXTRA:+ ${PKG_CFLAGS_CONFIGURE_EXTRA}}
+ -DCMAKE_CPP_FLAGS=${PKG_CPPFLAGS_CONFIGURE:-}${PKG_CPPFLAGS_CONFIGURE_EXTRA:+ ${PKG_CPPFLAGS_CONFIGURE_EXTRA}}
+ -DCMAKE_CXX_COMPILER=${PKG_CXX}
+ -DCMAKE_CXX_FLAGS=${PKG_CXXFLAGS_CONFIGURE:-}${PKG_CXXFLAGS_CONFIGURE_EXTRA:+ ${PKG_CXXFLAGS_CONFIGURE_EXTRA}}
+ -DCMAKE_EXE_LINKER_FLAGS=${PKG_LDFLAGS_CONFIGURE:-}${PKG_LDFLAGS_CONFIGURE_EXTRA:+ ${PKG_LDFLAGS_CONFIGURE_EXTRA}}
+ -DCMAKE_FIND_ROOT_PATH=${PKG_PREFIX}
+ -DCMAKE_INSTALL_PREFIX=
+ -DCMAKE_LINKER=$(which "ld")
+ -DCMAKE_MODULE_LINKER_FLAGS=${PKG_LDFLAGS_CONFIGURE:-}${PKG_LDFLAGS_CONFIGURE_EXTRA:+ ${PKG_LDFLAGS_CONFIGURE_EXTRA}}
+ -DCMAKE_RANLIB=${PKG_RANLIB}
+ -DCMAKE_SHARED_LINKER_FLAGS=${PKG_LDFLAGS_CONFIGURE:-}${PKG_LDFLAGS_CONFIGURE_EXTRA:+ ${PKG_LDFLAGS_CONFIGURE_EXTRA}}
+ -DPKG_CONFIG_EXECUTABLE=${PKG_PKG_CONFIG}" || return 1;
+
+ case "${PKG_BUILD_TYPE}" in
+ host|cross)
+ ;;
+ native)
+ _cmake_args_auto="${_cmake_args_auto:+${_cmake_args_auto}}
+ -DCMAKE_LINKER=$(which "${PKG_TARGET}-ld")
+ -DCMAKE_SYSROOT=${PKG_PREFIX}
+ -DCMAKE_SYSTEM_NAME=Midipix" || return 1;
+
+ case "${ARCH}" in
+ nt32) _cmake_args_auto="${_cmake_args_auto:+${_cmake_args_auto}}
+ -DCMAKE_SYSTEM_PROCESSOR=i686"; ;;
+ nt64) _cmake_args_auto="${_cmake_args_auto:+${_cmake_args_auto}}
+ -DCMAKE_SYSTEM_PROCESSOR=x86_64"; ;;
+ esac; ;;
+ esac;
+
+ IFS="
+ "; "${PKG_CMAKE}" \
+ ${_cmake_args_auto} \
+ ${PKG_CMAKE_ARGS:-} \
+ ${PKG_CMAKE_ARGS_EXTRA:-} \
+ "${PKG_BASE_DIR}/${PKG_SUBDIR}";
+ _rc=$((${?} ? ${?} : ${_rc})); IFS="${_IFS0}";
+
+ rtl_export_vars -u \
+ PKG_CONFIG "${PKG_PKG_CONFIG:-}" \
+ PKG_CONFIG_LIBDIR "${PKG_PKG_CONFIG_LIBDIR:-}" \
+ PYTHON "${PKG_PYTHON:-}";
+ fi;
+ return "${_rc}";
+};
+
+pkgp_configure_sofort() {
+ local _rc=0 _vname="" _vnames="" _vval="";
+
+ if ! [ -x "${PKG_CONFIGURE:-}" ]; then
+ return 2;
+ elif ! [ -d "${PKG_BASE_DIR}/${PKG_SUBDIR}/sofort" ]\
+ && ! [ "${PKG_CONFIGURE_TYPE:-}" = "sofort" ]; then
+ return 2;
+ else
+ for _vname in AR CC CXX LD RANLIB; do
+ if eval [ '"${PKG_'"${_vname}"':+1}"' = 1 ]; then
+ _vnames="${_vnames:+${_vnames} }${_vname}";
+ eval ${_vname}='${PKG_'"${_vname}"'}'; export ${_vname};
+ fi;
+ if eval [ '"${PKG_SOFORT_NATIVE_'"${_vname}"':+1}"' = 1 ]; then
+ _vnames="${_vnames:+${_vnames} }NATIVE_${_vname}";
+ eval NATIVE_${_vname}='${PKG_SOFORT_NATIVE_'"${_vname}"'}'; export NATIVE_${_vname};
+ fi;
+ done;
+ for _vname in CFLAGS CPPFLAGS CXXFLAGS LDFLAGS; do
+ if eval [ '"${PKG_'"${_vname}"'_CONFIGURE:+1}"' = 1 ]; then
+ eval _vval='${PKG_'"${_vname}"'_CONFIGURE}';
+ if eval [ '"${PKG_'"${_vname}"'_CONFIGURE_EXTRA:+1}"' = 1 ]; then
+ eval _vval='${_vval:+${_vval} }${PKG_'"${_vname}"'_CONFIGURE_EXTRA}';
+ fi;
+ _vnames="${_vnames:+${_vnames} }${_vname} ${_vname}_SHARED ${_vname}_STATIC";
+ eval ${_vname}='${_vval}'\; ${_vname}_SHARED='${_vval}'\; ${_vname}_STATIC='${_vval}';
+ export ${_vname} ${_vname}_SHARED ${_vname}_STATIC;
+ fi;
+ if eval [ '"${PKG_SOFORT_NATIVE_'"${_vname}"':+1}"' = 1 ]; then
+ eval _vval='${PKG_SOFORT_NATIVE_'"${_vname}"'}';
+ if eval [ '"${PKG_SOFORT_NATIVE_'"${_vname}"'_EXTRA:+1}"' = 1 ]; then
+ eval _vval='${_vval:+${_vval} }${PKG_SOFORT_NATIVE_'"${_vname}"'_EXTRA}';
+ fi;
+ _vnames="${_vnames:+${_vnames} }NATIVE_${_vname}";
+ eval NATIVE_${_vname}='${_vval}'; export NATIVE_${_vname};
+ fi;
+ done;
+
+ RANLIB="${PKG_RANLIB}" \
+ "${PKG_CONFIGURE}" \
+ ${PKG_CONFIGURE_ARGS:-} \
+ ${PKG_CONFIGURE_ARGS_EXTRA:-} \
+ ${PKG_CONFIGURE_ARGS_EXTRA_DEBUG:-};
+ _rc=$((${?} ? 1 : ${_rc}));
+
+ for _vname in ${_vnames}; do
+ unset "${_vname}";
+ done;
+ return "${_rc}";
+ fi;
+};
+
+pkg_configure() {
+ local _rc=0 _type="";
+
+ for _type in autotools sofort cmake; do
+ if [ "${PKG_CONFIGURE_TYPE:+1}" = 1 ]\
+ && [ "${PKG_CONFIGURE_TYPE}" != "${_type}" ]; then
+ continue;
+ else
+ pkgp_configure_${_type} "${@}"; _rc="${?}";
+ case "${_rc}" in
+ 0|1) return "${_rc}"; ;;
+ 2) _rc=0; continue; ;;
+ esac;
+ fi;
+ done;
+ return "${_rc}";
+};
+
+# vim:filetype=sh textwidth=0
diff --git a/subr/pkg_configure_autotools.subr b/subr/pkg_configure_autotools.subr
index 421be28b..c91a08a3 100644
--- a/subr/pkg_configure_autotools.subr
+++ b/subr/pkg_configure_autotools.subr
@@ -4,7 +4,12 @@
pkg_configure_autotools() {
local _config_cache="" _fname="" _subdir_tgt="";
- ex_pkg_env_sofort "${PKG_BASE_DIR}" "${PKG_SOFORT_FORCE:-0}" "${PKG_SUBDIR:-}";
+
+ if [ "${PKG_CONFIGURE_TYPE:+1}" = 1 ]\
+ && [ "${PKG_CONFIGURE_TYPE}" != "autotools" ]; then
+ return 0;
+ fi;
+
if rtl_exists_any "${PKG_BASE_DIR}/${PKG_SUBDIR}" \
"config.guess" "configure.ac" "configure.in" "configure";
then rtl_export_vars PKG_CONFIG "${PKG_PKG_CONFIG:-}" PKG_CONFIG_LIBDIR "${PKG_PKG_CONFIG_LIBDIR:-}";
diff --git a/subr/pkg_fetch_clean.subr b/subr/pkg_fetch_clean.subr
index a56196cb..52797068 100644
--- a/subr/pkg_fetch_clean.subr
+++ b/subr/pkg_fetch_clean.subr
@@ -8,7 +8,7 @@ pkg_fetch_clean() {
if [ -n "${PKG_URLS_GIT:-}" ]; then
if [ -n "${PKG_SUBDIR:-}" ]\
&& [ "${PKG_SUBDIR}" != "${PKG_URLS_GIT%%=*}" ]; then
- rtl_fileopm rm "${PKG_SUBDIR}";
+ rtl_fileop rm "${PKG_SUBDIR}";
fi;
for _dname in ${PKG_URLS_GIT}; do
_dname="${_dname%%=*}"; rtl_fileop rm "${_dname}";