From 5d185831014a1ad2611f9681a3553421cd9c458b Mon Sep 17 00:00:00 2001
From: Mark Olesen <Mark.Olesen@Germany>
Date: Wed, 5 Jan 2011 08:49:42 +0100
Subject: [PATCH] ENH: collect arch-specific directly under platforms/

- platforms/WM_OPTIONS/lib
      old: lib/WM_OPTIONS

- platforms/WM_OPTIONS/bin
      old: bin/WM_OPTIONS
      old: applications/bin/WM_OPTIONS

A runtime environment nows needs
    - bin/
    - etc/
    - platforms/
---
 applications/test/maxMem/Make/options |  2 +-
 bin/foamPack                          | 11 +++----
 bin/foamPackBinAll                    | 29 ++++++++++++++---
 bin/foamPackThirdParty                | 11 +++----
 bin/tools/foamListBinDirs             | 45 ++++++++++++++++++---------
 bin/tools/foamListThirdPartyBinDirs   |  8 +----
 etc/settings.csh                      | 14 ++++-----
 etc/settings.sh                       | 14 ++++-----
 wmake/Makefile                        |  9 +++---
 9 files changed, 83 insertions(+), 60 deletions(-)

diff --git a/applications/test/maxMem/Make/options b/applications/test/maxMem/Make/options
index 6a57715f81d..1570a9377ec 100644
--- a/applications/test/maxMem/Make/options
+++ b/applications/test/maxMem/Make/options
@@ -1 +1 @@
-EXE_LIBS = $(LIB_WM_OPTIONS_DIR)/libfbsdmalloc.o
+EXE_LIBS = $(FOAM_EXT_LIBBIN)/libfbsdmalloc.o
diff --git a/bin/foamPack b/bin/foamPack
index dd8dab951c4..52b6358b84e 100755
--- a/bin/foamPack
+++ b/bin/foamPack
@@ -73,13 +73,10 @@ do
 done
 
 # check for essential directories
-for dir in $packDir
-do
-    [ -d $dir ] || {
-        echo "Error: directory $dir does not exist" 1>&2
-        exit 1
-    }
-done
+[ -d $packDir ] || {
+    echo "Error: directory $packDir does not exist" 1>&2
+    exit 1
+}
 
 
 #------------------------------------------------------------------------------
diff --git a/bin/foamPackBinAll b/bin/foamPackBinAll
index 8d56e5701f1..e833671dc8d 100755
--- a/bin/foamPackBinAll
+++ b/bin/foamPackBinAll
@@ -57,10 +57,29 @@ esac
 }
 
 
-# obtain archOptions types from lib/
-for archOptions in $packDir/lib/*
-do
-    $binDir/$packBin $@ ${archOptions##*/}
-done
+if [ -d $packDir/lib ]
+then
+
+    # obtain archOptions types from lib/<archOptions>
+    for archOptions in $packDir/lib/*
+    do
+        $binDir/$packBin $@ ${archOptions##*/}
+    done
+
+elif [ -d $packDir/platforms ]
+
+    # obtain archOptions types from platforms/<archOptions>/lib
+    for archOptions in $packDir/platforms/*/lib
+    do
+        archOptions=${archOptions%%/lib}
+        $binDir/$packBin $@ ${archOptions##*/}
+    done
+
+else
+
+    echo "Error: directory $packDir does not appear packable" 1>&2
+    exit 1
+
+fi
 
 #------------------------------------------------------------------------------
diff --git a/bin/foamPackThirdParty b/bin/foamPackThirdParty
index e0f07178d74..37625b42cd3 100755
--- a/bin/foamPackThirdParty
+++ b/bin/foamPackThirdParty
@@ -72,13 +72,10 @@ do
 done
 
 # check for essential directories
-for dir in $packDir
-do
-    [ -d $dir ] || {
-        echo "Error: directory $dir does not exist" 1>&2
-        exit 1
-    }
-done
+[ -d $packDir ] || {
+    echo "Error: directory $packDir does not exist" 1>&2
+    exit 1
+}
 
 
 #------------------------------------------------------------------------------
diff --git a/bin/tools/foamListBinDirs b/bin/tools/foamListBinDirs
index ac67b796d04..cc5029a6534 100755
--- a/bin/tools/foamListBinDirs
+++ b/bin/tools/foamListBinDirs
@@ -67,19 +67,35 @@ arch3264=$(echo "$archOS" | sed -e 's@64@-64@')
 #------------------------------------------------------------------------------
 
 # check for essential directories
-for dir in $packDir $packDir/lib/$archOptions
-do
-    [ -d $dir ] || {
-        echo "Error: directory $dir does not exist" 1>&2
-        exit 1
-    }
-done
-
-# check new/old places for executables - same as $FOAM_APPBIN
-[ -d $packDir/bin/$archOptions -o -d $packDir/applications/bin/$archOptions ] || {
+[ -d $packDir ] || {
+    echo "Error: directory $packDir does not exist" 1>&2
+    exit 1
+}
+
+
+#
+# check places for libraries - same as $FOAM_LIBBIN
+# this has moved around a bit in the recent past
+#
+[ -d $packDir/lib/$archOptions ] || \
+[ -d $packDir/platforms/$archOptions/lib ] || {
+cat <<LIB_CHECK 1>&2
+Error: no directory for libraries exists:
+    $packDir/lib/$archOptions
+    $packDir/platforms/$archOptions/lib
+LIB_CHECK
+    exit 1
+}
+
+#
+# check places for executables - same as $FOAM_APPBIN
+# this has moved around a bit in the recent past
+#
+[ -d $packDir/applications/bin/$archOptions ] || \
+[ -d $packDir/platforms/$archOptions/bin ] || {
 cat <<BIN_CHECK 1>&2
 Error: no directory for executables exists:
-    $packDir/bin/$archOptions
+    $packDir/platforms/$archOptions/bin
     $packDir/applications/bin/$archOptions
 BIN_CHECK
     exit 1
@@ -90,14 +106,15 @@ BIN_CHECK
 # list of directories
 dirList=$(
     for dir in \
-        $packDir/bin/$archOptions \
-        $packDir/lib/$archOptions \
-        $packDir/applications/bin/$archOptions \
+        $packDir/platforms/$archOptions/bin \
+        $packDir/platforms/$archOptions/lib \
         $packDir/wmake/bin/$archCompiler \
         $packDir/wmake/bin/$archOS \
         $packDir/wmake/rules/General \
         $packDir/wmake/rules/$archCompiler \
         $packDir/wmake/rules/$archOS \
+        $packDir/applications/bin/$archOptions \
+        $packDir/lib/$archOptions \
         ;
     do
         [ -d $dir ] && echo $dir
diff --git a/bin/tools/foamListThirdPartyBinDirs b/bin/tools/foamListThirdPartyBinDirs
index 319961b9441..872049628e2 100755
--- a/bin/tools/foamListThirdPartyBinDirs
+++ b/bin/tools/foamListThirdPartyBinDirs
@@ -66,7 +66,7 @@ arch3264=$(echo "$archOS" | sed -e 's@64@-64@')
 
 #------------------------------------------------------------------------------
 # check for essential directories
-for dir in $packDir $packDir/lib/$archOptions
+for dir in $packDir $packDir/platforms/$archOptions/lib
 do
     [ -d $dir ] || {
         echo "Error: directory $dir does not exist" 1>&2
@@ -78,12 +78,6 @@ done
 # list of directories
 dirList=$(
     for dir in \
-        $packDir/bin/$archOptions \
-        $packDir/bin/$archCompiler \
-        $packDir/bin/$archOS \
-        $packDir/lib/$archOptions \
-        $packDir/lib/$archCompiler \
-        $packDir/lib/$archOS \
         $packDir/platforms/$archOptions \
         $packDir/platforms/$archCompiler \
         $packDir/platforms/$archOS \
diff --git a/etc/settings.csh b/etc/settings.csh
index b473fd0b8f9..c38079a72f3 100644
--- a/etc/settings.csh
+++ b/etc/settings.csh
@@ -48,20 +48,20 @@ setenv WM_LINK_LANGUAGE c++
 setenv WM_OPTIONS $WM_ARCH$WM_COMPILER$WM_PRECISION_OPTION$WM_COMPILE_OPTION
 
 # base executables/libraries
-setenv FOAM_APPBIN $WM_PROJECT_DIR/bin/$WM_OPTIONS
-setenv FOAM_LIBBIN $WM_PROJECT_DIR/lib/$WM_OPTIONS
+setenv FOAM_APPBIN $WM_PROJECT_DIR/platforms/$WM_OPTIONS/bin
+setenv FOAM_LIBBIN $WM_PROJECT_DIR/platforms/$WM_OPTIONS/lib
 
 # external (ThirdParty) libraries
-setenv FOAM_EXT_LIBBIN $WM_THIRD_PARTY_DIR/lib/$WM_OPTIONS
+setenv FOAM_EXT_LIBBIN $WM_THIRD_PARTY_DIR/platforms/$WM_OPTIONS/lib
 
 # shared site executables/libraries
 # similar naming convention as ~OpenFOAM expansion
-setenv FOAM_SITE_APPBIN $WM_PROJECT_INST_DIR/site/$WM_PROJECT_VERSION/bin/$WM_OPTIONS
-setenv FOAM_SITE_LIBBIN $WM_PROJECT_INST_DIR/site/$WM_PROJECT_VERSION/lib/$WM_OPTIONS
+setenv FOAM_SITE_APPBIN $WM_PROJECT_INST_DIR/site/$WM_PROJECT_VERSION/platforms/$WM_OPTIONS/bin
+setenv FOAM_SITE_LIBBIN $WM_PROJECT_INST_DIR/site/$WM_PROJECT_VERSION/platforms/$WM_OPTIONS/lib
 
 # user executables/libraries
-setenv FOAM_USER_APPBIN $WM_PROJECT_USER_DIR/bin/$WM_OPTIONS
-setenv FOAM_USER_LIBBIN $WM_PROJECT_USER_DIR/lib/$WM_OPTIONS
+setenv FOAM_USER_APPBIN $WM_PROJECT_USER_DIR/platforms/$WM_OPTIONS/bin
+setenv FOAM_USER_LIBBIN $WM_PROJECT_USER_DIR/platforms/$WM_OPTIONS/lib
 
 # convenience
 setenv FOAM_APP $WM_PROJECT_DIR/applications
diff --git a/etc/settings.sh b/etc/settings.sh
index ab0f69dee74..bab62d5a68f 100644
--- a/etc/settings.sh
+++ b/etc/settings.sh
@@ -71,20 +71,20 @@ export WM_LINK_LANGUAGE=c++
 export WM_OPTIONS=$WM_ARCH$WM_COMPILER$WM_PRECISION_OPTION$WM_COMPILE_OPTION
 
 # base executables/libraries
-export FOAM_APPBIN=$WM_PROJECT_DIR/bin/$WM_OPTIONS
-export FOAM_LIBBIN=$WM_PROJECT_DIR/lib/$WM_OPTIONS
+export FOAM_APPBIN=$WM_PROJECT_DIR/platforms/$WM_OPTIONS/bin
+export FOAM_LIBBIN=$WM_PROJECT_DIR/platforms/$WM_OPTIONS/lib
 
 # external (ThirdParty) libraries
-export FOAM_EXT_LIBBIN=$WM_THIRD_PARTY_DIR/lib/$WM_OPTIONS
+export FOAM_EXT_LIBBIN=$WM_THIRD_PARTY_DIR/platforms/$WM_OPTIONS/lib
 
 # shared site executables/libraries
 # similar naming convention as ~OpenFOAM expansion
-export FOAM_SITE_APPBIN=$WM_PROJECT_INST_DIR/site/$WM_PROJECT_VERSION/bin/$WM_OPTIONS
-export FOAM_SITE_LIBBIN=$WM_PROJECT_INST_DIR/site/$WM_PROJECT_VERSION/lib/$WM_OPTIONS
+export FOAM_SITE_APPBIN=$WM_PROJECT_INST_DIR/site/$WM_PROJECT_VERSION/platforms/$WM_OPTIONS/bin
+export FOAM_SITE_LIBBIN=$WM_PROJECT_INST_DIR/site/$WM_PROJECT_VERSION/platforms/$WM_OPTIONS/lib
 
 # user executables/libraries
-export FOAM_USER_APPBIN=$WM_PROJECT_USER_DIR/bin/$WM_OPTIONS
-export FOAM_USER_LIBBIN=$WM_PROJECT_USER_DIR/lib/$WM_OPTIONS
+export FOAM_USER_APPBIN=$WM_PROJECT_USER_DIR/platforms/$WM_OPTIONS/bin
+export FOAM_USER_LIBBIN=$WM_PROJECT_USER_DIR/platforms/$WM_OPTIONS/lib
 
 # convenience
 export FOAM_APP=$WM_PROJECT_DIR/applications
diff --git a/wmake/Makefile b/wmake/Makefile
index 95b4b30c40a..e78eef3d79b 100644
--- a/wmake/Makefile
+++ b/wmake/Makefile
@@ -2,7 +2,7 @@
 # =========                 |
 # \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
 #  \\    /   O peration     |
-#   \\  /    A nd           | Copyright (C) 1991-2010 OpenCFD Ltd.
+#   \\  /    A nd           | Copyright (C) 1991-2011 OpenCFD Ltd.
 #    \\/     M anipulation  |
 #------------------------------------------------------------------------------
 # License
@@ -56,8 +56,7 @@ WM_SCRIPTS   = $(WM_DIR)/scripts
 #------------------------------------------------------------------------------
 
 LIB_SRC            = $(WM_PROJECT_DIR)/src
-LIB_DIR            = $(WM_PROJECT_DIR)/lib
-LIB_WM_OPTIONS_DIR = $(LIB_DIR)/$(WM_OPTIONS)
+LIB_PLATFORMS      = $(WM_PROJECT_DIR)/platforms/$(WM_OPTIONS)/lib
 OBJECTS_DIR        = $(MAKE_DIR)/$(WM_OPTIONS)
 CLASSES_DIR        = $(MAKE_DIR)/classes
 
@@ -148,7 +147,7 @@ LIB_HEADER_DIRS = \
 
 $(EXE):  $(OBJECTS)
 	     @$(WM_SCRIPTS)/makeTargetDir $(EXE)
-	     $(LINKEXE) $(OBJECTS) -L$(LIB_WM_OPTIONS_DIR) \
+	     $(LINKEXE) $(OBJECTS) -L$(LIB_PLATFORMS) \
 	     $(EXE_LIBS) $(PROJECT_LIBS) $(SYS_LIBS) $(LINK_LIBS) $(GLIBS) -o $(EXE)
 
 exe:     $(SEXE)
@@ -173,7 +172,7 @@ $(LIB).$(SO): $(OBJECTS)
 	     @$(WM_SCRIPTS)/makeTargetDir $(LIB)
 	     @rm -f so_locations
 	     @cd $(OBJECTS_DIR) ; \
-	     $(LINKLIBSO) $(LOCAL_OBJECTS) -L$(LIB_WM_OPTIONS_DIR) $(LIB_LIBS) $(GLIB_LIBS) -o $(LIB).$(SO)
+	     $(LINKLIBSO) $(LOCAL_OBJECTS) -L$(LIB_PLATFORMS) $(LIB_LIBS) $(GLIB_LIBS) -o $(LIB).$(SO)
 
 lib:     $(LIB).a
 	     @echo \'$(LIB).a\' is up to date.
-- 
GitLab