]> git.cworth.org Git - apitrace/blob - wrappers/CMakeLists.txt
d3d11: Catch up with d3d10.
[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/d3d9dxva2.py
105                 ${CMAKE_SOURCE_DIR}/specs/winapi.py
106                 ${CMAKE_SOURCE_DIR}/specs/stdapi.py
107         )
108         add_library (d3d9trace MODULE d3d9.def d3d9trace.cpp d3d9shader.cpp)
109         target_link_libraries (d3d9trace
110             common_trace
111             common
112             ${ZLIB_LIBRARIES}
113             ${SNAPPY_LIBRARIES}
114         )
115         set_target_properties (d3d9trace PROPERTIES
116             PREFIX ""
117             OUTPUT_NAME d3d9
118         )
119         install (TARGETS d3d9trace LIBRARY DESTINATION ${WRAPPER_INSTALL_DIR})
120     endif ()
121
122     # d3d10.dll
123     if (DirectX_D3D10_INCLUDE_DIR)
124         include_directories (SYSTEM ${DirectX_D3D10_INCLUDE_DIR})
125         add_custom_command (
126             OUTPUT d3d10trace.cpp
127             COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/d3d10trace.py > ${CMAKE_CURRENT_BINARY_DIR}/d3d10trace.cpp
128             DEPENDS
129                 d3d10trace.py
130                 d3dcommontrace.py
131                 dlltrace.py
132                 trace.py
133                 ${CMAKE_SOURCE_DIR}/dispatch/dispatch.py
134                 ${CMAKE_SOURCE_DIR}/specs/d3d10.py
135                 ${CMAKE_SOURCE_DIR}/specs/d3d10misc.py
136                 ${CMAKE_SOURCE_DIR}/specs/d3d10sdklayers.py
137                 ${CMAKE_SOURCE_DIR}/specs/d3d10shader.py
138                 ${CMAKE_SOURCE_DIR}/specs/d3d10effect.py
139                 ${CMAKE_SOURCE_DIR}/specs/d3dcommon.py
140                 ${CMAKE_SOURCE_DIR}/specs/dxgi.py
141                 ${CMAKE_SOURCE_DIR}/specs/dxgitype.py
142                 ${CMAKE_SOURCE_DIR}/specs/dxgiformat.py
143                 ${CMAKE_SOURCE_DIR}/specs/winapi.py
144                 ${CMAKE_SOURCE_DIR}/specs/stdapi.py
145         )
146         add_library (d3d10trace MODULE
147             d3d10.def
148             d3d10trace.cpp
149             d3d10shader.cpp
150         )
151         target_link_libraries (d3d10trace
152             common_trace
153             common
154             ${ZLIB_LIBRARIES}
155             ${SNAPPY_LIBRARIES}
156         )
157         set_target_properties (d3d10trace PROPERTIES
158             PREFIX ""
159             OUTPUT_NAME d3d10
160         )
161         install (TARGETS d3d10trace LIBRARY DESTINATION ${WRAPPER_INSTALL_DIR})
162     endif ()
163
164     # d3d10_1.dll
165     if (DirectX_D3D10_1_INCLUDE_DIR)
166         include_directories (SYSTEM ${DirectX_D3D10_1_INCLUDE_DIR})
167         add_custom_command (
168             OUTPUT d3d10_1trace.cpp
169             COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/d3d10_1trace.py > ${CMAKE_CURRENT_BINARY_DIR}/d3d10_1trace.cpp
170             DEPENDS
171                 d3d10_1trace.py
172                 d3dcommontrace.py
173                 dlltrace.py
174                 trace.py
175                 ${CMAKE_SOURCE_DIR}/dispatch/dispatch.py
176                 ${CMAKE_SOURCE_DIR}/specs/d3d10_1.py
177                 ${CMAKE_SOURCE_DIR}/specs/d3d10.py
178                 ${CMAKE_SOURCE_DIR}/specs/d3d10sdklayers.py
179                 ${CMAKE_SOURCE_DIR}/specs/d3dcommon.py
180                 ${CMAKE_SOURCE_DIR}/specs/dxgi.py
181                 ${CMAKE_SOURCE_DIR}/specs/dxgitype.py
182                 ${CMAKE_SOURCE_DIR}/specs/dxgiformat.py
183                 ${CMAKE_SOURCE_DIR}/specs/winapi.py
184                 ${CMAKE_SOURCE_DIR}/specs/stdapi.py
185         )
186         add_library (d3d10_1trace MODULE
187             d3d10_1.def
188             d3d10_1trace.cpp
189             d3d10shader.cpp
190         )
191         target_link_libraries (d3d10_1trace
192             common_trace
193             common
194             ${ZLIB_LIBRARIES}
195             ${SNAPPY_LIBRARIES}
196         )
197         set_target_properties (d3d10_1trace
198             PROPERTIES PREFIX ""
199             OUTPUT_NAME d3d10_1
200         )
201         install (TARGETS d3d10_1trace LIBRARY DESTINATION ${WRAPPER_INSTALL_DIR})
202     endif ()
203
204     # d3d11.dll
205     if (DirectX_D3D11_INCLUDE_DIR)
206         if (DirectX_D3D11_1_INCLUDE_DIR)
207             set (HAVE_D3D11_1 1)
208         else ()
209             set (HAVE_D3D11_1 0)
210         endif ()
211
212         include_directories (SYSTEM ${DirectX_D3D11_INCLUDE_DIR})
213         add_custom_command (
214             OUTPUT d3d11trace.cpp
215             COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/d3d11trace.py ${HAVE_D3D11_1} > ${CMAKE_CURRENT_BINARY_DIR}/d3d11trace.cpp
216             DEPENDS
217                 d3d11trace.py
218                 d3dcommontrace.py
219                 dlltrace.py
220                 trace.py
221                 ${CMAKE_SOURCE_DIR}/specs/d3d11_1.py
222                 ${CMAKE_SOURCE_DIR}/specs/d3d11.py
223                 ${CMAKE_SOURCE_DIR}/specs/d3d11sdklayers.py
224                 ${CMAKE_SOURCE_DIR}/specs/d3dcommon.py
225                 ${CMAKE_SOURCE_DIR}/specs/dxgi.py
226                 ${CMAKE_SOURCE_DIR}/specs/dxgitype.py
227                 ${CMAKE_SOURCE_DIR}/specs/dxgiformat.py
228                 ${CMAKE_SOURCE_DIR}/specs/winapi.py
229                 ${CMAKE_SOURCE_DIR}/specs/stdapi.py
230         )
231         add_library (d3d11trace MODULE
232             d3d11.def
233             d3d11trace.cpp
234             d3d10shader.cpp
235         )
236         target_link_libraries (d3d11trace
237             common_trace
238             common
239             ${ZLIB_LIBRARIES}
240             ${SNAPPY_LIBRARIES}
241         )
242         set_target_properties (d3d11trace
243             PROPERTIES PREFIX ""
244             OUTPUT_NAME d3d11
245         )
246         install (TARGETS d3d11trace LIBRARY DESTINATION ${WRAPPER_INSTALL_DIR})
247     endif ()
248
249     # opengl32.dll
250     add_custom_command (
251         OUTPUT wgltrace.cpp
252         COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/wgltrace.py > ${CMAKE_CURRENT_BINARY_DIR}/wgltrace.cpp
253         DEPENDS
254                 wgltrace.py
255                 gltrace.py
256                 trace.py
257                 ${CMAKE_SOURCE_DIR}/dispatch/dispatch.py
258                 ${CMAKE_SOURCE_DIR}/specs/wglapi.py
259                 ${CMAKE_SOURCE_DIR}/specs/wglenum.py
260                 ${CMAKE_SOURCE_DIR}/specs/glapi.py
261                 ${CMAKE_SOURCE_DIR}/specs/glparams.py
262                 ${CMAKE_SOURCE_DIR}/specs/gltypes.py
263                 ${CMAKE_SOURCE_DIR}/specs/winapi.py
264                 ${CMAKE_SOURCE_DIR}/specs/stdapi.py
265     )
266     add_library (wgltrace MODULE opengl32.def
267         wgltrace.cpp
268         glcaps.cpp
269         gltrace_state.cpp
270     )
271     add_dependencies (wgltrace glproc)
272     target_link_libraries (wgltrace
273         glproc_gl
274         common_trace
275         common
276         ${ZLIB_LIBRARIES}
277         ${SNAPPY_LIBRARIES}
278     )
279     set_target_properties (wgltrace PROPERTIES
280         PREFIX ""
281         OUTPUT_NAME opengl32
282     )
283     install (TARGETS wgltrace LIBRARY DESTINATION ${WRAPPER_INSTALL_DIR})
284
285 elseif (APPLE)
286     # OpenGL framework
287     add_custom_command (
288         OUTPUT cgltrace.cpp
289         COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/cgltrace.py > ${CMAKE_CURRENT_BINARY_DIR}/cgltrace.cpp
290         DEPENDS
291             cgltrace.py
292             gltrace.py
293             trace.py
294             ${CMAKE_SOURCE_DIR}/specs/cglapi.py
295             ${CMAKE_SOURCE_DIR}/specs/glapi.py
296             ${CMAKE_SOURCE_DIR}/specs/glparams.py
297             ${CMAKE_SOURCE_DIR}/specs/gltypes.py
298             ${CMAKE_SOURCE_DIR}/specs/stdapi.py
299     )
300
301     add_library (cgltrace SHARED
302         cgltrace.cpp
303         glcaps.cpp
304         gltrace_state.cpp
305     )
306
307     add_dependencies (cgltrace glproc)
308
309     set_target_properties (cgltrace PROPERTIES
310         # OpenGL framework name
311         PREFIX "" OUTPUT_NAME "OpenGL" SUFFIX ""
312         # Specificy the version and reexport GLU symbols
313         LINK_FLAGS "-compatibility_version 1 -current_version 1.0.0 -Wl,-reexport_library,/System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGLU.dylib"
314     )
315
316     target_link_libraries (cgltrace
317         glproc_gl
318         common_trace
319         common
320         ${ZLIB_LIBRARIES}
321         ${SNAPPY_LIBRARIES}
322         ${CMAKE_THREAD_LIBS_INIT}
323         dl
324     )
325
326     install (TARGETS cgltrace LIBRARY DESTINATION ${WRAPPER_INSTALL_DIR})
327 elseif (X11_FOUND)
328     # libGL.so
329     add_custom_command (
330         OUTPUT glxtrace.cpp
331         COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/glxtrace.py > ${CMAKE_CURRENT_BINARY_DIR}/glxtrace.cpp
332         DEPENDS
333             glxtrace.py
334             gltrace.py
335             trace.py
336             ${CMAKE_SOURCE_DIR}/specs/glxapi.py
337             ${CMAKE_SOURCE_DIR}/specs/glapi.py
338             ${CMAKE_SOURCE_DIR}/specs/glparams.py
339             ${CMAKE_SOURCE_DIR}/specs/gltypes.py
340             ${CMAKE_SOURCE_DIR}/specs/stdapi.py
341     )
342
343     add_library (glxtrace SHARED
344         glxtrace.cpp
345         glcaps.cpp
346         gltrace_state.cpp
347     )
348
349     add_dependencies (glxtrace glproc)
350
351     set_target_properties (glxtrace PROPERTIES
352         # avoid the default "lib" prefix
353         PREFIX ""
354         # Prevent symbol relocations internal to our wrapper library to be
355         # overwritten by the application.
356         LINK_FLAGS "-Wl,-Bsymbolic -Wl,-Bsymbolic-functions"
357     )
358
359     target_link_libraries (glxtrace
360         glproc_gl
361         common_trace
362         common
363         ${ZLIB_LIBRARIES}
364         ${SNAPPY_LIBRARIES}
365         ${CMAKE_THREAD_LIBS_INIT}
366         dl
367     )
368
369     install (TARGETS glxtrace LIBRARY DESTINATION ${WRAPPER_INSTALL_DIR})
370 endif ()
371
372
373 if (ENABLE_EGL AND NOT WIN32 AND NOT APPLE)
374     # libEGL.so/libGL.so
375     add_custom_command (
376         OUTPUT egltrace.cpp
377         COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/egltrace.py > ${CMAKE_CURRENT_BINARY_DIR}/egltrace.cpp
378         DEPENDS
379             egltrace.py
380             gltrace.py
381             trace.py
382             ${CMAKE_SOURCE_DIR}/specs/eglapi.py
383             ${CMAKE_SOURCE_DIR}/specs/glesapi.py
384             ${CMAKE_SOURCE_DIR}/specs/glapi.py
385             ${CMAKE_SOURCE_DIR}/specs/glparams.py
386             ${CMAKE_SOURCE_DIR}/specs/gltypes.py
387             ${CMAKE_SOURCE_DIR}/specs/stdapi.py
388     )
389
390     add_library (egltrace SHARED
391         egltrace.cpp
392         glcaps.cpp
393         gltrace_state.cpp
394         ${CMAKE_SOURCE_DIR}/helpers/eglsize.cpp
395     )
396
397     add_dependencies (egltrace glproc)
398
399     set_target_properties (egltrace PROPERTIES
400         # avoid the default "lib" prefix
401         PREFIX ""
402         # Prevent symbol relocations internal to our wrapper library to be
403         # overwritten by the application.
404         LINK_FLAGS "-Wl,-Bsymbolic -Wl,-Bsymbolic-functions"
405     )
406
407     target_link_libraries (egltrace
408         glproc_egl
409         common_trace
410         common
411         ${ZLIB_LIBRARIES}
412         ${SNAPPY_LIBRARIES}
413         ${CMAKE_THREAD_LIBS_INIT}
414         dl
415     )
416
417     install (TARGETS egltrace LIBRARY DESTINATION ${WRAPPER_INSTALL_DIR})
418 endif ()