diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/Makefile.in | 3 | ||||
-rw-r--r-- | lib/buildsystem.sh | 96 |
2 files changed, 98 insertions, 1 deletions
diff --git a/lib/Makefile.in b/lib/Makefile.in index c8d0b07..4f26b57 100644 --- a/lib/Makefile.in +++ b/lib/Makefile.in @@ -35,7 +35,8 @@ sed_script = s&@@PACKAGE_NAME@@&$(package_name)&;\ .SUFFIXES: .SUFFIXES: .sh .sm -SRCS = load.sh common.sh +SRCS = load.sh common.sh \ + buildsystem.sh OBJS = $(SRCS:.sh=.sm) distdir = ../$(package_name)-$(package_version)/lib diff --git a/lib/buildsystem.sh b/lib/buildsystem.sh new file mode 100644 index 0000000..65af7df --- /dev/null +++ b/lib/buildsystem.sh @@ -0,0 +1,96 @@ +# 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=' +' + +_OH_BUILDSYSTEM_BUILD_DIR='src' +_OH_BUILDSYSTEM_SYSTEM='' + +oh_buildsystems_init() +{ + _oh_local _ohbsi_bs + + for _ohbsi_bs in ${_OH_BUILDSYSTEMS}; do + oh_use "buildsystem/${_ohbsi_bs}" + done +} + +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="${value}" + ;; + 'build-system') + _OH_BUILDSYSTEM_SYSTEM="${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 +} |