changeset 1998:9031c6fab6cb

Updated CMake scripts: now has better OGRE included boost lib detection.
author thegusty999
date Sun, 30 Oct 2011 16:36:50 +0000
parents 74e956976194
children cd5a5f637833
files CMakeLists.txt CMakeModules/BoostOgreGetVersion.cmake CMakeModules/FindBoostOGRE.cmake CMakeModules/FindCEGUIOGRE.cmake CMakeModules/FindGNUWIN.cmake CMakeModules/FindVorbis.cmake
diffstat 6 files changed, 130 insertions(+), 47 deletions(-) [+]
line wrap: on
line diff
--- a/CMakeLists.txt	Sat Oct 29 15:42:49 2011 +0000
+++ b/CMakeLists.txt	Sun Oct 30 16:36:50 2011 +0000
@@ -6,8 +6,7 @@
 OPTION(NO_ENET "Do not use in-source ENET Lib" OFF)
 OPTION(BUILD_TOOLS "Builds editor tools" ON)
 OPTION(UPDATE_SUBVERSION_REVISION "Option to turn off automatic revision checking" ON)
-OPTION(POST_BUILD_COPY "After a build, copy the executable (Win32)" OFF)
-
+OPTION(POST_BUILD_COPY "After a build, copy the executable to the project folder (Win32)" OFF)
 
 IF( NOT CMAKE_BUILD_TYPE )
   SET( CMAKE_BUILD_TYPE "RelWithDebInfo" )
@@ -70,10 +69,10 @@
   MESSAGE(SEND_ERROR "You need Ogre 1.7 Cthugha to build this.")
 ENDIF()
 
-#IF (WIN32)
-#  FIND_PACKAGE(BOOST REQUIRED)
-#  FIND_PACKAGE(GNUWIN REQUIRED)
-#ENDIF (WIN32)
+IF (WIN32)
+ FIND_PACKAGE(BoostOGRE REQUIRED)
+ FIND_PACKAGE(GNUWIN REQUIRED)
+ENDIF (WIN32)
 FIND_PACKAGE(OIS REQUIRED)
 FIND_PACKAGE(Lua51 REQUIRED)
 FIND_PACKAGE(CEGUI REQUIRED)
@@ -98,9 +97,12 @@
 INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR}/src/gui)
 INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR}/src/gui/contenteditor)
 INCLUDE_DIRECTORIES(${OGRE_INCLUDE_DIRS})
-#IF (WIN32)
-#  INCLUDE_DIRECTORIES(${Boost_INCLUDE_DIRS})
-#ENDIF (WIN32)
+IF (WIN32)
+  Message(STATUS "Adding boost include: ${BoostOGRE_INCLUDE_DIR}")
+  INCLUDE_DIRECTORIES(${BoostOGRE_INCLUDE_DIR})
+  Message(STATUS "Adding gnu include: ${GNUWIN_INCLUDE_DIR}")
+  INCLUDE_DIRECTORIES(${GNUWIN_INCLUDE_DIR})
+ENDIF (WIN32)
 INCLUDE_DIRECTORIES(${OIS_INCLUDE_DIRS})
 INCLUDE_DIRECTORIES(${LUA_INCLUDE_DIR})
 INCLUDE_DIRECTORIES(${CEGUI_INCLUDE_DIR})
@@ -417,14 +419,6 @@
 
 ADD_EXECUTABLE(sumwars ${SRCS})
 
-# Only after adding the executable can a link be made to boost
-#IF (WIN32)
-#  include_directories(${Boost_INCLUDE_DIRS})
-#  link_directories(${Boost_LIBRARY_DIRS})
-#  include_directories(${GNUWIN_INCLUDE_DIR})
-#
-#  message("Adding boost include: ${Boost_INCLUDE_DIRS}")
-#ENDIF (WIN32)
 
 #${CEGUILUA_LIBRARY}
 
@@ -438,8 +432,7 @@
   ${LUA_LIBRARIES} 
   ${OPENAL_LIBRARY} 
   ${ALUT_LIBRARY} 
-  ${OGG_LIBRARY_DEBUG}
-#  ${OGG_LIBRARY}
+  ${OGG_LIBRARY}
   ${VORBIS_LIBRARIES} 
   ${PHYSFS_LIBRARY}
   )
@@ -461,12 +454,8 @@
     ws2_32.lib
     winmm.lib
     ${LINK_LIBS}
-#    ${CMAKE_CURRENT_SOURCE_DIR}/Dependencies/gettext/lib/libgettextlib.lib
-    ${CMAKE_CURRENT_SOURCE_DIR}/Dependencies/gettext/lib/libintl.lib
-    ${CMAKE_CURRENT_SOURCE_DIR}/Dependencies/boost/lib/libboost_thread-vc100-mt-gd-1_44.lib
-    ${CMAKE_CURRENT_SOURCE_DIR}/Dependencies/boost/lib/libboost_date_time-vc100-mt-gd-1_44.lib
-    ${CMAKE_CURRENT_SOURCE_DIR}/Dependencies/boost/lib/libboost_thread-vc100-mt-1_44.lib
-    ${CMAKE_CURRENT_SOURCE_DIR}/Dependencies/boost/lib/libboost_date_time-vc100-mt-1_44.lib
+    ${GNUWIN_LIBRARY}
+    ${BoostOGRE_LIBRARIES}
     )
 ENDIF()
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/CMakeModules/BoostOgreGetVersion.cmake	Sun Oct 30 16:36:50 2011 +0000
@@ -0,0 +1,17 @@
+#-------------------------------------------------------------------
+# This file is part of the CMake build system for Summoning Wars
+# The purpose of this script is to obtain the version of the boost
+# library used in the OGRE SDK.
+# For the latest info, see http://sumwars.org/
+#
+# The contents of this file are placed in the public domain. Feel
+# free to make use of it in any way you like.
+# Latest update: 2011.10.30 (Augustin Preda).
+#-------------------------------------------------------------------
+
+include(PreprocessorUtils)
+
+macro(boost_ogre_get_version HEADER)
+  file(READ ${HEADER} TEMP_VAR_CONTENTS)
+  get_preprocessor_entry(TEMP_VAR_CONTENTS BOOST_LIB_VERSION BoostOGRE_LIB_VERSION)
+endmacro()
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/CMakeModules/FindBoostOGRE.cmake	Sun Oct 30 16:36:50 2011 +0000
@@ -0,0 +1,79 @@
+# Find Boost includes and library - use versions that are distributed with Ogre.
+# This is very important, as using different library versions is not possible with the SDK.
+# INCLUDE(DetermineVersion)
+# INCLUDE(FindPackageHandleAdvancedArgs)
+
+# Only tested for Win32 so far.
+IF(WIN32)
+  INCLUDE(FindPackageHandleStandardArgs)
+  INCLUDE(HandleLibraryTypes)
+  INCLUDE(BoostOGREGetVersion)
+
+  # Set the boost search path. Prioritize the Dependencies folder.
+  SET (BST_SRCPATH ${CMAKE_CURRENT_SOURCE_DIR}/Dependencies/boost $ENV{OGRE_HOME}/boost_1_44)
+  FIND_PATH(BoostOGRE_INCLUDE_DIR /boost/version.hpp
+    PATHS ${BST_SRCPATH}
+    PATH_SUFFIXES /boost /boost_1_44
+  )
+  
+  Message (STATUS "Found BoostOGRE_INCLUDE_DIR as: ${BoostOGRE_INCLUDE_DIR}")
+  
+  # Get the used version (stored in version.h). Required to know against which libs to link.
+  # This will store the result into ${BoostOGRE_LIB_VERSION}
+  boost_ogre_get_version(${BoostOGRE_INCLUDE_DIR}/boost/version.hpp)
+  Message (STATUS "Found BoostOGRE_LIB_VERSION as: ${BoostOGRE_LIB_VERSION}")
+  
+  FIND_LIBRARY(BoostOGRE_THREAD_LIBRARY_DEBUG
+    NAMES libboost_thread-vc100-mt-gd-${BoostOGRE_LIB_VERSION}
+    PATHS ${BST_SRCPATH}
+    PATH_SUFFIXES lib bin
+  )
+
+  FIND_LIBRARY(BoostOGRE_THREAD_LIBRARY_OPTIMIZED
+    NAMES libboost_thread-vc100-mt-${BoostOGRE_LIB_VERSION}
+    PATHS ${BST_SRCPATH}
+    PATH_SUFFIXES lib bin
+  )
+  
+  FIND_LIBRARY(BoostOGRE_DATETIME_LIBRARY_DEBUG
+    NAMES libboost_date_time-vc100-mt-gd-${BoostOGRE_LIB_VERSION}
+    PATHS ${BST_SRCPATH}
+    PATH_SUFFIXES lib bin
+  )
+
+  FIND_LIBRARY(BoostOGRE_DATETIME_LIBRARY_OPTIMIZED
+    NAMES libboost_date_time-vc100-mt-${BoostOGRE_LIB_VERSION}
+    PATHS ${BST_SRCPATH}
+    PATH_SUFFIXES lib bin
+  )
+  
+  # Handle the REQUIRED argument
+  FIND_PACKAGE_HANDLE_STANDARD_ARGS(BoostOGRE DEFAULT_MSG
+      BoostOGRE_INCLUDE_DIR
+      BoostOGRE_THREAD_LIBRARY_DEBUG
+      BoostOGRE_THREAD_LIBRARY_OPTIMIZED
+      BoostOGRE_DATETIME_LIBRARY_DEBUG
+      BoostOGRE_DATETIME_LIBRARY_OPTIMIZED
+  )
+
+  # Collect optimized and debug libraries (will auto-use names _LIBRARY_DEBUG & _LIBRARY_OPTIMIZED
+  HANDLE_LIBRARY_TYPES(BoostOGRE_THREAD)
+  # Collect optimized and debug libraries
+  HANDLE_LIBRARY_TYPES(BoostOGRE_DATETIME)
+  
+  Message (STATUS "Found BoostOGRE_THREAD_LIBRARY as: ${BoostOGRE_THREAD_LIBRARY}")  
+  Message (STATUS "Found BoostOGRE_DATETIME_LIBRARY as: ${BoostOGRE_DATETIME_LIBRARY}")  
+  SET(BoostOGRE_LIBRARIES ${BoostOGRE_THREAD_LIBRARY} ${BoostOGRE_DATETIME_LIBRARY})
+  
+  # Mark these entries visible only in the advanced section.
+  MARK_AS_ADVANCED(
+    BoostOGRE_INCLUDE_DIR
+    BoostOGRE_THREAD_LIBRARY_OPTIMIZED
+    BoostOGRE_THREAD_LIBRARY_DEBUG
+    BoostOGRE_DATETIME_LIBRARY_OPTIMIZED
+    BoostOGRE_DATETIME_LIBRARY_DEBUG
+  )
+  
+  Message (STATUS "Found BoostOGRE_LIBRARIES as: ${BoostOGRE_LIBRARIES}")
+ENDIF(WIN32)
+
--- a/CMakeModules/FindCEGUIOGRE.cmake	Sat Oct 29 15:42:49 2011 +0000
+++ b/CMakeModules/FindCEGUIOGRE.cmake	Sun Oct 30 16:36:50 2011 +0000
@@ -51,7 +51,7 @@
   CEGUIOGRE_INCLUDE_DIRS
 )
 
-MESSAGE("${CEGUIOGRE_INCLUDE_DIRS}")
+MESSAGE(STATUS "Found CEGUI include dir: ${CEGUIOGRE_INCLUDE_DIRS}")
 
 MARK_AS_ADVANCED(
   CEGUIOGRE_INCLUDE_DIRS
--- a/CMakeModules/FindGNUWIN.cmake	Sat Oct 29 15:42:49 2011 +0000
+++ b/CMakeModules/FindGNUWIN.cmake	Sun Oct 30 16:36:50 2011 +0000
@@ -9,7 +9,7 @@
 INCLUDE(FindPackageHandleStandardArgs)
 INCLUDE(HandleLibraryTypes)
 
-SET (GNU_SRCPATH $ENV{PROGRAMFILES}/GnuWin32 $ENV{GNUWINDIR} ${PROJECT_SOURCE_DIR}/Dependencies)
+SET (GNU_SRCPATH $ENV{PROGRAMFILES}/GnuWin32 $ENV{GNUWINDIR} ${CMAKE_CURRENT_SOURCE_DIR}/Dependencies)
 FIND_PATH(GNUWIN_INCLUDE_DIR libintl.h
   PATHS ${GNU_SRCPATH}
   PATH_SUFFIXES include
--- a/CMakeModules/FindVorbis.cmake	Sat Oct 29 15:42:49 2011 +0000
+++ b/CMakeModules/FindVorbis.cmake	Sun Oct 30 16:36:50 2011 +0000
@@ -22,23 +22,26 @@
 )
 
 IF(WIN32)
-#Make a special selection for the scenario of using visual studio 2010, since this will
-#be the most frequent at this stage.
-SET (TMP_SUFF Win32/Release)
-IF (MSVC10)
-SET (TMP_SUFF ${TMP_SUFF} VS2010/Win32/Release Win32/VS2010/Win32/Release )
-ENDIF (MSVC10)
-FIND_LIBRARY(VORBIS_LIBRARY_OPTIMIZED
-  NAMES libvorbis_static libvorbis libvorbis-static-mt
-  PATHS $ENV{VORBISDIR}
-  PATH_SUFFIXES Release ${TMP_SUFF}
-)
+  #Make a special selection for the scenario of using visual studio 2010, since this will
+  #be the most frequent at this stage.
+  SET (TMP_SUFF Win32/Release)
+  IF (MSVC10)
+    SET (TMP_SUFF ${TMP_SUFF} VS2010/Win32/Release Win32/VS2010/Win32/Release )
+  ENDIF (MSVC10)
+  # Using static link in as preferred option
+  # TODO: add option to allow selecting static or release as pre 
+  FIND_LIBRARY(VORBIS_LIBRARY_OPTIMIZED
+    NAMES libvorbis_static libvorbis-static-mt libvorbis
+    PATHS $ENV{VORBISDIR}
+    PATH_SUFFIXES Release ${TMP_SUFF}
+  )
 ELSE()
-FIND_LIBRARY(VORBIS_LIBRARY_OPTIMIZED
-  NAMES vorbis
-  PATH_SUFFIXES lib
-)
+  FIND_LIBRARY(VORBIS_LIBRARY_OPTIMIZED
+    NAMES vorbis
+    PATH_SUFFIXES lib
+  )
 ENDIF(WIN32)
+Message (STATUS "Got release vorbis: ${VORBIS_LIBRARY_OPTIMIZED}")
 
 IF(WIN32)
 #Make a special selection for the scenario of using visual studio 2010, since this will
@@ -107,8 +110,6 @@
 ELSE()
 FIND_PACKAGE_HANDLE_STANDARD_ARGS(Vorbis DEFAULT_MSG
   VORBIS_LIBRARY_OPTIMIZED
-#   #Temporary: also add for WIN32
-#   VORBISFILE_LIBRARY_OPTIMIZED
   VORBIS_INCLUDE_DIR
 )
 ENDIF(NOT WIN32)
@@ -120,9 +121,6 @@
   SET(VORBIS_LIBRARIES ${VORBIS_LIBRARY} ${VORBISFILE_LIBRARY}) #WIN32 includes VORBISFILE as a static lib
 ELSE()
   SET(VORBIS_LIBRARIES ${VORBIS_LIBRARY} )
-#   # Why would the fact that WIN32 includes the vorbisfile as static mean that we don't need to pass it here? 
-#   HANDLE_LIBRARY_TYPES(VORBISFILE) 
-#   SET(VORBIS_LIBRARIES ${VORBIS_LIBRARY} ${VORBISFILE_LIBRARY})
 ENDIF(NOT WIN32)
 
 MARK_AS_ADVANCED(