forked from vsg-dev/osg2vsg
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCMakeLists.txt
140 lines (106 loc) · 4.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
cmake_minimum_required(VERSION 3.7)
project(OSG2VSG
VERSION 0.0.0
DESCRIPTION "OpenSceneGraph/VulkanSceneGraph integration library"
LANGUAGES CXX
)
set(OSG2VSG_SOVERSION 0)
SET(OSG2VSG_RELEASE_CANDIDATE 0)
set(OUTPUT_BINDIR ${PROJECT_BINARY_DIR}/bin)
set(OUTPUT_LIBDIR ${PROJECT_BINARY_DIR}/lib)
#set(OSG_PLUGINS_DIRECTORY osgPlugins-$OSG_MAJOR_VERSION}.$OSG_MINOR_VERSION}.${OSG_PATCH_VERSION})
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${OUTPUT_LIBDIR})
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${OUTPUT_BINDIR})
SET(CMAKE_MODULE_PATH "${OSG2VSG_SOURCE_DIR}/CMakeModules;${CMAKE_MODULE_PATH}")
SET(CMAKE_DEBUG_POSTFIX "d" CACHE STRING "add a postfix, usually d on windows")
SET(CMAKE_RELEASE_POSTFIX "" CACHE STRING "add a postfix, usually empty on windows")
SET(CMAKE_RELWITHDEBINFO_POSTFIX "rd" CACHE STRING "add a postfix, usually empty on windows")
SET(CMAKE_MINSIZEREL_POSTFIX "s" CACHE STRING "add a postfix, usually empty on windows")
if(WIN32)
SET(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${OUTPUT_BINDIR})
else(WIN32)
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${OUTPUT_LIBDIR})
endif(WIN32)
# set up local bin directory to place all binaries
if(WIN32)
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${OUTPUT_BINDIR})
# set up local bin directory to place all binaries
make_directory(${OUTPUT_BINDIR})
make_directory(${OUTPUT_LIBDIR})
else(WIN32)
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${OUTPUT_LIBDIR})
# set up local bin directory to place all binaries
make_directory(${OUTPUT_LIBDIR})
endif(WIN32)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${OUTPUT_BINDIR})
# Change the default build type to Release
if(NOT CMAKE_BUILD_TYPE)
set(CMAKE_BUILD_TYPE Release CACHE STRING "Choose the type of build, options are: None Debug Release RelWithDebInfo MinSizeRel." FORCE)
endif(NOT CMAKE_BUILD_TYPE)
if(CMAKE_COMPILER_IS_GNUCXX)
set(VSG_WARNING_FLAGS -Wall -Wparentheses -Wno-long-long -Wno-import -Wreturn-type -Wmissing-braces -Wunknown-pragmas -Wmaybe-uninitialized -Wshadow -Wunused -Wno-misleading-indentation -Wextra)
elseif(CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
set(VSG_WARNING_FLAGS -Wall -Wparentheses -Wno-long-long -Wno-import -Wreturn-type -Wmissing-braces -Wunknown-pragmas -Wuninitialized -Wunused -Wextra -Wno-overloaded-virtual)
endif()
set(VSG_WARNING_FLAGS ${VSG_WARNING_FLAGS} CACHE STRING "Compiler flags to use." FORCE)
foreach (flag ${VSG_WARNING_FLAGS})
if(NOT CMAKE_CXX_FLAGS MATCHES "${flag}")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${flag}")
endif()
endforeach ()
set(OpenGL_GL_PREFERENCE "GLVND")
find_package(OpenGL REQUIRED)
# Find OpenSceneGraph packages for reference
# set prefrence for using modern OpenGL library.
find_package(OpenThreads REQUIRED)
find_package(osg REQUIRED)
find_package(osgDB REQUIRED)
find_package(osgTerrain REQUIRED)
find_package(osgUtil REQUIRED)
if (VULKAN_SDK)
set(ENV{VULKAN_SDK} ${VULKAN_SDK})
endif()
find_package(vsg REQUIRED)
add_custom_target(clobber
COMMAND git clean -d -f -x
)
# automatically buil_all_h build target to generate the include/vsg/all.h from the headers in the include/vsg/* directories
add_custom_target(uninstall
COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_SOURCE_DIR}/build/uninstall.cmake
)
option(MAINTAINER "Enable maintainer build methods, such as making git branches and tags." OFF)
if (MAINTAINER)
#
# Provide target for tagging a release
#
SET(BASE_NAME osg2vsg)
SET(OSG2VSG_BRANCH ${BASE_NAME}-${OSG2VSG_VERSION_MAJOR}.${OSG2VSG_VERSION_MINOR})
SET(GITCOMMAND git)
IF (OSG2VSG_RELEASE_CANDIDATE EQUAL 0)
SET(RELEASE_NAME ${BASE_NAME}-${OSG2VSG_VERSION})
ELSE()
SET(RELEASE_NAME ${BASE_NAME}-${OSG2VSG_VERSION}-rc${OSG2VSG_RELEASE_CANDIDATE})
ENDIF()
SET(RELEASE_MESSAGE "Release ${RELEASE_NAME}")
SET(BRANCH_MESSAGE "Branch ${OSG2VSG_BRANCH}")
add_custom_target(tag-test
COMMAND echo ${GITCOMMAND} tag -a ${RELEASE_NAME} -m ${RELEASE_MESSAGE}
COMMAND echo ${GITCOMMAND} push origin ${RELEASE_NAME}
)
add_custom_target(tag-run
COMMAND ${GITCOMMAND} tag -a ${RELEASE_NAME} -m ${RELEASE_MESSAGE}
COMMAND ${GITCOMMAND} push origin ${RELEASE_NAME}
)
add_custom_target(branch-test
COMMAND echo ${GITCOMMAND} branch ${OSG2VSG_BRANCH}
COMMAND echo ${GITCOMMAND} push origin ${OSG2VSG_BRANCH}
)
add_custom_target(branch-run
COMMAND ${GITCOMMAND} branch ${OSG2VSG_BRANCH}
COMMAND ${GITCOMMAND} push origin ${OSG2VSG_BRANCH}
)
endif()
# src directory contains all the example applications etc.
add_subdirectory(src/osg2vsg)
add_subdirectory(src/osgPlugins/vsg)
add_subdirectory(applications)