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