aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorNick Clifton <nickc@cygnus.com>1998-05-17 23:08:40 +0000
committerJeff Law <law@gcc.gnu.org>1998-05-17 17:08:40 -0600
commit88117d44fdf73af5014673a4c6ef028e5e7486af (patch)
tree2f16e1bc3300b7a15436e611d2cf3152a373c390 /gcc
parente5e8a8bf3921f126e8ce4e14b02d99ceaa6805c7 (diff)
downloadgcc-88117d44fdf73af5014673a4c6ef028e5e7486af.zip
gcc-88117d44fdf73af5014673a4c6ef028e5e7486af.tar.gz
gcc-88117d44fdf73af5014673a4c6ef028e5e7486af.tar.bz2
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
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog11
-rw-r--r--gcc/gcc.c47
-rw-r--r--gcc/tm.texi15
3 files changed, 71 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index e2cbd10..831cd54 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,14 @@
+Mon May 18 00:08:19 1998 Nick Clifton <nickc@cygnus.com>
+
+ * 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 f2efe56..c2c1af6 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 b95514e..9ae7074 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