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