From f27b371b86f20ff799b1a1f192b4b4a74925c1ed Mon Sep 17 00:00:00 2001 From: shlainn Date: Sat, 15 Oct 2011 19:15:55 +0200 Subject: [PATCH] * Improve cmake files for windows - works for me now :) Thanks to Lumirion for helpful suggestions. FindDirectX.cmake shamelessly yet not ungratefully stolen from apitrace (https://github.com/apitrace/apitrace) --- CMakeLists.txt | 4 + cmake/FindDirectX.cmake | 178 ++++++++++++++++++++ src/dep/include/irrlicht/IrrCompileConfig.h | 2 +- src/dep/src/irrlicht/CMakeLists.txt | 19 ++- 4 files changed, 195 insertions(+), 8 deletions(-) create mode 100644 cmake/FindDirectX.cmake diff --git a/CMakeLists.txt b/CMakeLists.txt index f4a783f..19033ab 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -30,6 +30,10 @@ option(BUILD_TOOLS "Build Tools" 0) find_package(Platform REQUIRED) find_package(OpenSSL REQUIRED) +if(WIN32) + find_package(DirectX) +endif() + # VS100 uses MSBuild.exe instead of devenv.com, so force it to use devenv.com if(WIN32 AND MSVC_VERSION MATCHES 1600) diff --git a/cmake/FindDirectX.cmake b/cmake/FindDirectX.cmake new file mode 100644 index 0000000..2c54023 --- /dev/null +++ b/cmake/FindDirectX.cmake @@ -0,0 +1,178 @@ +# - try to find DirectX include dirs and libraries + +if (${CMAKE_SYSTEM_NAME} STREQUAL "Windows") + find_path (DirectX_ROOT_DIR + Include/d3d9.h + PATHS + "$ENV{DXSDK_DIR}" + "$ENV{ProgramFiles}/Microsoft DirectX SDK (June 2010)" + "$ENV{ProgramFiles}/Microsoft DirectX SDK (February 2010)" + "$ENV{ProgramFiles}/Microsoft DirectX SDK (March 2009)" + "$ENV{ProgramFiles}/Microsoft DirectX SDK (August 2008)" + "$ENV{ProgramFiles}/Microsoft DirectX SDK (June 2008)" + "$ENV{ProgramFiles}/Microsoft DirectX SDK (March 2008)" + "$ENV{ProgramFiles}/Microsoft DirectX SDK (November 2007)" + "$ENV{ProgramFiles}/Microsoft DirectX SDK (August 2007)" + "$ENV{ProgramFiles}/Microsoft DirectX SDK" + "$ENV{ProgramFiles(x86)}/Microsoft DirectX SDK (June 2010)" + "$ENV{ProgramFiles(x86)}/Microsoft DirectX SDK (February 2010)" + "$ENV{ProgramFiles(x86)}/Microsoft DirectX SDK (March 2009)" + "$ENV{ProgramFiles(x86)}/Microsoft DirectX SDK (August 2008)" + "$ENV{ProgramFiles(x86)}/Microsoft DirectX SDK (June 2008)" + "$ENV{ProgramFiles(x86)}/Microsoft DirectX SDK (March 2008)" + "$ENV{ProgramFiles(x86)}/Microsoft DirectX SDK (November 2007)" + "$ENV{ProgramFiles(x86)}/Microsoft DirectX SDK (August 2007)" + "$ENV{ProgramFiles(x86)}/Microsoft DirectX SDK" + DOC "DirectX SDK root directory") + + + find_path (DirectX_D3D_INCLUDE_DIR d3d.h + PATHS + "${DirectX_ROOT_DIR}/Include" + DOC "The directory where d3d.h resides") + + find_path (DirectX_D3DX_INCLUDE_DIR d3dx.h + PATHS + "${DirectX_ROOT_DIR}/Include" + DOC "The directory where d3dx.h resides") + + find_library (DirectX_DDRAW_LIBRARY ddraw + PATHS + "${DirectX_ROOT_DIR}/Lib/x86" + DOC "The directory where ddraw resides") + + find_library (DirectX_D3DX_LIBRARY d3dx + PATHS + "${DirectX_ROOT_DIR}/Lib/x86" + DOC "The directory where d3dx resides") + + if (DirectX_D3D_INCLUDE_DIR AND DirectX_DDRAW_LIBRARY) + set (DirectX_D3D_FOUND 1) + if (DirectX_D3DX_INCLUDE_DIR AND DirectX_D3DX_LIBRARY) + set (DirectX_D3DX_FOUND 1) + endif (DirectX_D3DX_INCLUDE_DIR AND DirectX_D3DX_LIBRARY) + endif (DirectX_D3D_INCLUDE_DIR AND DirectX_DDRAW_LIBRARY) + + + find_path (DirectX_D3D8_INCLUDE_DIR d3d8.h + PATHS + "${DirectX_ROOT_DIR}/Include" + DOC "The directory where d3d8.h resides") + + find_path (DirectX_D3DX8_INCLUDE_DIR d3dx8.h + PATHS + "${DirectX_ROOT_DIR}/Include" + DOC "The directory where d3dx8.h resides") + + find_library (DirectX_D3D8_LIBRARY d3d8 + PATHS + "${DirectX_ROOT_DIR}/Lib/x86" + DOC "The directory where d3d8 resides") + + find_library (DirectX_D3DX8_LIBRARY d3dx8 + PATHS + "${DirectX_ROOT_DIR}/Lib/x86" + DOC "The directory where d3dx8 resides") + + if (DirectX_D3D8_INCLUDE_DIR AND DirectX_D3D8_LIBRARY) + set (DirectX_D3D8_FOUND 1) + if (DirectX_D3DX8_INCLUDE_DIR AND DirectX_D3DX8_LIBRARY) + set (DirectX_D3DX8_FOUND 1) + endif (DirectX_D3DX8_INCLUDE_DIR AND DirectX_D3DX8_LIBRARY) + endif (DirectX_D3D8_INCLUDE_DIR AND DirectX_D3D8_LIBRARY) + + + find_path (DirectX_D3D9_INCLUDE_DIR d3d9.h + PATHS + "${DirectX_ROOT_DIR}/Include" + DOC "The directory where d3d9.h resides") + + find_path (DirectX_D3DX9_INCLUDE_DIR d3dx9.h + PATHS + "${DirectX_ROOT_DIR}/Include" + DOC "The directory where d3dx9.h resides") + + find_library (DirectX_D3D9_LIBRARY d3d9 + PATHS + "${DirectX_ROOT_DIR}/Lib/x86" + DOC "The directory where d3d9 resides") + + find_library (DirectX_D3DX9_LIBRARY d3dx9 + PATHS + "${DirectX_ROOT_DIR}/Lib/x86" + DOC "The directory where d3dx9 resides") + + if (DirectX_D3D9_INCLUDE_DIR AND DirectX_D3D9_LIBRARY) + set (DirectX_D3D9_FOUND 1) + if (DirectX_D3DX9_INCLUDE_DIR AND DirectX_D3DX9_LIBRARY) + set (DirectX_D3DX9_FOUND 1) + endif (DirectX_D3DX9_INCLUDE_DIR AND DirectX_D3DX9_LIBRARY) + endif (DirectX_D3D9_INCLUDE_DIR AND DirectX_D3D9_LIBRARY) + + + find_path (DirectX_D3D10_INCLUDE_DIR d3d10.h + PATHS + "${DirectX_ROOT_DIR}/Include" + DOC "The directory where d3d10.h resides") + + find_path (DirectX_D3DX10_INCLUDE_DIR d3dx10.h + PATHS + "${DirectX_ROOT_DIR}/Include" + DOC "The directory where d3dx10.h resides") + + find_library (DirectX_D3D10_LIBRARY d3d10 + PATHS + "${DirectX_ROOT_DIR}/Lib/x86" + DOC "The directory where d3d10 resides") + + find_library (DirectX_D3DX10_LIBRARY d3dx10 + PATHS + "${DirectX_ROOT_DIR}/Lib/x86" + DOC "The directory where d3dx10 resides") + + if (DirectX_D3D10_INCLUDE_DIR AND DirectX_D3D10_LIBRARY) + set (DirectX_D3D10_FOUND 1) + if (DirectX_D3DX10_INCLUDE_DIR AND DirectX_D3DX10_LIBRARY) + set (DirectX_D3DX10_FOUND 1) + endif (DirectX_D3DX10_INCLUDE_DIR AND DirectX_D3DX10_LIBRARY) + endif (DirectX_D3D10_INCLUDE_DIR AND DirectX_D3D10_LIBRARY) + + mark_as_advanced( + DirectX_D3D_INCLUDE_DIR + DirectX_D3D_INCLUDE_DIR + DirectX_DDRAW_LIBRARY + DirectX_DDRAW_LIBRARY + DirectX_D3DX_INCLUDE_DIR + DirectX_D3DX_INCLUDE_DIR + DirectX_D3DX_LIBRARY + DirectX_D3DX_LIBRARY + DirectX_D3D8_INCLUDE_DIR + DirectX_D3D8_INCLUDE_DIR + DirectX_D3D8_LIBRARY + DirectX_D3D8_LIBRARY + DirectX_D3DX8_INCLUDE_DIR + DirectX_D3DX8_INCLUDE_DIR + DirectX_D3DX8_LIBRARY + DirectX_D3DX8_LIBRARY + DirectX_D3D9_INCLUDE_DIR + DirectX_D3D9_LIBRARY + DirectX_D3DX9_INCLUDE_DIR + DirectX_D3DX9_LIBRARY + DirectX_D3D10_INCLUDE_DIR + DirectX_D3D10_LIBRARY + DirectX_D3DX10_INCLUDE_DIR + DirectX_D3DX10_LIBRARY + ) + +endif (${CMAKE_SYSTEM_NAME} STREQUAL "Windows") + +mark_as_advanced ( + DirectX_D3D_FOUND + DirectX_D3DX_FOUND + DirectX_D3D8_FOUND + DirectX_D3DX8_FOUND + DirectX_D3D9_FOUND + DirectX_D3DX9_FOUND + DirectX_D3D10_FOUND + DirectX_D3DX10_FOUND +) diff --git a/src/dep/include/irrlicht/IrrCompileConfig.h b/src/dep/include/irrlicht/IrrCompileConfig.h index 5c40c21..b239251 100644 --- a/src/dep/include/irrlicht/IrrCompileConfig.h +++ b/src/dep/include/irrlicht/IrrCompileConfig.h @@ -85,7 +85,7 @@ to the compiler settings: -DIRR_COMPILE_WITH_DX9_DEV_PACK and this to the linker settings: -ld3dx9 -ld3dx8 **/ #if defined(_IRR_WINDOWS_API_) && (!defined(__GNUC__) || defined(IRR_COMPILE_WITH_DX9_DEV_PACK)) -#define _IRR_COMPILE_WITH_DIRECT3D_8_ +// #define _IRR_COMPILE_WITH_DIRECT3D_8_ #define _IRR_COMPILE_WITH_DIRECT3D_9_ #endif diff --git a/src/dep/src/irrlicht/CMakeLists.txt b/src/dep/src/irrlicht/CMakeLists.txt index 5487e1e..b8aa873 100644 --- a/src/dep/src/irrlicht/CMakeLists.txt +++ b/src/dep/src/irrlicht/CMakeLists.txt @@ -1,9 +1,11 @@ -include_directories (${PROJECT_SOURCE_DIR}/src/dep/include ${PROJECT_SOURCE_DIR}/src/dep/include/irrlicht) +set(INCLUDE_DIRS ${PROJECT_SOURCE_DIR}/src/dep/include ${PROJECT_SOURCE_DIR}/src/dep/include/irrlicht ${PROJECT_SOURCE_DIR}/src/dep/include/zlib) if(WIN32) set(LIBTYPE SHARED) + set(INCLUDE_DIRS ${INCLUDE_DIRS} ${DirectX_D3D9_INCLUDE_DIR} ${DirectX_D3DX9_INCLUDE_DIR}) else() set(LIBTYPE STATIC) endif() +include_directories(${INCLUDE_DIRS}) add_library(irrlicht ${LIBTYPE} # this may be considered a hack. @@ -106,11 +108,11 @@ CColladaMeshWriter.cpp CColorConverter.cpp CCSMLoader.cpp CCubeSceneNode.cpp -CD3D8Driver.cpp -CD3D8NormalMapRenderer.cpp -CD3D8ParallaxMapRenderer.cpp -CD3D8ShaderMaterialRenderer.cpp -CD3D8Texture.cpp +# CD3D8Driver.cpp +# CD3D8NormalMapRenderer.cpp +# CD3D8ParallaxMapRenderer.cpp +# CD3D8ShaderMaterialRenderer.cpp +# CD3D8Texture.cpp CD3D9Driver.cpp CD3D9HLSLMaterialRenderer.cpp CD3D9NormalMapRenderer.cpp @@ -291,4 +293,7 @@ Irrlicht.cpp irrXML.cpp os.cpp ) -SET_TARGET_PROPERTIES (irrlicht PROPERTIES DEFINE_SYMBOL "IRRLICHT_EXPORTS" ) \ No newline at end of file +if(WIN32) + SET_TARGET_PROPERTIES (irrlicht PROPERTIES DEFINE_SYMBOL "IRRLICHT_EXPORTS" ) + target_link_libraries (irrlicht ${DirectX_D3D9_LIBRARY} ${DirectX_D3DX9_LIBRARY} Winmm) +endif()