| 1 |
IF(WIN32) |
|---|
| 2 |
CMAKE_MINIMUM_REQUIRED(VERSION 2.4.6 FATAL_ERROR) |
|---|
| 3 |
ELSE(WIN32) |
|---|
| 4 |
IF(APPLE) |
|---|
| 5 |
CMAKE_MINIMUM_REQUIRED(VERSION 2.6.0 FATAL_ERROR) |
|---|
| 6 |
ELSE(APPLE) |
|---|
| 7 |
CMAKE_MINIMUM_REQUIRED(VERSION 2.4.0 FATAL_ERROR) |
|---|
| 8 |
ENDIF(APPLE) |
|---|
| 9 |
ENDIF(WIN32) |
|---|
| 10 |
|
|---|
| 11 |
if(COMMAND cmake_policy) |
|---|
| 12 |
# Works around warnings libraries linked against that don't |
|---|
| 13 |
# have absolute paths (e.g. -lpthreads) |
|---|
| 14 |
cmake_policy(SET CMP0003 NEW) |
|---|
| 15 |
|
|---|
| 16 |
# Works around warnings about escaped quotes in ADD_DEFINITIONS |
|---|
| 17 |
# statements. |
|---|
| 18 |
cmake_policy(SET CMP0005 NEW) |
|---|
| 19 |
|
|---|
| 20 |
# cmake-2.6.1 introduces policy cmp0008 decide how to treat full path libraries that do not appear to be valid library file names |
|---|
| 21 |
# quote from cvslog "Such libraries worked by accident in the VS IDE and Xcode generators in CMake 2.4 and below." |
|---|
| 22 |
if(${CMAKE_MAJOR_VERSION} EQUAL 2 AND ${CMAKE_MINOR_VERSION} GREATER 4 AND ${CMAKE_PATCH_VERSION} GREATER 0) |
|---|
| 23 |
cmake_policy(SET CMP0008 OLD) |
|---|
| 24 |
endif(${CMAKE_MAJOR_VERSION} EQUAL 2 AND ${CMAKE_MINOR_VERSION} GREATER 4 AND ${CMAKE_PATCH_VERSION} GREATER 0) |
|---|
| 25 |
endif(COMMAND cmake_policy) |
|---|
| 26 |
|
|---|
| 27 |
PROJECT(OpenSceneGraph) |
|---|
| 28 |
|
|---|
| 29 |
SET(OPENSCENEGRAPH_MAJOR_VERSION 2) |
|---|
| 30 |
SET(OPENSCENEGRAPH_MINOR_VERSION 7) |
|---|
| 31 |
SET(OPENSCENEGRAPH_PATCH_VERSION 8) |
|---|
| 32 |
SET(OPENSCENEGRAPH_SOVERSION 53) |
|---|
| 33 |
|
|---|
| 34 |
# set to 0 when not a release candidate, non zero means that any generated |
|---|
| 35 |
# svn tags will be treated as release candidates of given number |
|---|
| 36 |
SET(OPENSCENEGRAPH_RELEASE_CANDIDATE 0) |
|---|
| 37 |
|
|---|
| 38 |
SET(OPENSCENEGRAPH_VERSION ${OPENSCENEGRAPH_MAJOR_VERSION}.${OPENSCENEGRAPH_MINOR_VERSION}.${OPENSCENEGRAPH_PATCH_VERSION}) |
|---|
| 39 |
|
|---|
| 40 |
SET(OSG_PLUGINS osgPlugins-${OPENSCENEGRAPH_VERSION}) |
|---|
| 41 |
|
|---|
| 42 |
SET(OSG_PLUGIN_PREFIX "") |
|---|
| 43 |
|
|---|
| 44 |
IF (CYGWIN) |
|---|
| 45 |
SET(OSG_PLUGIN_PREFIX "cygwin_") |
|---|
| 46 |
ENDIF(CYGWIN) |
|---|
| 47 |
|
|---|
| 48 |
IF(MINGW) |
|---|
| 49 |
SET(OSG_PLUGIN_PREFIX "mingw_") |
|---|
| 50 |
ENDIF(MINGW) |
|---|
| 51 |
|
|---|
| 52 |
|
|---|
| 53 |
# We want to build SONAMES shared librariess |
|---|
| 54 |
SET(OPENSCENEGRAPH_SONAMES TRUE) |
|---|
| 55 |
SET(OPENTHREADS_SONAMES TRUE) |
|---|
| 56 |
|
|---|
| 57 |
SET(OpenThreads_SOURCE_DIR ${OpenSceneGraph_SOURCE_DIR}) |
|---|
| 58 |
|
|---|
| 59 |
# We have some custom .cmake scripts not in the official distribution. |
|---|
| 60 |
# Maybe this can be used override existing behavior if needed? |
|---|
| 61 |
SET(CMAKE_MODULE_PATH "${OpenSceneGraph_SOURCE_DIR}/CMakeModules;${CMAKE_MODULE_PATH}") |
|---|
| 62 |
|
|---|
| 63 |
|
|---|
| 64 |
# Okay, here's the problem: On some platforms, linking against OpenThreads |
|---|
| 65 |
# is not enough and explicit linking to the underlying thread library |
|---|
| 66 |
# is also required (e.g. FreeBSD). But OpenThreads may be built with different |
|---|
| 67 |
# backends (Pthreads, Sproc, Windows) so we don't know what the underlying |
|---|
| 68 |
# thread library is because some platforms support multiple backends (e.g. |
|---|
| 69 |
# IRIX supports Sproc and Pthreads). Linking all libraries won't work |
|---|
| 70 |
# because the libraries may be incompatible. |
|---|
| 71 |
# So the current solution is to attempt best guess linking and exempt certain |
|---|
| 72 |
# cases. With IRIX, we're going to hope explicit linking to the underlying |
|---|
| 73 |
# library is not necessary. We currently don't case for pthreads on Windows |
|---|
| 74 |
# which might be an issue on things like Cygwin. This may need to be fixed. |
|---|
| 75 |
FIND_PACKAGE(Threads) |
|---|
| 76 |
IF(CMAKE_SYSTEM MATCHES IRIX) |
|---|
| 77 |
# Erase CMAKE_THREAD_LIBS_INIT and hope it works |
|---|
| 78 |
SET(CMAKE_THREAD_LIBS_INIT "" CACHE INTERNAL "") |
|---|
| 79 |
ENDIF(CMAKE_SYSTEM MATCHES IRIX) |
|---|
| 80 |
|
|---|
| 81 |
OPTION(OSG_MAINTAINER "Enable OpenSceneGraph maintainer build methods, such as making svn branches, tags, updating ChangeLog." OFF) |
|---|
| 82 |
IF (OSG_MAINTAINER) |
|---|
| 83 |
|
|---|
| 84 |
SET(OPENSCENEGRAPH_SVN "trunk") |
|---|
| 85 |
#SET(OPENSCENEGRAPH_SVN "branches") |
|---|
| 86 |
SET(OPENSCENEGRAPH_BRANCH OpenSceneGraph-${OPENSCENEGRAPH_MAJOR_VERSION}.${OPENSCENEGRAPH_MINOR_VERSION}) |
|---|
| 87 |
|
|---|
| 88 |
# |
|---|
| 89 |
# Provide target for tagging a release |
|---|
| 90 |
# |
|---|
| 91 |
SET(SVNCOMMAND svn) |
|---|
| 92 |
SET(SVNTRUNKDIR http://www.openscenegraph.org/svn/osg/OpenSceneGraph/trunk) |
|---|
| 93 |
SET(SVNTAGDIR http://www.openscenegraph.org/svn/osg/OpenSceneGraph/tags) |
|---|
| 94 |
SET(SVNBRANCHDIR http://www.openscenegraph.org/svn/osg/OpenSceneGraph/branch) |
|---|
| 95 |
|
|---|
| 96 |
IF (OPENSCENEGRAPH_SVN STREQUAL "trunk") |
|---|
| 97 |
SET(SVNSOURCEDIR ${SVNTRUNKDIR}) |
|---|
| 98 |
ELSE (OPENSCENEGRAPH_SVN STREQUAL "trunk") |
|---|
| 99 |
SET(SVNSOURCEDIR ${SVNBRANCH_DIR}/${OPENSCENEGRAPH_BRANCH}) |
|---|
| 100 |
ENDIF(OPENSCENEGRAPH_SVN STREQUAL "trunk") |
|---|
| 101 |
|
|---|
| 102 |
|
|---|
| 103 |
IF (OPENSCENEGRAPH_RELEASE_CANDIDATE EQUAL 0) |
|---|
| 104 |
SET(RELEASE_NAME OpenSceneGraph-${OPENSCENEGRAPH_VERSION}) |
|---|
| 105 |
ELSE (OPENSCENEGRAPH_RELEASE_CANDIDATE EQUAL 0) |
|---|
| 106 |
SET(RELEASE_NAME OpenSceneGraph-${OPENSCENEGRAPH_VERSION}-rc${OPENSCENEGRAPH_RELEASE_CANDIDATE}) |
|---|
| 107 |
ENDIF(OPENSCENEGRAPH_RELEASE_CANDIDATE EQUAL 0) |
|---|
| 108 |
|
|---|
| 109 |
|
|---|
| 110 |
ADD_CUSTOM_TARGET(tag-test |
|---|
| 111 |
COMMAND echo ${SVNCOMMAND} copy ${SVNSOURCEDIR} ${SVNTAGDIR}/${RELEASE_NAME} -m "Release ${RELEASE_NAME}" |
|---|
| 112 |
) |
|---|
| 113 |
|
|---|
| 114 |
ADD_CUSTOM_TARGET(tag-run |
|---|
| 115 |
COMMAND ${SVNCOMMAND} copy ${SVNSOURCEDIR} ${SVNTAGDIR}/${RELEASE_NAME} -m "Release ${RELEASE_NAME}" |
|---|
| 116 |
) |
|---|
| 117 |
|
|---|
| 118 |
ADD_CUSTOM_TARGET(branch-test |
|---|
| 119 |
COMMAND echo ${SVNCOMMAND} copy ${SVNSOURCEDIR} ${SVNBRANCHDIR}/${OPENSCENEGRAPH_BRANCH} -m "Branch ${OPENSCENEGRAPH_BRANCH}" |
|---|
| 120 |
) |
|---|
| 121 |
|
|---|
| 122 |
ADD_CUSTOM_TARGET(branch-run |
|---|
| 123 |
COMMAND ${SVNCOMMAND} copy ${SVNSOURCEDIR} ${SVNBRANCHDIR}/${OPENSCENEGRAPH_BRANCH} -m "Branch ${OPENSCENEGRAPH_BRANCH}" |
|---|
| 124 |
) |
|---|
| 125 |
|
|---|
| 126 |
# |
|---|
| 127 |
# Provide target for generating ChangeLog |
|---|
| 128 |
# |
|---|
| 129 |
SET(GENERATELOGS svn2cl) |
|---|
| 130 |
|
|---|
| 131 |
ADD_CUSTOM_TARGET(ChangeLog |
|---|
| 132 |
COMMAND ${SVNCOMMAND} update |
|---|
| 133 |
COMMAND ${GENERATELOGS} |
|---|
| 134 |
) |
|---|
| 135 |
|
|---|
| 136 |
ENDIF(OSG_MAINTAINER) |
|---|
| 137 |
|
|---|
| 138 |
|
|---|
| 139 |
# Find OpenGL |
|---|
| 140 |
FIND_PACKAGE(OpenGL) |
|---|
| 141 |
|
|---|
| 142 |
IF(APPLE) |
|---|
| 143 |
FIND_LIBRARY(CARBON_LIBRARY Carbon) |
|---|
| 144 |
FIND_LIBRARY(COCOA_LIBRARY Cocoa) |
|---|
| 145 |
ENDIF(APPLE) |
|---|
| 146 |
|
|---|
| 147 |
IF(UNIX) |
|---|
| 148 |
# Not sure what this will do on Cygwin and Msys |
|---|
| 149 |
# Also, remember OS X X11 is a user installed option so it may not exist. |
|---|
| 150 |
FIND_PACKAGE(X11) |
|---|
| 151 |
# Some Unicies need explicit linkage to the Math library or the build fails. |
|---|
| 152 |
FIND_LIBRARY(MATH_LIBRARY m) |
|---|
| 153 |
ENDIF(UNIX) |
|---|
| 154 |
|
|---|
| 155 |
# Make the headers visible to everything |
|---|
| 156 |
IF(NOT ${PROJECT_BINARY_DIR} EQUAL ${PROJECT_SOURCE_DIR}) |
|---|
| 157 |
INCLUDE_DIRECTORIES(${PROJECT_BINARY_DIR}/include) |
|---|
| 158 |
ENDIF(NOT ${PROJECT_BINARY_DIR} EQUAL ${PROJECT_SOURCE_DIR}) |
|---|
| 159 |
|
|---|
| 160 |
INCLUDE_DIRECTORIES( |
|---|
| 161 |
${OpenSceneGraph_SOURCE_DIR}/include |
|---|
| 162 |
${OPENGL_INCLUDE_DIR} |
|---|
| 163 |
) |
|---|
| 164 |
|
|---|
| 165 |
# Common global definitions |
|---|
| 166 |
#ADD_DEFINITIONS(-D) |
|---|
| 167 |
# Platform specific definitions |
|---|
| 168 |
|
|---|
| 169 |
|
|---|
| 170 |
IF(WIN32) |
|---|
| 171 |
|
|---|
| 172 |
IF(MSVC) |
|---|
| 173 |
# This option is to enable the /MP switch for Visual Studio 2005 and above compilers |
|---|
| 174 |
OPTION(WIN32_USE_MP "Set to ON to build OpenSceneGraph with the /MP option (Visual Studio 2005 and above)." OFF) |
|---|
| 175 |
MARK_AS_ADVANCED(WIN32_USE_MP) |
|---|
| 176 |
IF(WIN32_USE_MP) |
|---|
| 177 |
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /MP") |
|---|
| 178 |
ENDIF(WIN32_USE_MP) |
|---|
| 179 |
|
|---|
| 180 |
# turn off various warnings |
|---|
| 181 |
# foreach(warning 4244 4251 4267 4275 4290 4786 4305 4996) |
|---|
| 182 |
# SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /wd${warning}") |
|---|
| 183 |
# endforeach(warning) |
|---|
| 184 |
|
|---|
| 185 |
# More MSVC specific compilation flags |
|---|
| 186 |
ADD_DEFINITIONS(-D_SCL_SECURE_NO_WARNINGS) |
|---|
| 187 |
ADD_DEFINITIONS(-D_CRT_SECURE_NO_DEPRECATE) |
|---|
| 188 |
ENDIF(MSVC) |
|---|
| 189 |
|
|---|
| 190 |
#needed for net plugin |
|---|
| 191 |
SET (OSG_SOCKET_LIBS wsock32) |
|---|
| 192 |
# Both Cygwin and Msys need -DNOMINMAX ??? |
|---|
| 193 |
IF(UNIX) |
|---|
| 194 |
ADD_DEFINITIONS(-DNOMINMAX) |
|---|
| 195 |
ENDIF(UNIX) |
|---|
| 196 |
######################################################################################################## |
|---|
| 197 |
# the following options are MSVC specific, |
|---|
| 198 |
# the first OSG_MSVC_VERSIONED_DLL activate a custom build-time layout that should allow to run examples and application |
|---|
| 199 |
# fron bin folder without requiring installation step. |
|---|
| 200 |
# it also prepend "osg${OPENSCENEGRAPH_SOVERSION}-" to only .dll files, leaving .lib files untouched in lib |
|---|
| 201 |
# it also use a hack to get rid of Debug and Release folder in MSVC projects |
|---|
| 202 |
# all the .dll and .pdb are in bin and all the .lib and .exp are in lib |
|---|
| 203 |
# |
|---|
| 204 |
# the second option disable incremental linking in debug build , that is enabled by default by CMake |
|---|
| 205 |
########################################################################################################## |
|---|
| 206 |
|
|---|
| 207 |
IF(MSVC) |
|---|
| 208 |
IF(${CMAKE_MAJOR_VERSION} EQUAL 2 AND ${CMAKE_MINOR_VERSION} EQUAL 4 AND ${CMAKE_PATCH_VERSION} LESS 7) |
|---|
| 209 |
MESSAGE("Warning: disabling versioned options 2.4.6 exibits inconsintencies in .pdb naming, at least under MSVC, suggested upgrading at least to 2.4.7") |
|---|
| 210 |
SET(OSG_MSVC_VERSIONED_DLL OFF) |
|---|
| 211 |
SET(OSG_MSVC_DEBUG_INCREMENTAL_LINK ON) |
|---|
| 212 |
ELSE(${CMAKE_MAJOR_VERSION} EQUAL 2 AND ${CMAKE_MINOR_VERSION} EQUAL 4 AND ${CMAKE_PATCH_VERSION} LESS 7) |
|---|
| 213 |
OPTION(OSG_MSVC_VERSIONED_DLL "Set to ON to build OpenSceneGraph with versioned dll names" ON) |
|---|
| 214 |
MARK_AS_ADVANCED(OSG_MSVC_VERSIONED_DLL) |
|---|
| 215 |
OPTION(OSG_MSVC_DEBUG_INCREMENTAL_LINK "Set to OFF to build OpenSceneGraph without incremental linking in debug (release is off by default)" ON) |
|---|
| 216 |
MARK_AS_ADVANCED(OSG_MSVC_DEBUG_INCREMENTAL_LINK) |
|---|
| 217 |
IF(NOT OSG_MSVC_DEBUG_INCREMENTAL_LINK) |
|---|
| 218 |
SET(CMAKE_MODULE_LINKER_FLAGS_DEBUG "/debug /INCREMENTAL:NO") |
|---|
| 219 |
SET(CMAKE_SHARED_LINKER_FLAGS_DEBUG "/debug /INCREMENTAL:NO") |
|---|
| 220 |
SET(CMAKE_EXE_LINKER_FLAGS_DEBUG "/debug /INCREMENTAL:NO") |
|---|
| 221 |
ENDIF(NOT OSG_MSVC_DEBUG_INCREMENTAL_LINK) |
|---|
| 222 |
ENDIF(${CMAKE_MAJOR_VERSION} EQUAL 2 AND ${CMAKE_MINOR_VERSION} EQUAL 4 AND ${CMAKE_PATCH_VERSION} LESS 7) |
|---|
| 223 |
ENDIF(MSVC) |
|---|
| 224 |
ENDIF(WIN32) |
|---|
| 225 |
|
|---|
| 226 |
######################################################################################################## |
|---|
| 227 |
##### these were settings located in SetupCommon.cmake used in Luigi builds.... find out what are useful |
|---|
| 228 |
######################################################################################################## |
|---|
| 229 |
#luigi#SET(CMAKE_VERBOSE_MAKEFILE TRUE) |
|---|
| 230 |
#luigi#SET(CMAKE_SKIP_RPATH TRUE) |
|---|
| 231 |
#luigi#SET(CMAKE_SKIP_RULE_DEPENDENCY TRUE) |
|---|
| 232 |
#luigi#IF(UNIX) |
|---|
| 233 |
#luigi# LIST_CONTAINS(contains "g++" ${CMAKE_CXX_COMPILER_LIST}) |
|---|
| 234 |
#luigi# IF (contains) |
|---|
| 235 |
#luigi# MESSAGE(${MY_MESSAGE_DEFAULT} "${CMAKE_CURRENT_LIST_FILE}:${CMAKE_CURRENT_LIST_LINE} setting CMAKE_CXX_COMPILER to g++") |
|---|
| 236 |
#luigi# SET(CMAKE_CXX_COMPILER "g++") |
|---|
| 237 |
#luigi# SET(CMAKE_CXX_COMPILER_LOADED 2) |
|---|
| 238 |
#luigi# SET(CMAKE_CXX_COMPILER_WORKS 2) |
|---|
| 239 |
#luigi# ENDIF (contains) |
|---|
| 240 |
#luigi# SET(CMAKE_CXX_FLAGS_RELEASE "-O2") |
|---|
| 241 |
#luigi# SET(CMAKE_CXX_FLAGS_DEBUG "-ggdb -gstabs") |
|---|
| 242 |
#luigi#ENDIF(UNIX) |
|---|
| 243 |
######################################################################################################## |
|---|
| 244 |
|
|---|
| 245 |
OPTION(OSG_USE_FLOAT_MATRIX "Set to ON to build OpenSceneGraph with float Matrix instead of double." OFF) |
|---|
| 246 |
MARK_AS_ADVANCED(OSG_USE_FLOAT_MATRIX) |
|---|
| 247 |
|
|---|
| 248 |
OPTION(OSG_USE_FLOAT_PLANE "Set to ON to build OpenSceneGraph with float Plane instead of double." OFF) |
|---|
| 249 |
MARK_AS_ADVANCED(OSG_USE_FLOAT_PLANE) |
|---|
| 250 |
|
|---|
| 251 |
OPTION(OSG_USE_FLOAT_BOUNDINGSPHERE "Set to ON to build OpenSceneGraph with float BoundingSphere instead of double." ON) |
|---|
| 252 |
MARK_AS_ADVANCED(OSG_USE_FLOAT_BOUNDINGSPHERE) |
|---|
| 253 |
|
|---|
| 254 |
OPTION(OSG_USE_FLOAT_BOUNDINGBOX "Set to ON to build OpenSceneGraph with float BoundingBox instead of double." ON) |
|---|
| 255 |
MARK_AS_ADVANCED(OSG_USE_FLOAT_BOUNDINGBOX) |
|---|
| 256 |
|
|---|
| 257 |
OPTION(OSG_USE_UTF8_FILENAME "Set to ON to use a UTF8 locale for filenames instead of the default locale." OFF) |
|---|
| 258 |
MARK_AS_ADVANCED(OSG_USE_UTF8_FILENAME) |
|---|
| 259 |
|
|---|
| 260 |
OPTION(OSG_DISABLE_MSVC_WARNINGS "Set to OFF to not disable MSVC warnings generated by OSG headers." ON) |
|---|
| 261 |
MARK_AS_ADVANCED(OSG_DISABLE_MSVC_WARNINGS) |
|---|
| 262 |
|
|---|
| 263 |
OPTION(OSG_USE_REF_PTR_IMPLICIT_OUTPUT_CONVERSION "Set to ON to use the ref_ptr<> T* operator() output conversion. " ON) |
|---|
| 264 |
|
|---|
| 265 |
################################################################################ |
|---|
| 266 |
# Set Config file |
|---|
| 267 |
|
|---|
| 268 |
SET(OPENSCENEGRAPH_CONFIG_HEADER "${PROJECT_BINARY_DIR}/include/osg/Config") |
|---|
| 269 |
CONFIGURE_FILE("${CMAKE_CURRENT_SOURCE_DIR}/src/osg/Config.in" |
|---|
| 270 |
"${OPENSCENEGRAPH_CONFIG_HEADER}") |
|---|
| 271 |
# INSTALL_FILES(/include/osg/ FILES "${OPENSCENEGRAPH_CONFIG_HEADER}") |
|---|
| 272 |
|
|---|
| 273 |
|
|---|
| 274 |
################################################################################ |
|---|
| 275 |
# 3rd Party Dependency Stuff |
|---|
| 276 |
IF(WIN32) |
|---|
| 277 |
INCLUDE(Find3rdPartyDependencies) |
|---|
| 278 |
ENDIF(WIN32) |
|---|
| 279 |
|
|---|
| 280 |
# Common to all platforms: |
|---|
| 281 |
FIND_PACKAGE(FreeType) |
|---|
| 282 |
FIND_PACKAGE(FLTK) |
|---|
| 283 |
FIND_PACKAGE(GLUT) |
|---|
| 284 |
FIND_PACKAGE(SDL) |
|---|
| 285 |
FIND_PACKAGE(FOX) |
|---|
| 286 |
FIND_PACKAGE(Inventor) |
|---|
| 287 |
FIND_PACKAGE(Jasper) |
|---|
| 288 |
FIND_PACKAGE(OpenEXR) |
|---|
| 289 |
FIND_PACKAGE(COLLADA) |
|---|
| 290 |
FIND_PACKAGE(Xine) |
|---|
| 291 |
FIND_PACKAGE(OpenVRML) |
|---|
| 292 |
FIND_PACKAGE(Performer) |
|---|
| 293 |
FIND_PACKAGE(ZLIB) |
|---|
| 294 |
FIND_PACKAGE(GDAL) |
|---|
| 295 |
FIND_PACKAGE(CURL) |
|---|
| 296 |
FIND_PACKAGE(ZLIB) |
|---|
| 297 |
FIND_PACKAGE(ITK) |
|---|
| 298 |
FIND_PACKAGE(LibVNCServer) |
|---|
| 299 |
FIND_PACKAGE(OurDCMTK) |
|---|
| 300 |
FIND_PACKAGE(XUL) |
|---|
| 301 |
|
|---|
| 302 |
SET(wxWidgets_USE_LIBS base core gl net) |
|---|
| 303 |
FIND_PACKAGE(wxWidgets) |
|---|
| 304 |
|
|---|
| 305 |
# To select a specific version of QT define DESIRED_QT_VERSION |
|---|
| 306 |
# via cmake -DDESIRED_QT_VERSION=4 |
|---|
| 307 |
IF (DESIRED_QT_VERSION) |
|---|
| 308 |
|
|---|
| 309 |
IF (DESIRED_QT_VERSION MATCHES 4) |
|---|
| 310 |
FIND_PACKAGE(Qt4) |
|---|
| 311 |
ELSE(DESIRED_QT_VERSION MATCHES 4) |
|---|
| 312 |
FIND_PACKAGE(Qt3) |
|---|
| 313 |
ENDIF(DESIRED_QT_VERSION MATCHES 4) |
|---|
| 314 |
|
|---|
| 315 |
ELSE(DESIRED_QT_VERSION) |
|---|
| 316 |
|
|---|
| 317 |
FIND_PACKAGE(Qt4) |
|---|
| 318 |
|
|---|
| 319 |
IF (NOT QT4_FOUND) |
|---|
| 320 |
FIND_PACKAGE(Qt3) |
|---|
| 321 |
ENDIF(NOT QT4_FOUND) |
|---|
| 322 |
|
|---|
| 323 |
ENDIF(DESIRED_QT_VERSION) |
|---|
| 324 |
|
|---|
| 325 |
#use pkg-config to find various modues |
|---|
| 326 |
INCLUDE(FindPkgConfig OPTIONAL) |
|---|
| 327 |
|
|---|
| 328 |
IF(PKG_CONFIG_FOUND) |
|---|
| 329 |
|
|---|
| 330 |
INCLUDE(FindPkgConfig) |
|---|
| 331 |
|
|---|
| 332 |
PKG_CHECK_MODULES(GTK gtk+-2.0) |
|---|
| 333 |
|
|---|
| 334 |
IF(WIN32) |
|---|
| 335 |
PKG_CHECK_MODULES(GTKGL gtkglext-win32-1.0) |
|---|
| 336 |
ELSE(WIN32) |
|---|
| 337 |
PKG_CHECK_MODULES(GTKGL gtkglext-x11-1.0) |
|---|
| 338 |
ENDIF(WIN32) |
|---|
| 339 |
|
|---|
| 340 |
PKG_CHECK_MODULES(RSVG librsvg-2.0) |
|---|
| 341 |
PKG_CHECK_MODULES(CAIRO cairo) |
|---|
| 342 |
PKG_CHECK_MODULES(POPPLER poppler-glib) |
|---|
| 343 |
|
|---|
| 344 |
ENDIF(PKG_CONFIG_FOUND) |
|---|
| 345 |
|
|---|
| 346 |
|
|---|
| 347 |
|
|---|
| 348 |
|
|---|
| 349 |
# |
|---|
| 350 |
# Test to determine if we want the "tripledot" form of the GLU tesselator callback. |
|---|
| 351 |
# |
|---|
| 352 |
IF(NOT DEFAULT_GLU_TESS_CALLBACK_TRIPLEDOT) |
|---|
| 353 |
IF(WIN32 OR CMAKE_SYSTEM_NAME MATCHES "Linux") |
|---|
| 354 |
|
|---|
| 355 |
# Skip the compile check for platforms that never need the variable |
|---|
| 356 |
# form. |
|---|
| 357 |
SET(DEFAULT_GLU_TESS_CALLBACK_TRIPLEDOT false) |
|---|
| 358 |
|
|---|
| 359 |
ELSE(WIN32 OR CMAKE_SYSTEM_NAME MATCHES "Linux") |
|---|
| 360 |
|
|---|
| 361 |
# For other platforms perform the check |
|---|
| 362 |
INCLUDE(CheckCXXSourceCompiles) |
|---|
| 363 |
SET(CMAKE_REQUIRED_DEFINITIONS -DGLU_TESS_CALLBACK_TRIPLEDOT) |
|---|
| 364 |
SET(CMAKE_REQUIRED_INCLUDES ${CMAKE_CURRENT_SOURCE_DIR}/include ${GLUT_INCLUDE_DIR} ${GL_INCLUDE_DIR}) |
|---|
| 365 |
SET(CMAKE_REQUIRED_LIBRARIES ${GLUT_LIBRARY} ${GL_LIBRARY}) |
|---|
| 366 |
CHECK_CXX_SOURCE_COMPILES( |
|---|
| 367 |
"#include <osg/GL> |
|---|
| 368 |
#include <osg/GLU> |
|---|
| 369 |
static void testcb(GLvoid *, void*) { } |
|---|
| 370 |
int main() { |
|---|
| 371 |
GLUtesselator *t = gluNewTess(); |
|---|
| 372 |
gluTessCallback(t, GLU_TESS_VERTEX_DATA, (GLU_TESS_CALLBACK) testcb); |
|---|
| 373 |
return 0; |
|---|
| 374 |
}" |
|---|
| 375 |
GLU_Tesselator_Needs_Variable_Parameter_Callback_Convention_Failure_Means_No) |
|---|
| 376 |
SET(DEFAULT_GLU_TESS_CALLBACK_TRIPLEDOT |
|---|
| 377 |
${GLU_Tesselator_Needs_Variable_Parameter_Callback_Convention_Failure_Means_No}) |
|---|
| 378 |
|
|---|
| 379 |
ENDIF(WIN32 OR CMAKE_SYSTEM_NAME MATCHES "Linux") |
|---|
| 380 |
ENDIF(NOT DEFAULT_GLU_TESS_CALLBACK_TRIPLEDOT) |
|---|
| 381 |
|
|---|
| 382 |
OPTION(OSG_GLU_TESS_CALLBACK_TRIPLEDOT "Set to ON to build with variable parameter (...) version of GLU tesselator callback" ${DEFAULT_GLU_TESS_CALLBACK_TRIPLEDOT}) |
|---|
| 383 |
IF(OSG_GLU_TESS_CALLBACK_TRIPLEDOT) |
|---|
| 384 |
ADD_DEFINITIONS(-DGLU_TESS_CALLBACK_TRIPLEDOT) |
|---|
| 385 |
ENDIF(OSG_GLU_TESS_CALLBACK_TRIPLEDOT) |
|---|
| 386 |
|
|---|
| 387 |
# Platform specific: |
|---|
| 388 |
# (We can approach this one of two ways. We can try to FIND everything |
|---|
| 389 |
# and simply check if we found the packages before actually building |
|---|
| 390 |
# or we can hardcode the cases. The advantage of the former is that |
|---|
| 391 |
# packages that are installed on platforms that don't require them |
|---|
| 392 |
# will still get built (presuming no compatibility issues). But this |
|---|
| 393 |
# also means modules that are redundant may get built. For example, |
|---|
| 394 |
# OS X doesn't need GIF, JPEG, PNG, TIFF, etc because it uses QuickTime. |
|---|
| 395 |
# Also, it will clutter the CMake menu with "NOT_FOUND". |
|---|
| 396 |
# The downside to the latter is that it is harder to build those |
|---|
| 397 |
# potentially redundant modules.) |
|---|
| 398 |
|
|---|
| 399 |
# Image readers/writers depend on 3rd party libraries except for OS X which |
|---|
| 400 |
# can use Quicktime. |
|---|
| 401 |
IF(NOT APPLE) |
|---|
| 402 |
FIND_PACKAGE(GIFLIB) |
|---|
| 403 |
FIND_PACKAGE(JPEG) |
|---|
| 404 |
FIND_PACKAGE(PNG) |
|---|
| 405 |
FIND_PACKAGE(TIFF) |
|---|
| 406 |
|
|---|
| 407 |
# QuickTime is required for OS X, but optional for Windows. |
|---|
| 408 |
IF(WIN32) |
|---|
| 409 |
FIND_PACKAGE(QuickTime) |
|---|
| 410 |
ENDIF(WIN32) |
|---|
| 411 |
|
|---|
| 412 |
ELSE(NOT APPLE) |
|---|
| 413 |
FIND_PACKAGE(QuickTime) |
|---|
| 414 |
ENDIF(NOT APPLE) |
|---|
| 415 |
|
|---|
| 416 |
################################################################################ |
|---|
| 417 |
# Create bin and lib directories if required |
|---|
| 418 |
|
|---|
| 419 |
IF("${CMAKE_SOURCE_DIR}" STREQUAL "${CMAKE_BINARY_DIR}") |
|---|
| 420 |
FILE(MAKE_DIRECTORY ${CMAKE_BINARY_DIR}/bin ${CMAKE_BINARY_DIR}/lib ${CMAKE_BINARY_DIR}/lib/${OSG_PLUGINS}) |
|---|
| 421 |
ENDIF("${CMAKE_SOURCE_DIR}" STREQUAL "${CMAKE_BINARY_DIR}") |
|---|
| 422 |
|
|---|
| 423 |
|
|---|
| 424 |
################################################################################ |
|---|
| 425 |
# Installation stuff |
|---|
| 426 |
|
|---|
| 427 |
SET(CMAKE_DEBUG_POSTFIX "d" CACHE STRING "add a postfix, usually d on windows") |
|---|
| 428 |
ADD_DEFINITIONS(-DOSG_DEBUG_POSTFIX=${CMAKE_DEBUG_POSTFIX}) |
|---|
| 429 |
|
|---|
| 430 |
IF(UNIX AND NOT WIN32) |
|---|
| 431 |
IF(CMAKE_BUILD_TYPE STREQUAL "Debug") |
|---|
| 432 |
ADD_DEFINITIONS("-D_DEBUG") |
|---|
| 433 |
ENDIF(CMAKE_BUILD_TYPE STREQUAL "Debug") |
|---|
| 434 |
ENDIF(UNIX AND NOT WIN32) |
|---|
| 435 |
|
|---|
| 436 |
IF(CYGWIN) |
|---|
| 437 |
IF(CMAKE_BUILD_TYPE STREQUAL "Debug") |
|---|
| 438 |
ADD_DEFINITIONS("-D_DEBUG") |
|---|
| 439 |
ENDIF(CMAKE_BUILD_TYPE STREQUAL "Debug") |
|---|
| 440 |
ENDIF(CYGWIN) |
|---|
| 441 |
|
|---|
| 442 |
IF(UNIX AND NOT WIN32 AND NOT APPLE) |
|---|
| 443 |
IF(CMAKE_SIZEOF_VOID_P MATCHES "8") |
|---|
| 444 |
SET(LIB_POSTFIX "64" CACHE STRING "suffix for 32/64 dir placement") |
|---|
| 445 |
MARK_AS_ADVANCED(LIB_POSTFIX) |
|---|
| 446 |
ENDIF(CMAKE_SIZEOF_VOID_P MATCHES "8") |
|---|
| 447 |
ENDIF(UNIX AND NOT WIN32 AND NOT APPLE) |
|---|
| 448 |
IF(NOT DEFINED LIB_POSTFIX) |
|---|
| 449 |
SET(LIB_POSTFIX "") |
|---|
| 450 |
ENDIF(NOT DEFINED LIB_POSTFIX) |
|---|
| 451 |
|
|---|
| 452 |
# Here we apparantly do some funky stuff with making the bin/ and lib/ |
|---|
| 453 |
# folders which is probably needed to work around a very old CMake bug? |
|---|
| 454 |
|
|---|
| 455 |
#SET(OUTPUT_BINDIR ${PROJECT_BINARY_DIR}/bin/${CMAKE_SYSTEM_NAME}) |
|---|
| 456 |
SET(OUTPUT_BINDIR ${PROJECT_BINARY_DIR}/bin) |
|---|
| 457 |
MAKE_DIRECTORY(${OUTPUT_BINDIR}) |
|---|
| 458 |
IF(MSVC AND NOT MSVC_IDE) |
|---|
| 459 |
MAKE_DIRECTORY(${OUTPUT_BINDIR}/${OSG_PLUGINS}) |
|---|
| 460 |
ENDIF(MSVC AND NOT MSVC_IDE) |
|---|
| 461 |
|
|---|
| 462 |
#SET(OUTPUT_LIBDIR ${PROJECT_BINARY_DIR}/lib/${CMAKE_SYSTEM_NAME}) |
|---|
| 463 |
SET(OUTPUT_LIBDIR ${PROJECT_BINARY_DIR}/lib) |
|---|
| 464 |
MAKE_DIRECTORY(${OUTPUT_LIBDIR}) |
|---|
| 465 |
IF(NOT MSVC) |
|---|
| 466 |
MAKE_DIRECTORY(${OUTPUT_LIBDIR}/${OSG_PLUGINS}) |
|---|
| 467 |
ENDIF(NOT MSVC) |
|---|
| 468 |
|
|---|
| 469 |
# On CMake 2.4.x use EXECUTABLE_OUTPUT_PATH and LIBRARY_OUTPUT_PATH and later |
|---|
| 470 |
# we work around the DLL placement by use of the PREFIX target property hack |
|---|
| 471 |
# |
|---|
| 472 |
# On CMake 2.6.x use the newly minted CMAKE_LIBRARY_OUTPUT_DIRECTORY, |
|---|
| 473 |
# CMAKE_ARCHIVE_OUTPUT_DIRECTORY & CMAKE_RUNTIME_OUTPUT_DIRECTORY |
|---|
| 474 |
|
|---|
| 475 |
IF(CMAKE_MAJOR_VERSION EQUAL 2 AND CMAKE_MINOR_VERSION GREATER 4) |
|---|
| 476 |
# If CMake >= 2.6.0 |
|---|
| 477 |
SET(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${OUTPUT_LIBDIR}) |
|---|
| 478 |
SET(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${OUTPUT_BINDIR}) |
|---|
| 479 |
IF(WIN32) |
|---|
| 480 |
SET(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${OUTPUT_BINDIR}) |
|---|
| 481 |
ELSE(WIN32) |
|---|
| 482 |
SET(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${OUTPUT_LIBDIR}) |
|---|
| 483 |
ENDIF(WIN32) |
|---|
| 484 |
ELSE(CMAKE_MAJOR_VERSION EQUAL 2 AND CMAKE_MINOR_VERSION GREATER 4) |
|---|
| 485 |
SET(EXECUTABLE_OUTPUT_PATH ${OUTPUT_BINDIR}) |
|---|
| 486 |
SET(LIBRARY_OUTPUT_PATH ${OUTPUT_LIBDIR}) |
|---|
| 487 |
ENDIF(CMAKE_MAJOR_VERSION EQUAL 2 AND CMAKE_MINOR_VERSION GREATER 4) |
|---|
| 488 |
|
|---|
| 489 |
#SET(INSTALL_BINDIR OpenSceneGraph/bin) |
|---|
| 490 |
#SET(INSTALL_INCDIR OpenSceneGraph/include) |
|---|
| 491 |
#SET(INSTALL_LIBDIR OpenSceneGraph/lib) |
|---|
| 492 |
#SET(INSTALL_DOCDIR OpenSceneGraph/doc) |
|---|
| 493 |
|
|---|
| 494 |
################################################################################ |
|---|
| 495 |
# User Options |
|---|
| 496 |
|
|---|
| 497 |
|
|---|
| 498 |
# Expose CMAKE_INCLUDE_PATH and CMAKE_LIBARY_PATH to the GUI so users |
|---|
| 499 |
# may set these values without needing to manipulate the environment. |
|---|
| 500 |
SET(CMAKE_INCLUDE_PATH ${CMAKE_INCLUDE_PATH} CACHE STRING "You may add additional search paths here. Use ; to separate multiple paths.") |
|---|
| 501 |
SET(CMAKE_LIBRARY_PATH ${CMAKE_LIBRARY_PATH} CACHE STRING "You may add additional search paths here. Use ; to separate multiple paths.") |
|---|
| 502 |
# We are proposing that a new variable called CMAKE_PREFIX_PATH be introduced |
|---|
| 503 |
# to CMake to compliment CMAKE_INCLUDE_PATH and CMAKE_LIBRARY_PATH. |
|---|
| 504 |
# A formal feature request has been submited to CMake, Bug #4947. |
|---|
| 505 |
# It is intended for those users who have common prefixes for their INCLUDE |
|---|
| 506 |
# and LIBRARY locations. So if users have headers in /usr/local/include |
|---|
| 507 |
# and libraries in /usr/local/lib, the common prefix is /usr/local. |
|---|
| 508 |
# It should also cover the case where headers and libraries are |
|---|
| 509 |
# in the same directory. |
|---|
| 510 |
# Our proposal expects that FIND_* commands will automatically search for |
|---|
| 511 |
# CMAKE_PREFIX_PATH right after CMAKE_INCLUDE_PATH or CMAKE_LIBRARY_PATH. |
|---|
| 512 |
# Obviously, since CMake does not currently support this, we must write |
|---|
| 513 |
# our Find*.cmake modules to explicitly support this. Otherwise, this variable |
|---|
| 514 |
# will have no impact. |
|---|
| 515 |
# This is unofficial so this may be removed or changed at anytime. |
|---|
| 516 |
SET(CMAKE_PREFIX_PATH ${CMAKE_PREFIX_PATH} CACHE STRING "(EXPERIMENTAL) You may add additional search paths here. Use ; to separate multiple paths.") |
|---|
| 517 |
|
|---|
| 518 |
# This is for an advanced option to give aggressive warnings |
|---|
| 519 |
# under different compilers. If yours is not implemented, this option |
|---|
| 520 |
# will not be made available. |
|---|
| 521 |
IF(CMAKE_COMPILER_IS_GNUCXX) |
|---|
| 522 |
# To be complete, we might also do GNUCC flags, |
|---|
| 523 |
# but everything here is C++ code. |
|---|
| 524 |
# -Wshadow and -Woverloaded-virtual are also interesting flags, but OSG |
|---|
| 525 |
# returns too many hits. |
|---|
| 526 |
# FYI, if we do implement GNUCC, then -Wmissing-prototypes in another |
|---|
| 527 |
# interesting C-specific flag. |
|---|
| 528 |
# Also, there is a bug in gcc 4.0. Under C++, -pedantic will create |
|---|
| 529 |
# errors instead of warnings for certain issues, including superfluous |
|---|
| 530 |
# semicolons and commas, and the use of long long. -fpermissive seems |
|---|
| 531 |
# to be the workaround. |
|---|
| 532 |
SET(OSG_AGGRESSIVE_WARNING_FLAGS "-Wall -Wparentheses -Wformat=2 -Wno-long-long -Wno-import -pedantic -Wreturn-type -Wmissing-braces -Wunknown-pragmas -Wunused -fpermissive") |
|---|
| 533 |
ELSE(CMAKE_COMPILER_IS_GNUCXX) |
|---|
| 534 |
IF(MSVC) |
|---|
| 535 |
# FIXME: What are good aggressive warning flags for Visual Studio? |
|---|
| 536 |
# And do we need to further subcase this for different versions of VS? |
|---|
| 537 |
# CMake variables: MSVC60, MSVC70, MSVC71, MSVC80, CMAKE_COMPILER_2005 |
|---|
| 538 |
SET(OSG_AGGRESSIVE_WARNING_FLAGS "/W4 /wd4706 /wd4127") |
|---|
| 539 |
|
|---|
| 540 |
|
|---|
| 541 |
ELSE(MSVC) |
|---|
| 542 |
# CMake lacks an elseif, so other non-gcc, non-VS compilers need |
|---|
| 543 |
# to be listed below. If unhandled, OSG_AGGRESSIVE_WARNING_FLAGS should |
|---|
| 544 |
# remain unset. |
|---|
| 545 |
ENDIF(MSVC) |
|---|
| 546 |
ENDIF(CMAKE_COMPILER_IS_GNUCXX) |
|---|
| 547 |
|
|---|
| 548 |
# This part is for the CMake menu option to toggle the warnings on/off. |
|---|
| 549 |
# This will only be made available if we set values for OSG_AGGRESSIVE_WARNING_FLAGS. |
|---|
| 550 |
IF(OSG_AGGRESSIVE_WARNING_FLAGS) |
|---|
| 551 |
OPTION(OSG_USE_AGGRESSIVE_WARNINGS "Enable to activate aggressive warnings" ON) |
|---|
| 552 |
MARK_AS_ADVANCED(OSG_USE_AGGRESSIVE_WARNINGS) |
|---|
| 553 |
|
|---|
| 554 |
IF(OSG_USE_AGGRESSIVE_WARNINGS) |
|---|
| 555 |
# Add flags defined by OSG_AGGRESSIVE_WARNING_FLAGS if they aren't already there |
|---|
| 556 |
FOREACH(flag ${OSG_AGGRESSIVE_WARNING_FLAGS}) |
|---|
| 557 |
IF(NOT CMAKE_CXX_FLAGS MATCHES "${flag}") |
|---|
| 558 |
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${flag}") |
|---|
| 559 |
ENDIF(NOT CMAKE_CXX_FLAGS MATCHES "${flag}") |
|---|
| 560 |
ENDFOREACH(flag) |
|---|
| 561 |
ELSE(OSG_USE_AGGRESSIVE_WARNINGS) |
|---|
| 562 |
# Remove all flags considered aggresive |
|---|
| 563 |
FOREACH(flag ${OSG_AGGRESSIVE_WARNING_FLAGS}) |
|---|
| 564 |
STRING(REGEX REPLACE "${flag}" "" CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS}) |
|---|
| 565 |
ENDFOREACH(flag) |
|---|
| 566 |
ENDIF(OSG_USE_AGGRESSIVE_WARNINGS) |
|---|
| 567 |
ENDIF(OSG_AGGRESSIVE_WARNING_FLAGS) |
|---|
| 568 |
|
|---|
| 569 |
|
|---|
| 570 |
# Dynamic vs Static Linking |
|---|
| 571 |
OPTION(DYNAMIC_OPENSCENEGRAPH "Set to ON to build OpenSceneGraph for dynamic linking. Use OFF for static." ON) |
|---|
| 572 |
IF (DYNAMIC_OPENSCENEGRAPH) |
|---|
| 573 |
SET(OPENSCENEGRAPH_USER_DEFINED_DYNAMIC_OR_STATIC "SHARED") |
|---|
| 574 |
ELSE (DYNAMIC_OPENSCENEGRAPH) |
|---|
| 575 |
SET(OPENSCENEGRAPH_USER_DEFINED_DYNAMIC_OR_STATIC "STATIC") |
|---|
| 576 |
ENDIF(DYNAMIC_OPENSCENEGRAPH) |
|---|
| 577 |
|
|---|
| 578 |
INCLUDE(OsgMacroUtils) |
|---|
| 579 |
# OSG Core |
|---|
| 580 |
ADD_SUBDIRECTORY(src) |
|---|
| 581 |
|
|---|
| 582 |
# OSG Applications |
|---|
| 583 |
OPTION(BUILD_OSG_APPLICATIONS "Enable to build OSG Applications (e.g. osgviewer)" ON) |
|---|
| 584 |
IF (BUILD_OSG_APPLICATIONS) |
|---|
| 585 |
ADD_SUBDIRECTORY(applications) |
|---|
| 586 |
ENDIF(BUILD_OSG_APPLICATIONS) |
|---|
| 587 |
|
|---|
| 588 |
# OSG Examples |
|---|
| 589 |
OPTION(BUILD_OSG_EXAMPLES "Enable to build OSG Examples" OFF) |
|---|
| 590 |
IF (BUILD_OSG_EXAMPLES) |
|---|
| 591 |
ADD_SUBDIRECTORY(examples) |
|---|
| 592 |
ENDIF(BUILD_OSG_EXAMPLES) |
|---|
| 593 |
|
|---|
| 594 |
# Set defaults for Universal Binaries. We want 32-bit Intel/PPC on 10.4 |
|---|
| 595 |
# and 32/64-bit Intel/PPC on >= 10.5. Anything <= 10.3 doesn't support. |
|---|
| 596 |
IF(APPLE) |
|---|
| 597 |
# These are just defaults/recommendations, but how we want to build |
|---|
| 598 |
# out of the box. But the user needs to be able to change these options. |
|---|
| 599 |
# So we must only set the values the first time CMake is run, or we |
|---|
| 600 |
# will overwrite any changes the user sets. |
|---|
| 601 |
# FORCE is used because the options are not reflected in the UI otherwise. |
|---|
| 602 |
# Seems like a good place to add version specific compiler flags too. |
|---|
| 603 |
IF(NOT OSG_CONFIG_HAS_BEEN_RUN_BEFORE) |
|---|
| 604 |
# This is really fragile, but CMake doesn't provide the OS system |
|---|
| 605 |
# version information we need. (Darwin versions can be changed |
|---|
| 606 |
# independently of OS X versions.) |
|---|
| 607 |
# It does look like CMake handles the CMAKE_OSX_SYSROOT automatically. |
|---|
| 608 |
IF(EXISTS /Developer/SDKs/MacOSX10.5.sdk) |
|---|
| 609 |
# 64-bit compiles are not supported with Carbon. We should enable |
|---|
| 610 |
# 64-bit compilation by default once osgviewer has been |
|---|
| 611 |
# rewritten with Cocoa. |
|---|
| 612 |
#SET(CMAKE_OSX_ARCHITECTURES "ppc;i386;ppc64;x86_64" CACHE STRING "Build architectures for OSX" FORCE) |
|---|
| 613 |
SET(CMAKE_OSX_ARCHITECTURES "ppc;i386" CACHE STRING "Build architectures for OSX" FORCE) |
|---|
| 614 |
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mmacosx-version-min=10.5 -ftree-vectorize -fvisibility-inlines-hidden" CACHE STRING "Flags used by the compiler during all build types." FORCE) |
|---|
| 615 |
ELSE(EXISTS /Developer/SDKs/MacOSX10.5.sdk) |
|---|
| 616 |
IF(EXISTS /Developer/SDKs/MacOSX10.4u.sdk) |
|---|
| 617 |
SET(CMAKE_OSX_ARCHITECTURES "ppc;i386" CACHE STRING "Build architectures for OSX" FORCE) |
|---|
| 618 |
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mmacosx-version-min=10.4 -ftree-vectorize -fvisibility-inlines-hidden" CACHE STRING "Flags used by the compiler during all build types." FORCE) |
|---|
| 619 |
ELSE(EXISTS /Developer/SDKs/MacOSX10.4u.sdk) |
|---|
| 620 |
# No Universal Binary support |
|---|
| 621 |
# Should break down further to set the -mmacosx-version-min, |
|---|
| 622 |
# but the SDK detection is too unreliable here. |
|---|
| 623 |
ENDIF(EXISTS /Developer/SDKs/MacOSX10.4u.sdk) |
|---|
| 624 |
ENDIF(EXISTS /Developer/SDKs/MacOSX10.5.sdk) |
|---|
| 625 |
ENDIF(NOT OSG_CONFIG_HAS_BEEN_RUN_BEFORE) |
|---|
| 626 |
|
|---|
| 627 |
OPTION(OSG_BUILD_APPLICATION_BUNDLES "Enable the building of applications and examples as OSX Bundles" OFF) |
|---|
| 628 |
|
|---|
| 629 |
ENDIF(APPLE) |
|---|
| 630 |
|
|---|
| 631 |
|
|---|
| 632 |
# |
|---|
| 633 |
# Provide target for generating wrappers |
|---|
| 634 |
# |
|---|
| 635 |
SET(GENWRAPPER genwrapper) |
|---|
| 636 |
|
|---|
| 637 |
ADD_CUSTOM_TARGET(wrappers |
|---|
| 638 |
COMMAND ${GENWRAPPER} -c ${OpenSceneGraph_SOURCE_DIR}/src/osgWrappers/genwrapper.conf -t ${OpenSceneGraph_SOURCE_DIR}/src/osgWrappers/Doxyfile.template -d ${OpenSceneGraph_SOURCE_DIR} | doxygen - |
|---|
| 639 |
COMMAND ${GENWRAPPER} -c ${OpenSceneGraph_SOURCE_DIR}/src/osgWrappers/genwrapper.conf -l ${OpenSceneGraph_SOURCE_DIR} |
|---|
| 640 |
) |
|---|
| 641 |
|
|---|
| 642 |
# For Doxygen |
|---|
| 643 |
INCLUDE(${CMAKE_ROOT}/Modules/Documentation.cmake OPTIONAL) |
|---|
| 644 |
OPTION(BUILD_DOCUMENTATION "Build OpenSceneGraph reference documentation using doxygen (use: make DoxygenDoc)" OFF) |
|---|
| 645 |
MARK_AS_ADVANCED(CLEAR BUILD_DOCUMENTATION) |
|---|
| 646 |
# To build the documention, you will have to enable it |
|---|
| 647 |
# and then do the equivalent of "make DoxygenDoc". |
|---|
| 648 |
IF(BUILD_DOCUMENTATION) |
|---|
| 649 |
|
|---|
| 650 |
OPTION(BUILD_REF_DOCS_SEARCHENGINE "Enable doxygen's search engine (requires that documentation to be installed on a php enabled web server)" OFF) |
|---|
| 651 |
IF(BUILD_REF_DOCS_SEARCHENGINE) |
|---|
| 652 |
SET(SEARCHENGINE YES) |
|---|
| 653 |
ELSE(BUILD_REF_DOCS_SEARCHENGINE) |
|---|
| 654 |
SET(SEARCHENGINE NO) |
|---|
| 655 |
ENDIF(BUILD_REF_DOCS_SEARCHENGINE) |
|---|
| 656 |
|
|---|
| 657 |
OPTION(BUILD_REF_DOCS_TAGFILE "Generate a tag file named osg.tag on the documentation web server" OFF) |
|---|
| 658 |
IF(BUILD_REF_DOCS_TAGFILE) |
|---|
| 659 |
SET(GENERATE_TAGFILE "${OpenSceneGraph_BINARY_DIR}/doc/OpenSceneGraphReferenceDocs/osg.tag") |
|---|
| 660 |
ELSE(BUILD_REF_DOCS_TAGFILE) |
|---|
| 661 |
SET(GENERATE_TAGFILE "") |
|---|
| 662 |
ENDIF(BUILD_REF_DOCS_TAGFILE) |
|---|
| 663 |
|
|---|
| 664 |
IF(DOT) |
|---|
| 665 |
SET(HAVE_DOT YES) |
|---|
| 666 |
ELSE(DOT) |
|---|
| 667 |
SET(HAVE_DOT NO) |
|---|
| 668 |
ENDIF(DOT) |
|---|
| 669 |
|
|---|
| 670 |
# If html help generation was requested. DOCUMENTATION_HTML_HELP is defined by Documentation.cmake |
|---|
| 671 |
SET(GENERATE_HTMLHELP "NO") |
|---|
| 672 |
IF(DOCUMENTATION_HTML_HELP) |
|---|
| 673 |
# on windows Documentation.cmake finds the html help workshop fi it exists. On u*ix we might have it with wine but no way to point it out |
|---|
| 674 |
IF(NOT WIN32) |
|---|
| 675 |
SET(HTML_HELP_COMPILER "" CACHE FILEPATH "Enter location of the HTML help compiler to let doxygen compile html") |
|---|
| 676 |
MARK_AS_ADVANCED(HTML_HELP_COMPILER) |
|---|
| 677 |
ENDIF(NOT WIN32) |
|---|
| 678 |
# this var sets a proper value in .doxygen files when coniguring them below |
|---|
| 679 |
SET(GENERATE_HTMLHELP "YES") |
|---|
| 680 |
endif(DOCUMENTATION_HTML_HELP) |
|---|
| 681 |
|
|---|
| 682 |
# This processes our doxyfile.cmake and substitutes paths to generate |
|---|
| 683 |
# a final Doxyfile |
|---|
| 684 |
CONFIGURE_FILE(${PROJECT_SOURCE_DIR}/doc/Doxyfiles/doxyfile.cmake |
|---|
| 685 |
${PROJECT_BINARY_DIR}/doc/openscenegraph.doxyfile |
|---|
| 686 |
) |
|---|
| 687 |
# copy the osg logo to documentations target folder |
|---|
| 688 |
CONFIGURE_FILE(${PROJECT_SOURCE_DIR}/PlatformSpecifics/Windows/icons/src/osg32-32.png |
|---|
| 689 |
${PROJECT_BINARY_DIR}/doc/OpenSceneGraphReferenceDocs/osg32-32.png COPYONLY |
|---|
| 690 |
) |
|---|
| 691 |
#INSTALL(FILES ${PROJECT_BINARY_DIR}/doc/${PROJECT_NAME}ReferenceDocs-${OPENSCENEGRAPH_VERSION}.chm DESTINATION doc OPTIONAL COMPONENT openscenegraph-doc) |
|---|
| 692 |
INSTALL(DIRECTORY ${PROJECT_BINARY_DIR}/doc/OpenSceneGraphReferenceDocs DESTINATION doc COMPONENT openscenegraph-doc) |
|---|
| 693 |
|
|---|
| 694 |
# now set up openthreads documentation generation |
|---|
| 695 |
IF(BUILD_REF_DOCS_TAGFILE) |
|---|
| 696 |
SET(GENERATE_TAGFILE "${OpenSceneGraph_BINARY_DIR}/doc/OpenThreadsReferenceDocs/ot.tag") |
|---|
| 697 |
ENDIF(BUILD_REF_DOCS_TAGFILE) |
|---|
| 698 |
|
|---|
| 699 |
# This processes our openthreads.doxyfile.cmake and generate a final doxyfile |
|---|
| 700 |
CONFIGURE_FILE(${PROJECT_SOURCE_DIR}/doc/Doxyfiles/openthreads.doxyfile.cmake |
|---|
| 701 |
${PROJECT_BINARY_DIR}/doc/openthreads.doxyfile |
|---|
| 702 |
) |
|---|
| 703 |
# copy the osg logo to documentations target folder |
|---|
| 704 |
CONFIGURE_FILE(${PROJECT_SOURCE_DIR}/PlatformSpecifics/Windows/icons/src/osg32-32.png |
|---|
| 705 |
${PROJECT_BINARY_DIR}/doc/OpenThreadsReferenceDocs/osg32-32.png COPYONLY |
|---|
| 706 |
) |
|---|
| 707 |
#INSTALL(FILES ${PROJECT_BINARY_DIR}/doc/${PROJECT_NAME}ReferenceDocs-${OPENSCENEGRAPH_VERSION}.chm DESTINATION doc OPTIONAL COMPONENT openscenegraph-doc) |
|---|
| 708 |
INSTALL(DIRECTORY ${PROJECT_BINARY_DIR}/doc/OpenThreadsReferenceDocs DESTINATION doc COMPONENT openthreads-doc) |
|---|
| 709 |
|
|---|
| 710 |
# Process our other doxyfiles but don't create targets for these |
|---|
| 711 |
CONFIGURE_FILE(${PROJECT_SOURCE_DIR}/doc/Doxyfiles/all_Doxyfile |
|---|
| 712 |
${PROJECT_BINARY_DIR}/doc/all_Doxyfile) |
|---|
| 713 |
CONFIGURE_FILE(${PROJECT_SOURCE_DIR}/doc/Doxyfiles/auto_Doxyfile |
|---|
| 714 |
${PROJECT_BINARY_DIR}/doc/auto_Doxyfile) |
|---|
| 715 |
CONFIGURE_FILE(${PROJECT_SOURCE_DIR}/doc/Doxyfiles/core_Doxyfile |
|---|
| 716 |
${PROJECT_BINARY_DIR}/doc/core_Doxyfile) |
|---|
| 717 |
|
|---|
| 718 |
# This creates a new target to build documentation. |
|---|
| 719 |
# It runs ${DOXYGEN} which is the full path and executable to |
|---|
| 720 |
# Doxygen on your system, set by the FindDoxygen.cmake module |
|---|
| 721 |
# (called by FindDocumentation.cmake). |
|---|
| 722 |
# It runs the final generated Doxyfile against it. |
|---|
| 723 |
# The DOT_PATH is substituted into the Doxyfile. |
|---|
| 724 |
ADD_CUSTOM_TARGET(doc_openscenegraph ${DOXYGEN} |
|---|
| 725 |
${PROJECT_BINARY_DIR}/doc/openscenegraph.doxyfile |
|---|
| 726 |
) |
|---|
| 727 |
ADD_CUSTOM_TARGET(doc_openthreads ${DOXYGEN} |
|---|
| 728 |
${PROJECT_BINARY_DIR}/doc/openthreads.doxyfile |
|---|
| 729 |
) |
|---|
| 730 |
ENDIF(BUILD_DOCUMENTATION) |
|---|
| 731 |
|
|---|
| 732 |
OPTION(BUILD_DASHBOARD_REPORTS "Set to ON to activate reporting of OpenSceneGraph builds here http://www.cdash.org/CDashPublic/index.php?project=OpenSceneGraph" OFF) |
|---|
| 733 |
IF(BUILD_DASHBOARD_REPORTS) |
|---|
| 734 |
# The following are required to uses Dart and the Cdash dashboard |
|---|
| 735 |
# viewable here : http://www.cdash.org/CDashPublic/index.php?project=OpenSceneGraph |
|---|
| 736 |
INCLUDE(Dart) |
|---|
| 737 |
ENDIF(BUILD_DASHBOARD_REPORTS) |
|---|
| 738 |
|
|---|
| 739 |
# This needs to be run very last so other parts of the scripts can take |
|---|
| 740 |
# advantage of this. |
|---|
| 741 |
IF(NOT OSG_CONFIG_HAS_BEEN_RUN_BEFORE) |
|---|
| 742 |
SET(OSG_CONFIG_HAS_BEEN_RUN_BEFORE 1 CACHE INTERNAL "Flag to track whether this is the first time running CMake or if CMake has been configured before") |
|---|
| 743 |
ENDIF(NOT OSG_CONFIG_HAS_BEEN_RUN_BEFORE) |
|---|
| 744 |
|
|---|
| 745 |
# CPack is only available for cmake version >= 2.6.0 |
|---|
| 746 |
IF(CMAKE_MAJOR_VERSION EQUAL 2 AND CMAKE_MINOR_VERSION GREATER 4) |
|---|
| 747 |
# If CMake >= 2.6.0 |
|---|
| 748 |
OPTION(BUILD_OSG_PACKAGES "Set to ON to generate CPack configuration files and default packaging targets" OFF) |
|---|
| 749 |
IF(BUILD_OSG_PACKAGES) |
|---|
| 750 |
INCLUDE(OsgCPack) |
|---|
| 751 |
ENDIF(BUILD_OSG_PACKAGES) |
|---|
| 752 |
ENDIF(CMAKE_MAJOR_VERSION EQUAL 2 AND CMAKE_MINOR_VERSION GREATER 4) |
|---|
| 753 |
|
|---|
| 754 |
#----------------------------------------------------------------------------- |
|---|
| 755 |
### uninstall target |
|---|
| 756 |
#----------------------------------------------------------------------------- |
|---|
| 757 |
CONFIGURE_FILE( |
|---|
| 758 |
"${CMAKE_CURRENT_SOURCE_DIR}/CMakeModules/cmake_uninstall.cmake.in" |
|---|
| 759 |
"${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake" |
|---|
| 760 |
IMMEDIATE @ONLY) |
|---|
| 761 |
ADD_CUSTOM_TARGET(uninstall |
|---|
| 762 |
"${CMAKE_COMMAND}" -P "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake") |
|---|