From 21bccfdf1ab5e34fdb7145259ac49eebc1ca114e Mon Sep 17 00:00:00 2001
From: Mark Olesen <Mark.Olesen@esi-group.com>
Date: Tue, 26 Jun 2018 09:48:57 +0200
Subject: [PATCH] COMP: handle unset WM_OSTYPE for cmake targets (issue #909)

- regularise referencing of OpenFOAM env variables, sources etc.
---
 .../PVReaders/PVFoamReader/CMakeLists.txt     | 52 ++++++++++++++-----
 .../PVblockMeshReader/CMakeLists.txt          | 43 +++++++++++----
 .../CMakeLists-Common.txt                     | 38 +++++---------
 .../CMakeLists-OpenFOAM.txt                   | 32 ++++++++++++
 .../runTimePostProcessing/CMakeLists.txt      |  6 +--
 5 files changed, 121 insertions(+), 50 deletions(-)
 create mode 100644 src/functionObjects/graphics/runTimePostProcessing/CMakeLists-OpenFOAM.txt

diff --git a/applications/utilities/postProcessing/graphics/PVReaders/PVFoamReader/CMakeLists.txt b/applications/utilities/postProcessing/graphics/PVReaders/PVFoamReader/CMakeLists.txt
index 18302332ae..621dcf61ae 100644
--- a/applications/utilities/postProcessing/graphics/PVReaders/PVFoamReader/CMakeLists.txt
+++ b/applications/utilities/postProcessing/graphics/PVReaders/PVFoamReader/CMakeLists.txt
@@ -5,24 +5,53 @@ cmake_minimum_required(VERSION 2.8)
 find_package(ParaView REQUIRED)
 include(${PARAVIEW_USE_FILE})
 
+#-----------------------------------------------------------------------------
+# Standard definitions when using OpenFOAM
+
+if (NOT EXISTS "$ENV{WM_PROJECT_DIR}")
+    message(FATAL_ERROR "WM_PROJECT_DIR not set - no OpenFOAM??")
+endif()
+
+# WM_OSTYPE env variable is optional (only POSIX anyhow)
+if (EXISTS "$ENV{WM_OSTYPE}")
+    set(WM_OSTYPE "$ENV{WM_OSTYPE}")
+else()
+    set(WM_OSTYPE "POSIX")
+endif()
+
+# Convenience name, as per wmake internals
+set(LIB_SRC "$ENV{WM_PROJECT_DIR}/src")
+
+# Needed for internal label-size, scalar-size, templates
+add_definitions(
+    -DWM_$ENV{WM_PRECISION_OPTION}
+    -DWM_LABEL_SIZE=$ENV{WM_LABEL_SIZE}
+    -DNoRepository
+
+    -std=c++11
+)
+
+#-----------------------------------------------------------------------------
+
 link_directories(
     $ENV{FOAM_LIBBIN}
 )
 
 include_directories(
-    $ENV{WM_PROJECT_DIR}/src/OpenFOAM/lnInclude
-    $ENV{WM_PROJECT_DIR}/src/OSspecific/$ENV{WM_OSTYPE}/lnInclude
-    $ENV{WM_PROJECT_DIR}/src/conversion/lnInclude
-    $ENV{WM_PROJECT_DIR}/src/finiteArea/lnInclude
-    $ENV{WM_PROJECT_DIR}/src/finiteVolume/lnInclude
+    ${LIB_SRC}/OpenFOAM/lnInclude
+    ${LIB_SRC}/OSspecific/${WM_OSTYPE}/lnInclude
+    ${LIB_SRC}/conversion/lnInclude
+    ${LIB_SRC}/finiteArea/lnInclude
+    ${LIB_SRC}/finiteVolume/lnInclude
     ${PROJECT_SOURCE_DIR}/../foamPv
     ${PROJECT_SOURCE_DIR}/../vtkPVFoam
 )
 
-add_definitions(
-    -std=c++11
-    -DWM_$ENV{WM_PRECISION_OPTION}
-    -DWM_LABEL_SIZE=$ENV{WM_LABEL_SIZE}
+set(OPENFOAM_LIBRARIES
+    OpenFOAM
+    finiteVolume
+    finiteArea
+    conversion
 )
 
 # Set output library destination to plugin directory
@@ -66,10 +95,7 @@ target_link_libraries(
     LINK_PUBLIC
     vtkPVFoam-pv${PARAVIEW_VERSION_MAJOR}.${PARAVIEW_VERSION_MINOR}
     foamPv-pv${PARAVIEW_VERSION_MAJOR}.${PARAVIEW_VERSION_MINOR}
-    conversion
-    finiteArea
-    finiteVolume
-    OpenFOAM
+    ${OPENFOAM_LIBRARIES}
 )
 
 #-----------------------------------------------------------------------------
diff --git a/applications/utilities/postProcessing/graphics/PVReaders/PVblockMeshReader/CMakeLists.txt b/applications/utilities/postProcessing/graphics/PVReaders/PVblockMeshReader/CMakeLists.txt
index ff3a876d30..c6ae7a2db1 100644
--- a/applications/utilities/postProcessing/graphics/PVReaders/PVblockMeshReader/CMakeLists.txt
+++ b/applications/utilities/postProcessing/graphics/PVReaders/PVblockMeshReader/CMakeLists.txt
@@ -9,18 +9,44 @@ link_directories(
     $ENV{FOAM_LIBBIN}
 )
 
+#-----------------------------------------------------------------------------
+# Standard definitions when using OpenFOAM
+
+if (NOT EXISTS "$ENV{WM_PROJECT_DIR}")
+    message(FATAL_ERROR "WM_PROJECT_DIR not set - no OpenFOAM??")
+endif()
+
+# WM_OSTYPE env variable is optional (only POSIX anyhow)
+if (EXISTS "$ENV{WM_OSTYPE}")
+    set(WM_OSTYPE "$ENV{WM_OSTYPE}")
+else()
+    set(WM_OSTYPE "POSIX")
+endif()
+
+# Convenience name, as per wmake internals
+set(LIB_SRC "$ENV{WM_PROJECT_DIR}/src")
+
+# Needed for internal label-size, scalar-size, templates
+add_definitions(
+    -DWM_$ENV{WM_PRECISION_OPTION}
+    -DWM_LABEL_SIZE=$ENV{WM_LABEL_SIZE}
+    -DNoRepository
+
+    -std=c++11
+)
+
+#-----------------------------------------------------------------------------
 include_directories(
-    $ENV{WM_PROJECT_DIR}/src/OpenFOAM/lnInclude
-    $ENV{WM_PROJECT_DIR}/src/OSspecific/$ENV{WM_OSTYPE}/lnInclude
-    $ENV{WM_PROJECT_DIR}/src/meshing/blockMesh/lnInclude
+    ${LIB_SRC}/OpenFOAM/lnInclude
+    ${LIB_SRC}/OSspecific/${WM_OSTYPE}/lnInclude
+    ${LIB_SRC}/meshing/blockMesh/lnInclude
     ${PROJECT_SOURCE_DIR}/../foamPv
     ${PROJECT_SOURCE_DIR}/../vtkPVblockMesh
 )
 
-add_definitions(
-    -std=c++11
-    -DWM_$ENV{WM_PRECISION_OPTION}
-    -DWM_LABEL_SIZE=$ENV{WM_LABEL_SIZE}
+set(OPENFOAM_LIBRARIES
+    OpenFOAM
+    blockMesh
 )
 
 # Set output library destination to plugin directory
@@ -64,8 +90,7 @@ target_link_libraries(
     LINK_PUBLIC
     vtkPVblockMesh-pv${PARAVIEW_VERSION_MAJOR}.${PARAVIEW_VERSION_MINOR}
     foamPv-pv${PARAVIEW_VERSION_MAJOR}.${PARAVIEW_VERSION_MINOR}
-    blockMesh
-    OpenFOAM
+    ${OPENFOAM_LIBRARIES}
 )
 
 #-----------------------------------------------------------------------------
diff --git a/src/functionObjects/graphics/runTimePostProcessing/CMakeLists-Common.txt b/src/functionObjects/graphics/runTimePostProcessing/CMakeLists-Common.txt
index 55effddcd5..85e007c437 100644
--- a/src/functionObjects/graphics/runTimePostProcessing/CMakeLists-Common.txt
+++ b/src/functionObjects/graphics/runTimePostProcessing/CMakeLists-Common.txt
@@ -1,3 +1,5 @@
+#-----------------------------------------------------------------------------
+
 include(${VTK_USE_FILE})
 
 if(VTK_LIBRARIES)
@@ -7,15 +9,15 @@ endif()
 if(${VTK_VERSION} VERSION_GREATER "6")
     message("VTK version: " ${VTK_VERSION})
 else()
-    message(FATAL_ERROR " VTK6 required")
+    message(FATAL_ERROR " VTK version is too old - requires VTK6 or newer")
 endif()
 
 include_directories(
-    $ENV{WM_PROJECT_DIR}/src/OpenFOAM/lnInclude
-    $ENV{WM_PROJECT_DIR}/src/OSspecific/$ENV{WM_OSTYPE}/lnInclude
-    $ENV{WM_PROJECT_DIR}/src/surfMesh/lnInclude
-    $ENV{WM_PROJECT_DIR}/src/finiteVolume/lnInclude
-    $ENV{WM_PROJECT_DIR}/src/conversion/lnInclude
+    ${LIB_SRC}/OpenFOAM/lnInclude
+    ${LIB_SRC}/OSspecific/${WM_OSTYPE}/lnInclude
+    ${LIB_SRC}/finiteVolume/lnInclude
+    ${LIB_SRC}/surfMesh/lnInclude
+    ${LIB_SRC}/conversion/lnInclude
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_BINARY_DIR}
 )
@@ -24,22 +26,8 @@ link_directories(
     $ENV{FOAM_LIBBIN}
 )
 
-add_definitions(
-    -DWM_$ENV{WM_PRECISION_OPTION} -DNoRepository
-    -DWM_LABEL_SIZE=$ENV{WM_LABEL_SIZE}
-)
-
 set(CMAKE_BUILD_TYPE Release)
 
-set(CMAKE_CXX_FLAGS_DEBUG
-    "-g -O0 -std=c++11 -Wall -Wextra -Wno-unused-parameter -Wnon-virtual-dtor -Wno-overloaded-virtual"
-)
-set(CMAKE_C_FLAGS_DEBUG "-g -O0 -std=c++11")
-
-set(CMAKE_CXX_FLAGS_RELEASE
-    "-O3 -std=c++11 -Wall -Wextra -Wno-unused-parameter -Wnon-virtual-dtor -Wno-overloaded-virtual")
-set(CMAKE_C_FLAGS_RELEASE "-O3 -std=c++11")
-
 # Set output library destination to plugin directory
 set(LIBRARY_OUTPUT_PATH $ENV{FOAM_LIBBIN}
     CACHE INTERNAL
@@ -72,8 +60,8 @@ file(GLOB SOURCE_FILES
 
 set(OPENFOAM_LIBRARIES
     OpenFOAM
-    surfMesh
     finiteVolume
+    surfMesh
     conversion
 )
 
@@ -84,10 +72,10 @@ add_library(
 )
 
 set_target_properties(
-  runTimePostProcessing
-  PROPERTIES
-  VERSION ${VTK_MAJOR_VERSION}.${VTK_MINOR_VERSION}.${VTK_BUILD_VERSION}
-  SOVERSION ${VTK_MAJOR_VERSION}
+    runTimePostProcessing
+    PROPERTIES
+    VERSION ${VTK_MAJOR_VERSION}.${VTK_MINOR_VERSION}.${VTK_BUILD_VERSION}
+    SOVERSION ${VTK_MAJOR_VERSION}
 )
 
 target_link_libraries(
diff --git a/src/functionObjects/graphics/runTimePostProcessing/CMakeLists-OpenFOAM.txt b/src/functionObjects/graphics/runTimePostProcessing/CMakeLists-OpenFOAM.txt
new file mode 100644
index 0000000000..00a63cbc0d
--- /dev/null
+++ b/src/functionObjects/graphics/runTimePostProcessing/CMakeLists-OpenFOAM.txt
@@ -0,0 +1,32 @@
+#-----------------------------------------------------------------------------
+# Standard definitions when using OpenFOAM
+
+if (NOT EXISTS "$ENV{WM_PROJECT_DIR}")
+    message(FATAL_ERROR "WM_PROJECT_DIR not set - no OpenFOAM??")
+endif()
+
+# WM_OSTYPE env variable is optional (only POSIX anyhow)
+if (EXISTS "$ENV{WM_OSTYPE}")
+    set(WM_OSTYPE "$ENV{WM_OSTYPE}")
+else()
+    set(WM_OSTYPE "POSIX")
+endif()
+
+# Convenience name, as per wmake internals
+set(LIB_SRC "$ENV{WM_PROJECT_DIR}/src")
+
+# Needed for internal label-size, scalar-size, templates
+add_definitions(
+    -DWM_$ENV{WM_PRECISION_OPTION}
+    -DWM_LABEL_SIZE=$ENV{WM_LABEL_SIZE}
+    -DNoRepository
+)
+
+set(CMAKE_CXX_FLAGS_DEBUG
+    "-g -O0 -std=c++11 -Wall -Wextra -Wno-unused-parameter -Wnon-virtual-dtor -Wno-overloaded-virtual"
+)
+set(CMAKE_CXX_FLAGS_RELEASE
+    "-O3 -std=c++11 -Wall -Wextra -Wno-unused-parameter -Wnon-virtual-dtor -Wno-overloaded-virtual"
+)
+
+#-----------------------------------------------------------------------------
diff --git a/src/functionObjects/graphics/runTimePostProcessing/CMakeLists.txt b/src/functionObjects/graphics/runTimePostProcessing/CMakeLists.txt
index 903942b305..0a3838b4ea 100644
--- a/src/functionObjects/graphics/runTimePostProcessing/CMakeLists.txt
+++ b/src/functionObjects/graphics/runTimePostProcessing/CMakeLists.txt
@@ -17,11 +17,11 @@ elseif (EXISTS "$ENV{ParaView_DIR}")
         VTK_VERSION
         "${VTK_MAJOR_VERSION}.${VTK_MINOR_VERSION}.${VTK_BUILD_VERSION}"
     )
-else ()
+else()
     message (FATAL_ERROR "VTK not found using VTK_DIR or ParaView_DIR")
-endif ()
+endif()
 
+include(CMakeLists-OpenFOAM.txt)
 include(CMakeLists-Common.txt)
 
-
 #-----------------------------------------------------------------------------
-- 
GitLab