endif (DirectX_D3D_INCLUDE_DIR)
 
     # d3d8.dll
-    if (DirectX_D3D8_INCLUDE_DIR)
-        include_directories (${DirectX_D3D8_INCLUDE_DIR})
+    if (DirectX_D3D8_INCLUDE_DIR AND DirectX_D3DX9_INCLUDE_DIR)
+        include_directories (${DirectX_D3D8_INCLUDE_DIR} ${DirectX_D3DX9_INCLUDE_DIR})
         add_custom_command (
             OUTPUT d3d8.cpp
             COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/d3d8.py > ${CMAKE_CURRENT_BINARY_DIR}/d3d8.cpp
             LIBRARY_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/wrappers
         )
         install (TARGETS d3d8 RUNTIME DESTINATION wrappers)
-    endif (DirectX_D3D8_INCLUDE_DIR)
+    endif (DirectX_D3D8_INCLUDE_DIR AND DirectX_D3DX9_INCLUDE_DIR)
 
     # d3d9.dll
     if (DirectX_D3DX9_INCLUDE_DIR)
 
     Method(HRESULT, "GetPickRecords", [LPDWORD,LPD3DPICKRECORD]),
     Method(HRESULT, "EnumTextureFormats", [LPD3DENUMTEXTUREFORMATSCALLBACK,LPVOID]),
     Method(HRESULT, "CreateMatrix", [LPD3DMATRIXHANDLE]),
-    #Method(HRESULT, "SetMatrix", [D3DMATRIXHANDLE,Const(LPD3DMATRIX)]),
-    Method(HRESULT, "SetMatrix", [D3DMATRIXHANDLE,LPD3DMATRIX]),
+    Method(HRESULT, "SetMatrix", [D3DMATRIXHANDLE,Const(LPD3DMATRIX)]),
     Method(HRESULT, "GetMatrix", [D3DMATRIXHANDLE,LPD3DMATRIX]),
     Method(HRESULT, "DeleteMatrix", [D3DMATRIXHANDLE]),
     Method(HRESULT, "BeginScene", []),
 
          41, 42, 43, 44
     ]
 ])
-LPD3DMATRIX = Pointer(D3DMATRIX)
+LPD3DMATRIX = Alias("LPD3DMATRIX", Pointer(D3DMATRIX))
 
 D3DVIEWPORT = Struct("D3DVIEWPORT", [
     (DWORD, "dwSize"),