- case FILETYPE_C:
- add_flag(&cppflags_obst, "-std=c99");
- break;
- case FILETYPE_CXX:
- add_flag(&cppflags_obst, "-std=c++98");
- break;
- case FILETYPE_ASSEMBLER:
- add_flag(&cppflags_obst, "-x");
- add_flag(&cppflags_obst, "assembler-with-cpp");
- break;
- default:
- break;
+ case FILETYPE_C: lang = "c"; break;
+ case FILETYPE_CXX: lang = "c++"; break;
+ case FILETYPE_ASSEMBLER: lang = "assembler-with-cpp"; break;
+ default: lang = NULL; break;
+ }
+ if (lang)
+ add_flag(&cppflags_obst, "-x%s", lang);
+
+ char const *std = NULL;
+ switch (standard) {
+ case STANDARD_C89: std = "-std=c89"; break;
+ case STANDARD_C90: std = "-std=iso9899:199409"; break;
+ case STANDARD_C99: std = "-std=c99"; break;
+ case STANDARD_GNU89: std = "-std=gnu89"; break;
+ case STANDARD_GNU99: std = "-std=gnu99"; break;
+ case STANDARD_CXX98: std = "-std=c++98"; break;
+ case STANDARD_GNUXX98: std = "-std=gnu++98"; break;
+ case STANDARD_DEFAULT: panic("invalid standard");