1# Copyright (C) 2003-2013 Free Software Foundation, Inc. 2# Contributed by Kelley Cook, June 2004. 3# Original code from Neil Booth, May 2003. 4# 5# This program is free software; you can redistribute it and/or modify it 6# under the terms of the GNU General Public License as published by the 7# Free Software Foundation; either version 3, or (at your option) any 8# later version. 9# 10# This program is distributed in the hope that it will be useful, 11# but WITHOUT ANY WARRANTY; without even the implied warranty of 12# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13# GNU General Public License for more details. 14# 15# You should have received a copy of the GNU General Public License 16# along with this program; see the file COPYING3. If not see 17# <http://www.gnu.org/licenses/>. 18 19# Read in the option records generated from opt-gather.awk. 20 21BEGIN { 22 n_opts = 0 23 n_langs = 0 24 n_target_save = 0 25 n_extra_vars = 0 26 n_extra_target_vars = 0 27 n_extra_masks = 0 28 n_extra_c_includes = 0 29 n_extra_h_includes = 0 30 n_enums = 0 31 have_save = 0; 32 quote = "\042" 33 comma = "," 34 FS=SUBSEP 35 # Default the name of header created from opth-gen.awk to options.h 36 if (header_name == "") header_name="options.h" 37} 38 39# Collect the text and flags of each option into an array 40 { 41 if ($1 == "Language") { 42 langs[n_langs] = $2 43 lang_numbers[$2] = n_langs 44 n_langs++; 45 } 46 else if ($1 == "TargetSave") { 47 # Make sure the declarations are put in source order 48 target_save_decl[n_target_save] = $2 49 n_target_save++ 50 } 51 else if ($1 == "Variable") { 52 extra_vars[n_extra_vars] = $2 53 n_extra_vars++ 54 name = host_wide_int_var_name($2) 55 if (name != "") 56 host_wide_int[name] = "yes" 57 } 58 else if ($1 == "TargetVariable") { 59 # Combination of TargetSave and Variable 60 extra_vars[n_extra_vars] = $2 61 n_extra_vars++ 62 63 var = $2 64 sub(" *=.*", "", var) 65 orig_var = var 66 name = var 67 type = var 68 sub("^.*[ *]", "", name) 69 sub(" *" name "$", "", type) 70 target_save_decl[n_target_save] = type " x_" name 71 n_target_save++ 72 73 extra_target_vars[n_extra_target_vars] = name 74 n_extra_target_vars++ 75 } 76 else if ($1 == "HeaderInclude") { 77 extra_h_includes[n_extra_h_includes++] = $2; 78 } 79 else if ($1 == "SourceInclude") { 80 extra_c_includes[n_extra_c_includes++] = $2; 81 } 82 else if ($1 == "Enum") { 83 props = $2 84 name = opt_args("Name", props) 85 type = opt_args("Type", props) 86 unknown_error = opt_args("UnknownError", props) 87 enum_names[n_enums] = name 88 enum_type[name] = type 89 enum_index[name] = n_enums 90 enum_unknown_error[name] = unknown_error 91 enum_help[name] = $3 92 n_enums++ 93 } 94 else if ($1 == "EnumValue") { 95 props = $2 96 enum_name = opt_args("Enum", props) 97 string = opt_args("String", props) 98 value = opt_args("Value", props) 99 val_flags = "0" 100 val_flags = val_flags \ 101 test_flag("Canonical", props, "| CL_ENUM_CANONICAL") \ 102 test_flag("DriverOnly", props, "| CL_ENUM_DRIVER_ONLY") 103 enum_data[enum_name] = enum_data[enum_name] \ 104 " { " quote string quote ", " value ", " val_flags \ 105 " },\n" 106 } 107 else { 108 name = opt_args("Mask", $1) 109 if (name == "") { 110 opts[n_opts] = $1 111 opt_numbers[$1] = n_opts 112 flags[n_opts] = $2 113 help[n_opts] = $3 114 for (i = 4; i <= NF; i++) 115 help[n_opts] = help[n_opts] " " $i 116 n_opts++; 117 } 118 else { 119 extra_masks[n_extra_masks++] = name 120 } 121 } 122 } 123 124