Index: configure @@ -1,4 +1,4 @@ -#!/usr/bin/env bash +#!/bin/sh CONFIG="config.mk" PREFIX="/usr/local" @@ -8,7 +8,7 @@ SSE=auto OPENMP= LIBPNG_DIR=. -if [[ "$OSTYPE" =~ "darwin" ]]; then +if echo "$OSTYPE" | grep -q "darwin"; then COCOA_READER=auto LCMS2=0 else @@ -38,7 +38,7 @@ echo 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" help "--with-libpng= search for libpng in directory" fi @@ -110,7 +110,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 @@ -147,7 +147,7 @@ find_pkgconfig() { LIBNAME=$1 - if pkg-config --exists "$LIBNAME" &> /dev/null; then + if pkg-config --exists "$LIBNAME" >/dev/null 2>&1; then cflags "$(pkg-config --cflags "$LIBNAME")" lflags "$(pkg-config --libs "$LIBNAME")" status "$LIBNAME" "shared ($(pkg-config --modversion "$LIBNAME"))" @@ -191,11 +191,16 @@ return 0 fi - for i in "${DIRS[@]}"; do - DIR=($i) - HPATH=$(find_h "${DIR[0]}" "$HEADERPATTERN") + # destroys positional parameters + set -- ${DIRS} + while [ -n "$1" -a -n "$2" ]; do + DIRS_h="$1" + DIRS_l="$2" + shift 2 + + HPATH=$(find_h "${DIRS_h}" "$HEADERPATTERN") if [ -n "$HPATH" ]; then - SOPATH=$(find_f "${DIR[1]}" "$DYNAMICPATTERN") + SOPATH=$(find_f "${DIRS_l}" "$DYNAMICPATTERN") if [ -n "$SOPATH" ]; then cflags "-I${HPATH%/*}" lflags "-L${SOPATH%/*} -l$DYNAMICLIBNAME" @@ -250,10 +255,8 @@ # SSE if [ "$SSE" = 'auto' ]; then - if [[ "$(uname -m)" =~ (amd|x86_)64 || - "$(grep -E -m1 "^flags" /proc/cpuinfo)" =~ "sse" ]]; then - SSE=1 - 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 @@ -276,9 +279,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" @@ -293,11 +295,13 @@ fi # Cocoa -if [[ "$OSTYPE" =~ "darwin" ]]; then +if echo "$OSTYPE" | grep -q "darwin"; then cflags "-mmacosx-version-min=10.6" lflags "-mmacosx-version-min=10.6" - if [ "$COCOA_READER" != 0 ] && "$CC" 2>/dev/null 1>/dev/null -xc -E <(echo "#import "); then + if [ "$COCOA_READER" != 0 ] && \ + echo "#import " | \ + "$CC" 2>/dev/null 1>/dev/null -xc -E -; then COCOA_READER=1 cflags "-DUSE_COCOA=1" lflags "-framework Cocoa" @@ -308,19 +312,18 @@ fi # pairs of possible *.h and lib*.so locations -DIRS=("/usr/local/include /usr/local/lib" - "/usr/include /usr/lib" - "/opt/local/include /opt/local/lib" # macports - ) +DIRS="${PREFIX}/include ${PREFIX}/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/MacOSX10.10.sdk/usr/include $XCODE_PATH/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/usr/lib") - DIRS+=("$XCODE_PATH/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.8.sdk/usr/include $XCODE_PATH/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.8.sdk/usr/lib") + DIRS="$DIRS $XCODE_PATH/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/usr/include $XCODE_PATH/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/usr/lib" + DIRS="$DIRS $XCODE_PATH/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.8.sdk/usr/include $XCODE_PATH/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.8.sdk/usr/lib" else SOLIBSUFFIX=so fi @@ -332,7 +335,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" SUCCESS=1 fi @@ -343,7 +346,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 [ -n "$LIBPNGA" ]; then cflags "-I${PNGH%/*}" @@ -359,14 +362,19 @@ if find_pkgconfig libpng; then SUCCESS=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}" @@ -380,7 +388,7 @@ fi fi if [ "$SUCCESS" -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 libpng-dev` or `yum install libpng-devel`'