From 452d3256a3ba7f249222ef857d69c8caaaa753f3 Mon Sep 17 00:00:00 2001
From: =?utf8?q?Jos=C3=A9=20Fonseca?= <jose.r.fonseca@gmail.com>
Date: Sat, 14 Apr 2012 15:55:40 +0100
Subject: [PATCH] Move tracers to wrappers subdirectory.

---
 .gitignore                                  |   8 -
 CMakeLists.txt                              | 272 +--------------
 wrappers/.gitignore                         |  13 +
 wrappers/CMakeLists.txt                     | 348 ++++++++++++++++++++
 cgltrace.py => wrappers/cgltrace.py         |   2 +-
 {specs => wrappers}/d3d10.def               |   0
 {specs => wrappers}/d3d10_1.def             |   0
 d3d10_1trace.py => wrappers/d3d10_1trace.py |   2 +-
 d3d10trace.py => wrappers/d3d10trace.py     |   2 +-
 {specs => wrappers}/d3d11.def               |   0
 d3d11trace.py => wrappers/d3d11trace.py     |   2 +-
 {specs => wrappers}/d3d8.def                |   0
 d3d8trace.py => wrappers/d3d8trace.py       |   2 +-
 {specs => wrappers}/d3d9.def                |   0
 d3d9trace.py => wrappers/d3d9trace.py       |   0
 d3dshader.cpp => wrappers/d3dshader.cpp     |   0
 d3dshader.hpp => wrappers/d3dshader.hpp     |   0
 {specs => wrappers}/ddraw.def               |   0
 ddrawtrace.py => wrappers/ddrawtrace.py     |   2 +-
 dlltrace.py => wrappers/dlltrace.py         |   2 +-
 egltrace.py => wrappers/egltrace.py         |   4 +-
 glcaps.cpp => wrappers/glcaps.cpp           |   0
 gltrace.hpp => wrappers/gltrace.hpp         |   0
 gltrace.py => wrappers/gltrace.py           |   2 +-
 glxtrace.py => wrappers/glxtrace.py         |   4 +-
 {specs => wrappers}/opengl32.def            |   0
 trace.py => wrappers/trace.py               |   6 +
 wgltrace.py => wrappers/wgltrace.py         |   6 +-
 28 files changed, 383 insertions(+), 294 deletions(-)
 mode change 100755 => 100644 CMakeLists.txt
 create mode 100644 wrappers/.gitignore
 create mode 100644 wrappers/CMakeLists.txt
 rename cgltrace.py => wrappers/cgltrace.py (100%)
 rename {specs => wrappers}/d3d10.def (100%)
 rename {specs => wrappers}/d3d10_1.def (100%)
 rename d3d10_1trace.py => wrappers/d3d10_1trace.py (100%)
 rename d3d10trace.py => wrappers/d3d10trace.py (100%)
 rename {specs => wrappers}/d3d11.def (100%)
 rename d3d11trace.py => wrappers/d3d11trace.py (100%)
 rename {specs => wrappers}/d3d8.def (100%)
 rename d3d8trace.py => wrappers/d3d8trace.py (100%)
 rename {specs => wrappers}/d3d9.def (100%)
 rename d3d9trace.py => wrappers/d3d9trace.py (100%)
 rename d3dshader.cpp => wrappers/d3dshader.cpp (100%)
 rename d3dshader.hpp => wrappers/d3dshader.hpp (100%)
 rename {specs => wrappers}/ddraw.def (100%)
 rename ddrawtrace.py => wrappers/ddrawtrace.py (100%)
 rename dlltrace.py => wrappers/dlltrace.py (100%)
 rename egltrace.py => wrappers/egltrace.py (100%)
 rename glcaps.cpp => wrappers/glcaps.cpp (100%)
 rename gltrace.hpp => wrappers/gltrace.hpp (100%)
 rename gltrace.py => wrappers/gltrace.py (100%)
 rename glxtrace.py => wrappers/glxtrace.py (100%)
 rename {specs => wrappers}/opengl32.def (100%)
 rename trace.py => wrappers/trace.py (99%)
 rename wgltrace.py => wrappers/wgltrace.py (100%)

diff --git a/.gitignore b/.gitignore
index e16a1f7..25f71f6 100644
--- a/.gitignore
+++ b/.gitignore
@@ -30,20 +30,12 @@ CMakeFiles
 Makefile
 apitrace
 build
-cgltrace.cpp
-d3d10trace.cpp
-d3d8trace.cpp
-d3d9trace.cpp
-ddrawtrace.cpp
 dxsdk
-egltrace.cpp
 eglretrace
 glproc.hpp
 glretrace
 glretrace_gl.cpp
 glstate_params.cpp
-glxtrace.cpp
 install_manifest.txt
 qapitrace
 traces
-wgltrace.cpp
diff --git a/CMakeLists.txt b/CMakeLists.txt
old mode 100755
new mode 100644
index 7c42200..855d73f
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -298,278 +298,8 @@ endif ()
 ##############################################################################
 # API tracers
 
-if (WIN32)
-    if (MINGW)
-        # Silence warnings about @nn suffix mismatch
-        set (CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -Wl,--enable-stdcall-fixup")
-    endif ()
-
-    # ddraw.dll
-    if (DirectX_D3D_INCLUDE_DIR)
-        include_directories (SYSTEM ${DirectX_D3D_INCLUDE_DIR})
-        add_custom_command (
-            OUTPUT ddrawtrace.cpp
-            COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/ddrawtrace.py > ${CMAKE_CURRENT_BINARY_DIR}/ddrawtrace.cpp
-            DEPENDS ddrawtrace.py trace.py specs/d3d.py specs/d3dtypes.py specs/d3dcaps.py specs/ddraw.py specs/winapi.py specs/stdapi.py
-        )
-        add_library (ddraw MODULE specs/ddraw.def ddrawtrace.cpp)
-        target_link_libraries (ddraw
-            common
-            ${ZLIB_LIBRARIES}
-            ${SNAPPY_LIBRARIES}
-        )
-        set_target_properties (ddraw
-            PROPERTIES PREFIX ""
-            RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/wrappers
-            LIBRARY_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/wrappers
-        )
-        install (TARGETS ddraw LIBRARY DESTINATION ${WRAPPER_INSTALL_DIR})
-    endif ()
-
-    # d3d8.dll
-    if (DirectX_D3D8_INCLUDE_DIR AND DirectX_D3DX9_INCLUDE_DIR)
-        include_directories (SYSTEM ${DirectX_D3D8_INCLUDE_DIR} ${DirectX_D3DX9_INCLUDE_DIR})
-        add_custom_command (
-            OUTPUT d3d8trace.cpp
-            COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/d3d8trace.py > ${CMAKE_CURRENT_BINARY_DIR}/d3d8trace.cpp
-            DEPENDS d3d8trace.py trace.py specs/d3d8.py specs/d3d8types.py specs/d3d8caps.py specs/winapi.py specs/stdapi.py
-        )
-        add_library (d3d8 MODULE specs/d3d8.def d3d8trace.cpp d3dshader.cpp)
-        target_link_libraries (d3d8
-            common
-            ${ZLIB_LIBRARIES}
-            ${SNAPPY_LIBRARIES}
-        )
-        set_target_properties (d3d8
-            PROPERTIES PREFIX ""
-            RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/wrappers
-            LIBRARY_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/wrappers
-        )
-        install (TARGETS d3d8 LIBRARY DESTINATION ${WRAPPER_INSTALL_DIR})
-    endif ()
-
-    # d3d9.dll
-    if (DirectX_D3DX9_INCLUDE_DIR)
-        include_directories (SYSTEM ${DirectX_D3DX9_INCLUDE_DIR})
-        add_custom_command (
-            OUTPUT d3d9trace.cpp
-            COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/d3d9trace.py > ${CMAKE_CURRENT_BINARY_DIR}/d3d9trace.cpp
-            DEPENDS d3d9trace.py trace.py specs/d3d9.py specs/d3d9types.py specs/d3d9caps.py specs/winapi.py specs/stdapi.py
-        )
-        add_library (d3d9 MODULE specs/d3d9.def d3d9trace.cpp d3dshader.cpp)
-        target_link_libraries (d3d9
-            common
-            ${ZLIB_LIBRARIES}
-            ${SNAPPY_LIBRARIES}
-        )
-        set_target_properties (d3d9
-            PROPERTIES PREFIX ""
-            RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/wrappers
-            LIBRARY_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/wrappers
-        )
-        install (TARGETS d3d9 LIBRARY DESTINATION ${WRAPPER_INSTALL_DIR})
-    endif ()
-
-    # d3d10.dll
-    if (DirectX_D3DX10_INCLUDE_DIR)
-        include_directories (SYSTEM ${DirectX_D3DX10_INCLUDE_DIR})
-        add_custom_command (
-            OUTPUT d3d10trace.cpp
-            COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/d3d10trace.py > ${CMAKE_CURRENT_BINARY_DIR}/d3d10trace.cpp
-            DEPENDS d3d10trace.py trace.py specs/d3d10misc.py specs/d3d10.py specs/d3d10sdklayers.py specs/d3dcommon.py specs/dxgi.py specs/dxgitype.py specs/dxgiformat.py specs/winapi.py specs/stdapi.py
-        )
-        add_library (d3d10 MODULE specs/d3d10.def d3d10trace.cpp)
-        target_link_libraries (d3d10
-            common
-            ${ZLIB_LIBRARIES}
-            ${SNAPPY_LIBRARIES}
-        )
-        set_target_properties (d3d10
-            PROPERTIES PREFIX ""
-            RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/wrappers
-            LIBRARY_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/wrappers
-        )
-        install (TARGETS d3d10 LIBRARY DESTINATION ${WRAPPER_INSTALL_DIR})
-    endif ()
-
-    # d3d10_1.dll
-    if (DirectX_D3DX10_INCLUDE_DIR AND DirectX_D3D10_1_INCLUDE_DIR)
-        include_directories (SYSTEM ${DirectX_D3D10_1_INCLUDE_DIR})
-        add_custom_command (
-            OUTPUT d3d10_1trace.cpp
-            COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/d3d10_1trace.py > ${CMAKE_CURRENT_BINARY_DIR}/d3d10_1trace.cpp
-            DEPENDS d3d10_1trace.py trace.py specs/d3d10_1.py specs/d3d10.py specs/d3d10sdklayers.py specs/d3dcommon.py specs/dxgi.py specs/dxgitype.py specs/dxgiformat.py specs/winapi.py specs/stdapi.py
-        )
-        add_library (d3d10_1 MODULE specs/d3d10_1.def d3d10_1trace.cpp)
-        target_link_libraries (d3d10_1
-            common
-            ${ZLIB_LIBRARIES}
-            ${SNAPPY_LIBRARIES}
-        )
-        set_target_properties (d3d10_1
-            PROPERTIES PREFIX ""
-            RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/wrappers
-            LIBRARY_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/wrappers
-        )
-        install (TARGETS d3d10_1 LIBRARY DESTINATION ${WRAPPER_INSTALL_DIR})
-    endif ()
-
-    # d3d11.dll
-    if (DirectX_D3DX11_INCLUDE_DIR)
-        include_directories (SYSTEM ${DirectX_D3DX11_INCLUDE_DIR})
-        add_custom_command (
-            OUTPUT d3d11trace.cpp
-            COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/d3d11trace.py > ${CMAKE_CURRENT_BINARY_DIR}/d3d11trace.cpp
-            DEPENDS d3d11trace.py trace.py specs/d3d11.py specs/d3d11sdklayers.py specs/d3dcommon.py specs/dxgi.py specs/dxgitype.py specs/dxgiformat.py specs/winapi.py specs/stdapi.py
-        )
-        add_library (d3d11 MODULE specs/d3d11.def d3d11trace.cpp)
-        target_link_libraries (d3d11
-            common
-            ${ZLIB_LIBRARIES}
-            ${SNAPPY_LIBRARIES}
-        )
-        set_target_properties (d3d11
-            PROPERTIES PREFIX ""
-            RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/wrappers
-            LIBRARY_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/wrappers
-        )
-        install (TARGETS d3d11 LIBRARY DESTINATION ${WRAPPER_INSTALL_DIR})
-    endif ()
-
-    # opengl32.dll
-    add_custom_command (
-        OUTPUT wgltrace.cpp
-        COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/wgltrace.py > ${CMAKE_CURRENT_BINARY_DIR}/wgltrace.cpp
-        DEPENDS wgltrace.py gltrace.py trace.py specs/wglapi.py specs/wglenum.py specs/glapi.py specs/glparams.py specs/gltypes.py specs/winapi.py specs/stdapi.py
-    )
-    add_library (wgltrace MODULE specs/opengl32.def
-        wgltrace.cpp
-        glcaps.cpp
-        glproc_gl.cpp
-    )
-    add_dependencies (wgltrace glproc)
-    target_link_libraries (wgltrace
-        common
-        ${ZLIB_LIBRARIES}
-        ${SNAPPY_LIBRARIES}
-    )
-    set_target_properties (wgltrace PROPERTIES
-        PREFIX ""
-        OUTPUT_NAME opengl32
-        RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/wrappers
-        LIBRARY_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/wrappers
-    )
-    install (TARGETS wgltrace LIBRARY DESTINATION ${WRAPPER_INSTALL_DIR})
-
-elseif (APPLE)
-    # OpenGL framework
-    add_custom_command (
-        OUTPUT cgltrace.cpp
-        COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/cgltrace.py > ${CMAKE_CURRENT_BINARY_DIR}/cgltrace.cpp
-        DEPENDS cgltrace.py gltrace.py trace.py specs/cglapi.py specs/glapi.py specs/glparams.py specs/gltypes.py specs/stdapi.py
-    )
-
-    add_library (cgltrace SHARED
-        cgltrace.cpp
-        glcaps.cpp
-        glproc_gl.cpp
-    )
-
-    add_dependencies (cgltrace glproc)
-
-    set_target_properties (cgltrace PROPERTIES
-        # OpenGL framework name
-        PREFIX "" OUTPUT_NAME "OpenGL" SUFFIX ""
-        # Specificy the version and reexport GLU symbols
-        LINK_FLAGS "-compatibility_version 1 -current_version 1.0.0 -Wl,-reexport_library,/System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGLU.dylib"
-        RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/wrappers
-        LIBRARY_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/wrappers
-    )
-
-    target_link_libraries (cgltrace
-        common
-        ${ZLIB_LIBRARIES}
-        ${SNAPPY_LIBRARIES}
-        ${CMAKE_THREAD_LIBS_INIT}
-        dl
-    )
-
-    install (TARGETS cgltrace LIBRARY DESTINATION ${WRAPPER_INSTALL_DIR})
-elseif (X11_FOUND)
-    # libGL.so
-    add_custom_command (
-        OUTPUT glxtrace.cpp
-        COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/glxtrace.py > ${CMAKE_CURRENT_BINARY_DIR}/glxtrace.cpp
-        DEPENDS glxtrace.py gltrace.py trace.py specs/glxapi.py specs/glapi.py specs/glparams.py specs/gltypes.py specs/stdapi.py
-    )
-
-    add_library (glxtrace SHARED
-        glxtrace.cpp
-        glcaps.cpp
-        glproc_gl.cpp
-    )
-
-    add_dependencies (glxtrace glproc)
-
-    set_target_properties (glxtrace PROPERTIES
-        # avoid the default "lib" prefix
-        PREFIX ""
-        # Prevent symbol relocations internal to our wrapper library to be
-        # overwritten by the application.
-        LINK_FLAGS "-Wl,-Bsymbolic -Wl,-Bsymbolic-functions"
-        RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/wrappers
-        LIBRARY_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/wrappers
-    )
-
-    target_link_libraries (glxtrace
-        common
-        ${ZLIB_LIBRARIES}
-        ${SNAPPY_LIBRARIES}
-        ${X11_X11_LIB}
-        ${CMAKE_THREAD_LIBS_INIT}
-        dl
-    )
-
-    install (TARGETS glxtrace LIBRARY DESTINATION ${WRAPPER_INSTALL_DIR})
-endif ()
-
-
-if (ENABLE_EGL AND NOT WIN32 AND NOT APPLE)
-    # libEGL.so/libGL.so
-    add_custom_command (
-        OUTPUT egltrace.cpp
-        COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/egltrace.py > ${CMAKE_CURRENT_BINARY_DIR}/egltrace.cpp
-        DEPENDS egltrace.py gltrace.py trace.py specs/eglapi.py specs/glesapi.py specs/glapi.py specs/glparams.py specs/gltypes.py specs/stdapi.py
-    )
-
-    add_library (egltrace SHARED
-        egltrace.cpp
-        glcaps.cpp
-        glproc_egl.cpp
-    )
-
-    add_dependencies (egltrace glproc)
-
-    set_target_properties (egltrace PROPERTIES
-        # avoid the default "lib" prefix
-        PREFIX ""
-        LINK_FLAGS "-Wl,-Bsymbolic -Wl,-Bsymbolic-functions"
-        # Prevent symbol relocations internal to our wrapper library to be
-        # overwritten by the application.
-        RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/wrappers
-        LIBRARY_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/wrappers
-    )
-
-    target_link_libraries (egltrace
-        common
-        ${ZLIB_LIBRARIES}
-        ${SNAPPY_LIBRARIES}
-        ${CMAKE_THREAD_LIBS_INIT}
-        dl
-    )
+add_subdirectory (wrappers)
 
-    install (TARGETS egltrace LIBRARY DESTINATION ${WRAPPER_INSTALL_DIR})
-endif ()
 
 ##############################################################################
 # API retracers
diff --git a/wrappers/.gitignore b/wrappers/.gitignore
new file mode 100644
index 0000000..8ba6fb8
--- /dev/null
+++ b/wrappers/.gitignore
@@ -0,0 +1,13 @@
+cgltrace.cpp
+d3d10_1trace.cpp
+d3d10trace.cpp
+d3d11trace.cpp
+d3d8trace.cpp
+d3d9trace.cpp
+ddrawtrace.cpp
+dlltrace.cpp
+egltrace.cpp
+gltrace.cpp
+glxtrace.cpp
+trace.cpp
+wgltrace.cpp
diff --git a/wrappers/CMakeLists.txt b/wrappers/CMakeLists.txt
new file mode 100644
index 0000000..d47dc6d
--- /dev/null
+++ b/wrappers/CMakeLists.txt
@@ -0,0 +1,348 @@
+##############################################################################
+# API tracers
+
+
+include_directories (${CMAKE_CURRENT_SOURCE_DIR})
+
+
+if (WIN32)
+    if (MINGW)
+        # Silence warnings about @nn suffix mismatch
+        set (CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -Wl,--enable-stdcall-fixup")
+    endif ()
+
+    # ddraw.dll
+    if (DirectX_D3D_INCLUDE_DIR)
+        include_directories (SYSTEM ${DirectX_D3D_INCLUDE_DIR})
+        add_custom_command (
+            OUTPUT ddrawtrace.cpp
+            COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/ddrawtrace.py > ${CMAKE_CURRENT_BINARY_DIR}/ddrawtrace.cpp
+            DEPENDS
+                ddrawtrace.py
+                trace.py
+                ${CMAKE_SOURCE_DIR}/specs/d3d.py
+                ${CMAKE_SOURCE_DIR}/specs/d3dtypes.py
+                ${CMAKE_SOURCE_DIR}/specs/d3dcaps.py
+                ${CMAKE_SOURCE_DIR}/specs/ddraw.py
+                ${CMAKE_SOURCE_DIR}/specs/winapi.py
+                ${CMAKE_SOURCE_DIR}/specs/stdapi.py
+        )
+        add_library (ddraw MODULE ddraw.def ddrawtrace.cpp)
+        target_link_libraries (ddraw
+            common
+            ${ZLIB_LIBRARIES}
+            ${SNAPPY_LIBRARIES}
+        )
+        set_target_properties (ddraw
+            PROPERTIES PREFIX ""
+        )
+        install (TARGETS ddraw LIBRARY DESTINATION ${WRAPPER_INSTALL_DIR})
+    endif ()
+
+    # d3d8.dll
+    if (DirectX_D3D8_INCLUDE_DIR AND DirectX_D3DX9_INCLUDE_DIR)
+        include_directories (SYSTEM ${DirectX_D3D8_INCLUDE_DIR} ${DirectX_D3DX9_INCLUDE_DIR})
+        add_custom_command (
+            OUTPUT d3d8trace.cpp
+            COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/d3d8trace.py > ${CMAKE_CURRENT_BINARY_DIR}/d3d8trace.cpp
+            DEPENDS
+                d3d8trace.py
+                trace.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
+        )
+        add_library (d3d8 MODULE d3d8.def d3d8trace.cpp d3dshader.cpp)
+        target_link_libraries (d3d8
+            common
+            ${ZLIB_LIBRARIES}
+            ${SNAPPY_LIBRARIES}
+        )
+        set_target_properties (d3d8
+            PROPERTIES PREFIX ""
+        )
+        install (TARGETS d3d8 LIBRARY DESTINATION ${WRAPPER_INSTALL_DIR})
+    endif ()
+
+    # d3d9.dll
+    if (DirectX_D3DX9_INCLUDE_DIR)
+        include_directories (SYSTEM ${DirectX_D3DX9_INCLUDE_DIR})
+        add_custom_command (
+            OUTPUT d3d9trace.cpp
+            COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/d3d9trace.py > ${CMAKE_CURRENT_BINARY_DIR}/d3d9trace.cpp
+            DEPENDS
+                d3d9trace.py
+                trace.py
+                ${CMAKE_SOURCE_DIR}/specs/d3d9.py
+                ${CMAKE_SOURCE_DIR}/specs/d3d9types.py
+                ${CMAKE_SOURCE_DIR}/specs/d3d9caps.py
+                ${CMAKE_SOURCE_DIR}/specs/winapi.py
+                ${CMAKE_SOURCE_DIR}/specs/stdapi.py
+        )
+        add_library (d3d9 MODULE d3d9.def d3d9trace.cpp d3dshader.cpp)
+        target_link_libraries (d3d9
+            common
+            ${ZLIB_LIBRARIES}
+            ${SNAPPY_LIBRARIES}
+        )
+        set_target_properties (d3d9
+            PROPERTIES PREFIX ""
+        )
+        install (TARGETS d3d9 LIBRARY DESTINATION ${WRAPPER_INSTALL_DIR})
+    endif ()
+
+    # d3d10.dll
+    if (DirectX_D3DX10_INCLUDE_DIR)
+        include_directories (SYSTEM ${DirectX_D3DX10_INCLUDE_DIR})
+        add_custom_command (
+            OUTPUT d3d10trace.cpp
+            COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/d3d10trace.py > ${CMAKE_CURRENT_BINARY_DIR}/d3d10trace.cpp
+            DEPENDS
+                d3d10trace.py
+                trace.py
+                ${CMAKE_SOURCE_DIR}/specs/d3d10misc.py
+                ${CMAKE_SOURCE_DIR}/specs/d3d10.py
+                ${CMAKE_SOURCE_DIR}/specs/d3d10sdklayers.py
+                ${CMAKE_SOURCE_DIR}/specs/d3dcommon.py
+                ${CMAKE_SOURCE_DIR}/specs/dxgi.py
+                ${CMAKE_SOURCE_DIR}/specs/dxgitype.py
+                ${CMAKE_SOURCE_DIR}/specs/dxgiformat.py
+                ${CMAKE_SOURCE_DIR}/specs/winapi.py
+                ${CMAKE_SOURCE_DIR}/specs/stdapi.py
+        )
+        add_library (d3d10 MODULE d3d10.def d3d10trace.cpp)
+        target_link_libraries (d3d10
+            common
+            ${ZLIB_LIBRARIES}
+            ${SNAPPY_LIBRARIES}
+        )
+        set_target_properties (d3d10
+            PROPERTIES PREFIX ""
+        )
+        install (TARGETS d3d10 LIBRARY DESTINATION ${WRAPPER_INSTALL_DIR})
+    endif ()
+
+    # d3d10_1.dll
+    if (DirectX_D3DX10_INCLUDE_DIR AND DirectX_D3D10_1_INCLUDE_DIR)
+        include_directories (SYSTEM ${DirectX_D3D10_1_INCLUDE_DIR})
+        add_custom_command (
+            OUTPUT d3d10_1trace.cpp
+            COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/d3d10_1trace.py > ${CMAKE_CURRENT_BINARY_DIR}/d3d10_1trace.cpp
+            DEPENDS
+                d3d10_1trace.py
+                trace.py
+                ${CMAKE_SOURCE_DIR}/specs/d3d10_1.py
+                ${CMAKE_SOURCE_DIR}/specs/d3d10.py
+                ${CMAKE_SOURCE_DIR}/specs/d3d10sdklayers.py
+                ${CMAKE_SOURCE_DIR}/specs/d3dcommon.py
+                ${CMAKE_SOURCE_DIR}/specs/dxgi.py
+                ${CMAKE_SOURCE_DIR}/specs/dxgitype.py
+                ${CMAKE_SOURCE_DIR}/specs/dxgiformat.py
+                ${CMAKE_SOURCE_DIR}/specs/winapi.py
+                ${CMAKE_SOURCE_DIR}/specs/stdapi.py
+        )
+        add_library (d3d10_1 MODULE d3d10_1.def d3d10_1trace.cpp)
+        target_link_libraries (d3d10_1
+            common
+            ${ZLIB_LIBRARIES}
+            ${SNAPPY_LIBRARIES}
+        )
+        set_target_properties (d3d10_1
+            PROPERTIES PREFIX ""
+        )
+        install (TARGETS d3d10_1 LIBRARY DESTINATION ${WRAPPER_INSTALL_DIR})
+    endif ()
+
+    # d3d11.dll
+    if (DirectX_D3DX11_INCLUDE_DIR)
+        include_directories (SYSTEM ${DirectX_D3DX11_INCLUDE_DIR})
+        add_custom_command (
+            OUTPUT d3d11trace.cpp
+            COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/d3d11trace.py > ${CMAKE_CURRENT_BINARY_DIR}/d3d11trace.cpp
+            DEPENDS
+                d3d11trace.py
+                trace.py
+                ${CMAKE_SOURCE_DIR}/specs/d3d11.py
+                ${CMAKE_SOURCE_DIR}/specs/d3d11sdklayers.py
+                ${CMAKE_SOURCE_DIR}/specs/d3dcommon.py
+                ${CMAKE_SOURCE_DIR}/specs/dxgi.py
+                ${CMAKE_SOURCE_DIR}/specs/dxgitype.py
+                ${CMAKE_SOURCE_DIR}/specs/dxgiformat.py
+                ${CMAKE_SOURCE_DIR}/specs/winapi.py
+                ${CMAKE_SOURCE_DIR}/specs/stdapi.py
+        )
+        add_library (d3d11 MODULE d3d11.def d3d11trace.cpp)
+        target_link_libraries (d3d11
+            common
+            ${ZLIB_LIBRARIES}
+            ${SNAPPY_LIBRARIES}
+        )
+        set_target_properties (d3d11
+            PROPERTIES PREFIX ""
+        )
+        install (TARGETS d3d11 LIBRARY DESTINATION ${WRAPPER_INSTALL_DIR})
+    endif ()
+
+    # opengl32.dll
+    add_custom_command (
+        OUTPUT wgltrace.cpp
+        COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/wgltrace.py > ${CMAKE_CURRENT_BINARY_DIR}/wgltrace.cpp
+        DEPENDS
+                wgltrace.py
+                gltrace.py
+                trace.py
+                ${CMAKE_SOURCE_DIR}/specs/wglapi.py
+                ${CMAKE_SOURCE_DIR}/specs/wglenum.py
+                ${CMAKE_SOURCE_DIR}/specs/glapi.py
+                ${CMAKE_SOURCE_DIR}/specs/glparams.py
+                ${CMAKE_SOURCE_DIR}/specs/gltypes.py
+                ${CMAKE_SOURCE_DIR}/specs/winapi.py
+                ${CMAKE_SOURCE_DIR}/specs/stdapi.py
+    )
+    add_library (wgltrace MODULE opengl32.def
+        wgltrace.cpp
+        glcaps.cpp
+        ${CMAKE_SOURCE_DIR}/glproc_gl.cpp
+    )
+    add_dependencies (wgltrace glproc)
+    target_link_libraries (wgltrace
+        common
+        ${ZLIB_LIBRARIES}
+        ${SNAPPY_LIBRARIES}
+    )
+    set_target_properties (wgltrace PROPERTIES
+        PREFIX ""
+        OUTPUT_NAME opengl32
+    )
+    install (TARGETS wgltrace LIBRARY DESTINATION ${WRAPPER_INSTALL_DIR})
+
+elseif (APPLE)
+    # OpenGL framework
+    add_custom_command (
+        OUTPUT cgltrace.cpp
+        COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/cgltrace.py > ${CMAKE_CURRENT_BINARY_DIR}/cgltrace.cpp
+        DEPENDS
+            cgltrace.py
+            gltrace.py
+            trace.py
+            ${CMAKE_SOURCE_DIR}/specs/cglapi.py
+            ${CMAKE_SOURCE_DIR}/specs/glapi.py
+            ${CMAKE_SOURCE_DIR}/specs/glparams.py
+            ${CMAKE_SOURCE_DIR}/specs/gltypes.py
+            ${CMAKE_SOURCE_DIR}/specs/stdapi.py
+    )
+
+    add_library (cgltrace SHARED
+        cgltrace.cpp
+        glcaps.cpp
+        ${CMAKE_SOURCE_DIR}/glproc_gl.cpp
+    )
+
+    add_dependencies (cgltrace glproc)
+
+    set_target_properties (cgltrace PROPERTIES
+        # OpenGL framework name
+        PREFIX "" OUTPUT_NAME "OpenGL" SUFFIX ""
+        # Specificy the version and reexport GLU symbols
+        LINK_FLAGS "-compatibility_version 1 -current_version 1.0.0 -Wl,-reexport_library,/System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGLU.dylib"
+    )
+
+    target_link_libraries (cgltrace
+        common
+        ${ZLIB_LIBRARIES}
+        ${SNAPPY_LIBRARIES}
+        ${CMAKE_THREAD_LIBS_INIT}
+        dl
+    )
+
+    install (TARGETS cgltrace LIBRARY DESTINATION ${WRAPPER_INSTALL_DIR})
+elseif (X11_FOUND)
+    # libGL.so
+    add_custom_command (
+        OUTPUT glxtrace.cpp
+        COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/glxtrace.py > ${CMAKE_CURRENT_BINARY_DIR}/glxtrace.cpp
+        DEPENDS
+            glxtrace.py
+            gltrace.py
+            trace.py
+            ${CMAKE_SOURCE_DIR}/specs/glxapi.py
+            ${CMAKE_SOURCE_DIR}/specs/glapi.py
+            ${CMAKE_SOURCE_DIR}/specs/glparams.py
+            ${CMAKE_SOURCE_DIR}/specs/gltypes.py
+            ${CMAKE_SOURCE_DIR}/specs/stdapi.py
+    )
+
+    add_library (glxtrace SHARED
+        glxtrace.cpp
+        glcaps.cpp
+        ${CMAKE_SOURCE_DIR}/glproc_gl.cpp
+    )
+
+    add_dependencies (glxtrace glproc)
+
+    set_target_properties (glxtrace PROPERTIES
+        # avoid the default "lib" prefix
+        PREFIX ""
+        # Prevent symbol relocations internal to our wrapper library to be
+        # overwritten by the application.
+        LINK_FLAGS "-Wl,-Bsymbolic -Wl,-Bsymbolic-functions"
+    )
+
+    target_link_libraries (glxtrace
+        common
+        ${ZLIB_LIBRARIES}
+        ${SNAPPY_LIBRARIES}
+        ${X11_X11_LIB}
+        ${CMAKE_THREAD_LIBS_INIT}
+        dl
+    )
+
+    install (TARGETS glxtrace LIBRARY DESTINATION ${WRAPPER_INSTALL_DIR})
+endif ()
+
+
+if (ENABLE_EGL AND NOT WIN32 AND NOT APPLE)
+    # libEGL.so/libGL.so
+    add_custom_command (
+        OUTPUT egltrace.cpp
+        COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/egltrace.py > ${CMAKE_CURRENT_BINARY_DIR}/egltrace.cpp
+        DEPENDS
+            egltrace.py
+            gltrace.py
+            trace.py
+            ${CMAKE_SOURCE_DIR}/specs/eglapi.py
+            ${CMAKE_SOURCE_DIR}/specs/glesapi.py
+            ${CMAKE_SOURCE_DIR}/specs/glapi.py
+            ${CMAKE_SOURCE_DIR}/specs/glparams.py
+            ${CMAKE_SOURCE_DIR}/specs/gltypes.py
+            ${CMAKE_SOURCE_DIR}/specs/stdapi.py
+    )
+
+    add_library (egltrace SHARED
+        egltrace.cpp
+        glcaps.cpp
+        ${CMAKE_SOURCE_DIR}/glproc_egl.cpp
+    )
+
+    add_dependencies (egltrace glproc)
+
+    set_target_properties (egltrace PROPERTIES
+        # avoid the default "lib" prefix
+        PREFIX ""
+        # Prevent symbol relocations internal to our wrapper library to be
+        # overwritten by the application.
+        LINK_FLAGS "-Wl,-Bsymbolic -Wl,-Bsymbolic-functions"
+    )
+
+    target_link_libraries (egltrace
+        common
+        ${ZLIB_LIBRARIES}
+        ${SNAPPY_LIBRARIES}
+        ${CMAKE_THREAD_LIBS_INIT}
+        dl
+    )
+
+    install (TARGETS egltrace LIBRARY DESTINATION ${WRAPPER_INSTALL_DIR})
+endif ()
diff --git a/cgltrace.py b/wrappers/cgltrace.py
similarity index 100%
rename from cgltrace.py
rename to wrappers/cgltrace.py
index 0e40663..ea2267c 100644
--- a/cgltrace.py
+++ b/wrappers/cgltrace.py
@@ -27,10 +27,10 @@
 """Cgl tracing generator."""
 
 
+from gltrace import GlTracer
 from specs.stdapi import API
 from specs.glapi import glapi
 from specs.cglapi import cglapi
-from gltrace import GlTracer
 
 
 class CglTracer(GlTracer):
diff --git a/specs/d3d10.def b/wrappers/d3d10.def
similarity index 100%
rename from specs/d3d10.def
rename to wrappers/d3d10.def
diff --git a/specs/d3d10_1.def b/wrappers/d3d10_1.def
similarity index 100%
rename from specs/d3d10_1.def
rename to wrappers/d3d10_1.def
diff --git a/d3d10_1trace.py b/wrappers/d3d10_1trace.py
similarity index 100%
rename from d3d10_1trace.py
rename to wrappers/d3d10_1trace.py
index 403ac5d..1a4443b 100644
--- a/d3d10_1trace.py
+++ b/wrappers/d3d10_1trace.py
@@ -24,8 +24,8 @@
 ##########################################################################/
 
 
-from specs.d3d10_1 import d3d10_1
 from dlltrace import DllTracer
+from specs.d3d10_1 import d3d10_1
 
 
 if __name__ == '__main__':
diff --git a/d3d10trace.py b/wrappers/d3d10trace.py
similarity index 100%
rename from d3d10trace.py
rename to wrappers/d3d10trace.py
index 527a2f6..1d65769 100644
--- a/d3d10trace.py
+++ b/wrappers/d3d10trace.py
@@ -24,8 +24,8 @@
 ##########################################################################/
 
 
-from specs.d3d10misc import d3d10
 from dlltrace import DllTracer
+from specs.d3d10misc import d3d10
 
 
 if __name__ == '__main__':
diff --git a/specs/d3d11.def b/wrappers/d3d11.def
similarity index 100%
rename from specs/d3d11.def
rename to wrappers/d3d11.def
diff --git a/d3d11trace.py b/wrappers/d3d11trace.py
similarity index 100%
rename from d3d11trace.py
rename to wrappers/d3d11trace.py
index e40828b..a4ccd6b 100644
--- a/d3d11trace.py
+++ b/wrappers/d3d11trace.py
@@ -24,8 +24,8 @@
 ##########################################################################/
 
 
-from specs.d3d11 import d3d11
 from dlltrace import DllTracer
+from specs.d3d11 import d3d11
 
 
 if __name__ == '__main__':
diff --git a/specs/d3d8.def b/wrappers/d3d8.def
similarity index 100%
rename from specs/d3d8.def
rename to wrappers/d3d8.def
diff --git a/d3d8trace.py b/wrappers/d3d8trace.py
similarity index 100%
rename from d3d8trace.py
rename to wrappers/d3d8trace.py
index af87c2d..09377cb 100644
--- a/d3d8trace.py
+++ b/wrappers/d3d8trace.py
@@ -24,8 +24,8 @@
 ##########################################################################/
 
 
-from specs.d3d8 import d3d8
 from dlltrace import DllTracer
+from specs.d3d8 import d3d8
 
 
 class D3D8Tracer(DllTracer):
diff --git a/specs/d3d9.def b/wrappers/d3d9.def
similarity index 100%
rename from specs/d3d9.def
rename to wrappers/d3d9.def
diff --git a/d3d9trace.py b/wrappers/d3d9trace.py
similarity index 100%
rename from d3d9trace.py
rename to wrappers/d3d9trace.py
diff --git a/d3dshader.cpp b/wrappers/d3dshader.cpp
similarity index 100%
rename from d3dshader.cpp
rename to wrappers/d3dshader.cpp
diff --git a/d3dshader.hpp b/wrappers/d3dshader.hpp
similarity index 100%
rename from d3dshader.hpp
rename to wrappers/d3dshader.hpp
diff --git a/specs/ddraw.def b/wrappers/ddraw.def
similarity index 100%
rename from specs/ddraw.def
rename to wrappers/ddraw.def
diff --git a/ddrawtrace.py b/wrappers/ddrawtrace.py
similarity index 100%
rename from ddrawtrace.py
rename to wrappers/ddrawtrace.py
index 44d0f6f..e640f40 100644
--- a/ddrawtrace.py
+++ b/wrappers/ddrawtrace.py
@@ -24,8 +24,8 @@
 ##########################################################################/
 
 
-from specs.d3d import ddraw, interfaces
 from dlltrace import DllTracer
+from specs.d3d import ddraw, interfaces
 
 
 class DDrawTracer(DllTracer):
diff --git a/dlltrace.py b/wrappers/dlltrace.py
similarity index 100%
rename from dlltrace.py
rename to wrappers/dlltrace.py
index 647b238..3912dd0 100644
--- a/dlltrace.py
+++ b/wrappers/dlltrace.py
@@ -26,8 +26,8 @@
 """Trace code generation for Windows DLLs."""
 
 
-from dispatch import Dispatcher
 from trace import Tracer
+from dispatch import Dispatcher
 
 
 class DllTracer(Tracer):
diff --git a/egltrace.py b/wrappers/egltrace.py
similarity index 100%
rename from egltrace.py
rename to wrappers/egltrace.py
index 5d5c759..65c14ef 100644
--- a/egltrace.py
+++ b/wrappers/egltrace.py
@@ -32,12 +32,12 @@
 """EGL tracing generator."""
 
 
+from gltrace import GlTracer
+from dispatch import function_pointer_type, function_pointer_value
 from specs.stdapi import API
 from specs.glapi import glapi
 from specs.eglapi import eglapi
 from specs.glesapi import glesapi
-from gltrace import GlTracer
-from dispatch import function_pointer_type, function_pointer_value
 
 
 class EglTracer(GlTracer):
diff --git a/glcaps.cpp b/wrappers/glcaps.cpp
similarity index 100%
rename from glcaps.cpp
rename to wrappers/glcaps.cpp
diff --git a/gltrace.hpp b/wrappers/gltrace.hpp
similarity index 100%
rename from gltrace.hpp
rename to wrappers/gltrace.hpp
diff --git a/gltrace.py b/wrappers/gltrace.py
similarity index 100%
rename from gltrace.py
rename to wrappers/gltrace.py
index 6fc456c..128568f 100644
--- a/gltrace.py
+++ b/wrappers/gltrace.py
@@ -27,11 +27,11 @@
 """GL tracing generator."""
 
 
+from trace import Tracer
 import specs.stdapi as stdapi
 import specs.glapi as glapi
 import specs.glparams as glparams
 from specs.glxapi import glxapi
-from trace import Tracer
 
 
 class TypeGetter(stdapi.Visitor):
diff --git a/glxtrace.py b/wrappers/glxtrace.py
similarity index 100%
rename from glxtrace.py
rename to wrappers/glxtrace.py
index b8dac38..8c18e0b 100644
--- a/glxtrace.py
+++ b/wrappers/glxtrace.py
@@ -28,11 +28,11 @@
 """GLX tracing generator."""
 
 
+from gltrace import GlTracer
+from dispatch import function_pointer_type, function_pointer_value
 from specs.stdapi import API
 from specs.glapi import glapi
 from specs.glxapi import glxapi
-from gltrace import GlTracer
-from dispatch import function_pointer_type, function_pointer_value
 
 
 class GlxTracer(GlTracer):
diff --git a/specs/opengl32.def b/wrappers/opengl32.def
similarity index 100%
rename from specs/opengl32.def
rename to wrappers/opengl32.def
diff --git a/trace.py b/wrappers/trace.py
similarity index 99%
rename from trace.py
rename to wrappers/trace.py
index 4d6d974..e2e11ec 100644
--- a/trace.py
+++ b/wrappers/trace.py
@@ -26,6 +26,12 @@
 """Common trace code generation."""
 
 
+# Adjust path
+import os.path
+import sys
+sys.path.insert(0, os.path.join(os.path.dirname(__file__), '..'))
+
+
 import specs.stdapi as stdapi
 
 
diff --git a/wgltrace.py b/wrappers/wgltrace.py
similarity index 100%
rename from wgltrace.py
rename to wrappers/wgltrace.py
index 4dfd0f4..22db6f0 100644
--- a/wgltrace.py
+++ b/wrappers/wgltrace.py
@@ -27,12 +27,12 @@
 """WGL tracing code generator."""
 
 
+from gltrace import GlTracer
+from dispatch import function_pointer_type, function_pointer_value
+from codegen import *
 from specs.stdapi import API
 from specs.glapi import glapi
 from specs.wglapi import wglapi
-from dispatch import function_pointer_type, function_pointer_value
-from gltrace import GlTracer
-from codegen import *
 
 
 class WglTracer(GlTracer):
-- 
2.45.2