2004-06-18 03:59:45 +02:00
|
|
|
# Copyright (C) 2003,2004 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
|
2005-06-25 04:02:01 +02:00
|
|
|
# Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
2004-06-18 03:59:45 +02:00
|
|
|
|
|
|
|
# This Awk script reads in the option records generated from
|
|
|
|
# opt-gather.awk, combines the flags of duplicat options and generates a
|
|
|
|
# C file.
|
|
|
|
#
|
|
|
|
# This program uses functions from opt-functions.awk
|
|
|
|
#
|
|
|
|
# Usage: awk -f opt-functions.awk -f optc-gen.awk \
|
|
|
|
# [-v header_name=header.h] < inputfile > options.c
|
|
|
|
|
|
|
|
BEGIN {
|
|
|
|
n_opts = 0
|
|
|
|
n_langs = 0
|
|
|
|
quote = "\042"
|
|
|
|
comma = ","
|
|
|
|
FS=SUBSEP
|
|
|
|
# Default the name of header created from opth-gen.awk to options.h
|
|
|
|
if (header_name == "") header_name="options.h"
|
|
|
|
}
|
|
|
|
|
|
|
|
# Collect the text and flags of each option into an array
|
|
|
|
{
|
|
|
|
if ($1 == "Language") {
|
|
|
|
langs[n_langs] = $2
|
|
|
|
n_langs++;
|
|
|
|
}
|
|
|
|
else {
|
optc-gen.awk: Handle stand-alone Mask records.
* optc-gen.awk: Handle stand-alone Mask records.
* opth-gen.awk: Likewise.
* doc/options.texi (Option file format): Document them.
* config.gcc (sparc-*-netbsdelf*, sparc-*-linux*, sparc64-*-freebsd*,
sparc64-*-linux*, sparc64-*-netbsd*): Add long-double-switch.opt.
(sparc64-*-openbsd*, sparc64-*-elf*): Add little-endian.opt.
* config/sparc/sparc.h (MASK_FPU, MASK_UNALIGNED_DOUBLES,
MASK_V8, MASK_SPARCLITE, MASK_SPARCLET, MASK_V9,
MASK_DEPRECATED_V8_INSNS, MASK_IMPURE_TEXT, MASK_APP_REGS,
MASK_HARD_QUAD, MASK_LITTLE_ENDIAN, MASK_PTR64, MASK_64BIT,
MASK_STACK_BIAS, MASK_FPU_SET, MASK_VIS, MASK_V8PLUS,
MASK_FASTER_STRUCTS, MASK_LONG_DOUBLE_128): Delete.
(TARGET_FPU, TARGET_UNALIGNED_DOUBLES, TARGET_V8, TARGET_SPARCLITE,
TARGET_SPARCLET, TARGET_V9, TARGET_DEPRECATED_V8_INSNS,
TARGET_IMPURE_TEXT, TARGET_APP_REGS, MASK_HARD_QUAD,
TARGET_LITTLE_ENDIAN, TARGET_PTR64, TARGET_64BIT, MASK_STACK_BIAS,
TARGET_FPU_SET, TARGET_VIS, TARGET_V8PLUS, TARGET_FASTER_STRUCTS,
TARGET_LONG_DOUBLE_128): Likewise.
(TARGET_SWITCHES, SUBTARGET_SWITCHES): Likewise.
(TARGET_OPTIONS, SUBTARGET_OPTIONS): Likewise.
* config/sparc/freebsd.h (SUBTARGET_SWITCHES): Likewise.
* config/sparc/linux.h (SUBTARGET_SWITCHES): Likewise.
* config/sparc/linux64.h (SUBTARGET_SWITCHES): Likewise.
* config/sparc/netbsd-elf.h (SUBTARGET_SWITCHES): Likewise.
* config/sparc/sp64-elf.h (SUBTARGET_SWITCHES): Likewise.
* config/sparc/sparc.c (fpu_option_set): New global.
(sparc_handle_option): New function.
(sparc_override_options): Test fpu_option_set.
(TARGET_DEFAULT_TARGET_FLAGS): Set to TARGET_DEFAULT.
(TARGET_HANDLE_OPTION): Set to sparc_handle_option.
* config/sparc/sparc.opt: New file.
* config/sparc/little-endian.opt: Likewise.
* config/sparc/long-double-switch.opt: Likewise.
From-SVN: r98078
2005-04-13 10:47:23 +02:00
|
|
|
name = opt_args("Mask", $1)
|
|
|
|
if (name == "") {
|
|
|
|
opts[n_opts] = $1
|
|
|
|
flags[n_opts] = $2
|
|
|
|
help[n_opts] = $3
|
|
|
|
n_opts++;
|
|
|
|
}
|
2004-06-18 03:59:45 +02:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
# Dump that array of options into a C file.
|
|
|
|
END {
|
|
|
|
print "/* This file is auto-generated by opts.sh. */"
|
|
|
|
print ""
|
2005-05-16 14:30:06 +02:00
|
|
|
n_headers = split(header_name, headers, " ")
|
|
|
|
for (i = 1; i <= n_headers; i++)
|
|
|
|
print "#include " quote headers[i] quote
|
2004-06-18 03:59:45 +02:00
|
|
|
print "#include " quote "opts.h" quote
|
2005-05-16 20:14:03 +02:00
|
|
|
print "#include " quote "intl.h" quote
|
2004-06-18 03:59:45 +02:00
|
|
|
print ""
|
2006-05-17 07:06:52 +02:00
|
|
|
print "#ifdef GCC_DRIVER"
|
2006-05-16 16:27:18 +02:00
|
|
|
print "int target_flags;"
|
2006-05-17 07:06:52 +02:00
|
|
|
print "#endif /* GCC_DRIVER */"
|
2006-05-16 16:27:18 +02:00
|
|
|
print ""
|
2004-06-18 03:59:45 +02:00
|
|
|
|
|
|
|
for (i = 0; i < n_opts; i++) {
|
|
|
|
name = var_name(flags[i]);
|
|
|
|
if (name == "")
|
|
|
|
continue;
|
|
|
|
|
2006-05-16 16:27:18 +02:00
|
|
|
if (flag_set_p("VarExists", flags[i])) {
|
|
|
|
# Need it for the gcc driver.
|
|
|
|
if (name in var_seen)
|
|
|
|
continue;
|
|
|
|
init = ""
|
2006-05-17 07:06:52 +02:00
|
|
|
gcc_driver = 1
|
2006-05-16 16:27:18 +02:00
|
|
|
}
|
|
|
|
else {
|
|
|
|
init = opt_args("Init", flags[i])
|
|
|
|
if (init != "")
|
|
|
|
init = " = " init;
|
|
|
|
else if (name in var_seen)
|
|
|
|
continue;
|
2006-05-17 07:06:52 +02:00
|
|
|
gcc_driver = 0
|
2006-05-16 16:27:18 +02:00
|
|
|
}
|
2005-03-30 08:24:35 +02:00
|
|
|
|
2006-05-17 07:06:52 +02:00
|
|
|
if (gcc_driver == 1)
|
|
|
|
print "#ifdef GCC_DRIVER"
|
opt-functions.awk (var_type): New function.
* opt-functions.awk (var_type): New function.
(var_set): Use CLVC_STRING if var_type returns "const char *".
* opth-gen.awk: Use var_type to find out the types of variables.
Don't print comments above each "extern" definition.
* optc-gen.awk: Use var_type in the same way.
* opts.h (cl_var_cond): Rename to...
(cl_var_type): ...this. Add CLVC_STRING.
(cl_option): Make "flag_var" a "void *" pointer. Replace "var_cond"
with "var_type".
* opts.c (handle_option, option_enabled): Update after above name
change. Cast flag_var before using it. Handle CLVC_STRING.
* config/alpha/alpha.h (alpha_tls_size): Delete.
* config/alpha/alpha.c (alpha_tls_size, alpha_cpu_string)
(alpha_tune_string, alpha_tp_string, alpha_fprm_string)
(alpha_fptm_string, alpha_mlat_string): Delete.
(alpha_handle_option): Don't set the above variables here. Use the
integer argument to check the validity of -mtls-size=.
* config/alpha/alpha.opt (mcpu=, mtune=, mfp-rounding-mode=)
(mfp-trap-mode=, mtrap-precision=, mmemory-latency=): Add Var()s.
(mtls-size=): Likewise. Convert to a UInteger and initialize the
variable to 32.
* config/arc/arc.c (arc_cpu_string, arc_text_string)
(arc_data_string, arc_rodata_string): Delete.
(arc_handle_option): Don't set the above variables here.
* config/arc/arc.opt (mcpu=, mtext=, mdata=, mrodata=): Add Var()s
and initialize them.
* config/arm/arm.c (target_fpu_name, target_fpe_name)
(target_float_abi_name, target_abi_name, structure_size_string)
(arm_pic_register_string): Delete.
(arm_handle_option): Don't set the above variables here, except
in the handling of -mhard-float and -msoft-float.
* config/arm/arm.opt (mabi=, mfloat-abi=, mfp=, mfpe=, mfpu=)
(mpic-register=, mstructure-size-boundary=): Add Var()s.
* config/avr/avr.c (avr_init_stack, avr_mcu_name, TARGET_HANDLE_OPTION)
(avr_handle_option): Delete.
* config/avr/avr.opt (mmcu=, minit-stack=): Add Var()s and initialize
them.
* config/bfin/bfin.c (bfin_library_id): Delete.
(bfin_handle_option): Don't set it.
* config/bfin/bfin.opt (mshared-library-id=): Add Var().
* config/c4x/c4x.h (c4x_rpts_cycles): Delete.
* config/c4x/c4x.c (c4x_rpts_cycles): Delete.
(c4x_handle_option): Don't set c4x_rpts_cycles here.
* config/c4x/c4x.opt (mrpts=): Add Var().
* config/cris/aout.h (CRIS_SUBTARGET_HANDLE_OPTION): Don't set
cris_elinux_stacksize_str here.
* config/cris/aout.opt (melinux-stacksize=): Add Var().
* config/cris/cris.h (cris_max_stackframe_str, cris_cpu_str)
(cris_tune_str, cris_elinux_stacksize_str): Delete.
* config/cris/cris.c (cris_max_stackframe_str, cris_cpu_str)
(cris_tune_str, cris_elinux_stacksize_str): Delete.
(cris_handle_option): Don't set the above variables here.
* config/cris/cris.opt (mcpu=, march=, mtune=, mmax-stackframe=)
(max-stackframe=): Add Var()s.
* config/i386/i386.h (ix86_tune_string, ix86_arch_string): Delete.
* config/i386/i386.c (ix86_cmodel_string, ix86_asm_string)
(ix86_tls_dialect_string, ix86_tune_string, ix86_arch_string)
(ix86_fpmath_string, ix86_regparm_string, ix86_align_loops_string)
(ix86_align_jumps_string, ix86_preferred_stack_boundary_string)
(ix86_branch_cost_string, ix86_align_funcs_string): Delete.
(ix86_handle_option): Don't set the above variables here.
* config/i386/i386.opt (malign-functions=, malign-jumps=)
(malign-loops=, march=, masm=, mbranch-cost=, mcmodel=, mfpmath=)
(mpreferred-stack-boundary=, mregparm=, mtls-dialect=, mtune=): Add
Var()s.
* config/ia64/ia64.h (ia64_tls_size): Delete.
* config/ia64/ia64.c (ia64_tls_size): Delete.
(ia64_handle_option): Treat -mtls-size= as a UInteger option,
reading the integer argument from the "value" parameter. Don't
set ia64_tls_size here.
* config/ia64/ia64.opt (mtls-size=): Turn into a UInteger option.
Add Var() and Init().
* config/m32r/m32r.h (m32r_cache_flush_func): Delete.
(m32r_cache_flush_trap): Delete.
* config/m32r/m32r.c (m32r_cache_flush_func): Delete.
(m32r_cache_flush_trap): Delete.
(m32r_handle_option): Don't set the above variables when handling
-mflush-func= and -mflush-trap=.
* config/m32r/m32r.opt (-mflush-func=, -mflush-trap=): Add Var()s
and Init()s.
* config/mips/mips.h (mips_cache_flush_func): Delete.
* config/mips/mips.c (mips_arch_string, mips_tune_string)
(mips_cache_flush_func): Delete.
(mips_handle_option): Don't set the above variables when handling
-march=, -mtune= and -mflush-func=.
* config/mips/mips.opt (march=, mflush-func=, mtune=): Add Var()s.
* config/s390/s390.c (s390_arch_string): Delete.
(s390_handle_option): Don't set it here.
* config/s390/s390.opt (march=): Add Var().
* config/sparc/sparc.h (sparc_cmodel_string): Delete.
* config/sparc/sparc.c (sparc_cmodel_string): Delete.
(sparc_handle_option): Don't set it here.
* config/sparc/sparc.opt (mcmodel=): Add Var().
From-SVN: r100185
2005-05-26 07:28:04 +02:00
|
|
|
print "/* Set by -" opts[i] "."
|
|
|
|
print " " help[i] " */"
|
|
|
|
print var_type(flags[i]) name init ";"
|
2006-05-17 07:06:52 +02:00
|
|
|
if (gcc_driver == 1)
|
|
|
|
print "#endif /* GCC_DRIVER */"
|
opt-functions.awk (var_type): New function.
* opt-functions.awk (var_type): New function.
(var_set): Use CLVC_STRING if var_type returns "const char *".
* opth-gen.awk: Use var_type to find out the types of variables.
Don't print comments above each "extern" definition.
* optc-gen.awk: Use var_type in the same way.
* opts.h (cl_var_cond): Rename to...
(cl_var_type): ...this. Add CLVC_STRING.
(cl_option): Make "flag_var" a "void *" pointer. Replace "var_cond"
with "var_type".
* opts.c (handle_option, option_enabled): Update after above name
change. Cast flag_var before using it. Handle CLVC_STRING.
* config/alpha/alpha.h (alpha_tls_size): Delete.
* config/alpha/alpha.c (alpha_tls_size, alpha_cpu_string)
(alpha_tune_string, alpha_tp_string, alpha_fprm_string)
(alpha_fptm_string, alpha_mlat_string): Delete.
(alpha_handle_option): Don't set the above variables here. Use the
integer argument to check the validity of -mtls-size=.
* config/alpha/alpha.opt (mcpu=, mtune=, mfp-rounding-mode=)
(mfp-trap-mode=, mtrap-precision=, mmemory-latency=): Add Var()s.
(mtls-size=): Likewise. Convert to a UInteger and initialize the
variable to 32.
* config/arc/arc.c (arc_cpu_string, arc_text_string)
(arc_data_string, arc_rodata_string): Delete.
(arc_handle_option): Don't set the above variables here.
* config/arc/arc.opt (mcpu=, mtext=, mdata=, mrodata=): Add Var()s
and initialize them.
* config/arm/arm.c (target_fpu_name, target_fpe_name)
(target_float_abi_name, target_abi_name, structure_size_string)
(arm_pic_register_string): Delete.
(arm_handle_option): Don't set the above variables here, except
in the handling of -mhard-float and -msoft-float.
* config/arm/arm.opt (mabi=, mfloat-abi=, mfp=, mfpe=, mfpu=)
(mpic-register=, mstructure-size-boundary=): Add Var()s.
* config/avr/avr.c (avr_init_stack, avr_mcu_name, TARGET_HANDLE_OPTION)
(avr_handle_option): Delete.
* config/avr/avr.opt (mmcu=, minit-stack=): Add Var()s and initialize
them.
* config/bfin/bfin.c (bfin_library_id): Delete.
(bfin_handle_option): Don't set it.
* config/bfin/bfin.opt (mshared-library-id=): Add Var().
* config/c4x/c4x.h (c4x_rpts_cycles): Delete.
* config/c4x/c4x.c (c4x_rpts_cycles): Delete.
(c4x_handle_option): Don't set c4x_rpts_cycles here.
* config/c4x/c4x.opt (mrpts=): Add Var().
* config/cris/aout.h (CRIS_SUBTARGET_HANDLE_OPTION): Don't set
cris_elinux_stacksize_str here.
* config/cris/aout.opt (melinux-stacksize=): Add Var().
* config/cris/cris.h (cris_max_stackframe_str, cris_cpu_str)
(cris_tune_str, cris_elinux_stacksize_str): Delete.
* config/cris/cris.c (cris_max_stackframe_str, cris_cpu_str)
(cris_tune_str, cris_elinux_stacksize_str): Delete.
(cris_handle_option): Don't set the above variables here.
* config/cris/cris.opt (mcpu=, march=, mtune=, mmax-stackframe=)
(max-stackframe=): Add Var()s.
* config/i386/i386.h (ix86_tune_string, ix86_arch_string): Delete.
* config/i386/i386.c (ix86_cmodel_string, ix86_asm_string)
(ix86_tls_dialect_string, ix86_tune_string, ix86_arch_string)
(ix86_fpmath_string, ix86_regparm_string, ix86_align_loops_string)
(ix86_align_jumps_string, ix86_preferred_stack_boundary_string)
(ix86_branch_cost_string, ix86_align_funcs_string): Delete.
(ix86_handle_option): Don't set the above variables here.
* config/i386/i386.opt (malign-functions=, malign-jumps=)
(malign-loops=, march=, masm=, mbranch-cost=, mcmodel=, mfpmath=)
(mpreferred-stack-boundary=, mregparm=, mtls-dialect=, mtune=): Add
Var()s.
* config/ia64/ia64.h (ia64_tls_size): Delete.
* config/ia64/ia64.c (ia64_tls_size): Delete.
(ia64_handle_option): Treat -mtls-size= as a UInteger option,
reading the integer argument from the "value" parameter. Don't
set ia64_tls_size here.
* config/ia64/ia64.opt (mtls-size=): Turn into a UInteger option.
Add Var() and Init().
* config/m32r/m32r.h (m32r_cache_flush_func): Delete.
(m32r_cache_flush_trap): Delete.
* config/m32r/m32r.c (m32r_cache_flush_func): Delete.
(m32r_cache_flush_trap): Delete.
(m32r_handle_option): Don't set the above variables when handling
-mflush-func= and -mflush-trap=.
* config/m32r/m32r.opt (-mflush-func=, -mflush-trap=): Add Var()s
and Init()s.
* config/mips/mips.h (mips_cache_flush_func): Delete.
* config/mips/mips.c (mips_arch_string, mips_tune_string)
(mips_cache_flush_func): Delete.
(mips_handle_option): Don't set the above variables when handling
-march=, -mtune= and -mflush-func=.
* config/mips/mips.opt (march=, mflush-func=, mtune=): Add Var()s.
* config/s390/s390.c (s390_arch_string): Delete.
(s390_handle_option): Don't set it here.
* config/s390/s390.opt (march=): Add Var().
* config/sparc/sparc.h (sparc_cmodel_string): Delete.
* config/sparc/sparc.c (sparc_cmodel_string): Delete.
(sparc_handle_option): Don't set it here.
* config/sparc/sparc.opt (mcmodel=): Add Var().
From-SVN: r100185
2005-05-26 07:28:04 +02:00
|
|
|
print ""
|
2005-04-28 22:52:12 +02:00
|
|
|
|
|
|
|
var_seen[name] = 1;
|
2005-03-30 08:24:35 +02:00
|
|
|
}
|
2004-06-18 03:59:45 +02:00
|
|
|
|
2005-06-14 16:37:49 +02:00
|
|
|
print ""
|
|
|
|
print "/* Local state variables. */"
|
|
|
|
for (i = 0; i < n_opts; i++) {
|
|
|
|
name = static_var(opts[i], flags[i]);
|
|
|
|
if (name != "")
|
|
|
|
print "static " var_type(flags[i]) name ";"
|
|
|
|
}
|
|
|
|
print ""
|
2004-06-18 03:59:45 +02:00
|
|
|
|
|
|
|
print "const char * const lang_names[] =\n{"
|
|
|
|
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 " " quote langs[i] quote ","
|
|
|
|
}
|
|
|
|
|
|
|
|
print " 0\n};\n"
|
|
|
|
print "const unsigned int cl_options_count = N_OPTS;\n"
|
|
|
|
|
|
|
|
print "const struct cl_option cl_options[] =\n{"
|
|
|
|
|
2006-05-16 16:27:18 +02:00
|
|
|
j = 0
|
|
|
|
for (i = 0; i < n_opts; i++) {
|
2004-06-18 03:59:45 +02:00
|
|
|
back_chain[i] = "N_OPTS";
|
2006-05-16 16:27:18 +02:00
|
|
|
indices[opts[i]] = j;
|
|
|
|
# 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++;
|
|
|
|
back_chain[i] = "N_OPTS";
|
|
|
|
indices[opts[i]] = j;
|
|
|
|
}
|
|
|
|
j++;
|
|
|
|
}
|
2004-06-18 03:59:45 +02:00
|
|
|
|
2005-05-15 10:10:10 +02:00
|
|
|
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++;
|
|
|
|
}
|
2004-06-18 03:59:45 +02:00
|
|
|
|
2005-05-15 10:10:10 +02:00
|
|
|
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;
|
2004-06-18 03:59:45 +02:00
|
|
|
}
|
2005-05-15 10:10:10 +02:00
|
|
|
}
|
2004-06-18 03:59:45 +02:00
|
|
|
|
2005-05-15 10:10:10 +02:00
|
|
|
s = substr(" ", length (opts[i]))
|
|
|
|
if (i + 1 == n_opts)
|
|
|
|
comma = ""
|
2004-06-18 03:59:45 +02:00
|
|
|
|
2005-05-15 10:10:10 +02:00
|
|
|
if (help[i] == "")
|
|
|
|
hlp = "0"
|
|
|
|
else
|
|
|
|
hlp = quote help[i] quote;
|
2004-06-18 03:59:45 +02:00
|
|
|
|
2006-05-16 16:27:18 +02:00
|
|
|
neg = opt_args("Negative", flags[i]);
|
|
|
|
if (neg != "")
|
|
|
|
idx = indices[neg]
|
|
|
|
else {
|
|
|
|
if (flag_set_p("RejectNegative", flags[i]))
|
|
|
|
idx = -1;
|
|
|
|
else {
|
|
|
|
if (opts[i] ~ "^[Wfm]")
|
|
|
|
idx = indices[opts[i]];
|
|
|
|
else
|
|
|
|
idx = -1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
printf(" { %c-%s%c,\n %s,\n %s, %u, %d,\n",
|
|
|
|
quote, opts[i], quote, hlp, back_chain[i], len, idx)
|
2005-05-16 14:30:06 +02:00
|
|
|
condition = opt_args("Condition", flags[i])
|
|
|
|
cl_flags = switch_flags(flags[i])
|
|
|
|
if (condition != "")
|
|
|
|
printf("#if %s\n" \
|
|
|
|
" %s,\n" \
|
|
|
|
"#else\n" \
|
|
|
|
" CL_DISABLED,\n" \
|
|
|
|
"#endif\n",
|
|
|
|
condition, cl_flags, cl_flags)
|
|
|
|
else
|
|
|
|
printf(" %s,\n", cl_flags)
|
2005-06-14 16:37:49 +02:00
|
|
|
printf(" %s, %s }%s\n", var_ref(opts[i], flags[i]),
|
|
|
|
var_set(flags[i]), comma)
|
2004-06-18 03:59:45 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
print "};"
|
|
|
|
}
|