public inbox for gcc-cvs@sourceware.org
help / color / mirror / Atom feed
* [gcc/devel/modula-2] Implement -save-temps.
@ 2021-10-26 20:49 Gaius Mulley
  0 siblings, 0 replies; only message in thread
From: Gaius Mulley @ 2021-10-26 20:49 UTC (permalink / raw)
  To: gcc-cvs

https://gcc.gnu.org/g:507c1897458c6402c6ada999b8933624e96f2e6a

commit 507c1897458c6402c6ada999b8933624e96f2e6a
Author: Gaius Mulley <gaius.mulley@southwales.ac.uk>
Date:   Tue Oct 26 21:42:07 2021 +0100

    Implement -save-temps.
    
    gcc/m2/ChangeLog:
    
            * gm2-compiler/M2Options.def (m2linemap): Import list replaced
            identifiers SaveTemps, SetSaveTemps and SetSaveTempsDir.
            * gm2-compiler/M2Options.mod (SetSaveTemps): New procedure.
            Sets SaveTemps to value.
            (MakeSaveTempsFileName) New procedure which appends ".i" to
            filename.
            (PreprocessModule) Check SaveTemps to determine whether the
            temporary file should be deleted upon exit.
            (SetSaveTempsDir) Stub added.
            * gm2-gcc/m2options.h (SetSaveTemps): Prototype added.
            (SetSaveTempsDir) Prototype added.
            * gm2-lang.c (gm2_langhook_handle_option): Extended to
            include OP_save_temps and OP_save_temps_.
            * lang-options.h: Add -fsave-temps and -fsave-temps=.
            * lang-specs.h: Pass %{save-temps*} to cc1gm2.
            * lang.opt: Add -save-temps as an alias to save-temps.
            Add save-temps, add save-temps=.
    
    ChangeLog:
    
            * m2tools/Makefile.in : Rebuilt.
    
    Signed-off-by: Gaius Mulley <gaius.mulley@southwales.ac.uk>

Diff:
---
 gcc/m2/gm2-compiler/M2Options.def    | 19 ++++++++++++++++++-
 gcc/m2/gm2-compiler/M2Options.mod    | 27 ++++++++++++++++++++++++---
 gcc/m2/gm2-compiler/M2Preprocess.mod | 26 +++++++++++++++++++++++---
 gcc/m2/gm2-gcc/m2options.h           |  4 +++-
 gcc/m2/gm2-lang.c                    |  6 ++++++
 gcc/m2/lang-options.h                |  4 ++++
 gcc/m2/lang-specs.h                  |  1 +
 gcc/m2/lang.opt                      | 11 +++++++++++
 gm2tools/Makefile.in                 |  2 +-
 9 files changed, 91 insertions(+), 9 deletions(-)

diff --git a/gcc/m2/gm2-compiler/M2Options.def b/gcc/m2/gm2-compiler/M2Options.def
index f7dcb3d6fff..a6efb6838bd 100644
--- a/gcc/m2/gm2-compiler/M2Options.def
+++ b/gcc/m2/gm2-compiler/M2Options.def
@@ -78,7 +78,8 @@ EXPORT QUALIFIED SetReturnCheck, SetNilCheck, SetCaseCheck,
                  DumpSystemExports, GenerateSwig, Exceptions,
                  OverrideLocation, FinaliseOptions,
                  DebugBuiltins, setdefextension, setmodextension,
-                 SetStatistics, SetWall,
+                 SetStatistics, SetWall, SetSaveTemps, SetSaveTempsDir,
+                 SaveTemps,
                  CppProg, CppArg, CppCommandLine, CppRemember,
 		 SetDebugFunctionLineNumbers, DebugFunctionLineNumbers,
 		 SetGenerateStatementNote, GenerateStatementNote ;
@@ -146,6 +147,7 @@ VAR
    LowerCaseKeywords,            (* should keywords in errors be in lower?   *)
    DebugBuiltins,                (* should we always call a real function?   *)
    AutoInit,                     (* -fauto-init assigns pointers to NIL.     *)
+   SaveTemps,                    (* -save-temps save all temporary files.    *)
    ForcedLocation,
    DebugFunctionLineNumbers,
    GenerateStatementNote,
@@ -655,6 +657,21 @@ PROCEDURE SetWholeValueCheck (value: BOOLEAN) ;
 PROCEDURE SetWall (value: BOOLEAN) ;
 
 
+(*
+   SetSaveTemps - turn on/off -save-temps.
+*)
+
+PROCEDURE SetSaveTemps (value: BOOLEAN) ;
+
+
+(*
+   SetSaveTempsDir - turn on/off -save-temps specifying the
+                     directory.
+*)
+
+PROCEDURE SetSaveTempsDir (arg: ADDRESS) ;
+
+
 (*
    FinaliseOptions - once all options have been parsed we set any inferred
                      values.
diff --git a/gcc/m2/gm2-compiler/M2Options.mod b/gcc/m2/gm2-compiler/M2Options.mod
index 36d7e3f488f..6e75a9d4190 100644
--- a/gcc/m2/gm2-compiler/M2Options.mod
+++ b/gcc/m2/gm2-compiler/M2Options.mod
@@ -995,9 +995,29 @@ BEGIN
 END SetWall ;
 
 
+(*
+   SetSaveTemps - turn on/off -save-temps.
+*)
+
+PROCEDURE SetSaveTemps (value: BOOLEAN) ;
+BEGIN
+   SaveTemps := value
+END SetSaveTemps ;
+
+
+(*
+   SetSaveTempsDir - turn on/off -save-temps and specify the directory.
+*)
+
+PROCEDURE SetSaveTempsDir (arg: ADDRESS) ;
+BEGIN
+   (* printf1 ("SetSaveTempsDir: arg = %s\n", arg);  *)
+END SetSaveTempsDir ;
+
+
 BEGIN
-   CppArgs                      := InitString('') ;
-   CppProgram                   := InitString('') ;
+   CppArgs                      := InitString ('') ;
+   CppProgram                   := InitString ('') ;
    Pim                          :=  TRUE ;
    Pim2                         := FALSE ;
    Pim3                         := FALSE ;
@@ -1049,5 +1069,6 @@ BEGIN
    UnusedVariableChecking       := FALSE ;
    UnusedParameterChecking      := FALSE ;
    StrictTypeChecking           := TRUE ;
-   AutoInit                     := FALSE
+   AutoInit                     := FALSE ;
+   SaveTemps                    := FALSE
 END M2Options.
diff --git a/gcc/m2/gm2-compiler/M2Preprocess.mod b/gcc/m2/gm2-compiler/M2Preprocess.mod
index bf239a3d092..561cc7c0f36 100644
--- a/gcc/m2/gm2-compiler/M2Preprocess.mod
+++ b/gcc/m2/gm2-compiler/M2Preprocess.mod
@@ -33,7 +33,7 @@ FROM libc IMPORT system, exit, unlink, printf, atexit ;
 FROM Lists IMPORT List, InitList, KillList, IncludeItemIntoList, ForeachItemInListDo ;
 FROM FIO IMPORT StdErr, StdOut ;
 FROM M2Printf IMPORT fprintf1 ;
-FROM M2Options IMPORT Verbose, CppCommandLine ;
+FROM M2Options IMPORT Verbose, CppCommandLine, SaveTemps ;
 FROM NameKey IMPORT Name, MakeKey, KeyToCharStar, makekey ;
 
 
@@ -78,6 +78,16 @@ BEGIN
 END RemoveFiles ;
 
 
+(*
+   MakeSaveTempsFileName - return a temporary file "filename.i".
+*)
+
+PROCEDURE MakeSaveTempsFileName (filename: String) : String ;
+BEGIN
+   RETURN ConCat (Dup (filename), InitString ('.i'))
+END MakeSaveTempsFileName ;
+
+
 (*
    PreprocessModule - preprocess a file, filename, returning the new filename
                       of the preprocessed file.
@@ -99,7 +109,12 @@ BEGIN
    THEN
       RETURN filename
    ELSE
-      tempfile := InitStringCharStar (make_temp_file (KeyToCharStar (MakeKey('cpp')))) ;
+      IF SaveTemps
+      THEN
+         tempfile := InitStringCharStar (MakeSaveTempsFileName (filename))
+      ELSE
+         tempfile := InitStringCharStar (make_temp_file (KeyToCharStar (MakeKey('i'))))
+      END ;
       commandLine := Dup (command) ;
       commandLine := ConCat (ConCat (ConCat (ConCatChar (Dup (commandLine), ' '), filename),
                                      Mark (InitString(' -o '))),
@@ -118,7 +133,12 @@ BEGIN
          exit (1)
       END ;
       commandLine := KillString (commandLine) ;
-      RETURN OnExitDelete (tempfile)
+      IF SaveTemps
+      THEN
+         RETURN tempfile
+      ELSE
+         RETURN OnExitDelete (tempfile)
+      END
    END
 END PreprocessModule ;
 
diff --git a/gcc/m2/gm2-gcc/m2options.h b/gcc/m2/gm2-gcc/m2options.h
index 676407f92b7..9843b9c0f8f 100644
--- a/gcc/m2/gm2-gcc/m2options.h
+++ b/gcc/m2/gm2-gcc/m2options.h
@@ -106,7 +106,9 @@ EXTERN void M2Options_SetUnusedVariableChecking (int value);
 EXTERN void M2Options_SetUnusedParameterChecking (int value);
 EXTERN void M2Options_SetStrictTypeChecking (int value);
 EXTERN void M2Options_SetWall (int value);
-
+EXTERN void M2Options_SetSaveTemps (int value);
+EXTERN void M2Options_SetSaveTempsDir (const char *arg);
+EXTERN int M2Options_GetSaveTemps (void);
 EXTERN void M2Options_DisplayVersion (int mustExit);
 
 #undef EXTERN
diff --git a/gcc/m2/gm2-lang.c b/gcc/m2/gm2-lang.c
index 455fb6baf2b..abd8d9d0dbf 100644
--- a/gcc/m2/gm2-lang.c
+++ b/gcc/m2/gm2-lang.c
@@ -426,6 +426,12 @@ gm2_langhook_handle_option (
         }
       else
         return 0;
+    case OPT_save_temps:
+      M2Options_SetSaveTemps (value);
+      return 1;
+    case OPT_save_temps_:
+      M2Options_SetSaveTempsDir (arg);
+      return 1;
     default:
       if (insideCppArgs)
         {
diff --git a/gcc/m2/lang-options.h b/gcc/m2/lang-options.h
index 6c3793b88f3..b5edb65372e 100644
--- a/gcc/m2/lang-options.h
+++ b/gcc/m2/lang-options.h
@@ -184,3 +184,7 @@ DEFINE_LANG_NAME ("Modula-2")
       N_("insert semantic plugin to detect runtime errors at compile time") },
   { "-fno-m2-plugin",
       N_("do not insert semantic plugin to detect runtime errors at compile time") },
+  { "-fsave-temps",
+      N_("save temporary files after the preprocessor phase") },
+  { "-fsave-temps=",
+      N_("save temporary files and place them in the directory specified") },
diff --git a/gcc/m2/lang-specs.h b/gcc/m2/lang-specs.h
index b250eb07f03..2ef0852dbff 100644
--- a/gcc/m2/lang-specs.h
+++ b/gcc/m2/lang-specs.h
@@ -42,6 +42,7 @@ along with GCC; see the file COPYING3.  If not see
       "%{c|S:cc1gm2 " M2CPP
       "      %(cc1_options) %{f*} %{+e*} %{I*} "
       "      %{MD} %{MMD} %{M} %{MM} %{MA} %{MT*} %{MF*} %V"
+      "      %{save-temps*}"
       "      %i %{!fsyntax-only:%(invoke_as)}}"
       MODULA_LINK_SUPPORT ,
       0, 0, 0},
diff --git a/gcc/m2/lang.opt b/gcc/m2/lang.opt
index d058397f61a..bebc4cac408 100644
--- a/gcc/m2/lang.opt
+++ b/gcc/m2/lang.opt
@@ -354,4 +354,15 @@ x
 Modula-2 Joined
 specify the language from the compiler driver
 
+-save-temps
+Modula-2 Alias(save-temps)
+
+save-temps
+Modula-2
+save temporary preprocessed files
+
+save-temps=
+Modula-2 Joined
+save temporary preprocessed files
+
 ; This comment is to ensure we retain the blank line above.
diff --git a/gm2tools/Makefile.in b/gm2tools/Makefile.in
index 386f2e4163a..d228a6a9b39 100644
--- a/gm2tools/Makefile.in
+++ b/gm2tools/Makefile.in
@@ -639,8 +639,8 @@ distclean-generic:
 maintainer-clean-generic:
 	@echo "This command is intended for maintainers to use"
 	@echo "it deletes files that may require special tools to rebuild."
-@NATIVE_FALSE@uninstall-local:
 @NATIVE_FALSE@install-exec-local:
+@NATIVE_FALSE@uninstall-local:
 clean: clean-am
 
 clean-am: clean-binPROGRAMS clean-generic mostlyclean-am


^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2021-10-26 20:49 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-10-26 20:49 [gcc/devel/modula-2] Implement -save-temps Gaius Mulley

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).