]> git.cworth.org Git - apitrace/blob - retrace/CMakeLists.txt
d3d11state: Use DirectXTex for format conversion.
[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         endif ()
106
107     endif ()
108
109     install (TARGETS glretrace RUNTIME DESTINATION bin) 
110 endif ()
111
112 if (ENABLE_EGL AND X11_FOUND AND NOT WIN32 AND NOT APPLE)
113     add_executable (eglretrace
114         glws_egl_xlib.cpp
115     )
116
117     add_dependencies (eglretrace glproc)
118
119     target_link_libraries (eglretrace
120         retrace_common
121         glretrace_common
122         glproc_egl
123         ${X11_X11_LIB}
124         ${CMAKE_THREAD_LIBS_INIT}
125         dl
126     )
127
128     if (${CMAKE_SYSTEM_NAME} MATCHES "Linux")
129         target_link_libraries (eglretrace rt)
130     endif ()
131
132     install (TARGETS eglretrace RUNTIME DESTINATION bin) 
133 endif ()
134
135 if (WIN32)
136     if (DirectX_D3D8_INCLUDE_DIR) 
137         include_directories (BEFORE SYSTEM ${DirectX_D3D8_INCLUDE_DIR})
138         set (HAVE_D3D8 1)
139     else ()
140         set (HAVE_D3D8 0)
141     endif ()
142     add_custom_command (
143         OUTPUT d3dretrace_d3d8.cpp
144         COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/d3d9retrace.py d3d8 ${HAVE_D3D8} > ${CMAKE_CURRENT_BINARY_DIR}/d3dretrace_d3d8.cpp
145         DEPENDS
146                 d3d9retrace.py
147                 dllretrace.py
148                 retrace.py
149                 ${CMAKE_SOURCE_DIR}/dispatch/dispatch.py
150                 ${CMAKE_SOURCE_DIR}/specs/d3d8.py
151                 ${CMAKE_SOURCE_DIR}/specs/d3d8types.py
152                 ${CMAKE_SOURCE_DIR}/specs/d3d8caps.py
153                 ${CMAKE_SOURCE_DIR}/specs/winapi.py
154                 ${CMAKE_SOURCE_DIR}/specs/stdapi.py
155     )
156
157     if (DirectX_D3D9_INCLUDE_DIR)
158         include_directories (BEFORE SYSTEM ${DirectX_D3D9_INCLUDE_DIR})
159         set (HAVE_D3D9 1)
160     else ()
161         set (HAVE_D3D9 0)
162     endif ()
163     add_custom_command (
164         OUTPUT d3dretrace_d3d9.cpp
165         COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/d3d9retrace.py d3d9 ${HAVE_D3D9} > ${CMAKE_CURRENT_BINARY_DIR}/d3dretrace_d3d9.cpp
166         DEPENDS
167                 d3d9retrace.py
168                 dllretrace.py
169                 retrace.py
170                 ${CMAKE_SOURCE_DIR}/dispatch/dispatch.py
171                 ${CMAKE_SOURCE_DIR}/specs/d3d9.py
172                 ${CMAKE_SOURCE_DIR}/specs/d3d9types.py
173                 ${CMAKE_SOURCE_DIR}/specs/d3d9caps.py
174                 ${CMAKE_SOURCE_DIR}/specs/winapi.py
175                 ${CMAKE_SOURCE_DIR}/specs/stdapi.py
176     )
177
178     if (DirectX_D3D10_INCLUDE_DIR)
179         include_directories (BEFORE SYSTEM ${DirectX_D3D10_INCLUDE_DIR})
180         set (DXGI_MODULES d3d10)
181         if (DirectX_D3D10_1_INCLUDE_DIR)
182             include_directories (BEFORE SYSTEM ${DirectX_D3D10_1_INCLUDE_DIR})
183             set (DXGI_MODULES ${DXGI_MODULES} d3d10_1)
184         endif ()
185         set (D3DSTATE_SOURCES ${D3DSTATE_SOURCES}
186             d3d10state.cpp
187             d3d10state_images.cpp
188         )
189     endif ()
190
191     if (DirectX_D3D11_INCLUDE_DIR)
192         include_directories (BEFORE SYSTEM
193             ${DirectX_D3D11_INCLUDE_DIR}
194             ${CMAKE_SOURCE_DIR}/thirdparty/directxtex/DirectXTex
195         )
196         set (DXGI_MODULES ${DXGI_MODULES} d3d11)
197         if (DirectX_D3D11_1_INCLUDE_DIR)
198             include_directories (BEFORE SYSTEM ${DirectX_D3D11_1_INCLUDE_DIR})
199             set (DXGI_MODULES ${DXGI_MODULES} d3d11_1)
200         endif ()
201         set (D3DSTATE_SOURCES ${D3DSTATE_SOURCES}
202             d3d11state.cpp
203             d3d11state_images.cpp
204         )
205     endif ()
206
207     add_custom_command (
208         OUTPUT d3dretrace_dxgi.cpp
209         COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/dxgiretrace.py ${DXGI_MODULES} > ${CMAKE_CURRENT_BINARY_DIR}/d3dretrace_dxgi.cpp
210         DEPENDS
211                 dxgiretrace.py
212                 dllretrace.py
213                 retrace.py
214                 ${CMAKE_SOURCE_DIR}/dispatch/dispatch.py
215                 ${CMAKE_SOURCE_DIR}/specs/d3d11_1.py
216                 ${CMAKE_SOURCE_DIR}/specs/d3d11.py
217                 ${CMAKE_SOURCE_DIR}/specs/d3d11sdklayers.py
218                 ${CMAKE_SOURCE_DIR}/specs/d3d10_1.py
219                 ${CMAKE_SOURCE_DIR}/specs/d3d10.py
220                 ${CMAKE_SOURCE_DIR}/specs/d3d10misc.py
221                 ${CMAKE_SOURCE_DIR}/specs/d3d10sdklayers.py
222                 ${CMAKE_SOURCE_DIR}/specs/d3dcommon.py
223                 ${CMAKE_SOURCE_DIR}/specs/dxgi.py
224                 ${CMAKE_SOURCE_DIR}/specs/dxgitype.py
225                 ${CMAKE_SOURCE_DIR}/specs/dxgiformat.py
226                 ${CMAKE_SOURCE_DIR}/specs/winapi.py
227                 ${CMAKE_SOURCE_DIR}/specs/stdapi.py
228     )
229
230     add_executable (d3dretrace
231         d3dretrace_main.cpp
232         d3dretrace_d3d8.cpp
233         d3dretrace_d3d9.cpp
234         d3dretrace_dxgi.cpp
235         d3dretrace_ws.cpp
236         d3d9state.cpp
237         d3d9state_images.cpp
238         ${D3DSTATE_SOURCES}
239     )
240     target_link_libraries (d3dretrace
241         retrace_common
242         d3dhelpers
243     )
244     if (DirectX_D3D11_INCLUDE_DIR)
245         target_link_libraries (d3dretrace directxtex)
246     endif ()
247
248     install (TARGETS d3dretrace RUNTIME DESTINATION bin)
249 endif ()