option(ENABLE_HLSL "Enables HLSL input support" ON)
+option(ENABLE_OPT "Enables spirv-opt capability if present" ON)
+
if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT AND WIN32)
set(CMAKE_INSTALL_PREFIX "install" CACHE STRING "..." FORCE)
endif()
# We depend on these for later projects, so they should come first.
add_subdirectory(External)
+if(NOT TARGET SPIRV-Tools-opt)
+ set(ENABLE_OPT OFF)
+endif()
+
+if(ENABLE_OPT)
+ message(STATUS "optimizer enabled")
+ add_definitions(-DENABLE_OPT)
+elseif(ENABLE_HLSL)
+ message(STATUS "spirv-tools not linked - illegal SPIRV may be generated for HLSL")
+endif()
+
add_subdirectory(glslang)
add_subdirectory(OGLCompilersDLL)
if(ENABLE_GLSLANG_BINARIES)
"Google Mock was not found - tests based on that will not build")
endif()
endif()
+
+if(ENABLE_OPT AND NOT TARGET SPIRV-Tools-opt)
+ if(IS_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/spirv-tools)
+ add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/spirv-tools spirv-tools)
+ endif()
+endif()
+
add_library(SPIRV STATIC ${SOURCES} ${HEADERS})
set_property(TARGET SPIRV PROPERTY FOLDER glslang)
set_property(TARGET SPIRV PROPERTY POSITION_INDEPENDENT_CODE ON)
-target_link_libraries(SPIRV glslang)
add_library(SPVRemapper STATIC ${SPVREMAP_SOURCES} ${SPVREMAP_HEADERS})
set_property(TARGET SPVRemapper PROPERTY FOLDER glslang)
set_property(TARGET SPVRemapper PROPERTY POSITION_INDEPENDENT_CODE ON)
+if(ENABLE_OPT)
+ target_include_directories(SPIRV
+ PRIVATE ${spirv-tools_SOURCE_DIR}/include
+ PRIVATE ${spirv-tools_SOURCE_DIR}/source
+ )
+ target_link_libraries(SPIRV glslang SPIRV-Tools-opt SPVRemapper)
+else()
+ target_link_libraries(SPIRV glslang)
+endif(ENABLE_OPT)
+
if(WIN32)
source_group("Source" FILES ${SOURCES} ${HEADERS})
source_group("Source" FILES ${SPVREMAP_SOURCES} ${SPVREMAP_HEADERS})