From f3aeb0ffc84c75faea757d94b0270ee566b6a03f Mon Sep 17 00:00:00 2001 From: P. J. McDermott Date: Mon, 22 Oct 2012 03:40:58 -0400 Subject: Merge branch 'feature/buildsystems-support'. --- (limited to 'lib/buildsystem') diff --git a/lib/buildsystem/Makefile.in b/lib/buildsystem/Makefile.in new file mode 100644 index 0000000..abc59ff --- /dev/null +++ b/lib/buildsystem/Makefile.in @@ -0,0 +1,69 @@ +# opkhelper +# Makefile.in +# Input Makefile for configure. +# +# 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 . + +package_name = @package_name@ +package_version= @package_version@ + +srcdir = @srcdir@ +prefix = @prefix@ +libdir = @libdir@ +libopkhelper = @libopkhelper@ + +sed_script = s&@@PACKAGE_NAME@@&$(package_name)&;\ + s&@@PACKAGE_VERSION@@&$(package_version)&; + +.SUFFIXES: +.SUFFIXES: .sh .sm + +SRCS = autoconf.sh make.sh +OBJS = $(SRCS:.sh=.sm) + +distdir = ../../$(package_name)-$(package_version)/lib/buildsystem +distfiles = Makefile.in $(SRCS) + +all: $(OBJS) + +$(OBJS): + @printf ' SED lib/buildsystem/%s\n' '$@' + @sed '$(sed_script)' '$(srcdir)/lib/buildsystem/$*.sh' >'$@' + +clean: + @for obj in $(OBJS); do \ + printf ' RM lib/buildsystem/%s\n' "$${obj}"; \ + rm -f "$${obj}"; \ + done + +install: all + @mkdir -p '$(DESTDIR)/$(libopkhelper)/buildsystem' + @for obj in $(OBJS); do \ + printf ' INSTALL lib/buildsystem/%s\n' "$${obj}"; \ + cp "$${obj}" "$(DESTDIR)/$(libopkhelper)/buildsystem/$${obj}"; \ + chmod 644 "$(DESTDIR)/$(libopkhelper)/buildsystem/$${obj}"; \ + done + +uninstall: + @for obj in $(OBJS); do \ + printf ' RM %s\n' "$${obj}"; \ + rm -f "$(DESTDIR)/$(libopkhelper)/buildsystem/$${obj}"; \ + done + @rmdir '$(DESTDIR)/$(libopkhelper)/buildsystem' 2>/dev/null || true + +$(distdir): + @mkdir -p '$(distdir)' + @cp -pR $(distfiles) '$(distdir)' diff --git a/lib/buildsystem/autoconf.sh b/lib/buildsystem/autoconf.sh new file mode 100644 index 0000000..13370ae --- /dev/null +++ b/lib/buildsystem/autoconf.sh @@ -0,0 +1,72 @@ +# opkhelper +# lib/buildsystem/autoconf +# Build system plugin for GNU Autoconf. +# +# 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 . + +[ -n "${_OH_BUILDSYSTEM_AUTOCONF_SM}" ] && return 0 +_OH_BUILDSYSTEM_AUTOCONF_SM='true' + +_oh_autoconf_can_configure() +{ + [ -x "${_OH_BUILDSYSTEM_SOURCE_DIR}/configure" ] +} + +_oh_autoconf_configure() +{ + mkdir -p "${_OH_BUILDSYSTEM_BUILD_DIR}" + cd "${_OH_BUILDSYSTEM_BUILD_DIR}" + + "${_OH_BUILDSYSTEM_SOURCE_DIR}/configure" \ + --prefix='/usr' \ + --bindir='${prefix}/bin' \ + --sbindir='${prefix}/sbin' \ + --libexecdir='${prefix}/lib' \ + --sysconfdir='/etc' \ + --localstatedir='/var' \ + --libdir='${prefix}/lib' \ + --includedir='${prefix}/include' \ + --infodir='${prefix}/share/info' \ + --mandir='${prefix}/share/man' \ + --build="${OPK_BUILD_ARCH_GNU}" \ + $([ "${OPK_BUILD_ARCH}" != "${OPK_HOST_ARCH}" ] && \ + printf '%s' "--host=${OPK_HOST_ARCH_GNU}") \ + --disable-maintainer-mode \ + --disable-dependency-tracking \ + "${@}" + + cd "${_OH_BUILDSYSTEM_WORK_AREA}" +} + +_oh_autoconf_can_build() +{ + return 1 +} + +_oh_autoconf_can_clean() +{ + return 1 +} + +_oh_autoconf_can_test() +{ + return 1 +} + +_oh_autoconf_can_install() +{ + return 1 +} diff --git a/lib/buildsystem/make.sh b/lib/buildsystem/make.sh new file mode 100644 index 0000000..5df424a --- /dev/null +++ b/lib/buildsystem/make.sh @@ -0,0 +1,97 @@ +# opkhelper +# lib/buildsystem/make +# 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 . + +[ -n "${_OH_BUILDSYSTEM_MAKE_SM}" ] && return 0 +_OH_BUILDSYSTEM_MAKE_SM='true' + +_oh_make_can_configure() +{ + return 1 +} + +_oh_make_can_build() +{ + [ -r "${_OH_BUILDSYSTEM_SOURCE_DIR}/makefile" -o \ + -r "${_OH_BUILDSYSTEM_SOURCE_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() +{ + _oh_make_update_first_defined_target 'install' \ + "${@}" "DESTDIR=${_OH_BUILDSYSTEM_DESTDIR}" +} + +_oh_make_update_first_defined_target() +{ + _oh_local _ohbsmufdt_targets _ohbsmufdt_target + + _ohbsmufdt_targets="${1}" + shift + + mkdir -p "${_OH_BUILDSYSTEM_BUILD_DIR}" + cd "${_OH_BUILDSYSTEM_BUILD_DIR}" + + if [ -z "${_ohbsmufdt_targets}" ]; then + make "${@}" + else + for _ohbsmufdt_target in ${_ohbsmufdt_targets}; do + # If the target is defined, ... + if make -n "${_ohbsmufdt_target}" >/dev/null 2>&1; then + # ... then update it. + make "${@}" "${_ohbsmufdt_target}" + break + fi + done + fi + + cd "${_OH_BUILDSYSTEM_WORK_AREA}" + + _oh_return 0 + return ${?} +} -- cgit v0.9.1