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