From 88e1d04c8f16d8ab79bb8e15d5e4d1f06928c8ab Mon Sep 17 00:00:00 2001 From: Sebastian Hack Date: Thu, 24 Nov 2005 17:09:04 +0000 Subject: [PATCH] Added options handlingof libcore [r6986] --- ir/common/firm.c | 34 +++++++++++++++++++++++++++++++++- ir/common/firm.h | 25 +++++++++++++++++++++++++ 2 files changed, 58 insertions(+), 1 deletion(-) diff --git a/ir/common/firm.c b/ir/common/firm.c index 21d97477e..e91e324a9 100644 --- a/ir/common/firm.c +++ b/ir/common/firm.c @@ -20,8 +20,13 @@ # include +#ifdef WITH_LIBCORE +#include +#endif + # include "ident_t.h" # include "firm.h" +# include "irflag_t.h" # include "mangle.h" /* init functions are not public */ # include "tv_t.h" @@ -42,6 +47,16 @@ # include "iredges_t.h" # include "debugger.h" +#ifdef WITH_LIBCORE +lc_opt_entry_t *firm_opt_get_root(void) +{ + static lc_opt_entry_t *grp = NULL; + if(!grp) + grp = lc_opt_get_grp(lc_opt_root_grp(), "firm"); + return grp; +} +#endif + void init_firm(const firm_parameter_t *param) { @@ -61,6 +76,8 @@ init_firm(const firm_parameter_t *param) memcpy(&def_params, param, size); } + /* initialize firm flags */ + firm_init_flags(); /* initialize all ident stuff */ init_ident(def_params.id_if, 1024); /* initialize Firm hooks */ @@ -111,8 +128,23 @@ init_firm(const firm_parameter_t *param) /* integrated debugger extension */ firm_init_debugger(); #endif -} +#ifdef WITH_LIBCORE + /* Process command line and ini file. */ + + if(def_params.ini_file) { + FILE *f = fopen(def_params.ini_file, "rt"); + if(f) { + lc_opt_from_file(def_params.ini_file, f, NULL); + fclose(f); + } + } + + lc_opt_from_argv(firm_opt_get_root(), def_params.arg_prefix, + def_params.argc, def_params.argv, NULL); + +#endif +} void free_firm(void) { int i; diff --git a/ir/common/firm.h b/ir/common/firm.h index 03ec5144a..0bfeb7c73 100644 --- a/ir/common/firm.h +++ b/ir/common/firm.h @@ -186,6 +186,31 @@ struct _firm_parameter_t { * The debug info that should be used for "builtin" objects. */ dbg_info *builtin_dbg; + + /** + * Prefix for the command line options. + * example: if the option is -ffirm-opt-bla, then the prefix is "-f" + * @note Only active, if libfirm is compiled with libcore. + */ + const char *arg_prefix; + + /** + * Number of arguments in the "command line". + * @note Only active, if libfirm is compiled with libcore. + */ + int argc; + + /** + * Array of arguments. + * @note Only active, if libfirm is compiled with libcore. + */ + const char **argv; + + /** + * Name of ini file which is initially read. + * @note Only active, if libfirm is compiled with libcore. + */ + const char *ini_file; }; typedef struct _firm_parameter_t firm_parameter_t; -- 2.20.1