source: trunk/CMakeLists.txt @ 246

Revision 246, 12.3 KB checked in by art, 2 years ago (diff)
  • changed support for the osgDB in osg v2.9.7
  • first try to implement an osgPPU cpack package within the built
Line 
1CMAKE_MINIMUM_REQUIRED(VERSION 2.4.5 FATAL_ERROR)
2
3# Setup compatibility modes
4IF(COMMAND cmake_policy)
5        if(POLICY CMP0011)
6                cmake_policy(SET CMP0011 OLD) # or NEW
7        endif(POLICY CMP0011)
8
9        cmake_policy(SET CMP0003 NEW)
10ENDIF(COMMAND cmake_policy)
11
12
13################################################################################
14# Set default values
15################################################################################
16PROJECT(osgPPU)
17SET(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/CMakeModules;${osgPPU_SOURCE_DIR}/CMakeModules;${CMAKE_MODULE_PATH}")
18SET(SOURCE_DIR ${osgPPU_SOURCE_DIR})
19SET(OSG_DIR "${CMAKE_INSTALL_PREFIX}" CACHE STRING "Path where to find the osg installation")
20SET(CUDA_DIR "${CMAKE_INSTALL_PREFIX}/cuda" CACHE STRING "Path where to find the cuda installation")
21
22
23#######################################
24# Versions
25#######################################
26SET(OSGPPU_MAJOR_VERSION 0)
27SET(OSGPPU_MINOR_VERSION 5)
28SET(OSGPPU_PATCH_VERSION 7)
29SET(OSGPPU_SOVERSION 5)
30
31SET(OSGPPU_RELEASE_CANDIDATE 0)
32
33SET(OSGPPU_VERSION ${OSGPPU_MAJOR_VERSION}.${OSGPPU_MINOR_VERSION}.${OSGPPU_PATCH_VERSION})
34SET(OSGPPU_SONAMES TRUE)
35
36
37################################################################################
38# Define already some installation components.
39# This is need for later installation process if we enable it
40################################################################################
41IF(CMAKE_CPACK_COMMAND)
42ENDIF(CMAKE_CPACK_COMMAND)
43
44
45#######################################
46# Dynamic vs Static Linking
47#######################################
48OPTION(DYNAMIC_OSGPPU "Set to ON to build osgPPU for dynamic linking.  Use OFF for static." ON)
49IF (DYNAMIC_OSGPPU)
50    SET(OSGPPU_USER_DEFINED_DYNAMIC_OR_STATIC "SHARED")
51ELSE (DYNAMIC_OSGPPU)
52    SET(OSGPPU_USER_DEFINED_DYNAMIC_OR_STATIC "STATIC")
53    SET(CMAKE_MODULE_CXX_FLAGS_DEBUG "-pthread")
54ENDIF(DYNAMIC_OSGPPU)
55
56
57#######################################
58# Library files
59#######################################
60FIND_PACKAGE( OpenGL REQUIRED )
61FIND_PACKAGE( OSG REQUIRED )
62
63#######################################
64# enable CUDA support
65#######################################
66INCLUDE(${CMAKE_SOURCE_DIR}/CMakeModules/cuda/FindCuda.cmake)
67
68
69################################################################################
70# Make the headers visible to everything
71################################################################################
72IF(NOT ${PROJECT_BINARY_DIR} EQUAL ${PROJECT_SOURCE_DIR})
73   INCLUDE_DIRECTORIES(BEFORE ${PROJECT_BINARY_DIR}/include)
74ENDIF(NOT ${PROJECT_BINARY_DIR} EQUAL ${PROJECT_SOURCE_DIR})
75
76
77INCLUDE_DIRECTORIES(BEFORE
78    ${OPENGL_INCLUDE_DIR}
79    ${OSG_INCLUDE_DIRS}
80    ${SOURCE_DIR}/include
81)
82
83
84SET(GL_LIBS
85  ${OPENGL_gl_LIBRARY}
86  ${OPENGL_glu_LIBRARY}
87)
88
89
90
91#######################################
92# Solution definition
93#######################################
94IF(WIN32)
95
96    IF(MSVC)
97        ADD_DEFINITIONS(-D_USE_MATH_DEFINES)
98        ADD_DEFINITIONS(-D_SCL_SECURE_NO_WARNINGS)
99        ADD_DEFINITIONS(-D_CRT_SECURE_NO_DEPRECATE)
100
101        # This option is to enable the /MP switch for Visual Studio 2005 and above compilers
102        OPTION(WIN32_USE_MP "Set to ON to build osgPPU with the /MP option (Visual Studio 2005 and above)." OFF)
103        MARK_AS_ADVANCED(WIN32_USE_MP)
104        IF(WIN32_USE_MP)
105            SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /MP")
106        ENDIF(WIN32_USE_MP)
107
108    ENDIF(MSVC)
109
110    # Both Cygwin and Msys need -DNOMINMAX ???
111    IF(UNIX)
112        ADD_DEFINITIONS(-DNOMINMAX)
113    ENDIF(UNIX)
114
115        ########################################################################################################
116        # the following options are MSVC specific,
117        # the first OSG_MSVC_VERSIONED_DLL activate a custom build-time layout that should allow to run examples and application
118        # fron bin folder without requiring installation step.
119        # it also prepend "osg${OPENSCENEGRAPH_SOVERSION}-" to only .dll files, leaving .lib files untouched in lib
120        # it also use a hack to get rid of Debug and Release folder in MSVC projects
121        # all the .dll and .pdb are in bin and all the .lib and .exp are in lib
122        #
123        # the second option disable incremental linking in debug build , that is enabled by default by CMake
124        ##########################################################################################################
125    IF(MSVC)
126        IF(${CMAKE_MAJOR_VERSION} EQUAL 2 AND ${CMAKE_MINOR_VERSION} EQUAL 4 AND ${CMAKE_PATCH_VERSION} LESS 7)
127            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")
128            SET(OSGPPU_MSVC_VERSIONED_DLL OFF)
129            SET(OSGPPU_MSVC_DEBUG_INCREMENTAL_LINK ON)
130        ELSE(${CMAKE_MAJOR_VERSION} EQUAL 2 AND ${CMAKE_MINOR_VERSION} EQUAL 4 AND ${CMAKE_PATCH_VERSION} LESS 7)
131            OPTION(OSGPPU_MSVC_VERSIONED_DLL "Set to ON to build osgPPU with versioned dll names" ON)
132            MARK_AS_ADVANCED(OSGPPU_MSVC_VERSIONED_DLL)
133            OPTION(OSGPPU_MSVC_DEBUG_INCREMENTAL_LINK "Set to OFF to build without incremental linking in debug (release is off by default)" OFF)
134            MARK_AS_ADVANCED(OSGPPU_MSVC_DEBUG_INCREMENTAL_LINK)
135            IF(NOT OSGPPU_MSVC_DEBUG_INCREMENTAL_LINK)
136                SET(CMAKE_MODULE_LINKER_FLAGS_DEBUG "/debug /INCREMENTAL:NO")
137                SET(CMAKE_SHARED_LINKER_FLAGS_DEBUG "/debug /INCREMENTAL:NO")
138                SET(CMAKE_EXE_LINKER_FLAGS_DEBUG "/debug /INCREMENTAL:NO")
139            ENDIF(NOT OSGPPU_MSVC_DEBUG_INCREMENTAL_LINK)
140        ENDIF(${CMAKE_MAJOR_VERSION} EQUAL 2 AND ${CMAKE_MINOR_VERSION} EQUAL 4 AND ${CMAKE_PATCH_VERSION} LESS 7)
141    ENDIF(MSVC)
142
143ENDIF(WIN32)
144
145
146
147################################################################################
148#Solution
149################################################################################
150SET(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin)
151SET(LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR}/lib)
152SET(EXAMPLE_PREFIX osgppu_ CACHE STRING "Prefix used to build examples")
153LINK_DIRECTORIES(${LIBRARY_OUTPUT_PATH})
154
155
156INCLUDE(OsgPPUMacroUtils)
157
158
159################################################################################
160# Some usefull definition
161################################################################################
162DETECT_OSG_VERSION()
163IF(CMAKE_COMPILER_IS_GNUCC)
164  SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fmessage-length=0")
165ENDIF(CMAKE_COMPILER_IS_GNUCC)
166IF(CMAKE_COMPILER_IS_GNUCXX)
167  SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fmessage-length=0")
168ENDIF(CMAKE_COMPILER_IS_GNUCXX)
169
170
171
172################################################################################
173# maintainer options
174################################################################################
175OPTION(OSGPPU_MAINTAINER "Enable osgPPU maintainer build methods, such as making svn branches, tags, updating ChangeLog." OFF)
176IF (OSGPPU_MAINTAINER)
177
178    SET(OSGPPU_SVN "trunk")
179    SET(OSGPPU_BRANCH osgPPU-${OSGPPU_MAJOR_VERSION}.${OSGPPU_MINOR_VERSION})
180
181    #
182    # Provide target for tagging a release
183    #
184    SET(SVNCOMMAND svn)
185    SET(SVNTRUNKDIR     http://svn.tevs.eu/osgPPU/trunk)
186    SET(SVNTAGDIR       http://svn.tevs.eu/osgPPU/tags)
187    SET(SVNBRANCHDIR    http://svn.tevs.eu/osgPPU/branch)
188
189    IF   (OSGPPU_SVN STREQUAL "trunk")
190        SET(SVNSOURCEDIR ${SVNTRUNKDIR})
191    ELSE (OOSGPPU_SVN STREQUAL "trunk")
192        SET(SVNSOURCEDIR ${SVNBRANCH_DIR}/${OSGPPU_BRANCH})
193    ENDIF(OSGPPU_SVN STREQUAL "trunk")
194
195
196    IF   (OSGPPU_RELEASE_CANDIDATE EQUAL 0)
197        SET(RELEASE_NAME osgPPU-${OSGPPU_VERSION})
198    ELSE (OSGPPU_RELEASE_CANDIDATE EQUAL 0)
199        SET(RELEASE_NAME osgPPU-${OSGPPU_VERSION}-rc${OSGPPU_RELEASE_CANDIDATE})
200    ENDIF(OSGPPU_RELEASE_CANDIDATE EQUAL 0)
201
202
203    ADD_CUSTOM_TARGET(tag-test
204        COMMAND echo ${SVNCOMMAND} copy ${SVNSOURCEDIR} ${SVNTAGDIR}/${RELEASE_NAME} -m "Release ${RELEASE_NAME}"
205    )
206
207    ADD_CUSTOM_TARGET(tag-run
208        COMMAND ${SVNCOMMAND} copy ${SVNSOURCEDIR} ${SVNTAGDIR}/${RELEASE_NAME} -m "Release ${RELEASE_NAME}"
209    )
210
211    ADD_CUSTOM_TARGET(branch-test
212        COMMAND echo ${SVNCOMMAND} copy ${SVNSOURCEDIR} ${SVNBRANCHDIR}/${OSGPPU_BRANCH} -m "Branch ${OSGPPU_BRANCH}"
213    )
214
215    ADD_CUSTOM_TARGET(branch-run
216        COMMAND ${SVNCOMMAND} copy ${SVNSOURCEDIR} ${SVNBRANCHDIR}/${OSGPPU_BRANCH} -m "Branch ${OSGPPU_BRANCH}"
217    )
218
219    #
220    # Provide target for generating ChangeLog
221    #
222    SET(GENERATELOGS svn2cl)
223
224    ADD_CUSTOM_TARGET(ChangeLog
225        COMMAND ${SVNCOMMAND} update
226        #COMMAND ${SVNCOMMAND} up
227        #COMMAND ${GENERATELOGS}
228        COMMAND ${SVNCOMMAND} log --xml --verbose | xsltproc doc/scripts/svn2cl.xsl - > ChangeLog
229    )
230   
231ENDIF(OSGPPU_MAINTAINER)
232
233
234
235################################################################################
236# present the packaging option only if we have the cpack command defined (effectively >= 2.6.0)
237################################################################################
238IF(CMAKE_CPACK_COMMAND)
239
240        # option to build the package target
241        OPTION(BUILD_OSGPPU_PACKAGES "Set to ON to generate CPack configuration files and packaging targets" OFF)
242
243        # names used in other cmake script to determine package component
244        SET(PACKAGE_HEADERS headers)
245        SET(PACKAGE_LIB libraries)
246        SET(PACKAGE_DATA data)
247        SET(PACKAGE_SRC  source)
248        SET(PACKAGE_EXAMPLES  examples)
249
250        # we would like to build all components
251        SET(CPACK_COMPONENTS_ALL ${PACKAGE_HEADERS} ${PACKAGE_LIB} ${PACKAGE_DATA} ${PACKAGE_SRC})
252
253        # group according package properties
254        SET(CPACK_COMPONENT_GROUP_DEV_DISPLAY_NAME "Development")
255        SET(CPACK_COMPONENT_GROUP_RUNTIME_DISPLAY_NAME "Runtime")
256        SET(CPACK_COMPONENT_GROUP_EXTRA_DISPLAY_NAME "Extras")
257
258        # setup component properties
259        SET(CPACK_COMPONENT_HEADERS_DISPLAY_NAME "C/C++ Headers")
260        SET(CPACK_COMPONENT_HEADERS_DEPENDS ${PACKAGE_LIB})
261        SET(CPACK_COMPONENT_HEADERS_GROUP "Development")
262
263        SET(CPACK_COMPONENT_SOURCE_DISPLAY_NAME "C/C++ Sources")
264        SET(CPACK_COMPONENT_SOURCE_DEPENDS ${PACKAGE_HEADERS})
265        SET(CPACK_COMPONENT_SOURCE_DISABLED TRUE)
266        SET(CPACK_COMPONENT_SOURCE_GROUP "Development")
267
268        SET(CPACK_COMPONENT_LIBRARIES_DISPLAY_NAME "Runtime libraries")
269        SET(CPACK_COMPONENT_LIBRARIES_REQUIRED TRUE)
270        SET(CPACK_COMPONENT_LIBRARIES_GROUP "Runtime")
271
272        SET(CPACK_COMPONENT_DATA_DISPLAY_NAME "Data files for Examples")
273        SET(CPACK_COMPONENT_DATA_DISABLED TRUE)
274        SET(CPACK_COMPONENT_DATA_GROUP "Extras")
275
276        SET(CPACK_COMPONENT_EXAMPLES_DISPLAY_NAME "C/C++ Example Sources")
277        SET(CPACK_COMPONENT_EXAMPLES_DEPENDS ${PACKAGE_HEADERS} ${PACKAGE_LIB} ${PACKAGE_SRC})
278        SET(CPACK_COMPONENT_EXAMPLES_DISABLED TRUE)
279        SET(CPACK_COMPONENT_EXAMPLES_GROUP "Extras")
280
281        # if we would like to build them
282        IF(BUILD_OSGPPU_PACKAGES)
283
284                # include all macros which will specify target build for the packages
285                INCLUDE(OsgPPUCPack)
286
287                SET(PACKAGE_GROUP "")
288                list(APPEND PACKAGE_GROUP ${PACKAGE_HEADERS})
289                list(APPEND PACKAGE_GROUP ${PACKAGE_SRC})
290                list(APPEND PACKAGE_GROUP ${PACKAGE_EXAMPLES})
291                GENERATE_PACKAGING_GROUP_TARGET("complete")
292
293        ENDIF(BUILD_OSGPPU_PACKAGES)
294ENDIF(CMAKE_CPACK_COMMAND)
295
296
297################################################################################
298# Create bin and lib directories if required
299################################################################################
300#IF("${CMAKE_SOURCE_DIR}" STREQUAL "${CMAKE_BINARY_DIR}")
301#   FILE(MAKE_DIRECTORY ${CMAKE_BINARY_DIR}/bin ${CMAKE_BINARY_DIR}/lib ${CMAKE_BINARY_DIR}/lib/${OSG_PLUGINS})
302#ENDIF("${CMAKE_SOURCE_DIR}" STREQUAL "${CMAKE_BINARY_DIR}")
303
304
305################################################################################
306# Set Config file
307################################################################################
308SET(OSGPPU_CONFIG_HEADER "${PROJECT_BINARY_DIR}/include/osgPPU/Config.h")
309CONFIGURE_FILE("${CMAKE_CURRENT_SOURCE_DIR}/src/osgPPU/Config.in"
310               "${OSGPPU_CONFIG_HEADER}")
311
312
313################################################################################
314### uninstall target
315################################################################################
316CONFIGURE_FILE(
317  "${CMAKE_CURRENT_SOURCE_DIR}/CMakeModules/cmake_uninstall.cmake.in"
318  "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake"
319  IMMEDIATE @ONLY)
320ADD_CUSTOM_TARGET(uninstall
321  "${CMAKE_COMMAND}" -P "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake")
322
323
324################################################################################
325# Compile subdirectory
326################################################################################
327ADD_SUBDIRECTORY(src)
328ADD_SUBDIRECTORY(Data)
329
Note: See TracBrowser for help on using the repository browser.