@@ -215,7 +215,8 @@ void add_std(
215215 bake_project * project ,
216216 bake_src_lang lang ,
217217 ut_strbuf * cmd ,
218- bool own_src )
218+ bool own_src ,
219+ bool is_pch )
219220{
220221 /* Set standard for C or C++ */
221222 if (lang == BAKE_SRC_LANG_CPP ) {
@@ -244,20 +245,42 @@ void add_std(
244245 ut_strbuf_appendstr (cmd , " -Wundef" );
245246
246247 if (is_clang (lang )) {
248+ ut_strbuf_appendstr (cmd , " -Wno-unknown-warning-option" );
247249 ut_strbuf_appendstr (cmd , " -Wdocumentation" );
248250 ut_strbuf_appendstr (cmd , " -Wconditional-uninitialized" );
249251 ut_strbuf_appendstr (cmd , " -Wunreachable-code" );
250252 ut_strbuf_appendstr (cmd , " -Wfour-char-constants" );
251253 ut_strbuf_appendstr (cmd , " -Wenum-conversion" );
252254 ut_strbuf_appendstr (cmd , " -Wshorten-64-to-32" );
255+ ut_strbuf_appendstr (cmd , " -Wnonportable-system-include-path" );
256+ ut_strbuf_appendstr (cmd , " -Wreserved-identifier" );
257+ ut_strbuf_appendstr (cmd , " -Wextra-semi-stmt" );
258+ ut_strbuf_appendstr (cmd , " -Wunreachable-code-return" );
259+ ut_strbuf_appendstr (cmd , " -Wunreachable-code-break" );
260+ ut_strbuf_appendstr (cmd , " -Wcomma" );
261+ if (project -> type == BAKE_PACKAGE ) {
262+ ut_strbuf_appendstr (cmd , " -Wmissing-variable-declarations" );
263+ }
253264 }
254265
255266 ut_strbuf_appendstr (cmd , " -Wredundant-decls -Wdouble-promotion" );
256267 ut_strbuf_appendstr (cmd , " -Wcast-align" );
268+ ut_strbuf_appendstr (cmd , " -Wcast-qual" );
269+ ut_strbuf_appendstr (cmd , " -Wfloat-equal" );
270+ ut_strbuf_appendstr (cmd , " -Wswitch-enum" );
271+ ut_strbuf_appendstr (cmd , " -Wimplicit-fallthrough" );
272+ // ut_strbuf_appendstr(cmd, " -Wcast-function-type"); gcc7 doesn't know it
273+ ut_strbuf_appendstr (cmd , " -Wformat-nonliteral" );
274+
275+ if (!is_pch ) {
276+ ut_strbuf_appendstr (cmd , " -Wunused-macros" );
277+ }
257278
258279 /* These warnings are not valid for C++ */
259280 if (lang != BAKE_SRC_LANG_CPP ) {
260281 ut_strbuf_appendstr (cmd , " -Wstrict-prototypes" );
282+ ut_strbuf_appendstr (cmd , " -Wdeclaration-after-statement" );
283+ ut_strbuf_appendstr (cmd , " -Wbad-function-cast" );
261284
262285 /* These warnings are only valid for C++ */
263286 } else {
@@ -452,7 +475,7 @@ void compile_src(
452475 add_optimization (driver , config , project , lang , & cmd , false);
453476
454477 /* Add c/c++ standard arguments */
455- add_std (driver , config , project , lang , & cmd , own_source );
478+ add_std (driver , config , project , lang , & cmd , own_source , false );
456479
457480 /* Add CFLAGS */
458481 add_flags (driver , config , project , lang , & cmd );
@@ -537,7 +560,7 @@ void generate_precompiled_header(
537560 add_optimization (driver , config , project , lang , & cmd , true);
538561
539562 /* Add -std option */
540- add_std (driver , config , project , lang , & cmd , true);
563+ add_std (driver , config , project , lang , & cmd , true, true );
541564
542565 /* Add CFLAGS */
543566 add_flags (driver , config , project , lang , & cmd );
0 commit comments