#! /bin/sh # # opkbuild # 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 . package_name='opkbuild' package_version='3.0.0-alpha3' package_description='OPK Build System' srcdir="$(cd "${0%/*}" && pwd)" prefix='/usr/local' bindir='$(prefix)/bin' libdir='$(prefix)/share' datadir='$(prefix)/share' mandir='$(datadir)/man' localedir='$(datadir)/locale' sysconfdir='/etc' libopkbuild='$(libdir)/libopkbuild.1' metadata='proteanos' quiet='false' missing_deps='false' dep_cmds=' sh opkg ' opt_dep_libs=' opkhelper-3.0 ' long_opts_with_args=' srcdir prefix bindir libdir datadir mandir localedir sysconfdir ' features=" ${dep_cmds} ${dep_libs} ${opt_dep_cmds} ${opt_dep_libs} metadata " subst_vars=" package_name package_version package_description ${long_opts_with_args} libopkbuild ${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 exit 1 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}" eval "${_dep}"=\"${_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 ${libdir}:${PATH}; do unset IFS : ${_element=-.} if [ -f "${_element}/${_dep}" -a -x "${_element}/${_dep}" ]; then ${quiet} || printf '%s/%s\n' "${_element}" "${_dep}" eval "${_dep}"=\"${_element}/${_dep}\" return 0 fi done unset IFS ${quiet} || printf 'not found\n' return 1 } write_makefiles() { # 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 for _dir in . src lib lib/package lib/metadata locale man tests; do mkdir -p "${_dir}" sed "${_sed_script}" "${srcdir}/${_dir}/Makefile.in" >"${_dir}/Makefile" done } main "${@}"