forked from MicBosi/VisualizationLibrary
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCMakeLists.txt
177 lines (146 loc) · 6.6 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
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
################################################################################
# #
# Copyright (c) 2005-2020, Michele Bosi, Thiago Bastos #
# All rights reserved. #
# #
# This file is part of Visualization Library #
# http://visualizationlibrary.org #
# http://visualizationlibrary.org #
# #
# Released under the OSI approved Simplified BSD License #
# http://www.opensource.org/licenses/bsd-license.php #
# #
################################################################################
# Current Version
set(VL_VERSION_MAJOR "2")
set(VL_VERSION_MINOR "0")
set(VL_VERSION_PATCH "0")
set(VL_VERSION "${VL_VERSION_MAJOR}.${VL_VERSION_MINOR}")
set(VL_VERSION_FULL "${VL_VERSION_MAJOR}.${VL_VERSION_MINOR}.${VL_VERSION_PATCH}")
################################################################################
# Initialization
################################################################################
project(Visualization_Library_SDK)
# Must be called after project!
cmake_minimum_required(VERSION 3.0)
add_compile_options($<$<CXX_COMPILER_ID:MSVC>:/MP4>)
################################################################################
# Global Build Settings (config.hpp.in)
################################################################################
set(VL_USER_DATA_OBJECT 0 CACHE BOOL "Enable vl::Object user data.")
set(VL_USER_DATA_ACTOR 0 CACHE BOOL "Enable vl::Object user data.")
set(VL_USER_DATA_TRANSFORM 0 CACHE BOOL "Enable vl::Object user data.")
set(VL_USER_DATA_SHADER 0 CACHE BOOL "Enable vl::Object user data.")
if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
set(VL_PLATFORM_MACOSX 1)
elseif(${CMAKE_SYSTEM_NAME} MATCHES "Linux")
set(VL_PLATFORM_LINUX 1)
option(VL_UNIX_INSTALL_MODE "Set to ON to install VL into default UNIX path structure." OFF)
elseif(${CMAKE_SYSTEM_NAME} MATCHES "Windows")
set(VL_PLATFORM_WINDOWS 1)
else()
message(FATAL_ERROR "Unable to detect platform!")
endif()
message(STATUS "System detected: \"${CMAKE_SYSTEM_NAME}\"")
# OpenGL, OpenGL ES 1 or OpenGL ES 2 mode
set(VL_OPENGL_MODE "OPENGL" CACHE STRING "Set it to OPENGL, OPENGL_ES1 or OPENGL_ES2 to build VL for OpenGL, OpenGL ES 1.x or OpenGL ES 2.x")
if( VL_OPENGL_MODE STREQUAL "OPENGL")
set(VL_OPENGL 1)
message(STATUS "Configuring for OpenGL 1.x/2.x/3.x/4.x")
elseif( VL_OPENGL_MODE STREQUAL "OPENGL_ES1")
set(VL_OPENGL_ES1 1)
message(STATUS "Configuring for OpenGL ES 1.x")
elseif( VL_OPENGL_MODE STREQUAL "OPENGL_ES2")
set(VL_OPENGL_ES2 1)
message(STATUS "Configuring for OpenGL ES 2.x")
else()
message(FATAL_ERROR "Invalid VL_OPENGL_MODE! Valid modes are: OPENGL, OPENGL_ES1, OPENGL_ES2.")
endif()
################################################################################
# Dynamic vs Static Linking
option(VL_DYNAMIC_LINKING "Set to ON to build VL for dynamic linking, or OFF for static." ON)
if(VL_DYNAMIC_LINKING)
add_definitions(-DVL_DYNAMIC_LINKING)
set(VL_SHARED_OR_STATIC "SHARED")
else()
add_definitions(-DVL_STATIC_LINKING)
set(VL_SHARED_OR_STATIC "STATIC")
endif()
# Common Dirs
set(VL_DATA_DIR "${CMAKE_SOURCE_DIR}/data")
set(3RDPARTY_DIR "${CMAKE_SOURCE_DIR}/src/external")
# Header Install Dir
if(VL_UNIX_INSTALL_MODE)
set(VL_INCLUDE_INSTALL_DIR "include/vl")
else()
set(VL_INCLUDE_INSTALL_DIR "include")
endif()
# Add our dir to the CMake modules path and include our InternalMacros file
list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake" )
include( InternalMacros )
# Debug postfix for all libraries.
set(CMAKE_DEBUG_POSTFIX "-d")
# Default output locations for the various target types.
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "bin")
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "lib")
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "lib")
# Shared include paths for all subprojects
include_directories( "src" "src/gui" "${CMAKE_BINARY_DIR}/src" "${3RDPARTY_DIR}/Khronos" )
# High Warning Level
if(MSVC10)
set(CMAKE_CXX_FLAGS "/W4 /EHsc /MP")
add_definitions(-D_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES)
elseif(MSVC)
set(CMAKE_CXX_FLAGS "/W4 /EHsc")
add_definitions(-D_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES)
else()
set(CMAKE_CXX_FLAGS "-W -Wall") # see also: -W -Wall -Wwrite-strings -Wcast-qual -Wconversion -Wshadow
endif()
if(WIN32)
add_definitions(-DUNICODE)
endif()
if(MSVC)
set(WINVER "0x0600" CACHE STRING "WINVER version (see MSDN documentation)")
add_definitions(-DWINVER=${WINVER})
add_definitions(-D_WIN32_WINNT=${WINVER})
endif()
# Required Dependencies
if( VL_OPENGL_MODE STREQUAL "OPENGL")
find_package(OpenGL REQUIRED)
set(VL_OPENGL_LIBRARIES ${OPENGL_LIBRARIES})
endif()
if( VL_OPENGL_ES1 OR VL_OPENGL_ES2 )
include( SetupGLES )
set(VL_OPENGL_LIBRARIES ${VL_GLES_LIBRARY} ${VL_EGL_LIBRARY})
endif()
################################################################################
# Packaging
################################################################################
set(CPACK_PACKAGE_NAME "${CMAKE_PROJECT_NAME}")
set(CPACK_PACKAGE_VERSION_MAJOR "${VL_VERSION_MAJOR}")
set(CPACK_PACKAGE_VERSION_MINOR "${VL_VERSION_MINOR}")
set(CPACK_PACKAGE_VERSION_PATCH "${VL_VERSION_PATCH}")
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "A lightweight C++ OpenGL middleware for 2D and 3D graphics.")
if(WIN32)
set(CPACK_GENERATOR "ZIP")
else()
set(CPACK_GENERATOR "TBZ2")
endif()
include( CPack )
################################################################################
# Subdirectories
################################################################################
add_subdirectory("docs")
add_subdirectory("data")
add_subdirectory("src")
################################################################################
# Install Rules
################################################################################
file(GLOB VL_MK_FILES "*.md")
if(VL_UNIX_INSTALL_MODE)
install(FILES ${VL_MK_FILES} DESTINATION "share/vl")
install(FILES "cmake/FindVL.cmake" DESTINATION "share/cmake/Modules")
else()
install(FILES ${VL_MK_FILES} DESTINATION ".")
install(FILES "cmake/FindVL.cmake" DESTINATION "cmake")
endif()