- /* setup default defines */
- add_flag(&cppflags_obst, "-U__WCHAR_TYPE__");
- add_flag(&cppflags_obst, "-D__WCHAR_TYPE__=%s",
- type_to_string(type_wchar_t));
- add_flag(&cppflags_obst, "-U__SIZE_TYPE__");
- add_flag(&cppflags_obst, "-D__SIZE_TYPE__=%s", type_to_string(type_size_t));
+ add_flag(&cppflags_obst, "-U__VERSION__");
+ add_flag(&cppflags_obst, "-D__VERSION__=\"%s\"", cparser_REVISION);
+
+ if (flags[0] != '\0') {
+ size_t len = strlen(flags);
+ obstack_1grow(&cppflags_obst, ' ');
+ obstack_grow(&cppflags_obst, flags, len);
+ }
+ obstack_1grow(&cppflags_obst, '\0');
+ common_flags = obstack_finish(&cppflags_obst);
+ }
+
+ assert(obstack_object_size(&cppflags_obst) == 0);
+
+ const char *preprocessor = getenv("CPARSER_PP");
+ if (preprocessor != NULL) {
+ obstack_printf(&cppflags_obst, "%s ", preprocessor);
+ } else {
+ if (target_triple != NULL)
+ obstack_printf(&cppflags_obst, "%s-", target_triple);
+ obstack_printf(&cppflags_obst, PREPROCESSOR);
+ }
+
+ switch (filetype) {
+ 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;
+ }
+ obstack_printf(&cppflags_obst, "%s", common_flags);