From 273dad01d4942434aa0bb422b4c4639d7c74fcaa Mon Sep 17 00:00:00 2001
From: Mark Olesen <Mark.Olesen@Germany>
Date: Fri, 9 May 2008 12:20:25 +0200
Subject: [PATCH] be more stringent with which files are considered 'source'

---
 wmake/wmakeLnInclude | 107 ++++++++++++++++++++++++++++++-------------
 1 file changed, 76 insertions(+), 31 deletions(-)

diff --git a/wmake/wmakeLnInclude b/wmake/wmakeLnInclude
index 568cbc0f366..e3506646740 100755
--- a/wmake/wmakeLnInclude
+++ b/wmake/wmakeLnInclude
@@ -29,59 +29,104 @@
 # Description
 #     Link all the source files in the $1 directory into $1/lnInclude
 #
-#     Usage: wmakeLnInclude <directory> <ln options>
+#     Usage: wmakeLnInclude [-f] <dir> [-lnOption]
 #
+#     The desired source files:
+#         *.C *.H *.h *.cxx
+#     Avoid
+#         *.c (C source)
+#         .#* (cvs recovered files)
 #------------------------------------------------------------------------------
+Script=${0##*/}
 
-BASEDIR=""
-LNOPTION="-s"
+usage() {
+   while [ "$#" -ge 1 ]; do echo "$1"; shift; done
+   cat<<USAGE
 
-if [ $# = 1 ]
-then
-    BASEDIR=$1
+usage: $Script [-f] <dir> [-lnOption]
 
-elif [ $# = 2 ]
-then
-    BASEDIR=$1
-    LNOPTION=$2
+    Link all the source files in the <dir> into <dir>/lnInclude
+    * Use '-f' to force an update when the lnInclude directory already exists.
 
-else
-    echo $0: wrong number of arguments
-    echo "usage : wmakeLnInclude <dir> [-lnOption]"
-    exit 1
-fi
+USAGE
+   exit 1
+}
+
+#------------------------------------------------------------------------------
+
+# simple option parsing
+unset forceUpdate
+unset findOpt
+
+# simple parse options
+while [ "$#" -gt 0 ]
+do
+   case "$1" in
+   -h | -help)   # provide immediate help
+      usage
+      ;;
+   -f)
+      shift
+      forceUpdate=1
+      ;;
+   -*)
+      usage "unknown option/argument: '$*'"
+      ;;
+   *)
+      break
+      ;;
+   esac
+done
 
-if [ ! -d $BASEDIR ]
+baseDir=$1
+incDir=$baseDir/lnInclude
+
+if [ $# -eq 1 ]
+then
+   lnOpt="-s"
+elif [ $# -eq 2 ]
 then
-    echo Base directory $BASEDIR does not exist, exiting.
-    exit 0
+   lnOpt="$2"
+else
+   usage "ERROR: wrong number of arguments"
 fi
 
-INCDIR=$BASEDIR/lnInclude
 
-if [ -d $INCDIR ]
+if [ ! -d $baseDir ]
 then
-    #echo $0: include directory $INCDIR already exists, exiting.
-    exit 0
+   echo $Script: Base directory $baseDir does not exist, exiting.
+   exit 2
 fi
 
-mkdir $INCDIR
+if [ -d $incDir ]
+then
+   if [ ! "$forceUpdate" ]
+   then
+      # echo $Script: include directory $incDir already exists, exiting.
+      exit 0
+   fi
+else
+   mkdir $incDir
+fi
 
-if [ ! -d $INCDIR ]
+if [ ! -d $incDir ]
 then
-    echo $0: failed to create include directory $INCDIR
-    exit 0
+   echo $Script: failed to create include directory $incDir
+   exit 0
 fi
 
 
 # Link include files
 # ~~~~~~~~~~~~~~~~~~
-
-echo $0: linking include files to $INCDIR
+echo $Script: linking include files to $incDir
 echo
 
-cd $INCDIR
-find .. -name lnInclude -prune -o -name '.svn' -prune -o -name Make -prune \
-    -o \( -name '*.[hcHCx]*' -o -name '*.type' \) -exec ln $LNOPTION {} . \;
+cd $incDir
+
+find .. $findOpt \
+    \( -name lnInclude -o -name -Make -o -name .svn -o -name config \) -prune  \
+ -o \( -name '*.[CHh]' -o -name '*.[ch]xx' -o -name '*.type' \)  \
+ -a ! -name ".#*"     \
+ -exec ln $lnOpt {} . \;
 
 #------------------------------------------------------------------------------
-- 
GitLab