1# Copyright (C) 2003,2004,2005,2006,2007,2008, 2010, 2011 2# Free Software Foundation, Inc. 3# Contributed by Kelley Cook, June 2004. 4# Original code from Neil Booth, May 2003. 5# 6# This program is free software; you can redistribute it and/or modify it 7# under the terms of the GNU General Public License as published by the 8# Free Software Foundation; either version 3, or (at your option) any 9# later version. 10# 11# This program is distributed in the hope that it will be useful, 12# but WITHOUT ANY WARRANTY; without even the implied warranty of 13# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14# GNU General Public License for more details. 15# 16# You should have received a copy of the GNU General Public License 17# along with this program; see the file COPYING3. If not see 18# <http://www.gnu.org/licenses/>. 19 20# Read in the option records generated from opt-gather.awk. 21 22BEGIN { 23 n_opts = 0 24 n_langs = 0 25 n_target_save = 0 26 n_extra_vars = 0 27 n_extra_target_vars = 0 28 n_extra_masks = 0 29 n_extra_c_includes = 0 30 n_extra_h_includes = 0 31 n_enums = 0 32 have_save = 0; 33 quote = "\042" 34 comma = "," 35 FS=SUBSEP 36 # Default the name of header created from opth-gen.awk to options.h 37 if (header_name == "") header_name="options.h" 38} 39 40# Collect the text and flags of each option into an array 41 { 42 if ($1 == "Language") { 43 langs[n_langs] = $2 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 flags[n_opts] = $2 112 help[n_opts] = $3 113 for (i = 4; i <= NF; i++) 114 help[n_opts] = help[n_opts] " " $i 115 n_opts++; 116 } 117 else { 118 extra_masks[n_extra_masks++] = name 119 } 120 } 121 } 122 123