public inbox for gcc-cvs@sourceware.org
help / color / mirror / Atom feed
* [gcc r13-6976] PR modula2/109336 pass -fmod= though and build m2/stage2/cc1gm2 libs
@ 2023-04-02 19:31 Gaius Mulley
0 siblings, 0 replies; only message in thread
From: Gaius Mulley @ 2023-04-02 19:31 UTC (permalink / raw)
To: gcc-cvs
https://gcc.gnu.org/g:5bb27a1bb2f1c0533e1dda6c4a326e50756830f1
commit r13-6976-g5bb27a1bb2f1c0533e1dda6c4a326e50756830f1
Author: Gaius Mulley <gaiusmod2@gmail.com>
Date: Sun Apr 2 20:30:43 2023 +0100
PR modula2/109336 pass -fmod= though and build m2/stage2/cc1gm2 libs
This patch enables gm2 to pass -fmod= though to cc1gm2. It also
builds the libraries for m2/stage2/cc1gm2 with no named path and
full debugging.
gcc/m2/ChangeLog:
PR modula2/109336
* Make-lang.in (GM2_O): Set to -O0.
(GM2_LIBS): Remove target libraries and replace with build libs.
(BUILD-LIBS): New declaration.
(m2/gm2-libs/libgm2.a): New rule.
(m2/gm2-libs/%.o): New rule.
(m2/gm2-libs/choosetemp.o): New rule.
* gm2-compiler/M2ColorString.mod (append): Use ADR rather than
implicit conversion.
* gm2-compiler/M2Comp.mod (Compile): Add qprintf messages for when
a source file is not found. Improve comments and formatting.
* gm2-libs-ch/cgetopt.c (cgetopt_cgetopt_long): Remove
ansi-decl.h. Add getopt.h.
(cgetopt_cgetopt_long_only): Change cgetopt_ to getopt_.
* gm2spec.cc (lang_specific_driver): Do not skip -fmod=.
Remove comment.
Signed-off-by: Gaius Mulley <gaiusmod2@gmail.com>
Diff:
---
gcc/m2/Make-lang.in | 32 ++++++++++++++++++++++++++++++--
gcc/m2/gm2-compiler/M2ColorString.mod | 3 ++-
gcc/m2/gm2-compiler/M2Comp.mod | 13 ++++++++-----
gcc/m2/gm2-libs-ch/cgetopt.c | 7 ++++---
gcc/m2/gm2spec.cc | 4 +---
5 files changed, 45 insertions(+), 14 deletions(-)
diff --git a/gcc/m2/Make-lang.in b/gcc/m2/Make-lang.in
index ad21b208f09..b34db0d9156 100644
--- a/gcc/m2/Make-lang.in
+++ b/gcc/m2/Make-lang.in
@@ -455,7 +455,7 @@ MC=m2/boot-bin/mc$(exeext) $(MC_ARGS)
MC_LIBS=m2/mc-boot-ch/Glibc.o m2/mc-boot-ch/Gmcrts.o
M2LINK=m2/boot-bin/mklink$(exeext)
-GM2_O=
+GM2_O=-O0
GM2_O_S3=-O
GM2_OS=-Os
GM2_G=-g -fm2-g
@@ -505,7 +505,7 @@ GM2_C_OBJS = m2/gm2-lang.o \
m2/gm2-gcc/m2misc.o \
m2/gm2-gcc/init.o
GM2_LIBS = m2/gm2-compiler/gm2.a \
- ../$(target_subdir)/libgm2/libm2pim/.libs/libm2pim.a m2/gm2-libs-boot/choosetemp.o
+ m2/gm2-libs/libgm2.a \
GM2_LIBS_BOOT = m2/gm2-compiler-boot/gm2.a \
m2/gm2-libs-boot/libgm2.a \
@@ -1138,6 +1138,11 @@ BUILD-COMPILER-BOOT = $(BUILD-COMPILER-BOOT-H) \
BUILD-BOOT-H = m2/boot-bin/mc$(exeext) \
$(BUILD-LIBS-BOOT-H) $(BUILD-COMPILER-BOOT-H) $(TARGET_H) $(PLUGIN_HEADERS)
+BUILD-LIBS = $(BUILD-LIBS-BOOT-H) \
+ $(GM2-LIBS-MODS:%.mod=m2/gm2-libs/%.o) \
+ $(GM2-LIBS-CC:%.cc=m2/gm2-libs/%.o) \
+ $(GM2-LIBS-C:%.c=m2/gm2-libs/%.o)
+
# Core library definition modules used by the modula-2 to C++ translator.
MC-LIB-DEFS = \
@@ -1595,6 +1600,29 @@ m2/gm2-compiler/gm2.a: build-compiler gm2$(exeext)
$(GM2-AUTO-MODS:%.mod=m2/gm2-compiler/%.o)
$(RANLIB) $@
+m2/gm2-libs/libgm2.a: build-compiler gm2$(exeext) $(BUILD-LIBS)
+ -test -d $(@D) || $(mkinstalldirs) $(@D)
+ $(AR) cr $@ $(GM2-LIBS-MODS:%.mod=m2/gm2-libs/%.o) \
+ $(GM2-LIBS-CC:%.cc=m2/gm2-libs/%.o) \
+ $(GM2-LIBS-C:%.c=m2/gm2-libs/%.o)
+ $(RANLIB) $@
+
+m2/gm2-libs/%.o: $(srcdir)/m2/gm2-libs/%.mod $(MCDEPS) $(BUILD-BOOT-H)
+ -test -d $(@D) || $(mkinstalldirs) $(@D)
+ $(GM2_1) -c $(GM2_FLAGS) -Im2/gm2-libs -I$(srcdir)/m2/gm2-libs -I$(srcdir)/m2/gm2-libs-iso $< -o $@
+
+m2/gm2-libs/%.o: $(srcdir)/m2/gm2-libs-ch/%.c m2/gm2-libs/gm2-libs-host.h
+ -test -d $(@D) || $(mkinstalldirs) $(@D)
+ $(CXX) -DBUILD_GM2_LIBS -c $(CFLAGS) -Im2/gm2-libs -I$(srcdir)/m2 -Im2/gm2-libs-boot $(INCLUDES) $< -o $@
+
+m2/gm2-libs/%.o: $(srcdir)/m2/gm2-libs-ch/%.cc m2/gm2-libs/gm2-libs-host.h
+ -test -d $(@D) || $(mkinstalldirs) $(@D)
+ $(CXX) -c $(CFLAGS) -Im2/gm2-libs -I$(srcdir)/m2 -Im2 -I. -Im2/gm2-libs-boot $(INCLUDES) $< -o $@
+
+m2/gm2-libs/choosetemp.o: m2/gm2-libs-ch/choosetemp.c m2/gm2-libiberty/Gchoosetemp.h m2/gm2-libs/gm2-libs-host.h
+ -test -d $(@D) || $(mkinstalldirs) $(@D)
+ $(CXX) -c $(CFLAGS) -Im2/gm2-libs -I$(srcdir)/m2 -Im2 -I. -Im2/gm2-libs-boot -Im2/gm2-libiberty -I$(srcdir)/m2/gm2-libiberty/ $(INCLUDES) $< -o $@
+
m2/gm2-libs-boot/libgm2.a: m2/boot-bin/mc$(exeext) $(BUILD-LIBS-BOOT)
-test -d $(@D) || $(mkinstalldirs) $(@D)
$(AR) cr $@ $(GM2-LIBS-BOOT-MODS:%.mod=m2/gm2-libs-boot/%.o) \
diff --git a/gcc/m2/gm2-compiler/M2ColorString.mod b/gcc/m2/gm2-compiler/M2ColorString.mod
index f0ba7966b02..ec44b8607b0 100644
--- a/gcc/m2/gm2-compiler/M2ColorString.mod
+++ b/gcc/m2/gm2-compiler/M2ColorString.mod
@@ -27,6 +27,7 @@ FROM DynamicStrings IMPORT InitString, InitStringCharStar,
Dup, char, Length, Mult ;
FROM StrLib IMPORT StrLen ;
FROM libc IMPORT printf ;
+FROM SYSTEM IMPORT ADR ;
VAR
@@ -57,7 +58,7 @@ PROCEDURE append (s: String; name: ARRAY OF CHAR) : String ;
VAR
c: String ;
BEGIN
- c := InitStringCharStar (colorize_start (EnableColor, name, StrLen (name))) ;
+ c := InitStringCharStar (colorize_start (EnableColor, ADR (name), StrLen (name))) ;
s := ConCat (s, c) ;
c := KillString (c) ;
RETURN s
diff --git a/gcc/m2/gm2-compiler/M2Comp.mod b/gcc/m2/gm2-compiler/M2Comp.mod
index a2a7797397d..e33363e9f83 100644
--- a/gcc/m2/gm2-compiler/M2Comp.mod
+++ b/gcc/m2/gm2-compiler/M2Comp.mod
@@ -319,9 +319,9 @@ BEGIN
ELSE
ModuleType := Program
END ;
- IF (Main=Sym) OR NeedToParseImplementation(Sym)
+ IF (Main=Sym) OR NeedToParseImplementation (Sym)
THEN
- (* only need to read implementation module if hidden types are declared or it is the main module *)
+ (* Only need to read implementation module if hidden types are declared or it is the main module *)
LibName := NIL ;
IF Main=Sym
THEN
@@ -333,13 +333,16 @@ BEGIN
THEN
FileName := PreprocessModule (FileName, FALSE) ;
PutLibName (Sym, makekey (string (LibName)))
+ ELSE
+ qprintf1 (' Module %-20s : implementation source file not found\n', SymName)
END
END ;
+
IF FileName#NIL
THEN
IF OpenSource (AssociateModule (Dup (FileName), Sym))
THEN
- IF NOT P0SyntaxCheck.CompilationUnit()
+ IF NOT P0SyntaxCheck.CompilationUnit ()
THEN
WriteFormat0 ('compilation failed') ;
CloseSource ;
@@ -356,9 +359,9 @@ BEGIN
ELSE
(* It is quite legitimate to implement a module in C (and pretend it was a M2
implementation) providing that it is not the main program module and the
- definition module do not declare a hidden type when -fextended-opaque
+ definition module does not declare a hidden type when -fextended-opaque
is used. *)
- IF (NOT WholeProgram) OR (Sym=Main) OR IsHiddenTypeDeclared(Sym)
+ IF (NOT WholeProgram) OR (Sym=Main) OR IsHiddenTypeDeclared (Sym)
THEN
(* Unrecoverable error. *)
MetaErrorString1 (Sprintf1 (InitString ('file {%%1EUAF%s} containing module {%%1a} cannot be found'),
diff --git a/gcc/m2/gm2-libs-ch/cgetopt.c b/gcc/m2/gm2-libs-ch/cgetopt.c
index d6b40b183b4..017fe91ad95 100644
--- a/gcc/m2/gm2-libs-ch/cgetopt.c
+++ b/gcc/m2/gm2-libs-ch/cgetopt.c
@@ -26,7 +26,8 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
#include "config.h"
#include "system.h"
-#include "ansi-decl.h"
+#include <getopt.h>
+// #include "ansi-decl.h"
#ifdef __cplusplus
@@ -60,7 +61,7 @@ int
cgetopt_cgetopt_long (int argc, char *argv[], char *optstring, const struct option *longopts,
int *longindex)
{
- int r = cgetopt_long (argc, argv, optstring, longopts, longindex);
+ int r = getopt_long (argc, argv, optstring, longopts, longindex);
cgetopt_optarg = optarg;
cgetopt_optind = optind;
@@ -75,7 +76,7 @@ int
cgetopt_cgetopt_long_only (int argc, char *argv[], char *optstring,
const struct option *longopts, int *longindex)
{
- int r = cgetopt_long_only (argc, argv, optstring, longopts, longindex);
+ int r = getopt_long_only (argc, argv, optstring, longopts, longindex);
cgetopt_optarg = optarg;
cgetopt_optind = optind;
diff --git a/gcc/m2/gm2spec.cc b/gcc/m2/gm2spec.cc
index 8b4010838ec..cd7ae808d98 100644
--- a/gcc/m2/gm2spec.cc
+++ b/gcc/m2/gm2spec.cc
@@ -451,7 +451,7 @@ lang_specific_driver (struct cl_decoded_option **in_decoded_options,
int need_math = (MATH_LIBRARY[0] != '\0');
/* 1 if we should add -lpthread to the command-line.
- FIXME: the default should be a configuration choice. */
+ FIXME: the default should be a configuration choice. */
int need_pthread = 1;
/* True if we saw -static. */
@@ -533,7 +533,6 @@ lang_specific_driver (struct cl_decoded_option **in_decoded_options,
break;
case OPT_fmod_:
module_extension = xstrdup (arg);
- args[i] |= SKIPOPT; /* We will add the option if it is needed. */
#if defined(DEBUG_ARG)
printf ("seen -fmod=%s\n", module_extension);
#endif
@@ -701,7 +700,6 @@ lang_specific_driver (struct cl_decoded_option **in_decoded_options,
printf ("modula-2 source file detected: %s\n", source_file);
#endif
args[i] |= M2SOURCE;
- // args[i] = 0;
}
}
}
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2023-04-02 19:31 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-04-02 19:31 [gcc r13-6976] PR modula2/109336 pass -fmod= though and build m2/stage2/cc1gm2 libs 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).