blob: 820a799945fda8c2e83d8504c9137abae6911c35 [file] [log] [blame]
##############################################################################
# API retracers
include_directories (
${CMAKE_CURRENT_SOURCE_DIR}
${CMAKE_SOURCE_DIR}/lib/highlight
${CMAKE_SOURCE_DIR}/helpers
${CMAKE_BINARY_DIR}/dispatch
${CMAKE_SOURCE_DIR}/dispatch
${CMAKE_SOURCE_DIR}/lib/image
${CMAKE_SOURCE_DIR}/lib/ubjson
${CMAKE_SOURCE_DIR}/thirdparty/dxerr
${CMAKE_SOURCE_DIR}/thirdparty/mhook/mhook-lib
)
add_definitions (-DRETRACE)
add_custom_command (
OUTPUT glretrace_gl.cpp
COMMAND ${Python3_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/glretrace.py > ${CMAKE_CURRENT_BINARY_DIR}/glretrace_gl.cpp
DEPENDS
glretrace.py
retrace.py
${CMAKE_SOURCE_DIR}/specs/glapi.py
${CMAKE_SOURCE_DIR}/specs/gltypes.py
${CMAKE_SOURCE_DIR}/specs/stdapi.py
)
add_custom_command (
OUTPUT glstate_params.cpp
COMMAND ${Python3_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/glstate_params.py > ${CMAKE_CURRENT_BINARY_DIR}/glstate_params.cpp
DEPENDS
glstate_params.py
${CMAKE_SOURCE_DIR}/specs/glparams.py
${CMAKE_SOURCE_DIR}/specs/gltypes.py
${CMAKE_SOURCE_DIR}/specs/stdapi.py
)
if (WIN32)
set (ws_os ws_win32.cpp)
endif ()
add_library (retrace_common STATIC
json.cpp
process_name.hpp
process_name.cpp
retrace.cpp
retrace_main.cpp
retrace_stdc.cpp
retrace_swizzle.cpp
state_writer.cpp
state_writer_json.cpp
state_writer_ubjson.cpp
ws.cpp
${ws_os}
)
target_link_libraries (retrace_common
image
common
${ZLIB_LIBRARIES}
${SNAPPY_LIBRARIES}
${GETOPT_LIBRARIES}
)
if (CMAKE_SYSTEM_NAME STREQUAL "Linux")
target_link_libraries (retrace_common rt)
endif ()
if (WIN32)
target_link_libraries (retrace_common dxerr mhook winmm psapi)
endif ()
add_library (glretrace_common STATIC
glretrace.hpp
glretrace_gl.cpp
glretrace_cgl.cpp
glretrace_glx.cpp
glretrace_wgl.cpp
glretrace_wgl_font_bitmaps.cpp
glretrace_wgl_font_outlines.cpp
glretrace_egl.cpp
glretrace_main.cpp
glretrace_ws.cpp
glstate.cpp
glstate_formats.cpp
glstate_images.cpp
glstate_params.cpp
glstate_shaders.cpp
glws.cpp
metric_helper.cpp
metric_writer.cpp
metric_backend_amd_perfmon.cpp
metric_backend_intel_perfquery.cpp
metric_backend_opengl.cpp
)
add_dependencies (glretrace_common glproc)
target_link_libraries (glretrace_common
retrace_common
)
if (PROCPS_FOUND)
target_link_libraries (glretrace_common ${PROCPS_LIBRARY})
endif ()
if (WIN32)
set (glws_os glws_wgl.cpp)
else ()
if (APPLE)
set (glws_os glws_cocoa.mm)
else ()
set (glws_os glws_xlib.cpp glws_glx.cpp)
endif ()
endif ()
if (WIN32 OR APPLE OR X11_FOUND)
add_executable (glretrace
${glws_os}
)
add_dependencies (glretrace glproc)
target_link_libraries (glretrace
retrace_common
glretrace_common
glhelpers
glproc_gl
)
if (WIN32)
else ()
if (APPLE)
target_link_libraries (glretrace
"-framework Cocoa"
"-framework ApplicationServices" # CGS*
#"-framework OpenGL" # CGL*
)
# Bundle Info.plist. Set sdk version to 10.13.0 to avoid blank screen on Mojave
set_target_properties (glretrace PROPERTIES
LINK_FLAGS "-sectcreate __TEXT __info_plist ${CMAKE_CURRENT_SOURCE_DIR}/Info.plist -Wl,-sdk_version,10.13.0"
LINK_DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/Info.plist"
)
else ()
target_link_libraries (glretrace ${X11_X11_LIB})
endif ()
target_link_libraries (glretrace
# gdb doesn't like when pthreads is loaded through dlopen (which happens
# when dlopen'ing libGL), so link pthreads to avoid this issue. See also
# http://stackoverflow.com/questions/2702628/gdb-cannot-find-new-threads-generic-error
${CMAKE_THREAD_LIBS_INIT}
${CMAKE_DL_LIBS}
)
endif ()
install (TARGETS glretrace RUNTIME DESTINATION bin)
install_pdb (glretrace DESTINATION bin)
endif ()
if (ENABLE_EGL AND X11_FOUND AND NOT WIN32 AND NOT APPLE AND NOT ENABLE_WAFFLE)
add_executable (eglretrace
glws_xlib.cpp
glws_egl_xlib.cpp
)
add_dependencies (eglretrace glproc)
target_link_libraries (eglretrace
retrace_common
glretrace_common
glhelpers
glproc_egl
${X11_X11_LIB}
${CMAKE_THREAD_LIBS_INIT}
${CMAKE_DL_LIBS}
)
install (TARGETS eglretrace RUNTIME DESTINATION bin)
endif ()
if (ENABLE_EGL AND ENABLE_WAFFLE)
add_executable (eglretrace
glws_waffle.cpp
)
add_dependencies (eglretrace glproc)
include_directories (${Waffle_INCLUDE_DIRS})
target_link_libraries (eglretrace
retrace_common
glretrace_common
glhelpers
glproc_egl
${Waffle_LIBRARIES}
${X11_X11_LIB}
${CMAKE_THREAD_LIBS_INIT}
${CMAKE_DL_LIBS}
)
install (TARGETS eglretrace RUNTIME DESTINATION bin)
endif ()
if (WIN32)
if (DirectX_D3D_INCLUDE_FOUND)
include_directories (BEFORE SYSTEM ${DirectX_D3D_INCLUDE_DIR})
add_custom_command (
OUTPUT d3dretrace_ddraw.cpp
COMMAND ${Python3_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/ddrawretrace.py > ${CMAKE_CURRENT_BINARY_DIR}/d3dretrace_ddraw.cpp
DEPENDS
ddrawretrace.py
dllretrace.py
retrace.py
${CMAKE_SOURCE_DIR}/dispatch/dispatch.py
${CMAKE_SOURCE_DIR}/specs/ddraw.py
${CMAKE_SOURCE_DIR}/specs/d3d.py
${CMAKE_SOURCE_DIR}/specs/d3dtypes.py
${CMAKE_SOURCE_DIR}/specs/d3dcaps.py
${CMAKE_SOURCE_DIR}/specs/winapi.py
${CMAKE_SOURCE_DIR}/specs/stdapi.py
)
set (D3DSTATE_SOURCES ${D3DSTATE_SOURCES}
d3d7state.cpp
d3d7state_images.cpp
)
else ()
message (FATAL_ERROR "d3d.h is required.")
endif ()
if (DirectX_D3D8_INCLUDE_FOUND)
include_directories (BEFORE SYSTEM ${DirectX_D3D8_INCLUDE_DIR})
set (HAVE_D3D8 1)
set (D3DSTATE_SOURCES ${D3DSTATE_SOURCES}
d3d8state.cpp
d3d8state_images.cpp
)
else ()
set (HAVE_D3D8 0)
endif ()
add_custom_command (
OUTPUT d3dretrace_d3d8.cpp
COMMAND ${Python3_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/d3d9retrace.py d3d8 ${HAVE_D3D8} > ${CMAKE_CURRENT_BINARY_DIR}/d3dretrace_d3d8.cpp
DEPENDS
d3d9retrace.py
dllretrace.py
retrace.py
${CMAKE_SOURCE_DIR}/dispatch/dispatch.py
${CMAKE_SOURCE_DIR}/specs/d3d8.py
${CMAKE_SOURCE_DIR}/specs/d3d8types.py
${CMAKE_SOURCE_DIR}/specs/d3d8caps.py
${CMAKE_SOURCE_DIR}/specs/winapi.py
${CMAKE_SOURCE_DIR}/specs/stdapi.py
)
if (DirectX_D3D9_INCLUDE_FOUND)
include_directories (BEFORE SYSTEM ${DirectX_D3D9_INCLUDE_DIR})
set (HAVE_D3D9 1)
else ()
set (HAVE_D3D9 0)
endif ()
add_custom_command (
OUTPUT d3dretrace_d3d9.cpp
COMMAND ${Python3_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/d3d9retrace.py d3d9 ${HAVE_D3D9} > ${CMAKE_CURRENT_BINARY_DIR}/d3dretrace_d3d9.cpp
DEPENDS
d3d9retrace.py
dllretrace.py
retrace.py
${CMAKE_SOURCE_DIR}/dispatch/dispatch.py
${CMAKE_SOURCE_DIR}/specs/d3d9.py
${CMAKE_SOURCE_DIR}/specs/d3d9types.py
${CMAKE_SOURCE_DIR}/specs/d3d9caps.py
${CMAKE_SOURCE_DIR}/specs/dxva2.py
${CMAKE_SOURCE_DIR}/specs/winapi.py
${CMAKE_SOURCE_DIR}/specs/stdapi.py
)
if (DirectX_D3D11_4_INCLUDE_FOUND)
add_definitions (-DHAVE_DXGI)
include_directories (BEFORE SYSTEM
${DirectX_D3D11_4_INCLUDE_DIR}
${CMAKE_SOURCE_DIR}/thirdparty/directxtex/DirectXTex
)
set (D3DSTATE_SOURCES ${D3DSTATE_SOURCES}
dxgistate.cpp
dxgistate_so.cpp
d3d10state.cpp
d3d10state_images.cpp
d3d11state.cpp
d3d11state_images.cpp
d3dretrace_dxgi.cpp
d3dretrace_dxgi_misc.cpp
)
add_custom_command (
OUTPUT dxgistate_so.cpp
COMMAND ${Python3_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/dxgistate_so.py > ${CMAKE_CURRENT_BINARY_DIR}/dxgistate_so.cpp
DEPENDS
${CMAKE_CURRENT_SOURCE_DIR}/dxgistate_so.py
${CMAKE_SOURCE_DIR}/specs/d3d11.py
${CMAKE_SOURCE_DIR}/specs/dcomp.py
${CMAKE_SOURCE_DIR}/specs/d3d11sdklayers.py
${CMAKE_SOURCE_DIR}/specs/d3d10.py
${CMAKE_SOURCE_DIR}/specs/d3d10sdklayers.py
${CMAKE_SOURCE_DIR}/specs/dxgi.py
${CMAKE_SOURCE_DIR}/specs/winapi.py
${CMAKE_SOURCE_DIR}/specs/stdapi.py
)
add_custom_command (
OUTPUT d3dretrace_dxgi.cpp
COMMAND ${Python3_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/dxgiretrace.py > ${CMAKE_CURRENT_BINARY_DIR}/d3dretrace_dxgi.cpp
DEPENDS
dxgiretrace.py
dllretrace.py
retrace.py
${CMAKE_SOURCE_DIR}/dispatch/dispatch.py
${CMAKE_SOURCE_DIR}/specs/d3d11.py
${CMAKE_SOURCE_DIR}/specs/dcomp.py
${CMAKE_SOURCE_DIR}/specs/d3d11sdklayers.py
${CMAKE_SOURCE_DIR}/specs/d3d10.py
${CMAKE_SOURCE_DIR}/specs/d3d10sdklayers.py
${CMAKE_SOURCE_DIR}/specs/dxgi.py
${CMAKE_SOURCE_DIR}/specs/winapi.py
${CMAKE_SOURCE_DIR}/specs/stdapi.py
)
endif ()
add_executable (d3dretrace
d3dretrace_main.cpp
d3dretrace_ddraw.cpp
d3dretrace_d3d8.cpp
d3dretrace_d3d9.cpp
d3dretrace_dxgi_priv.cpp
d3dretrace_ws.cpp
d3d9state.cpp
d3d9state_formats.cpp
d3d9state_images.cpp
${D3DSTATE_SOURCES}
)
target_link_libraries (d3dretrace
retrace_common
d3dhelpers
)
if (DirectX_D3D11_4_INCLUDE_FOUND)
target_link_libraries (d3dretrace directxtex)
endif ()
install (TARGETS d3dretrace RUNTIME DESTINATION bin)
install_pdb (d3dretrace DESTINATION bin)
endif ()