From e6a5f461fdcd5104e9ee5cc84244bef49cc91bee Mon Sep 17 00:00:00 2001 From: Patrick McDermott Date: Thu, 20 Dec 2018 18:53:57 -0500 Subject: Switch to using GNU Autoconf --- 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 . -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 . - -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 <. -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 <&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 . + +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() -- cgit v0.9.1