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