]> git.cworth.org Git - apitrace/blob - wrappers/CMakeLists.txt
Merge remote-tracking branch 'github/master' into d2d
[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 add_library (common_trace STATIC
13     trace.cpp
14 )
15
16 set_target_properties (common_trace PROPERTIES
17     # Ensure it can be statically linked in shared libraries
18     COMPILE_FLAGS "${CMAKE_SHARED_LIBRARY_CXX_FLAGS}"
19 )
20
21 if (WIN32)
22     if (MINGW)
23         # Silence warnings about @nn suffix mismatch
24         set (CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -Wl,--enable-stdcall-fixup")
25     endif ()
26
27     # ddraw.dll
28     if (DirectX_D3D_INCLUDE_DIR)
29         include_directories (SYSTEM ${DirectX_D3D_INCLUDE_DIR})
30         add_custom_command (
31             OUTPUT ddrawtrace.cpp
32             COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/ddrawtrace.py > ${CMAKE_CURRENT_BINARY_DIR}/ddrawtrace.cpp
33             DEPENDS
34                 ddrawtrace.py
35                 dlltrace.py
36                 trace.py
37                 ${CMAKE_SOURCE_DIR}/dispatch/dispatch.py
38                 ${CMAKE_SOURCE_DIR}/specs/d3d.py
39                 ${CMAKE_SOURCE_DIR}/specs/d3dtypes.py
40                 ${CMAKE_SOURCE_DIR}/specs/d3dcaps.py
41                 ${CMAKE_SOURCE_DIR}/specs/ddraw.py
42                 ${CMAKE_SOURCE_DIR}/specs/winapi.py
43                 ${CMAKE_SOURCE_DIR}/specs/stdapi.py
44         )
45         add_library (ddrawtrace MODULE ddraw.def ddrawtrace.cpp)
46         target_link_libraries (ddrawtrace
47             common_trace
48             common
49             ${ZLIB_LIBRARIES}
50             ${SNAPPY_LIBRARIES}
51         )
52         set_target_properties (ddrawtrace PROPERTIES
53             PREFIX ""
54             OUTPUT_NAME ddraw
55         )
56         install (TARGETS ddrawtrace LIBRARY DESTINATION ${WRAPPER_INSTALL_DIR})
57     endif ()
58
59     # d3d8.dll
60     if (DirectX_D3D8_INCLUDE_DIR AND DirectX_D3DX9_INCLUDE_DIR)
61         include_directories (SYSTEM ${DirectX_D3D8_INCLUDE_DIR} ${DirectX_D3DX9_INCLUDE_DIR})
62         add_custom_command (
63             OUTPUT d3d8trace.cpp
64             COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/d3d8trace.py > ${CMAKE_CURRENT_BINARY_DIR}/d3d8trace.cpp
65             DEPENDS
66                 d3d8trace.py
67                 dlltrace.py
68                 trace.py
69                 ${CMAKE_SOURCE_DIR}/dispatch/dispatch.py
70                 ${CMAKE_SOURCE_DIR}/specs/d3d8.py
71                 ${CMAKE_SOURCE_DIR}/specs/d3d8types.py
72                 ${CMAKE_SOURCE_DIR}/specs/d3d8caps.py
73                 ${CMAKE_SOURCE_DIR}/specs/winapi.py
74                 ${CMAKE_SOURCE_DIR}/specs/stdapi.py
75         )
76         add_library (d3d8trace MODULE d3d8.def d3d8trace.cpp d3d9shader.cpp)
77         target_link_libraries (d3d8trace
78             common_trace
79             common
80             ${ZLIB_LIBRARIES}
81             ${SNAPPY_LIBRARIES}
82         )
83         set_target_properties (d3d8trace PROPERTIES
84             PREFIX ""
85             OUTPUT_NAME d3d8
86         )
87         install (TARGETS d3d8trace LIBRARY DESTINATION ${WRAPPER_INSTALL_DIR})
88     endif ()
89
90     # d3d9.dll
91     if (DirectX_D3DX9_INCLUDE_DIR)
92         include_directories (SYSTEM ${DirectX_D3DX9_INCLUDE_DIR})
93         add_custom_command (
94             OUTPUT d3d9trace.cpp
95             COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/d3d9trace.py > ${CMAKE_CURRENT_BINARY_DIR}/d3d9trace.cpp
96             DEPENDS
97                 d3d9trace.py
98                 dlltrace.py
99                 trace.py
100                 ${CMAKE_SOURCE_DIR}/dispatch/dispatch.py
101                 ${CMAKE_SOURCE_DIR}/specs/d3d9.py
102                 ${CMAKE_SOURCE_DIR}/specs/d3d9types.py
103                 ${CMAKE_SOURCE_DIR}/specs/d3d9caps.py
104                 ${CMAKE_SOURCE_DIR}/specs/winapi.py
105                 ${CMAKE_SOURCE_DIR}/specs/stdapi.py
106         )
107         add_library (d3d9trace MODULE d3d9.def d3d9trace.cpp d3d9shader.cpp)
108         target_link_libraries (d3d9trace
109             common_trace
110             common
111             ${ZLIB_LIBRARIES}
112             ${SNAPPY_LIBRARIES}
113         )
114         set_target_properties (d3d9trace PROPERTIES
115             PREFIX ""
116             OUTPUT_NAME d3d9
117         )
118         install (TARGETS d3d9trace LIBRARY DESTINATION ${WRAPPER_INSTALL_DIR})
119     endif ()
120
121     # d3d10.dll
122     if (DirectX_D3D10_INCLUDE_DIR)
123         include_directories (SYSTEM ${DirectX_D3D10_INCLUDE_DIR})
124         add_custom_command (
125             OUTPUT d3d10trace.cpp
126             COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/d3d10trace.py > ${CMAKE_CURRENT_BINARY_DIR}/d3d10trace.cpp
127             DEPENDS
128                 d3d10trace.py
129                 dlltrace.py
130                 trace.py
131                 ${CMAKE_SOURCE_DIR}/dispatch/dispatch.py
132                 ${CMAKE_SOURCE_DIR}/specs/d3d10.py
133                 ${CMAKE_SOURCE_DIR}/specs/d3d10misc.py
134                 ${CMAKE_SOURCE_DIR}/specs/d3d10sdklayers.py
135                 ${CMAKE_SOURCE_DIR}/specs/d3d10shader.py
136                 ${CMAKE_SOURCE_DIR}/specs/d3d10effect.py
137                 ${CMAKE_SOURCE_DIR}/specs/d3dcommon.py
138                 ${CMAKE_SOURCE_DIR}/specs/dxgi.py
139                 ${CMAKE_SOURCE_DIR}/specs/dxgitype.py
140                 ${CMAKE_SOURCE_DIR}/specs/dxgiformat.py
141                 ${CMAKE_SOURCE_DIR}/specs/winapi.py
142                 ${CMAKE_SOURCE_DIR}/specs/stdapi.py
143         )
144         add_library (d3d10trace MODULE d3d10.def d3d10trace.cpp d3d10shader.cpp)
145         target_link_libraries (d3d10trace
146             common_trace
147             common
148             ${ZLIB_LIBRARIES}
149             ${SNAPPY_LIBRARIES}
150         )
151         set_target_properties (d3d10trace PROPERTIES
152             PREFIX ""
153             OUTPUT_NAME d3d10
154         )
155         install (TARGETS d3d10trace LIBRARY DESTINATION ${WRAPPER_INSTALL_DIR})
156     endif ()
157
158     # d3d10_1.dll
159     if (DirectX_D3D10_1_INCLUDE_DIR)
160         include_directories (SYSTEM ${DirectX_D3D10_1_INCLUDE_DIR})
161         add_custom_command (
162             OUTPUT d3d10_1trace.cpp
163             COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/d3d10_1trace.py > ${CMAKE_CURRENT_BINARY_DIR}/d3d10_1trace.cpp
164             DEPENDS
165                 d3d10_1trace.py
166                 dlltrace.py
167                 trace.py
168                 ${CMAKE_SOURCE_DIR}/dispatch/dispatch.py
169                 ${CMAKE_SOURCE_DIR}/specs/d3d10_1.py
170                 ${CMAKE_SOURCE_DIR}/specs/d3d10.py
171                 ${CMAKE_SOURCE_DIR}/specs/d3d10sdklayers.py
172                 ${CMAKE_SOURCE_DIR}/specs/d3dcommon.py
173                 ${CMAKE_SOURCE_DIR}/specs/dxgi.py
174                 ${CMAKE_SOURCE_DIR}/specs/dxgitype.py
175                 ${CMAKE_SOURCE_DIR}/specs/dxgiformat.py
176                 ${CMAKE_SOURCE_DIR}/specs/winapi.py
177                 ${CMAKE_SOURCE_DIR}/specs/stdapi.py
178         )
179         add_library (d3d10_1trace MODULE d3d10_1.def d3d10_1trace.cpp)
180         target_link_libraries (d3d10_1trace
181             common_trace
182             common
183             ${ZLIB_LIBRARIES}
184             ${SNAPPY_LIBRARIES}
185         )
186         set_target_properties (d3d10_1trace
187             PROPERTIES PREFIX ""
188             OUTPUT_NAME d3d10_1
189         )
190         install (TARGETS d3d10_1trace LIBRARY DESTINATION ${WRAPPER_INSTALL_DIR})
191     endif ()
192
193     # d3d11.dll
194     if (DirectX_D3D11_INCLUDE_DIR)
195         if (DirectX_D3D11_1_INCLUDE_DIR)
196             set (HAVE_D3D11_1 1)
197         else ()
198             set (HAVE_D3D11_1 0)
199         endif ()
200
201         include_directories (SYSTEM ${DirectX_D3D11_INCLUDE_DIR})
202         add_custom_command (
203             OUTPUT d3d11trace.cpp
204             COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/d3d11trace.py ${HAVE_D3D11_1} > ${CMAKE_CURRENT_BINARY_DIR}/d3d11trace.cpp
205             DEPENDS
206                 d3d11trace.py
207                 dlltrace.py
208                 trace.py
209                 ${CMAKE_SOURCE_DIR}/specs/d3d11_1.py
210                 ${CMAKE_SOURCE_DIR}/specs/d3d11.py
211                 ${CMAKE_SOURCE_DIR}/specs/d3d11sdklayers.py
212                 ${CMAKE_SOURCE_DIR}/specs/d3dcommon.py
213                 ${CMAKE_SOURCE_DIR}/specs/dxgi.py
214                 ${CMAKE_SOURCE_DIR}/specs/dxgitype.py
215                 ${CMAKE_SOURCE_DIR}/specs/dxgiformat.py
216                 ${CMAKE_SOURCE_DIR}/specs/winapi.py
217                 ${CMAKE_SOURCE_DIR}/specs/stdapi.py
218         )
219         add_library (d3d11trace MODULE d3d11.def d3d11trace.cpp)
220         target_link_libraries (d3d11trace
221             common_trace
222             common
223             ${ZLIB_LIBRARIES}
224             ${SNAPPY_LIBRARIES}
225         )
226         set_target_properties (d3d11trace
227             PROPERTIES PREFIX ""
228             OUTPUT_NAME d3d11
229         )
230         install (TARGETS d3d11trace LIBRARY DESTINATION ${WRAPPER_INSTALL_DIR})
231     endif ()
232
233     # d2d1.dll, dwrite.dll
234     if (DirectX_D2D1_INCLUDE_DIR)
235         include_directories (SYSTEM ${DirectX_D2D1_INCLUDE_DIR})
236
237         add_custom_command (
238             OUTPUT d2d1trace.cpp
239             COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/d2d1trace.py > ${CMAKE_CURRENT_BINARY_DIR}/d2d1trace.cpp
240             DEPENDS
241                 d2d1trace.py
242                 trace.py
243                 ${CMAKE_SOURCE_DIR}/specs/d2d1.py
244                 ${CMAKE_SOURCE_DIR}/specs/d2d1.py
245                 ${CMAKE_SOURCE_DIR}/specs/d2dbasetypes.py
246                 ${CMAKE_SOURCE_DIR}/specs/d2derr.py
247                 ${CMAKE_SOURCE_DIR}/specs/dwrite.py
248                 ${CMAKE_SOURCE_DIR}/specs/dcommon.py
249                 ${CMAKE_SOURCE_DIR}/specs/dxgi.py
250                 ${CMAKE_SOURCE_DIR}/specs/dxgitype.py
251                 ${CMAKE_SOURCE_DIR}/specs/dxgiformat.py
252                 ${CMAKE_SOURCE_DIR}/specs/winapi.py
253                 ${CMAKE_SOURCE_DIR}/specs/stdapi.py
254         )
255         add_library (d2d1 MODULE d2d1.def d2d1trace.cpp)
256         target_link_libraries (d2d1
257             common_trace
258             common
259             ${ZLIB_LIBRARIES}
260             ${SNAPPY_LIBRARIES}
261         )
262         set_target_properties (d2d1
263             PROPERTIES PREFIX ""
264             OUTPUT_NAME d2d1
265         )
266         install (TARGETS d2d1 LIBRARY DESTINATION ${WRAPPER_INSTALL_DIR})
267
268         add_custom_command (
269             OUTPUT dwritetrace.cpp
270             COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/dwritetrace.py > ${CMAKE_CURRENT_BINARY_DIR}/dwritetrace.cpp
271             DEPENDS
272                 dwritetrace.py
273                 trace.py
274                 ${CMAKE_SOURCE_DIR}/specs/d2d1.py
275                 ${CMAKE_SOURCE_DIR}/specs/d2d1.py
276                 ${CMAKE_SOURCE_DIR}/specs/d2dbasetypes.py
277                 ${CMAKE_SOURCE_DIR}/specs/d2derr.py
278                 ${CMAKE_SOURCE_DIR}/specs/dwrite.py
279                 ${CMAKE_SOURCE_DIR}/specs/dcommon.py
280                 ${CMAKE_SOURCE_DIR}/specs/dxgi.py
281                 ${CMAKE_SOURCE_DIR}/specs/dxgitype.py
282                 ${CMAKE_SOURCE_DIR}/specs/dxgiformat.py
283                 ${CMAKE_SOURCE_DIR}/specs/winapi.py
284                 ${CMAKE_SOURCE_DIR}/specs/stdapi.py
285         )
286         add_library (dwrite MODULE dwrite.def dwritetrace.cpp)
287         target_link_libraries (dwrite
288             common_trace
289             common
290             ${ZLIB_LIBRARIES}
291             ${SNAPPY_LIBRARIES}
292         )
293         set_target_properties (dwrite
294             PROPERTIES PREFIX ""
295             OUTPUT_NAME dwrite
296         )
297         install (TARGETS dwrite LIBRARY DESTINATION ${WRAPPER_INSTALL_DIR})
298     endif (DirectX_D2D1_INCLUDE_DIR)
299
300     # opengl32.dll
301     add_custom_command (
302         OUTPUT wgltrace.cpp
303         COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/wgltrace.py > ${CMAKE_CURRENT_BINARY_DIR}/wgltrace.cpp
304         DEPENDS
305                 wgltrace.py
306                 gltrace.py
307                 trace.py
308                 ${CMAKE_SOURCE_DIR}/dispatch/dispatch.py
309                 ${CMAKE_SOURCE_DIR}/specs/wglapi.py
310                 ${CMAKE_SOURCE_DIR}/specs/wglenum.py
311                 ${CMAKE_SOURCE_DIR}/specs/glapi.py
312                 ${CMAKE_SOURCE_DIR}/specs/glparams.py
313                 ${CMAKE_SOURCE_DIR}/specs/gltypes.py
314                 ${CMAKE_SOURCE_DIR}/specs/winapi.py
315                 ${CMAKE_SOURCE_DIR}/specs/stdapi.py
316     )
317     add_library (wgltrace MODULE opengl32.def
318         wgltrace.cpp
319         glcaps.cpp
320         gltrace_state.cpp
321     )
322     add_dependencies (wgltrace glproc)
323     target_link_libraries (wgltrace
324         glproc_gl
325         common_trace
326         common
327         ${ZLIB_LIBRARIES}
328         ${SNAPPY_LIBRARIES}
329     )
330     set_target_properties (wgltrace PROPERTIES
331         PREFIX ""
332         OUTPUT_NAME opengl32
333     )
334     install (TARGETS wgltrace LIBRARY DESTINATION ${WRAPPER_INSTALL_DIR})
335
336 elseif (APPLE)
337     # OpenGL framework
338     add_custom_command (
339         OUTPUT cgltrace.cpp
340         COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/cgltrace.py > ${CMAKE_CURRENT_BINARY_DIR}/cgltrace.cpp
341         DEPENDS
342             cgltrace.py
343             gltrace.py
344             trace.py
345             ${CMAKE_SOURCE_DIR}/specs/cglapi.py
346             ${CMAKE_SOURCE_DIR}/specs/glapi.py
347             ${CMAKE_SOURCE_DIR}/specs/glparams.py
348             ${CMAKE_SOURCE_DIR}/specs/gltypes.py
349             ${CMAKE_SOURCE_DIR}/specs/stdapi.py
350     )
351
352     add_library (cgltrace SHARED
353         cgltrace.cpp
354         glcaps.cpp
355         gltrace_state.cpp
356     )
357
358     add_dependencies (cgltrace glproc)
359
360     set_target_properties (cgltrace PROPERTIES
361         # OpenGL framework name
362         PREFIX "" OUTPUT_NAME "OpenGL" SUFFIX ""
363         # Specificy the version and reexport GLU symbols
364         LINK_FLAGS "-compatibility_version 1 -current_version 1.0.0 -Wl,-reexport_library,/System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGLU.dylib"
365     )
366
367     target_link_libraries (cgltrace
368         glproc_gl
369         common_trace
370         common
371         ${ZLIB_LIBRARIES}
372         ${SNAPPY_LIBRARIES}
373         ${CMAKE_THREAD_LIBS_INIT}
374         dl
375     )
376
377     install (TARGETS cgltrace LIBRARY DESTINATION ${WRAPPER_INSTALL_DIR})
378 elseif (X11_FOUND)
379     # libGL.so
380     add_custom_command (
381         OUTPUT glxtrace.cpp
382         COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/glxtrace.py > ${CMAKE_CURRENT_BINARY_DIR}/glxtrace.cpp
383         DEPENDS
384             glxtrace.py
385             gltrace.py
386             trace.py
387             ${CMAKE_SOURCE_DIR}/specs/glxapi.py
388             ${CMAKE_SOURCE_DIR}/specs/glapi.py
389             ${CMAKE_SOURCE_DIR}/specs/glparams.py
390             ${CMAKE_SOURCE_DIR}/specs/gltypes.py
391             ${CMAKE_SOURCE_DIR}/specs/stdapi.py
392     )
393
394     add_library (glxtrace SHARED
395         glxtrace.cpp
396         glcaps.cpp
397         gltrace_state.cpp
398     )
399
400     add_dependencies (glxtrace glproc)
401
402     set_target_properties (glxtrace PROPERTIES
403         # avoid the default "lib" prefix
404         PREFIX ""
405         # Prevent symbol relocations internal to our wrapper library to be
406         # overwritten by the application.
407         LINK_FLAGS "-Wl,-Bsymbolic -Wl,-Bsymbolic-functions"
408     )
409
410     target_link_libraries (glxtrace
411         glproc_gl
412         common_trace
413         common
414         ${ZLIB_LIBRARIES}
415         ${SNAPPY_LIBRARIES}
416         ${X11_X11_LIB}
417         ${CMAKE_THREAD_LIBS_INIT}
418         dl
419     )
420
421     install (TARGETS glxtrace LIBRARY DESTINATION ${WRAPPER_INSTALL_DIR})
422 endif ()
423
424
425 if (ENABLE_EGL AND NOT WIN32 AND NOT APPLE)
426     # libEGL.so/libGL.so
427     add_custom_command (
428         OUTPUT egltrace.cpp
429         COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/egltrace.py > ${CMAKE_CURRENT_BINARY_DIR}/egltrace.cpp
430         DEPENDS
431             egltrace.py
432             gltrace.py
433             trace.py
434             ${CMAKE_SOURCE_DIR}/specs/eglapi.py
435             ${CMAKE_SOURCE_DIR}/specs/glesapi.py
436             ${CMAKE_SOURCE_DIR}/specs/glapi.py
437             ${CMAKE_SOURCE_DIR}/specs/glparams.py
438             ${CMAKE_SOURCE_DIR}/specs/gltypes.py
439             ${CMAKE_SOURCE_DIR}/specs/stdapi.py
440     )
441
442     add_library (egltrace SHARED
443         egltrace.cpp
444         glcaps.cpp
445         gltrace_state.cpp
446         ${CMAKE_SOURCE_DIR}/helpers/eglsize.cpp
447     )
448
449     add_dependencies (egltrace glproc)
450
451     set_target_properties (egltrace PROPERTIES
452         # avoid the default "lib" prefix
453         PREFIX ""
454         # Prevent symbol relocations internal to our wrapper library to be
455         # overwritten by the application.
456         LINK_FLAGS "-Wl,-Bsymbolic -Wl,-Bsymbolic-functions"
457     )
458
459     target_link_libraries (egltrace
460         glproc_egl
461         common_trace
462         common
463         ${ZLIB_LIBRARIES}
464         ${SNAPPY_LIBRARIES}
465         ${CMAKE_THREAD_LIBS_INIT}
466         dl
467     )
468
469     install (TARGETS egltrace LIBRARY DESTINATION ${WRAPPER_INSTALL_DIR})
470 endif ()