diff options
configure: Parse arguments for variables
1 files changed, 79 insertions, 16 deletions
| -rwxr-xr-x | configure | 95 |
@@ -1,21 +1,32 @@ #!/bin/sh VERSION=1.2.0 VERSION_FULL=${VERSION}$(./version.sh) -PREFIX="${PREFIX:-/usr/local}" -BINDIR="${BINDIR:-${PREFIX}/bin}" -MANDIR="${MANDIR:-${PREFIX}/share/man}" -DOCDIR="${DOCDIR:-${PREFIX}/share/doc/badwolf-${VERSION}}" -DATADIR="${DATADIR:-${PREFIX}/share/badwolf}" -APPSDIR="${APPSDIR:-${PREFIX}/share/applications}" +ICON_SIZES="$(for i in 24 32 48 64 128 256; do printf 'icons/hicolor/%sx%s/apps/badwolf.png ' $i $i ; done)" +DEPS="gtk+-3.0 libxml-2.0" -PKGCONFIG="${PKGCONFIG:-pkg-config}" -MSGFMT="${MSGFMT:-msgfmt}" -INKSCAPE="${INKSCAPE:-inkscape}" -CC="${CC:-cc}" -CFLAGS="${CFLAGS:--g -O2 -pie -fPIE} -fstack-protector-strong -D_FORTIFY_SOURCE=2 -Wall -Wextra -Wconversion -Wsign-conversion -Werror=implicit-function-declaration -Werror=implicit-int -Werror=vla ${EXTRA_CFLAGS}" -MANDOC="mandoc" +usage() { +cat <<END +Usage: [variables] configure [variables] -DEPS="gtk+-3.0 libxml-2.0" +Variables: + PREFIX=DIR + BINDIR=DIR + MANDIR=DIR + DOCDIR=DIR + DATADIR=DIR + APPSDIR=DIR + + PKGCONFIG=BIN + MSGFMT=BIN + INKSCAPE=BIN + CC=BIN + CFLAGS=OPTIONS + EXTRA_CFLAGS=OPTIONS + MANDOC=BIN + +Variables are set in the following order: Default, Environment, Arguments +END +} is_ok() { status="$?" @@ -39,6 +50,53 @@ pkg_config_check() { is_ok } +## User configuration + +# defaults +PREFIX="${PREFIX:-/usr/local}" +PKGCONFIG="${PKGCONFIG:-pkg-config}" +MSGFMT="${MSGFMT:-msgfmt}" +INKSCAPE="${INKSCAPE:-inkscape}" +CC="${CC:-cc}" +CFLAGS="${CFLAGS:--g -O2 -pie -fPIE}" +MANDOC="${MANDOC:-mandoc}" + +IFS='' + +# Also allow variables through arguments +for i; do + case "$i" in + PREFIX=*|BINDIR=*|MANDIR=*|DOCDIR=*|DATADIR=*|APPSDIR=*) + export "${i%%=*}"="${i#*=}" + shift + ;; + PKGCONFIG=*|MSGFMT=*|INKSCAPE=*|CC=*|CFLAGS=*|MANDOC=*) + export "${i%%=*}"="${i#*=}" + shift + ;; + -h|--help) + usage + exit 1 + ;; + *) + printf "Unknown argument ā%sā\n" "${i}" + usage + exit 1 + ;; + esac +done + +# Fallback definitions for dirs, based on $PREFIX +BINDIR="${BINDIR:-${PREFIX}/bin}" +MANDIR="${MANDIR:-${PREFIX}/share/man}" +DOCDIR="${DOCDIR:-${PREFIX}/share/doc/badwolf-${VERSION}}" +DATADIR="${DATADIR:-${PREFIX}/share/badwolf}" +APPSDIR="${APPSDIR:-${PREFIX}/share/applications}" + +# Add some extra CFLAGS +CFLAGS="${CFLAGS} -fstack-protector-strong -D_FORTIFY_SOURCE=2 -Wall -Wextra -Wconversion -Wsign-conversion -Werror=implicit-function-declaration -Werror=implicit-int -Werror=vla ${EXTRA_CFLAGS}" + +## System checks printf 'Checking %s command existance ...' "${PKGCONFIG}" command -v "${PKGCONFIG}" >/dev/null ; required @@ -46,7 +104,7 @@ printf 'Checking %s command existance ...' "${CC}" command -v "${CC}" >/dev/null ; required printf 'Checking %s command existance ...' "${MANDOC}" -if command -v "${CC}" >/dev/null ; is_ok +if command -v "${MANDOC}" >/dev/null ; is_ok then : else @@ -125,12 +183,17 @@ case "${WITH_URI_PARSER}n" in ;; esac +printf 'Using pkg-config to get CFLAGS for %s ...' "${DEPS}" get_cflags() { "${PKGCONFIG}" --cflags "${DEPS}"; } DEPS_cflags="$(get_cflags)" -get_libs() { "${PKGCONFIG}" --libs "${DEPS}"; } +required + +printf 'Using pkg-config to get LIBS for %s ...' "${DEPS}" +get_libs() { "${PKGCONFIG}" --libs "${DEPS}"; } DEPS_libs="$(get_libs)" +required -ICON_SIZES="$(for i in 24 32 48 64 128 256; do printf 'icons/hicolor/%sx%s/apps/badwolf.png ' $i $i ; done)" +## Configuration write printf 'Writing to config.mk ...' cat >config.mk <<EOF |