diff options
Diffstat (limited to 'lib/buildsystem.sh')
-rw-r--r-- | lib/buildsystem.sh | 108 |
1 files changed, 108 insertions, 0 deletions
diff --git a/lib/buildsystem.sh b/lib/buildsystem.sh new file mode 100644 index 0000000..7cf70f5 --- /dev/null +++ b/lib/buildsystem.sh @@ -0,0 +1,108 @@ +# opkhelper +# lib/buildsystem +# Interface for interacting with software build systems. +# +# 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 <http://www.gnu.org/licenses/>. + +[ -n "${_OH_BUILDSYSTEM_SM}" ] && return 0 +_OH_BUILDSYSTEM_SM='true' + +_OH_BUILDSYSTEMS=' +autoconf +make +' + +oh_buildsystems_init() +{ + _oh_local _ohbsi_bs + + for _ohbsi_bs in ${_OH_BUILDSYSTEMS}; do + oh_use "buildsystem/${_ohbsi_bs}" + done + + _OH_BUILDSYSTEM_WORK_AREA="${PWD}" + _OH_BUILDSYSTEM_SOURCE_DIR="$(cd src && pwd)" + + [ -z "${_OH_BUILDSYSTEM_BUILD_DIR}" ] && \ + _OH_BUILDSYSTEM_BUILD_DIR="${PWD}/src" + [ -z "${_OH_BUILDSYSTEM_DESTDIR}" ] && \ + _OH_BUILDSYSTEM_DESTDIR="${PWD}/dest" + [ -z "${_OH_BUILDSYSTEM_SYSTEM}" ] && \ + _OH_BUILDSYSTEM_SYSTEM='' +} + +oh_set_buildsystem_option() +{ + _oh_local _ohsbso_name _obsbso_value + + if [ ${#} -eq 2 ]; then + _ohsbso_name="${1}" + _ohsbso_value="${2}" + else + _oh_return 125 + return ${?} + fi + + case "${_ohsbso_name}" in + 'build-dir') + _OH_BUILDSYSTEM_BUILD_DIR="${_ohsbso_value}" + ;; + 'destdir') + _OH_BUILDSYSTEM_DESTDIR="${_ohsbso_value}" + ;; + 'build-system') + _OH_BUILDSYSTEM_SYSTEM="${_ohsbso_value}" + ;; + *) + _oh_return 125 + return ${?} + ;; + esac +} + +oh_buildsystem_do() +{ + _oh_local _ohbsd_step _ohbsd_bs _ohbsd_done + + if [ ${#} -ge 1 ]; then + _ohbsd_step="${1}" + shift 1 + else + _oh_return 125 + return ${?} + fi + + _ohbsd_done='false' + + if [ -n "${_OH_BUILDSYSTEM_SYSTEM}" ]; then + if "_oh_${_OH_BUILDSYSTEM_SYSTEM}_can_${_ohbsd_step}"; then + "_oh_${_OH_BUILDSYSTEM_SYSTEM}_${_ohbsd_step}" "${@}" + _ohbsd_done='true' + fi + else + for _ohbsd_bs in ${_OH_BUILDSYSTEMS}; do + if "_oh_${_ohbsd_bs}_can_${_ohbsd_step}"; then + "_oh_${_ohbsd_bs}_${_ohbsd_step}" "${@}" + _ohbsd_done='true' + break + fi + done + fi + + if ! ${_ohbsd_done}; then + : error + fi +} |