]> git.cworth.org Git - apitrace/blob - retrace/CMakeLists.txt
common: dump backtrace on signals
[apitrace] / retrace / CMakeLists.txt
1 ##############################################################################
2 # API retracers
3
4 include_directories (
5     ${CMAKE_CURRENT_SOURCE_DIR}
6     ${CMAKE_SOURCE_DIR}/helpers
7     ${CMAKE_BINARY_DIR}/dispatch
8     ${CMAKE_SOURCE_DIR}/dispatch
9     ${CMAKE_SOURCE_DIR}/image
10 )
11
12 add_definitions (-DRETRACE)
13
14 add_custom_command (
15     OUTPUT glretrace_gl.cpp
16     COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/glretrace.py > ${CMAKE_CURRENT_BINARY_DIR}/glretrace_gl.cpp
17     DEPENDS
18                 glretrace.py
19                 retrace.py
20                 ${CMAKE_SOURCE_DIR}/specs/glapi.py
21                 ${CMAKE_SOURCE_DIR}/specs/glesapi.py
22                 ${CMAKE_SOURCE_DIR}/specs/gltypes.py
23                 ${CMAKE_SOURCE_DIR}/specs/stdapi.py
24 )
25
26 add_custom_command (
27     OUTPUT glstate_params.cpp
28     COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/glstate_params.py > ${CMAKE_CURRENT_BINARY_DIR}/glstate_params.cpp
29     DEPENDS
30                 glstate_params.py
31                 ${CMAKE_SOURCE_DIR}/specs/glparams.py
32                 ${CMAKE_SOURCE_DIR}/specs/gltypes.py
33                 ${CMAKE_SOURCE_DIR}/specs/stdapi.py
34 )
35
36 add_library (retrace_common STATIC
37     retrace.cpp
38     retrace_main.cpp
39     retrace_stdc.cpp
40     retrace_swizzle.cpp
41     json.cpp
42 )
43 target_link_libraries (retrace_common
44     image
45     common
46     ${ZLIB_LIBRARIES}
47     ${SNAPPY_LIBRARIES}
48     ${GETOPT_LIBRARIES}
49     ${LIBBACKTRACE_LIBRARIES}
50 )
51
52 add_library (glretrace_common STATIC
53     glretrace_gl.cpp
54     glretrace_cgl.cpp
55     glretrace_glx.cpp
56     glretrace_wgl.cpp
57     glretrace_egl.cpp
58     glretrace_main.cpp
59     glretrace_ws.cpp
60     glstate.cpp
61     glstate_images.cpp
62     glstate_params.cpp
63     glstate_shaders.cpp
64     glws.cpp
65 )
66 add_dependencies (glretrace_common glproc)
67 target_link_libraries (glretrace_common
68     retrace_common
69 )
70
71
72 if (WIN32 OR APPLE OR X11_FOUND)
73     add_executable (glretrace
74         ${glws_os}
75     )
76
77     add_dependencies (glretrace glproc)
78
79     target_link_libraries (glretrace
80         retrace_common
81         glretrace_common
82         glproc_gl
83     )
84
85     if (WIN32)
86     else ()
87         if (APPLE)
88             target_link_libraries (glretrace
89                 "-framework Cocoa"
90                 "-framework ApplicationServices" # CGS*
91                 #"-framework OpenGL" # CGL*
92             )
93         else ()
94             target_link_libraries (glretrace ${X11_X11_LIB})
95         endif ()
96
97         target_link_libraries (glretrace
98             # gdb doesn't like when pthreads is loaded through dlopen (which happens
99             # when dlopen'ing libGL), so link pthreads to avoid this issue.  See also
100             # http://stackoverflow.com/questions/2702628/gdb-cannot-find-new-threads-generic-error
101             ${CMAKE_THREAD_LIBS_INIT}
102             dl
103         )
104
105         if (${CMAKE_SYSTEM_NAME} MATCHES "Linux")
106             target_link_libraries (glretrace rt)
107             if (READPROC_H_FOUND)
108                 target_link_libraries (glretrace ${proc_LIBRARY})
109             endif ()
110         endif ()
111
112     endif ()
113
114     install (TARGETS glretrace RUNTIME DESTINATION bin) 
115 endif ()
116
117 if (ENABLE_EGL AND X11_FOUND AND NOT WIN32 AND NOT APPLE)
118     add_executable (eglretrace
119         glws_egl_xlib.cpp
120     )
121
122     add_dependencies (eglretrace glproc)
123
124     target_link_libraries (eglretrace
125         retrace_common
126         glretrace_common
127         glproc_egl
128         ${X11_X11_LIB}
129         ${CMAKE_THREAD_LIBS_INIT}
130         dl
131     )
132
133     if (${CMAKE_SYSTEM_NAME} MATCHES "Linux")
134         target_link_libraries (eglretrace rt)
135         if (READPROC_H_FOUND)
136             target_link_libraries (eglretrace ${proc_LIBRARY})
137         endif ()
138     endif ()
139
140     install (TARGETS eglretrace RUNTIME DESTINATION bin) 
141 endif ()
142
143 if (WIN32)
144     if (DirectX_D3D8_INCLUDE_DIR) 
145         include_directories (BEFORE SYSTEM ${DirectX_D3D8_INCLUDE_DIR})
146         set (HAVE_D3D8 1)
147         set (D3DSTATE_SOURCES ${D3DSTATE_SOURCES}
148             d3d8state.cpp
149             d3d8state_images.cpp
150         )
151     else ()
152         set (HAVE_D3D8 0)
153     endif ()
154     add_custom_command (
155         OUTPUT d3dretrace_d3d8.cpp
156         COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/d3d9retrace.py d3d8 ${HAVE_D3D8} > ${CMAKE_CURRENT_BINARY_DIR}/d3dretrace_d3d8.cpp
157         DEPENDS
158                 d3d9retrace.py
159                 dllretrace.py
160                 retrace.py
161                 ${CMAKE_SOURCE_DIR}/dispatch/dispatch.py
162                 ${CMAKE_SOURCE_DIR}/specs/d3d8.py
163                 ${CMAKE_SOURCE_DIR}/specs/d3d8types.py
164                 ${CMAKE_SOURCE_DIR}/specs/d3d8caps.py
165                 ${CMAKE_SOURCE_DIR}/specs/winapi.py
166                 ${CMAKE_SOURCE_DIR}/specs/stdapi.py
167     )
168
169     if (DirectX_D3D9_INCLUDE_DIR)
170         include_directories (BEFORE SYSTEM ${DirectX_D3D9_INCLUDE_DIR})
171         set (HAVE_D3D9 1)
172     else ()
173         set (HAVE_D3D9 0)
174     endif ()
175     add_custom_command (
176         OUTPUT d3dretrace_d3d9.cpp
177         COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/d3d9retrace.py d3d9 ${HAVE_D3D9} > ${CMAKE_CURRENT_BINARY_DIR}/d3dretrace_d3d9.cpp
178         DEPENDS
179                 d3d9retrace.py
180                 dllretrace.py
181                 retrace.py
182                 ${CMAKE_SOURCE_DIR}/dispatch/dispatch.py
183                 ${CMAKE_SOURCE_DIR}/specs/d3d9.py
184                 ${CMAKE_SOURCE_DIR}/specs/d3d9types.py
185                 ${CMAKE_SOURCE_DIR}/specs/d3d9caps.py
186                 ${CMAKE_SOURCE_DIR}/specs/winapi.py
187                 ${CMAKE_SOURCE_DIR}/specs/stdapi.py
188     )
189
190     if (DirectX_D3D10_INCLUDE_DIR)
191         include_directories (BEFORE SYSTEM ${DirectX_D3D10_INCLUDE_DIR})
192         set (DXGI_MODULES d3d10)
193         if (DirectX_D3D10_1_INCLUDE_DIR)
194             include_directories (BEFORE SYSTEM ${DirectX_D3D10_1_INCLUDE_DIR})
195             set (DXGI_MODULES ${DXGI_MODULES} d3d10_1)
196         endif ()
197         set (D3DSTATE_SOURCES ${D3DSTATE_SOURCES}
198             dxgistate.cpp
199             d3d10state.cpp
200             d3d10state_images.cpp
201         )
202     endif ()
203
204     if (DirectX_D3D11_INCLUDE_DIR)
205         include_directories (BEFORE SYSTEM
206             ${DirectX_D3D11_INCLUDE_DIR}
207             ${CMAKE_SOURCE_DIR}/thirdparty/directxtex/DirectXTex
208         )
209         set (DXGI_MODULES ${DXGI_MODULES} d3d11)
210         if (DirectX_D3D11_1_INCLUDE_DIR)
211             include_directories (BEFORE SYSTEM ${DirectX_D3D11_1_INCLUDE_DIR})
212             set (DXGI_MODULES ${DXGI_MODULES} d3d11_1)
213         endif ()
214         set (D3DSTATE_SOURCES ${D3DSTATE_SOURCES}
215             d3d11state.cpp
216             d3d11state_images.cpp
217         )
218     endif ()
219
220     add_custom_command (
221         OUTPUT d3dretrace_dxgi.cpp
222         COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/dxgiretrace.py ${DXGI_MODULES} > ${CMAKE_CURRENT_BINARY_DIR}/d3dretrace_dxgi.cpp
223         DEPENDS
224                 dxgiretrace.py
225                 dllretrace.py
226                 retrace.py
227                 ${CMAKE_SOURCE_DIR}/dispatch/dispatch.py
228                 ${CMAKE_SOURCE_DIR}/specs/d3d11_1.py
229                 ${CMAKE_SOURCE_DIR}/specs/d3d11.py
230                 ${CMAKE_SOURCE_DIR}/specs/d3d11sdklayers.py
231                 ${CMAKE_SOURCE_DIR}/specs/d3d10_1.py
232                 ${CMAKE_SOURCE_DIR}/specs/d3d10.py
233                 ${CMAKE_SOURCE_DIR}/specs/d3d10misc.py
234                 ${CMAKE_SOURCE_DIR}/specs/d3d10sdklayers.py
235                 ${CMAKE_SOURCE_DIR}/specs/d3dcommon.py
236                 ${CMAKE_SOURCE_DIR}/specs/dxgi1_2.py
237                 ${CMAKE_SOURCE_DIR}/specs/dxgi.py
238                 ${CMAKE_SOURCE_DIR}/specs/dxgitype.py
239                 ${CMAKE_SOURCE_DIR}/specs/dxgiformat.py
240                 ${CMAKE_SOURCE_DIR}/specs/winapi.py
241                 ${CMAKE_SOURCE_DIR}/specs/stdapi.py
242     )
243
244     add_executable (d3dretrace
245         d3dretrace_main.cpp
246         d3dretrace_d3d8.cpp
247         d3dretrace_d3d9.cpp
248         d3dretrace_dxgi.cpp
249         d3dretrace_ws.cpp
250         d3d9state.cpp
251         d3d9state_images.cpp
252         ${D3DSTATE_SOURCES}
253     )
254     target_link_libraries (d3dretrace
255         retrace_common
256         d3dhelpers
257     )
258     if (DirectX_D3D11_INCLUDE_DIR)
259         target_link_libraries (d3dretrace directxtex)
260     endif ()
261
262     install (TARGETS d3dretrace RUNTIME DESTINATION bin)
263 endif ()