diff options
author | Joseph Myers <joseph@codesourcery.com> | 2011-05-21 12:34:29 +0100 |
---|---|---|
committer | Joseph Myers <jsm28@gcc.gnu.org> | 2011-05-21 12:34:29 +0100 |
commit | 86fa5de4fc7a62813adacf107775d3ebc9bb65c2 (patch) | |
tree | ae156dc216d9a4a2a65ebcd0ee31c34599b4e278 /gcc/optc-gen.awk | |
parent | c54a6b835913f97446cb0dfeb3c257009b61230e (diff) |
opt-read.awk: New.
* opt-read.awk: New. Split out of optc-gen.awk and opth-gen.awk.
* optc-gen.awk: Move common code to opt-read.awk.
* opth-gen.awk: Likewise.
* Makefile.in (options.c, s-options-h): Update to use
opt-read.awk.
From-SVN: r173995
Diffstat (limited to 'gcc/optc-gen.awk')
-rw-r--r-- | gcc/optc-gen.awk | 99 |
1 files changed, 4 insertions, 95 deletions
diff --git a/gcc/optc-gen.awk b/gcc/optc-gen.awk index 9408ced9c44..2c4df708801 100644 --- a/gcc/optc-gen.awk +++ b/gcc/optc-gen.awk @@ -21,104 +21,13 @@ # opt-gather.awk, combines the flags of duplicate options and generates a # C file. # -# This program uses functions from opt-functions.awk + +# This program uses functions from opt-functions.awk and code from +# opt-read.awk. # -# Usage: awk -f opt-functions.awk -f optc-gen.awk \ +# Usage: awk -f opt-functions.awk -f opt-read.awk -f optc-gen.awk \ # [-v header_name=header.h] < inputfile > options.c -BEGIN { - n_opts = 0 - n_langs = 0 - n_target_save = 0 - n_extra_vars = 0 - n_extra_target_vars = 0 - n_extra_c_includes = 0 - n_extra_h_includes = 0 - n_enums = 0 - quote = "\042" - comma = "," - FS=SUBSEP - # Default the name of header created from opth-gen.awk to options.h - if (header_name == "") header_name="options.h" -} - -# Collect the text and flags of each option into an array - { - if ($1 == "Language") { - langs[n_langs] = $2 - n_langs++; - } - else if ($1 == "TargetSave") { - # Make sure the declarations are put in source order - target_save_decl[n_target_save] = $2 - n_target_save++ - } - else if ($1 == "Variable") { - extra_vars[n_extra_vars] = $2 - n_extra_vars++ - } - else if ($1 == "TargetVariable") { - # Combination of TargetSave and Variable - extra_vars[n_extra_vars] = $2 - n_extra_vars++ - - var = $2 - sub(" *=.*", "", var) - orig_var = var - name = var - type = var - sub("^.*[ *]", "", name) - sub(" *" name "$", "", type) - target_save_decl[n_target_save] = type " x_" name - n_target_save++ - - extra_target_vars[n_extra_target_vars] = name - n_extra_target_vars++; - } - else if ($1 == "HeaderInclude") { - extra_h_includes[n_extra_h_includes++] = $2; - } - else if ($1 == "SourceInclude") { - extra_c_includes[n_extra_c_includes++] = $2; - } - else if ($1 == "Enum") { - props = $2 - name = opt_args("Name", props) - type = opt_args("Type", props) - unknown_error = opt_args("UnknownError", props) - enum_names[n_enums] = name - enum_type[name] = type - enum_index[name] = n_enums - enum_unknown_error[name] = unknown_error - enum_help[name] = $3 - n_enums++ - } - else if ($1 == "EnumValue") { - props = $2 - enum_name = opt_args("Enum", props) - string = opt_args("String", props) - value = opt_args("Value", props) - val_flags = "0" - val_flags = val_flags \ - test_flag("Canonical", props, "| CL_ENUM_CANONICAL") \ - test_flag("DriverOnly", props, "| CL_ENUM_DRIVER_ONLY") - enum_data[enum_name] = enum_data[enum_name] \ - " { " quote string quote ", " value ", " val_flags \ - " },\n" - } - else { - name = opt_args("Mask", $1) - if (name == "") { - opts[n_opts] = $1 - flags[n_opts] = $2 - help[n_opts] = $3 - for (i = 4; i <= NF; i++) - help[n_opts] = help[n_opts] " " $i - n_opts++; - } - } - } - # Dump that array of options into a C file. END { print "/* This file is auto-generated by optc-gen.awk. */" |