diff options
Diffstat (limited to 'source')
| -rwxr-xr-x | source/slang/slang-compiler.h | 2 | ||||
| -rw-r--r-- | source/slang/slang-options.cpp | 16 | ||||
| -rw-r--r-- | source/slang/slang.cpp | 1 |
3 files changed, 19 insertions, 0 deletions
diff --git a/source/slang/slang-compiler.h b/source/slang/slang-compiler.h index cd4e7fdd5..2711da3c9 100755 --- a/source/slang/slang-compiler.h +++ b/source/slang/slang-compiler.h @@ -2835,6 +2835,8 @@ namespace Slang }; Dictionary<TargetRequest*, RefPtr<TargetInfo>> m_targetInfos; + CompilerOptionSet m_optionSetForDefaultTarget; + CompilerOptionSet& getTargetOptionSet(TargetRequest* req); CompilerOptionSet& getTargetOptionSet(Index targetIndex); diff --git a/source/slang/slang-options.cpp b/source/slang/slang-options.cpp index 7337b9210..857f4272c 100644 --- a/source/slang/slang-options.cpp +++ b/source/slang/slang-options.cpp @@ -2909,7 +2909,23 @@ SlangResult OptionsParser::_parse( // Copy all settings from linkage to targets. for (auto target : linkage->targets) + { target->getOptionSet().inheritFrom(linkage->m_optionSet); + + // If there is no target specified in command line, we should inherit the default target options. + if(m_rawTargets.getCount() == 0) + { + target->getOptionSet().inheritFrom(m_defaultTarget.optionSet); + } + } + + // If there are no targets specified in command line, and addCodeGenTarget() is not called + // yet, the options for the default target will be gone after option parsing. We + // should save the option for the future use when addCodeGenTarget() is called. + if ((linkage->targets.getCount() == 0) && (m_rawTargets.getCount() == 0)) + { + m_requestImpl->m_optionSetForDefaultTarget = m_defaultTarget.optionSet; + } applySettingsToDiagnosticSink(m_requestImpl->getSink(), m_sink, linkage->m_optionSet); diff --git a/source/slang/slang.cpp b/source/slang/slang.cpp index 5974656df..9b612b340 100644 --- a/source/slang/slang.cpp +++ b/source/slang/slang.cpp @@ -5529,6 +5529,7 @@ void EndToEndCompileRequest::_completeTargetRequest(UInt targetIndex) TargetRequest* targetRequest = linkage->targets[Index(targetIndex)]; targetRequest->getOptionSet().inheritFrom(getLinkage()->m_optionSet); + targetRequest->getOptionSet().inheritFrom(m_optionSetForDefaultTarget); } void EndToEndCompileRequest::setCodeGenTarget(SlangCompileTarget target) |
