]> git.cworth.org Git - apitrace/blob - wrappers/CMakeLists.txt
59bc2dc6241d38edb3411ce6857105d18f9b4732
[apitrace] / wrappers / CMakeLists.txt
1 ##############################################################################
2 # API tracers
3
4
5 include_directories (
6     ${CMAKE_CURRENT_SOURCE_DIR}
7     ${CMAKE_SOURCE_DIR}/helpers
8     ${CMAKE_BINARY_DIR}/dispatch
9     ${CMAKE_SOURCE_DIR}/dispatch
10 )
11
12
13 if (WIN32)
14     if (MINGW)
15         # Silence warnings about @nn suffix mismatch
16         set (CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -Wl,--enable-stdcall-fixup")
17     endif ()
18
19     # ddraw.dll
20     if (DirectX_D3D_INCLUDE_DIR)
21         include_directories (SYSTEM ${DirectX_D3D_INCLUDE_DIR})
22         add_custom_command (
23             OUTPUT ddrawtrace.cpp
24             COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/ddrawtrace.py > ${CMAKE_CURRENT_BINARY_DIR}/ddrawtrace.cpp
25             DEPENDS
26                 ddrawtrace.py
27                 dlltrace.py
28                 trace.py
29                 ${CMAKE_SOURCE_DIR}/dispatch/dispatch.py
30                 ${CMAKE_SOURCE_DIR}/specs/d3d.py
31                 ${CMAKE_SOURCE_DIR}/specs/d3dtypes.py
32                 ${CMAKE_SOURCE_DIR}/specs/d3dcaps.py
33                 ${CMAKE_SOURCE_DIR}/specs/ddraw.py
34                 ${CMAKE_SOURCE_DIR}/specs/winapi.py
35                 ${CMAKE_SOURCE_DIR}/specs/stdapi.py
36         )
37         add_library (ddrawtrace MODULE ddraw.def ddrawtrace.cpp)
38         target_link_libraries (ddrawtrace
39             common
40             ${ZLIB_LIBRARIES}
41             ${SNAPPY_LIBRARIES}
42         )
43         set_target_properties (ddrawtrace PROPERTIES
44             PREFIX ""
45             OUTPUT_NAME ddraw
46         )
47         install (TARGETS ddrawtrace LIBRARY DESTINATION ${WRAPPER_INSTALL_DIR})
48     endif ()
49
50     # d3d8.dll
51     if (DirectX_D3D8_INCLUDE_DIR AND DirectX_D3DX9_INCLUDE_DIR)
52         include_directories (SYSTEM ${DirectX_D3D8_INCLUDE_DIR} ${DirectX_D3DX9_INCLUDE_DIR})
53         add_custom_command (
54             OUTPUT d3d8trace.cpp
55             COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/d3d8trace.py > ${CMAKE_CURRENT_BINARY_DIR}/d3d8trace.cpp
56             DEPENDS
57                 d3d8trace.py
58                 dlltrace.py
59                 trace.py
60                 ${CMAKE_SOURCE_DIR}/dispatch/dispatch.py
61                 ${CMAKE_SOURCE_DIR}/specs/d3d8.py
62                 ${CMAKE_SOURCE_DIR}/specs/d3d8types.py
63                 ${CMAKE_SOURCE_DIR}/specs/d3d8caps.py
64                 ${CMAKE_SOURCE_DIR}/specs/winapi.py
65                 ${CMAKE_SOURCE_DIR}/specs/stdapi.py
66         )
67         add_library (d3d8trace MODULE d3d8.def d3d8trace.cpp d3dshader.cpp)
68         target_link_libraries (d3d8trace
69             common
70             ${ZLIB_LIBRARIES}
71             ${SNAPPY_LIBRARIES}
72         )
73         set_target_properties (d3d8trace PROPERTIES
74             PREFIX ""
75             OUTPUT_NAME d3d8
76         )
77         install (TARGETS d3d8trace LIBRARY DESTINATION ${WRAPPER_INSTALL_DIR})
78     endif ()
79
80     # d3d9.dll
81     if (DirectX_D3DX9_INCLUDE_DIR)
82         include_directories (SYSTEM ${DirectX_D3DX9_INCLUDE_DIR})
83         add_custom_command (
84             OUTPUT d3d9trace.cpp
85             COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/d3d9trace.py > ${CMAKE_CURRENT_BINARY_DIR}/d3d9trace.cpp
86             DEPENDS
87                 d3d9trace.py
88                 dlltrace.py
89                 trace.py
90                 ${CMAKE_SOURCE_DIR}/dispatch/dispatch.py
91                 ${CMAKE_SOURCE_DIR}/specs/d3d9.py
92                 ${CMAKE_SOURCE_DIR}/specs/d3d9types.py
93                 ${CMAKE_SOURCE_DIR}/specs/d3d9caps.py
94                 ${CMAKE_SOURCE_DIR}/specs/winapi.py
95                 ${CMAKE_SOURCE_DIR}/specs/stdapi.py
96         )
97         add_library (d3d9trace MODULE d3d9.def d3d9trace.cpp d3dshader.cpp)
98         target_link_libraries (d3d9trace
99             common
100             ${ZLIB_LIBRARIES}
101             ${SNAPPY_LIBRARIES}
102         )
103         set_target_properties (d3d9trace PROPERTIES
104             PREFIX ""
105             OUTPUT_NAME d3d9
106         )
107         install (TARGETS d3d9trace LIBRARY DESTINATION ${WRAPPER_INSTALL_DIR})
108     endif ()
109
110     # d3d10.dll
111     if (DirectX_D3DX10_INCLUDE_DIR)
112         include_directories (SYSTEM ${DirectX_D3DX10_INCLUDE_DIR})
113         add_custom_command (
114             OUTPUT d3d10trace.cpp
115             COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/d3d10trace.py > ${CMAKE_CURRENT_BINARY_DIR}/d3d10trace.cpp
116             DEPENDS
117                 d3d10trace.py
118                 dlltrace.py
119                 trace.py
120                 ${CMAKE_SOURCE_DIR}/dispatch/dispatch.py
121                 ${CMAKE_SOURCE_DIR}/specs/d3d10misc.py
122                 ${CMAKE_SOURCE_DIR}/specs/d3d10.py
123                 ${CMAKE_SOURCE_DIR}/specs/d3d10sdklayers.py
124                 ${CMAKE_SOURCE_DIR}/specs/d3dcommon.py
125                 ${CMAKE_SOURCE_DIR}/specs/dxgi.py
126                 ${CMAKE_SOURCE_DIR}/specs/dxgitype.py
127                 ${CMAKE_SOURCE_DIR}/specs/dxgiformat.py
128                 ${CMAKE_SOURCE_DIR}/specs/winapi.py
129                 ${CMAKE_SOURCE_DIR}/specs/stdapi.py
130         )
131         add_library (d3d10trace MODULE d3d10.def d3d10trace.cpp)
132         target_link_libraries (d3d10trace
133             common
134             ${ZLIB_LIBRARIES}
135             ${SNAPPY_LIBRARIES}
136         )
137         set_target_properties (d3d10trace PROPERTIES
138             PREFIX ""
139             OUTPUT_NAME d3d10
140         )
141         install (TARGETS d3d10trace LIBRARY DESTINATION ${WRAPPER_INSTALL_DIR})
142     endif ()
143
144     # d3d10_1.dll
145     if (DirectX_D3DX10_INCLUDE_DIR AND DirectX_D3D10_1_INCLUDE_DIR)
146         include_directories (SYSTEM ${DirectX_D3D10_1_INCLUDE_DIR})
147         add_custom_command (
148             OUTPUT d3d10_1trace.cpp
149             COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/d3d10_1trace.py > ${CMAKE_CURRENT_BINARY_DIR}/d3d10_1trace.cpp
150             DEPENDS
151                 d3d10_1trace.py
152                 dlltrace.py
153                 trace.py
154                 ${CMAKE_SOURCE_DIR}/dispatch/dispatch.py
155                 ${CMAKE_SOURCE_DIR}/specs/d3d10_1.py
156                 ${CMAKE_SOURCE_DIR}/specs/d3d10.py
157                 ${CMAKE_SOURCE_DIR}/specs/d3d10sdklayers.py
158                 ${CMAKE_SOURCE_DIR}/specs/d3dcommon.py
159                 ${CMAKE_SOURCE_DIR}/specs/dxgi.py
160                 ${CMAKE_SOURCE_DIR}/specs/dxgitype.py
161                 ${CMAKE_SOURCE_DIR}/specs/dxgiformat.py
162                 ${CMAKE_SOURCE_DIR}/specs/winapi.py
163                 ${CMAKE_SOURCE_DIR}/specs/stdapi.py
164         )
165         add_library (d3d10_1trace MODULE d3d10_1.def d3d10_1trace.cpp)
166         target_link_libraries (d3d10_1trace
167             common
168             ${ZLIB_LIBRARIES}
169             ${SNAPPY_LIBRARIES}
170         )
171         set_target_properties (d3d10_1trace
172             PROPERTIES PREFIX ""
173             OUTPUT_NAME d3d10_1
174         )
175         install (TARGETS d3d10_1trace LIBRARY DESTINATION ${WRAPPER_INSTALL_DIR})
176     endif ()
177
178     # d3d11.dll
179     if (DirectX_D3DX11_INCLUDE_DIR)
180         if (DirectX_D3D11_1_INCLUDE_DIR)
181             set (HAVE_D3D11_1 1)
182         else ()
183             set (HAVE_D3D11_1 0)
184         endif ()
185
186         include_directories (SYSTEM ${DirectX_D3DX11_INCLUDE_DIR})
187         add_custom_command (
188             OUTPUT d3d11trace.cpp
189             COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/d3d11trace.py ${HAVE_D3D11_1} > ${CMAKE_CURRENT_BINARY_DIR}/d3d11trace.cpp
190             DEPENDS
191                 d3d11trace.py
192                 dlltrace.py
193                 trace.py
194                 ${CMAKE_SOURCE_DIR}/specs/d3d11_1.py
195                 ${CMAKE_SOURCE_DIR}/specs/d3d11.py
196                 ${CMAKE_SOURCE_DIR}/specs/d3d11sdklayers.py
197                 ${CMAKE_SOURCE_DIR}/specs/d3dcommon.py
198                 ${CMAKE_SOURCE_DIR}/specs/dxgi.py
199                 ${CMAKE_SOURCE_DIR}/specs/dxgitype.py
200                 ${CMAKE_SOURCE_DIR}/specs/dxgiformat.py
201                 ${CMAKE_SOURCE_DIR}/specs/winapi.py
202                 ${CMAKE_SOURCE_DIR}/specs/stdapi.py
203         )
204         add_library (d3d11trace MODULE d3d11.def d3d11trace.cpp)
205         target_link_libraries (d3d11trace
206             common
207             ${ZLIB_LIBRARIES}
208             ${SNAPPY_LIBRARIES}
209         )
210         set_target_properties (d3d11trace
211             PROPERTIES PREFIX ""
212             OUTPUT_NAME d3d11
213         )
214         install (TARGETS d3d11trace LIBRARY DESTINATION ${WRAPPER_INSTALL_DIR})
215     endif ()
216
217     # opengl32.dll
218     add_custom_command (
219         OUTPUT wgltrace.cpp
220         COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/wgltrace.py > ${CMAKE_CURRENT_BINARY_DIR}/wgltrace.cpp
221         DEPENDS
222                 wgltrace.py
223                 gltrace.py
224                 trace.py
225                 ${CMAKE_SOURCE_DIR}/dispatch/dispatch.py
226                 ${CMAKE_SOURCE_DIR}/specs/wglapi.py
227                 ${CMAKE_SOURCE_DIR}/specs/wglenum.py
228                 ${CMAKE_SOURCE_DIR}/specs/glapi.py
229                 ${CMAKE_SOURCE_DIR}/specs/glparams.py
230                 ${CMAKE_SOURCE_DIR}/specs/gltypes.py
231                 ${CMAKE_SOURCE_DIR}/specs/winapi.py
232                 ${CMAKE_SOURCE_DIR}/specs/stdapi.py
233     )
234     add_library (wgltrace MODULE opengl32.def
235         wgltrace.cpp
236         glcaps.cpp
237     )
238     add_dependencies (wgltrace glproc)
239     target_link_libraries (wgltrace
240         glproc_gl
241         common
242         ${ZLIB_LIBRARIES}
243         ${SNAPPY_LIBRARIES}
244     )
245     set_target_properties (wgltrace PROPERTIES
246         PREFIX ""
247         OUTPUT_NAME opengl32
248     )
249     install (TARGETS wgltrace LIBRARY DESTINATION ${WRAPPER_INSTALL_DIR})
250
251 elseif (APPLE)
252     # OpenGL framework
253     add_custom_command (
254         OUTPUT cgltrace.cpp
255         COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/cgltrace.py > ${CMAKE_CURRENT_BINARY_DIR}/cgltrace.cpp
256         DEPENDS
257             cgltrace.py
258             gltrace.py
259             trace.py
260             ${CMAKE_SOURCE_DIR}/specs/cglapi.py
261             ${CMAKE_SOURCE_DIR}/specs/glapi.py
262             ${CMAKE_SOURCE_DIR}/specs/glparams.py
263             ${CMAKE_SOURCE_DIR}/specs/gltypes.py
264             ${CMAKE_SOURCE_DIR}/specs/stdapi.py
265     )
266
267     add_library (cgltrace SHARED
268         cgltrace.cpp
269         glcaps.cpp
270     )
271
272     add_dependencies (cgltrace glproc)
273
274     set_target_properties (cgltrace PROPERTIES
275         # OpenGL framework name
276         PREFIX "" OUTPUT_NAME "OpenGL" SUFFIX ""
277         # Specificy the version and reexport GLU symbols
278         LINK_FLAGS "-compatibility_version 1 -current_version 1.0.0 -Wl,-reexport_library,/System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGLU.dylib"
279     )
280
281     target_link_libraries (cgltrace
282         glproc_gl
283         common
284         ${ZLIB_LIBRARIES}
285         ${SNAPPY_LIBRARIES}
286         ${CMAKE_THREAD_LIBS_INIT}
287         dl
288     )
289
290     install (TARGETS cgltrace LIBRARY DESTINATION ${WRAPPER_INSTALL_DIR})
291 elseif (X11_FOUND)
292     # libGL.so
293     add_custom_command (
294         OUTPUT glxtrace.cpp
295         COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/glxtrace.py > ${CMAKE_CURRENT_BINARY_DIR}/glxtrace.cpp
296         DEPENDS
297             glxtrace.py
298             gltrace.py
299             trace.py
300             ${CMAKE_SOURCE_DIR}/specs/glxapi.py
301             ${CMAKE_SOURCE_DIR}/specs/glapi.py
302             ${CMAKE_SOURCE_DIR}/specs/glparams.py
303             ${CMAKE_SOURCE_DIR}/specs/gltypes.py
304             ${CMAKE_SOURCE_DIR}/specs/stdapi.py
305     )
306
307     add_library (glxtrace SHARED
308         glxtrace.cpp
309         glcaps.cpp
310     )
311
312     add_dependencies (glxtrace glproc)
313
314     set_target_properties (glxtrace PROPERTIES
315         # avoid the default "lib" prefix
316         PREFIX ""
317         # Prevent symbol relocations internal to our wrapper library to be
318         # overwritten by the application.
319         LINK_FLAGS "-Wl,-Bsymbolic -Wl,-Bsymbolic-functions"
320     )
321
322     target_link_libraries (glxtrace
323         glproc_gl
324         common
325         ${ZLIB_LIBRARIES}
326         ${SNAPPY_LIBRARIES}
327         ${X11_X11_LIB}
328         ${CMAKE_THREAD_LIBS_INIT}
329         dl
330     )
331
332     install (TARGETS glxtrace LIBRARY DESTINATION ${WRAPPER_INSTALL_DIR})
333 endif ()
334
335
336 if (ENABLE_EGL AND NOT WIN32 AND NOT APPLE)
337     # libEGL.so/libGL.so
338     add_custom_command (
339         OUTPUT egltrace.cpp
340         COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/egltrace.py > ${CMAKE_CURRENT_BINARY_DIR}/egltrace.cpp
341         DEPENDS
342             egltrace.py
343             gltrace.py
344             trace.py
345             ${CMAKE_SOURCE_DIR}/specs/eglapi.py
346             ${CMAKE_SOURCE_DIR}/specs/glesapi.py
347             ${CMAKE_SOURCE_DIR}/specs/glapi.py
348             ${CMAKE_SOURCE_DIR}/specs/glparams.py
349             ${CMAKE_SOURCE_DIR}/specs/gltypes.py
350             ${CMAKE_SOURCE_DIR}/specs/stdapi.py
351     )
352
353     add_library (egltrace SHARED
354         egltrace.cpp
355         glcaps.cpp
356     )
357
358     add_dependencies (egltrace glproc)
359
360     set_target_properties (egltrace PROPERTIES
361         # avoid the default "lib" prefix
362         PREFIX ""
363         # Prevent symbol relocations internal to our wrapper library to be
364         # overwritten by the application.
365         LINK_FLAGS "-Wl,-Bsymbolic -Wl,-Bsymbolic-functions"
366     )
367
368     target_link_libraries (egltrace
369         glproc_egl
370         common
371         ${ZLIB_LIBRARIES}
372         ${SNAPPY_LIBRARIES}
373         ${CMAKE_THREAD_LIBS_INIT}
374         dl
375     )
376
377     install (TARGETS egltrace LIBRARY DESTINATION ${WRAPPER_INSTALL_DIR})
378 endif ()