2007-04-12 18:14:10 +08:00
IF ( WIN32 )
CMAKE_MINIMUM_REQUIRED ( VERSION 2.4.6 FATAL_ERROR )
ELSE ( WIN32 )
IF ( APPLE )
2008-06-26 21:09:54 +08:00
CMAKE_MINIMUM_REQUIRED ( VERSION 2.6.0 FATAL_ERROR )
2007-04-25 17:14:01 +08:00
IF ( ${ CMAKE_MAJOR_VERSION } EQUAL 2 AND ${ CMAKE_MINOR_VERSION } EQUAL 4 AND ${ CMAKE_PATCH_VERSION } LESS 7 )
MESSAGE ( "Warning: A critical CMake bug exists in 2.4.6 and below. Trying to build Universal Binaries will result in a compile error that seems unrelated. Either avoid building Universal Binaries by changing the CMAKE_OSX_ARCHITECTURES field to list only your architecture, or upgrade to the current CVS version of CMake or a newer stable version if it exists." )
ENDIF ( ${ CMAKE_MAJOR_VERSION } EQUAL 2 AND ${ CMAKE_MINOR_VERSION } EQUAL 4 AND ${ CMAKE_PATCH_VERSION } LESS 7 )
2007-04-12 18:14:10 +08:00
ELSE ( APPLE )
CMAKE_MINIMUM_REQUIRED ( VERSION 2.4.0 FATAL_ERROR )
ENDIF ( APPLE )
ENDIF ( WIN32 )
2008-05-27 06:36:58 +08:00
if ( COMMAND cmake_policy )
2008-05-31 00:53:45 +08:00
# Works around warnings libraries linked against that don't
# have absolute paths (e.g. -lpthreads)
2008-05-27 06:36:58 +08:00
cmake_policy ( SET CMP0003 NEW )
2008-05-31 00:53:45 +08:00
# Works around warnings about escaped quotes in ADD_DEFINITIONS
# statements.
2008-06-23 17:57:45 +08:00
cmake_policy ( SET CMP0005 NEW )
2008-09-18 03:25:40 +08:00
# cmake-2.6.1 introduces policy cmp0008 decide how to treat full path libraries that do not appear to be valid library file names
# quote from cvslog "Such libraries worked by accident in the VS IDE and Xcode generators in CMake 2.4 and below."
if ( POLICY CMP0008 )
cmake_policy ( SET CMP0008 OLD )
endif ( POLICY CMP0008 )
2008-05-27 06:36:58 +08:00
endif ( COMMAND cmake_policy )
2007-03-09 17:07:05 +08:00
PROJECT ( OpenSceneGraph )
2007-06-15 18:15:54 +08:00
SET ( OPENSCENEGRAPH_MAJOR_VERSION 2 )
2008-08-16 01:26:06 +08:00
SET ( OPENSCENEGRAPH_MINOR_VERSION 7 )
2008-12-17 00:36:33 +08:00
SET ( OPENSCENEGRAPH_PATCH_VERSION 8 )
SET ( OPENSCENEGRAPH_SOVERSION 53 )
2007-04-27 18:29:48 +08:00
2008-09-01 23:27:35 +08:00
# set to 0 when not a release candidate, non zero means that any generated
# svn tags will be treated as release candidates of given number
SET ( OPENSCENEGRAPH_RELEASE_CANDIDATE 0 )
2007-05-21 01:38:11 +08:00
SET ( OPENSCENEGRAPH_VERSION ${ OPENSCENEGRAPH_MAJOR_VERSION } . ${ OPENSCENEGRAPH_MINOR_VERSION } . ${ OPENSCENEGRAPH_PATCH_VERSION } )
SET ( OSG_PLUGINS osgPlugins- ${ OPENSCENEGRAPH_VERSION } )
2007-10-03 05:26:22 +08:00
SET ( OSG_PLUGIN_PREFIX "" )
IF ( CYGWIN )
SET ( OSG_PLUGIN_PREFIX "cygwin_" )
ENDIF ( CYGWIN )
IF ( MINGW )
SET ( OSG_PLUGIN_PREFIX "mingw_" )
ENDIF ( MINGW )
2007-05-21 01:38:11 +08:00
# We want to build SONAMES shared librariess
SET ( OPENSCENEGRAPH_SONAMES TRUE )
SET ( OPENTHREADS_SONAMES TRUE )
2007-05-20 20:29:11 +08:00
2007-05-03 16:50:06 +08:00
SET ( OpenThreads_SOURCE_DIR ${ OpenSceneGraph_SOURCE_DIR } )
2007-03-09 17:07:05 +08:00
# We have some custom .cmake scripts not in the official distribution.
# Maybe this can be used override existing behavior if needed?
SET ( CMAKE_MODULE_PATH "${OpenSceneGraph_SOURCE_DIR}/CMakeModules;${CMAKE_MODULE_PATH}" )
2007-03-29 18:56:07 +08:00
# Okay, here's the problem: On some platforms, linking against OpenThreads
2008-05-31 00:53:45 +08:00
# is not enough and explicit linking to the underlying thread library
2007-03-29 18:56:07 +08:00
# is also required (e.g. FreeBSD). But OpenThreads may be built with different
2008-05-31 00:53:45 +08:00
# backends (Pthreads, Sproc, Windows) so we don't know what the underlying
# thread library is because some platforms support multiple backends (e.g.
# IRIX supports Sproc and Pthreads). Linking all libraries won't work
2007-03-29 18:56:07 +08:00
# because the libraries may be incompatible.
2008-05-31 00:53:45 +08:00
# So the current solution is to attempt best guess linking and exempt certain
2007-03-29 18:56:07 +08:00
# cases. With IRIX, we're going to hope explicit linking to the underlying
# library is not necessary. We currently don't case for pthreads on Windows
# which might be an issue on things like Cygwin. This may need to be fixed.
FIND_PACKAGE ( Threads )
IF ( CMAKE_SYSTEM MATCHES IRIX )
2007-04-11 16:33:40 +08:00
# Erase CMAKE_THREAD_LIBS_INIT and hope it works
2008-05-31 00:53:45 +08:00
SET ( CMAKE_THREAD_LIBS_INIT "" CACHE INTERNAL "" )
2007-03-29 18:56:07 +08:00
ENDIF ( CMAKE_SYSTEM MATCHES IRIX )
2008-09-01 23:27:35 +08:00
OPTION ( OSG_MAINTAINER "Enable OpenSceneGraph maintainer build methods, such as making svn branches, tags, updating ChangeLog." OFF )
IF ( OSG_MAINTAINER )
SET ( OPENSCENEGRAPH_SVN "trunk" )
#SET(OPENSCENEGRAPH_SVN "branches")
SET ( OPENSCENEGRAPH_BRANCH OpenSceneGraph- ${ OPENSCENEGRAPH_MAJOR_VERSION } . ${ OPENSCENEGRAPH_MINOR_VERSION } )
#
# Provide target for tagging a release
#
SET ( SVNCOMMAND svn )
SET ( SVNTRUNKDIR http://www.openscenegraph.org/svn/osg/OpenSceneGraph/trunk )
SET ( SVNTAGDIR http://www.openscenegraph.org/svn/osg/OpenSceneGraph/tags )
SET ( SVNBRANCHDIR http://www.openscenegraph.org/svn/osg/OpenSceneGraph/branch )
IF ( OPENSCENEGRAPH_SVN STREQUAL "trunk" )
SET ( SVNSOURCEDIR ${ SVNTRUNKDIR } )
ELSE ( OPENSCENEGRAPH_SVN STREQUAL "trunk" )
SET ( SVNSOURCEDIR ${ SVNBRANCH_DIR } / ${ OPENSCENEGRAPH_BRANCH } )
ENDIF ( OPENSCENEGRAPH_SVN STREQUAL "trunk" )
IF ( OPENSCENEGRAPH_RELEASE_CANDIDATE EQUAL 0 )
SET ( RELEASE_NAME OpenSceneGraph- ${ OPENSCENEGRAPH_VERSION } )
ELSE ( OPENSCENEGRAPH_RELEASE_CANDIDATE EQUAL 0 )
SET ( RELEASE_NAME OpenSceneGraph- ${ OPENSCENEGRAPH_VERSION } -rc ${ OPENSCENEGRAPH_RELEASE_CANDIDATE } )
ENDIF ( OPENSCENEGRAPH_RELEASE_CANDIDATE EQUAL 0 )
ADD_CUSTOM_TARGET ( tag-test
C O M M A N D e c h o $ { S V N C O M M A N D } c o p y $ { S V N S O U R C E D I R } $ { S V N T A G D I R } / $ { R E L E A S E _ N A M E } - m " R e l e a s e $ { R E L E A S E _ N A M E } "
)
ADD_CUSTOM_TARGET ( tag-run
C O M M A N D $ { S V N C O M M A N D } c o p y $ { S V N S O U R C E D I R } $ { S V N T A G D I R } / $ { R E L E A S E _ N A M E } - m " R e l e a s e $ { R E L E A S E _ N A M E } "
)
ADD_CUSTOM_TARGET ( branch-test
C O M M A N D e c h o $ { S V N C O M M A N D } c o p y $ { S V N S O U R C E D I R } $ { S V N B R A N C H D I R } / $ { O P E N S C E N E G R A P H _ B R A N C H } - m " B r a n c h $ { O P E N S C E N E G R A P H _ B R A N C H } "
)
ADD_CUSTOM_TARGET ( branch-run
C O M M A N D $ { S V N C O M M A N D } c o p y $ { S V N S O U R C E D I R } $ { S V N B R A N C H D I R } / $ { O P E N S C E N E G R A P H _ B R A N C H } - m " B r a n c h $ { O P E N S C E N E G R A P H _ B R A N C H } "
)
#
# Provide target for generating ChangeLog
#
2008-12-13 02:47:30 +08:00
SET ( GENERATELOGS svn2cl )
2008-09-01 23:27:35 +08:00
ADD_CUSTOM_TARGET ( ChangeLog
2008-09-12 00:06:37 +08:00
C O M M A N D $ { S V N C O M M A N D } u p d a t e
2008-09-01 23:27:35 +08:00
C O M M A N D $ { G E N E R A T E L O G S }
)
ENDIF ( OSG_MAINTAINER )
2007-03-20 17:50:24 +08:00
# Find OpenGL
2007-03-09 17:07:05 +08:00
FIND_PACKAGE ( OpenGL )
IF ( APPLE )
2007-04-11 16:33:40 +08:00
FIND_LIBRARY ( CARBON_LIBRARY Carbon )
FIND_LIBRARY ( COCOA_LIBRARY Cocoa )
2007-03-09 17:07:05 +08:00
ENDIF ( APPLE )
IF ( UNIX )
2007-04-11 16:33:40 +08:00
# Not sure what this will do on Cygwin and Msys
# Also, remember OS X X11 is a user installed option so it may not exist.
FIND_PACKAGE ( X11 )
# Some Unicies need explicit linkage to the Math library or the build fails.
FIND_LIBRARY ( MATH_LIBRARY m )
2007-03-09 17:07:05 +08:00
ENDIF ( UNIX )
2008-05-31 00:53:45 +08:00
2007-03-09 17:07:05 +08:00
# Make the headers visible to everything
2008-06-20 19:16:06 +08:00
IF ( NOT ${ PROJECT_BINARY_DIR } EQUAL ${ PROJECT_SOURCE_DIR } )
INCLUDE_DIRECTORIES ( ${ PROJECT_BINARY_DIR } /include )
ENDIF ( NOT ${ PROJECT_BINARY_DIR } EQUAL ${ PROJECT_SOURCE_DIR } )
2007-03-09 17:07:05 +08:00
INCLUDE_DIRECTORIES (
2007-04-11 16:33:40 +08:00
$ { O p e n S c e n e G r a p h _ S O U R C E _ D I R } / i n c l u d e
$ { O P E N G L _ I N C L U D E _ D I R }
2007-03-09 17:07:05 +08:00
)
2008-05-31 00:53:45 +08:00
2007-03-09 17:07:05 +08:00
# Common global definitions
#ADD_DEFINITIONS(-D)
# Platform specific definitions
2007-10-03 05:26:22 +08:00
2007-03-09 17:07:05 +08:00
IF ( WIN32 )
2008-04-11 21:03:02 +08:00
2008-05-27 06:36:58 +08:00
IF ( MSVC )
# This option is to enable the /MP switch for Visual Studio 2005 and above compilers
OPTION ( WIN32_USE_MP "Set to ON to build OpenSceneGraph with the /MP option (Visual Studio 2005 and above)." OFF )
MARK_AS_ADVANCED ( WIN32_USE_MP )
2008-05-31 00:53:45 +08:00
IF ( WIN32_USE_MP )
2008-05-27 06:36:58 +08:00
SET ( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /MP" )
2008-05-31 00:53:45 +08:00
ENDIF ( WIN32_USE_MP )
2008-05-27 06:36:58 +08:00
2008-11-15 02:22:01 +08:00
# turn off various warnings
foreach ( warning 4244 4251 4267 4275 4290 4786 4305 4996 )
SET ( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /wd${warning}" )
endforeach ( warning )
2008-05-27 06:36:58 +08:00
# More MSVC specific compilation flags
ADD_DEFINITIONS ( -D_SCL_SECURE_NO_WARNINGS )
ADD_DEFINITIONS ( -D_CRT_SECURE_NO_DEPRECATE )
ENDIF ( MSVC )
2008-04-11 21:03:02 +08:00
2007-04-11 16:33:40 +08:00
#needed for net plugin
2007-10-03 04:56:56 +08:00
SET ( OSG_SOCKET_LIBS wsock32 )
2007-04-11 16:33:40 +08:00
# Both Cygwin and Msys need -DNOMINMAX ???
IF ( UNIX )
ADD_DEFINITIONS ( -DNOMINMAX )
ENDIF ( UNIX )
2007-08-30 18:41:15 +08:00
########################################################################################################
# the foolowing options are MSVC specific,
2008-05-31 00:53:45 +08:00
# the first OSG_MSVC_VERSIONED_DLL activate a custom build-time layout that should allow to run examples and application
2007-08-30 18:41:15 +08:00
# fron bin folder without requiring installation step.
# it also prepend "osg${OPENSCENEGRAPH_SOVERSION}-" to only .dll files, leaving .lib files untouched in lib
2008-05-31 00:53:45 +08:00
# it also use a hack to get rid of Debug and Release folder in MSVC projects
2007-08-30 18:41:15 +08:00
# all the .dll and .pdb are in bin and all the .lib and .exp are in lib
2008-05-31 00:53:45 +08:00
#
2007-08-30 18:41:15 +08:00
# the second option disable incremental linking in debug build , that is enabled by default by CMake
##########################################################################################################
2007-09-11 00:06:23 +08:00
IF ( MSVC )
IF ( ${ CMAKE_MAJOR_VERSION } EQUAL 2 AND ${ CMAKE_MINOR_VERSION } EQUAL 4 AND ${ CMAKE_PATCH_VERSION } LESS 7 )
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" )
SET ( OSG_MSVC_VERSIONED_DLL OFF )
SET ( OSG_MSVC_DEBUG_INCREMENTAL_LINK ON )
ELSE ( ${ CMAKE_MAJOR_VERSION } EQUAL 2 AND ${ CMAKE_MINOR_VERSION } EQUAL 4 AND ${ CMAKE_PATCH_VERSION } LESS 7 )
OPTION ( OSG_MSVC_VERSIONED_DLL "Set to ON to build OpenSceneGraph with versioned dll names" ON )
MARK_AS_ADVANCED ( OSG_MSVC_VERSIONED_DLL )
OPTION ( OSG_MSVC_DEBUG_INCREMENTAL_LINK "Set to OFF to build OpenSceneGraph without incremental linking in debug (release is off by default)" ON )
MARK_AS_ADVANCED ( OSG_MSVC_DEBUG_INCREMENTAL_LINK )
IF ( NOT OSG_MSVC_DEBUG_INCREMENTAL_LINK )
SET ( CMAKE_MODULE_LINKER_FLAGS_DEBUG "/debug /INCREMENTAL:NO" )
SET ( CMAKE_SHARED_LINKER_FLAGS_DEBUG "/debug /INCREMENTAL:NO" )
SET ( CMAKE_EXE_LINKER_FLAGS_DEBUG "/debug /INCREMENTAL:NO" )
ENDIF ( NOT OSG_MSVC_DEBUG_INCREMENTAL_LINK )
ENDIF ( ${ CMAKE_MAJOR_VERSION } EQUAL 2 AND ${ CMAKE_MINOR_VERSION } EQUAL 4 AND ${ CMAKE_PATCH_VERSION } LESS 7 )
ENDIF ( MSVC )
2007-03-09 17:07:05 +08:00
ENDIF ( WIN32 )
2007-03-10 00:25:11 +08:00
########################################################################################################
##### these were settings located in SetupCommon.cmake used in Luigi builds.... find out what are useful
########################################################################################################
#luigi#SET(CMAKE_VERBOSE_MAKEFILE TRUE)
#luigi#SET(CMAKE_SKIP_RPATH TRUE)
#luigi#SET(CMAKE_SKIP_RULE_DEPENDENCY TRUE)
#luigi#IF(UNIX)
2007-04-11 16:33:40 +08:00
#luigi# LIST_CONTAINS(contains "g++" ${CMAKE_CXX_COMPILER_LIST})
#luigi# IF (contains)
#luigi# MESSAGE(${MY_MESSAGE_DEFAULT} "${CMAKE_CURRENT_LIST_FILE}:${CMAKE_CURRENT_LIST_LINE} setting CMAKE_CXX_COMPILER to g++")
#luigi# SET(CMAKE_CXX_COMPILER "g++")
#luigi# SET(CMAKE_CXX_COMPILER_LOADED 2)
#luigi# SET(CMAKE_CXX_COMPILER_WORKS 2)
#luigi# ENDIF (contains)
#luigi# SET(CMAKE_CXX_FLAGS_RELEASE "-O2")
#luigi# SET(CMAKE_CXX_FLAGS_DEBUG "-ggdb -gstabs")
2007-03-10 00:25:11 +08:00
#luigi#ENDIF(UNIX)
########################################################################################################
2008-04-04 02:36:50 +08:00
OPTION ( OSG_USE_FLOAT_MATRIX "Set to ON to build OpenSceneGraph with float Matrix instead of double." OFF )
2007-05-20 19:45:09 +08:00
MARK_AS_ADVANCED ( OSG_USE_FLOAT_MATRIX )
2008-04-04 02:36:50 +08:00
OPTION ( OSG_USE_FLOAT_PLANE "Set to ON to build OpenSceneGraph with float Plane instead of double." OFF )
2007-05-20 19:45:09 +08:00
MARK_AS_ADVANCED ( OSG_USE_FLOAT_PLANE )
2007-03-09 17:07:05 +08:00
2008-04-04 02:36:50 +08:00
OPTION ( OSG_USE_FLOAT_BOUNDINGSPHERE "Set to ON to build OpenSceneGraph with float BoundingSphere instead of double." ON )
MARK_AS_ADVANCED ( OSG_USE_FLOAT_BOUNDINGSPHERE )
OPTION ( OSG_USE_FLOAT_BOUNDINGBOX "Set to ON to build OpenSceneGraph with float BoundingBox instead of double." ON )
MARK_AS_ADVANCED ( OSG_USE_FLOAT_BOUNDINGBOX )
2007-03-09 17:07:05 +08:00
2008-11-07 23:08:08 +08:00
OPTION ( OSG_USE_UTF8_FILENAME "Set to ON to use a UTF8 locale for filenames instead of the default locale." OFF )
MARK_AS_ADVANCED ( OSG_USE_UTF8_FILENAME )
2008-11-25 00:32:52 +08:00
OPTION ( OSG_DISABLE_MSVC_WARNINGS "Set to OFF to not disable MSVC wartnings genertated by OSG headers." ON )
MARK_AS_ADVANCED ( OSG_DISABLE_MSVC_WARNINGS )
2008-10-03 23:36:34 +08:00
OPTION ( OSG_USE_REF_PTR_IMPLICIT_OUTPUT_CONVERSION "Set to ON to use the ref_ptr<> T* operator() output conversion. " ON )
2008-06-21 03:52:14 +08:00
################################################################################
# Set Config file
SET ( OPENSCENEGRAPH_CONFIG_HEADER "${PROJECT_BINARY_DIR}/include/osg/Config" )
CONFIGURE_FILE ( "${CMAKE_CURRENT_SOURCE_DIR}/src/osg/Config.in"
" $ { O P E N S C E N E G R A P H _ C O N F I G _ H E A D E R } " )
2008-06-23 18:18:04 +08:00
# INSTALL_FILES(/include/osg/ FILES "${OPENSCENEGRAPH_CONFIG_HEADER}")
2008-06-21 03:52:14 +08:00
2007-03-09 17:07:05 +08:00
################################################################################
# 3rd Party Dependency Stuff
2007-03-29 18:56:07 +08:00
IF ( WIN32 )
2007-04-11 16:33:40 +08:00
INCLUDE ( Find3rdPartyDependencies )
2007-03-29 18:56:07 +08:00
ENDIF ( WIN32 )
2007-03-09 17:07:05 +08:00
# Common to all platforms:
FIND_PACKAGE ( FreeType )
2007-03-22 22:44:05 +08:00
FIND_PACKAGE ( FLTK )
2007-03-22 21:38:23 +08:00
FIND_PACKAGE ( GLUT )
FIND_PACKAGE ( SDL )
2007-07-24 22:02:53 +08:00
FIND_PACKAGE ( FOX )
2007-03-20 17:50:24 +08:00
FIND_PACKAGE ( Inventor )
2007-05-04 21:20:48 +08:00
FIND_PACKAGE ( Jasper )
2008-11-26 20:35:49 +08:00
FIND_PACKAGE ( OpenEXR )
2007-05-04 22:25:02 +08:00
FIND_PACKAGE ( COLLADA )
2007-05-05 03:17:49 +08:00
FIND_PACKAGE ( Xine )
2007-05-06 00:11:30 +08:00
FIND_PACKAGE ( OpenVRML )
2007-05-06 00:24:07 +08:00
FIND_PACKAGE ( Performer )
2007-06-06 23:22:31 +08:00
FIND_PACKAGE ( ZLIB )
2007-08-07 18:33:25 +08:00
FIND_PACKAGE ( GDAL )
2008-03-21 21:08:02 +08:00
FIND_PACKAGE ( CURL )
2008-10-10 01:02:16 +08:00
FIND_PACKAGE ( ZLIB )
2008-08-23 00:39:17 +08:00
FIND_PACKAGE ( ITK )
2008-10-31 20:03:44 +08:00
FIND_PACKAGE ( LibVNCServer )
2008-09-16 03:59:12 +08:00
FIND_PACKAGE ( OurDCMTK )
2008-11-19 07:38:18 +08:00
FIND_PACKAGE ( XUL )
2007-03-09 17:07:05 +08:00
2007-05-11 20:46:38 +08:00
SET ( wxWidgets_USE_LIBS base core gl net )
FIND_PACKAGE ( wxWidgets )
2007-10-03 04:56:56 +08:00
# To select a specific version of QT define DESIRED_QT_VERSION
# via cmake -DDESIRED_QT_VERSION=4
IF ( DESIRED_QT_VERSION )
IF ( DESIRED_QT_VERSION MATCHES 4 )
FIND_PACKAGE ( Qt4 )
ELSE ( DESIRED_QT_VERSION MATCHES 4 )
FIND_PACKAGE ( Qt3 )
ENDIF ( DESIRED_QT_VERSION MATCHES 4 )
2008-05-31 00:53:45 +08:00
2007-10-03 04:56:56 +08:00
ELSE ( DESIRED_QT_VERSION )
FIND_PACKAGE ( Qt4 )
2008-05-31 00:53:45 +08:00
2007-10-03 04:56:56 +08:00
IF ( NOT QT4_FOUND )
FIND_PACKAGE ( Qt3 )
ENDIF ( NOT QT4_FOUND )
2008-05-31 00:53:45 +08:00
2007-10-03 04:56:56 +08:00
ENDIF ( DESIRED_QT_VERSION )
2008-05-25 19:21:40 +08:00
#use pkg-config to find various modues
2008-05-31 16:47:15 +08:00
INCLUDE ( FindPkgConfig OPTIONAL )
2008-05-25 19:21:40 +08:00
IF ( PKG_CONFIG_FOUND )
INCLUDE ( FindPkgConfig )
PKG_CHECK_MODULES ( GTK gtk+-2.0 )
IF ( WIN32 )
PKG_CHECK_MODULES ( GTKGL gtkglext-win32-1.0 )
ELSE ( WIN32 )
PKG_CHECK_MODULES ( GTKGL gtkglext-x11-1.0 )
ENDIF ( WIN32 )
PKG_CHECK_MODULES ( RSVG librsvg-2.0 )
PKG_CHECK_MODULES ( CAIRO cairo )
2008-11-13 06:54:12 +08:00
PKG_CHECK_MODULES ( POPPLER poppler-glib )
2008-05-25 19:21:40 +08:00
ENDIF ( PKG_CONFIG_FOUND )
2008-10-03 23:15:04 +08:00
2008-11-15 04:50:40 +08:00
2008-05-08 20:55:01 +08:00
#
# Test to determine if we want the "tripledot" form of the GLU tesselator callback.
#
IF ( NOT DEFAULT_GLU_TESS_CALLBACK_TRIPLEDOT )
2008-05-27 05:18:41 +08:00
IF ( WIN32 OR CMAKE_SYSTEM_NAME MATCHES "Linux" )
# Skip the compile check for platforms that never need the variable
# form.
SET ( DEFAULT_GLU_TESS_CALLBACK_TRIPLEDOT false )
ELSE ( WIN32 OR CMAKE_SYSTEM_NAME MATCHES "Linux" )
# For other platforms perform the check
INCLUDE ( CheckCXXSourceCompiles )
SET ( CMAKE_REQUIRED_DEFINITIONS -DGLU_TESS_CALLBACK_TRIPLEDOT )
SET ( CMAKE_REQUIRED_INCLUDES ${ CMAKE_CURRENT_SOURCE_DIR } /include ${ GLUT_INCLUDE_DIR } ${ GL_INCLUDE_DIR } )
SET ( CMAKE_REQUIRED_LIBRARIES ${ GLUT_LIBRARY } ${ GL_LIBRARY } )
CHECK_CXX_SOURCE_COMPILES (
" #include <osg/GL>
#include <osg/GLU>
s t a t i c v o i d testcb ( GLvoid *, void* ) { }
i n t main ( ) {
G L U t e s s e l a t o r * t = gluNewTess ( ) ;
gluTessCallback ( t, GLU_TESS_VERTEX_DATA, ( GLU_TESS_CALLBACK ) testcb ) ;
r e t u r n 0 ;
} "
G L U _ T e s s e l a t o r _ N e e d s _ V a r i a b l e _ P a r a m e t e r _ C a l l b a c k _ C o n v e n t i o n _ F a i l u r e _ M e a n s _ N o )
SET ( DEFAULT_GLU_TESS_CALLBACK_TRIPLEDOT
$ { G L U _ T e s s e l a t o r _ N e e d s _ V a r i a b l e _ P a r a m e t e r _ C a l l b a c k _ C o n v e n t i o n _ F a i l u r e _ M e a n s _ N o } )
ENDIF ( WIN32 OR CMAKE_SYSTEM_NAME MATCHES "Linux" )
2008-05-08 20:55:01 +08:00
ENDIF ( NOT DEFAULT_GLU_TESS_CALLBACK_TRIPLEDOT )
2007-10-03 04:56:56 +08:00
2008-08-26 00:44:48 +08:00
OPTION ( OSG_GLU_TESS_CALLBACK_TRIPLEDOT "Set to ON to build with variable parameter (...) version of GLU tesselator callback" ${ DEFAULT_GLU_TESS_CALLBACK_TRIPLEDOT } )
2008-05-08 20:55:01 +08:00
IF ( OSG_GLU_TESS_CALLBACK_TRIPLEDOT )
ADD_DEFINITIONS ( -DGLU_TESS_CALLBACK_TRIPLEDOT )
ENDIF ( OSG_GLU_TESS_CALLBACK_TRIPLEDOT )
2007-10-03 04:56:56 +08:00
2007-03-09 17:07:05 +08:00
# Platform specific:
# (We can approach this one of two ways. We can try to FIND everything
# and simply check if we found the packages before actually building
2008-05-31 00:53:45 +08:00
# or we can hardcode the cases. The advantage of the former is that
2007-03-09 17:07:05 +08:00
# packages that are installed on platforms that don't require them
2008-05-31 00:53:45 +08:00
# will still get built (presuming no compatibility issues). But this
# also means modules that are redundant may get built. For example,
2007-03-09 17:07:05 +08:00
# OS X doesn't need GIF, JPEG, PNG, TIFF, etc because it uses QuickTime.
# Also, it will clutter the CMake menu with "NOT_FOUND".
# The downside to the latter is that it is harder to build those
# potentially redundant modules.)
# Image readers/writers depend on 3rd party libraries except for OS X which
# can use Quicktime.
IF ( NOT APPLE )
2007-04-11 16:33:40 +08:00
FIND_PACKAGE ( GIFLIB )
FIND_PACKAGE ( JPEG )
FIND_PACKAGE ( PNG )
FIND_PACKAGE ( TIFF )
# QuickTime is required for OS X, but optional for Windows.
IF ( WIN32 )
FIND_PACKAGE ( QuickTime )
ENDIF ( WIN32 )
2008-05-31 00:53:45 +08:00
ELSE ( NOT APPLE )
2007-04-11 16:33:40 +08:00
FIND_PACKAGE ( QuickTime )
2007-03-09 17:07:05 +08:00
ENDIF ( NOT APPLE )
2007-03-23 16:53:06 +08:00
################################################################################
# Create bin and lib directories if required
IF ( "${CMAKE_SOURCE_DIR}" STREQUAL "${CMAKE_BINARY_DIR}" )
2007-05-20 20:29:11 +08:00
FILE ( MAKE_DIRECTORY ${ CMAKE_BINARY_DIR } /bin ${ CMAKE_BINARY_DIR } /lib ${ CMAKE_BINARY_DIR } /lib/ ${ OSG_PLUGINS } )
2007-03-23 16:53:06 +08:00
ENDIF ( "${CMAKE_SOURCE_DIR}" STREQUAL "${CMAKE_BINARY_DIR}" )
2007-03-09 17:07:05 +08:00
################################################################################
# Installation stuff
2008-05-28 01:42:56 +08:00
SET ( CMAKE_DEBUG_POSTFIX "d" CACHE STRING "add a postfix, usually d on windows" )
2008-09-22 22:58:35 +08:00
ADD_DEFINITIONS ( -DOSG_DEBUG_POSTFIX= ${ CMAKE_DEBUG_POSTFIX } )
2008-12-19 01:09:12 +08:00
IF ( UNIX AND NOT WIN32 )
2008-05-28 20:49:47 +08:00
IF ( CMAKE_BUILD_TYPE STREQUAL "Debug" )
ADD_DEFINITIONS ( "-D_DEBUG" )
ENDIF ( CMAKE_BUILD_TYPE STREQUAL "Debug" )
2008-12-19 01:09:12 +08:00
ENDIF ( UNIX AND NOT WIN32 )
2008-05-28 20:49:47 +08:00
2008-09-18 02:56:59 +08:00
IF ( CYGWIN )
IF ( CMAKE_BUILD_TYPE STREQUAL "Debug" )
ADD_DEFINITIONS ( "-D_DEBUG" )
ENDIF ( CMAKE_BUILD_TYPE STREQUAL "Debug" )
ENDIF ( CYGWIN )
2007-03-09 17:07:05 +08:00
2007-03-29 18:56:07 +08:00
IF ( UNIX AND NOT WIN32 AND NOT APPLE )
IF ( CMAKE_SIZEOF_VOID_P MATCHES "8" )
2007-05-20 17:55:34 +08:00
SET ( LIB_POSTFIX "64" CACHE STRING "suffix for 32/64 dir placement" )
MARK_AS_ADVANCED ( LIB_POSTFIX )
2007-03-29 18:56:07 +08:00
ENDIF ( CMAKE_SIZEOF_VOID_P MATCHES "8" )
ENDIF ( UNIX AND NOT WIN32 AND NOT APPLE )
2007-05-20 17:55:34 +08:00
IF ( NOT DEFINED LIB_POSTFIX )
SET ( LIB_POSTFIX "" )
ENDIF ( NOT DEFINED LIB_POSTFIX )
2008-05-27 06:36:58 +08:00
# Here we apparantly do some funky stuff with making the bin/ and lib/
# folders which is probably needed to work around a very old CMake bug?
2007-03-13 05:23:09 +08:00
#SET(OUTPUT_BINDIR ${PROJECT_BINARY_DIR}/bin/${CMAKE_SYSTEM_NAME})
SET ( OUTPUT_BINDIR ${ PROJECT_BINARY_DIR } /bin )
2007-03-09 17:07:05 +08:00
MAKE_DIRECTORY ( ${ OUTPUT_BINDIR } )
2008-02-18 23:26:46 +08:00
IF ( MSVC AND NOT MSVC_IDE )
MAKE_DIRECTORY ( ${ OUTPUT_BINDIR } / ${ OSG_PLUGINS } )
ENDIF ( MSVC AND NOT MSVC_IDE )
2007-03-13 05:23:09 +08:00
#SET(OUTPUT_LIBDIR ${PROJECT_BINARY_DIR}/lib/${CMAKE_SYSTEM_NAME})
SET ( OUTPUT_LIBDIR ${ PROJECT_BINARY_DIR } /lib )
2007-03-09 17:07:05 +08:00
MAKE_DIRECTORY ( ${ OUTPUT_LIBDIR } )
2007-08-30 18:41:15 +08:00
IF ( NOT MSVC )
2008-02-18 23:26:46 +08:00
MAKE_DIRECTORY ( ${ OUTPUT_LIBDIR } / ${ OSG_PLUGINS } )
2007-08-30 18:41:15 +08:00
ENDIF ( NOT MSVC )
2007-03-09 17:07:05 +08:00
2008-05-27 06:36:58 +08:00
# On CMake 2.4.x use EXECUTABLE_OUTPUT_PATH and LIBRARY_OUTPUT_PATH and later
# we work around the DLL placement by use of the PREFIX target property hack
#
# On CMake 2.6.x use the newly minted CMAKE_LIBRARY_OUTPUT_DIRECTORY,
# CMAKE_ARCHIVE_OUTPUT_DIRECTORY & CMAKE_RUNTIME_OUTPUT_DIRECTORY
2007-03-09 17:07:05 +08:00
2008-05-27 06:36:58 +08:00
IF ( CMAKE_MAJOR_VERSION EQUAL 2 AND CMAKE_MINOR_VERSION GREATER 4 )
# If CMake >= 2.6.0
SET ( CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${ OUTPUT_LIBDIR } )
SET ( CMAKE_RUNTIME_OUTPUT_DIRECTORY ${ OUTPUT_BINDIR } )
IF ( WIN32 )
SET ( CMAKE_LIBRARY_OUTPUT_DIRECTORY ${ OUTPUT_BINDIR } )
ELSE ( WIN32 )
SET ( CMAKE_LIBRARY_OUTPUT_DIRECTORY ${ OUTPUT_LIBDIR } )
ENDIF ( WIN32 )
ELSE ( CMAKE_MAJOR_VERSION EQUAL 2 AND CMAKE_MINOR_VERSION GREATER 4 )
SET ( EXECUTABLE_OUTPUT_PATH ${ OUTPUT_BINDIR } )
SET ( LIBRARY_OUTPUT_PATH ${ OUTPUT_LIBDIR } )
ENDIF ( CMAKE_MAJOR_VERSION EQUAL 2 AND CMAKE_MINOR_VERSION GREATER 4 )
2007-03-09 17:07:05 +08:00
#SET(INSTALL_BINDIR OpenSceneGraph/bin)
#SET(INSTALL_INCDIR OpenSceneGraph/include)
#SET(INSTALL_LIBDIR OpenSceneGraph/lib)
#SET(INSTALL_DOCDIR OpenSceneGraph/doc)
################################################################################
# User Options
2007-04-27 18:29:48 +08:00
# Expose CMAKE_INCLUDE_PATH and CMAKE_LIBARY_PATH to the GUI so users
# may set these values without needing to manipulate the environment.
SET ( CMAKE_INCLUDE_PATH ${ CMAKE_INCLUDE_PATH } CACHE STRING "You may add additional search paths here. Use ; to separate multiple paths." )
SET ( CMAKE_LIBRARY_PATH ${ CMAKE_LIBRARY_PATH } CACHE STRING "You may add additional search paths here. Use ; to separate multiple paths." )
# We are proposing that a new variable called CMAKE_PREFIX_PATH be introduced
# to CMake to compliment CMAKE_INCLUDE_PATH and CMAKE_LIBRARY_PATH.
# A formal feature request has been submited to CMake, Bug #4947.
# It is intended for those users who have common prefixes for their INCLUDE
# and LIBRARY locations. So if users have headers in /usr/local/include
# and libraries in /usr/local/lib, the common prefix is /usr/local.
# It should also cover the case where headers and libraries are
# in the same directory.
# Our proposal expects that FIND_* commands will automatically search for
# CMAKE_PREFIX_PATH right after CMAKE_INCLUDE_PATH or CMAKE_LIBRARY_PATH.
# Obviously, since CMake does not currently support this, we must write
# our Find*.cmake modules to explicitly support this. Otherwise, this variable
# will have no impact.
# This is unofficial so this may be removed or changed at anytime.
SET ( CMAKE_PREFIX_PATH ${ CMAKE_PREFIX_PATH } CACHE STRING "(EXPERIMENTAL) You may add additional search paths here. Use ; to separate multiple paths." )
2007-03-09 17:07:05 +08:00
# Dynamic vs Static Linking
OPTION ( DYNAMIC_OPENSCENEGRAPH "Set to ON to build OpenSceneGraph for dynamic linking. Use OFF for static." ON )
IF ( DYNAMIC_OPENSCENEGRAPH )
2007-04-11 16:33:40 +08:00
SET ( OPENSCENEGRAPH_USER_DEFINED_DYNAMIC_OR_STATIC "SHARED" )
2007-03-09 17:07:05 +08:00
ELSE ( DYNAMIC_OPENSCENEGRAPH )
2007-04-11 16:33:40 +08:00
SET ( OPENSCENEGRAPH_USER_DEFINED_DYNAMIC_OR_STATIC "STATIC" )
2007-03-09 17:07:05 +08:00
ENDIF ( DYNAMIC_OPENSCENEGRAPH )
2007-03-19 20:30:26 +08:00
INCLUDE ( OsgMacroUtils )
2007-03-09 17:07:05 +08:00
# OSG Core
ADD_SUBDIRECTORY ( src )
# OSG Applications
OPTION ( BUILD_OSG_APPLICATIONS "Enable to build OSG Applications (e.g. osgviewer)" ON )
IF ( BUILD_OSG_APPLICATIONS )
2007-04-11 16:33:40 +08:00
ADD_SUBDIRECTORY ( applications )
2007-03-09 17:07:05 +08:00
ENDIF ( BUILD_OSG_APPLICATIONS )
# OSG Examples
OPTION ( BUILD_OSG_EXAMPLES "Enable to build OSG Examples" OFF )
IF ( BUILD_OSG_EXAMPLES )
2007-04-11 16:33:40 +08:00
ADD_SUBDIRECTORY ( examples )
2007-03-09 17:07:05 +08:00
ENDIF ( BUILD_OSG_EXAMPLES )
2008-05-31 00:53:45 +08:00
# This is for an advanced option to give aggressive warnings
2007-04-11 16:35:39 +08:00
# under different compilers. If yours is not implemented, this option
# will not be made available.
IF ( CMAKE_COMPILER_IS_GNUCXX )
2008-05-31 00:53:45 +08:00
# To be complete, we might also do GNUCC flags,
2007-04-11 16:35:39 +08:00
# but everything here is C++ code.
# -Wshadow and -Woverloaded-virtual are also interesting flags, but OSG
# returns too many hits.
2008-05-31 00:53:45 +08:00
# FYI, if we do implement GNUCC, then -Wmissing-prototypes in another
2007-04-11 16:35:39 +08:00
# interesting C-specific flag.
2007-04-25 17:14:01 +08:00
# Also, there is a bug in gcc 4.0. Under C++, -pedantic will create
# errors instead of warnings for certain issues, including superfluous
# semicolons and commas, and the use of long long. -fpermissive seems
2008-05-31 00:53:45 +08:00
# to be the workaround.
2007-09-07 21:54:32 +08:00
SET ( OSG_AGGRESSIVE_WARNING_FLAGS "-Wall -Wparentheses -Wformat=2 -Wno-long-long -Wno-import -pedantic -Wreturn-type -Wmissing-braces -Wunknown-pragmas -Wunused -fpermissive" )
2007-04-11 16:35:39 +08:00
ELSE ( CMAKE_COMPILER_IS_GNUCXX )
IF ( MSVC )
# FIXME: What are good aggressive warning flags for Visual Studio?
# And do we need to further subcase this for different versions of VS?
# CMake variables: MSVC60, MSVC70, MSVC71, MSVC80, CMAKE_COMPILER_2005
SET ( OSG_AGGRESSIVE_WARNING_FLAGS "/Wall /W4" )
2008-05-31 00:53:45 +08:00
2007-08-30 18:41:15 +08:00
2007-04-11 16:35:39 +08:00
ELSE ( MSVC )
# CMake lacks an elseif, so other non-gcc, non-VS compilers need
2008-05-31 00:53:45 +08:00
# to be listed below. If unhandled, OSG_AGGRESSIVE_WARNING_FLAGS should
2007-04-11 16:35:39 +08:00
# remain unset.
ENDIF ( MSVC )
ENDIF ( CMAKE_COMPILER_IS_GNUCXX )
# This part is for the CMake menu option to toggle the warnings on/off.
# This will only be made available if we set values for OSG_AGGRESSIVE_WARNING_FLAGS.
IF ( OSG_AGGRESSIVE_WARNING_FLAGS )
OPTION ( OSG_USE_AGGRESSIVE_WARNINGS "Enable to activate aggressive warnings" OFF )
MARK_AS_ADVANCED ( OSG_USE_AGGRESSIVE_WARNINGS )
IF ( OSG_USE_AGGRESSIVE_WARNINGS )
IF ( NOT "${OLD_CMAKE_CXX_FLAGS_WAS_SET}" )
SET ( OLD_CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}" CACHE INTERNAL "Old CXX flags" )
SET ( OLD_CMAKE_CXX_FLAGS_WAS_SET 1 CACHE INTERNAL "Old CXX flags was set" )
SET ( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OSG_AGGRESSIVE_WARNING_FLAGS}" CACHE STRING "Flags used by the compiler during all build types." FORCE )
ENDIF ( NOT "${OLD_CMAKE_CXX_FLAGS_WAS_SET}" )
ELSE ( OSG_USE_AGGRESSIVE_WARNINGS )
2008-05-31 00:53:45 +08:00
# FIXME: This will lose any changes made after OLD_CMAKE_CXX_FLAGS was
2007-04-11 16:35:39 +08:00
# set. The better way would be to parse the string and remove each
# option explicitly.
IF ( "${OLD_CMAKE_CXX_FLAGS_WAS_SET}" )
SET ( CMAKE_CXX_FLAGS "${OLD_CMAKE_CXX_FLAGS}" CACHE STRING "Flags used by the compiler during all build types." FORCE )
SET ( OLD_CMAKE_CXX_FLAGS_WAS_SET 0 CACHE INTERNAL "Old CXX flags was set" )
ENDIF ( "${OLD_CMAKE_CXX_FLAGS_WAS_SET}" )
ENDIF ( OSG_USE_AGGRESSIVE_WARNINGS )
ENDIF ( OSG_AGGRESSIVE_WARNING_FLAGS )
2008-05-31 00:53:45 +08:00
# Set defaults for Universal Binaries. We want 32-bit Intel/PPC on 10.4
2007-04-11 16:35:39 +08:00
# and 32/64-bit Intel/PPC on >= 10.5. Anything <= 10.3 doesn't support.
IF ( APPLE )
# These are just defaults/recommendations, but how we want to build
# out of the box. But the user needs to be able to change these options.
2008-05-31 00:53:45 +08:00
# So we must only set the values the first time CMake is run, or we
2007-04-11 16:35:39 +08:00
# will overwrite any changes the user sets.
# FORCE is used because the options are not reflected in the UI otherwise.
# Seems like a good place to add version specific compiler flags too.
2007-04-25 17:14:01 +08:00
IF ( NOT OSG_CONFIG_HAS_BEEN_RUN_BEFORE )
2008-05-31 00:53:45 +08:00
# This is really fragile, but CMake doesn't provide the OS system
# version information we need. (Darwin versions can be changed
2007-04-11 16:35:39 +08:00
# independently of OS X versions.)
# It does look like CMake handles the CMAKE_OSX_SYSROOT automatically.
2008-07-03 19:07:59 +08:00
IF ( EXISTS /Developer/SDKs/MacOSX10.5.sdk )
2008-08-06 00:05:59 +08:00
# 64-bit compiles are not supported with Carbon. We should enable
# 64-bit compilation by default once osgviewer has been
# rewritten with Cocoa.
#SET(CMAKE_OSX_ARCHITECTURES "ppc;i386;ppc64;x86_64" CACHE STRING "Build architectures for OSX" FORCE)
SET ( CMAKE_OSX_ARCHITECTURES "ppc;i386" CACHE STRING "Build architectures for OSX" FORCE )
2007-04-11 16:35:39 +08:00
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 )
2008-07-03 19:07:59 +08:00
ELSE ( EXISTS /Developer/SDKs/MacOSX10.5.sdk )
2007-04-11 16:35:39 +08:00
IF ( EXISTS /Developer/SDKs/MacOSX10.4u.sdk )
SET ( CMAKE_OSX_ARCHITECTURES "ppc;i386" CACHE STRING "Build architectures for OSX" FORCE )
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 )
ELSE ( EXISTS /Developer/SDKs/MacOSX10.4u.sdk )
# No Universal Binary support
# Should break down further to set the -mmacosx-version-min,
# but the SDK detection is too unreliable here.
ENDIF ( EXISTS /Developer/SDKs/MacOSX10.4u.sdk )
2008-07-03 19:07:59 +08:00
ENDIF ( EXISTS /Developer/SDKs/MacOSX10.5.sdk )
2007-04-25 17:14:01 +08:00
ENDIF ( NOT OSG_CONFIG_HAS_BEEN_RUN_BEFORE )
2008-05-31 00:53:45 +08:00
2007-06-05 05:02:15 +08:00
OPTION ( OSG_BUILD_APPLICATION_BUNDLES "Enable the building of applications and examples as OSX Bundles" OFF )
2008-05-31 00:53:45 +08:00
2007-04-11 16:35:39 +08:00
ENDIF ( APPLE )
2007-03-09 17:07:05 +08:00
2008-08-26 20:05:24 +08:00
#
# Provide target for generating wrappers
#
SET ( GENWRAPPER genwrapper )
ADD_CUSTOM_TARGET ( wrappers
C O M M A N D $ { G E N W R A P P E R } - c $ { O p e n S c e n e G r a p h _ S O U R C E _ D I R } / s r c / o s g W r a p p e r s / g e n w r a p p e r . c o n f - t $ { O p e n S c e n e G r a p h _ S O U R C E _ D I R } / s r c / o s g W r a p p e r s / D o x y f i l e . t e m p l a t e - d $ { O p e n S c e n e G r a p h _ S O U R C E _ D I R } | d o x y g e n -
C O M M A N D $ { G E N W R A P P E R } - c $ { O p e n S c e n e G r a p h _ S O U R C E _ D I R } / s r c / o s g W r a p p e r s / g e n w r a p p e r . c o n f - l $ { O p e n S c e n e G r a p h _ S O U R C E _ D I R }
)
2007-03-09 17:07:05 +08:00
# For Doxygen
INCLUDE ( ${ CMAKE_ROOT } /Modules/Documentation.cmake OPTIONAL )
2008-12-16 19:43:28 +08:00
OPTION ( BUILD_DOCUMENTATION "Build OpenSceneGraph reference documentation using doxygen (use: make DoxygenDoc)" OFF )
2008-12-19 19:04:35 +08:00
MARK_AS_ADVANCED ( CLEAR BUILD_DOCUMENTATION )
2007-03-09 17:07:05 +08:00
# To build the documention, you will have to enable it
# and then do the equivalent of "make DoxygenDoc".
IF ( BUILD_DOCUMENTATION )
2008-01-29 02:29:38 +08:00
2008-12-16 19:43:28 +08:00
OPTION ( BUILD_REF_DOCS_SEARCHENGINE "Enable doxygen's search engine (requires that documentation to be installed on a php enabled web server)" OFF )
2008-01-29 03:54:27 +08:00
IF ( BUILD_REF_DOCS_SEARCHENGINE )
2008-01-29 02:29:38 +08:00
SET ( SEARCHENGINE YES )
2008-01-29 03:54:27 +08:00
ELSE ( BUILD_REF_DOCS_SEARCHENGINE )
2008-01-29 02:29:38 +08:00
SET ( SEARCHENGINE NO )
2008-01-29 03:54:27 +08:00
ENDIF ( BUILD_REF_DOCS_SEARCHENGINE )
2008-05-31 00:53:45 +08:00
2008-12-16 19:43:28 +08:00
OPTION ( BUILD_REF_DOCS_TAGFILE "Generate a tag file named osg.tag on the documentation web server" OFF )
2008-01-29 02:29:38 +08:00
IF ( BUILD_REF_DOCS_TAGFILE )
2008-12-16 19:43:28 +08:00
SET ( GENERATE_TAGFILE "${OpenSceneGraph_BINARY_DIR}/doc/OpenSceneGraphReferenceDocs/osg.tag" )
2008-01-29 02:29:38 +08:00
ELSE ( BUILD_REF_DOCS_TAGFILE )
SET ( GENERATE_TAGFILE "" )
ENDIF ( BUILD_REF_DOCS_TAGFILE )
2008-05-31 00:53:45 +08:00
2007-04-11 16:33:40 +08:00
IF ( DOT )
SET ( HAVE_DOT YES )
ELSE ( DOT )
SET ( HAVE_DOT NO )
ENDIF ( DOT )
2008-12-12 19:01:09 +08:00
2008-12-16 19:43:28 +08:00
# If html help generation was requested. DOCUMENTATION_HTML_HELP is defined by Documentation.cmake
SET ( GENERATE_HTMLHELP "NO" )
IF ( DOCUMENTATION_HTML_HELP )
2008-12-19 19:04:35 +08:00
# 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
2008-12-16 19:43:28 +08:00
IF ( NOT WIN32 )
SET ( HTML_HELP_COMPILER "" CACHE FILEPATH "Enter location of the HTML help compiler to let doxygen compile html" )
MARK_AS_ADVANCED ( HTML_HELP_COMPILER )
ENDIF ( NOT WIN32 )
# this var sets a proper value in .doxygen files when coniguring them below
SET ( GENERATE_HTMLHELP "YES" )
endif ( DOCUMENTATION_HTML_HELP )
# This processes our doxyfile.cmake and substitutes paths to generate
2007-04-11 16:33:40 +08:00
# a final Doxyfile
CONFIGURE_FILE ( ${ PROJECT_SOURCE_DIR } /doc/Doxyfiles/doxyfile.cmake
2008-12-16 19:43:28 +08:00
$ { P R O J E C T _ B I N A R Y _ D I R } / d o c / o p e n s c e n e g r a p h . d o x y f i l e
)
# copy the osg logo to documentations target folder
CONFIGURE_FILE ( ${ PROJECT_SOURCE_DIR } /PlatformSpecifics/Windows/icons/src/osg32-32.png
$ { P R O J E C T _ B I N A R Y _ D I R } / d o c / O p e n S c e n e G r a p h R e f e r e n c e D o c s / o s g 3 2 - 3 2 . p n g C O P Y O N L Y
2007-04-11 16:33:40 +08:00
)
2008-12-16 19:43:28 +08:00
#INSTALL(FILES ${PROJECT_BINARY_DIR}/doc/${PROJECT_NAME}ReferenceDocs-${OPENSCENEGRAPH_VERSION}.chm DESTINATION doc OPTIONAL COMPONENT openscenegraph-doc)
INSTALL ( DIRECTORY ${ PROJECT_BINARY_DIR } /doc/OpenSceneGraphReferenceDocs DESTINATION doc COMPONENT openscenegraph-doc )
# now set up openthreads documentation generation
IF ( BUILD_REF_DOCS_TAGFILE )
SET ( GENERATE_TAGFILE "${OpenSceneGraph_BINARY_DIR}/doc/OpenThreadsReferenceDocs/ot.tag" )
ENDIF ( BUILD_REF_DOCS_TAGFILE )
# This processes our openthreads.doxyfile.cmake and generate a final doxyfile
CONFIGURE_FILE ( ${ PROJECT_SOURCE_DIR } /doc/Doxyfiles/openthreads.doxyfile.cmake
$ { P R O J E C T _ B I N A R Y _ D I R } / d o c / o p e n t h r e a d s . d o x y f i l e
)
# copy the osg logo to documentations target folder
CONFIGURE_FILE ( ${ PROJECT_SOURCE_DIR } /PlatformSpecifics/Windows/icons/src/osg32-32.png
$ { P R O J E C T _ B I N A R Y _ D I R } / d o c / O p e n T h r e a d s R e f e r e n c e D o c s / o s g 3 2 - 3 2 . p n g C O P Y O N L Y
)
#INSTALL(FILES ${PROJECT_BINARY_DIR}/doc/${PROJECT_NAME}ReferenceDocs-${OPENSCENEGRAPH_VERSION}.chm DESTINATION doc OPTIONAL COMPONENT openscenegraph-doc)
INSTALL ( DIRECTORY ${ PROJECT_BINARY_DIR } /doc/OpenThreadsReferenceDocs DESTINATION doc COMPONENT openthreads-doc )
# Process our other doxyfiles but don't create targets for these
CONFIGURE_FILE ( ${ PROJECT_SOURCE_DIR } /doc/Doxyfiles/all_Doxyfile
$ { P R O J E C T _ B I N A R Y _ D I R } / d o c / a l l _ D o x y f i l e )
CONFIGURE_FILE ( ${ PROJECT_SOURCE_DIR } /doc/Doxyfiles/auto_Doxyfile
$ { P R O J E C T _ B I N A R Y _ D I R } / d o c / a u t o _ D o x y f i l e )
CONFIGURE_FILE ( ${ PROJECT_SOURCE_DIR } /doc/Doxyfiles/core_Doxyfile
$ { P R O J E C T _ B I N A R Y _ D I R } / d o c / c o r e _ D o x y f i l e )
2007-04-11 16:33:40 +08:00
# This creates a new target to build documentation.
# It runs ${DOXYGEN} which is the full path and executable to
# Doxygen on your system, set by the FindDoxygen.cmake module
# (called by FindDocumentation.cmake).
# It runs the final generated Doxyfile against it.
# The DOT_PATH is substituted into the Doxyfile.
2008-12-16 19:43:28 +08:00
ADD_CUSTOM_TARGET ( doc_openscenegraph ${ DOXYGEN }
$ { P R O J E C T _ B I N A R Y _ D I R } / d o c / o p e n s c e n e g r a p h . d o x y f i l e
)
ADD_CUSTOM_TARGET ( doc_openthreads ${ DOXYGEN }
$ { P R O J E C T _ B I N A R Y _ D I R } / d o c / o p e n t h r e a d s . d o x y f i l e
2007-04-11 16:33:40 +08:00
)
2007-03-09 17:07:05 +08:00
ENDIF ( BUILD_DOCUMENTATION )
2008-09-25 23:20:20 +08:00
OPTION ( BUILD_DASHBOARD_REPORTS "Set to ON to activate reporting of OpenSceneGraph builds here http://www.cdash.org/CDashPublic/index.php?project=OpenSceneGraph" OFF )
IF ( BUILD_DASHBOARD_REPORTS )
# The following are required to uses Dart and the Cdash dashboard
# viewable here : http://www.cdash.org/CDashPublic/index.php?project=OpenSceneGraph
INCLUDE ( Dart )
ENDIF ( BUILD_DASHBOARD_REPORTS )
2007-04-11 16:35:39 +08:00
# This needs to be run very last so other parts of the scripts can take
# advantage of this.
2007-04-25 17:14:01 +08:00
IF ( NOT OSG_CONFIG_HAS_BEEN_RUN_BEFORE )
2007-04-11 16:35:39 +08:00
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" )
2007-04-25 17:14:01 +08:00
ENDIF ( NOT OSG_CONFIG_HAS_BEEN_RUN_BEFORE )
2007-04-11 16:35:39 +08:00
2008-12-15 22:07:29 +08:00
# CPack is only available for cmake version >= 2.6.0
IF ( CMAKE_MAJOR_VERSION EQUAL 2 AND CMAKE_MINOR_VERSION GREATER 4 )
# If CMake >= 2.6.0
OPTION ( BUILD_OSG_PACKAGES "Set to ON to generate CPack configuration files and default packaging targets" OFF )
IF ( BUILD_OSG_PACKAGES )
INCLUDE ( OsgCPack )
ENDIF ( BUILD_OSG_PACKAGES )
ENDIF ( CMAKE_MAJOR_VERSION EQUAL 2 AND CMAKE_MINOR_VERSION GREATER 4 )
2007-04-11 16:35:39 +08:00
2007-05-17 19:48:30 +08:00
#-----------------------------------------------------------------------------
### uninstall target
#-----------------------------------------------------------------------------
CONFIGURE_FILE (
" $ { C M A K E _ C U R R E N T _ S O U R C E _ D I R } / C M a k e M o d u l e s / c m a k e _ u n i n s t a l l . c m a k e . i n "
" $ { C M A K E _ C U R R E N T _ B I N A R Y _ D I R } / c m a k e _ u n i n s t a l l . c m a k e "
I M M E D I A T E @ O N L Y )
ADD_CUSTOM_TARGET ( uninstall
" $ { C M A K E _ C O M M A N D } " - P " $ { C M A K E _ C U R R E N T _ B I N A R Y _ D I R } / c m a k e _ u n i n s t a l l . c m a k e " )