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