summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPatrick McDermott <patrick.mcdermott@libiquity.com>2018-12-20 18:53:57 (EST)
committer Patrick McDermott <patrick.mcdermott@libiquity.com>2018-12-20 18:55:06 (EST)
commite6a5f461fdcd5104e9ee5cc84244bef49cc91bee (patch)
tree06e5156924b0a24d4b7f8591c91e6cf783e2a050
parent1b002330a29ca479599f680af51116bfd013c3ae (diff)
Switch to using GNU Autoconf
-rw-r--r--Makefile.in47
-rwxr-xr-xautogen.sh26
-rwxr-xr-xconfigure342
-rw-r--r--configure.ac132
4 files changed, 182 insertions, 365 deletions
diff --git a/Makefile.in b/Makefile.in
index e8201b8..edd7275 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -17,33 +17,34 @@
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
-package_name = @package_name@
-package_version = @package_version@
-package_description = @package_description@
-package_library = @package_library@
+package_name = @PACKAGE_NAME@
+package_version = @PACKAGE_VERSION@
+package_description = @PACKAGE_DESCRIPTION@
+package_library = @PACKAGE_LIBRARY@
srcdir = @srcdir@
prefix = @prefix@
+exec_prefix = @prefix@
bindir = @bindir@
libdir = @libdir@
-pkglibdir = @pkglibdir@
+pkglibdir = $(libdir)/@PACKAGE_LIBRARY@
datadir = @datadir@
mandir = @mandir@
-man1dir = @man1dir@
-man3dir = @man3dir@
+man1dir = $(mandir)/man1
+man3dir = $(mandir)/man3
localedir = @localedir@
sysconfdir = @sysconfdir@
DESTDIR = /
-sh = @sh@
-opkg = @opkg@
+sh = @SH@
+opkg = @OPKG@
-metadata = @metadata@
+metadata = @METADATA@
pkglibpackagedir = $(pkglibdir)/package
pkglibmetadatadir = $(pkglibdir)/metadata
-pkgdatadir = $(datadir)/$(package_name)
+pkgdatadir = $(datadir)/@PACKAGE_NAME@
helperdir = $(pkgdatadir)/helpers
include $(srcdir)/src/local.mk
@@ -97,18 +98,18 @@ distfiles = \
$(tests_data)
script = \
- s&@@PACKAGE_NAME@@&$(package_name)&;\
- s&@@PACKAGE_VERSION@@&$(package_version)&;\
- s&@@PACKAGE_DESCRIPTION@@&$(package_description)&;\
- s&@@BINDIR@@&$(bindir)&;\
- s&@@PKGLIBDIR@@&$(pkglibdir)&;\
- s&@@DATADIR@@&$(datadir)&;\
- s&@@LOCALEDIR@@&$(localedir)&;\
- s&@@SYSCONFDIR@@&$(sysconfdir)&;\
- s&@@HELPERDIR@@&$(helperdir)&;\
- s&@@SH@@&$(sh)&;\
- s&@@OPKG@@&$(opkg)&;\
- s&@@METADATA@@&$(metadata)&;\
+ s&@[@]PACKAGE_NAME@@&$(package_name)&;\
+ s&@[@]PACKAGE_VERSION@@&$(package_version)&;\
+ s&@[@]PACKAGE_DESCRIPTION@@&$(package_description)&;\
+ s&@[@]BINDIR@@&$(bindir)&;\
+ s&@[@]PKGLIBDIR@@&$(pkglibdir)&;\
+ s&@[@]DATADIR@@&$(datadir)&;\
+ s&@[@]LOCALEDIR@@&$(localedir)&;\
+ s&@[@]SYSCONFDIR@@&$(sysconfdir)&;\
+ s&@[@]HELPERDIR@@&$(helperdir)&;\
+ s&@[@]SH@@&$(sh)&;\
+ s&@[@]OPKG@@&$(opkg)&;\
+ s&@[@]METADATA@@&$(metadata)&;\
.SUFFIXES:
.SUFFIXES: .sh .sm .1in .1 .3in .3 .ms
diff --git a/autogen.sh b/autogen.sh
new file mode 100755
index 0000000..2051523
--- /dev/null
+++ b/autogen.sh
@@ -0,0 +1,26 @@
+#!/bin/sh
+#
+# Script to generate the build system.
+#
+# Copyright (C) 2013 Patrick "P. J." McDermott
+#
+# Copying and distribution of this file, with or without modification,
+# are permitted in any medium without royalty provided the copyright
+# notice and this notice are preserved. This file is offered as-is,
+# without any warranty.
+
+set -e
+
+srcdir="${0%/*}"
+
+{(
+ cd "${srcdir}"
+ [ -d build-aux ] || mkdir build-aux
+ cat >ChangeLog <<-EOF
+This file is generated upon release. Run \`git log\` for a list of changes.
+EOF
+ aclocal
+ autoconf
+)}
+
+"${srcdir}/configure" "${@}"
diff --git a/configure b/configure
deleted file mode 100755
index 94d1177..0000000
--- a/configure
+++ /dev/null
@@ -1,342 +0,0 @@
-#! /bin/sh
-#
-# opkbuild
-# configure
-# Configuration script to generate Makefile.
-#
-# Copyright (C) 2011-2013 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/>.
-
-package_name='opkbuild'
-package_version='3.0.0-beta7'
-package_description='Distribution Build System'
-package_library='libopkbuild.1'
-
-srcdir="$(cd "${0%/*}" && pwd)"
-prefix='/usr/local'
-bindir='${prefix}/bin'
-libdir='${prefix}/share'
-pkglibdir='${libdir}/${package_library}'
-datadir='${prefix}/share'
-mandir='${datadir}/man'
-man1dir='${mandir}/man1'
-man3dir='${mandir}/man3'
-localedir='${datadir}/locale'
-sysconfdir='/etc'
-metadata='proteanos'
-
-quiet='false'
-missing_deps='false'
-dep_cmds='
-sh
-make
-opkg
-'
-opt_dep_libs='
-'
-
-long_opts_with_args='
-srcdir
-prefix
-bindir
-libdir
-pkglibdir
-datadir
-mandir
-man1dir
-man3dir
-localedir
-sysconfdir
-'
-
-features="
-${dep_cmds}
-${dep_libs}
-${opt_dep_cmds}
-${opt_dep_libs}
-metadata
-"
-
-subst_vars="
-package_name
-package_version
-package_description
-package_library
-${long_opts_with_args}
-${features}
-"
-
-main()
-{
- parse_options "${@}"
- shift ${optind}
- if [ ${#} -ne 0 ]; then
- print_usage
- exit
- fi
-
- for dep in ${dep_cmds}; do
- dep_name="$(printf '%s' "${dep}" | tr -c '[a-z0-9]' '_')"
- dep_val="$(eval echo \$\{"${dep_name}"\})"
- if [ -z "${dep_val}" ]; then
- find_dep_cmd "${dep}" || missing_deps='true'
- fi
- done
- for dep in ${dep_libs}; do
- dep_name="$(printf '%s' "${dep}" | tr -c '[a-z0-9]' '_')"
- dep_val="$(eval echo \$\{"${dep_name}"\})"
- if [ -z "${dep_val}" ]; then
- find_dep_lib "${dep}" || missing_deps='true'
- fi
- done
- for dep in ${opt_dep_cmds}; do
- dep_name="$(printf '%s' "${dep}" | tr -c '[a-z0-9]' '_')"
- dep_val="$(eval echo \$\{"${dep_name}"\})"
- if [ -z "${dep_val}" ]; then
- find_dep_cmd "${dep}"
- fi
- done
- for dep in ${opt_dep_libs}; do
- dep_name="$(printf '%s' "${dep}" | tr -c '[a-z0-9]' '_')"
- dep_val="$(eval echo \$\{"${dep_name}"\})"
- if [ -z "${dep_val}" ]; then
- find_dep_lib "${dep}"
- fi
- done
-
- if ${missing_deps}; then
- cat <<EOF
-
-Some dependencies could not be found.
-Please make sure all dependencies are installed and try again.
-
-EOF
- exit 1
- fi
-
- write_makefiles
-
- printf '\nConfiguration complete!\n\n'
-}
-
-print_usage()
-{
- printf 'Usage: %s [OPTION]...\n' "${0}"
-}
-
-print_help()
-{
- cat <<EOF
-\`configure' configures ${package_name} ${package_version} to adapt to many \
-kinds of systems.
-
-$(print_usage)
-
-Configuration:
- -h, --help display this help and exit
- -V, --version display version information and exit
- -q, --quiet do not print \`checking ...' messages
- --srcdir=SRCDIR find the sources in SRCDIR
- default: configure dir
-
-Installation directories:
- --prefix=PREFIX install files under PREFIX
- default: /usr/local
- --bindir=BINDIR install scripts in BINDIR
- default: PREFIX/bin
- --libdir=LIBDIR install library scripts in LIBDIR
- default: PREFIX/share
- --pkglibdir=PKGLIBDIR install package library scripts in PKGLIBDIR
- default: LIBDIR/${package_library}
- --datadir=DATADIR expect to find data in DATADIR
- default: PREFIX/share
- --mandir=MANDIR install manual pages in MANDIR
- default: DATADIR/man
- --man1dir=MAN1DIR install section 1 manual pages in MAN1DIR
- default: MANDIR/man1
- --man3dir=MAN1DIR install section 3 manual pages in MAN3DIR
- default: MANDIR/man3
- --localedir=LOCALEDIR install locales in LOCALEDIR
- default: DATADIR/locale
- --sysconfdir=SYSCONFDIR install system configuration in SYSCONFDIR
- default: /etc
-
-Features:
- --with-metadata=SYSTEM use SYSTEM metadata plugin
- default: proteanos
-
-Dependencies:
- --with-sh=PATH use sh at PATH
- --with-opkg=PATH use opkg at PATH
-EOF
-}
-
-print_version()
-{
- cat <<EOF
-${package_name} ${package_version} configure
-Not generated by GNU Autoconf
-
-Copyright (C) 2011-2013 Patrick "P. J." McDermott
-License: GNU GPL version 2 or later <http://www.gnu.org/licenses/gpl.html>.
-This configure script is free software: you can redistribute and/or modify it.
-There is NO WARRANTY, to the extent permitted by law.
-EOF
-}
-
-parse_options()
-{
- optind=0
-
- for _opt; do
-
- # Handle arguments of "--opt arg" options.
- if [ -n "${_prev}" ]; then
- eval "${_prev}"=\"\$\{_opt\}\"
- _prev=''
- continue
- fi
-
- # Detect "--opt=arg" and "--opt arg" options.
- case "${_opt}" in
- *=*)
- _optarg="${_opt#*=}"
- _opt="${_opt%=*}"
- _optarg_set='true'
- ;;
- *)
- _optarg_set='false'
- ;;
- esac
-
- # Handle short and long options.
- case "${_opt}" in
- --)
- break
- ;;
- -h|--help)
- print_help
- exit 0
- ;;
- -V|--version)
- print_version
- exit 0
- ;;
- -q|--quiet)
- quiet='true'
- continue
- ;;
- esac
-
- # Anything beyond this point should be a long option.
- case "${_opt}" in
- --with-*)
- _opt="${_opt#--with-}"
- _opts="${features}"
- _type='package'
- ;;
- --*)
- _opt="${_opt#--}"
- _opts="${long_opts_with_args}"
- _type='option'
- ;;
- *)
- break
- ;;
- esac
-
- grep "^${_opt}\$" >/dev/null 2>&1 <<EOF
-"${_opts}"
-EOF
- if [ ${?} -ne 0 ]; then
- printf 'warning: unrecognized %s name: %s\n' \
- "${_type}" "${_opt}" >&2
- elif ${_optarg_set}; then
- _opt="$(printf '%s' "${_opt}" | tr -c '[a-z0-9]' '_')"
- eval "${_opt}"=\"\$\{_optarg\}\"
- else
- _prev="${_opt}"
- fi
-
- optind=$(($optind + 1))
-
- done
-}
-
-find_dep_cmd()
-{
- _dep="${1}"
-
- ${quiet} || printf 'checking for %s... ' "${_dep}"
-
- IFS=':'
-
- for _element in ${PATH}; do
- unset IFS
- : ${_element=-.}
- if [ -f "${_element}/${_dep}" -a -x "${_element}/${_dep}" ]; then
- ${quiet} || printf '%s/%s\n' "${_element}" "${_dep}"
- _var="$(printf '%s' "${_dep}" | tr -c '[a-z0-9]' '_')"
- eval "${_var}"=\"${_element}/${_dep}\"
- return 0
- fi
- done
-
- unset IFS
-
- ${quiet} || printf 'not found\n'
- return 1
-}
-
-find_dep_lib()
-{
- _dep="${1}"
-
- ${quiet} || printf 'checking for %s... ' "${_dep}"
-
- for _element in $(eval echo "${libdir}") ${PATH}; do
- : ${_element=-.}
- if [ -d "${_element}/${_dep}" ]; then
- ${quiet} || printf '%s/%s\n' "${_element}" "${_dep}"
- _var="$(printf '%s' "${_dep}" | tr -c '[a-z0-9]' '_')"
- eval "${_var}"=\"${_element}/${_dep}\"
- return 0
- fi
- done
-
- ${quiet} || printf 'not found\n'
- return 1
-}
-
-write_makefiles()
-{
- mkdir -p src lib lib/package lib/metadata locale man tests
-
- # Make a script to edit input makefiles.
- _sed_script=''
- for _var in ${subst_vars}; do
- _var="$(printf '%s' "${_var}" | tr -c '[a-z0-9]' '_')"
- _sed_script="${_sed_script}s&@${_var}@&$(eval echo \$\{"${_var}"\})&g;"
- done
-
- sed "${_sed_script}" "${srcdir}/Makefile.in" >'Makefile'
-
- # New and improved kludge to generate system configuration for testing.
- # TODO: Remove when no longer used.
- sed "${_sed_script}" "${srcdir}/mksysconf.in" >'mksysconf'
- chmod 755 'mksysconf'
-}
-
-main "${@}"
diff --git a/configure.ac b/configure.ac
new file mode 100644
index 0000000..5429166
--- /dev/null
+++ b/configure.ac
@@ -0,0 +1,132 @@
+# Process this file with autoconf to produce a configure script.
+#
+# Copyright (C) 2013, 2018 Patrick McDermott
+#
+# This file is part of opkbuild.
+#
+# opkbuild 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 3 of the License, or
+# (at your option) any later version.
+#
+# opkbuild 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 opkbuild. If not, see <http://www.gnu.org/licenses/>.
+
+AC_INIT([opkbuild], [3.0.0-beta7],
+ [mailto:proteanos-dev@lists.proteanos.com], [opkbuild],
+ [http://www.proteanos.com/dev/pro-archman/])
+AC_SUBST([PACKAGE_DESCRIPTION], ['Distribution Build System'])
+AC_SUBST([PACKAGE_LIBRARY], ['libopkbuild.1'])
+AC_CONFIG_AUX_DIR([build-aux])
+AC_CONFIG_SRCDIR([src/opkbuild.sh])
+
+AC_ARG_WITH(
+ [sh],
+ [AS_HELP_STRING([--with-sh=PATH],
+ [POSIX-conformant shell with `local'])],
+ dnl This `dnl' is needed to workaround Vim syntax highlighting.
+ [
+ case "${withval}" in
+ 'yes'|'')
+ AC_MSG_ERROR([--with-sh requires an argument])
+ ;;
+ 'no')
+ AC_MSG_ERROR([sh is required])
+ ;;
+ *)
+ SH="${withval}"
+ AC_SUBST([SH])
+ ;;
+ esac
+ ],
+ [
+ AC_PATH_PROG([SH], [sh])
+ if test -z "${SH}"; then
+ AC_MSG_ERROR([sh not found])
+ fi
+ ]
+)
+
+AC_ARG_WITH(
+ [make],
+ [AS_HELP_STRING([--with-make=PATH], [path to make utility])],
+ [
+ case "${withval}" in
+ 'yes'|'')
+ AC_MSG_ERROR([--with-make requires an argument])
+ ;;
+ 'no')
+ AC_MSG_ERROR([make is required])
+ ;;
+ *)
+ MAKE="${withval}"
+ AC_SUBST([MAKE])
+ ;;
+ esac
+ ],
+ [
+ AC_PATH_PROG([MAKE], [make])
+ if test -z "${MAKE}"; then
+ AC_MSG_ERROR([make not found])
+ fi
+ ]
+)
+
+AC_ARG_WITH(
+ [opkg],
+ [AS_HELP_STRING([--with-opkg=PATH], [path to opkg utility])],
+ [
+ case "${withval}" in
+ 'yes'|'')
+ AC_MSG_ERROR([--with-opkg requires an argument])
+ ;;
+ 'no')
+ AC_MSG_ERROR([opkg is required])
+ ;;
+ *)
+ OPKG="${withval}"
+ AC_SUBST([OPKG])
+ ;;
+ esac
+ ],
+ [
+ AC_PATH_PROG([OPKG], [opkg])
+ if test -z "${OPKG}"; then
+ AC_MSG_ERROR([opkg not found])
+ fi
+ ]
+)
+
+AC_ARG_WITH(
+ [metadata],
+ [AS_HELP_STRING([--with-metadata=SYSTEM],
+ [use SYSTEM metadata plugin \[default: proteanos\]])],
+ [
+ case "${withval}" in
+ 'yes'|'')
+ AC_MSG_ERROR([--with-metadata requires an
+ argument])
+ ;;
+ 'no')
+ AC_MSG_ERROR([a metadata plugin is required])
+ ;;
+ *)
+ AC_SUBST([METADATA], ["${withval}"])
+ ;;
+ esac
+ ],
+ [
+ AC_SUBST([METADATA], ['proteanos'])
+ ]
+)
+
+AC_CONFIG_FILES([Makefile])
+dnl New and improved kludge to generate system configuration for testing.
+dnl TODO: Remove when no longer used.
+AC_CONFIG_FILES([mksysconf])
+AC_OUTPUT()