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