#! /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-beta1' package_description='OPK 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=' opkhelper-3.0 ' 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 "${@}"