Home | History | Annotate | Line # | Download | only in gcc
opt-read.awk revision 1.1.1.8
      1  1.1.1.8  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.1.1.8  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.1.1.8  mrg 			name = opt_args_non_empty("Name", props)
     86  1.1.1.8  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.1.1.8  mrg 			enum_name = opt_args_non_empty("Enum", props)
     98  1.1.1.8  mrg 			string = opt_args_non_empty("String", props)
     99  1.1.1.8  mrg 			value = opt_args_non_empty("Value", props)
    100  1.1.1.8  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.1.1.8  mrg 			if (set != "")
    106  1.1.1.8  mrg 				val_flags = val_flags "| ((" set \
    107  1.1.1.8  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