diff options
Diffstat (limited to 'configure')
-rwxr-xr-x | configure | 320 |
1 files changed, 320 insertions, 0 deletions
diff --git a/configure b/configure new file mode 100755 index 0000000..1270c1a --- /dev/null +++ b/configure @@ -0,0 +1,320 @@ +#! /bin/sh +# +# pro-archman +# 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='pro-archman' +package_version='0.1.0-alpha1' +package_description='ProteanOS Archive Manager' +package_library='pro-archman' + +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' +localedir='${datadir}/locale' + +quiet='false' +missing_deps='false' +dep_cmds=' +sh +make +' + +long_opts_with_args=' +srcdir +prefix +bindir +libdir +pkglibdir +datadir +mandir +man1dir +localedir +' + +features=" +${dep_cmds} +${dep_libs} +${opt_dep_cmds} +${opt_dep_libs} +" + +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 printf \'%s\' \"\$\{"${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 printf \'%s\' \"\$\{"${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 printf \'%s\' \"\$\{"${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 printf \'%s\' \"\$\{"${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 + --localedir=LOCALEDIR install locales in LOCALEDIR + default: DATADIR/locale + +Dependencies: + --with-sh=PATH use sh 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 printf \'%s\' \""${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]' '_')" + _val="$(eval printf \'%s\' \"\$\{"${_var}"\}\")" + _sed_script="${_sed_script}s&@${_var}@&${_val}&g;" + done + + sed "${_sed_script}" "${srcdir}/Makefile.in" >'Makefile' +} + +main "${@}" |