comparison OrthancStone/Resources/CMake/SdlConfiguration.cmake @ 1901:184b0aeae1af

fix build of sdl
author Sebastien Jodogne <s.jodogne@gmail.com>
date Sat, 29 Jan 2022 16:55:14 +0100
parents OrthancStone/Sources/Platforms/Sdl/SdlConfiguration.cmake@563f6aa8e24c
children 07964689cb0b
comparison
equal deleted inserted replaced
1900:563f6aa8e24c 1901:184b0aeae1af
1 # Stone of Orthanc
2 # Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
3 # Department, University Hospital of Liege, Belgium
4 # Copyright (C) 2017-2022 Osimis S.A., Belgium
5 # Copyright (C) 2021-2022 Sebastien Jodogne, ICTEAM UCLouvain, Belgium
6 #
7 # This program is free software: you can redistribute it and/or
8 # modify it under the terms of the GNU Lesser General Public License
9 # as published by the Free Software Foundation, either version 3 of
10 # the License, or (at your option) any later version.
11 #
12 # This program is distributed in the hope that it will be useful, but
13 # WITHOUT ANY WARRANTY; without even the implied warranty of
14 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 # Lesser General Public License for more details.
16 #
17 # You should have received a copy of the GNU Lesser General Public
18 # License along with this program. If not, see
19 # <http://www.gnu.org/licenses/>.
20
21
22 if (STATIC_BUILD OR NOT USE_SYSTEM_SDL)
23 SET(SDL_SOURCES_DIR ${CMAKE_BINARY_DIR}/SDL2-2.0.4)
24 SET(SDL_URL "http://orthanc.osimis.io/ThirdPartyDownloads/SDL2-2.0.4.tar.gz")
25 SET(SDL_MD5 "44fc4a023349933e7f5d7a582f7b886e")
26 DownloadPackage(${SDL_MD5} ${SDL_URL} "${SDL_SOURCES_DIR}")
27
28 include_directories(${SDL_SOURCES_DIR}/include)
29
30 set(TMP "${SDL_SOURCES_DIR}/include/SDL_config_premake.h")
31 if (NOT EXISTS "${TMP}")
32 file(WRITE "${TMP}" "
33 #include \"SDL_platform.h\"
34 #define HAVE_STDARG_H 1
35 #define HAVE_STDDEF_H 1
36 #define HAVE_STDINT_H 1
37 ")
38 endif()
39
40 # General source files
41 file(GLOB SDL_SOURCES
42 ${SDL_SOURCES_DIR}/src/*.c
43 ${SDL_SOURCES_DIR}/src/atomic/*.c
44 ${SDL_SOURCES_DIR}/src/audio/*.c
45 ${SDL_SOURCES_DIR}/src/cpuinfo/*.c
46 ${SDL_SOURCES_DIR}/src/dynapi/*.c
47 ${SDL_SOURCES_DIR}/src/events/*.c
48 ${SDL_SOURCES_DIR}/src/file/*.c
49 ${SDL_SOURCES_DIR}/src/haptic/*.c
50 ${SDL_SOURCES_DIR}/src/joystick/*.c
51 ${SDL_SOURCES_DIR}/src/libm/*.c
52 ${SDL_SOURCES_DIR}/src/power/*.c
53 ${SDL_SOURCES_DIR}/src/render/*.c
54 ${SDL_SOURCES_DIR}/src/stdlib/*.c
55 ${SDL_SOURCES_DIR}/src/thread/*.c
56 ${SDL_SOURCES_DIR}/src/timer/*.c
57 ${SDL_SOURCES_DIR}/src/video/*.c
58
59 ${SDL_SOURCES_DIR}/src/loadso/dummy/*.c
60 #${SDL_SOURCES_DIR}/src/timer/dummy/*.c
61 ${SDL_SOURCES_DIR}/src/audio/dummy/*.c
62 ${SDL_SOURCES_DIR}/src/filesystem/dummy/*.c
63 ${SDL_SOURCES_DIR}/src/haptic/dummy/*.c
64 ${SDL_SOURCES_DIR}/src/joystick/dummy/*.c
65 #${SDL_SOURCES_DIR}/src/main/dummy/*.c
66 ${SDL_SOURCES_DIR}/src/video/dummy/*.c
67 )
68
69 add_definitions(
70 -DUSING_PREMAKE_CONFIG_H=1
71
72 -DSDL_AUDIO_DISABLED=1
73 -DSDL_AUDIO_DRIVER_DUMMY=1
74 -DSDL_FILESYSTEM_DISABLED=1
75 -DSDL_FILESYSTEM_DUMMY=1
76 -DSDL_FILE_DISABLED=1
77 -DSDL_HAPTIC_DISABLED=1
78 -DSDL_JOYSTICK_DISABLED=1
79
80 #-DSDL_THREADS_DISABLED=1
81 )
82
83 if (CMAKE_SYSTEM_NAME STREQUAL "Linux")
84 file(GLOB TMP
85 ${SDL_SOURCES_DIR}/src/core/linux/*.c
86 ${SDL_SOURCES_DIR}/src/loadso/dlopen/*.c
87 ${SDL_SOURCES_DIR}/src/render/software/*.c
88 ${SDL_SOURCES_DIR}/src/thread/pthread/*.c
89 ${SDL_SOURCES_DIR}/src/timer/unix/*.c
90 ${SDL_SOURCES_DIR}/src/video/x11/*.c
91 )
92
93 list(APPEND SDL_SOURCES ${TMP})
94
95 add_definitions(
96 -DSDL_LOADSO_DLOPEN=1
97 -DSDL_THREAD_PTHREAD=1
98 -DSDL_TIMER_UNIX=1
99 -DSDL_POWER_DISABLED=1
100
101 -DSDL_VIDEO_DRIVER_X11=1
102
103 -DSDL_ASSEMBLY_ROUTINES=1
104 -DSDL_THREAD_PTHREAD_RECURSIVE_MUTEX=1
105 -DSDL_VIDEO_DRIVER_X11_SUPPORTS_GENERIC_EVENTS=1
106 -DHAVE_GCC_SYNC_LOCK_TEST_AND_SET=1
107 )
108
109 link_libraries(X11 Xext)
110
111 if (NOT CMAKE_SYSTEM_VERSION STREQUAL "Raspberry")
112 # Raspberry Pi has no support for OpenGL
113 file(GLOB TMP
114 ${SDL_SOURCES_DIR}/src/render/opengl/*.c
115 ${SDL_SOURCES_DIR}/src/render/opengles2/*.c
116 )
117
118 list(APPEND SDL_SOURCES ${TMP})
119
120 add_definitions(
121 -DSDL_VIDEO_OPENGL=1
122 -DSDL_VIDEO_OPENGL_ES2=1
123 -DSDL_VIDEO_RENDER_OGL=1
124 -DSDL_VIDEO_RENDER_OGL_ES2=1
125 -DSDL_VIDEO_OPENGL_GLX=1
126 -DSDL_VIDEO_OPENGL_EGL=1
127 )
128 endif()
129
130 elseif (CMAKE_SYSTEM_NAME STREQUAL "Windows")
131 file(GLOB TMP
132 ${SDL_SOURCES_DIR}/src/audio/directsound/*.c
133 ${SDL_SOURCES_DIR}/src/audio/disk/*.c
134 ${SDL_SOURCES_DIR}/src/audio/winmm/*.c
135 ${SDL_SOURCES_DIR}/src/joystick/windows/*.c
136 ${SDL_SOURCES_DIR}/src/haptic/windows/*.c
137 ${SDL_SOURCES_DIR}/src/power/windows/*.c
138
139 ${SDL_SOURCES_DIR}/src/main/windows/*.c
140 ${SDL_SOURCES_DIR}/src/core/windows/*.c
141 ${SDL_SOURCES_DIR}/src/loadso/windows/*.c
142 ${SDL_SOURCES_DIR}/src/render/direct3d/*.c
143 ${SDL_SOURCES_DIR}/src/render/direct3d11/*.c
144 ${SDL_SOURCES_DIR}/src/render/opengl/*.c
145 ${SDL_SOURCES_DIR}/src/render/psp/*.c
146 ${SDL_SOURCES_DIR}/src/render/opengles/*.c
147 ${SDL_SOURCES_DIR}/src/render/opengles2/*.c
148 ${SDL_SOURCES_DIR}/src/render/software/*.c
149 ${SDL_SOURCES_DIR}/src/thread/generic/SDL_syscond.c # Don't include more files from "thread/generic/*.c"!
150 ${SDL_SOURCES_DIR}/src/thread/windows/*.c
151 ${SDL_SOURCES_DIR}/src/timer/windows/*.c
152 ${SDL_SOURCES_DIR}/src/video/windows/*.c
153 ${SDL_SOURCES_DIR}/src/windows/dlopen/*.c
154 )
155
156 list(APPEND SDL_SOURCES ${TMP})
157
158 # NB: OpenGL ES headers are not available in MinGW-W64
159 add_definitions(
160 -DSDL_LOADSO_WINDOWS=1
161 -DSDL_THREAD_WINDOWS=1
162 -DSDL_TIMER_WINDOWS=1
163 -DSDL_POWER_WINDOWS=1
164
165 -DSDL_VIDEO_OPENGL=1
166 -DSDL_VIDEO_OPENGL_WGL=1
167 -DSDL_VIDEO_RENDER_D3D=1
168 -DSDL_VIDEO_RENDER_OGL=1
169 -DSDL_VIDEO_DRIVER_WINDOWS=1
170 )
171
172 if (MSVC)
173 add_definitions(
174 -D__FLTUSED__
175 -DHAVE_LIBC=1
176 )
177 else()
178 add_definitions(
179 -DHAVE_GCC_ATOMICS=1
180 -DSDL_ASSEMBLY_ROUTINES=1
181 )
182 endif()
183
184 link_libraries(imm32 winmm version)
185
186 elseif (CMAKE_SYSTEM_NAME STREQUAL "Darwin")
187 file(GLOB TMP
188 ${SDL_SOURCES_DIR}/src/loadso/dlopen/*.c
189 ${SDL_SOURCES_DIR}/src/render/opengl/*.c
190 ${SDL_SOURCES_DIR}/src/render/opengles2/*.c
191 ${SDL_SOURCES_DIR}/src/render/software/*.c
192 ${SDL_SOURCES_DIR}/src/thread/pthread/*.c
193 ${SDL_SOURCES_DIR}/src/timer/unix/*.c
194 ${SDL_SOURCES_DIR}/src/video/cocoa/*.m
195 )
196
197 list(APPEND SDL_SOURCES ${TMP})
198
199 add_definitions(
200 -DSDL_LOADSO_DLOPEN=1
201 -DSDL_THREAD_PTHREAD=1
202 -DSDL_TIMER_UNIX=1
203 -DSDL_POWER_DISABLED=1
204
205 -DSDL_VIDEO_DRIVER_COCOA=1
206 -DSDL_VIDEO_OPENGL=1
207 -DSDL_VIDEO_OPENGL_CGL=1
208 -DSDL_VIDEO_RENDER_OGL=1
209
210 -DSDL_ASSEMBLY_ROUTINES=1
211 -DSDL_THREAD_PTHREAD_RECURSIVE_MUTEX=1
212 )
213
214 find_library(CARBON_LIBRARY Carbon)
215 find_library(COCOA_LIBRARY Cocoa)
216 find_library(IOKIT_LIBRARY IOKit)
217 find_library(QUARTZ_LIBRARY QuartzCore)
218 link_libraries(${CARBON_LIBRARY} ${COCOA_LIBRARY} ${IOKIT_LIBRARY} ${QUARTZ_LIBRARY})
219
220 endif()
221
222 else()
223 pkg_search_module(SDL2 REQUIRED sdl2)
224 include_directories(${SDL2_INCLUDE_DIRS})
225 link_libraries(${SDL2_LIBRARIES})
226 endif()