- Replaced "which" with a /bin/sh script snippet.
authorBernd Petrovitsch <bernd@firmix.at>
Tue, 11 Dec 2007 17:16:03 +0000 (17:16 +0000)
committerBernd Petrovitsch <bernd@firmix.at>
Tue, 11 Dec 2007 17:16:03 +0000 (17:16 +0000)
- inspired by Sven-Ola Tuecke: avoid a bash'ism (i.e. "OPTS="${OPTS//$opt}") in
  gcc-warnings and ld-warnings. But we do not replace it with `sed` (since it
  costs a fork(2) and an exec(3)) but also with shell code which doesn't use
  any external program.

For a specification of /bin/sh: see
http://www.opengroup.org/onlinepubs/000095399/utilities/xcu_chap02.html#tag_02

Makefile.inc
gcc-warnings
ld-warnings

index bdeaf0f..91b88a0 100644 (file)
@@ -2,7 +2,7 @@
 #
 # Highlevel configuration options for all
 #
-# $Id: Makefile.inc,v 1.48 2007/12/06 20:13:56 bernd67 Exp $
+# $Id: Makefile.inc,v 1.49 2007/12/11 17:16:03 bernd67 Exp $
 #
 
 # activate debugging with 1 or deactivate with 0
@@ -25,7 +25,7 @@ MUDFLAP ?= 0
 #
 
 # programs
-CCACHE ?=       $(shell which ccache 2> /dev/null)
+CCACHE ?=       $(shell IFS=:; for i in $$PATH;do test -x "$$i/ccache" && echo "$$i/ccache" && break; done)
 ifeq ($(origin CC),default)
 CC =           $(CCACHE) gcc
 else
@@ -91,11 +91,11 @@ endif
 #WARNINGS +=   -Wunreachable-code
 WARNINGS +=    -Winline
 WARNINGS +=    -Wdisabled-optimization
-#WARNINGS +=   -Werror
+#nnnWARNINGS +=        -Werror
 WARNINGS +=    -finline-functions-called-once
 WARNINGS +=    -fearly-inlining
 ifeq ($(DEBUG),0)
-WARNINGS +=    -fomit-framepointers
+WARNINGS +=    -fomit-frame-pointer
 endif
 # we have small inline functions in src/lq_route.c which should always be inlined
 WARNINGS +=    -finline-limit=50
@@ -123,7 +123,8 @@ endif
 ifdef OLSRD_PLUGIN
 # c and ld flags for libraries (plugins)
 CPPFLAGS +=    -DOLSR_PLUGIN
-LDFLAGS +=     -shared -Wl,-soname,$(PLUGIN_NAME)
+LDFLAGS +=     -shared
+LDFLAGS +=     -Wl,-soname,$(PLUGIN_NAME)
 LDFLAGS +=     -Wl,--version-script=version-script.txt 
 else
 # c and ld flags for main
index 5f48569..9293d06 100644 (file)
@@ -3,7 +3,7 @@
 # We expect warning options for gcc as arguments and return the ones which are
 # accepted by the given gcc.
 #
-# $Id: gcc-warnings,v 1.8 2007/12/06 22:07:29 bernd67 Exp $
+# $Id: gcc-warnings,v 1.9 2007/12/11 17:16:03 bernd67 Exp $
 
 set -ue
 #set -vx
@@ -33,14 +33,24 @@ parsetest() {
         *:\ unrecognized\ *option\ \"*)
             opt="${error#*\"}"
             opt="${opt%\"*}"
-            OPTS="${OPTS//$opt}"
             ;;
         *:\ unrecognized\ *option\ \`*)
             opt="${error#*\`}"
             opt="${opt%\'*}"
-            OPTS="${OPTS//$opt}"
+            ;;
+        *) continue
             ;;
        esac
+       # if we come here, we have in $opt the option to remove. and
+       # we remove all instances. And we save agoinst leading "-"
+       NEW_OPTS=""
+       for o in $OPTS; do
+           case "$o" in
+               $opt) : echo "Removed $o" >&2;;
+               *)    NEW_OPTS="$NEW_OPTS $o";;
+           esac
+       done
+       OPTS="$NEW_OPTS"
     done
     echo $OPTS
 }
index 7522f60..2909b88 100644 (file)
@@ -3,7 +3,7 @@
 # We expect warning options for gcc as arguments and return the ones which are
 # accepted by the given gcc.
 #
-# $Id: ld-warnings,v 1.2 2007/12/06 22:07:29 bernd67 Exp $
+# $Id: ld-warnings,v 1.3 2007/12/11 17:16:02 bernd67 Exp $
 
 set -ue
 #set -vx
@@ -33,9 +33,20 @@ parsetest() {
         *ld:\ unrecognized\ *option\ \'*)
             opt="${error#*\'}"
             opt="${opt%\'*}"
-            OPTS="${OPTS//-Wl,$opt}"
+            ;;
+        *) continue
             ;;
        esac
+       # if we come here, we have in $opt the option to remove. and
+       # we remove all instances. And we save agoinst leading "-"
+       NEW_OPTS=""
+       for o in $OPTS; do
+           case "$o" in
+               -Wl,$opt) : echo "Removed $o" >&2;;
+               *)        NEW_OPTS="$NEW_OPTS $o";;
+           esac
+       done
+       OPTS="$NEW_OPTS"
     done
     echo $OPTS
 }