From f5bd5fd5f3ea51728aa7d60de7f8f96452ec0a66 Mon Sep 17 00:00:00 2001
From: Julien Malik <julien.malik@c-s.fr>
Date: Tue, 28 Sep 2010 18:42:45 +0200
Subject: [PATCH] ENH: change order dependencies are searched to recover
 windows7 compilation

---
 CMakeLists.txt | 364 +++++++++++++++++++++++++------------------------
 1 file changed, 183 insertions(+), 181 deletions(-)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 1801d46616..a611cde0da 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -304,168 +304,6 @@ IF(NOT BUILD_SHARED_LIBS)
   ADD_DEFINITIONS(-DOSSIM_STATIC)
 ENDIF(NOT BUILD_SHARED_LIBS)
 
-#-------------------------------
-# CURL Library
-#-------------------------------
-FIND_PACKAGE(CURL)
-IF(CURL_FOUND)
-  OPTION(OTB_USE_CURL "Use curl library." ON)
-ELSE(CURL_FOUND)
-  OPTION(OTB_USE_CURL "Use curl library." OFF)
-ENDIF(CURL_FOUND)
-
-MARK_AS_ADVANCED(OTB_USE_CURL)
-IF(OTB_USE_CURL)
-
-        FIND_PATH(CURL_INCLUDE_DIR curl/curl.h PATHS)
-        MARK_AS_ADVANCED(CURL_INCLUDE_DIR)
-        IF (NOT CURL_INCLUDE_DIR)
-                MESSAGE(FATAL_ERROR
-                        "Cannot find CURL include directory. Please set CURL_INCLUDE_DIR or SET OTB_USE_CURL OFF.")
-        ENDIF (NOT CURL_INCLUDE_DIR)
-
-        FIND_LIBRARY(CURL_LIBRARY curl )
-        MARK_AS_ADVANCED(CURL_LIBRARY)
-        IF (NOT CURL_LIBRARY)
-                MESSAGE(FATAL_ERROR
-                        "Cannot find CURL library. Please set CURL_LIBRARY or SET OTB_USE_CURL OFF.")
-        ENDIF (NOT CURL_LIBRARY)
-
-        # Add compiler option
-        ADD_DEFINITIONS(-DOTB_USE_CURL)
-
-        INCLUDE_DIRECTORIES(${CURL_INCLUDE_DIR})
-
-        # TODO add test to check if curl multi is available
-        TRY_COMPILE(OTB_CURL_MULTI_AVAILABLE
-                    ${CMAKE_CURRENT_BINARY_DIR}/CMake
-                    ${CMAKE_CURRENT_SOURCE_DIR}/CMake/TestCurlMulti.cxx
-                    CMAKE_FLAGS "-DINCLUDE_DIRECTORIES:PATH=${CURL_INCLUDE_DIR}" "-DLINK_LIBRARIES:STRING=${CURL_LIBRARY}"
-                    OUTPUT_VARIABLE OUTPUT)
-        IF (OTB_CURL_MULTI_AVAILABLE)
-          ADD_DEFINITIONS(-DOTB_CURL_MULTI_AVAILABLE)
-        ENDIF (OTB_CURL_MULTI_AVAILABLE)
-ENDIF(OTB_USE_CURL)
-
-#-------------------------------
-# Mapnik Library
-#-------------------------------
-OPTION(OTB_USE_MAPNIK "Use mapnik library." OFF)
-MARK_AS_ADVANCED(OTB_USE_MAPNIK)
-IF(OTB_USE_MAPNIK)
-
-        FIND_PATH(MAPNIK_INCLUDE_DIR mapnik/map.hpp PATHS)
-        MARK_AS_ADVANCED(MAPNIK_INCLUDE_DIR)
-        IF (NOT MAPNIK_INCLUDE_DIR)
-                MESSAGE(FATAL_ERROR
-                        "Cannot find MAPNIK include directory. Please set MAPNIK_INCLUDE_DIR or SET OTB_USE_MAPNIK OFF.")
-        ENDIF (NOT MAPNIK_INCLUDE_DIR)
-
-        FIND_PATH(FREETYPE2_INCLUDE_DIR freetype/freetype.h PATHS /usr/include/freetype2)
-        MARK_AS_ADVANCED(FREETYPE2_INCLUDE_DIR)
-        IF (NOT FREETYPE2_INCLUDE_DIR)
-                MESSAGE(FATAL_ERROR
-                        "Cannot find FREETYPE2 include directory. Please set  or SET OTB_USE_MAPNIK OFF.")
-        ENDIF (NOT FREETYPE2_INCLUDE_DIR)
-
-        FIND_LIBRARY(MAPNIK_LIBRARY mapnik )
-        MARK_AS_ADVANCED(MAPNIK_LIBRARY)
-        IF (NOT MAPNIK_LIBRARY)
-                MESSAGE(FATAL_ERROR
-                        "Cannot find MAPNIK library. Please set MAPNIK_LIBRARY or SET OTB_USE_MAPNIK OFF.")
-        ENDIF (NOT MAPNIK_LIBRARY)
-
-        # Add compiler option
-        ADD_DEFINITIONS(-DOTB_USE_MAPNIK)
-
-        INCLUDE_DIRECTORIES(${MAPNIK_INCLUDE_DIR})
-
-
-ENDIF(OTB_USE_MAPNIK)
-
-#-------------------------------
-# Pqxx Library
-#-------------------------------
-OPTION(OTB_USE_PQXX "Use pqxx library (EXPERIMENTAL)." OFF)
-MARK_AS_ADVANCED(OTB_USE_PQXX)
-IF(OTB_USE_PQXX)
-
-        FIND_PATH(PQXX_INCLUDE_DIR pqxx/pqxx PATHS)
-        MARK_AS_ADVANCED(PQXX_INCLUDE_DIR)
-        IF (NOT PQXX_INCLUDE_DIR)
-                MESSAGE(FATAL_ERROR
-                        "Cannot find PQXX include directory. Please set PQXX_INCLUDE_DIR or SET OTB_USE_PQXX OFF.")
-        ENDIF (NOT PQXX_INCLUDE_DIR)
-
-
-        FIND_LIBRARY(PQXX_LIBRARY pqxx )
-        MARK_AS_ADVANCED(PQXX_LIBRARY)
-        IF (NOT PQXX_LIBRARY)
-                MESSAGE(FATAL_ERROR
-                        "Cannot find PQXX library. Please set PQXX_LIBRARY or SET OTB_USE_PQXX OFF.")
-        ENDIF (NOT PQXX_LIBRARY)
-
-        FIND_LIBRARY(PQ_LIBRARY pq )
-        MARK_AS_ADVANCED(PQ_LIBRARY)
-        IF (NOT PQ_LIBRARY)
-                MESSAGE(FATAL_ERROR
-                        "Cannot find PQ library. Please set PQ_LIBRARY or SET OTB_USE_PQXX OFF.")
-        ENDIF (NOT PQ_LIBRARY)
-
-
-# Add compiler option
-        ADD_DEFINITIONS(-DOTB_USE_PQXX)
-
-        INCLUDE_DIRECTORIES(${PQXX_INCLUDE_DIR})
-
-ENDIF(OTB_USE_PQXX)
-
-
-#-------------------------------
-# Boost Library
-#-------------------------------
-SET (Boost_MINOR_VERSION 0)
-
-OPTION(OTB_USE_EXTERNAL_BOOST "Use an outside build of Boost." OFF)
-
-IF(OTB_USE_EXTERNAL_BOOST)
-  FIND_PACKAGE(Boost)
-  IF(Boost_FOUND)
-    IF( ${Boost_MINOR_VERSION} EQUAL 40)
-      MESSAGE(WARNING "Boost 1.40 not supported. Disabling OTB_USE_EXTERNAL_BOOST")
-      SET(OTB_USE_EXTERNAL_BOOST  OFF)
-    ENDIF(${Boost_MINOR_VERSION} EQUAL 40)
-  ELSE(Boost_FOUND)
-    MESSAGE(FATAL_ERROR
-                  "Cannot build OTB project without boost library.  Please set Boost directories or set OTB_USE_EXTERNAL_BOOST to OFF to use INTERNAL Boost set on OTB/Utilities repository.")
-  ENDIF(Boost_FOUND)
-ENDIF(OTB_USE_EXTERNAL_BOOST)
-
-# Option for internal/external BOOST
-MARK_AS_ADVANCED(OTB_USE_EXTERNAL_BOOST)
-
-IF (OTB_USE_MAPNIK)
-  IF(NOT OTB_USE_EXTERNAL_BOOST)
-    MESSAGE("You need to set OTB_USE_EXTERNAL_BOOST to ON when using MAPNIK")
-  ENDIF(NOT OTB_USE_EXTERNAL_BOOST)
-ENDIF(OTB_USE_MAPNIK)
-
-IF(OTB_USE_EXTERNAL_BOOST)
-
-  TRY_COMPILE(BOOST_IS_COMPLETE
-  ${CMAKE_CURRENT_BINARY_DIR}/CMake
-  ${CMAKE_CURRENT_SOURCE_DIR}/CMake/otbTestCompileBoost.cxx
-  CMAKE_FLAGS "-DINCLUDE_DIRECTORIES:PATH=${Boost_INCLUDE_DIR}"
-  OUTPUT_VARIABLE OUTPUT)
-  IF(BOOST_IS_COMPLETE)
-    MESSAGE(STATUS "Testing external Boost library    -- yes")
-  ELSE(BOOST_IS_COMPLETE)
-    MESSAGE(STATUS "Testing external Boost library    -- no")
-    MESSAGE(STATUS "Force the OTB_USE_EXTERNAL_BOOST value to OFF.")
-    SET(OTB_USE_EXTERNAL_BOOST OFF CACHE BOOL  "Use an outside build of Boost." FORCE )
-  ENDIF(BOOST_IS_COMPLETE)
-ENDIF(OTB_USE_EXTERNAL_BOOST)
-
 #-------------------------------
 # GDAL Library
 #-------------------------------
@@ -618,7 +456,7 @@ ELSE(OTB_USE_EXTERNAL_GDAL)
 ENDIF(OTB_USE_EXTERNAL_GDAL)
 
 #-----------------------------------------------------------------------------
-# Option for generate Visu tools !!!
+# Option to generate Visu tools
 OPTION(OTB_USE_VISU_GUI "Generate Gui/Visu tools directory. If ON, find OpenGL and FLTK packages." ON)
 MARK_AS_ADVANCED(OTB_USE_VISU_GUI)
 
@@ -641,32 +479,32 @@ IF(OTB_USE_VISU_GUI)
                 INCLUDE_DIRECTORIES(${OPENGL_INCLUDE_DIR})
         ENDIF(OPENGL_INCLUDE_DIR)
 
-	#-------------------------------
+        #-------------------------------
         # Display images using textures using video card acceleration
         #-------------------------------
-	OPTION(OTB_GL_USE_ACCEL "Use video card acceleration." OFF)
-	MARK_AS_ADVANCED(OTB_GL_USE_ACCEL)
+        OPTION(OTB_GL_USE_ACCEL "Use video card acceleration." OFF)
+        MARK_AS_ADVANCED(OTB_GL_USE_ACCEL)
 
         #-------------------------------
         # FLTK Library
         #-------------------------------
         OPTION(OTB_USE_EXTERNAL_FLTK "Use an outside build of FLTK." OFF)
 
-	IF(OTB_USE_EXTERNAL_FLTK)
-        	FIND_PACKAGE(FLTK)
-		IF(NOT FLTK_FOUND)
-			MESSAGE(FATAL_ERROR
+        IF(OTB_USE_EXTERNAL_FLTK)
+          FIND_PACKAGE(FLTK)
+          IF(NOT FLTK_FOUND)
+            MESSAGE(FATAL_ERROR
                   "Cannot build OTB project without FLTK. Please set FLTK_DIR or set OTB_USE_EXTERNAL_FLTK OFF to use INTERNAL FLTK.")
-		ENDIF(NOT FLTK_FOUND)
-	ELSE(OTB_USE_EXTERNAL_FLTK)
-		# Same Set as ITK
-		SET(FLTK_SOURCE_DIR ${OTB_SOURCE_DIR}/Utilities/FLTK)
-		SET(FLTK_BINARY_DIR ${OTB_BINARY_DIR}/Utilities/FLTK)
-		# Additionnal variables needed by OTB_VISU_GUI_LIBRARIES and FLTK_FLUID_EXECUTABLE
-		SET(FLTK_LIBRARIES "fltk_images;fltk;fltk_gl;fltk_forms")
-		SET(FLUID_COMMAND fluid)
-		# FLTK CMake needs a variable called JPEG_INCLUDE_DIR
-		SET(JPEG_INCLUDE_DIR ${JPEG_INCLUDE_DIRS})
+          ENDIF(NOT FLTK_FOUND)
+        ELSE(OTB_USE_EXTERNAL_FLTK)
+          # Same Set as ITK
+          SET(FLTK_SOURCE_DIR ${OTB_SOURCE_DIR}/Utilities/FLTK)
+          SET(FLTK_BINARY_DIR ${OTB_BINARY_DIR}/Utilities/FLTK)
+          # Additionnal variables needed by OTB_VISU_GUI_LIBRARIES and FLTK_FLUID_EXECUTABLE
+          SET(FLTK_LIBRARIES "fltk_images;fltk;fltk_gl;fltk_forms")
+          SET(FLUID_COMMAND fluid)
+          # FLTK CMake needs a variable called JPEG_INCLUDE_DIR
+          SET(JPEG_INCLUDE_DIR ${JPEG_INCLUDE_DIRS})
         ENDIF(OTB_USE_EXTERNAL_FLTK)
 
         SET(OTB_VISU_GUI_LIBRARIES "${FLTK_LIBRARIES};${OPENGL_LIBRARIES} ")
@@ -674,6 +512,170 @@ IF(OTB_USE_VISU_GUI)
 ENDIF(OTB_USE_VISU_GUI)
 
 
+#-------------------------------
+# CURL Library
+#-------------------------------
+FIND_PACKAGE(CURL)
+IF(CURL_FOUND)
+  OPTION(OTB_USE_CURL "Use curl library." ON)
+ELSE(CURL_FOUND)
+  OPTION(OTB_USE_CURL "Use curl library." OFF)
+ENDIF(CURL_FOUND)
+
+MARK_AS_ADVANCED(OTB_USE_CURL)
+IF(OTB_USE_CURL)
+
+        FIND_PATH(CURL_INCLUDE_DIR curl/curl.h PATHS)
+        MARK_AS_ADVANCED(CURL_INCLUDE_DIR)
+        IF (NOT CURL_INCLUDE_DIR)
+                MESSAGE(FATAL_ERROR
+                        "Cannot find CURL include directory. Please set CURL_INCLUDE_DIR or SET OTB_USE_CURL OFF.")
+        ENDIF (NOT CURL_INCLUDE_DIR)
+
+        FIND_LIBRARY(CURL_LIBRARY curl )
+        MARK_AS_ADVANCED(CURL_LIBRARY)
+        IF (NOT CURL_LIBRARY)
+                MESSAGE(FATAL_ERROR
+                        "Cannot find CURL library. Please set CURL_LIBRARY or SET OTB_USE_CURL OFF.")
+        ENDIF (NOT CURL_LIBRARY)
+
+        # Add compiler option
+        ADD_DEFINITIONS(-DOTB_USE_CURL)
+
+        INCLUDE_DIRECTORIES(${CURL_INCLUDE_DIR})
+
+        # TODO add test to check if curl multi is available
+        TRY_COMPILE(OTB_CURL_MULTI_AVAILABLE
+                    ${CMAKE_CURRENT_BINARY_DIR}/CMake
+                    ${CMAKE_CURRENT_SOURCE_DIR}/CMake/TestCurlMulti.cxx
+                    CMAKE_FLAGS "-DINCLUDE_DIRECTORIES:PATH=${CURL_INCLUDE_DIR}" "-DLINK_LIBRARIES:STRING=${CURL_LIBRARY}"
+                    OUTPUT_VARIABLE OUTPUT)
+        IF (OTB_CURL_MULTI_AVAILABLE)
+          ADD_DEFINITIONS(-DOTB_CURL_MULTI_AVAILABLE)
+        ENDIF (OTB_CURL_MULTI_AVAILABLE)
+ENDIF(OTB_USE_CURL)
+
+#-------------------------------
+# Mapnik Library
+#-------------------------------
+OPTION(OTB_USE_MAPNIK "Use mapnik library." OFF)
+MARK_AS_ADVANCED(OTB_USE_MAPNIK)
+IF(OTB_USE_MAPNIK)
+
+        FIND_PATH(MAPNIK_INCLUDE_DIR mapnik/map.hpp PATHS)
+        MARK_AS_ADVANCED(MAPNIK_INCLUDE_DIR)
+        IF (NOT MAPNIK_INCLUDE_DIR)
+                MESSAGE(FATAL_ERROR
+                        "Cannot find MAPNIK include directory. Please set MAPNIK_INCLUDE_DIR or SET OTB_USE_MAPNIK OFF.")
+        ENDIF (NOT MAPNIK_INCLUDE_DIR)
+
+        FIND_PATH(FREETYPE2_INCLUDE_DIR freetype/freetype.h PATHS /usr/include/freetype2)
+        MARK_AS_ADVANCED(FREETYPE2_INCLUDE_DIR)
+        IF (NOT FREETYPE2_INCLUDE_DIR)
+                MESSAGE(FATAL_ERROR
+                        "Cannot find FREETYPE2 include directory. Please set  or SET OTB_USE_MAPNIK OFF.")
+        ENDIF (NOT FREETYPE2_INCLUDE_DIR)
+
+        FIND_LIBRARY(MAPNIK_LIBRARY mapnik )
+        MARK_AS_ADVANCED(MAPNIK_LIBRARY)
+        IF (NOT MAPNIK_LIBRARY)
+                MESSAGE(FATAL_ERROR
+                        "Cannot find MAPNIK library. Please set MAPNIK_LIBRARY or SET OTB_USE_MAPNIK OFF.")
+        ENDIF (NOT MAPNIK_LIBRARY)
+
+        # Add compiler option
+        ADD_DEFINITIONS(-DOTB_USE_MAPNIK)
+
+        INCLUDE_DIRECTORIES(${MAPNIK_INCLUDE_DIR})
+
+
+ENDIF(OTB_USE_MAPNIK)
+
+#-------------------------------
+# Pqxx Library
+#-------------------------------
+OPTION(OTB_USE_PQXX "Use pqxx library (EXPERIMENTAL)." OFF)
+MARK_AS_ADVANCED(OTB_USE_PQXX)
+IF(OTB_USE_PQXX)
+
+        FIND_PATH(PQXX_INCLUDE_DIR pqxx/pqxx PATHS)
+        MARK_AS_ADVANCED(PQXX_INCLUDE_DIR)
+        IF (NOT PQXX_INCLUDE_DIR)
+                MESSAGE(FATAL_ERROR
+                        "Cannot find PQXX include directory. Please set PQXX_INCLUDE_DIR or SET OTB_USE_PQXX OFF.")
+        ENDIF (NOT PQXX_INCLUDE_DIR)
+
+
+        FIND_LIBRARY(PQXX_LIBRARY pqxx )
+        MARK_AS_ADVANCED(PQXX_LIBRARY)
+        IF (NOT PQXX_LIBRARY)
+                MESSAGE(FATAL_ERROR
+                        "Cannot find PQXX library. Please set PQXX_LIBRARY or SET OTB_USE_PQXX OFF.")
+        ENDIF (NOT PQXX_LIBRARY)
+
+        FIND_LIBRARY(PQ_LIBRARY pq )
+        MARK_AS_ADVANCED(PQ_LIBRARY)
+        IF (NOT PQ_LIBRARY)
+                MESSAGE(FATAL_ERROR
+                        "Cannot find PQ library. Please set PQ_LIBRARY or SET OTB_USE_PQXX OFF.")
+        ENDIF (NOT PQ_LIBRARY)
+
+
+# Add compiler option
+        ADD_DEFINITIONS(-DOTB_USE_PQXX)
+
+        INCLUDE_DIRECTORIES(${PQXX_INCLUDE_DIR})
+
+ENDIF(OTB_USE_PQXX)
+
+
+#-------------------------------
+# Boost Library
+#-------------------------------
+SET (Boost_MINOR_VERSION 0)
+
+OPTION(OTB_USE_EXTERNAL_BOOST "Use an outside build of Boost." OFF)
+
+IF(OTB_USE_EXTERNAL_BOOST)
+  FIND_PACKAGE(Boost)
+  IF(Boost_FOUND)
+    IF( ${Boost_MINOR_VERSION} EQUAL 40)
+      MESSAGE(WARNING "Boost 1.40 not supported. Disabling OTB_USE_EXTERNAL_BOOST")
+      SET(OTB_USE_EXTERNAL_BOOST  OFF)
+    ENDIF(${Boost_MINOR_VERSION} EQUAL 40)
+  ELSE(Boost_FOUND)
+    MESSAGE(FATAL_ERROR
+                  "Cannot build OTB project without boost library.  Please set Boost directories or set OTB_USE_EXTERNAL_BOOST to OFF to use INTERNAL Boost set on OTB/Utilities repository.")
+  ENDIF(Boost_FOUND)
+ENDIF(OTB_USE_EXTERNAL_BOOST)
+
+# Option for internal/external BOOST
+MARK_AS_ADVANCED(OTB_USE_EXTERNAL_BOOST)
+
+IF (OTB_USE_MAPNIK)
+  IF(NOT OTB_USE_EXTERNAL_BOOST)
+    MESSAGE("You need to set OTB_USE_EXTERNAL_BOOST to ON when using MAPNIK")
+  ENDIF(NOT OTB_USE_EXTERNAL_BOOST)
+ENDIF(OTB_USE_MAPNIK)
+
+IF(OTB_USE_EXTERNAL_BOOST)
+
+  TRY_COMPILE(BOOST_IS_COMPLETE
+  ${CMAKE_CURRENT_BINARY_DIR}/CMake
+  ${CMAKE_CURRENT_SOURCE_DIR}/CMake/otbTestCompileBoost.cxx
+  CMAKE_FLAGS "-DINCLUDE_DIRECTORIES:PATH=${Boost_INCLUDE_DIR}"
+  OUTPUT_VARIABLE OUTPUT)
+  IF(BOOST_IS_COMPLETE)
+    MESSAGE(STATUS "Testing external Boost library    -- yes")
+  ELSE(BOOST_IS_COMPLETE)
+    MESSAGE(STATUS "Testing external Boost library    -- no")
+    MESSAGE(STATUS "Force the OTB_USE_EXTERNAL_BOOST value to OFF.")
+    SET(OTB_USE_EXTERNAL_BOOST OFF CACHE BOOL  "Use an outside build of Boost." FORCE )
+  ENDIF(BOOST_IS_COMPLETE)
+ENDIF(OTB_USE_EXTERNAL_BOOST)
+
+
+
 #Experimental
 OPTION(OTB_USE_GETTEXT "Get Text Library." ON)
 
@@ -713,7 +715,7 @@ ENDIF(GETTEXT_FOUND)
 ENDIF(OTB_USE_GETTEXT)
 
 #-------------------------------
-# End connections whith external libraries
+# End connections with external libraries
 #-------------------------------
 
 #-----------------------------------------------------------------------------
-- 
GitLab