FindXShaderCompiler.cmake 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. # Find XShaderCompiler dependency
  2. #
  3. # This module defines
  4. # XShaderCompiler_INCLUDE_DIRS
  5. # XShaderCompiler_LIBRARIES
  6. # XShaderCompiler_FOUND
  7. set(XShaderCompiler_INSTALL_DIR ${PROJECT_SOURCE_DIR}/../Dependencies/XShaderCompiler CACHE PATH "")
  8. set(XShaderCompiler_SOURCE_DIR ${PROJECT_SOURCE_DIR}/External/XShaderCompiler)
  9. set(XShaderCompiler_BUILD_DIR ${PROJECT_SOURCE_DIR}/../Dependencies/Build/XShaderCompiler)
  10. set(XShaderCompiler_INCLUDE_SEARCH_DIRS
  11. "${XShaderCompiler_INSTALL_DIR}/include"
  12. "${XShaderCompiler_SOURCE_DIR}/inc")
  13. if(BS_64BIT)
  14. list(APPEND XShaderCompiler_LIBRARY_RELEASE_SEARCH_DIRS "${XShaderCompiler_INSTALL_DIR}/lib/x64/Release")
  15. list(APPEND XShaderCompiler_LIBRARY_DEBUG_SEARCH_DIRS "${XShaderCompiler_INSTALL_DIR}/lib/x64/Debug")
  16. else()
  17. list(APPEND XShaderCompiler_LIBRARY_RELEASE_SEARCH_DIRS "${XShaderCompiler_INSTALL_DIR}/lib/x86/Release")
  18. list(APPEND XShaderCompiler_LIBRARY_DEBUG_SEARCH_DIRS "${XShaderCompiler_INSTALL_DIR}/lib/x86/Debug")
  19. endif()
  20. list(APPEND XShaderCompiler_LIBRARY_RELEASE_SEARCH_DIRS "${XShaderCompiler_BUILD_DIR}/Release/install")
  21. list(APPEND XShaderCompiler_LIBRARY_DEBUG_SEARCH_DIRS "${XShaderCompiler_BUILD_DIR}/Debug/install")
  22. message(STATUS "Looking for XShaderCompiler installation...")
  23. # Force the system to always look for files, instead of reading cached entries
  24. unset(XShaderCompiler_INCLUDE_DIR CACHE)
  25. unset(XShaderCompiler_LIBRARY_RELEASE CACHE)
  26. unset(XShaderCompiler_LIBRARY_DEBUG CACHE)
  27. find_path(XShaderCompiler_INCLUDE_DIR Xsc/Xsc.h PATHS ${XShaderCompiler_INCLUDE_SEARCH_DIRS})
  28. find_library(XShaderCompiler_LIBRARY_RELEASE NAMES xsc_core PATHS ${XShaderCompiler_LIBRARY_RELEASE_SEARCH_DIRS})
  29. find_library(XShaderCompiler_LIBRARY_DEBUG NAMES xsc_core PATHS ${XShaderCompiler_LIBRARY_DEBUG_SEARCH_DIRS})
  30. if(XShaderCompiler_INCLUDE_DIR AND XShaderCompiler_LIBRARY_DEBUG AND XShaderCompiler_LIBRARY_RELEASE)
  31. set(XShaderCompiler_FOUND TRUE)
  32. endif()
  33. if(NOT XShaderCompiler_FOUND)
  34. if(XShaderCompiler_FIND_REQUIRED)
  35. message(FATAL_ERROR "Cannot find XShaderCompiler installation. Try modifying the XShaderCompiler_INSTALL_DIR path.")
  36. elseif(NOT XShaderCompiler_FIND_QUIETLY)
  37. message(WARNING "Cannot find XShaderCompiler installation. Try modifying the XShaderCompiler_INSTALL_DIR path.")
  38. endif()
  39. else()
  40. message(STATUS "...XShaderCompiler OK.")
  41. endif()
  42. if(XShaderCompiler_FOUND)
  43. add_library(XShaderCompiler STATIC IMPORTED)
  44. set_target_properties(XShaderCompiler PROPERTIES IMPORTED_LOCATION_DEBUG "${XShaderCompiler_LIBRARY_DEBUG}")
  45. set_target_properties(XShaderCompiler PROPERTIES IMPORTED_LOCATION_OPTIMIZEDDEBUG "${XShaderCompiler_LIBRARY_DEBUG}")
  46. set_target_properties(XShaderCompiler PROPERTIES IMPORTED_LOCATION_RELEASE "${XShaderCompiler_LIBRARY_RELEASE}")
  47. endif()
  48. mark_as_advanced(
  49. XShaderCompiler_INSTALL_DIR
  50. XShaderCompiler_INCLUDE_DIR
  51. XShaderCompiler_LIBRARY_RELEASE
  52. XShaderCompiler_LIBRARY_DEBUG)
  53. set(XShaderCompiler_INCLUDE_DIRS ${XShaderCompiler_INCLUDE_DIR})
  54. set(XShaderCompiler_LIBRARIES XShaderCompiler)
  55. set(XShaderCompiler_INCLUDE_DIRS ${XShaderCompiler_INCLUDE_DIR} PARENT_SCOPE)
  56. set(XShaderCompiler_LIBRARIES XShaderCompiler PARENT_SCOPE)