From f625f7b5e5dc497f73af217d9cc045617c2b5b41 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Cl=C3=A9ment=20de=20l=27Hamaide?= <clemaez@hotmail.fr>
Date: Wed, 13 Nov 2013 17:34:29 +0100
Subject: [PATCH] Superbuild: Fix and cleanup

- Fix OSG_INSTALL_PREFIX path
- Fix missing OSG_INSTALL_PREFIX for flightgear
- Add 64 bits support
- Don't override OSG install dir
- Fix CMAKE_INSTALL_PREFIX path for SG and FG
- Indentation cleanup
---
 CMakeLists.txt | 159 +++++++++++++++++++++++++------------------------
 1 file changed, 81 insertions(+), 78 deletions(-)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index d90d672..e5c7053 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -5,7 +5,7 @@ include (ExternalProject)
 project(FlightGear-Meta)
 
 if(NOT CMAKE_INSTALL_PREFIX)
-	set(CMAKE_INSTALL_PREFIX ${CMAKE_BINARY_DIR}/install)
+    set(CMAKE_INSTALL_PREFIX ${CMAKE_BINARY_DIR}/install)
     message(STATUS "Default install dir to ${CMAKE_INSTALL_PREFIX}")
 endif()
 
@@ -21,30 +21,29 @@ set(SG_CMAKE_ARGS "")
 set(FG_CMAKE_ARGS "")
 
 if(APPLE)
-
     set(BOOST_ARGS link=static stage --with-system)
     ExternalProject_Add(Boost
-           PREFIX ${CMAKE_BINARY_DIR}
-           SVN_REPOSITORY http://svn.boost.org/svn/boost/tags/release/Boost_1_52_0
-           UPDATE_COMMAND ${BOOST_BOOTSTRAP}
-           CONFIGURE_COMMAND ""
-           BUILD_COMMAND ./bjam ${BOOST_ARGS}
-           BUILD_IN_SOURCE 1
-           INSTALL_COMMAND ./b2 install ${BOOST_ARGS})
+        PREFIX ${CMAKE_BINARY_DIR}
+        SVN_REPOSITORY http://svn.boost.org/svn/boost/tags/release/Boost_1_52_0
+        UPDATE_COMMAND ${BOOST_BOOTSTRAP}
+        CONFIGURE_COMMAND ""
+        BUILD_COMMAND ./bjam ${BOOST_ARGS}
+        BUILD_IN_SOURCE 1
+        INSTALL_COMMAND ./b2 install ${BOOST_ARGS})
               
     list(APPEND SG_DEPS Boost)
 endif()  # of Apple
 
-set (OSG_INSTALL_PREFIX ${CMAKE_INSTALL_PREFIX})
+set(OSG_INSTALL_PREFIX ${CMAKE_INSTALL_PREFIX})
 
 # OpenSceneGraph configuration
-SET(OSG_SOURCE URL http://www.openscenegraph.org/downloads/developer_releases/OpenSceneGraph-3.2.0.zip)
+set(OSG_SOURCE URL http://www.openscenegraph.org/downloads/developer_releases/OpenSceneGraph-3.2.0.zip)
 
 if (APPLE)
-    SET(SDKROOT /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.7.sdk)
+    set(SDKROOT /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.7.sdk)
     # force disable Qt and Jasper, and ensure an SDKROOT is set, or
     # osgViewer system detection goes wrongh
-    SET(OSG_CMAKE_ARGS -DCMAKE_OSX_SYSROOT=${SDKROOT} 
+    set(OSG_CMAKE_ARGS -DCMAKE_OSX_SYSROOT=${SDKROOT} 
         -DOSG_USE_QT=0 
         -DJASPER_LIBRARY= 
         -DSDL_LIBRARY:FILEPATH=
@@ -52,31 +51,34 @@ if (APPLE)
         -DCMAKE_OSX_DEPLOYMENT_TARGET=10.7
     )
     # OSG with some patches applied for Mac
-#    SET(OSG_SOURCE GIT_REPOSITORY git://gitorious.org/+flightgear-developers/openscenegraph/mac-release-osg.git)
- #   SET(OSG_SOURCE URL http://www.openscenegraph.org/downloads/developer_releases/OpenSceneGraph-3.2.0.zip)
+    # set(OSG_SOURCE GIT_REPOSITORY git://gitorious.org/+flightgear-developers/openscenegraph/mac-release-osg.git)
+    # set(OSG_SOURCE URL http://www.openscenegraph.org/downloads/developer_releases/OpenSceneGraph-3.2.0.zip)
 
 elseif(MSVC)
-	set( OSG_MSVC "msvc" )
+    set(OSG_MSVC "msvc")
     if (${MSVC_VERSION} EQUAL 1700)
-      set( OSG_MSVC ${OSG_MSVC}110 )
+        set(OSG_MSVC ${OSG_MSVC}110)
     elseif (${MSVC_VERSION} EQUAL 1600)
-      set( OSG_MSVC ${OSG_MSVC}100 )
+        set(OSG_MSVC ${OSG_MSVC}100)
     else (${MSVC_VERSION} EQUAL 1700)
-      set( OSG_MSVC ${OSG_MSVC}90 )
+        set(OSG_MSVC ${OSG_MSVC}90)
     endif (${MSVC_VERSION} EQUAL 1700)
+    if (CMAKE_CL_64)
+        set(OSG_MSVC ${OSG_MSVC}-64)
+    endif (CMAKE_CL_64)
   
-	SET(OSG_CMAKE_ARGS
-		-DACTUAL_3RDPARTY_DIR:PATH=${CMAKE_BINARY_DIR}/3rdParty
-		-DBUILD_OSG_APPLICATIONS:BOOL=ON
-		-DCMAKE_INSTALL_PREFIX:PATH=
-		-DOSG_PLUGIN_SEARCH_INSTALL_DIR_FOR_PLUGINS:BOOL=OFF
-		-DFREETYPE_LIBRARY:FILEPATH=${CMAKE_BINARY_DIR}/3rdParty/lib/freetype243.lib
-		-DGDAL_INCLUDE_DIR:PATH=
-		-DGDAL_LIBRARY:FILEPATH=
+    SET(OSG_CMAKE_ARGS
+        -DACTUAL_3RDPARTY_DIR:PATH=${CMAKE_BINARY_DIR}/3rdParty
+        -DBUILD_OSG_APPLICATIONS:BOOL=ON
+        -DCMAKE_INSTALL_PREFIX:PATH=
+        -DOSG_PLUGIN_SEARCH_INSTALL_DIR_FOR_PLUGINS:BOOL=OFF
+        -DFREETYPE_LIBRARY:FILEPATH=${CMAKE_BINARY_DIR}/3rdParty/lib/freetype243.lib
+        -DGDAL_INCLUDE_DIR:PATH=
+        -DGDAL_LIBRARY:FILEPATH=
     )
-	
-	# for compatability with MSVC directory layout
-	set(OSG_INSTALL_PREFIX ${CMAKE_BINARY_DIR}/install/${OSG_MSVC}/OpenSceneGraph)
+
+    # for compatability with MSVC directory layout
+    set(OSG_INSTALL_PREFIX ${OSG_INSTALL_PREFIX}/${OSG_MSVC}/OpenSceneGraph)
     list(APPEND OSG_DEPS WinDeps)
 else()
     # normal OSG
@@ -84,48 +86,48 @@ else()
 endif()
 
 if (MSVC)
-# download 3rdparty dependencies zip, including boost
-	ExternalProject_Add(WinDeps
-		DOWNLOAD_COMMAND URL http://files.goneabitbursar.com/fg/fgfs-win32-VS100-3rdParty+OSG-20120411.zip
-# extract to current root
-		SOURCE_DIR ${CMAKE_BINARY_DIR}/winDeps 
-		BINARY_DIR ${CMAKE_BINARY_DIR} 
-		CONFIGURE_COMMAND ""
-		BUILD_COMMAND ${CMAKE_SOURCE_DIR}/installWinDeps.bat
-		INSTALL_COMMAND ""
-	)
+    # download 3rdparty dependencies zip, including boost
+    ExternalProject_Add(WinDeps
+        DOWNLOAD_COMMAND URL http://files.goneabitbursar.com/fg/fgfs-win32-VS100-3rdParty+OSG-20120411.zip
+        # extract to current root
+        SOURCE_DIR ${CMAKE_BINARY_DIR}/winDeps 
+        BINARY_DIR ${CMAKE_BINARY_DIR} 
+        CONFIGURE_COMMAND ""
+        BUILD_COMMAND ${CMAKE_SOURCE_DIR}/installWinDeps.bat
+        INSTALL_COMMAND ""
+    )
 	
-	set(BOOST_ARGS link=static stage --with-system)
-	set( Boost_Version 1.54.0 )
-	string( REPLACE "." "_" Boost_Version_Underscore ${Boost_Version} )
+    set(BOOST_ARGS link=static stage --with-system)
+    set( Boost_Version 1.54.0 )
+    string( REPLACE "." "_" Boost_Version_Underscore ${Boost_Version} )
 
-	ExternalProject_Add(Boost
-                PREFIX ${CMAKE_BINARY_DIR}
-                URL http://downloads.sourceforge.net/project/boost/boost/${Boost_Version}/boost_${Boost_Version_Underscore}.zip
-				URL_MD5 78a35834c45220a6164310e280abe675
-                UPDATE_COMMAND "bootstrap.bat"
-                CONFIGURE_COMMAND ""
-                BUILD_COMMAND bjam --with-program_options ${BOOST_ARGS}
-                BUILD_IN_SOURCE 1
-                INSTALL_COMMAND ""
-				)
+    ExternalProject_Add(Boost
+        PREFIX ${CMAKE_BINARY_DIR}
+        URL http://downloads.sourceforge.net/project/boost/boost/${Boost_Version}/boost_${Boost_Version_Underscore}.zip
+        URL_MD5 78a35834c45220a6164310e280abe675
+        UPDATE_COMMAND "bootstrap.bat"
+        CONFIGURE_COMMAND ""
+        BUILD_COMMAND bjam --with-program_options ${BOOST_ARGS}
+        BUILD_IN_SOURCE 1
+        INSTALL_COMMAND ""
+    )
 				
-	list(APPEND SG_DEPS Boost)
+    list(APPEND SG_DEPS Boost)
 	
-	list(APPEND SG_CMAKE_ARGS -DBOOST_ROOT=${CMAKE_BINARY_DIR}/src/Boost)
-	list(APPEND FG_CMAKE_ARGS -DBOOST_ROOT=${CMAKE_BINARY_DIR}/src/Boost)
+    list(APPEND SG_CMAKE_ARGS -DBOOST_ROOT=${CMAKE_BINARY_DIR}/src/Boost)
+    list(APPEND FG_CMAKE_ARGS -DBOOST_ROOT=${CMAKE_BINARY_DIR}/src/Boost)
 endif(MSVC) # of Windows
 
 message(STATUS "OSG install prefix is ${OSG_INSTALL_PREFIX}")
 ExternalProject_Add(OSG
-	DEPENDS ${OSG_DEPS}
+    DEPENDS ${OSG_DEPS}
     PREFIX ${CMAKE_BINARY_DIR}
     ${OSG_SOURCE}
-	URL_HASH MD5=4980f8692712a24d4c99f363f80c6814
+    URL_HASH MD5=4980f8692712a24d4c99f363f80c6814
     BINARY_DIR osgbuild
     CMAKE_ARGS ${OSG_CMAKE_ARGS} -DCMAKE_INSTALL_PREFIX=${OSG_INSTALL_PREFIX}
-# force Release build of OpenSceneGraph
-#	BUILD_COMMAND "cmake --build . --config Release"
+    # force Release build of OpenSceneGraph
+    # BUILD_COMMAND "cmake --build . --config Release"
 )
 
 # FIXME install of OpenRTI is failing on Windows, files in PREFIX/share which
@@ -138,31 +140,32 @@ if (NOT MSVC)
         CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${CMAKE_INSTALL_PREFIX}
     )
 	
-	list(APPEND SG_DEPS OpenRTI)
-	list(APPEND SG_CMAKE_ARGS -DENABLE_RTI=1)
-	list(APPEND FG_CMAKE_ARGS -DENABLE_RTI=1)
+    list(APPEND SG_DEPS OpenRTI)
+    list(APPEND SG_CMAKE_ARGS -DENABLE_RTI=1)
+    list(APPEND FG_CMAKE_ARGS -DENABLE_RTI=1)
 endif()
 
 ExternalProject_Add(SimGear 
     PREFIX ${CMAKE_BINARY_DIR}
     DEPENDS ${SG_DEPS}
-    DOWNLOAD_COMMAND ""     # no need to download
-    UPDATE_COMMAND       ""    # or update.
+    DOWNLOAD_COMMAND ""    # no need to download
+    UPDATE_COMMAND ""      # or update.
     SOURCE_DIR ${CMAKE_CURRENT_LIST_DIR}/simgear
     BINARY_DIR sgbuild 
-    CMAKE_ARGS ${SG_CMAKE_ARGS} -DCMAKE_INSTALL_PREFIX=${CMAKE_INSTALL_PREFIX} -DCMAKE_PREFIX_PATH=${OSG_INSTALL_PREFIX})
+    CMAKE_ARGS ${SG_CMAKE_ARGS} -DCMAKE_INSTALL_PREFIX=${CMAKE_INSTALL_PREFIX}/${OSG_MSVC} -DCMAKE_PREFIX_PATH=${OSG_INSTALL_PREFIX}
+)
 
 # on Windows, PLIB is in the 3rd-party dependencies zip
 if (NOT WIN32)
-	SET(PLIB_ARGS --disable-pw --disable-sl --disable-psl --disable-ssg --disable-ssgaux)
+    SET(PLIB_ARGS --disable-pw --disable-sl --disable-psl --disable-ssg --disable-ssgaux)
 
-	ExternalProject_Add(PLIB 
-		PREFIX ${CMAKE_BINARY_DIR}
-		URL http://plib.sourceforge.net/dist/plib-1.8.5.tar.gz
-		URL_HASH MD5=47a6fbf63668c1eed631024038b2ea90
-		CONFIGURE_COMMAND <SOURCE_DIR>/configure --prefix=${CMAKE_INSTALL_PREFIX} ${PLIB_ARGS}
-		BUILD_IN_SOURCE 1
-	)
+    ExternalProject_Add(PLIB 
+        PREFIX ${CMAKE_BINARY_DIR}
+        URL http://plib.sourceforge.net/dist/plib-1.8.5.tar.gz
+        URL_HASH MD5=47a6fbf63668c1eed631024038b2ea90
+        CONFIGURE_COMMAND <SOURCE_DIR>/configure --prefix=${CMAKE_INSTALL_PREFIX} ${PLIB_ARGS}
+        BUILD_IN_SOURCE 1
+    )
     
     list(APPEND FG_DEPS PLIB)
 endif()
@@ -170,9 +173,9 @@ endif()
 ExternalProject_Add(FlightGear
     PREFIX ${CMAKE_BINARY_DIR}
     DEPENDS ${FG_DEPS}
-    DOWNLOAD_COMMAND ""     # no need to download
-    UPDATE_COMMAND       ""    # or update.
+    DOWNLOAD_COMMAND ""    # no need to download
+    UPDATE_COMMAND ""      # or update.
     SOURCE_DIR ${CMAKE_CURRENT_LIST_DIR}/flightgear
     BINARY_DIR fgbuild 
-    CMAKE_ARGS ${FG_CMAKE_ARGS} -DCMAKE_INSTALL_PREFIX=${CMAKE_INSTALL_PREFIX}
-	)
+    CMAKE_ARGS ${FG_CMAKE_ARGS} -DCMAKE_INSTALL_PREFIX=${CMAKE_INSTALL_PREFIX}/${OSG_MSVC} -DCMAKE_PREFIX_PATH=${OSG_INSTALL_PREFIX}
+)