#!/bin/sh #------------------------------------------------------------------------------ # ========= | # \\ / F ield | foam-extend: Open Source CFD # \\ / O peration | Version: 3.2 # \\ / A nd | Web: http://www.foam-extend.org # \\/ M anipulation | For copyright notice see file Copyright #------------------------------------------------------------------------------ # License # This file is part of foam-extend. # # foam-extend is free software: you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by the # Free Software Foundation, either version 3 of the License, or (at your # option) any later version. # # foam-extend is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with foam-extend. If not, see . # # Script # wmakeLnInclude # # Description # Link all the source files in the directory into /lnInclude # # Usage: wmakeLnInclude [-f] [-lnOption] # # The desired source files: # *.C *.H *.h *.cpp *.cxx *.hpp *.hxx # # Avoid # *.c (C source) # .#* (cvs recovered files) #------------------------------------------------------------------------------ Script=${0##*/} usage() { while [ "$#" -ge 1 ]; do echo "$1"; shift; done cat< [-lnOption] Link all the source files in the into /lnInclude Note The '-f' option forces an update when the lnInclude directory already exists and also changes the default linking from 'ln -s' to 'ln -sf'. USAGE exit 1 } #------------------------------------------------------------------------------ # simple option parsing unset forceUpdate unset findOpt # default ln option lnOpt="-s" # simple parse options while [ "$#" -gt 0 ] do case "$1" in -h | -help) # provide immediate help usage ;; -f) shift forceUpdate=1 lnOpt="-sf" ;; -*) usage "unknown option: '$*'" ;; *) break ;; esac done if [ $# -eq 1 ] then baseDir=$1 elif [ $# -eq 2 ] then baseDir=$1 lnOpt="$2" else usage "ERROR: incorrect number of arguments" fi # convert incorrect path/dir/lnInclude to something sensible while [ "${baseDir##*/}" = lnInclude ] do baseDir="${baseDir%/*}" if [ "$baseDir" = lnInclude ] then baseDir="." fi done incDir=$baseDir/lnInclude if [ ! -d $baseDir ] then echo "$Script error: base directory $baseDir does not exist" 1>&2 exit 2 fi if [ -d $incDir ] then if [ ! "$forceUpdate" ] then # echo "$Script error: include directory $incDir already exists" 1>&2 exit 0 fi else mkdir $incDir fi if [ ! -d $incDir ] then echo "$Script error: failed to create include directory $incDir" 1>&2 exit 0 fi cd $incDir || exit 1 # Link include files # ~~~~~~~~~~~~~~~~~~ echo "$Script: linking include files to $incDir" # # remove any broken links first (this helps when file locations have moved) # find -L . -type l -exec rm {} \; # # create links, avoid recreating links unless necessary # things placed in the 'noLink' directory are skipped # if [ "$WM_ARCH_BASE" = "mingw" -a ! "$WM_FORCE_LN" ] ; then lnCmd="genInclude.pl" else lnCmd="ln $lnOpt" fi find .. $findOpt \ \( -name lnInclude -o -name Make -o -name config -o -name noLink \) -prune \ -o \( -name '*.[CHh]' -o -name '*.[ch]xx' -o -name '*.[ch]pp' -o -name '*.type' \) \ -exec $lnCmd {} . \; #------------------------------------------------------------------------------