]> git.cworth.org Git - apitrace/blob - retrace/CMakeLists.txt
Share more code between glretrace and d3dretrace.
[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 )
39
40 target_link_libraries (retrace_common
41     common
42     ${PNG_LIBRARIES}
43     ${ZLIB_LIBRARIES}
44     ${SNAPPY_LIBRARIES}
45 )
46
47 add_library (glretrace_common
48     glretrace_gl.cpp
49     glretrace_cgl.cpp
50     glretrace_glx.cpp
51     glretrace_wgl.cpp
52     glretrace_egl.cpp
53     glretrace_main.cpp
54     glstate.cpp
55     glstate_images.cpp
56     glstate_params.cpp
57     glstate_shaders.cpp
58     glws.cpp
59 )
60
61 add_dependencies (glretrace_common glproc)
62
63
64 if (WIN32 OR APPLE OR X11_FOUND)
65     add_executable (glretrace
66         ${glws_os}
67     )
68
69     add_dependencies (glretrace glproc)
70
71     target_link_libraries (glretrace
72         retrace_common
73         glretrace_common
74         glproc_gl
75     )
76
77     if (WIN32)
78     else ()
79         if (APPLE)
80             target_link_libraries (glretrace
81                 "-framework Cocoa"
82                 "-framework ApplicationServices" # CGS*
83                 #"-framework OpenGL" # CGL*
84             )
85         else ()
86             target_link_libraries (glretrace ${X11_X11_LIB})
87         endif ()
88
89         target_link_libraries (glretrace
90             # gdb doesn't like when pthreads is loaded through dlopen (which happens
91             # when dlopen'ing libGL), so link pthreads to avoid this issue.  See also
92             # http://stackoverflow.com/questions/2702628/gdb-cannot-find-new-threads-generic-error
93             ${CMAKE_THREAD_LIBS_INIT}
94             dl
95         )
96
97         if (${CMAKE_SYSTEM_NAME} MATCHES "Linux")
98             target_link_libraries (glretrace rt)
99         endif ()
100
101     endif ()
102
103     install (TARGETS glretrace RUNTIME DESTINATION bin) 
104 endif ()
105
106 if (ENABLE_EGL AND X11_FOUND AND NOT WIN32 AND NOT APPLE)
107     add_executable (eglretrace
108         glws_egl_xlib.cpp
109     )
110
111     add_dependencies (eglretrace glproc)
112
113     target_link_libraries (eglretrace
114         retrace_common
115         glretrace_common
116         glproc_egl
117         ${X11_X11_LIB}
118         ${CMAKE_THREAD_LIBS_INIT}
119         dl
120     )
121
122     if (${CMAKE_SYSTEM_NAME} MATCHES "Linux")
123         target_link_libraries (eglretrace rt)
124     endif ()
125
126     install (TARGETS eglretrace RUNTIME DESTINATION bin) 
127 endif ()
128
129 if (WIN32 AND DirectX_D3DX9_INCLUDE_DIR)
130     add_custom_command (
131         OUTPUT d3dretrace_d3d9.cpp
132         COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/d3dretrace.py > ${CMAKE_CURRENT_BINARY_DIR}/d3dretrace_d3d9.cpp
133         DEPENDS
134                 d3dretrace.py
135                 dllretrace.py
136                 retrace.py
137                 ${CMAKE_SOURCE_DIR}/dispatch/dispatch.py
138                 ${CMAKE_SOURCE_DIR}/specs/d3d9.py
139                 ${CMAKE_SOURCE_DIR}/specs/d3d9types.py
140                 ${CMAKE_SOURCE_DIR}/specs/d3d9caps.py
141                 ${CMAKE_SOURCE_DIR}/specs/winapi.py
142                 ${CMAKE_SOURCE_DIR}/specs/stdapi.py
143     )
144
145     include_directories (SYSTEM ${DirectX_D3DX9_INCLUDE_DIR})
146     add_executable (d3dretrace
147         retrace.cpp
148         retrace_stdc.cpp
149         d3dretrace_main.cpp
150         d3dretrace_d3d9.cpp
151     )
152     target_link_libraries (d3dretrace
153         retrace_common
154     )
155     
156     install (TARGETS d3dretrace RUNTIME DESTINATION bin) 
157 endif ()
158