@@ -83,29 +83,34 @@ class ShaderCompiler final : public system::IApplicationFramework
83
83
});
84
84
};
85
85
86
- auto output_flag_pos = findOutputFlag (" -Fc" );
87
-
86
+ auto output_flag_pos_fc = findOutputFlag (" -Fc" );
87
+ auto output_flag_pos_fo = findOutputFlag (" -Fo" );
88
+ if (output_flag_pos_fc != m_arguments.end () && output_flag_pos_fo != m_arguments.end ()) {
89
+ m_logger->log (" Invalid arguments. Passed both -Fo and -Fc." , ILogger::ELL_ERROR);
90
+ return false ;
91
+ }
92
+ auto output_flag_pos = output_flag_pos_fc != m_arguments.end () ? output_flag_pos_fc : output_flag_pos_fo;
88
93
if (output_flag_pos == m_arguments.end ())
89
94
{
90
- m_logger->log (" Missing arguments. Expecting `-Fc {filename}`." , ILogger::ELL_ERROR);
95
+ m_logger->log (" Missing arguments. Expecting `-Fc {filename}` or `-Fo {filename}` ." , ILogger::ELL_ERROR);
91
96
return false ;
92
97
}
93
98
else
94
99
{
95
100
// we need to assume -Fc may be passed with output file name quoted together with "", so we split it (DXC does it)
96
- const auto & outpufFlag = *output_flag_pos;
97
- auto outputFlagVector = split (outpufFlag , ' ' );
101
+ const auto & outputFlag = *output_flag_pos;
102
+ auto outputFlagVector = split (outputFlag , ' ' );
98
103
99
- if (outpufFlag == " -Fc" )
104
+ if (outputFlag == " -Fc" || outputFlag == " -Fo " )
100
105
{
101
106
if (output_flag_pos + 1 != m_arguments.end ())
102
107
{
103
- output_filepath = *(output_flag_pos + 1 );
108
+ output_filepath = *(output_flag_pos + 1 );
104
109
}
105
110
else
106
111
{
107
- m_logger->log (" Incorrect arguments. Expecting filename after -Fc ." , ILogger::ELL_ERROR);
108
- return false ;
112
+ m_logger->log (" Incorrect arguments. Expecting filename after %s ." , ILogger::ELL_ERROR, outputFlag );
113
+ return false ;
109
114
}
110
115
}
111
116
else
0 commit comments