Blob Blame History Raw
#
# 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.
#

pkgp_configure_autotools() {
	local _ppca_rc=0;

	if ! [ -x "${PKG_CONFIGURE:-}" ]; then
		_ppca_rc=2;
	elif [ -d "${PKG_BASE_DIR}/${PKG_SUBDIR}/sofort" ]\
	||   [ "${PKG_CONFIGURE_TYPE:-}" = "sofort" ];
	then
		_ppca_rc=2;
	else
		ex_rtl_configure								\
			"${PKG_AR}" "${PKG_CC}" "${PKG_CONFIGURE}" "${PKG_CXX}" "${PKG_LD}"	\
			"${PKG_LIBTOOL}" "${PKG_PKG_CONFIG}" "${PKG_PYTHON:-}" "${PKG_RANLIB}"	\
			--									\
			"${PKG_CONFIGURE_ARGS:-}" "${PKG_CONFIGURE_ARGS_EXTRA:-}"		\
			"${PKG_CONFIGURE_ARGS_LIST:-}" "${PKG_CONFIGURE_ARGS_EXTRA_LIST:-}"	\
			--									\
			"${PKG_CFLAGS_CONFIGURE:-}" "${PKG_CFLAGS_CONFIGURE_EXTRA:-}"		\
			"${PKG_CPPFLAGS_CONFIGURE:-}" "${PKG_CPPFLAGS_CONFIGURE_EXTRA:-}"	\
			"${PKG_CXXFLAGS_CONFIGURE:-}" "${PKG_CXXFLAGS_CONFIGURE_EXTRA:-}"	\
			"${PKG_LDFLAGS_CONFIGURE:-}" "${PKG_LDFLAGS_CONFIGURE_EXTRA:-}"		\
			"${PKG_PKG_CONFIG_LIBDIR:-}"						\
			;
		_ppca_rc=$((${?} ? 1 : ${_ppca_rc}));
	fi;

	return "${_ppca_rc}";
};

pkgp_configure_cmake() {
	local _ppcc_build_type="" _ppcc_rc=0 _ppcc_system_name="" _ppcc_system_processor="";

	if [ "${PKG_CMAKE_LISTFILE:+1}" != 1 ]\
	|| ! [ -e "${PKG_BASE_DIR}/${PKG_SUBDIR}/${PKG_CMAKE_LISTFILE}" ]; then
		_ppcc_rc=2;
	else
		case "${BUILD_KIND}" in
		debug)		_ppcc_build_type="debug"; ;;
		release|*)	_ppcc_build_type="release"; ;;
		esac;

		case "${PKG_BUILD_TYPE}" in
		native)
			_ppcc_system_name="Midipix";
			case "${ARCH}" in
			nt32)	_ppcc_system_processor="i686"; ;;
			nt64)	_ppcc_system_processor="x86_64"; ;;
			esac;
		esac;

		ex_rtl_configure_cmake								\
			"${PKG_AR}" "${PKG_CC}" "${ARG_CCACHE}" "${PKG_CMAKE}" "${PKG_CXX}"	\
			"${PKG_LD}" "${PKG_PKG_CONFIG}" "${PKG_PYTHON:-}" "${PKG_RANLIB}"	\
			--									\
			"${_ppcc_build_type}" "${PKG_CMAKE_ARGS:-}" "${PKG_CMAKE_ARGS_EXTRA:-}"	\
			"${PKG_PREFIX}" "${PKG_BASE_DIR}/${PKG_SUBDIR}" "${_ppcc_system_name}"	\
			"${_ppcc_system_processor}"						\
			--									\
			"${PKG_CFLAGS_CONFIGURE:-}" "${PKG_CFLAGS_CONFIGURE_EXTRA:-}"		\
			"${PKG_CPPFLAGS_CONFIGURE:-}" "${PKG_CPPFLAGS_CONFIGURE_EXTRA:-}"	\
			"${PKG_CXXFLAGS_CONFIGURE:-}" "${PKG_CXXFLAGS_CONFIGURE_EXTRA:-}"	\
			"${PKG_LDFLAGS_CONFIGURE:-}" "${PKG_LDFLAGS_CONFIGURE_EXTRA:-}"		\
			"${PKG_PKG_CONFIG_LIBDIR:-}"						\
			;
		_ppcc_rc=$((${?} ? 1 : ${_ppcc_rc}));
	fi;

	return "${_ppcc_rc}";
};

pkgp_configure_sofort() {
	local _ppcs_rc=0 _ppcs_vname="" _ppcs_vnames="" _ppcs_vval="";

	if ! [ -x "${PKG_CONFIGURE:-}" ]; then
		_ppcs_rc=2;
	elif ! [ -d "${PKG_BASE_DIR}/${PKG_SUBDIR}/sofort" ]\
	&&   ! [ "${PKG_CONFIGURE_TYPE:-}" = "sofort" ]; then
		_ppcs_rc=2;
	else
		for _ppcs_vname in AR CC CCLD CXX RANLIB; do
			if eval [ '"${PKG_'"${_ppcs_vname}"':+1}"' = 1 ]; then
				if [ "${_ppcs_vname}" = CCLD ]; then
					_ppcs_vnames="${_ppcs_vnames:+${_ppcs_vnames} }LD";
					eval LD='${PKG_'"${_ppcs_vname}"'}'; export LD;
				else
					_ppcs_vnames="${_ppcs_vnames:+${_ppcs_vnames} }${_ppcs_vname}";
					eval ${_ppcs_vname}='${PKG_'"${_ppcs_vname}"'}'; export ${_ppcs_vname};
				fi;
			fi;

			if eval [ '"${PKG_SOFORT_NATIVE_'"${_ppcs_vname}"':+1}"' = 1 ]; then
				_ppcs_vnames="${_ppcs_vnames:+${_ppcs_vnames} }NATIVE_${_ppcs_vname}";
				eval NATIVE_${_ppcs_vname}='${PKG_SOFORT_NATIVE_'"${_ppcs_vname}"'}'; export NATIVE_${_ppcs_vname};
			fi;
		done;

		for _ppcs_vname in CFLAGS CPPFLAGS CXXFLAGS LDFLAGS; do
			if eval [ '"${PKG_'"${_ppcs_vname}"'_CONFIGURE:+1}"' = 1 ]; then
				eval _ppcs_vval='${PKG_'"${_ppcs_vname}"'_CONFIGURE}';
				if eval [ '"${PKG_'"${_ppcs_vname}"'_CONFIGURE_EXTRA:+1}"' = 1 ]; then
					eval _ppcs_vval='${_ppcs_vval:+${_ppcs_vval} }${PKG_'"${_ppcs_vname}"'_CONFIGURE_EXTRA}';
				fi;
				_ppcs_vnames="${_ppcs_vnames:+${_ppcs_vnames} }${_ppcs_vname} ${_ppcs_vname}_SHARED ${_ppcs_vname}_STATIC";
				eval ${_ppcs_vname}='${_ppcs_vval}'\; ${_ppcs_vname}_SHARED='${_ppcs_vval}'\; ${_ppcs_vname}_STATIC='${_ppcs_vval}';
				export ${_ppcs_vname} ${_ppcs_vname}_SHARED ${_ppcs_vname}_STATIC;
			fi;

			if eval [ '"${PKG_SOFORT_NATIVE_'"${_ppcs_vname}"':+1}"' = 1 ]; then
				eval _ppcs_vval='${PKG_SOFORT_NATIVE_'"${_ppcs_vname}"'}';
				if eval [ '"${PKG_SOFORT_NATIVE_'"${_ppcs_vname}"'_EXTRA:+1}"' = 1 ]; then
					eval _ppcs_vval='${_ppcs_vval:+${_ppcs_vval} }${PKG_SOFORT_NATIVE_'"${_ppcs_vname}"'_EXTRA}';
				fi;
				_ppcs_vnames="${_ppcs_vnames:+${_ppcs_vnames} }NATIVE_${_ppcs_vname}";
				eval NATIVE_${_ppcs_vname}='${_ppcs_vval}'; export NATIVE_${_ppcs_vname};
			fi;
		done;

		RANLIB="${PKG_RANLIB}"				\
			"${PKG_CONFIGURE}"			\
				${PKG_CONFIGURE_ARGS:-}		\
				${PKG_CONFIGURE_ARGS_EXTRA:-};
		_ppcs_rc=$((${?} ? 1 : ${_ppcs_rc}));

		for _ppcs_vname in ${_ppcs_vnames}; do
			unset "${_ppcs_vname}";
		done;
	fi;

	return "${_ppcs_rc}";
};

pkg_configure() {
	local	_pc_group_name="${1}" _pc_pkg_name="${2}" _pc_restart_at="${3}"	\
		_pc_rc=0 _pc_type="";

	for _pc_type in autotools sofort cmake; do
		if [ "${PKG_CONFIGURE_TYPE:+1}" = 1 ]\
		&& [ "${PKG_CONFIGURE_TYPE}" != "${_pc_type}" ]; then
			continue;
		else
			pkgp_configure_${_pc_type} "${@}"; _pc_rc="${?}";
			case "${_pc_rc}" in
			0|1)	return "${_pc_rc}"; ;;
			2)	_pc_rc=0; continue; ;;
			esac;
		fi;
	done;
	return "${_pc_rc}";
};

# vim:filetype=sh textwidth=0