]> git.cworth.org Git - apitrace/blob - retrace/CMakeLists.txt
c6a364f30f42f66a6fdb92f7eda432dff52fef65
[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 ${DirectX_D3D11_INCLUDE_DIR})
193         set (DXGI_MODULES ${DXGI_MODULES} d3d11)
194         if (DirectX_D3D11_1_INCLUDE_DIR)
195             include_directories (BEFORE SYSTEM ${DirectX_D3D11_1_INCLUDE_DIR})
196             set (DXGI_MODULES ${DXGI_MODULES} d3d11_1)
197         endif ()
198         set (D3DSTATE_SOURCES ${D3DSTATE_SOURCES}
199             d3d11state.cpp
200             d3d11state_images.cpp
201         )
202     endif ()
203
204     add_custom_command (
205         OUTPUT d3dretrace_dxgi.cpp
206         COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/dxgiretrace.py ${DXGI_MODULES} > ${CMAKE_CURRENT_BINARY_DIR}/d3dretrace_dxgi.cpp
207         DEPENDS
208                 dxgiretrace.py
209                 dllretrace.py
210                 retrace.py
211                 ${CMAKE_SOURCE_DIR}/dispatch/dispatch.py
212                 ${CMAKE_SOURCE_DIR}/specs/d3d11_1.py
213                 ${CMAKE_SOURCE_DIR}/specs/d3d11.py
214                 ${CMAKE_SOURCE_DIR}/specs/d3d11sdklayers.py
215                 ${CMAKE_SOURCE_DIR}/specs/d3d10_1.py
216                 ${CMAKE_SOURCE_DIR}/specs/d3d10.py
217                 ${CMAKE_SOURCE_DIR}/specs/d3d10misc.py
218                 ${CMAKE_SOURCE_DIR}/specs/d3d10sdklayers.py
219                 ${CMAKE_SOURCE_DIR}/specs/d3dcommon.py
220                 ${CMAKE_SOURCE_DIR}/specs/dxgi.py
221                 ${CMAKE_SOURCE_DIR}/specs/dxgitype.py
222                 ${CMAKE_SOURCE_DIR}/specs/dxgiformat.py
223                 ${CMAKE_SOURCE_DIR}/specs/winapi.py
224                 ${CMAKE_SOURCE_DIR}/specs/stdapi.py
225     )
226
227     add_executable (d3dretrace
228         d3dretrace_main.cpp
229         d3dretrace_d3d8.cpp
230         d3dretrace_d3d9.cpp
231         d3dretrace_dxgi.cpp
232         d3dretrace_ws.cpp
233         d3d9state.cpp
234         d3d9state_images.cpp
235         ${D3DSTATE_SOURCES}
236     )
237     target_link_libraries (d3dretrace
238         retrace_common
239         d3dhelpers
240     )
241
242     install (TARGETS d3dretrace RUNTIME DESTINATION bin)
243 endif ()