Index: configure @@ -1,11 +1,11 @@ -#!/usr/bin/env bash +#!/bin/sh CONFIG="config.mk" PREFIX="/usr/local" DEBUG= LIQSRCDIR=./lib -LIQCONFIGURE=(--quiet) +LIQCONFIGURE=--quiet SSE=auto OPENMP= LIBPNG_DIR=. @@ -35,7 +35,7 @@ help "--with-libimagequant= external libimagequant (lib/ default)" help "--with-openmp=static compile with multicore support" help "--with-lcms2/--without-lcms2 compile with color profile support" -if [[ "$OSTYPE" =~ "darwin" ]]; then +if echo "$OSTYPE" | grep -q "darwin"; then help "--with-cocoa/--without-cocoa use Cocoa framework to read images" fi help "--with-libpng= search for libpng in directory" @@ -50,35 +50,35 @@ CC=*) CC=${i#*=} SKIP_CC_CHECK=1 - LIQCONFIGURE+=("$i") + LIQCONFIGURE="$LIQCONFIGURE $i" ;; CFLAGS=*) CFLAGS=${i#*=} - LIQCONFIGURE+=("$i") + LIQCONFIGURE="$LIQCONFIGURE $i" ;; LDFLAGS=*) LDFLAGS=${i#*=} - LIQCONFIGURE+=("$i") + LIQCONFIGURE="$LIQCONFIGURE $i" ;; --enable-debug) DEBUG=1 - LIQCONFIGURE+=("$i") + LIQCONFIGURE="$LIQCONFIGURE $i" ;; --enable-sse) SSE=1 - LIQCONFIGURE+=("$i") + LIQCONFIGURE="$LIQCONFIGURE $i" ;; --disable-sse) SSE=0 - LIQCONFIGURE+=("$i") + LIQCONFIGURE="$LIQCONFIGURE $i" ;; --with-openmp) OPENMP=1 - LIQCONFIGURE+=("$i") + LIQCONFIGURE="$LIQCONFIGURE $i" ;; --with-openmp=static) OPENMP=static - LIQCONFIGURE+=("$i") + LIQCONFIGURE="$LIQCONFIGURE $i" ;; --with-lcms2) LCMS2=1 @@ -103,16 +103,16 @@ ;; --prefix=*) PREFIX=${i#*=} - LIQCONFIGURE+=("$i") + LIQCONFIGURE="$LIQCONFIGURE $i" ;; # can be used multiple times or in quotes to set multiple flags --extra-cflags=*) EXTRA_CFLAGS="$EXTRA_CFLAGS ${i#*=}" - LIQCONFIGURE+=("$i") + LIQCONFIGURE="$LIQCONFIGURE $i" ;; --extra-ldflags=*) EXTRA_LDFLAGS="$EXTRA_LDFLAGS ${i#*=}" - LIQCONFIGURE+=("$i") + LIQCONFIGURE="$LIQCONFIGURE $i" ;; *) echo "warning: unknown switch ${i%%=*} (see $0 --help for the list)" @@ -122,7 +122,7 @@ # If someone runs sudo make install as very first command, and configure later, # $CONFIG cannot be overwritten, and must be deleted before continuing. -if [[ -f "$CONFIG" && ! -w "$CONFIG" ]]; then +if [ -f "$CONFIG" -a ! -w "$CONFIG" ]; then echo "Cannot overwrite file $CONFIG! Please delete it." exit 1 fi @@ -160,7 +160,7 @@ find_pkgconfig() { local LIBNAME=$1 PKG_CONFIG=${PKG_CONFIG:-pkg-config} - if $PKG_CONFIG --exists "$LIBNAME" &> /dev/null; then + if $PKG_CONFIG --exists "$LIBNAME" > /dev/null; then cflags "$($PKG_CONFIG --cflags "$LIBNAME")" lflags "$($PKG_CONFIG --libs "$LIBNAME")" LIBRARY_FOUND_VERSION=$($PKG_CONFIG --modversion "$LIBNAME") @@ -244,9 +244,13 @@ return 0 fi - for i in "${DIRS[@]}"; do - DIR=($i) - if find_dynamic "$LIBNAME" "$HEADERPATTERN" "$DYNAMICPATTERN" "${DIR[0]}" "${DIR[1]}"; then + # destroys positional parameters + set -- ${DIRS} + while [ -n "$1" -a -n "$2" ]; do + DIRS_h="$1" + DIRS_l="$2" + shift 2 + if find_dynamic "$LIBNAME" "$HEADERPATTERN" "$DYNAMICPATTERN" "${DIRS_h}" "${DIRS_l}"; then return 0 fi done @@ -303,12 +307,8 @@ # SSE if [ "$SSE" = 'auto' ]; then SSE=0 - if type uname > /dev/null; then - if [[ "$(uname -m)" =~ "amd64" || "$(uname -m)" =~ "x86_64" || - "$(grep -E -m1 "^flags" /proc/cpuinfo)" =~ "sse" ]]; then - SSE=1 - fi - fi + echo $(uname -m) | grep -E -q '(amd|x86_)64' && SSE=1 + grep -E -m1 -q '^flags.*sse' /proc/cpuinfo 2>/dev/null && SSE=1 fi if [ "$SSE" -eq 1 ]; then @@ -331,9 +331,8 @@ else OPENMPFLAGS="-fopenmp" fi - if [[ "$("$CC" -xc -E $OPENMPFLAGS <(echo "#ifdef _OPENMP - #include - #endif") 2>&1)" =~ "omp_get_thread_num" ]]; then + if echo "$(printf '#ifdef _OPENMP\n#include \n#endif\n' | \ + "$CC" -xc -E $OPENMPFLAGS - 2>&1)" | grep -q omp_get_thread_num; then cflags "$OPENMPFLAGS" lflags "$OPENMPFLAGS" status "OpenMP" "yes" @@ -348,7 +347,7 @@ fi # Cocoa -if [[ "$OSTYPE" =~ "darwin" ]]; then +if echo "$OSTYPE" | grep -q "darwin"; then if [ -z "${MACOSX_DEPLOYMENT_TARGET+isset}" ]; then cflags "-mmacosx-version-min=10.9" lflags "-mmacosx-version-min=10.9" @@ -356,32 +355,29 @@ fi # pairs of possible *.h and lib*.so locations -DIRS=() +DIRS= if command -v >/dev/null libpng-config; then - DIRS+=("$(libpng-config --prefix) $(libpng-config --libdir)") + DIRS="$(libpng-config --prefix) $(libpng-config --libdir)" fi -if [ -n $"LIQSRCDIR" ]; then - DIRS+=("$LIQSRCDIR" "$LIQSRCDIR") # local libimagequant +if [ -n "$LIQSRCDIR" ]; then + DIRS="$DIRS $LIQSRCDIR $LIQSRCDIR" # local libimagequant fi -DIRS+=( - "/usr/local/include /usr/local/lib" - "/usr/include /usr/lib64" - "/usr/include /usr/lib" - "/opt/local/include /opt/local/lib" # macports - ) +DIRS="$DIRS /usr/local/include /usr/local/lib \ + /usr/include /usr/lib \ + /opt/local/include /opt/local/lib" # macports -if [[ "$OSTYPE" =~ "darwin" ]]; then +if echo "$OSTYPE" | grep -q "darwin" ; then SOLIBSUFFIX=dylib # Search Developer SDK paths, since Apple seems to have dropped the standard Unixy ones XCODE_CMD="xcode-select" XCODE_PATH=$($XCODE_CMD -p) - DIRS+=("$XCODE_PATH/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include $XCODE_PATH/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/lib") - DIRS+=("$XCODE_PATH/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include $XCODE_PATH/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/lib") -elif [[ "$OSTYPE" =~ "msys" ]]; then + DIRS="$DIRS $XCODE_PATH/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include $XCODE_PATH/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/lib" + DIRS="$DIRS $XCODE_PATH/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include $XCODE_PATH/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/lib" +elif echo "$OSTYPE" | grep -q "msys" ; then SOLIBSUFFIX=dll else SOLIBSUFFIX=so @@ -422,7 +418,7 @@ if echo "#include \"png.h\" int main(){ return !png_create_write_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL); -}" | "$CC" -xc -std=c99 -o /dev/null $CFLAGS $LDFLAGS - &> /dev/null; then +}" | "$CC" -xc -std=c99 -o /dev/null $CFLAGS $LDFLAGS - >/dev/null 2>&1; then status "libpng" "custom flags" HAS_LIBPNG=1 fi @@ -433,7 +429,7 @@ if [ -n "$PNGH" ]; then PNGH_STRING=$(pngh_string "$PNGH") PNGH_MAJMIN=$(pngh_majmin "$PNGH") - if [[ -n "$PNGH_STRING" && -n "$PNGH_MAJMIN" ]]; then + if [ -n "$PNGH_STRING" -a -n "$PNGH_MAJMIN" ]; then LIBPNGA=$(find_f "$LIBPNG_DIR" "libpng${PNGH_MAJMIN}.a") if [ -z "$LIBPNGA" ]; then LIBPNGA=$(find_f "$LIBPNG_DIR" "libpng.a") @@ -452,14 +448,19 @@ if find_pkgconfig libpng; then HAS_LIBPNG=1 else - for i in "${DIRS[@]}"; do - DIR=($i) - PNGH=$(find_h "${DIR[0]}" "png.h") + # destroys positional parameters + set -- ${DIRS} + while [ -n "$1" -a -n "$2" ]; do + DIRS_h="$1" + DIRS_l="$2" + shift 2 + + PNGH=$(find_h "${DIRS_h}" "png.h") if [ -n "$PNGH" ]; then PNGH_STRING=$(pngh_string "$PNGH") PNGH_MAJMIN=$(pngh_majmin "$PNGH") - if [[ -n "$PNGH_STRING" && -n "$PNGH_MAJMIN" ]]; then - LIBPNGSO=$(find_f "${DIR[1]}" "libpng${PNGH_MAJMIN}.$SOLIBSUFFIX*") + if [ -n "$PNGH_STRING" -a -n "$PNGH_MAJMIN" ]; then + LIBPNGSO=$(find_f "${DIRS_l}" "libpng${PNGH_MAJMIN}.$SOLIBSUFFIX*") if [ -n "$LIBPNGSO" ]; then cflags "-I${PNGH%/*}" lflags "-L${LIBPNGSO%/*} -lpng${PNGH_MAJMIN}" @@ -473,7 +474,7 @@ fi fi if [ "$HAS_LIBPNG" -eq 0 ]; then - if [[ "$OSTYPE" =~ "darwin" ]]; then + if echo "$OSTYPE" | grep -q "darwin"; then LIBPNG_CMD='`brew install libpng`' else LIBPNG_CMD='`apt-get install libpng16-dev` or `apt-get install libpng-dev` or `yum install libpng-devel`' @@ -542,6 +543,6 @@ SOLIBSUFFIX = $SOLIBSUFFIX STATICLIBDEPS = $STATICLIBDEPS LIQSRCDIR = $LIQSRCDIR -LIQCONFIGUREFLAGS = $(printf "'%s' " "${LIQCONFIGURE[@]}") +LIQCONFIGUREFLAGS = "$LIQCONFIGURE" " > "$CONFIG"