diff --git a/CMakeLists.txt b/CMakeLists.txt index e7b22e5ef845572e18de3e1fd02a4c1f9f0d9cf9..600130de0be352296fc8113a34170a8574439e6c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -6,6 +6,8 @@ option(ENABLE_GLSLANG_BINARIES "Builds glslangValidator and spirv-remap" ON) option(ENABLE_NV_EXTENSIONS "Enables support of Nvidia-specific extensions" ON) +option(DISABLE_HLSL "Disables HLSL input support" OFF) + enable_testing() set(CMAKE_INSTALL_PREFIX "install" CACHE STRING "prefix") @@ -20,6 +22,10 @@ if(ENABLE_NV_EXTENSIONS) add_definitions(-DNV_EXTENSIONS) endif(ENABLE_NV_EXTENSIONS) +if(DISABLE_HLSL) + add_definitions(-DDISABLE_HLSL) +endif(DISABLE_HLSL) + if(WIN32) set(CMAKE_DEBUG_POSTFIX "d") include(ChooseMSVCCRT.cmake) @@ -63,5 +69,7 @@ if(ENABLE_GLSLANG_BINARIES) add_subdirectory(StandAlone) endif() add_subdirectory(SPIRV) -add_subdirectory(hlsl) +if(NOT DISABLE_HLSL) + add_subdirectory(hlsl) +endif() add_subdirectory(gtests) diff --git a/StandAlone/CMakeLists.txt b/StandAlone/CMakeLists.txt index 231ba277a7b5e34e9bea5e65f5a1d2b824380951..3a09799c87b6662f49edae162f3a110c45aedf67 100644 --- a/StandAlone/CMakeLists.txt +++ b/StandAlone/CMakeLists.txt @@ -22,11 +22,14 @@ set(LIBRARIES glslang OGLCompiler OSDependent - HLSL SPIRV SPVRemapper glslang-default-resource-limits) +if(NOT DISABLE_HLSL) + set(LIBRARIES ${LIBRARIES} HLSL) +endif() + if(WIN32) set(LIBRARIES ${LIBRARIES} psapi) elseif(UNIX) diff --git a/glslang/MachineIndependent/ShaderLang.cpp b/glslang/MachineIndependent/ShaderLang.cpp index b5e08a7ec7a1ff8a4c6441c8e534e56bfa28fd52..b6f504c29025d546c6597061454723b9854be05a 100644 --- a/glslang/MachineIndependent/ShaderLang.cpp +++ b/glslang/MachineIndependent/ShaderLang.cpp @@ -47,11 +47,14 @@ #include <memory> #include "SymbolTable.h" #include "ParseHelper.h" -#include "../../hlsl/hlslParseHelper.h" -#include "../../hlsl/hlslParseables.h" #include "Scan.h" #include "ScanContext.h" + +#ifndef DISABLE_HLSL +#include "../../hlsl/hlslParseHelper.h" +#include "../../hlsl/hlslParseables.h" #include "../../hlsl/hlslScanContext.h" +#endif #include "../Include/ShHandle.h" #include "../../OGLCompilersDLL/InitializeDll.h" @@ -73,7 +76,9 @@ TBuiltInParseables* CreateBuiltInParseables(TInfoSink& infoSink, EShSource sourc { switch (source) { case EShSourceGlsl: return new TBuiltIns(); // GLSL builtIns +#ifndef DISABLE_HLSL case EShSourceHlsl: return new TBuiltInParseablesHlsl(); // HLSL intrinsics +#endif default: infoSink.info.message(EPrefixInternalError, "Unable to determine source language"); @@ -88,15 +93,21 @@ TParseContextBase* CreateParseContext(TSymbolTable& symbolTable, TIntermediate& SpvVersion spvVersion, bool forwardCompatible, EShMessages messages, bool parsingBuiltIns, const std::string sourceEntryPointName = "") { +#ifdef DISABLE_HLSL + (void)sourceEntryPointName; // Unused argument. +#endif + switch (source) { case EShSourceGlsl: intermediate.setEntryPointName("main"); return new TParseContext(symbolTable, intermediate, parsingBuiltIns, version, profile, spvVersion, language, infoSink, forwardCompatible, messages); +#ifndef DISABLE_HLSL case EShSourceHlsl: return new HlslParseContext(symbolTable, intermediate, parsingBuiltIns, version, profile, spvVersion, language, infoSink, sourceEntryPointName.c_str(), forwardCompatible, messages); +#endif default: infoSink.info.message(EPrefixInternalError, "Unable to determine source language"); return nullptr; @@ -1085,7 +1096,9 @@ int ShInitialize() PerProcessGPA = new TPoolAllocator(); glslang::TScanContext::fillInKeywordMap(); +#ifndef DISABLE_HLSL glslang::HlslScanContext::fillInKeywordMap(); +#endif return 1; } @@ -1178,7 +1191,9 @@ int __fastcall ShFinalize() } glslang::TScanContext::deleteKeywordMap(); +#ifndef DISABLE_HLSL glslang::HlslScanContext::deleteKeywordMap(); +#endif return 1; }