gcc.c (getenv_spec_function): New function.

* gcc.c (getenv_spec_function): New function.
	(static_spec_functions): Add it.
	* config/vxworks.h (VXWORKS_TARGET_DIR): Remove.
	(VXWORKS_ADDITIONAL_CPP_SPEC): Use getenv to find the VxWorks
	header files.

From-SVN: r122240
This commit is contained in:
Mark Mitchell 2007-02-22 23:49:15 +00:00 committed by Mark Mitchell
parent b69862d1ef
commit 30d8946bae
3 changed files with 38 additions and 4 deletions

View File

@ -1,3 +1,11 @@
2007-02-22 Mark Mitchell <mark@codesourcery.com>
* gcc.c (getenv_spec_function): New function.
(static_spec_functions): Add it.
* config/vxworks.h (VXWORKS_TARGET_DIR): Remove.
(VXWORKS_ADDITIONAL_CPP_SPEC): Use getenv to find the VxWorks
header files.
2007-02-22 Michael Matz <matz@suse.de
PR c++/29433

View File

@ -26,8 +26,11 @@ Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA
like a traditional Unix, with more external files. Most of our specs
must be aware of the difference. */
/* The directory containing the VxWorks target headers. */
#define VXWORKS_TARGET_DIR "/home/tornado/base6/target"
/* We look for the VxWorks header files using the environment
variables that are set in VxWorks to indicate the location of the
system header files. We use -idirafter so that the GCC's own
header-file directories (containing <stddef.h>, etc.) come before
the VxWorks system header directories. */
/* Since we provide a default -isystem, expand -isystem on the command
line early. */
@ -35,9 +38,9 @@ Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA
#define VXWORKS_ADDITIONAL_CPP_SPEC " \
%{!nostdinc:%{isystem*}} \
%{mrtp: -D__RTP__=1 \
%{!nostdinc:-isystem " VXWORKS_TARGET_DIR "/usr/h}} \
%{!nostdinc:-idirafter %:getenv(WIND_USR /h)}} \
%{!mrtp:-D_WRS_KERNEL=1 \
%{!nostdinc:-isystem " VXWORKS_TARGET_DIR "/h}}"
%{!nostdinc:-idirafter %:getenv(WIND_BASE /target/h)}}"
/* The references to __init and __fini will be satisfied by
libc_internal.a. */

View File

@ -350,6 +350,7 @@ static void init_gcc_specs (struct obstack *, const char *, const char *,
static const char *convert_filename (const char *, int, int);
#endif
static const char *getenv_spec_function (int, const char **);
static const char *if_exists_spec_function (int, const char **);
static const char *if_exists_else_spec_function (int, const char **);
static const char *replace_outfile_spec_function (int, const char **);
@ -1601,6 +1602,7 @@ static struct spec_list *specs = (struct spec_list *) 0;
static const struct spec_function static_spec_functions[] =
{
{ "getenv", getenv_spec_function },
{ "if-exists", if_exists_spec_function },
{ "if-exists-else", if_exists_else_spec_function },
{ "replace-outfile", replace_outfile_spec_function },
@ -7645,6 +7647,27 @@ print_multilib_info (void)
}
}
/* getenv built-in spec function.
Returns the value of the environment variable given by its first
argument, concatenated with the second argument. If the
environment variable is not defined, a fatal error is issued. */
static const char *
getenv_spec_function (int argc, const char **argv)
{
char *value;
if (argc != 2)
return NULL;
value = getenv (argv[0]);
if (!value)
fatal ("environment variable \"%s\" not defined", argv[0]);
return concat (value, argv[1], NULL);
}
/* if-exists built-in spec function.
Checks to see if the file specified by the absolute pathname in