]> git.cworth.org Git - apitrace/blob - retrace/CMakeLists.txt
b271727458bb2d6db722c045eaee1eb193dbe4c5
[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         set (D3DSTATE_SOURCES ${D3DSTATE_SOURCES}
140             d3d8state.cpp
141             d3d8state_images.cpp
142         )
143     else ()
144         set (HAVE_D3D8 0)
145     endif ()
146     add_custom_command (
147         OUTPUT d3dretrace_d3d8.cpp
148         COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/d3d9retrace.py d3d8 ${HAVE_D3D8} > ${CMAKE_CURRENT_BINARY_DIR}/d3dretrace_d3d8.cpp
149         DEPENDS
150                 d3d9retrace.py
151                 dllretrace.py
152                 retrace.py
153                 ${CMAKE_SOURCE_DIR}/dispatch/dispatch.py
154                 ${CMAKE_SOURCE_DIR}/specs/d3d8.py
155                 ${CMAKE_SOURCE_DIR}/specs/d3d8types.py
156                 ${CMAKE_SOURCE_DIR}/specs/d3d8caps.py
157                 ${CMAKE_SOURCE_DIR}/specs/winapi.py
158                 ${CMAKE_SOURCE_DIR}/specs/stdapi.py
159     )
160
161     if (DirectX_D3D9_INCLUDE_DIR)
162         include_directories (BEFORE SYSTEM ${DirectX_D3D9_INCLUDE_DIR})
163         set (HAVE_D3D9 1)
164     else ()
165         set (HAVE_D3D9 0)
166     endif ()
167     add_custom_command (
168         OUTPUT d3dretrace_d3d9.cpp
169         COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/d3d9retrace.py d3d9 ${HAVE_D3D9} > ${CMAKE_CURRENT_BINARY_DIR}/d3dretrace_d3d9.cpp
170         DEPENDS
171                 d3d9retrace.py
172                 dllretrace.py
173                 retrace.py
174                 ${CMAKE_SOURCE_DIR}/dispatch/dispatch.py
175                 ${CMAKE_SOURCE_DIR}/specs/d3d9.py
176                 ${CMAKE_SOURCE_DIR}/specs/d3d9types.py
177                 ${CMAKE_SOURCE_DIR}/specs/d3d9caps.py
178                 ${CMAKE_SOURCE_DIR}/specs/winapi.py
179                 ${CMAKE_SOURCE_DIR}/specs/stdapi.py
180     )
181
182     if (DirectX_D3D10_INCLUDE_DIR)
183         include_directories (BEFORE SYSTEM ${DirectX_D3D10_INCLUDE_DIR})
184         set (DXGI_MODULES d3d10)
185         if (DirectX_D3D10_1_INCLUDE_DIR)
186             include_directories (BEFORE SYSTEM ${DirectX_D3D10_1_INCLUDE_DIR})
187             set (DXGI_MODULES ${DXGI_MODULES} d3d10_1)
188         endif ()
189         set (D3DSTATE_SOURCES ${D3DSTATE_SOURCES}
190             d3d10state.cpp
191             d3d10state_images.cpp
192         )
193     endif ()
194
195     if (DirectX_D3D11_INCLUDE_DIR)
196         include_directories (BEFORE SYSTEM ${DirectX_D3D11_INCLUDE_DIR})
197         set (DXGI_MODULES ${DXGI_MODULES} d3d11)
198         if (DirectX_D3D11_1_INCLUDE_DIR)
199             include_directories (BEFORE SYSTEM ${DirectX_D3D11_1_INCLUDE_DIR})
200             set (DXGI_MODULES ${DXGI_MODULES} d3d11_1)
201         endif ()
202         set (D3DSTATE_SOURCES ${D3DSTATE_SOURCES}
203             d3d11state.cpp
204             d3d11state_images.cpp
205         )
206     endif ()
207
208     add_custom_command (
209         OUTPUT d3dretrace_dxgi.cpp
210         COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/dxgiretrace.py ${DXGI_MODULES} > ${CMAKE_CURRENT_BINARY_DIR}/d3dretrace_dxgi.cpp
211         DEPENDS
212                 dxgiretrace.py
213                 dllretrace.py
214                 retrace.py
215                 ${CMAKE_SOURCE_DIR}/dispatch/dispatch.py
216                 ${CMAKE_SOURCE_DIR}/specs/d3d11_1.py
217                 ${CMAKE_SOURCE_DIR}/specs/d3d11.py
218                 ${CMAKE_SOURCE_DIR}/specs/d3d11sdklayers.py
219                 ${CMAKE_SOURCE_DIR}/specs/d3d10_1.py
220                 ${CMAKE_SOURCE_DIR}/specs/d3d10.py
221                 ${CMAKE_SOURCE_DIR}/specs/d3d10misc.py
222                 ${CMAKE_SOURCE_DIR}/specs/d3d10sdklayers.py
223                 ${CMAKE_SOURCE_DIR}/specs/d3dcommon.py
224                 ${CMAKE_SOURCE_DIR}/specs/dxgi.py
225                 ${CMAKE_SOURCE_DIR}/specs/dxgitype.py
226                 ${CMAKE_SOURCE_DIR}/specs/dxgiformat.py
227                 ${CMAKE_SOURCE_DIR}/specs/winapi.py
228                 ${CMAKE_SOURCE_DIR}/specs/stdapi.py
229     )
230
231     add_executable (d3dretrace
232         d3dretrace_main.cpp
233         d3dretrace_d3d8.cpp
234         d3dretrace_d3d9.cpp
235         d3dretrace_dxgi.cpp
236         d3dretrace_ws.cpp
237         d3d9state.cpp
238         d3d9state_images.cpp
239         ${D3DSTATE_SOURCES}
240     )
241     target_link_libraries (d3dretrace
242         retrace_common
243         d3dhelpers
244     )
245
246     install (TARGETS d3dretrace RUNTIME DESTINATION bin)
247 endif ()