From: GregF Date: Thu, 21 Sep 2017 22:50:39 +0000 (-0600) Subject: CMake changes for HLSL legalization X-Git-Tag: upstream/11.4.0~1003^2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=fd34f0e602feb35712b583d9b214f6e7a88f7f9d;p=platform%2Fupstream%2Fglslang.git CMake changes for HLSL legalization Cmake now looks for External/spirv-tools. If found, it links in SPIRV-Tools-opt and SPVRemapper, and adds -DENABLE_OPT to build. --- diff --git a/CMakeLists.txt b/CMakeLists.txt index 9bc94b0..a0f0352 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -18,6 +18,8 @@ option(ENABLE_NV_EXTENSIONS "Enables support of Nvidia-specific extensions" ON) 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() @@ -83,6 +85,17 @@ endfunction(glslang_set_link_args) # 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) diff --git a/External/CMakeLists.txt b/External/CMakeLists.txt index 4f694ee..d9e071e 100644 --- a/External/CMakeLists.txt +++ b/External/CMakeLists.txt @@ -33,3 +33,10 @@ if(BUILD_TESTING) "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() + diff --git a/SPIRV/CMakeLists.txt b/SPIRV/CMakeLists.txt index 3c5ebab..b1c0277 100755 --- a/SPIRV/CMakeLists.txt +++ b/SPIRV/CMakeLists.txt @@ -42,12 +42,21 @@ endif(ENABLE_NV_EXTENSIONS) 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})