From 88117d44fdf73af5014673a4c6ef028e5e7486af Mon Sep 17 00:00:00 2001 From: Nick Clifton Date: Sun, 17 May 1998 23:08:40 +0000 Subject: [PATCH] gcc.c (SWITCH_CURTAILS_COMPILATION): Definition. * gcc.c (SWITCH_CURTAILS_COMPILATION): Definition. (DEFAULT_SWITCH_CURTAILS_COMPILATION): True for options -S and -c. (process_command): If HAVE_EXECUTABLE_SUFFIX is defined then scan command line arguments to see if an executable is not being created, and if so - do not append the suffix. * tm.texi (SWITCH_CURTAILS_COMPILATION): Add description of new driver macro. From-SVN: r19824 --- gcc/ChangeLog | 11 +++++++++++ gcc/gcc.c | 47 +++++++++++++++++++++++++++++++++++++++++++++-- gcc/tm.texi | 15 +++++++++++++++ 3 files changed, 71 insertions(+), 2 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index e2cbd10b628..831cd540031 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,14 @@ +Mon May 18 00:08:19 1998 Nick Clifton + + * gcc.c (SWITCH_CURTAILS_COMPILATION): Definition. + (DEFAULT_SWITCH_CURTAILS_COMPILATION): True for options -S and -c. + (process_command): If HAVE_EXECUTABLE_SUFFIX is defined then scan + command line arguments to see if an executable is not being + created, and if so - do not append the suffix. + + * tm.texi (SWITCH_CURTAILS_COMPILATION): Add description of new + driver macro. + Sun May 17 23:59:45 1998 John Wehle (john@feith.com) * i386.h (ALIGN_DFmode): Delete. diff --git a/gcc/gcc.c b/gcc/gcc.c index f2efe569434..c2c1af62809 100644 --- a/gcc/gcc.c +++ b/gcc/gcc.c @@ -536,6 +536,18 @@ static struct user_specs *user_specs_head, *user_specs_tail; #define WORD_SWITCH_TAKES_ARG(STR) DEFAULT_WORD_SWITCH_TAKES_ARG (STR) #endif + +#ifdef HAVE_EXECUTABLE_SUFFIX +/* This defines which switches stop a full compilation. */ +#define DEFAULT_SWITCH_CURTAILS_COMPILATION(CHAR) \ + ((CHAR) == 'c' || (CHAR) == 'S') + +#ifndef SWITCH_CURTAILS_COMPILATION +#define SWITCH_CURTAILS_COMPILATION(CHAR) \ + DEFAULT_SWITCH_CURTAILS_COMPILATION(CHAR) +#endif +#endif + /* Record the mapping from file suffixes for compilation specs. */ struct compiler @@ -2780,6 +2792,7 @@ process_command (argc, argv) } break; + case 'S': case 'c': if (p[1] == 0) { @@ -2791,10 +2804,40 @@ process_command (argc, argv) case 'o': have_o = 1; +#if defined(HAVE_EXECUTABLE_SUFFIX) + if (! have_c) + { + int skip; + + /* Forward scan, just in case -S or -c is specified + after -o. */ + int j = i + 1; + if (p[1] == 0) + ++j; + while (j < argc) + { + if (argv[j][0] == '-') + { + if (SWITCH_CURTAILS_COMPILATION (argv[j][1]) + && argv[j][2] == 0) + { + have_c = 1; + break; + } + else if (skip = SWITCH_TAKES_ARG (argv[j][1])) + j += skip - (argv[j][2] != 0); + else if (skip = WORD_SWITCH_TAKES_ARG (argv[j] + 1)) + j += skip; + } + j++; + } + } +#endif #if defined(HAVE_EXECUTABLE_SUFFIX) || defined(HAVE_OBJECT_SUFFIX) - argv[i] = convert_filename (argv[i], 1); if (p[1] == 0) - argv[i+1] = convert_filename (argv[i+1], 1); + argv[i+1] = convert_filename (argv[i+1], ! have_c); + else + argv[i] = convert_filename (argv[i], ! have_c); #endif goto normal_switch; diff --git a/gcc/tm.texi b/gcc/tm.texi index b95514e538b..9ae707403b5 100644 --- a/gcc/tm.texi +++ b/gcc/tm.texi @@ -76,6 +76,21 @@ wish to add additional options which take arguments. Any redefinition should call @code{DEFAULT_WORD_SWITCH_TAKES_ARG} and then check for additional options. +@findex SWITCH_CURTAILS_COMPILATION +@item SWITCH_CURTAILS_COMPILATION (@var{char}) +A C expression which determines whether the option @samp{-@var{char}} +stops compilation before the generation of an executable. The value is +boolean, non-zero if the option does stop an executable from being +generated, zero otherwise. + +By default, this macro is defined as +@code{DEFAULT_SWITCH_CURTAILS_COMPILATION}, which handles the standard +options properly. You need not define +@code{SWITCH_CURTAILS_COMPILATION} unless you wish to add additional +options which affect the generation of an executable. Any redefinition +should call @code{DEFAULT_SWITCH_CURTAILS_COMPILATION} and then check +for additional options. + @findex SWITCHES_NEED_SPACES @item SWITCHES_NEED_SPACES A string-valued C expression which enumerates the options for which -- 2.30.2