Home | History | Annotate | Line # | Download | only in gcc
      1  1.10  mrg #  Copyright (C) 2003-2022 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.10  mrg 			extra_target_var_types[n_extra_target_vars] = type
     75   1.1  mrg 			n_extra_target_vars++
     76   1.1  mrg 		}
     77   1.1  mrg 		else if ($1 == "HeaderInclude") {
     78   1.1  mrg 			extra_h_includes[n_extra_h_includes++] = $2;
     79   1.1  mrg 		}
     80   1.1  mrg 		else if ($1 == "SourceInclude")  {
     81   1.1  mrg 			extra_c_includes[n_extra_c_includes++] = $2;
     82   1.1  mrg 		}
     83   1.1  mrg 		else if ($1 == "Enum") {
     84   1.1  mrg 			props = $2
     85  1.10  mrg 			name = opt_args_non_empty("Name", props)
     86  1.10  mrg 			type = opt_args_non_empty("Type", props)
     87   1.1  mrg 			unknown_error = opt_args("UnknownError", props)
     88   1.1  mrg 			enum_names[n_enums] = name
     89   1.1  mrg 			enum_type[name] = type
     90   1.1  mrg 			enum_index[name] = n_enums
     91   1.1  mrg 			enum_unknown_error[name] = unknown_error
     92   1.1  mrg 			enum_help[name] = $3
     93   1.1  mrg 			n_enums++
     94   1.1  mrg 		}
     95   1.1  mrg 		else if ($1 == "EnumValue")  {
     96   1.1  mrg 			props = $2
     97  1.10  mrg 			enum_name = opt_args_non_empty("Enum", props)
     98  1.10  mrg 			string = opt_args_non_empty("String", props)
     99  1.10  mrg 			value = opt_args_non_empty("Value", props)
    100  1.10  mrg 			set = opt_args("Set", props)
    101   1.1  mrg 			val_flags = "0"
    102   1.1  mrg 			val_flags = val_flags \
    103   1.1  mrg 			  test_flag("Canonical", props, "| CL_ENUM_CANONICAL") \
    104   1.1  mrg 			  test_flag("DriverOnly", props, "| CL_ENUM_DRIVER_ONLY")
    105  1.10  mrg 			if (set != "")
    106  1.10  mrg 				val_flags = val_flags "| ((" set \
    107  1.10  mrg 					    ") << CL_ENUM_SET_SHIFT)"
    108   1.1  mrg 			enum_data[enum_name] = enum_data[enum_name] \
    109   1.1  mrg 			  "  { " quote string quote ", " value ", " val_flags \
    110   1.1  mrg 			  " },\n"
    111   1.1  mrg 		}
    112   1.1  mrg 		else {
    113   1.1  mrg 			name = opt_args("Mask", $1)
    114   1.1  mrg 			if (name == "") {
    115   1.1  mrg 				opts[n_opts]  = $1
    116   1.1  mrg 				opt_numbers[$1] = n_opts
    117   1.1  mrg 				flags[n_opts] = $2
    118   1.1  mrg 				help[n_opts]  = $3
    119   1.1  mrg 				for (i = 4; i <= NF; i++)
    120   1.1  mrg 					help[n_opts] = help[n_opts] " " $i
    121   1.1  mrg 				n_opts++;
    122   1.1  mrg 			}
    123   1.1  mrg 			else {
    124   1.1  mrg 				extra_masks[n_extra_masks++] = name
    125   1.1  mrg 			}
    126   1.1  mrg 		}
    127   1.1  mrg 	}
    128   1.1  mrg 
    129