#! /bin/sh # # opkhelper # configure # Configuration script to generate Makefile. # # 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 <http://www.gnu.org/licenses/>. package_name='opkhelper' package_version='3.0.0-beta1' package_description='OPK Build Helper Tools' package_library='libopkhelper.3.0' srcdir="$(cd "${0%/*}" && pwd)" prefix='/usr/local' bindir='${prefix}/bin' libdir='${prefix}/share' pkglibdir='${libdir}/${package_library}' libopkhelper='${pkglibdir}' datadir='${prefix}/share' mandir='${datadir}/man' man1dir='${mandir}/man1' localedir='${datadir}/locale' multiarch_libdir='false' quiet='false' missing_deps='false' dep_cmds=' sh make ' dep_libs=' libopkbuild.1 archtab ' long_opts_with_args=' srcdir prefix bindir libdir pkglibdir datadir mandir man1dir localedir ' features=" ${dep_cmds} ${dep_libs} ${opt_dep_cmds} ${opt_dep_libs} multiarch-libdir " subst_vars=" package_name package_version package_description package_library ${long_opts_with_args} libopkhelper ${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 scripts 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 Features: --with-multiarch-libdir=BOOL use multiarch library paths in packages default: false Dependencies: --with-sh=PATH use sh at PATH --with-libopkbuild.1=PATH use libopkbuild.1 at PATH --with-archtab=PATH use archtab at PATH EOF } print_version() { cat <<EOF ${package_name} ${package_version} configure Not generated by GNU Autoconf Copyright (C) 2011-2012 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 continue fi if ${_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}" IFS=':' for _element in $(eval echo "${libdir}") ${PATH}; do unset IFS : ${_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 unset IFS ${quiet} || printf 'not found\n' return 1 } write_makefiles() { for _dir in src lib lib/buildsystem locale man; do [ -d "${_dir}" ] || mkdir "${_dir}" done # 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 an architecture table for testing. # TODO: Remove when no longer used. sed "${_sed_script}" "${srcdir}/mkarchtab.in" >'mkarchtab' chmod 755 'mkarchtab' } main "${@}"