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

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

set(CMAKE_OSX_ARCHITECTURES x86_64)
6

7
8
9
10
11
if (APPLE OR WIN32)
	set(BZC_EXE_NAME "Bonzomatic")
else ()
	set(BZC_EXE_NAME "bonzomatic")
endif ()
12
13
14

set(VERSION_MAJOR "1")
set(VERSION_MINOR "0")
15
string(TIMESTAMP VERSION_PATCH "%Y%m%d")
16

Chris White's avatar
Chris White committed
17
if (WIN32)
mathieu _alkama_ m's avatar
mathieu _alkama_ m committed
18
19
  option(BONZOMATIC_64BIT "Compile for 64 bit target?" ON)

Gargaj's avatar
Gargaj committed
20
21
22
23
24
25
26
  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 ()
endif ()

mathieu _alkama_ m's avatar
mathieu _alkama_ m committed
27
28
29
if (APPLE)
  option(BONZOMATIC_TOUCHBAR "Compile with macOS TouchBar support (Xcode 9 or newer required)?" ON)
endif ()
30

mathieu _alkama_ m's avatar
mathieu _alkama_ m committed
31
32
33
if (WIN32)
  option(BONZOMATIC_NDI "Enable NDI?" OFF)
endif ()
34

mathieu _alkama_ m's avatar
mathieu _alkama_ m committed
35
36
37
38
if (WIN32)
  set(BONZOMATIC_WINDOWS_FLAVOR "GLFW" 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) 
endif ()
39

40
41
42
43
if (NOT (UNIX AND (NOT APPLE))) #if not linux
  set(CMAKE_INSTALL_PREFIX ${CMAKE_BINARY_DIR})
endif ()

44
45
46
if (APPLE)
  set(CMAKE_FIND_FRAMEWORK LAST)
endif ()
47
48

add_definitions(-DSCI_LEXER -DSCI_NAMESPACE)
Gargaj's avatar
Gargaj committed
49
50
51
if (UNIX)
  add_definitions(-DGTK)
endif ()
52

Chris White's avatar
Chris White committed
53
if (WIN32)
Gargaj's avatar
Gargaj committed
54
55
56
57
  #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)
58
    set(BZC_LINK_DIRS ${BZC_LINK_DIRS} $ENV{DXSDK_DIR}/lib/x64)
Gargaj's avatar
Gargaj committed
59
  else ()
60
    set(BZC_LINK_DIRS ${BZC_LINK_DIRS} $ENV{DXSDK_DIR}/lib/x86)
Gargaj's avatar
Gargaj committed
61
  endif ()
62
63
endif ()

64
65
66
67
68
69
70
if (APPLE)
  set(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LANGUAGE_STANDARD "c++14")
  set(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LIBRARY "libc++")
  set(CMAKE_XCODE_ATTRIBUTE_GCC_ENABLE_CPP_EXCEPTIONS "No")
  set(CMAKE_XCODE_ATTRIBUTE_GCC_ENABLE_CPP_RTTI "No")
endif ()

71
# Dont compile glfw and glew for windows dx targets
Chris White's avatar
Chris White committed
72
if (APPLE OR UNIX OR (WIN32 AND (${BONZOMATIC_WINDOWS_FLAVOR} MATCHES "GLFW")))
Gargaj's avatar
Gargaj committed
73
  ##############################################################################
74
75
  # GLFW
  # GLFW settings and project inclusion
mathieu _alkama_ m's avatar
mathieu _alkama_ m committed
76
  set(BUILD_SHARED_LIBS OFF CACHE BOOL "" FORCE)
77
78
79
80
  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)
mathieu _alkama_ m's avatar
mathieu _alkama_ m committed
81
82
83
84
85
86
87
  set(GLFW_VULKAN_STATIC OFF CACHE BOOL "" FORCE)
  mark_as_advanced(BUILD_SHARED_LIBS GLFW_BUILD_EXAMPLES GLFW_BUILD_TESTS GLFW_BUILD_DOCS GLFW_INSTALL GLFW_VULKAN_STATIC)
  if (UNIX)
    set(GLFW_USE_OSMESA OFF CACHE BOOL "" FORCE)
    mark_as_advanced(GLFW_USE_OSMESA)
  endif()
  if (WIN32)
88
89
90
    set(USE_MSVC_RUNTIME_LIBRARY_DLL OFF CACHE BOOL "" FORCE)
    mark_as_advanced(USE_MSVC_RUNTIME_LIBRARY_DLL)
  endif()
91
92
93
94
  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
95
96
97
98
99
100
101
102
  ##############################################################################
  # 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)
103
104
105
  if (MSVC)
    target_compile_options(bzc_glew PUBLIC "$<$<CONFIG:Release>:/MT>")
  endif ()
Gargaj's avatar
Gargaj committed
106
107
  set(BZC_PROJECT_INCLUDES ${BZC_PROJECT_INCLUDES} ${CMAKE_SOURCE_DIR}/external/glew)
  set(BZC_PROJECT_LIBS ${BZC_PROJECT_LIBS} bzc_glew)
108
109
110
else ()
  # for windows, use DirectX
  set(BZC_PROJECT_INCLUDES ${BZC_PROJECT_INCLUDES} $ENV{DXSDK_DIR}/Include)
111
112
113
114
115
endif ()

##############################################################################
# STB
set(BZC_PROJECT_INCLUDES ${BZC_PROJECT_INCLUDES}
Gargaj's avatar
Gargaj committed
116
  ${CMAKE_SOURCE_DIR}/external/stb
117
118
119
)

##############################################################################
mathieu _alkama_ m's avatar
mathieu _alkama_ m committed
120
121
# miniaudio
set(BZC_PROJECT_INCLUDES ${BZC_PROJECT_INCLUDES} ${CMAKE_SOURCE_DIR}/external/miniaudio)
122
123
124
125
126
127
128
129
130
131
132

##############################################################################
# kiss_fft
set(KISSFFT_SRCS
  ${CMAKE_SOURCE_DIR}/external/kiss_fft/kiss_fft.c
  ${CMAKE_SOURCE_DIR}/external/kiss_fft/tools/kiss_fftr.c
)
add_library(bzc_kissfft STATIC ${KISSFFT_SRCS})
target_include_directories(bzc_kissfft PUBLIC ${CMAKE_SOURCE_DIR}/external/kiss_fft ${CMAKE_SOURCE_DIR}/external/kiss_fft/tools)
if (MSVC)
  target_compile_options(bzc_kissfft PUBLIC "$<$<CONFIG:Release>:/MT>")
133
endif ()
134
135
136
set(BZC_PROJECT_INCLUDES ${BZC_PROJECT_INCLUDES} ${CMAKE_SOURCE_DIR}/external/kiss_fft)
set(BZC_PROJECT_INCLUDES ${BZC_PROJECT_INCLUDES} ${CMAKE_SOURCE_DIR}/external/kiss_fft/tools)
set(BZC_PROJECT_LIBS ${BZC_PROJECT_LIBS} bzc_kissfft)
137
138
139
140

##############################################################################
# JSONXX
set(JSONXX_SRCS
Gargaj's avatar
Gargaj committed
141
  ${CMAKE_SOURCE_DIR}/external/jsonxx/jsonxx.cc
142
143
144
)
add_library(bzc_jsonxx STATIC ${JSONXX_SRCS})
target_include_directories(bzc_jsonxx PUBLIC ${CMAKE_SOURCE_DIR}/external/jsonxx)
145
146
147
if (MSVC)
  target_compile_options(bzc_jsonxx PUBLIC "$<$<CONFIG:Release>:/MT>")
endif ()
148
149
150
set(BZC_PROJECT_INCLUDES ${BZC_PROJECT_INCLUDES} ${CMAKE_SOURCE_DIR}/external/jsonxx)
set(BZC_PROJECT_LIBS ${BZC_PROJECT_LIBS} bzc_jsonxx)

151
152
##############################################################################
# NDI
Chris White's avatar
Chris White committed
153
if (WIN32 AND BONZOMATIC_NDI)
154
155
156
157
158
159
160
  if(DEFINED ENV{NDI_SDK_DIR}) 
    set(NDI_SDK_DIR "$ENV{NDI_SDK_DIR}")
  else()
    message(FATAL_ERROR "Could not find NDI SDK. The NDI_SDK_DIR environment variable must be set to the SDK path.")
  endif()

  set(BZC_PROJECT_INCLUDES ${BZC_PROJECT_INCLUDES} "${NDI_SDK_DIR}/Include/")
161
  if (BONZOMATIC_64BIT)
162
    set(BZC_PROJECT_LIBS ${BZC_PROJECT_LIBS} "${NDI_SDK_DIR}/Lib/x64/Processing.NDI.Lib.x64.lib")
163
  else ()
164
    set(BZC_PROJECT_LIBS ${BZC_PROJECT_LIBS} "${NDI_SDK_DIR}/Lib/x86/Processing.NDI.Lib.x86.lib")
165
166
167
  endif ()
endif ()

168
169
170
##############################################################################
# SCINTILLA
set(SCINTILLA_SRCS
Gargaj's avatar
Gargaj committed
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
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
  ${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
305
306
307
)
add_library(bzc_scintilla STATIC ${SCINTILLA_SRCS})
target_include_directories(bzc_scintilla PUBLIC
Gargaj's avatar
Gargaj committed
308
309
310
  ${CMAKE_SOURCE_DIR}/external/scintilla/include
  ${CMAKE_SOURCE_DIR}/external/scintilla/lexlib
  ${CMAKE_SOURCE_DIR}/external/scintilla/src
311
)
312
313
314
if (MSVC)
  target_compile_options(bzc_scintilla PUBLIC "$<$<CONFIG:Release>:/MT>")
endif ()
315
316
317
318
319
320
321
322
323
324
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
325
326
  ${CMAKE_SOURCE_DIR}/src/*.cpp
  ${CMAKE_SOURCE_DIR}/src/*.h
327
328
329
)
source_group("Bonzomatic" FILES ${BZC_PROJECT_SRCS})
if (APPLE)
Gargaj's avatar
Gargaj committed
330
  set(BZC_PLATFORM_SRCS
331
    ${CMAKE_SOURCE_DIR}/src/platform_glfw/Renderer.cpp
332
    ${CMAKE_SOURCE_DIR}/src/platform_common/FFT.cpp
Gargaj's avatar
Gargaj committed
333
    ${CMAKE_SOURCE_DIR}/src/platform_x11/MIDI.cpp
334
    ${CMAKE_SOURCE_DIR}/src/platform_osx/Misc.mm
Gargaj's avatar
Gargaj committed
335
    ${CMAKE_SOURCE_DIR}/src/platform_x11/Timer.cpp
336
    ${CMAKE_SOURCE_DIR}/src/platform_osx/SetupDialog.cpp
Gargaj's avatar
Gargaj committed
337
    ${CMAKE_SOURCE_DIR}/src/platform_osx/Clipboard.cpp
338
    ${CMAKE_SOURCE_DIR}/src/platform_osx/TouchBar.mm
Gargaj's avatar
Gargaj committed
339
340
341
342
343
344
  )
  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})
345
elseif (UNIX)
Gargaj's avatar
Gargaj committed
346
  set(BZC_PLATFORM_SRCS
347
    ${CMAKE_SOURCE_DIR}/src/platform_glfw/Renderer.cpp
348
    ${CMAKE_SOURCE_DIR}/src/platform_common/FFT.cpp
Gargaj's avatar
Gargaj committed
349
350
351
352
353
354
355
    ${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})
Chris White's avatar
Chris White committed
356
elseif (WIN32)
Gargaj's avatar
Gargaj committed
357
358
359
  if (${BONZOMATIC_WINDOWS_FLAVOR} MATCHES "DX11")
    set(BZC_PLATFORM_SRCS
      ${CMAKE_SOURCE_DIR}/src/platform_w32_dx11/Renderer.cpp
360
      ${CMAKE_SOURCE_DIR}/src/platform_common/FFT.cpp
Gargaj's avatar
Gargaj committed
361
362
363
364
365
366
367
368
369
370
      ${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
371
      ${CMAKE_SOURCE_DIR}/src/platform_common/FFT.cpp
Gargaj's avatar
Gargaj committed
372
373
374
375
376
377
378
379
380
      ${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
381
      ${CMAKE_SOURCE_DIR}/src/platform_glfw/Renderer.cpp
382
      ${CMAKE_SOURCE_DIR}/src/platform_common/FFT.cpp
Gargaj's avatar
Gargaj committed
383
384
385
386
387
388
389
390
391
      ${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})
392

Gargaj's avatar
Gargaj committed
393
394
395
396
397
398
  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})
399
400
endif ()

Chris White's avatar
Chris White committed
401
if (WIN32 AND BONZOMATIC_NDI)
402
403
404
405
406
407
408
409
410
411
412
  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})
413
414
415
416
417
418

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

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

Gargaj's avatar
Gargaj committed
421
422
423
424
  # 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)
425
  set(MACOSX_BUNDLE_INFO_STRING "${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH},Copyright © 2019 The Bonzomatic Contributors")
426
  set(MACOSX_BUNDLE_SHORT_VERSION_STRING "${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}")
Gargaj's avatar
Gargaj committed
427
428
  set(MACOSX_BUNDLE_LONG_VERSION_STRING "${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}")
  set(MACOSX_BUNDLE_BUNDLE_VERSION "${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}")
429
  set(MACOSX_BUNDLE_COPYRIGHT "Copyright © 2014-2019 The Bonzomatic Contributors. All rights reserved.")
430

Gargaj's avatar
Gargaj committed
431
  set_source_files_properties(${BZC_RESOURCES_DATA} PROPERTIES MACOSX_PACKAGE_LOCATION Resources)
432

Gargaj's avatar
Gargaj committed
433
434
  set_source_files_properties(${OSX_LIB_FILES} PROPERTIES MACOSX_PACKAGE_LOCATION MacOS)
  set(BZC_PROJECT_SRCS ${BZC_PROJECT_SRCS} ${OSX_LIB_FILES})
435

Gargaj's avatar
Gargaj committed
436
  set(BZC_PROJECT_SRCS ${GUI_TYPE} ${BZC_PROJECT_SRCS})
437
438
439
440

  find_library(COCOA_FRAMEWORK Cocoa)
  find_library(OPENGL_FRAMEWORK OpenGL)
  find_library(CARBON_FRAMEWORK Carbon)
mathieu _alkama_ m's avatar
mathieu _alkama_ m committed
441
  find_library(COREAUDIO_FRAMEWORK CoreAudio)
442
443
444
  find_library(AVFOUNDATION_FRAMEWORK AVFoundation)
  mark_as_advanced(COCOA_FRAMEWORK OPENGL_FRAMEWORK CARBON_FRAMEWORK COREAUDIO_FRAMEWORK AVFOUNDATION_FRAMEWORK)
  set(PLATFORM_LIBS ${COCOA_FRAMEWORK} ${OPENGL_FRAMEWORK} ${CARBON_FRAMEWORK} ${COREAUDIO_FRAMEWORK} ${AVFOUNDATION_FRAMEWORK})
445
elseif (UNIX)
Gargaj's avatar
Gargaj committed
446
  set(PLATFORM_LIBS GL)
Chris White's avatar
Chris White committed
447
elseif (WIN32)
448
449
450
451
452
453
454
455
456
457
458
459
    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
460
link_directories(${BZC_LINK_DIRS})
461
if (UNIX AND (NOT APPLE))
462
    set(CMAKE_INSTALL_RPATH "$ORIGIN/../lib")
463
endif ()
464
465
466
add_executable(${BZC_EXE_NAME} ${BZC_PROJECT_SRCS})
# Set compiler specific flags
if (APPLE)
467
  set_target_properties(${BZC_EXE_NAME} PROPERTIES MACOSX_BUNDLE_INFO_PLIST ${CMAKE_SOURCE_DIR}/data/macosx/MacOSXBundleInfo.plist.in)
468
469
470
  if (BONZOMATIC_TOUCHBAR)
    target_compile_definitions(${BZC_EXE_NAME} PUBLIC -DBONZOMATIC_ENABLE_TOUCHBAR)
  endif ()
Chris White's avatar
Chris White committed
471
elseif (WIN32)
472
473
474
  if (BONZOMATIC_NDI)
    target_compile_definitions(${BZC_EXE_NAME} PUBLIC -DBONZOMATIC_ENABLE_NDI)
  endif ()
Chris White's avatar
Chris White committed
475
476
477
478
  if (MSVC)
    set_target_properties(${BZC_EXE_NAME} PROPERTIES LINK_FLAGS "/SUBSYSTEM:CONSOLE")
    target_compile_options(${BZC_EXE_NAME} PUBLIC "$<$<CONFIG:Release>:/MT>")
  endif ()
479
endif ()
Gargaj's avatar
Gargaj committed
480
target_include_directories(${BZC_EXE_NAME} PUBLIC ${BZC_PROJECT_INCLUDES})
481
482
target_link_libraries(${BZC_EXE_NAME} ${BZC_PROJECT_LIBS})

483
if (MSVC)
484
485
  if (BONZOMATIC_NDI)
    if (BONZOMATIC_64BIT)
486
      add_custom_command(TARGET ${BZC_EXE_NAME} POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_if_different "${NDI_SDK_DIR}/Bin/x64/Processing.NDI.Lib.x64.dll" $<TARGET_FILE_DIR:${BZC_EXE_NAME}>)
487
    else ()
488
      add_custom_command(TARGET ${BZC_EXE_NAME} POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_if_different "${NDI_SDK_DIR}/Bin/x86/Processing.NDI.Lib.x86.dll" $<TARGET_FILE_DIR:${BZC_EXE_NAME}>)
489
    endif ()
490
  endif ()
491
endif ()
492

493
494
495
## install
if (UNIX AND (NOT APPLE))
  install(TARGETS ${BZC_EXE_NAME} RUNTIME DESTINATION bin)
496
497
498
499
500
  install(FILES "${CMAKE_SOURCE_DIR}/data/unix/bonzomatic.desktop"
          DESTINATION "${CMAKE_INSTALL_PREFIX}/share/applications")
  install(FILES "${CMAKE_SOURCE_DIR}/data/unix/icon.png"
          RENAME "bonzomatic.png"
          DESTINATION "${CMAKE_INSTALL_PREFIX}/share/icons/hicolor/256x256/apps")
501
endif ()