From b8187052ce4c6b0b4196e86a10431fb6a5a0751d Mon Sep 17 00:00:00 2001
From: Lars Bilke <lars.bilke@ufz.de>
Date: Fri, 14 Sep 2012 11:20:01 +0200
Subject: [PATCH] Added CMake option OGS_LIBS_DIR for finding compiled
 libraries.

---
 CMakeLists.txt                     |  3 ++
 scripts/cmake/Find.cmake           | 15 +++++++
 scripts/cmake/FindLibGeoTiff.cmake | 16 ++++---
 scripts/cmake/FindLibTiff.cmake    | 23 ++++++----
 scripts/cmake/FindMetis.cmake      |  2 +
 scripts/cmake/FindShapelib.cmake   | 67 ++++++++++++++++++++++++++++++
 6 files changed, 113 insertions(+), 13 deletions(-)
 create mode 100644 scripts/cmake/FindShapelib.cmake

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 6457773a008..ca7884bd6c9 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -51,6 +51,9 @@ OPTION(OGS_NO_EXTERNAL_LIBS "Builds OGS without any external dependencies." OFF)
 # Logging
 OPTION(OGS_DISABLE_LOGGING "Disables all logog messages." OFF)
 
+# Search paths
+SET(OGS_LIBS_DIR "" CACHE PATH "The path to the compiled third party libs (mainly used for Windows).")
+
 # Print CMake variable values
 IF (OGS_CMAKE_DEBUG)
 	INCLUDE(ListAllCMakeVariableValues)
diff --git a/scripts/cmake/Find.cmake b/scripts/cmake/Find.cmake
index e6b98de5295..4f3564ed459 100644
--- a/scripts/cmake/Find.cmake
+++ b/scripts/cmake/Find.cmake
@@ -1,3 +1,12 @@
+############################
+### Find OGS directories ###
+############################
+
+# Compiled libraries (for Windows)
+FIND_PATH(OGS_LIBS_DIR_FOUND geotiff.lib
+	PATHS $ENV{OGS_LIBS} ${OGS_LIBS_DIR} ${PROJECT_SOURCE_DIR}/../Libs C:/OGS_Libs
+	PATH_SUFFIXES libgeotiff)
+
 ######################
 ### Find tools     ###
 ######################
@@ -100,3 +109,9 @@ FIND_PACKAGE( LibGeoTiff )
 IF(libgeotiff_FOUND)
 	ADD_DEFINITIONS(-Dlibgeotiff_FOUND)
 ENDIF() # libgeotiff_FOUND
+
+## shapelib ##
+FIND_PACKAGE( Shapelib )
+IF(Shapelib_FOUND)
+	ADD_DEFINITIONS(-DShapelib_FOUND)
+ENDIF() # Shapelib_FOUND
diff --git a/scripts/cmake/FindLibGeoTiff.cmake b/scripts/cmake/FindLibGeoTiff.cmake
index 8b46fc9cff5..1c2934a16c5 100644
--- a/scripts/cmake/FindLibGeoTiff.cmake
+++ b/scripts/cmake/FindLibGeoTiff.cmake
@@ -11,20 +11,24 @@ if (NOT libgeotiff_FOUND)
 
 	find_path( libgeotiff_INCLUDE_DIR
 			NAMES geotiff.h
-			PATHS	/usr/include
+			PATHS
+				/usr/include
 				/usr/include/libgeotiff
 				/usr/include/geotiff
 				${CMAKE_SOURCE_DIR}/../Libs/libgeotiff
-				C:/OGS_Libs/libgeotiff
-				$ENV{OGS_LIBS}/libgeotiff)
+				$ENV{OGS_LIBS}/libgeotiff
+				${OGS_LIBS_DIR_FOUND}/libgeotiff
+			)
 
 	find_library(libgeotiff_LIBRARIES
 		NAMES geotiff
-		PATHS	/usr/lib64
+		PATHS
+			/usr/lib64
 			/usr/lib
 			${CMAKE_SOURCE_DIR}/../Libs/libgeotiff
-			C:/OGS_Libs/libgeotiff
-			$ENV{OGS_LIBS}/libgeotiff)
+			$ENV{OGS_LIBS}/libgeotiff
+			${OGS_LIBS_DIR_FOUND}/libgeotiff
+		)
 
 
 	# Set the include dir variables and the libraries and let libfind_process do the rest.
diff --git a/scripts/cmake/FindLibTiff.cmake b/scripts/cmake/FindLibTiff.cmake
index 96b4cac12d2..25014a26913 100644
--- a/scripts/cmake/FindLibTiff.cmake
+++ b/scripts/cmake/FindLibTiff.cmake
@@ -11,21 +11,30 @@ if (NOT libtiff_FOUND)
 
 	find_path( libtiff_INCLUDE_DIR
 		NAMES tiff.h
-		PATHS	/usr/include
+		PATHS
+			/usr/include
 			${CMAKE_SOURCE_DIR}/../Libs/libtiff/libtiff
-			C:/OGS_Libs/libtiff
-			$ENV{OGS_LIBS}/libtiff)
+			$ENV{OGS_LIBS}/libtiff
+			${OGS_LIBS_DIR_FOUND}/libtiff/libtiff
+		)
 
 	if ( UNIX )
 		find_library(libtiff_LIBRARIES
 			NAMES tiff
-			PATHS /usr/lib64 /usr/lib ${CMAKE_SOURCE_DIR}/../Libs/libtiff/libtiff)
+			PATHS
+				/usr/lib64
+				/usr/lib
+				${CMAKE_SOURCE_DIR}/../Libs/libtiff/libtiff
+				${OGS_LIBS_DIR_FOUND}/libtiff/libtiff
+			)
 	else ( UNIX )
 		find_library(libtiff_LIBRARIES
 			NAMES libtiff
-			PATHS	${CMAKE_SOURCE_DIR}/../Libs/libtiff/libtiff
-				C:/OGS_Libs/libtiff
-				$ENV{OGS_LIBS}/libtiff)
+			PATHS
+				${CMAKE_SOURCE_DIR}/../Libs/libtiff/libtiff
+				$ENV{OGS_LIBS}/libtiff
+				${OGS_LIBS_DIR_FOUND}/libtiff
+			)
 	endif ( UNIX )
 
 
diff --git a/scripts/cmake/FindMetis.cmake b/scripts/cmake/FindMetis.cmake
index c9518513c27..c13486ef2f7 100644
--- a/scripts/cmake/FindMetis.cmake
+++ b/scripts/cmake/FindMetis.cmake
@@ -15,12 +15,14 @@ FIND_PATH(METIS_INCLUDE_DIR metis.h
 	/usr/include/metis
 	$ENV{HOME}/include/
 	${CMAKE_SOURCE_DIR}/../libs/include
+	${OGS_LIBS_DIR_FOUND}/include
 )
 
 FIND_LIBRARY(METIS_LIBRARY metis
 	/usr/lib
 	$ENV{HOME}/lib/
 	${CMAKE_SOURCE_DIR}/../libs/lib
+	${OGS_LIBS_DIR_FOUND}/lib
 )
 
 SET(METIS_LIBRARIES ${METIS_LIBRARY})
diff --git a/scripts/cmake/FindShapelib.cmake b/scripts/cmake/FindShapelib.cmake
new file mode 100644
index 00000000000..fe6f4aa52eb
--- /dev/null
+++ b/scripts/cmake/FindShapelib.cmake
@@ -0,0 +1,67 @@
+# - Try to find Shapelib
+# Once done, this will define
+#
+#  Shapelib_FOUND
+#  Shapelib_INCLUDE_DIRS
+#  Shapelib_LIBRARIES
+
+if (NOT Shapelib_FOUND)
+
+	include(LibFindMacros)
+
+	find_path( Shapelib_INCLUDE_DIR
+		NAMES shapefil.h
+		PATHS
+			/usr/include/libshp
+			/usr/include
+			${CMAKE_SOURCE_DIR}/../Libs/shapelib
+			C:/OGS_Libs/shapelib
+			$ENV{OGS_LIBS}/shapelib
+			${OGS_LIBS_DIR_FOUND}/shapelib
+		)
+
+	if ( UNIX )
+		find_library(Shapelib_LIBRARIES
+			NAMES shp
+			PATHS
+				/usr/lib64
+				/usr/lib
+				${CMAKE_SOURCE_DIR}/../Libs/shapelib
+				${OGS_LIBS_DIR_FOUND}/shapelib
+			)
+		find_library(Shapelib_LIBRARIES
+			NAMES shapelib.a
+			PATHS
+				/usr/lib64
+				/usr/lib
+				${CMAKE_SOURCE_DIR}/../Libs/shapelib/
+				${OGS_LIBS_DIR_FOUND}/shapelib
+			)
+		find_library(Shapelib_LIBRARIES
+			NAMES shapelib
+			PATHS
+				/usr/lib64
+				/usr/lib
+				${CMAKE_SOURCE_DIR}/../Libs/shapelib/
+				${OGS_LIBS_DIR_FOUND}/shapelib
+			)
+	else ( UNIX )
+		find_library(Shapelib_LIBRARIES
+			NAMES shapelib
+			PATHS
+				${CMAKE_SOURCE_DIR}/../Libs/shapelib
+				${OGS_LIBS_DIR_FOUND}/shapelib
+			)
+	endif ( UNIX )
+
+	# Set the include dir variables and the libraries and let libfind_process do the rest.
+	# NOTE: Singular variables for this library, plural for libraries this this lib depends on.
+	if (NOT Shapelib_LIBRARIES STREQUAL "Shapelib_LIBRARIES-NOTFOUND" AND NOT Shapelib_INCLUDE_DIR STREQUAL "Shapelib_INCLUDE_DIR-NOTFOUND")
+		set(Shapelib_PROCESS_INCLUDES Shapelib_INCLUDE_DIR)
+		set(Shapelib_PROCESS_LIBS Shapelib_LIBRARIES)
+		libfind_process(Shapelib)
+	else (NOT Shapelib_LIBRARIES STREQUAL "Shapelib_LIBRARIES-NOTFOUND" AND NOT Shapelib_INCLUDE_DIR STREQUAL "Shapelib_INCLUDE_DIR-NOTFOUND")
+		#message (STATUS "Warning: shapelib not found!")
+	endif (NOT Shapelib_LIBRARIES STREQUAL "Shapelib_LIBRARIES-NOTFOUND" AND NOT Shapelib_INCLUDE_DIR STREQUAL "Shapelib_INCLUDE_DIR-NOTFOUND")
+
+endif (NOT Shapelib_FOUND)
-- 
GitLab