blob: f82782e8c000761d49af2e303b8437d61c27aa09 (
plain) (
blame)
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
|
# cudacmake_minimum_required(VERSION 3.3)
cmake_minimum_required(VERSION 3.3)
project(WaveWorks CXX)
CMAKE_POLICY(SET CMP0057 NEW) # Enable IN_LIST
SET(GW_DEPS_ROOT $ENV{PM_PACKAGES_ROOT})
LIST(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_LIST_DIR}/cmake)
MESSAGE(${CMAKE_MODULE_PATH})
# TODO: Fail if we didn't find deps
IF(CMAKE_CONFIGURATION_TYPES)
SET(CMAKE_CONFIGURATION_TYPES debug release)
SET(CMAKE_CONFIGURATION_TYPES "${CMAKE_CONFIGURATION_TYPES}" CACHE STRING
"Reset config to what we need"
FORCE)
SET(CMAKE_SHARED_LINKER_FLAGS_CHECKED "")
SET(CMAKE_SHARED_LINKER_FLAGS_PROFILE "")
ENDIF()
# Handle different platforms. So far, Windows, PS4, XBone, Linux... More?
IF(NOT DEFINED TARGET_BUILD_PLATFORM) # Not defined, default to Windows
SET(TARGET_BUILD_PLATFORM "Windows")
ENDIF()
SET(PLATFORM_LIST Windows PS4 XBoxOne OSX Android)
IF (NOT ${TARGET_BUILD_PLATFORM} IN_LIST PLATFORM_LIST)
MESSAGE(FATAL_ERROR "Invalid platform:" ${TARGET_BUILD_PLATFORM})
ENDIF()
IF(TARGET_BUILD_PLATFORM STREQUAL "Windows")
#/GS /Gm /Od /MTd
#/GS- /Gy /Gm- /Ox /Ob2 /GF /Oy /MT /Ot
SET(CMAKE_CXX_FLAGS "/W4 /Zc:wchar_t /Zi /errorReport:prompt /Zc:forScope /fp:fast /WX- /GR- /Gd /openmp- /nologo")
SET(CMAKE_CXX_FLAGS_DEBUG "/GS /Gm /Od /MTd")
SET(CMAKE_CXX_FLAGS_RELEASE "/GS- /Gy /Gm- /Ox /Ob2 /GF /Oy /MT /Ot")
IF(CMAKE_CL_64)
ADD_DEFINITIONS(-DWIN64)
ENDIF(CMAKE_CL_64)
ADD_DEFINITIONS(-DUNICODE -D_UNICODE)
ELSEIF(TARGET_BUILD_PLATFORM STREQUAL "PS4")
SET(CMAKE_CXX_FLAGS "-fdiagnostics-show-option -fno-rtti -fno-exceptions -ffast-math -ffunction-sections -fdata-sections -Werror -ferror-limit=0 -Wall -Wextra -fstrict-aliasing -Wstrict-aliasing=2 -pedantic -Weverything -Wno-documentation-deprecated-sync -Wno-documentation-unknown-command -Wno-float-equal -Wno-padded -Wno-weak-vtables -Wno-cast-align -Wno-conversion -Wno-missing-noreturn -Wno-missing-variable-declarations -Wno-shift-sign-overflow -Wno-covered-switch-default -Wno-exit-time-destructors -Wno-global-constructors -Wno-missing-prototypes -Wno-unreachable-code -Wno-unused-macros -Wno-unused-member-function -Wno-used-but-marked-unused -Wno-weak-template-vtables -Wno-deprecated")
SET(CMAKE_CXX_FLAGS_DEBUG "-O0 -g")
SET(CMAKE_CXX_FLAGS_CHECKED "-O2")
SET(CMAKE_CXX_FLAGS_PROFILE "-O2")
SET(CMAKE_CXX_FLAGS_RELEASE "-O2")
ELSEIF(TARGET_BUILD_PLATFORM STREQUAL "XBoxOne")
SET(CMAKE_CXX_FLAGS "/Wall /wd4512 /wd4324 /wd4127 /wd4505 /wd4100 /wd4714 /WX /W4 /GF /GR- /Gd /fp:fast /Zp16 /favor:AMD64 /MDd")
SET(CMAKE_CXX_FLAGS_DEBUG "/Od")
SET(CMAKE_CXX_FLAGS_CHECKED "/Ox")
SET(CMAKE_CXX_FLAGS_PROFILE "/Ox /Oi /Zi")
SET(CMAKE_CXX_FLAGS_RELEASE "/0x /Oi")
SET(CMAKE_SHARED_LINKER_FLAGS "/IGNORE:4221")
ENDIF()
# Default to appending "DEBUG", "PROFILE", etc to produced artifacts
IF(NOT DEFINED APPEND_CONFIG_NAME)
SET(APPEND_CONFIG_NAME ON)
ENDIF()
IF (APPEND_CONFIG_NAME)
MESSAGE("Appending config to output names")
SET(CMAKE_DEBUG_POSTFIX "_debug")
SET(CMAKE_RELEASE_POSTFIX "")
ENDIF()
IF (TARGET_BUILD_PLATFORM STREQUAL "Windows")
IF(CMAKE_CL_64)
SET(LIBPATH_SUFFIX "win64")
ELSE(CMAKE_CL_64)
SET(LIBPATH_SUFFIX "Win32")
ENDIF(CMAKE_CL_64)
SET(CMAKE_DEBUG_POSTFIX "${CMAKE_DEBUG_POSTFIX}.${LIBPATH_SUFFIX}")
SET(CMAKE_RELEASE_POSTFIX "${CMAKE_RELEASE_POSTFIX}.${LIBPATH_SUFFIX}")
ENDIF()
IF(NOT DEFINED WW_OUTPUT_DIR)
# If there's no output dir set, default to something somewhat sensible.
SET(WW_OUTPUT_DIR ${CMAKE_SOURCE_DIR}/Lib/cmake/)
ENDIF()
# Only set this once, to avoid cascading sets.
IF(NOT DEFINED FINAL_OUTPUT_DIR)
# We assume that WW_OUTPUT_DIR is a RELATIVE path.
SET(FINAL_OUTPUT_DIR ${CMAKE_SOURCE_DIR}/${WW_OUTPUT_DIR})
ENDIF()
MESSAGE("Final Output Directory: " ${FINAL_OUTPUT_DIR})
# Override the default output directories for all configurations.
SET(CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG ${FINAL_OUTPUT_DIR})
SET(CMAKE_LIBRARY_OUTPUT_DIRECTORY_DEBUG ${FINAL_OUTPUT_DIR})
SET(CMAKE_ARCHIVE_OUTPUT_DIRECTORY_DEBUG ${FINAL_OUTPUT_DIR})
SET(CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE ${FINAL_OUTPUT_DIR})
SET(CMAKE_LIBRARY_OUTPUT_DIRECTORY_RELEASE ${FINAL_OUTPUT_DIR})
SET(CMAKE_ARCHIVE_OUTPUT_DIRECTORY_RELEASE ${FINAL_OUTPUT_DIR})
# Include all of the projects
INCLUDE(compiler/cmake/NvWaveWorks.cmake)
INCLUDE(compiler/cmake/test_d3d11.cmake)
INCLUDE(compiler/cmake/sample_d3d11.cmake)
# TODO: Switch between CUDA/DirectCompute
INCLUDE(compiler/cmake/sample_opengl.cmake)
|