Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
alexbevi
GitHub Repository: alexbevi/BizHawk
Path: blob/master/yabause/src/CMakeLists.txt
2 views
1
project(yabause)
2
3
include(CheckFunctionExists)
4
include(CheckIncludeFile)
5
6
set(yabause_SOURCES
7
bios.c
8
cdbase.c cheat.c coffelf.c cs0.c cs1.c cs2.c
9
debug.c
10
error.c
11
m68kcore.c m68kd.c memory.c movie.c
12
netlink.c
13
osdcore.c
14
peripheral.c profile.c
15
scu.c sh2core.c sh2d.c sh2idle.c sh2int.c sh2trace.c smpc.c snddummy.c
16
titan/titan.c
17
vdp1.c vdp2.c vdp2debug.c vidogl.c vidshared.c vidsoft.c
18
yabause.c ygl.c yglshader.c)
19
20
# new SCSP
21
option(YAB_USE_SCSP2 "Use the new SCSP implementation.")
22
if (YAB_USE_SCSP2)
23
add_definitions(-DUSE_SCSP2=1)
24
set(yabause_SOURCES ${yabause_SOURCES} scsp2.c)
25
else()
26
set(yabause_SOURCES ${yabause_SOURCES} scsp.c)
27
endif()
28
29
# disable strdup warning in MSVC
30
if (MSVC)
31
add_definitions(/wd4996)
32
endif ()
33
34
# math library
35
if (UNIX)
36
set(YABAUSE_LIBRARIES ${YABAUSE_LIBRARIES} "m")
37
endif()
38
39
# Bigendian
40
include(TestBigEndian)
41
test_big_endian(WORDS_BIGENDIAN)
42
if (WORDS_BIGENDIAN)
43
add_definitions(-DWORDS_BIGENDIAN=1)
44
endif (WORDS_BIGENDIAN)
45
46
include(CheckCSourceCompiles)
47
48
# variadic macros
49
check_c_source_compiles("#define MACRO(...) puts(__VA_ARGS__)
50
int main(int argc, char ** argv) { MACRO(\"foo\"); }"
51
VARIADIC_MACROS_OK)
52
if (VARIADIC_MACROS_OK)
53
add_definitions(-DHAVE_C99_VARIADIC_MACROS=1)
54
endif (VARIADIC_MACROS_OK)
55
56
# gettimeofday
57
check_function_exists(gettimeofday GETTIMEOFDAY_OK)
58
if (GETTIMEOFDAY_OK)
59
add_definitions(-DHAVE_GETTIMEOFDAY=1)
60
endif ()
61
62
# floorf
63
set(CMAKE_REQUIRED_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES} "-lm")
64
check_function_exists(floorf FLOORF_OK)
65
if (FLOORF_OK)
66
add_definitions(-DHAVE_FLOORF=1)
67
endif ()
68
69
# sys/time.h
70
check_include_file("sys/time.h" SYSTIME_OK)
71
if (SYSTIME_OK)
72
add_definitions(-DHAVE_SYS_TIME_H=1)
73
endif()
74
75
# Find stdint.h
76
check_include_file("stdint.h" STDINT_H_FOUND)
77
if (STDINT_H_FOUND)
78
add_definitions(-DHAVE_STDINT_H=1)
79
endif()
80
81
# OpenGL
82
option(YAB_WANT_OPENGL "use OpenGL for video output (most ports require it)" ON)
83
if (YAB_WANT_OPENGL)
84
include(FindOpenGL)
85
if (OPENGL_FOUND)
86
add_definitions(-DHAVE_LIBGL=1)
87
set(YABAUSE_LIBRARIES ${YABAUSE_LIBRARIES} ${OPENGL_LIBRARIES})
88
89
include(FindGLUT)
90
if (GLUT_FOUND)
91
include_directories(${GLUT_INCLUDE_DIR})
92
add_definitions(-DHAVE_LIBGLUT=1)
93
set(YABAUSE_LIBRARIES ${YABAUSE_LIBRARIES} ${GLUT_LIBRARIES})
94
endif()
95
96
# glXGetProcAddress
97
set(CMAKE_REQUIRED_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES} ${OPENGL_LIBRARIES})
98
check_function_exists(glXGetProcAddress GLXGETPROCADDRESS_OK)
99
if (GLXGETPROCADDRESS_OK)
100
add_definitions(-DHAVE_GLXGETPROCADDRESS=1)
101
endif()
102
endif(OPENGL_FOUND)
103
endif (YAB_WANT_OPENGL)
104
105
# SDL
106
option(YAB_WANT_SDL "use SDL cores if available" ON)
107
if (YAB_WANT_SDL)
108
include(FindSDL)
109
if (SDL_FOUND)
110
add_definitions(-DHAVE_LIBSDL=1)
111
include_directories(${SDL_INCLUDE_DIR})
112
set(yabause_SOURCES ${yabause_SOURCES} persdljoy.c sndsdl.c)
113
set(YABAUSE_LIBRARIES ${YABAUSE_LIBRARIES} ${SDL_LIBRARY})
114
endif (SDL_FOUND)
115
endif (YAB_WANT_SDL)
116
117
# OpenAL
118
option(YAB_WANT_OPENAL "use OpenAL sound core if available" ON)
119
if (YAB_WANT_OPENAL)
120
include(FindOpenAL)
121
if (OPENAL_FOUND)
122
find_package(Threads)
123
add_definitions(-DHAVE_LIBAL=1)
124
include_directories(${OPENAL_INCLUDE_DIR})
125
set(yabause_SOURCES ${yabause_SOURCES} sndal.c)
126
set(YABAUSE_LIBRARIES ${YABAUSE_LIBRARIES} ${OPENAL_LIBRARY} ${CMAKE_THREAD_LIBS_INIT})
127
endif (OPENAL_FOUND)
128
endif (YAB_WANT_OPENAL)
129
130
# mini18n
131
find_path(MINI18N_INCLUDE_DIR mini18n.h)
132
find_library(MINI18N_LIBRARY mini18n)
133
if (NOT MINI18N_INCLUDE_DIR STREQUAL "MINI18N_INCLUDE_DIR-NOTFOUND" AND NOT MINI18N_LIBRARY STREQUAL "MINI18N_LIBRARY-NOTFOUND")
134
set(MINI18N_FOUND TRUE)
135
include_directories(${MINI18N_INCLUDE_DIR})
136
add_definitions(-DHAVE_LIBMINI18N=1)
137
set(YABAUSE_LIBRARIES ${YABAUSE_LIBRARIES} ${MINI18N_LIBRARY})
138
endif (NOT MINI18N_INCLUDE_DIR STREQUAL "MINI18N_INCLUDE_DIR-NOTFOUND" AND NOT MINI18N_LIBRARY STREQUAL "MINI18N_LIBRARY-NOTFOUND")
139
140
if (MINI18N_FOUND)
141
if (UNIX)
142
add_definitions(-DYTSDIR=\"${CMAKE_INSTALL_PREFIX}/share/${YAB_PACKAGE}/yts\")
143
elseif (WIN32)
144
add_definitions(-DYTSDIR=\"trans\")
145
endif()
146
endif()
147
148
# APPLE // not necessary mac os x, but i don't care ;)
149
if (APPLE)
150
FIND_LIBRARY(COREFOUNDATION_LIBRARY NAMES CoreFoundation )
151
FIND_LIBRARY(IOKIT_LIBRARY NAMES IOKit )
152
set(yabause_SOURCES ${yabause_SOURCES} macjoy.c permacjoy.c cd-macosx.c sndmac.c)
153
set(YABAUSE_LIBRARIES ${YABAUSE_LIBRARIES} ${COREFOUNDATION_LIBRARY} ${IOKIT_LIBRARY})
154
155
check_function_exists(glBindRenderbuffer HAVE_FBO)
156
if (HAVE_FBO)
157
add_definitions(-DHAVE_FBO=1)
158
endif()
159
endif (APPLE)
160
161
# Visual Studio
162
if (MSVC)
163
# Find DDK
164
if (EXISTS "$ENV{SYSTEMDRIVE}/WINDDK/3790.1830/")
165
set(DDK_DIR "$ENV{SYSTEMDRIVE}/WINDDK/3790.1830/")
166
elseif (EXISTS "$ENV{SYSTEMDRIVE}/WINDDK/6000/")
167
set(DDK_DIR "$ENV{SYSTEMDRIVE}/WINDDK/6000/")
168
elseif (EXISTS "$ENV{SYSTEMDRIVE}/WINDDK/7600.16385.0/")
169
set(DDK_DIR "$ENV{SYSTEMDRIVE}/WINDDK/7600.16385.0/")
170
endif (EXISTS "$ENV{SYSTEMDRIVE}/WINDDK/3790.1830/")
171
172
add_definitions(-DHAVE_C99_VARIADIC_MACROS -D_CRT_SECURE_NO_WARNINGS -DC68K_NO_JUMP_TABLE
173
-D_UNICODE -DUNICODE)
174
endif (MSVC)
175
176
# Windows ddk
177
if (WIN32)
178
option(YAB_WANT_DDK "Use the real DDK instead of the built-in one")
179
if(YAB_WANT_DDK)
180
# Find ntddcdrm.h
181
find_path(ntddcdrm_INCLUDE_DIR ntddcdrm.h
182
PATHS "${DDK_DIR}" "${DDK_DIR}/inc" PATH_SUFFIXES ddk api)
183
184
if (ntddcdrm_INCLUDE_DIR)
185
include_directories(${ntddcdrm_INCLUDE_DIR})
186
message(STATUS "Found ntddcdrm.h: ${ntddcdrm_INCLUDE_DIR}")
187
add_definitions(-DHAVE_NTDDCDRM=1)
188
else (ntddcdrm_INCLUDE_DIR)
189
message(STATUS "Could not find ntddcdrm.h")
190
endif (ntddcdrm_INCLUDE_DIR)
191
endif(YAB_WANT_DDK)
192
193
set(yabause_SOURCES ${yabause_SOURCES} cd-windows.c)
194
195
option(YAB_WANT_DIRECTSOUND "use DirectX sound core if available")
196
option(YAB_WANT_DIRECTINPUT "use DirectX input core if available")
197
198
if (YAB_WANT_DIRECTSOUND OR YAB_WANT_DIRECTINPUT)
199
find_path(DirectX_INCLUDE_DIR dxerr9.h "$ENV{DXSDK_DIR}/Include")
200
if (NOT DirectX_INCLUDE_DIR)
201
find_path(DirectX_INCLUDE_DIR "dxerr.h" "$ENV{DXSDK_DIR}/Include")
202
if (DirectX_INCLUDE_DIR)
203
set(DXERRH_IS_BROKEN 1 CACHE INTERNAL "dxerr is broken")
204
endif (DirectX_INCLUDE_DIR)
205
endif(NOT DirectX_INCLUDE_DIR)
206
207
find_library(DirectX_GUID_LIBRARY dxguid "$ENV{DXSDK_DIR}/Lib/x86" "$ENV{DXSDK_DIR}/Lib")
208
if (YAB_WANT_DIRECTINPUT)
209
find_library(DirectX_INPUT8_LIBRARY dinput8 "$ENV{DXSDK_DIR}/Lib/x86" "$ENV{DXSDK_DIR}/Lib")
210
endif(YAB_WANT_DIRECTINPUT)
211
if (YAB_WANT_DIRECTSOUND)
212
find_library(DirectX_SOUND_LIBRARY dsound "$ENV{DXSDK_DIR}/Lib/x86" "$ENV{DXSDK_DIR}/Lib")
213
endif(YAB_WANT_DIRECTSOUND)
214
215
if (DXERRH_IS_BROKEN)
216
find_library(DirectX_ERR_LIBRARY dxerr "$ENV{DXSDK_DIR}/Lib/x86" "$ENV{DXSDK_DIR}/Lib")
217
elseif(MINGW)
218
find_library(DirectX_ERR_LIBRARY dxerr8 "$ENV{DXSDK_DIR}/Lib/x86" "$ENV{DXSDK_DIR}/Lib")
219
else()
220
find_library(DirectX_ERR_LIBRARY dxerr9 "$ENV{DXSDK_DIR}/Lib/x86" "$ENV{DXSDK_DIR}/Lib")
221
endif()
222
223
if (DirectX_INCLUDE_DIR AND DirectX_GUID_LIBRARY AND DirectX_ERR_LIBRARY)
224
set(DIRECTX_FOUND "found")
225
include_directories(${DirectX_INCLUDE_DIR})
226
set(YABAUSE_LIBRARIES ${YABAUSE_LIBRARIES} ${DirectX_GUID_LIBRARY} ${DirectX_ERR_LIBRARY})
227
228
if (DirectX_SOUND_LIBRARY AND DirectX_INPUT8_LIBRARY)
229
add_definitions(-DHAVE_DIRECTINPUT)
230
set(yabause_SOURCES ${yabause_SOURCES} snddx.c)
231
set(YABAUSE_LIBRARIES ${YABAUSE_LIBRARIES} ${DirectX_INPUT8_LIBRARY})
232
endif (DirectX_SOUND_LIBRARY AND DirectX_INPUT8_LIBRARY)
233
if (YAB_WANT_DIRECTSOUND AND DirectX_SOUND_LIBRARY)
234
add_definitions(-DHAVE_DIRECTSOUND)
235
set(yabause_SOURCES ${yabause_SOURCES} perdx.c)
236
set(YABAUSE_LIBRARIES ${YABAUSE_LIBRARIES} ${DirectX_SOUND_LIBRARY})
237
endif (YAB_WANT_DIRECTSOUND AND DirectX_SOUND_LIBRARY)
238
239
if (DXERRH_IS_BROKEN)
240
add_definitions(-DDXERRH_IS_BROKEN)
241
message(STATUS "Using work-around for dxerr.h")
242
endif(DXERRH_IS_BROKEN)
243
endif (DirectX_INCLUDE_DIR AND DirectX_GUID_LIBRARY AND DirectX_ERR_LIBRARY)
244
endif (YAB_WANT_DIRECTSOUND OR YAB_WANT_DIRECTINPUT)
245
endif (WIN32)
246
247
if (WII)
248
set(CMAKE_C_FLAGS "-mrvl -mcpu=750 -meabi -mhard-float")
249
add_definitions(-DGEKKO=1)
250
# that shouldn't be hardcoded, either use an ENV variable or try to detect it...
251
include_directories(/opt/devkitpro/libogc/include/)
252
endif()
253
254
option(YAB_WANT_ARM7 "Build a binary with arm7 support")
255
256
# SH2 dynamic recompiler
257
message(STATUS "CMAKE_SYSTEM_NAME ${CMAKE_SYSTEM_NAME}")
258
message(STATUS "CMAKE_SYSTEM_PROCESSOR ${CMAKE_SYSTEM_PROCESSOR}")
259
option(SH2_DYNAREC "SH2 dynamic recompiler" ON)
260
if (SH2_DYNAREC)
261
if("${CMAKE_SYSTEM_NAME}" STREQUAL "Linux")
262
if("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "i686")
263
enable_language(ASM-ATT)
264
set(yabause_SOURCES ${yabause_SOURCES}
265
sh2_dynarec/sh2_dynarec.c sh2_dynarec/linkage_x86.s)
266
set_source_files_properties(sh2_dynarec/sh2_dynarec.c PROPERTIES COMPILE_FLAGS "-Wno-pointer-to-int-cast -Wno-int-to-pointer-cast")
267
add_definitions(-DSH2_DYNAREC=1)
268
endif("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "i686")
269
if("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "x86_64")
270
enable_language(ASM-ATT)
271
set(yabause_SOURCES ${yabause_SOURCES}
272
sh2_dynarec/sh2_dynarec.c sh2_dynarec/linkage_x64.s)
273
set_source_files_properties(sh2_dynarec/sh2_dynarec.c PROPERTIES COMPILE_FLAGS "-Wno-pointer-to-int-cast -Wno-int-to-pointer-cast")
274
add_definitions(-DSH2_DYNAREC=1)
275
endif("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "x86_64")
276
if("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "armv5tel")
277
enable_language(ASM-ATT)
278
set(yabause_SOURCES ${yabause_SOURCES}
279
sh2_dynarec/sh2_dynarec.c sh2_dynarec/linkage_arm.s)
280
set_source_files_properties(sh2_dynarec/sh2_dynarec.c PROPERTIES COMPILE_FLAGS "-Wno-pointer-to-int-cast -Wno-int-to-pointer-cast")
281
add_definitions(-DSH2_DYNAREC=1)
282
endif("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "armv5tel")
283
if("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "armv7l")
284
enable_language(ASM-ATT)
285
set(yabause_SOURCES ${yabause_SOURCES}
286
sh2_dynarec/sh2_dynarec.c sh2_dynarec/linkage_arm.s)
287
set_source_files_properties(sh2_dynarec/sh2_dynarec.c PROPERTIES COMPILE_FLAGS "-Wno-pointer-to-int-cast -Wno-int-to-pointer-cast")
288
add_definitions(-DSH2_DYNAREC=1 -DHAVE_ARMv6=1 -DHAVE_ARMv7=1)
289
endif("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "armv7l")
290
if (ANDROID)
291
enable_language(ASM-ATT)
292
set(yabause_SOURCES ${yabause_SOURCES}
293
sh2_dynarec/sh2_dynarec.c sh2_dynarec/linkage_arm.s)
294
set_source_files_properties(sh2_dynarec/sh2_dynarec.c PROPERTIES COMPILE_FLAGS "-Wno-pointer-to-int-cast -Wno-int-to-pointer-cast")
295
add_definitions(-DSH2_DYNAREC=1)
296
add_definitions(-DANDROID=1)
297
if (YAB_WANT_ARM7)
298
add_definitions(-DHAVE_ARMv6=1 -DHAVE_ARMv7=1)
299
endif()
300
endif ()
301
endif("${CMAKE_SYSTEM_NAME}" STREQUAL "Linux")
302
endif (SH2_DYNAREC)
303
304
# c68k
305
option(YAB_WANT_C68K "enable c68k compilation" ON)
306
if (YAB_WANT_C68K)
307
include(ExternalProject)
308
ExternalProject_Add(c68kinc
309
DOWNLOAD_COMMAND ""
310
SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/c68k
311
CMAKE_GENERATOR "${CMAKE_GENERATOR}"
312
INSTALL_COMMAND ""
313
BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR}/c68k
314
)
315
316
add_definitions(-DHAVE_C68K=1)
317
include_directories(${CMAKE_CURRENT_BINARY_DIR}/c68k)
318
set(yabause_SOURCES ${yabause_SOURCES} c68k/c68kexec.c c68k/c68k.c c68k/gen68k.c m68kc68k.c)
319
if (MSVC)
320
set_source_files_properties(c68k/c68kexec.c PROPERTIES COMPILE_FLAGS "/Od /wd4146")
321
else()
322
set_source_files_properties(c68k/c68kexec.c PROPERTIES COMPILE_FLAGS "-O0")
323
endif()
324
endif(YAB_WANT_C68K)
325
326
# q68
327
option(YAB_WANT_Q68 "enable q68 compilation" OFF)
328
if (YAB_WANT_Q68)
329
add_definitions(-DHAVE_Q68=1)
330
set(yabause_SOURCES ${yabause_SOURCES}
331
m68kq68.c q68/q68.c q68/q68-core.c q68/q68-disasm.c
332
q68/q68-const.h q68/q68.h q68/q68-internal.h q68/q68-jit.h q68/q68-jit-psp.h q68/q68-jit-x86.h)
333
endif()
334
335
# *DEBUG
336
set(YAB_DEBUG "" CACHE STRING "List of enabled debug information")
337
foreach(DEBUG IN LISTS YAB_DEBUG)
338
if (${DEBUG} STREQUAL "main")
339
add_definitions(-DDEBUG=1)
340
elseif (${DEBUG} STREQUAL "cd")
341
add_definitions(-DCDDEBUG=1)
342
elseif (${DEBUG} STREQUAL "idle")
343
add_definitions(-DIDLE_DETECT_VERBOSE=1)
344
else (${DEBUG} STREQUAL "main")
345
string(TOUPPER ${DEBUG} UPDEBUG)
346
add_definitions(-D${UPDEBUG}_DEBUG=1)
347
endif (${DEBUG} STREQUAL "main")
348
endforeach(DEBUG)
349
350
# Network
351
option(YAB_NETWORK "Enable network")
352
if (YAB_NETWORK)
353
add_definitions(-DUSESOCKET=1)
354
endif()
355
356
# Peripheral key name
357
option(YAB_PERKEYNAME "Try to display key names instead of cryptic values" OFF)
358
if (YAB_PERKEYNAME)
359
add_definitions(-DPERKEYNAME=1)
360
endif()
361
362
option(YAB_PORT_OSD "Let ports provides their own OSD core list" OFF)
363
if (YAB_PORT_OSD)
364
add_definitions(-DYAB_PORT_OSD=1)
365
endif()
366
367
# Exec from cache
368
option(YAB_EXEC_FROM_CACHE "Allow code execution from 0xC0000000" OFF)
369
if (YAB_EXEC_FROM_CACHE)
370
add_definitions(-DEXEC_FROM_CACHE=1)
371
endif()
372
373
# Optimized DMA
374
option(YAB_OPTIMIZED_DMA "Use optimized DMA when possible" OFF)
375
if (YAB_OPTIMIZED_DMA)
376
add_definitions(-DOPTIMIZED_DMA=1)
377
endif()
378
379
# Yabause Arch
380
if (${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
381
add_definitions(-DARCH_IS_MACOSX=1)
382
set(yabause_SOURCES ${yabause_SOURCES} thr-dummy.c)
383
elseif (${CMAKE_SYSTEM_NAME} MATCHES "FreeBSD")
384
add_definitions(-DARCH_IS_FREEBSD=1)
385
set(yabause_SOURCES ${yabause_SOURCES} thr-dummy.c cd-freebsd.c)
386
elseif (${CMAKE_SYSTEM_NAME} MATCHES "Linux")
387
add_definitions(-DARCH_IS_LINUX=1)
388
set(yabause_SOURCES ${yabause_SOURCES} thr-linux.c cd-linux.c)
389
390
check_include_file("linux/joystick.h" LINUX_HAS_JOYSTICK)
391
if (LINUX_HAS_JOYSTICK)
392
set(yabause_SOURCES ${yabause_SOURCES} perlinuxjoy.c)
393
endif()
394
395
check_c_source_compiles("
396
#include <linux/cdrom.h>
397
int main(int argc, char ** argv) { int i = CDSL_CURRENT; }
398
" LINUX_CDROM_H_OK)
399
if (NOT LINUX_CDROM_H_OK)
400
add_definitions(-DLINUX_CDROM_H_IS_BROKEN)
401
endif (NOT LINUX_CDROM_H_OK)
402
elseif (${CMAKE_SYSTEM_NAME} MATCHES "NetBSD")
403
add_definitions(-DARCH_IS_NETBSD=1)
404
set(yabause_SOURCES ${yabause_SOURCES} thr-dummy.c cd-netbsd.c)
405
elseif (${CMAKE_SYSTEM_NAME} MATCHES "OpenBSD")
406
add_definitions(-DARCH_IS_NETBSD=1)
407
set(yabause_SOURCES ${yabause_SOURCES} thr-dummy.c cd-netbsd.c)
408
elseif (${CMAKE_SYSTEM_NAME} MATCHES "Windows")
409
add_definitions(-DARCH_IS_WINDOWS=1)
410
set(yabause_SOURCES ${yabause_SOURCES} thr-dummy.c)
411
else ()
412
add_definitions(-DUNKNOWN_ARCH=1)
413
set(yabause_SOURCES ${yabause_SOURCES} thr-dummy.c)
414
endif ()
415
416
set(YAB_OPTIMIZATION "-O3" CACHE STRING "Override optimization level")
417
418
if("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "i686")
419
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${YAB_OPTIMIZATION} -march=i686 -msse")
420
endif("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "i686")
421
if("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "x86_64")
422
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${YAB_OPTIMIZATION}")
423
endif("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "x86_64")
424
if("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "armv5tel")
425
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${YAB_OPTIMIZATION}")
426
endif("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "armv5tel")
427
if("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "armv7l")
428
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${YAB_OPTIMIZATION}")
429
endif("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "armv7l")
430
if(ANDROID)
431
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${YAB_OPTIMIZATION}")
432
endif()
433
434
# Warnings defined to know when we're breaking compilation with MSVC
435
if (CMAKE_COMPILER_IS_GNUCC)
436
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wdeclaration-after-statement")
437
endif ()
438
439
if (MSVC)
440
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /wd4018 /wd4244")
441
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /wd4244")
442
endif ()
443
444
add_definitions(-DPACKAGE=\"${YAB_PACKAGE}\")
445
add_definitions(-DVERSION=\"${YAB_VERSION}\")
446
447
add_library(yabause ${yabause_SOURCES})
448
449
if (YAB_WANT_C68K)
450
add_dependencies(yabause c68kinc)
451
endif(YAB_WANT_C68K)
452
453
macro(yab_port_start)
454
if (YAB_PORT_BUILT AND NOT YAB_MULTIBUILD)
455
return()
456
endif ()
457
endmacro(yab_port_start)
458
459
macro(yab_port_stop)
460
set(YAB_PORT_BUILT TRUE PARENT_SCOPE)
461
endmacro(yab_port_stop)
462
463
macro(yab_port_success YAB_TARGET)
464
if (NOT YAB_MULTIBUILD)
465
set_target_properties(${YAB_TARGET} PROPERTIES OUTPUT_NAME yabause)
466
set(YAB_PORT_NAME "yabause")
467
else ()
468
set(YAB_PORT_NAME ${YAB_TARGET})
469
endif ()
470
set(YAB_PORT_BUILT TRUE PARENT_SCOPE)
471
endmacro(yab_port_success)
472
473
set(YAB_MAN_DIR "share/man")
474
if (NOT $ENV{PKGMANDIR} STREQUAL "")
475
set(YAB_MAN_DIR $ENV{PKGMANDIR})
476
endif ()
477
478
option(YAB_MULTIBUILD "Choose wether to build all ports or only a single one")
479
set(YAB_PORT_BUILT FALSE)
480
set(YAB_PORTS "gtk;qt;windows;dreamcast;wii;carbon;cocoa" CACHE STRING "List of ports to build")
481
foreach(PORT IN LISTS YAB_PORTS)
482
add_subdirectory(${PORT})
483
endforeach(PORT)
484
485
# this is stupid, but CMake automatic definitions are based on variables...
486
if (YAB_WANT_C68K)
487
set(HAVE_C68K ON)
488
endif()
489
if (YAB_WANT_Q68)
490
set(HAVE_Q68 ON)
491
endif()
492
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/config.h.in ${CMAKE_CURRENT_BINARY_DIR}/config.h)
493
494