summaryrefslogtreecommitdiffstats
path: root/configure
diff options
context:
space:
mode:
Diffstat (limited to 'configure')
-rwxr-xr-xconfigure320
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 "${@}"