CMakeLists.txt 21.3 KB
Newer Older
1
2
project(Bonzomatic)

Gargaj's avatar
Gargaj committed
3
4
5
6
cmake_minimum_required(VERSION 2.8.12)

set(CMAKE_OSX_ARCHITECTURES x86_64)
set(CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake)
7
8
9
10
11
12
13
14

set(BZC_EXE_NAME "Bonzomatic")

set(VERSION_MAJOR "1")
set(VERSION_MINOR "0")
set(VERSION_PATCH "0")

option(BONZOMATIC_64BIT "Compile for 64 bit target?" ON)
Gargaj's avatar
Gargaj committed
15
16
17
18
19
20
21
22
23
24
if (MSVC)
  if (CMAKE_GENERATOR MATCHES "64")
    set(BONZOMATIC_64BIT ON CACHE BOOL "Compile for 64 bit target?")
  else ()
    set(BONZOMATIC_64BIT OFF CACHE BOOL "Compile for 64 bit target?")
  endif ()
else ()
  set(BONZOMATIC_64BIT ON CACHE BOOL "Compile for 64 bit target?")
endif ()

25
26
option(BONZOMATIC_NDI "Enable NDI?" OFF)

27
28
set(BONZOMATIC_WINDOWS_FLAVOR "DX11" CACHE STRING "Windows renderer flavor selected at CMake configure time (DX11, DX9 or GLFW)")
set_property(CACHE BONZOMATIC_WINDOWS_FLAVOR PROPERTY STRINGS DX11 DX9 GLFW) 
29
30

set(CMAKE_INSTALL_PREFIX ${CMAKE_BINARY_DIR})
31
32
33
if (APPLE)
  set(CMAKE_FIND_FRAMEWORK LAST)
endif ()
34
35

add_definitions(-DSCI_LEXER -DSCI_NAMESPACE)
Gargaj's avatar
Gargaj committed
36
37
38
if (UNIX)
  add_definitions(-DGTK)
endif ()
39

Gargaj's avatar
Gargaj committed
40
41
42
43
44
if (MSVC)
  #set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /VERBOSE")
  #set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} /VERBOSE")
  #set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} /VERBOSE")
  if (BONZOMATIC_64BIT)
45
    set(BZC_LINK_DIRS ${BZC_LINK_DIRS} $ENV{DXSDK_DIR}/lib/x64)
Gargaj's avatar
Gargaj committed
46
  else ()
47
    set(BZC_LINK_DIRS ${BZC_LINK_DIRS} $ENV{DXSDK_DIR}/lib/x86)
Gargaj's avatar
Gargaj committed
48
  endif ()
49
50
endif ()

51
52
# Dont compile glfw and glew for windows dx targets
if (APPLE OR UNIX OR (MSVC AND (${BONZOMATIC_WINDOWS_FLAVOR} MATCHES "GLFW")))
Gargaj's avatar
Gargaj committed
53
  ##############################################################################
54
55
56
57
58
59
60
61
62
63
64
65
  # GLFW
  # GLFW settings and project inclusion
  set(GLFW_BUILD_EXAMPLES OFF CACHE BOOL "" FORCE)
  set(GLFW_BUILD_TESTS OFF CACHE BOOL "" FORCE)
  set(GLFW_BUILD_DOCS OFF CACHE BOOL "" FORCE)
  set(GLFW_INSTALL OFF CACHE BOOL "" FORCE)
  mark_as_advanced(GLFW_BUILD_EXAMPLES GLFW_BUILD_TESTS GLFW_BUILD_DOCS GLFW_INSTALL)
  if (APPLE)
    set(GLFW_USE_CHDIR OFF CACHE BOOL "" FORCE)
    set(GLFW_USE_RETINA OFF CACHE BOOL "" FORCE)
    set(GLFW_USE_MENUBAR ON CACHE BOOL "" FORCE)
    mark_as_advanced(GLFW_USE_CHDIR GLFW_USE_RETINA GLFW_USE_MENUBAR)
66
67
68
69
  elseif (MSVC)
    set(USE_MSVC_RUNTIME_LIBRARY_DLL OFF CACHE BOOL "" FORCE)
    mark_as_advanced(USE_MSVC_RUNTIME_LIBRARY_DLL)
  endif()
70
71
72
73
  add_subdirectory(${CMAKE_SOURCE_DIR}/external/glfw/)
  set(BZC_PROJECT_INCLUDES ${BZC_PROJECT_INCLUDES} ${CMAKE_SOURCE_DIR}/external/glfw/include)
  set(BZC_PROJECT_LIBS ${BZC_PROJECT_LIBS} glfw ${GLFW_LIBRARIES})

Gargaj's avatar
Gargaj committed
74
75
76
77
78
79
80
81
  ##############################################################################
  # GLEW
  set(GLEW_SRCS
  ${CMAKE_SOURCE_DIR}/external/glew/glew.c
  )
  add_library(bzc_glew STATIC ${GLEW_SRCS})
  target_include_directories(bzc_glew PUBLIC ${CMAKE_SOURCE_DIR}/external/glew)
  target_compile_definitions(bzc_glew PUBLIC -DGLEW_STATIC)
82
83
84
  if (MSVC)
    target_compile_options(bzc_glew PUBLIC "$<$<CONFIG:Release>:/MT>")
  endif ()
Gargaj's avatar
Gargaj committed
85
86
  set(BZC_PROJECT_INCLUDES ${BZC_PROJECT_INCLUDES} ${CMAKE_SOURCE_DIR}/external/glew)
  set(BZC_PROJECT_LIBS ${BZC_PROJECT_LIBS} bzc_glew)
87
88
89
else ()
  # for windows, use DirectX
  set(BZC_PROJECT_INCLUDES ${BZC_PROJECT_INCLUDES} $ENV{DXSDK_DIR}/Include)
90
91
92
93
94
endif ()

##############################################################################
# STB
set(BZC_PROJECT_INCLUDES ${BZC_PROJECT_INCLUDES}
Gargaj's avatar
Gargaj committed
95
  ${CMAKE_SOURCE_DIR}/external/stb
96
97
98
99
100
101
)

##############################################################################
# BASS
set(BZC_PROJECT_INCLUDES ${BZC_PROJECT_INCLUDES} ${CMAKE_SOURCE_DIR}/external/bass)
if (APPLE)
Gargaj's avatar
Gargaj committed
102
  set(BZC_PROJECT_LIBS ${BZC_PROJECT_LIBS} ${CMAKE_SOURCE_DIR}/external/bass/libbass.dylib)
103
elseif (UNIX)
Gargaj's avatar
Gargaj committed
104
  if (BONZOMATIC_64BIT)
Gargaj's avatar
Gargaj committed
105
    set(BZC_PROJECT_LIBS ${BZC_PROJECT_LIBS} ${CMAKE_SOURCE_DIR}/external/bass/x64/libbass.so)
Gargaj's avatar
Gargaj committed
106
  else ()
Gargaj's avatar
Gargaj committed
107
    set(BZC_PROJECT_LIBS ${BZC_PROJECT_LIBS} ${CMAKE_SOURCE_DIR}/external/bass/x86/libbass.so)
Gargaj's avatar
Gargaj committed
108
  endif ()
109
elseif (MSVC)
Gargaj's avatar
Gargaj committed
110
111
112
113
114
  if (BONZOMATIC_64BIT)
    set(BZC_PROJECT_LIBS ${BZC_PROJECT_LIBS} ${CMAKE_SOURCE_DIR}/external/bass/x64/bass.lib)
  else ()
    set(BZC_PROJECT_LIBS ${BZC_PROJECT_LIBS} ${CMAKE_SOURCE_DIR}/external/bass/x86/bass.lib)
  endif ()
115
116
117
118
119
endif ()

##############################################################################
# JSONXX
set(JSONXX_SRCS
Gargaj's avatar
Gargaj committed
120
  ${CMAKE_SOURCE_DIR}/external/jsonxx/jsonxx.cc
121
122
123
)
add_library(bzc_jsonxx STATIC ${JSONXX_SRCS})
target_include_directories(bzc_jsonxx PUBLIC ${CMAKE_SOURCE_DIR}/external/jsonxx)
124
125
126
if (MSVC)
  target_compile_options(bzc_jsonxx PUBLIC "$<$<CONFIG:Release>:/MT>")
endif ()
127
128
129
set(BZC_PROJECT_INCLUDES ${BZC_PROJECT_INCLUDES} ${CMAKE_SOURCE_DIR}/external/jsonxx)
set(BZC_PROJECT_LIBS ${BZC_PROJECT_LIBS} bzc_jsonxx)

130
131
##############################################################################
# NDI
132
if (MSVC AND BONZOMATIC_NDI)
133
134
  set(BZC_PROJECT_INCLUDES ${BZC_PROJECT_INCLUDES} "c:/Program Files/NewTek/NewTek NDI SDK/Include/")
  if (BONZOMATIC_64BIT)
135
136
137
    set(BZC_LINK_DIRS ${BZC_LINK_DIRS} "c:/Program Files/NewTek/NewTek NDI SDK/Lib/x64/")
  else ()
    set(BZC_LINK_DIRS ${BZC_LINK_DIRS} "c:/Program Files/NewTek/NewTek NDI SDK/Lib/x86/")
138
139
140
  endif ()
endif ()

141
142
143
##############################################################################
# SCINTILLA
set(SCINTILLA_SRCS
Gargaj's avatar
Gargaj committed
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
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
  ${CMAKE_SOURCE_DIR}/external/scintilla/lexers/LexA68k.cxx
  ${CMAKE_SOURCE_DIR}/external/scintilla/lexers/LexAbaqus.cxx
  ${CMAKE_SOURCE_DIR}/external/scintilla/lexers/LexAda.cxx
  ${CMAKE_SOURCE_DIR}/external/scintilla/lexers/LexAPDL.cxx
  ${CMAKE_SOURCE_DIR}/external/scintilla/lexers/LexAsm.cxx
  ${CMAKE_SOURCE_DIR}/external/scintilla/lexers/LexAsn1.cxx
  ${CMAKE_SOURCE_DIR}/external/scintilla/lexers/LexASY.cxx
  ${CMAKE_SOURCE_DIR}/external/scintilla/lexers/LexAU3.cxx
  ${CMAKE_SOURCE_DIR}/external/scintilla/lexers/LexAVE.cxx
  ${CMAKE_SOURCE_DIR}/external/scintilla/lexers/LexAVS.cxx
  ${CMAKE_SOURCE_DIR}/external/scintilla/lexers/LexBaan.cxx
  ${CMAKE_SOURCE_DIR}/external/scintilla/lexers/LexBash.cxx
  ${CMAKE_SOURCE_DIR}/external/scintilla/lexers/LexBasic.cxx
  ${CMAKE_SOURCE_DIR}/external/scintilla/lexers/LexBibTeX.cxx
  ${CMAKE_SOURCE_DIR}/external/scintilla/lexers/LexBullant.cxx
  ${CMAKE_SOURCE_DIR}/external/scintilla/lexers/LexCaml.cxx
  ${CMAKE_SOURCE_DIR}/external/scintilla/lexers/LexCLW.cxx
  ${CMAKE_SOURCE_DIR}/external/scintilla/lexers/LexCmake.cxx
  ${CMAKE_SOURCE_DIR}/external/scintilla/lexers/LexCOBOL.cxx
  ${CMAKE_SOURCE_DIR}/external/scintilla/lexers/LexCoffeeScript.cxx
  ${CMAKE_SOURCE_DIR}/external/scintilla/lexers/LexConf.cxx
  ${CMAKE_SOURCE_DIR}/external/scintilla/lexers/LexCPP.cxx
  ${CMAKE_SOURCE_DIR}/external/scintilla/lexers/LexCrontab.cxx
  ${CMAKE_SOURCE_DIR}/external/scintilla/lexers/LexCsound.cxx
  ${CMAKE_SOURCE_DIR}/external/scintilla/lexers/LexCSS.cxx
  ${CMAKE_SOURCE_DIR}/external/scintilla/lexers/LexD.cxx
  ${CMAKE_SOURCE_DIR}/external/scintilla/lexers/LexDMAP.cxx
  ${CMAKE_SOURCE_DIR}/external/scintilla/lexers/LexDMIS.cxx
  ${CMAKE_SOURCE_DIR}/external/scintilla/lexers/LexECL.cxx
  ${CMAKE_SOURCE_DIR}/external/scintilla/lexers/LexEiffel.cxx
  ${CMAKE_SOURCE_DIR}/external/scintilla/lexers/LexErlang.cxx
  ${CMAKE_SOURCE_DIR}/external/scintilla/lexers/LexEScript.cxx
  ${CMAKE_SOURCE_DIR}/external/scintilla/lexers/LexFlagship.cxx
  ${CMAKE_SOURCE_DIR}/external/scintilla/lexers/LexForth.cxx
  ${CMAKE_SOURCE_DIR}/external/scintilla/lexers/LexFortran.cxx
  ${CMAKE_SOURCE_DIR}/external/scintilla/lexers/LexGAP.cxx
  ${CMAKE_SOURCE_DIR}/external/scintilla/lexers/LexGui4Cli.cxx
  ${CMAKE_SOURCE_DIR}/external/scintilla/lexers/LexHaskell.cxx
  ${CMAKE_SOURCE_DIR}/external/scintilla/lexers/LexHTML.cxx
  ${CMAKE_SOURCE_DIR}/external/scintilla/lexers/LexInno.cxx
  ${CMAKE_SOURCE_DIR}/external/scintilla/lexers/LexKix.cxx
  ${CMAKE_SOURCE_DIR}/external/scintilla/lexers/LexKVIrc.cxx
  ${CMAKE_SOURCE_DIR}/external/scintilla/lexers/LexLaTeX.cxx
  ${CMAKE_SOURCE_DIR}/external/scintilla/lexers/LexLisp.cxx
  ${CMAKE_SOURCE_DIR}/external/scintilla/lexers/LexLout.cxx
  ${CMAKE_SOURCE_DIR}/external/scintilla/lexers/LexLua.cxx
  ${CMAKE_SOURCE_DIR}/external/scintilla/lexers/LexMagik.cxx
  ${CMAKE_SOURCE_DIR}/external/scintilla/lexers/LexMarkdown.cxx
  ${CMAKE_SOURCE_DIR}/external/scintilla/lexers/LexMatlab.cxx
  ${CMAKE_SOURCE_DIR}/external/scintilla/lexers/LexMetapost.cxx
  ${CMAKE_SOURCE_DIR}/external/scintilla/lexers/LexMMIXAL.cxx
  ${CMAKE_SOURCE_DIR}/external/scintilla/lexers/LexModula.cxx
  ${CMAKE_SOURCE_DIR}/external/scintilla/lexers/LexMPT.cxx
  ${CMAKE_SOURCE_DIR}/external/scintilla/lexers/LexMSSQL.cxx
  ${CMAKE_SOURCE_DIR}/external/scintilla/lexers/LexMySQL.cxx
  ${CMAKE_SOURCE_DIR}/external/scintilla/lexers/LexNimrod.cxx
  ${CMAKE_SOURCE_DIR}/external/scintilla/lexers/LexNsis.cxx
  ${CMAKE_SOURCE_DIR}/external/scintilla/lexers/LexOpal.cxx
  ${CMAKE_SOURCE_DIR}/external/scintilla/lexers/LexOScript.cxx
  ${CMAKE_SOURCE_DIR}/external/scintilla/lexers/LexOthers.cxx
  ${CMAKE_SOURCE_DIR}/external/scintilla/lexers/LexPascal.cxx
  ${CMAKE_SOURCE_DIR}/external/scintilla/lexers/LexPB.cxx
  ${CMAKE_SOURCE_DIR}/external/scintilla/lexers/LexPerl.cxx
  ${CMAKE_SOURCE_DIR}/external/scintilla/lexers/LexPLM.cxx
  ${CMAKE_SOURCE_DIR}/external/scintilla/lexers/LexPO.cxx
  ${CMAKE_SOURCE_DIR}/external/scintilla/lexers/LexPOV.cxx
  ${CMAKE_SOURCE_DIR}/external/scintilla/lexers/LexPowerPro.cxx
  ${CMAKE_SOURCE_DIR}/external/scintilla/lexers/LexPowerShell.cxx
  ${CMAKE_SOURCE_DIR}/external/scintilla/lexers/LexProgress.cxx
  ${CMAKE_SOURCE_DIR}/external/scintilla/lexers/LexPS.cxx
  ${CMAKE_SOURCE_DIR}/external/scintilla/lexers/LexPython.cxx
  ${CMAKE_SOURCE_DIR}/external/scintilla/lexers/LexR.cxx
  ${CMAKE_SOURCE_DIR}/external/scintilla/lexers/LexRebol.cxx
  ${CMAKE_SOURCE_DIR}/external/scintilla/lexers/LexRegistry.cxx
  ${CMAKE_SOURCE_DIR}/external/scintilla/lexers/LexRuby.cxx
  ${CMAKE_SOURCE_DIR}/external/scintilla/lexers/LexRust.cxx
  ${CMAKE_SOURCE_DIR}/external/scintilla/lexers/LexScriptol.cxx
  ${CMAKE_SOURCE_DIR}/external/scintilla/lexers/LexSmalltalk.cxx
  ${CMAKE_SOURCE_DIR}/external/scintilla/lexers/LexSML.cxx
  ${CMAKE_SOURCE_DIR}/external/scintilla/lexers/LexSorcus.cxx
  ${CMAKE_SOURCE_DIR}/external/scintilla/lexers/LexSpecman.cxx
  ${CMAKE_SOURCE_DIR}/external/scintilla/lexers/LexSpice.cxx
  ${CMAKE_SOURCE_DIR}/external/scintilla/lexers/LexSQL.cxx
  ${CMAKE_SOURCE_DIR}/external/scintilla/lexers/LexSTTXT.cxx
  ${CMAKE_SOURCE_DIR}/external/scintilla/lexers/LexTACL.cxx
  ${CMAKE_SOURCE_DIR}/external/scintilla/lexers/LexTADS3.cxx
  ${CMAKE_SOURCE_DIR}/external/scintilla/lexers/LexTAL.cxx
  ${CMAKE_SOURCE_DIR}/external/scintilla/lexers/LexTCL.cxx
  ${CMAKE_SOURCE_DIR}/external/scintilla/lexers/LexTCMD.cxx
  ${CMAKE_SOURCE_DIR}/external/scintilla/lexers/LexTeX.cxx
  ${CMAKE_SOURCE_DIR}/external/scintilla/lexers/LexTxt2tags.cxx
  ${CMAKE_SOURCE_DIR}/external/scintilla/lexers/LexVB.cxx
  ${CMAKE_SOURCE_DIR}/external/scintilla/lexers/LexVerilog.cxx
  ${CMAKE_SOURCE_DIR}/external/scintilla/lexers/LexVHDL.cxx
  ${CMAKE_SOURCE_DIR}/external/scintilla/lexers/LexVisualProlog.cxx
  ${CMAKE_SOURCE_DIR}/external/scintilla/lexers/LexYAML.cxx
  ${CMAKE_SOURCE_DIR}/external/scintilla/lexlib/Accessor.cxx
  ${CMAKE_SOURCE_DIR}/external/scintilla/lexlib/CharacterCategory.cxx
  ${CMAKE_SOURCE_DIR}/external/scintilla/lexlib/CharacterSet.cxx
  ${CMAKE_SOURCE_DIR}/external/scintilla/lexlib/LexerBase.cxx
  ${CMAKE_SOURCE_DIR}/external/scintilla/lexlib/LexerModule.cxx
  ${CMAKE_SOURCE_DIR}/external/scintilla/lexlib/LexerNoExceptions.cxx
  ${CMAKE_SOURCE_DIR}/external/scintilla/lexlib/LexerSimple.cxx
  ${CMAKE_SOURCE_DIR}/external/scintilla/lexlib/PropSetSimple.cxx
  ${CMAKE_SOURCE_DIR}/external/scintilla/lexlib/StyleContext.cxx
  ${CMAKE_SOURCE_DIR}/external/scintilla/lexlib/WordList.cxx
  ${CMAKE_SOURCE_DIR}/external/scintilla/src/AutoComplete.cxx
  ${CMAKE_SOURCE_DIR}/external/scintilla/src/CallTip.cxx
  ${CMAKE_SOURCE_DIR}/external/scintilla/src/CaseConvert.cxx
  ${CMAKE_SOURCE_DIR}/external/scintilla/src/CaseFolder.cxx
  ${CMAKE_SOURCE_DIR}/external/scintilla/src/Catalogue.cxx
  ${CMAKE_SOURCE_DIR}/external/scintilla/src/CellBuffer.cxx
  ${CMAKE_SOURCE_DIR}/external/scintilla/src/CharClassify.cxx
  ${CMAKE_SOURCE_DIR}/external/scintilla/src/ContractionState.cxx
  ${CMAKE_SOURCE_DIR}/external/scintilla/src/Decoration.cxx
  ${CMAKE_SOURCE_DIR}/external/scintilla/src/Document.cxx
  ${CMAKE_SOURCE_DIR}/external/scintilla/src/EditModel.cxx
  ${CMAKE_SOURCE_DIR}/external/scintilla/src/Editor.cxx
  ${CMAKE_SOURCE_DIR}/external/scintilla/src/EditView.cxx
  ${CMAKE_SOURCE_DIR}/external/scintilla/src/ExternalLexer.cxx
  ${CMAKE_SOURCE_DIR}/external/scintilla/src/Indicator.cxx
  ${CMAKE_SOURCE_DIR}/external/scintilla/src/KeyMap.cxx
  ${CMAKE_SOURCE_DIR}/external/scintilla/src/LineMarker.cxx
  ${CMAKE_SOURCE_DIR}/external/scintilla/src/MarginView.cxx
  ${CMAKE_SOURCE_DIR}/external/scintilla/src/PerLine.cxx
  ${CMAKE_SOURCE_DIR}/external/scintilla/src/PositionCache.cxx
  ${CMAKE_SOURCE_DIR}/external/scintilla/src/RESearch.cxx
  ${CMAKE_SOURCE_DIR}/external/scintilla/src/RunStyles.cxx
  ${CMAKE_SOURCE_DIR}/external/scintilla/src/ScintillaBase.cxx
  ${CMAKE_SOURCE_DIR}/external/scintilla/src/Selection.cxx
  ${CMAKE_SOURCE_DIR}/external/scintilla/src/Style.cxx
  ${CMAKE_SOURCE_DIR}/external/scintilla/src/UniConversion.cxx
  ${CMAKE_SOURCE_DIR}/external/scintilla/src/ViewStyle.cxx
  ${CMAKE_SOURCE_DIR}/external/scintilla/src/XPM.cxx
278
279
280
)
add_library(bzc_scintilla STATIC ${SCINTILLA_SRCS})
target_include_directories(bzc_scintilla PUBLIC
Gargaj's avatar
Gargaj committed
281
282
283
  ${CMAKE_SOURCE_DIR}/external/scintilla/include
  ${CMAKE_SOURCE_DIR}/external/scintilla/lexlib
  ${CMAKE_SOURCE_DIR}/external/scintilla/src
284
)
285
286
287
if (MSVC)
  target_compile_options(bzc_scintilla PUBLIC "$<$<CONFIG:Release>:/MT>")
endif ()
288
289
290
291
292
293
294
295
296
297
set(BZC_PROJECT_INCLUDES ${BZC_PROJECT_INCLUDES}
    ${CMAKE_SOURCE_DIR}/external/scintilla/include
    ${CMAKE_SOURCE_DIR}/external/scintilla/lexlib
    ${CMAKE_SOURCE_DIR}/external/scintilla/src
)
set(BZC_PROJECT_LIBS ${BZC_PROJECT_LIBS} bzc_scintilla)

##############################################################################
# BONZOMATIC
file(GLOB BZC_PROJECT_SRCS
Gargaj's avatar
Gargaj committed
298
299
  ${CMAKE_SOURCE_DIR}/src/*.cpp
  ${CMAKE_SOURCE_DIR}/src/*.h
300
301
302
)
source_group("Bonzomatic" FILES ${BZC_PROJECT_SRCS})
if (APPLE)
Gargaj's avatar
Gargaj committed
303
  set(BZC_PLATFORM_SRCS
304
    ${CMAKE_SOURCE_DIR}/src/platform_glfw/Renderer.cpp
305
    ${CMAKE_SOURCE_DIR}/src/platform_common/FFT.cpp
Gargaj's avatar
Gargaj committed
306
307
308
309
310
311
312
313
314
315
316
    ${CMAKE_SOURCE_DIR}/src/platform_x11/MIDI.cpp
    ${CMAKE_SOURCE_DIR}/src/platform_x11/Misc.cpp
    ${CMAKE_SOURCE_DIR}/src/platform_x11/SetupDialog.cpp
    ${CMAKE_SOURCE_DIR}/src/platform_x11/Timer.cpp
    ${CMAKE_SOURCE_DIR}/src/platform_osx/Clipboard.cpp
  )
  source_group("Bonzomatic\\Platform" FILES ${BZC_PLATFORM_SRCS})
  set(BZC_RESOURCES_DATA
    ${CMAKE_SOURCE_DIR}/data/macosx/icon.icns
  )
  source_group("Data" FILES ${BZC_RESOURCES_DATA})
317
elseif (UNIX)
Gargaj's avatar
Gargaj committed
318
  set(BZC_PLATFORM_SRCS
319
    ${CMAKE_SOURCE_DIR}/src/platform_glfw/Renderer.cpp
320
    ${CMAKE_SOURCE_DIR}/src/platform_common/FFT.cpp
Gargaj's avatar
Gargaj committed
321
322
323
324
325
326
327
    ${CMAKE_SOURCE_DIR}/src/platform_x11/MIDI.cpp
    ${CMAKE_SOURCE_DIR}/src/platform_x11/Misc.cpp
    ${CMAKE_SOURCE_DIR}/src/platform_x11/SetupDialog.cpp
    ${CMAKE_SOURCE_DIR}/src/platform_x11/Timer.cpp
    ${CMAKE_SOURCE_DIR}/src/platform_x11/Clipboard.cpp
  )
  source_group("Bonzomatic\\Platform" FILES ${BZC_PLATFORM_SRCS})
328
elseif (MSVC)
Gargaj's avatar
Gargaj committed
329
330
331
  if (${BONZOMATIC_WINDOWS_FLAVOR} MATCHES "DX11")
    set(BZC_PLATFORM_SRCS
      ${CMAKE_SOURCE_DIR}/src/platform_w32_dx11/Renderer.cpp
332
      ${CMAKE_SOURCE_DIR}/src/platform_common/FFT.cpp
Gargaj's avatar
Gargaj committed
333
334
335
336
337
338
339
340
341
342
      ${CMAKE_SOURCE_DIR}/src/platform_w32_common/MIDI.cpp
      ${CMAKE_SOURCE_DIR}/src/platform_w32_common/Misc.cpp
      ${CMAKE_SOURCE_DIR}/src/platform_w32_common/SetupDialog.cpp
      ${CMAKE_SOURCE_DIR}/src/platform_w32_common/Timer.cpp
      ${CMAKE_SOURCE_DIR}/src/platform_w32_common/Clipboard.cpp
      ${CMAKE_SOURCE_DIR}/data/windows/resource.h
    )
  elseif (${BONZOMATIC_WINDOWS_FLAVOR} MATCHES "DX9")
    set(BZC_PLATFORM_SRCS
      ${CMAKE_SOURCE_DIR}/src/platform_w32_dx9/Renderer.cpp
343
      ${CMAKE_SOURCE_DIR}/src/platform_common/FFT.cpp
Gargaj's avatar
Gargaj committed
344
345
346
347
348
349
350
351
352
      ${CMAKE_SOURCE_DIR}/src/platform_w32_common/MIDI.cpp
      ${CMAKE_SOURCE_DIR}/src/platform_w32_common/Misc.cpp
      ${CMAKE_SOURCE_DIR}/src/platform_w32_common/SetupDialog.cpp
      ${CMAKE_SOURCE_DIR}/src/platform_w32_common/Timer.cpp
      ${CMAKE_SOURCE_DIR}/src/platform_w32_common/Clipboard.cpp
      ${CMAKE_SOURCE_DIR}/data/windows/resource.h
    )
  else ()
    set(BZC_PLATFORM_SRCS
353
      ${CMAKE_SOURCE_DIR}/src/platform_glfw/Renderer.cpp
354
      ${CMAKE_SOURCE_DIR}/src/platform_common/FFT.cpp
Gargaj's avatar
Gargaj committed
355
356
357
358
359
360
361
362
363
      ${CMAKE_SOURCE_DIR}/src/platform_w32_common/MIDI.cpp
      ${CMAKE_SOURCE_DIR}/src/platform_w32_common/Misc.cpp
      ${CMAKE_SOURCE_DIR}/src/platform_w32_common/SetupDialog.cpp
      ${CMAKE_SOURCE_DIR}/src/platform_w32_common/Timer.cpp
      ${CMAKE_SOURCE_DIR}/src/platform_w32_common/Clipboard.cpp
      ${CMAKE_SOURCE_DIR}/data/windows/resource.h
    )
  endif ()
  source_group("Bonzomatic\\Platform" FILES ${BZC_PLATFORM_SRCS})
364

Gargaj's avatar
Gargaj committed
365
366
367
368
369
370
  set(BZC_RESOURCES_DATA
    ${CMAKE_SOURCE_DIR}/data/windows/icon.ico
    ${CMAKE_SOURCE_DIR}/data/windows/SetupDialog.rc
  )
  source_group("Data" FILES ${BZC_RESOURCES_DATA})
  set(BZC_PROJECT_INCLUDES ${CMAKE_SOURCE_DIR}/data/windows ${BZC_PROJECT_INCLUDES})
371
372
endif ()

373
374
375
376
377
378
379
380
381
382
383
384
if (MSVC AND BONZOMATIC_NDI)
  set(BZC_CAPTURE_SRCS
    ${CMAKE_SOURCE_DIR}/src/capturing/Capture_NDI.cpp
  )
else ()
  set(BZC_CAPTURE_SRCS
    ${CMAKE_SOURCE_DIR}/src/capturing/Capture_Dummy.cpp
  )
endif ()
source_group("Bonzomatic\\Capture" FILES ${BZC_CAPTURE_SRCS})

set(BZC_PROJECT_SRCS ${BZC_PROJECT_SRCS} ${BZC_PLATFORM_SRCS} ${BZC_RESOURCES_DATA} ${BZC_CAPTURE_SRCS})
385
386
387
388
389
390

set(BZC_PROJECT_INCLUDES ${CMAKE_SOURCE_DIR}/src ${BZC_PROJECT_INCLUDES})

##############################################################################
#### APPLE BUNDLE, RESSOURCES AND DYNAMIC LIBS
if (APPLE)
Gargaj's avatar
Gargaj committed
391
  set(GUI_TYPE MACOSX_BUNDLE)
392

Gargaj's avatar
Gargaj committed
393
394
395
396
397
398
399
400
401
  # Define some settings for the Bundle
  set(MACOSX_BUNDLE_BUNDLE_NAME ${BZC_EXE_NAME})
  set(MACOSX_BUNDLE_GUI_IDENTIFIER "${BZC_EXE_NAME}")
  set(MACOSX_BUNDLE_ICON_FILE icon.icns)
  set(MACOSX_BUNDLE_INFO_STRING "${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH},Copyright © 2016 The Bonzomatic Contributors")
  set(MACOSX_BUNDLE_SHORT_VERSION_STRING "${VERSION_MAJOR}.${VERSION_MINOR}")
  set(MACOSX_BUNDLE_LONG_VERSION_STRING "${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}")
  set(MACOSX_BUNDLE_BUNDLE_VERSION "${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}")
  set(MACOSX_BUNDLE_COPYRIGHT "Copyright © 2014-2016 The Bonzomatic Contributors. All rights reserved.")
402

Gargaj's avatar
Gargaj committed
403
  set_source_files_properties(${BZC_RESOURCES_DATA} PROPERTIES MACOSX_PACKAGE_LOCATION Resources)
404

Gargaj's avatar
Gargaj committed
405
406
407
  set(OSX_LIB_FILES ${CMAKE_SOURCE_DIR}/external/bass/libbass.dylib)
  set_source_files_properties(${OSX_LIB_FILES} PROPERTIES MACOSX_PACKAGE_LOCATION MacOS)
  set(BZC_PROJECT_SRCS ${BZC_PROJECT_SRCS} ${OSX_LIB_FILES})
408

Gargaj's avatar
Gargaj committed
409
  set(BZC_PROJECT_SRCS ${GUI_TYPE} ${BZC_PROJECT_SRCS})
410
411
412
413
414
415

  find_library(COCOA_FRAMEWORK Cocoa)
  find_library(OPENGL_FRAMEWORK OpenGL)
  find_library(CARBON_FRAMEWORK Carbon)
  mark_as_advanced(COCOA_FRAMEWORK OPENGL_FRAMEWORK CARBON_FRAMEWORK)
  set(PLATFORM_LIBS ${COCOA_FRAMEWORK} ${OPENGL_FRAMEWORK} ${CARBON_FRAMEWORK})
416
elseif (UNIX)
Gargaj's avatar
Gargaj committed
417
  set(PLATFORM_LIBS GL)
418
419
420
421
422
423
424
425
426
427
428
429
430
elseif (MSVC)
    if (${BONZOMATIC_WINDOWS_FLAVOR} MATCHES "DX11")
        set(PLATFORM_LIBS d3d11 d3dcompiler dxguid DXGI winmm)
    elseif (${BONZOMATIC_WINDOWS_FLAVOR} MATCHES "DX9")
        set(PLATFORM_LIBS d3d9 d3dx9 winmm)
    else ()
        set(PLATFORM_LIBS opengl32 glu32 winmm)
    endif ()
endif ()
set(BZC_PROJECT_LIBS ${BZC_PROJECT_LIBS} ${PLATFORM_LIBS})
##############################################################################

# create the executable
431
link_directories(${BZC_LINK_DIRS})
432
add_executable(${BZC_EXE_NAME} ${BZC_PROJECT_SRCS})
433
if (APPLE AND GLFW_USE_RETINA)
Gargaj's avatar
Gargaj committed
434
435
  # Add special plist to enable Retina display support
  set_target_properties(${BZC_EXE_NAME} PROPERTIES MACOSX_BUNDLE_INFO_PLIST ${CMAKE_SOURCE_DIR}/data/macosx/MacOSXBundleInfo.plist.in)
436
437
438
endif ()
# Set compiler specific flags
if (APPLE)
Gargaj's avatar
Gargaj committed
439
  #target_compile_options(${BZC_EXE_NAME} PUBLIC -Werror -pedantic-errors -Wall -Wno-format-security)
440
elseif (UNIX)
Gargaj's avatar
Gargaj committed
441
442
443
  if (NOT BONZOMATIC_64BIT)
  #  set_target_properties(${BZC_EXE_NAME} PROPERTIES COMPILE_FLAGS "-m32" LINK_FLAGS "-m32")
  endif ()
444
elseif (MSVC)
445
446
447
  if (BONZOMATIC_NDI)
    target_compile_definitions(${BZC_EXE_NAME} PUBLIC -DBONZOMATIC_ENABLE_NDI)
  endif ()
Gargaj's avatar
Gargaj committed
448
449
  set_target_properties(${BZC_EXE_NAME} PROPERTIES LINK_FLAGS "/SUBSYSTEM:CONSOLE")
  target_compile_options(${BZC_EXE_NAME} PUBLIC "$<$<CONFIG:Release>:/MT>")
450
endif ()
Gargaj's avatar
Gargaj committed
451
target_include_directories(${BZC_EXE_NAME} PUBLIC ${BZC_PROJECT_INCLUDES})
452
453
454
target_link_libraries(${BZC_EXE_NAME} ${BZC_PROJECT_LIBS})

if (MSVC)
Gargaj's avatar
Gargaj committed
455
456
  if (BONZOMATIC_64BIT)
    add_custom_command(TARGET ${BZC_EXE_NAME} POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_if_different "${CMAKE_SOURCE_DIR}/external/bass/x64/bass.dll" $<TARGET_FILE_DIR:${BZC_EXE_NAME}>)
457
  else ()
Gargaj's avatar
Gargaj committed
458
459
    add_custom_command(TARGET ${BZC_EXE_NAME} POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_if_different "${CMAKE_SOURCE_DIR}/external/bass/x86/bass.dll" $<TARGET_FILE_DIR:${BZC_EXE_NAME}>)
  endif ()
460
461
462
  if (BONZOMATIC_NDI)
    if (BONZOMATIC_64BIT)
      add_custom_command(TARGET ${BZC_EXE_NAME} POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_if_different "c:/Program Files/NewTek/NewTek NDI SDK/Bin/x64/Processing.NDI.Lib.x64.dll" $<TARGET_FILE_DIR:${BZC_EXE_NAME}>)
463
    else ()
464
465
      add_custom_command(TARGET ${BZC_EXE_NAME} POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_if_different "c:/Program Files/NewTek/NewTek NDI SDK/Bin/x86/Processing.NDI.Lib.x86.dll" $<TARGET_FILE_DIR:${BZC_EXE_NAME}>)
    endif ()
466
  endif ()
467
endif ()
468