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