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