endif ()
 
 if (WIN32 AND DirectX_D3DX9_INCLUDE_DIR)
-    include_directories (SYSTEM ${DirectX_D3DX9_INCLUDE_DIR})
+    if (DirectX_D3D8_INCLUDE_DIR) 
+        include_directories (BEFORE SYSTEM ${DirectX_D3D8_INCLUDE_DIR})
+        set (HAVE_D3D8 1)
+    else ()
+        set (HAVE_D3D8 0)
+    endif ()
     add_custom_command (
-        OUTPUT d3dretrace_d3d9.cpp
-        COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/d3d9retrace.py d3d9 1 > ${CMAKE_CURRENT_BINARY_DIR}/d3dretrace_d3d9.cpp
+        OUTPUT d3dretrace_d3d8.cpp
+        COMMAND ${PYTHON_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/d3d9.py
-                ${CMAKE_SOURCE_DIR}/specs/d3d9types.py
-                ${CMAKE_SOURCE_DIR}/specs/d3d9caps.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_D3D8_INCLUDE_DIR) 
-        include_directories (SYSTEM ${DirectX_D3D8_INCLUDE_DIR})
-        set (HAVE_D3D8 1)
-    endif ()
+    include_directories (BEFORE SYSTEM ${DirectX_D3DX9_INCLUDE_DIR})
     add_custom_command (
-        OUTPUT d3dretrace_d3d8.cpp
-        COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/d3d9retrace.py d3d8 ${HAVE_D3D8} > ${CMAKE_CURRENT_BINARY_DIR}/d3dretrace_d3d8.cpp
+        OUTPUT d3dretrace_d3d9.cpp
+        COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/d3d9retrace.py d3d9 1 > ${CMAKE_CURRENT_BINARY_DIR}/d3dretrace_d3d9.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/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
     )
 
     if (DirectX_D3D10_INCLUDE_DIR)
-        include_directories (SYSTEM ${DirectX_D3D10_INCLUDE_DIR})
+        include_directories (BEFORE SYSTEM ${DirectX_D3D10_INCLUDE_DIR})
         set (DXGI_MODULES d3d10)
         if (DirectX_D3D10_1_INCLUDE_DIR)
-            include_directories (SYSTEM ${DirectX_D3D10_1_INCLUDE_DIR})
+            include_directories (BEFORE SYSTEM ${DirectX_D3D10_1_INCLUDE_DIR})
             set (DXGI_MODULES ${DXGI_MODULES} d3d10_1)
         endif ()
         set (D3DSTATE_SOURCES ${D3DSTATE_SOURCES}
     endif ()
 
     if (DirectX_D3D11_INCLUDE_DIR)
-        include_directories (SYSTEM ${DirectX_D3D11_INCLUDE_DIR})
+        include_directories (BEFORE SYSTEM ${DirectX_D3D11_INCLUDE_DIR})
         set (DXGI_MODULES ${DXGI_MODULES} d3d11)
         if (DirectX_D3D11_1_INCLUDE_DIR)
-            include_directories (SYSTEM ${DirectX_D3D11_1_INCLUDE_DIR})
+            include_directories (BEFORE SYSTEM ${DirectX_D3D11_1_INCLUDE_DIR})
             set (DXGI_MODULES ${DXGI_MODULES} d3d11_1)
         endif ()
         set (D3DSTATE_SOURCES ${D3DSTATE_SOURCES}
 
 
     # ddraw.dll
     if (DirectX_D3D_INCLUDE_DIR)
-        include_directories (SYSTEM ${DirectX_D3D_INCLUDE_DIR})
+        include_directories (BEFORE 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
 
     # d3d8.dll
     if (DirectX_D3D8_INCLUDE_DIR AND DirectX_D3DX9_INCLUDE_DIR)
-        include_directories (SYSTEM ${DirectX_D3D8_INCLUDE_DIR} ${DirectX_D3DX9_INCLUDE_DIR})
+        include_directories (BEFORE SYSTEM ${DirectX_D3DX9_INCLUDE_DIR} ${DirectX_D3D8_INCLUDE_DIR})
         add_custom_command (
             OUTPUT d3d8trace.cpp
             COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/d3d8trace.py > ${CMAKE_CURRENT_BINARY_DIR}/d3d8trace.cpp
 
     # d3d9.dll
     if (DirectX_D3DX9_INCLUDE_DIR)
-        include_directories (SYSTEM ${DirectX_D3DX9_INCLUDE_DIR})
+        include_directories (BEFORE 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
         file (APPEND ${DXGITRACE_DEF} "D3D10CreateDevice\n")
         file (APPEND ${DXGITRACE_DEF} "D3D10CreateDeviceAndSwapChain\n")
 
-        include_directories (SYSTEM ${DirectX_D3D10_INCLUDE_DIR})
+        include_directories (BEFORE SYSTEM ${DirectX_D3D10_INCLUDE_DIR})
         set (DXGI_MODULES d3d10)
         if (DirectX_D3D10_1_INCLUDE_DIR)
-            include_directories (SYSTEM ${DirectX_D3D10_1_INCLUDE_DIR})
+            include_directories (BEFORE SYSTEM ${DirectX_D3D10_1_INCLUDE_DIR})
             set (DXGI_MODULES ${DXGI_MODULES} d3d10_1)
             file (APPEND ${DXGITRACE_DEF} "D3D10CreateDevice1\n")
             file (APPEND ${DXGITRACE_DEF} "D3D10CreateDeviceAndSwapChain1\n")
         endif ()
         if (DirectX_D3D11_INCLUDE_DIR)
-            include_directories (SYSTEM ${DirectX_D3D11_INCLUDE_DIR})
+            include_directories (BEFORE SYSTEM ${DirectX_D3D11_INCLUDE_DIR})
             set (DXGI_MODULES ${DXGI_MODULES} d3d11)
             if (DirectX_D3D11_1_INCLUDE_DIR)
-                include_directories (SYSTEM ${DirectX_D3D11_1_INCLUDE_DIR})
+                include_directories (BEFORE SYSTEM ${DirectX_D3D11_1_INCLUDE_DIR})
                 set (DXGI_MODULES ${DXGI_MODULES} d3d11_1)
             endif ()
             file (APPEND ${DXGITRACE_DEF} "D3D11CreateDevice\n")
 
     # d2d1.dll, dwrite.dll
     if (DirectX_D2D1_INCLUDE_DIR)
-        include_directories (SYSTEM ${DirectX_D2D1_INCLUDE_DIR})
+        include_directories (BEFORE SYSTEM ${DirectX_D2D1_INCLUDE_DIR})
 
         add_custom_command (
             OUTPUT d2d1trace.cpp