-
Notifications
You must be signed in to change notification settings - Fork 0
/
CMakeLists.txt
133 lines (105 loc) · 4.63 KB
/
CMakeLists.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
# The name of our project is "osgOcean". CMakeLists files in this project can
# refer to the root source directory of the project as ${osgOcean_SOURCE_DIR}
# to the root binary directory of the project as ${osgOcean_BINARY_DIR}.
cmake_minimum_required (VERSION 2.6 FATAL_ERROR)
project (osgOcean)
SET( CMAKE_RUNTIME_OUTPUT_DIRECTORY ${osgOcean_BINARY_DIR}/bin)
SET( CMAKE_LIBRARY_OUTPUT_DIRECTORY ${osgOcean_BINARY_DIR}/lib)
SET( CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${osgOcean_BINARY_DIR}/lib)
# Work around for building an xcode project. It seems XCode projects that
# built with CMake are not compatible with relative paths.
IF(NOT APPLE)
SET( CMAKE_USE_RELATIVE_PATHS true )
ENDIF()
SET(CMAKE_DEBUG_POSTFIX "d" CACHE STRING "add a postfix, usually d")
SET(CMAKE_RELEASE_POSTFIX "" CACHE STRING "add a postfix, usually empty")
SET(CMAKE_RELWITHDEBINFO_POSTFIX "rd" CACHE STRING "add a postfix, usually rd")
SET(CMAKE_MINSIZEREL_POSTFIX "s" CACHE STRING "add a postfix, usually s")
set(CMAKE_MODULE_PATH "${osgOcean_SOURCE_DIR}/CMakeModules;{CMAKE_MODULE_PATH}")
find_package (osg REQUIRED)
include_directories (${OSG_INCLUDE_DIR})
find_package (osgDB REQUIRED)
include_directories (${OSGDB_INCLUDE_DIR})
find_package (osgGA REQUIRED)
include_directories (${OSGGA_INCLUDE_DIR})
find_package (osgViewer REQUIRED)
include_directories (${OSGVIEWER_INCLUDE_DIR})
find_package (osgUtil REQUIRED)
include_directories (${OSGUTIL_INCLUDE_DIR})
find_package (osgText REQUIRED)
include_directories (${OSGTEXT_INCLUDE_DIR})
find_package (osgShadow REQUIRED)
include_directories (${OSGSHADOW_INCLUDE_DIR})
find_package (OpenThreads REQUIRED)
include_directories(${OPENTHREADS_INCLUDE_DIR})
IF (NOT WIN32)
IF (NOT OSG_LIBRARY_DEBUG)
SET(OSG_LIBRARY_DEBUG ${OSG_LIBRARY})
ENDIF()
IF (NOT OSGDB_LIBRARY_DEBUG)
SET(OSGDB_LIBRARY_DEBUG ${OSGDB_LIBRARY})
ENDIF()
IF (NOT OSGGA_LIBRARY_DEBUG)
SET(OSGGA_LIBRARY_DEBUG ${OSGGA_LIBRARY})
ENDIF()
IF (NOT OSGVIEWER_LIBRARY_DEBUG)
SET(OSGVIEWER_LIBRARY_DEBUG ${OSGVIEWER_LIBRARY})
ENDIF()
IF (NOT OSGUTIL_LIBRARY_DEBUG)
SET(OSGUTIL_LIBRARY_DEBUG ${OSGUTIL_LIBRARY})
ENDIF()
IF (NOT OSGTEXT_LIBRARY_DEBUG)
SET(OSGTEXT_LIBRARY_DEBUG ${OSGTEXT_LIBRARY})
ENDIF()
IF (NOT OPENTHREADS_LIBRARY_DEBUG)
SET(OPENTHREADS_LIBRARY_DEBUG ${OPENTHREADS_LIBRARY})
ENDIF()
ENDIF()
find_package (OpenGL REQUIRED)
include_directories (${OPENGL_INCLUDE_DIR})
OPTION(USE_FFTW3 "Use FFTW3 (double-precision) (GPL) as FFT library." OFF)
OPTION(USE_FFTW3F "Use FFTW3 (single-precision) (GPL) as FFT library." OFF)
OPTION(USE_FFTSS "Use FFTSS (LGPL) as FFT library." ON) # Use FFTSS by default.
# How do I enforce that only one of USE_FFTW3, USE_FFTW3F or USE_FFTSS should
# be selected at one time? Is there the concept of a radio-button or
# single-selection list in CMake? Right now it will just use the first one
# that is checked in the order below.
IF(USE_FFTSS)
find_package (fftss REQUIRED)
MESSAGE(STATUS "Using FFTSS (LGPL) as FFT library.")
ADD_DEFINITIONS(-DUSE_FFTSS)
SET( FFT_INCLUDE_DIR ${FFTSS_INCLUDE_DIR} )
SET( FFT_LIBRARY ${FFTSS_LIBRARY} )
SET(USE_FFTW3 FALSE)
SET(USE_FFTW3F FALSE)
ELSEIF(USE_FFTW3F)
find_package (fftw3f-3 REQUIRED)
MESSAGE(STATUS "Using FFTW3F (single-precision) (GPL) as FFT library.")
ADD_DEFINITIONS(-DUSE_FFTW3F)
SET( FFT_INCLUDE_DIR ${FFTW3F-3_INCLUDE_DIR} )
SET( FFT_LIBRARY ${FFTW3F-3_LIBRARY} )
SET(USE_FFTW3 FALSE)
SET(USE_FFTSS FALSE)
ELSEIF(USE_FFTW3)
find_package (fftw3-3 REQUIRED)
MESSAGE(STATUS "Using FFTW3 (double-precision) (GPL) as FFT library.")
ADD_DEFINITIONS(-DUSE_FFTW3)
SET( FFT_INCLUDE_DIR ${FFTW3-3_INCLUDE_DIR} )
SET( FFT_LIBRARY ${FFTW3-3_LIBRARY} )
SET(USE_FFTW3F FALSE)
SET(USE_FFTSS FALSE)
ELSE()
# Error if none of the three is selected.
MESSAGE("No FFT library selected, you will not be able to generate ocean surfaces.")
ENDIF()
IF (WIN32)
# This option is to enable the /DYNAMICBASE switch
# It is used to workaround a bug in Windows 7 when linking in release, which results in corrupt
# binaries. See this page for details: http://www.wintellect.com/CS/blogs/jrobbins/archive/2009/01/24/the-case-of-the-corrupt-pe-binaries.aspx
OPTION(WIN32_USE_DYNAMICBASE "Set to ON to build osgOcean with the /DYNAMICBASE option to work around a bug when linking release executables on Windows 7." OFF)
MARK_AS_ADVANCED(WIN32_USE_DYNAMICBASE)
IF(WIN32_USE_DYNAMICBASE)
SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /DYNAMICBASE")
ENDIF(WIN32_USE_DYNAMICBASE)
ENDIF()
add_subdirectory (src)