#  Copyright (C) 2003,2004,2005,2006 Free Software Foundation, Inc.
#  Contributed by Kelley Cook, June 2004.
#  Original code from Neil Booth, May 2003.
#
# This program is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by the
# Free Software Foundation; either version 2, or (at your option) any
# later version.
# 
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
# 
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.

# This Awk script reads in the option records generated from 
# opt-gather.awk, combines the flags of duplicate options and generates a
# C header file.
#
# This program uses functions from opt-functions.awk
# Usage: awk -f opt-functions.awk -f opth-gen.awk < inputfile > options.h

BEGIN {
	n_opts = 0
	n_langs = 0
	n_extra_masks = 0
	quote = "\042"
	comma = ","
	FS=SUBSEP
}

# Collect the text and flags of each option into an array
	{
		if ($1 == "Language") {
			langs[n_langs] = $2
			n_langs++;
		}
		else {
			name = opt_args("Mask", $1)
			if (name == "") {
				opts[n_opts]  = $1
				flags[n_opts] = $2
				help[n_opts]  = $3
				n_opts++;
			}
			else {
				extra_masks[n_extra_masks++] = name
			}
		}
	}

# Dump out an enumeration into a .h file.
# Combine the flags of duplicate options.
END {
# APPLE LOCAL optimization pragmas 3124235/3420242
print "/* This file is auto-generated by opth-gen.awk.  */"
print ""
print "#ifndef OPTIONS_H"
print "#define OPTIONS_H"
print ""
# APPLE LOCAL begin optimization pragmas 3124235/3420242
# libgcc2 does not use anything here (it better not), and
# doesn't include HOST_BITS_PER_INT, so won't compile if
# we include the contents normally.
print "#if !defined(IN_LIBGCC2) && !defined(IN_TARGET_LIBS)"
# APPLE LOCAL end optimization pragmas 3124235/3420242
print "extern int target_flags;"
print ""

for (i = 0; i < n_opts; i++) {
	name = var_name(flags[i]);
	if (name == "")
		continue;

# APPLE LOCAL begin optimization pragmas 3124235/3420242
	if (!flag_set_p("PerFunc", flags[i])) {
	print "extern " var_type(flags[i]) name ";"
	} else {
	    if (flag_set_p("VarExists"))
		continue;
	    print "#define " name " (cl_pf_opts.fld_" name ")"
	}
}
print ""

for (i = 0; i < n_opts; i++) {
	name = opt_args("Mask", flags[i])
	vname = var_name(flags[i])
	mask = "MASK_"
	if (vname != "") {
		mask = "OPTION_MASK_"
	}
	if (name != "" && !flag_set_p("MaskExists", flags[i]))
		print "#define " mask name " (1 << " masknum[vname]++ ")"
}
for (i = 0; i < n_extra_masks; i++) {
	print "#define MASK_" extra_masks[i] " (1 << " masknum[""]++ ")"
}

# APPLE LOCAL begin added
print "/* Nonzero means do optimizations.  -O."
print "   Particular numeric values stand for particular amounts of optimization;"
print "   thus, -O2 stores 2 here.  However, the optimizations beyond the basic"
print "   ones are not controlled directly by this variable.  Instead, they are"
print "   controlled by individual `flag_...' variables that are defaulted"
print "   based on this variable.  */"

print "#define optimize (cl_pf_opts.fld_optimize)"

print ""
print "/* Nonzero means optimize for size.  -Os."
print "   The only valid values are zero and nonzero. When optimize_size is"
print "   nonzero, optimize defaults to 2, but certain individual code"
print "   bloating optimizations are disabled.  */"

print "#define optimize_size (cl_pf_opts.fld_optimize_size)"
print ""

print "/* Flags which may be changed per function.  */"
count = 0
print "struct cl_perfunc_opts {"

for (i = 0; i < n_opts; i++) {
	name = var_name(flags[i]);
	if (name == "")
	    continue;
	if (flag_set_p("VarExists", flags[i]))
	    continue;
	if (!flag_set_p("PerFunc", flags[i]))
	    continue;
	if (!flag_set_p("VarUint", flags[i]))
	  {
	    print "  unsigned int fld_" name ":1;"
	    count++
	  }
}

print "  unsigned int fld_optimize_size:1;"
count++

# Explicit padding so there are no holes, which might be
# handled strangely by the hashing and comparison functions.
# FIXME:  A full word of padding is used in the case where we're
# already at a word boundary; this is currently irrelevant.

print "  unsigned int padding: (HOST_BITS_PER_INT-("count"-(" count "/HOST_BITS_PER_INT)*HOST_BITS_PER_INT));"

for (i = 0; i < n_opts; i++) {
	name = var_name(flags[i]);
	if (name == "")
	    continue;
	if (flag_set_p("VarExists", flags[i]))
	    continue;
	if (!flag_set_p("PerFunc", flags[i]))
	    continue;
	if (flag_set_p("VarUint", flags[i]))
	    print "  int fld_" name ";"
}

print "  int fld_optimize;"
print "};"
print ""
print "/* cl_pf_opts changes dynamically as pragmas are handled.  */"
print "extern struct cl_perfunc_opts cl_pf_opts;"
print "/* " quote "raw" quote " options are before command line parsing. */"
print "extern struct cl_perfunc_opts cl_pf_opts_raw;"
print "/* " quote "cooked" quote " options are after command line parsing. */"
print "extern struct cl_perfunc_opts cl_pf_opts_cooked;"

for (i = 0; i < n_opts; i++) {
	name = var_name(flags[i]);
	if (name == "")
	    continue;
	if (flag_set_p("VarExists", flags[i]))
	    continue;
	if (!flag_set_p("PerFunc", flags[i]))
	    continue;
	if (!flag_set_p("VarUint", flags[i]))
	    print "extern int cl_opt_access_func_" name " (int, unsigned int);"
}

print "extern int cl_opt_access_func_optimize_size (int, unsigned int);"
# APPLE LOCAL end added
# APPLE LOCAL end optimization pragmas 3124235/3420242

for (var in masknum) {
	if (masknum[var] > 31) {
		if (var == "")
			print "#error too many target masks"
		else
			print "#error too many masks for " var
	}
}
print ""

for (i = 0; i < n_opts; i++) {
	name = opt_args("Mask", flags[i])
	vname = var_name(flags[i])
	macro = "OPTION_"
	mask = "OPTION_MASK_"
	if (vname == "") {
		vname = "target_flags"
		macro = "TARGET_"
		mask = "MASK_"
	}
	if (name != "" && !flag_set_p("MaskExists", flags[i]))
		print "#define " macro name \
		      " ((" vname " & " mask name ") != 0)"
}
for (i = 0; i < n_extra_masks; i++) {
	print "#define TARGET_" extra_masks[i] \
	      " ((target_flags & MASK_" extra_masks[i] ") != 0)"
}
print ""

for (i = 0; i < n_opts; i++) {
	opt = opt_args("InverseMask", flags[i])
	if (opt ~ ",") {
		vname = var_name(flags[i])
		macro = "OPTION_"
		mask = "OPTION_MASK_"
		if (vname == "") {
			vname = "target_flags"
			macro = "TARGET_"
			mask = "MASK_"
		}
		print "#define " macro nth_arg(1, opt) \
		      " ((" vname " & " mask nth_arg(0, opt) ") == 0)"
	}
}
print ""

for (i = 0; i < n_langs; i++) {
	macros[i] = "CL_" langs[i]
	gsub( "[^A-Za-z0-9_]", "X", macros[i] )
	s = substr("            ", length (macros[i]))
	print "#define " macros[i] s " (1 << " i ")"
    }
# APPLE LOCAL iframework for 4.3 4094959
print "#define CL_LANG_ALL   ((1 << " n_langs ") - 1)"

print ""
print "enum opt_code"
print "{"
	
for (i = 0; i < n_opts; i++)
	back_chain[i] = "N_OPTS";

for (i = 0; i < n_opts; i++) {
	# Combine the flags of identical switches.  Switches
	# appear many times if they are handled by many front
	# ends, for example.
	while( i + 1 != n_opts && opts[i] == opts[i + 1] ) {
		flags[i + 1] = flags[i] " " flags[i + 1];
		i++;
	}

	len = length (opts[i]);
	enum = "OPT_" opts[i]
	if (opts[i] == "finline-limit=")
		enum = enum "eq"
	gsub ("[^A-Za-z0-9]", "_", enum)

	# If this switch takes joined arguments, back-chain all
	# subsequent switches to it for which it is a prefix.  If
	# a later switch S is a longer prefix of a switch T, T
	# will be back-chained to S in a later iteration of this
	# for() loop, which is what we want.
	if (flag_set_p("Joined.*", flags[i])) {
		for (j = i + 1; j < n_opts; j++) {
			if (substr (opts[j], 1, len) != opts[i])
				break;
			back_chain[j] = enum;
		}
	}

	s = substr("                                     ", length (opts[i]))
	if (i + 1 == n_opts)
		comma = ""

	if (help[i] == "")
		hlp = "0"
	else
		hlp = "N_(\"" help[i] "\")";

	print "  " enum "," s "/* -" opts[i] " */"
}

print "  N_OPTS"
print "};"
print ""
# APPLE LOCAL optimization pragmas 3124235/3420242
print "#endif /* IN_LIBGCC2 || IN_TARGET_LIBS */"
print "#endif /* OPTIONS_H */"
}
