# opkhelper # lib/buildsystem/make.sh # Build system plugin for POSIX-conformant make. # # Copyright (C) 2012 Patrick "P. J." McDermott # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . [ "x${_OH_BUILDSYSTEM_MAKE_SM+set}" = 'xset' ] && return 0 _OH_BUILDSYSTEM_MAKE_SM=1 _oh_make_can_configure() { return 1 } _oh_make_can_build() { [ -r "${_OH_BUILDSYSTEM_BUILD_DIR}/makefile" -o \ -r "${_OH_BUILDSYSTEM_BUILD_DIR}/Makefile" ] } _oh_make_build() { _oh_make_update_first_defined_target '' "${@}" } _oh_make_can_clean() { _oh_make_can_build } _oh_make_clean() { _oh_make_update_first_defined_target 'distclean realclean clean' "${@}" } _oh_make_can_test() { _oh_make_can_build } _oh_make_test() { _oh_make_update_first_defined_target 'test check' "${@}" } _oh_make_can_install() { _oh_make_can_build } _oh_make_install() { # About the destination directory macros: # * As recommended by the GNU Coding Standards (since 1998-10-15), # makefiles generated by GNU Automake use DESTDIR (since 1998-03-20 # and released in Automake 1.3). # * The makefile of glibc (and therefore EGLIBC) uses install_root # (since 1997-01-18). (Since 2011-07-05, install_root is set to the # value of DESTDIR by default.) Postfix is another package that # uses install_root. # * The makefiles of some other packages use INSTALL_ROOT. PHP 5 is # one such package. Makefiles generated by qmake and CMake also use # INSTALL_ROOT. _oh_make_update_first_defined_target 'install' \ "DESTDIR=${_OH_BUILDSYSTEM_DESTDIR}" \ "install_root=${_OH_BUILDSYSTEM_DESTDIR}" \ "INSTALL_ROOT=${_OH_BUILDSYSTEM_DESTDIR}" \ "${@}" } _oh_make_update_first_defined_target() { local targets="${1}" local target= local rc= shift mkdir -p "${_OH_BUILDSYSTEM_BUILD_DIR}" cd "${_OH_BUILDSYSTEM_BUILD_DIR}" if [ "x${_OH_BUILDSYSTEM_BUILD_TARGET}" != 'x' ]; then make "${@}" "${_OH_BUILDSYSTEM_BUILD_TARGET}" rc=${?} elif [ "x${targets}" != 'x' ]; then for target in ${targets}; do # If the target is defined, ... if make -n "${target}" >/dev/null 2>&1; then # ... then update it. make "${@}" "${target}" rc=${?} break fi done else make "${@}" rc=${?} fi cd "${_OH_BUILDSYSTEM_WORK_AREA}" return ${rc} }