+ if (!ftepp)
+ return false;
+
+ memset(minor, 0, sizeof(minor));
+ memset(major, 0, sizeof(major));
+
+ /* set the right macro based on the selected standard */
+ ftepp_add_define(NULL, "GMQCC");
+ if (opts.standard == COMPILER_FTEQCC) {
+ ftepp_add_define(NULL, "__STD_FTEQCC__");
+ /* 1.00 */
+ major[0] = '"';
+ major[1] = '1';
+ major[2] = '"';
+
+ minor[0] = '"';
+ minor[1] = '0';
+ minor[2] = '"';
+ } else if (opts.standard == COMPILER_GMQCC) {
+ ftepp_add_define(NULL, "__STD_GMQCC__");
+ sprintf(major, "\"%d\"", GMQCC_VERSION_MAJOR);
+ sprintf(minor, "\"%d\"", GMQCC_VERSION_MINOR);
+ } else if (opts.standard == COMPILER_QCC) {
+ ftepp_add_define(NULL, "__STD_QCC__");
+ /* 1.0 */
+ major[0] = '"';
+ major[1] = '1';
+ major[2] = '"';
+
+ minor[0] = '"';
+ minor[1] = '0';
+ minor[2] = '"';
+ }
+
+ ftepp_add_macro("__STD_VERSION_MINOR__", minor);
+ ftepp_add_macro("__STD_VERSION_MAJOR__", major);
+
+ return true;
+}
+
+void ftepp_add_define(const char *source, const char *name)
+{
+ ppmacro *macro;
+ lex_ctx ctx = { "__builtin__", 0 };
+ ctx.file = source;
+ macro = ppmacro_new(ctx, name);
+ vec_push(ftepp->macros, macro);