]> git.cworth.org Git - apitrace/blob - wrappers/CMakeLists.txt
Move the last bits of code out of the top source dir.
[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
13 if (WIN32)
14     if (MINGW)
15         # Silence warnings about @nn suffix mismatch
16         set (CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -Wl,--enable-stdcall-fixup")
17     endif ()
18
19     # ddraw.dll
20     if (DirectX_D3D_INCLUDE_DIR)
21         include_directories (SYSTEM ${DirectX_D3D_INCLUDE_DIR})
22         add_custom_command (
23             OUTPUT ddrawtrace.cpp
24             COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/ddrawtrace.py > ${CMAKE_CURRENT_BINARY_DIR}/ddrawtrace.cpp
25             DEPENDS
26                 ddrawtrace.py
27                 dlltrace.py
28                 trace.py
29                 ${CMAKE_SOURCE_DIR}/dispatch/dispatch.py
30                 ${CMAKE_SOURCE_DIR}/specs/d3d.py
31                 ${CMAKE_SOURCE_DIR}/specs/d3dtypes.py
32                 ${CMAKE_SOURCE_DIR}/specs/d3dcaps.py
33                 ${CMAKE_SOURCE_DIR}/specs/ddraw.py
34                 ${CMAKE_SOURCE_DIR}/specs/winapi.py
35                 ${CMAKE_SOURCE_DIR}/specs/stdapi.py
36         )
37         add_library (ddrawtrace MODULE ddraw.def ddrawtrace.cpp)
38         target_link_libraries (ddrawtrace
39             common
40             ${ZLIB_LIBRARIES}
41             ${SNAPPY_LIBRARIES}
42         )
43         set_target_properties (ddrawtrace PROPERTIES
44             PREFIX ""
45             OUTPUT_NAME ddraw
46         )
47         install (TARGETS ddrawtrace LIBRARY DESTINATION ${WRAPPER_INSTALL_DIR})
48     endif ()
49
50     # d3d8.dll
51     if (DirectX_D3D8_INCLUDE_DIR AND DirectX_D3DX9_INCLUDE_DIR)
52         include_directories (SYSTEM ${DirectX_D3D8_INCLUDE_DIR} ${DirectX_D3DX9_INCLUDE_DIR})
53         add_custom_command (
54             OUTPUT d3d8trace.cpp
55             COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/d3d8trace.py > ${CMAKE_CURRENT_BINARY_DIR}/d3d8trace.cpp
56             DEPENDS
57                 d3d8trace.py
58                 dlltrace.py
59                 trace.py
60                 ${CMAKE_SOURCE_DIR}/dispatch/dispatch.py
61                 ${CMAKE_SOURCE_DIR}/specs/d3d8.py
62                 ${CMAKE_SOURCE_DIR}/specs/d3d8types.py
63                 ${CMAKE_SOURCE_DIR}/specs/d3d8caps.py
64                 ${CMAKE_SOURCE_DIR}/specs/winapi.py
65                 ${CMAKE_SOURCE_DIR}/specs/stdapi.py
66         )
67         add_library (d3d8trace MODULE d3d8.def d3d8trace.cpp d3dshader.cpp)
68         target_link_libraries (d3d8trace
69             common
70             ${ZLIB_LIBRARIES}
71             ${SNAPPY_LIBRARIES}
72         )
73         set_target_properties (d3d8trace PROPERTIES
74             PREFIX ""
75             OUTPUT_NAME d3d8
76         )
77         install (TARGETS d3d8trace LIBRARY DESTINATION ${WRAPPER_INSTALL_DIR})
78     endif ()
79
80     # d3d9.dll
81     if (DirectX_D3DX9_INCLUDE_DIR)
82         include_directories (SYSTEM ${DirectX_D3DX9_INCLUDE_DIR})
83         add_custom_command (
84             OUTPUT d3d9trace.cpp
85             COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/d3d9trace.py > ${CMAKE_CURRENT_BINARY_DIR}/d3d9trace.cpp
86             DEPENDS
87                 d3d9trace.py
88                 dlltrace.py
89                 trace.py
90                 ${CMAKE_SOURCE_DIR}/dispatch/dispatch.py
91                 ${CMAKE_SOURCE_DIR}/specs/d3d9.py
92                 ${CMAKE_SOURCE_DIR}/specs/d3d9types.py
93                 ${CMAKE_SOURCE_DIR}/specs/d3d9caps.py
94                 ${CMAKE_SOURCE_DIR}/specs/winapi.py
95                 ${CMAKE_SOURCE_DIR}/specs/stdapi.py
96         )
97         add_library (d3d9trace MODULE d3d9.def d3d9trace.cpp d3dshader.cpp)
98         target_link_libraries (d3d9trace
99             common
100             ${ZLIB_LIBRARIES}
101             ${SNAPPY_LIBRARIES}
102         )
103         set_target_properties (d3d9trace PROPERTIES
104             PREFIX ""
105             OUTPUT_NAME d3d9
106         )
107         install (TARGETS d3d9trace LIBRARY DESTINATION ${WRAPPER_INSTALL_DIR})
108     endif ()
109
110     # d3d10.dll
111     if (DirectX_D3DX10_INCLUDE_DIR)
112         include_directories (SYSTEM ${DirectX_D3DX10_INCLUDE_DIR})
113         add_custom_command (
114             OUTPUT d3d10trace.cpp
115             COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/d3d10trace.py > ${CMAKE_CURRENT_BINARY_DIR}/d3d10trace.cpp
116             DEPENDS
117                 d3d10trace.py
118                 dlltrace.py
119                 trace.py
120                 ${CMAKE_SOURCE_DIR}/dispatch/dispatch.py
121                 ${CMAKE_SOURCE_DIR}/specs/d3d10misc.py
122                 ${CMAKE_SOURCE_DIR}/specs/d3d10.py
123                 ${CMAKE_SOURCE_DIR}/specs/d3d10sdklayers.py
124                 ${CMAKE_SOURCE_DIR}/specs/d3dcommon.py
125                 ${CMAKE_SOURCE_DIR}/specs/dxgi.py
126                 ${CMAKE_SOURCE_DIR}/specs/dxgitype.py
127                 ${CMAKE_SOURCE_DIR}/specs/dxgiformat.py
128                 ${CMAKE_SOURCE_DIR}/specs/winapi.py
129                 ${CMAKE_SOURCE_DIR}/specs/stdapi.py
130         )
131         add_library (d3d10trace MODULE d3d10.def d3d10trace.cpp)
132         target_link_libraries (d3d10trace
133             common
134             ${ZLIB_LIBRARIES}
135             ${SNAPPY_LIBRARIES}
136         )
137         set_target_properties (d3d10trace PROPERTIES
138             PREFIX ""
139             OUTPUT_NAME d3d10
140         )
141         install (TARGETS d3d10trace LIBRARY DESTINATION ${WRAPPER_INSTALL_DIR})
142     endif ()
143
144     # d3d10_1.dll
145     if (DirectX_D3DX10_INCLUDE_DIR AND DirectX_D3D10_1_INCLUDE_DIR)
146         include_directories (SYSTEM ${DirectX_D3D10_1_INCLUDE_DIR})
147         add_custom_command (
148             OUTPUT d3d10_1trace.cpp
149             COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/d3d10_1trace.py > ${CMAKE_CURRENT_BINARY_DIR}/d3d10_1trace.cpp
150             DEPENDS
151                 d3d10_1trace.py
152                 dlltrace.py
153                 trace.py
154                 ${CMAKE_SOURCE_DIR}/dispatch/dispatch.py
155                 ${CMAKE_SOURCE_DIR}/specs/d3d10_1.py
156                 ${CMAKE_SOURCE_DIR}/specs/d3d10.py
157                 ${CMAKE_SOURCE_DIR}/specs/d3d10sdklayers.py
158                 ${CMAKE_SOURCE_DIR}/specs/d3dcommon.py
159                 ${CMAKE_SOURCE_DIR}/specs/dxgi.py
160                 ${CMAKE_SOURCE_DIR}/specs/dxgitype.py
161                 ${CMAKE_SOURCE_DIR}/specs/dxgiformat.py
162                 ${CMAKE_SOURCE_DIR}/specs/winapi.py
163                 ${CMAKE_SOURCE_DIR}/specs/stdapi.py
164         )
165         add_library (d3d10_1trace MODULE d3d10_1.def d3d10_1trace.cpp)
166         target_link_libraries (d3d10_1trace
167             common
168             ${ZLIB_LIBRARIES}
169             ${SNAPPY_LIBRARIES}
170         )
171         set_target_properties (d3d10_1trace
172             PROPERTIES PREFIX ""
173             OUTPUT_NAME d3d10_1
174         )
175         install (TARGETS d3d10_1trace LIBRARY DESTINATION ${WRAPPER_INSTALL_DIR})
176     endif ()
177
178     # d3d11.dll
179     if (DirectX_D3DX11_INCLUDE_DIR)
180         include_directories (SYSTEM ${DirectX_D3DX11_INCLUDE_DIR})
181         add_custom_command (
182             OUTPUT d3d11trace.cpp
183             COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/d3d11trace.py > ${CMAKE_CURRENT_BINARY_DIR}/d3d11trace.cpp
184             DEPENDS
185                 d3d11trace.py
186                 dlltrace.py
187                 trace.py
188                 ${CMAKE_SOURCE_DIR}/specs/d3d11.py
189                 ${CMAKE_SOURCE_DIR}/specs/d3d11sdklayers.py
190                 ${CMAKE_SOURCE_DIR}/specs/d3dcommon.py
191                 ${CMAKE_SOURCE_DIR}/specs/dxgi.py
192                 ${CMAKE_SOURCE_DIR}/specs/dxgitype.py
193                 ${CMAKE_SOURCE_DIR}/specs/dxgiformat.py
194                 ${CMAKE_SOURCE_DIR}/specs/winapi.py
195                 ${CMAKE_SOURCE_DIR}/specs/stdapi.py
196         )
197         add_library (d3d11trace MODULE d3d11.def d3d11trace.cpp)
198         target_link_libraries (d3d11trace
199             common
200             ${ZLIB_LIBRARIES}
201             ${SNAPPY_LIBRARIES}
202         )
203         set_target_properties (d3d11trace
204             PROPERTIES PREFIX ""
205             OUTPUT_NAME d3d11
206         )
207         install (TARGETS d3d11trace LIBRARY DESTINATION ${WRAPPER_INSTALL_DIR})
208     endif ()
209
210     # opengl32.dll
211     add_custom_command (
212         OUTPUT wgltrace.cpp
213         COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/wgltrace.py > ${CMAKE_CURRENT_BINARY_DIR}/wgltrace.cpp
214         DEPENDS
215                 wgltrace.py
216                 gltrace.py
217                 trace.py
218                 ${CMAKE_SOURCE_DIR}/dispatch/dispatch.py
219                 ${CMAKE_SOURCE_DIR}/specs/wglapi.py
220                 ${CMAKE_SOURCE_DIR}/specs/wglenum.py
221                 ${CMAKE_SOURCE_DIR}/specs/glapi.py
222                 ${CMAKE_SOURCE_DIR}/specs/glparams.py
223                 ${CMAKE_SOURCE_DIR}/specs/gltypes.py
224                 ${CMAKE_SOURCE_DIR}/specs/winapi.py
225                 ${CMAKE_SOURCE_DIR}/specs/stdapi.py
226     )
227     add_library (wgltrace MODULE opengl32.def
228         wgltrace.cpp
229         glcaps.cpp
230     )
231     add_dependencies (wgltrace glproc)
232     target_link_libraries (wgltrace
233         glproc_gl
234         common
235         ${ZLIB_LIBRARIES}
236         ${SNAPPY_LIBRARIES}
237     )
238     set_target_properties (wgltrace PROPERTIES
239         PREFIX ""
240         OUTPUT_NAME opengl32
241     )
242     install (TARGETS wgltrace LIBRARY DESTINATION ${WRAPPER_INSTALL_DIR})
243
244 elseif (APPLE)
245     # OpenGL framework
246     add_custom_command (
247         OUTPUT cgltrace.cpp
248         COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/cgltrace.py > ${CMAKE_CURRENT_BINARY_DIR}/cgltrace.cpp
249         DEPENDS
250             cgltrace.py
251             gltrace.py
252             trace.py
253             ${CMAKE_SOURCE_DIR}/specs/cglapi.py
254             ${CMAKE_SOURCE_DIR}/specs/glapi.py
255             ${CMAKE_SOURCE_DIR}/specs/glparams.py
256             ${CMAKE_SOURCE_DIR}/specs/gltypes.py
257             ${CMAKE_SOURCE_DIR}/specs/stdapi.py
258     )
259
260     add_library (cgltrace SHARED
261         cgltrace.cpp
262         glcaps.cpp
263     )
264
265     add_dependencies (cgltrace glproc)
266
267     set_target_properties (cgltrace PROPERTIES
268         # OpenGL framework name
269         PREFIX "" OUTPUT_NAME "OpenGL" SUFFIX ""
270         # Specificy the version and reexport GLU symbols
271         LINK_FLAGS "-compatibility_version 1 -current_version 1.0.0 -Wl,-reexport_library,/System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGLU.dylib"
272     )
273
274     target_link_libraries (cgltrace
275         glproc_gl
276         common
277         ${ZLIB_LIBRARIES}
278         ${SNAPPY_LIBRARIES}
279         ${CMAKE_THREAD_LIBS_INIT}
280         dl
281     )
282
283     install (TARGETS cgltrace LIBRARY DESTINATION ${WRAPPER_INSTALL_DIR})
284 elseif (X11_FOUND)
285     # libGL.so
286     add_custom_command (
287         OUTPUT glxtrace.cpp
288         COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/glxtrace.py > ${CMAKE_CURRENT_BINARY_DIR}/glxtrace.cpp
289         DEPENDS
290             glxtrace.py
291             gltrace.py
292             trace.py
293             ${CMAKE_SOURCE_DIR}/specs/glxapi.py
294             ${CMAKE_SOURCE_DIR}/specs/glapi.py
295             ${CMAKE_SOURCE_DIR}/specs/glparams.py
296             ${CMAKE_SOURCE_DIR}/specs/gltypes.py
297             ${CMAKE_SOURCE_DIR}/specs/stdapi.py
298     )
299
300     add_library (glxtrace SHARED
301         glxtrace.cpp
302         glcaps.cpp
303     )
304
305     add_dependencies (glxtrace glproc)
306
307     set_target_properties (glxtrace PROPERTIES
308         # avoid the default "lib" prefix
309         PREFIX ""
310         # Prevent symbol relocations internal to our wrapper library to be
311         # overwritten by the application.
312         LINK_FLAGS "-Wl,-Bsymbolic -Wl,-Bsymbolic-functions"
313     )
314
315     target_link_libraries (glxtrace
316         glproc_gl
317         common
318         ${ZLIB_LIBRARIES}
319         ${SNAPPY_LIBRARIES}
320         ${X11_X11_LIB}
321         ${CMAKE_THREAD_LIBS_INIT}
322         dl
323     )
324
325     install (TARGETS glxtrace LIBRARY DESTINATION ${WRAPPER_INSTALL_DIR})
326 endif ()
327
328
329 if (ENABLE_EGL AND NOT WIN32 AND NOT APPLE)
330     # libEGL.so/libGL.so
331     add_custom_command (
332         OUTPUT egltrace.cpp
333         COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/egltrace.py > ${CMAKE_CURRENT_BINARY_DIR}/egltrace.cpp
334         DEPENDS
335             egltrace.py
336             gltrace.py
337             trace.py
338             ${CMAKE_SOURCE_DIR}/specs/eglapi.py
339             ${CMAKE_SOURCE_DIR}/specs/glesapi.py
340             ${CMAKE_SOURCE_DIR}/specs/glapi.py
341             ${CMAKE_SOURCE_DIR}/specs/glparams.py
342             ${CMAKE_SOURCE_DIR}/specs/gltypes.py
343             ${CMAKE_SOURCE_DIR}/specs/stdapi.py
344     )
345
346     add_library (egltrace SHARED
347         egltrace.cpp
348         glcaps.cpp
349     )
350
351     add_dependencies (egltrace glproc)
352
353     set_target_properties (egltrace PROPERTIES
354         # avoid the default "lib" prefix
355         PREFIX ""
356         # Prevent symbol relocations internal to our wrapper library to be
357         # overwritten by the application.
358         LINK_FLAGS "-Wl,-Bsymbolic -Wl,-Bsymbolic-functions"
359     )
360
361     target_link_libraries (egltrace
362         glproc_egl
363         common
364         ${ZLIB_LIBRARIES}
365         ${SNAPPY_LIBRARIES}
366         ${CMAKE_THREAD_LIBS_INIT}
367         dl
368     )
369
370     install (TARGETS egltrace LIBRARY DESTINATION ${WRAPPER_INSTALL_DIR})
371 endif ()