[pushed]PR modula2/125129: Many tests fail to link on FreeBSD
Gaius Mulley <[email protected]>
| Newsgroups | gmane.comp.gcc.patches |
|---|---|
| Message-ID | <[email protected]> |
Not all targets have csin[l], ccos[l] and ctan[l]. On such systems the ISO libraries should be pruned thus allowing compile time failures for source which explicitly requests these intrinsics rather than universally fail on linking. This patch introduces a new tool mktargetsrc which will generate target versions of the Modula-2 libraries. The patch also introduces -fdump-builtins which is used by mktargetsrc. mktargetsrc replaces makeSystem and mktargetsrc improves the formatting of the autogenerated SYSTEM.def files. Bootstrapped on x86_64 Debian, FreeBSD15 and ppc64le GNU/Linux. gcc/ChangeLog: PR modula2/125129 * doc/gm2.texi (-fdump-builtins): New switch. gcc/m2/ChangeLog: PR modula2/125129 * Make-lang.in (escape_path): New define. (GM2_FOR_TARGET_ESC): New define. (RSTSRC): Remove. (gm2-libs.texi-check): Rewrite without $(objdir). (m2/gm2-libs.rst): Remove. (gm2-ebnf.rst): Ditto. (gm2-ebnf.rst-check): Ditto. (SYSTEM-pim-texi-check): Ditto. (m2/SYSTEM-pim.rst): Ditto. (m2/SYSTEM-iso.texi): Rewrite without $(objdir). (Builtins.texi-check): Rewrite specifying $(srcdir). (m2/Builtins.rst): Remove. (MC_ARGS): Add -I$(srcdir)/m2/gm2-libs-pim-common and -I$(srcdir)/m2/mc-boot-ch. (m2/mc-boot/$(SRC_PREFIX)%.o): Add -I$(srcdir)/m2/mc-boot-ch. (m2/mc-boot-ch/$(SRC_PREFIX)%.o): Ditto. (MC_BOOT_INCLUDES): New define. (m2/gm2-libs-boot/UnixArgs.o): Add MC_BOOT_INCLUDES. (m2/gm2-libs-boot/choosetemp.o): Ditto. (m2/gm2-libs-boot/errno.o): Ditto. (m2/gm2-libs-boot/dtoa.o): Ditto. (m2/gm2-libs-boot/ldtoa.o): Ditto. (m2/gm2-libs-boot/termios.o): Ditto. (m2/gm2-libs-boot/SysExceptions.o): Ditto. (m2/gm2-libs-boot/SysStorage.o): Ditto. (m2/gm2-libs/Builtins.def): Rewrite. (m2/gm2-libs/Builtins.mod): Ditto. (m2/gm2-libs/SYSTEM.def): Ditto. (m2/gm2-libs-iso/SYSTEM.def): Ditto. (m2/gm2-libs-coroutines/SYSTEM.def): Ditto. (m2/gm2-libs/%.o): Ditto. * gm2-compiler/M2Options.def (SetDumpBuiltins): New procedure. (GetDumpBuiltins): New procedure function. * gm2-compiler/M2Options.mod (DumpBuiltinsFlag): New variable. (SetDumpBuiltins): Implement new procedure. (GetDumpBuiltins): Implement new procedure function. * gm2-compiler/M2Quads.mod (BuildComponentValue): Removed unused variable virtpos. * gm2-gcc/m2builtins.cc (GM2_BUG_REPORT): Reformat. (ASSERT): Ditto. (ERROR): Ditto. (dump_available): New funmction. (define_builtin): Call dump_available if GetDumpBuiltins is set. (dump_builtin): New function. (m2builtins_init): Call dump_builtin. * gm2-gcc/m2options.h (M2Options_SetDumpBuiltins): New prototype. (M2Options_GetDumpBuiltins): Ditto. * gm2-lang.cc (gm2_langhook_handle_option): Add OPT_fdump_builtins case. * gm2-libs-coroutines/SYSTEM.def: Move to... * gm2-libs-cor-common/SYSTEM.def: ...here. * gm2-libs-coroutines/SYSTEM.mod: Move to... * gm2-libs-cor-common/SYSTEM.mod: ...here. * gm2-libs-iso/ComplexMath.def: Move to... * gm2-libs-iso-common/ComplexMath.def: ...here. Add tags. * gm2-libs-iso/ComplexMath.mod: Move to... * gm2-libs-iso-common/ComplexMath.mod: ...here. Add tags. * gm2-libs-iso/LongComplexMath.def: Move to... * gm2-libs-iso-common/LongComplexMath.def: ...here. Add tags. * gm2-libs-iso/LongComplexMath.mod: Move to... * gm2-libs-iso-common/LongComplexMath.mod: ...here. Add tags. * gm2-libs-iso/SYSTEM.def: Move to... * gm2-libs-iso-common/SYSTEM.def: ...here. Add tags. * gm2-libs-iso/SYSTEM.mod: Move to... * gm2-libs-iso-common/SYSTEM.mod: ...here. Add tags. * gm2-libs-iso/ShortComplexMath.def: Move to... * gm2-libs-iso-common/ShortComplexMath.def: ...here. Add tags. * gm2-libs-iso/ShortComplexMath.mod: Move to... * gm2-libs-iso-common/ShortComplexMath.mod: ...here. Add tags. * gm2-libs/Builtins.def: Move to... * gm2-libs-pim-common/Builtins.def: ...here. Add tags. * gm2-libs/Builtins.mod: Move to... * gm2-libs-pim-common/Builtins.mod: ...here. Add tags. * gm2-libs/SYSTEM.def: Move to... * gm2-libs-pim-common/SYSTEM.def: ...here. Add tags. * gm2-libs/SYSTEM.mod: Move to... * gm2-libs-pim-common/SYSTEM.mod: ...here. Add tags. * gm2-libs/cbuiltin.def: Move to... * gm2-libs-pim-common/cbuiltin.def: ...here. Add tags. * lang.opt (fdump-builtins): Add. * tools-src/def2doc.py: Modified to process tags. * tools-src/makeSystem: Modified to reflect new tags. * tools-src/mktargetsrc.py: New file. libgm2/ChangeLog: PR modula2/125129 * Makefile.am (GM2_FOR_TARGET_ESC): New define. (AM_MAKEFLAGS): Add GM2_FOR_TARGET_ESC. Add HAVE_PYTHON_INTERPRETER. * Makefile.in: Regenerate. * aclocal.m4: Regenerate. * config.h.in: Regenerate. * configure: Regenerate. * configure.ac: Call AC_PYTHON_DEVEL. Call GCC_PICFLAG. * libm2cor/Makefile.am (libm2cor_la_M2FLAGS): Add gm2-libs-cor-common and pathname. (SYSTEM.def): Rewrite rule. (SYSTEM.mod): Copy common file. * libm2cor/Makefile.in: Regenerate. * libm2iso/Makefile.am (AM_MAKEFLAGS): Add GM2_FOR_TARGET_ESC. Add HAVE_PYTHON_INTERPRETER. (libm2iso_la_CFLAGS): Add m2pim pathname and ../libm2pim to include path. * libm2log/Makefile.am: Rewrite to handle HAVE_PYTHON_INTERPRETER. Falling back to the common versions of target sources if HAVE_PYTHON_INTERPRETER is false. * libm2min/Makefile.am: Ditto. * libm2pim/Makefile.am: Ditto. * libm2iso/Makefile.in: Regenerate. * libm2log/Makefile.in: Regenerate. * libm2min/Makefile.in: Regenerate. * libm2pim/Makefile.in: Regenerate. * ax_python_devel.m4: New file. gcc/testsuite/ChangeLog: PR modula2/125129 * gm2/exceptions/run/pass/exceptions-run-pass.exp: Use gm2_target_compiler rather than target_compile. * lib/gm2.exp (gm2_target_compile_default): Check check_effective_target_pie and append -fPIE if necessary. Signed-off-by: Gaius Mulley <[email protected]> --- gcc/doc/gm2.texi | 4 + gcc/m2/Make-lang.in | 246 +++--- gcc/m2/gm2-compiler/M2Options.def | 14 + gcc/m2/gm2-compiler/M2Options.mod | 22 + gcc/m2/gm2-compiler/M2Quads.mod | 3 +- gcc/m2/gm2-gcc/m2builtins.cc | 58 +- gcc/m2/gm2-gcc/m2options.h | 2 + gcc/m2/gm2-lang.cc | 3 + gcc/m2/gm2-libs-coroutines/SYSTEM.def | 192 ---- gcc/m2/gm2-libs-coroutines/SYSTEM.mod | 251 ------ gcc/m2/gm2-libs-iso/ComplexMath.def | 73 -- gcc/m2/gm2-libs-iso/ComplexMath.mod | 164 ---- gcc/m2/gm2-libs-iso/LongComplexMath.def | 73 -- gcc/m2/gm2-libs-iso/LongComplexMath.mod | 164 ---- gcc/m2/gm2-libs-iso/SYSTEM.def | 155 ---- gcc/m2/gm2-libs-iso/SYSTEM.mod | 29 - gcc/m2/gm2-libs-iso/ShortComplexMath.def | 88 -- gcc/m2/gm2-libs-iso/ShortComplexMath.mod | 164 ---- gcc/m2/gm2-libs-min/SYSTEM.def | 7 +- gcc/m2/gm2-libs/Builtins.def | 276 ------ gcc/m2/gm2-libs/Builtins.mod | 828 ------------------ gcc/m2/gm2-libs/SYSTEM.def | 114 --- gcc/m2/gm2-libs/SYSTEM.mod | 29 - gcc/m2/gm2-libs/cbuiltin.def | 217 ----- gcc/m2/lang.opt | 4 + gcc/m2/tools-src/def2doc.py | 139 ++- gcc/m2/tools-src/makeSystem | 12 +- gcc/m2/tools-src/mktargetsrc.py | 417 +++++++++ .../run/pass/exceptions-run-pass.exp | 4 +- gcc/testsuite/lib/gm2.exp | 6 +- libgm2/Makefile.am | 9 +- libgm2/Makefile.in | 30 +- libgm2/aclocal.m4 | 2 + libgm2/ax_python_devel.m4 | 522 +++++++++++ libgm2/config.h.in | 3 + libgm2/configure | 683 ++++++++++++++- libgm2/configure.ac | 5 +- libgm2/libm2cor/Makefile.am | 29 +- libgm2/libm2cor/Makefile.in | 54 +- libgm2/libm2iso/Makefile.am | 152 +++- libgm2/libm2iso/Makefile.in | 159 +++- libgm2/libm2log/Makefile.am | 45 +- libgm2/libm2log/Makefile.in | 79 +- libgm2/libm2min/Makefile.am | 14 +- libgm2/libm2min/Makefile.in | 43 +- libgm2/libm2pim/Makefile.am | 92 +- libgm2/libm2pim/Makefile.in | 120 ++- 47 files changed, 2689 insertions(+), 3110 deletions(-) delete mode 100644 gcc/m2/gm2-libs-coroutines/SYSTEM.def delete mode 100644 gcc/m2/gm2-libs-coroutines/SYSTEM.mod delete mode 100644 gcc/m2/gm2-libs-iso/ComplexMath.def delete mode 100644 gcc/m2/gm2-libs-iso/ComplexMath.mod delete mode 100644 gcc/m2/gm2-libs-iso/LongComplexMath.def delete mode 100644 gcc/m2/gm2-libs-iso/LongComplexMath.mod delete mode 100644 gcc/m2/gm2-libs-iso/SYSTEM.def delete mode 100644 gcc/m2/gm2-libs-iso/SYSTEM.mod delete mode 100644 gcc/m2/gm2-libs-iso/ShortComplexMath.def delete mode 100644 gcc/m2/gm2-libs-iso/ShortComplexMath.mod delete mode 100644 gcc/m2/gm2-libs/Builtins.def delete mode 100644 gcc/m2/gm2-libs/Builtins.mod delete mode 100644 gcc/m2/gm2-libs/SYSTEM.def delete mode 100644 gcc/m2/gm2-libs/SYSTEM.mod delete mode 100644 gcc/m2/gm2-libs/cbuiltin.def create mode 100644 gcc/m2/tools-src/mktargetsrc.py create mode 100644 libgm2/ax_python_devel.m4 diff --git a/gcc/doc/gm2.texi b/gcc/doc/gm2.texi index 6e14ffe64d3..b4ecef2c5a0 100644 --- a/gcc/doc/gm2.texi +++ b/gcc/doc/gm2.texi @@ -406,6 +406,10 @@ The default implementation and module filename suffix is @file{.def}. If this option is used GNU Modula-2 will still fall back to this default if a requested definition module is not found. +@item -fdump-builtins +Display all builtin procedure functions. +This is an internal command line option. + @item -fdump-system-exports display all inbuilt system items. This is an internal command-line option. diff --git a/gcc/m2/Make-lang.in b/gcc/m2/Make-lang.in index 11079927eb8..dd4d6e688d6 100644 --- a/gcc/m2/Make-lang.in +++ b/gcc/m2/Make-lang.in @@ -38,6 +38,13 @@ GM2_1 = ./gm2 -B./m2/stage1 -g -fm2-g $(CM2DEP) GM2_FOR_TARGET = $(STAGE_CC_WRAPPER) ./gm2 -B./ -B$(build_tooldir)/bin/ -L$(objdir)/../ld $(TFLAGS) +define escape_path +$(shell echo "$(1)" | sed 's/ /\\ /g') +endef + +GM2_FOR_TARGET_ESC := $(call escape_path,$(GM2_FOR_TARGET)) + + # FIXME: Get from gcc-plugin.m4 instead of hardcoding. ifeq (,$(findstring darwin,$(host))) soext=.so @@ -57,13 +64,6 @@ TEXISRC = $(srcdir)/doc/gm2.texi \ m2/Builtins.texi \ m2/gpl_v3_without_node.texi -RSTSRC = $(srcdir)/doc/gm2.texi \ - m2/gm2-libs.rst \ - m2/gm2-ebnf.rst \ - m2/SYSTEM-pim.rst \ - m2/SYSTEM-iso.rst \ - m2/Builtins.rst - # Define the names for selecting modula-2 in LANGUAGES. m2 modula-2 modula2: gm2$(exeext) xgcc$(exeext) cc1gm2$(exeext) $(GCC_PASSES) m2.serial = cc1gm2$(exeext) @@ -242,31 +242,17 @@ m2/gm2-libs.texi: gm2-libs.texi-check; @true ifeq ($(HAVE_PYTHON),yes) gm2-libs.texi-check: m2/SYSTEM-pim.texi m2/SYSTEM-iso.texi m2/Builtins.texi \ - $(objdir)/m2/gm2-libs-coroutines/SYSTEM.def + m2/gm2-libs-coroutines/SYSTEM.def -test -d m2/gm2-libs-log || $(mkinstalldirs) m2/gm2-libs-log -test -d m2/gm2-libs-iso || $(mkinstalldirs) m2/gm2-libs-iso -test -d m2/gm2-libs || $(mkinstalldirs) m2/gm2-libs - $(PYTHON) $(srcdir)/m2/tools-src/def2doc.py -t -uLibraries -s$(srcdir)/m2 -b$(objdir)/m2 -o $(objdir)/m2/gm2-libs.texi + $(PYTHON) $(srcdir)/m2/tools-src/def2doc.py -t -uLibraries -s$(srcdir)/m2 -b$(objdir)/m2 -o m2/gm2-libs.texi else gm2-libs.texi-check: - cp $(srcdir)/m2/target-independent/m2/gm2-libs.texi $(objdir)/m2/gm2-libs.texi + cp $(srcdir)/m2/target-independent/m2/gm2-libs.texi m2/gm2-libs.texi endif $(STAMP) gm2-libs.texi-check -# gm2-libs.rst - -m2/gm2-libs.rst: gm2-libs.rst-check; @true - -ifeq ($(HAVE_PYTHON),yes) -gm2-libs.rst-check: m2/SYSTEM-pim.texi m2/SYSTEM-iso.texi m2/Builtins.texi \ - $(objdir)/m2/gm2-libs-coroutines/SYSTEM.def - $(PYTHON) $(srcdir)/m2/tools-src/def2doc.py -x -uLibraries -s$(srcdir)/m2 -b$(objdir)/m2 -o $(objdir)/m2/gm2-libs.rst -else -gm2-libs.rst-check: - cp $(srcdir)/m2/target-independent/m2/gm2-libs.rst $(objdir)/m2/gm2-libs.rst -endif - $(STAMP) gm2-libs.rst-check - # gm2-ebnf.texi m2/gm2-ebnf.texi: gm2-ebnf.texi-check; @true @@ -275,93 +261,45 @@ gm2-ebnf.texi-check: $(PGE) $(srcdir)/m2/gm2-compiler/P0SyntaxCheck.bnf $(PGE) -c -p -t -f $(srcdir)/m2/gm2-compiler/P0SyntaxCheck.bnf -o m2/gm2-ebnf.texi $(STAMP) gm2-ebnf.texi-check -# gm2-ebnf.rst - -m2/gm2-ebnf.rst: gm2-ebnf.rst-check; @true - -gm2-ebnf.rst-check: $(PGE) $(srcdir)/m2/gm2-compiler/P0SyntaxCheck.bnf - $(PGE) -c -p -t -f $(srcdir)/m2/gm2-compiler/P0SyntaxCheck.bnf -o m2/gm2-ebnf.rst - $(STAMP) gm2-ebnf.rst-check - # SYSTEM-pim.texi m2/SYSTEM-pim.texi: SYSTEM-pim-texi-check; @true ifeq ($(HAVE_PYTHON),yes) -SYSTEM-pim-texi-check: $(objdir)/m2/gm2-libs/SYSTEM.def - $(PYTHON) $(srcdir)/m2/tools-src/def2doc.py -t -b$(objdir)/m2 -f$(objdir)/m2/gm2-libs/SYSTEM.def -o $(objdir)/m2/SYSTEM-pim.texi +SYSTEM-pim-texi-check: m2/gm2-libs-pim-common/SYSTEM.def + $(PYTHON) $(srcdir)/m2/tools-src/def2doc.py -t -s$(srcdir) -fm2/gm2-libs-pim-common/SYSTEM.def -o m2/SYSTEM-pim.texi else -SYSTEM-pim-texi-check: $(objdir)/m2/gm2-libs/SYSTEM.def - cp $(srcdir)/m2/target-independent/m2/SYSTEM-pim.texi $(objdir)/m2/SYSTEM-pim.texi +SYSTEM-pim-texi-check: m2/gm2-libs-pim-common/SYSTEM.def + cp $(srcdir)/m2/target-independent/m2/SYSTEM-pim.texi m2/SYSTEM-pim.texi endif $(STAMP) SYSTEM-pim-texi-check -# SYSTEM-pim.rst - -m2/SYSTEM-pim.rst: SYSTEM-pim-rst-check; @true - -ifeq ($(HAVE_PYTHON),yes) -SYSTEM-pim-rst-check: $(objdir)/m2/gm2-libs/SYSTEM.def - $(PYTHON) $(srcdir)/m2/tools-src/def2doc.py -x -b$(objdir)/m2 -f$(objdir)/m2/gm2-libs/SYSTEM.def -o $(objdir)/m2/SYSTEM-pim.rst -else -SYSTEM-pim-rst-check: $(objdir)/m2/gm2-libs/SYSTEM.def - cp $(srcdir)/m2/target-independent/m2/SYSTEM-pim.rst $(objdir)/m2/SYSTEM-pim.rst -endif - $(STAMP) SYSTEM-pim-rst-check - -# SYSTEM-pim.texi +# SYSTEM-iso.texi m2/SYSTEM-iso.texi: SYSTEM-iso.texi-check; @true ifeq ($(HAVE_PYTHON),yes) -SYSTEM-iso.texi-check: $(objdir)/m2/gm2-libs-iso/SYSTEM.def - $(PYTHON) $(srcdir)/m2/tools-src/def2doc.py -t -b$(objdir)/m2 -f$(objdir)/m2/gm2-libs-iso/SYSTEM.def -o $(objdir)/m2/SYSTEM-iso.texi +SYSTEM-iso.texi-check: m2/gm2-libs-iso-common/SYSTEM.def + $(PYTHON) $(srcdir)/m2/tools-src/def2doc.py -t -s$(srcdir) -fm2/gm2-libs-iso-common/SYSTEM.def -o m2/SYSTEM-iso.texi else -SYSTEM-iso.texi-check: $(objdir)/m2/gm2-libs-iso/SYSTEM.def - cp $(srcdir)/m2/target-independent/m2/SYSTEM-iso.texi $(objdir)/m2/SYSTEM-iso.texi +SYSTEM-iso.texi-check: m2/gm2-libs-iso-common/SYSTEM.def + cp $(srcdir)/m2/target-independent/m2/SYSTEM-iso.texi m2/SYSTEM-iso.texi endif $(STAMP) SYSTEM-iso.texi-check -# SYSTEM-pim.rst - -m2/SYSTEM-iso.rst: SYSTEM-iso.rst-check; @true - -ifeq ($(HAVE_PYTHON),yes) -SYSTEM-iso.rst-check: $(objdir)/m2/gm2-libs-iso/SYSTEM.def - $(PYTHON) $(srcdir)/m2/tools-src/def2doc.py -x -b$(objdir)/m2 -f$(objdir)/m2/gm2-libs-iso/SYSTEM.def -o $(objdir)/m2/SYSTEM-iso.rst -else -SYSTEM-iso.rst-check: $(objdir)/m2/gm2-libs-iso/SYSTEM.def - cp $(srcdir)/m2/target-independent/m2/SYSTEM-iso.rst $(objdir)/m2/SYSTEM-iso.rst -endif - $(STAMP) SYSTEM-iso.rst-check - - # m2/Builtins.texi m2/Builtins.texi: Builtins.texi-check; @true ifeq ($(HAVE_PYTHON),yes) -Builtins.texi-check: m2/gm2-libs/Builtins.def - $(PYTHON) $(srcdir)/m2/tools-src/def2doc.py -t -b./ -f$(srcdir)/m2/gm2-libs/Builtins.def -o $(objdir)/m2/Builtins.texi +Builtins.texi-check: m2/gm2-libs-pim-common/Builtins.def + $(PYTHON) $(srcdir)/m2/tools-src/def2doc.py -t -s$(srcdir) -fm2/gm2-libs-pim-common/Builtins.def -o m2/Builtins.texi else -Builtins.texi-check: m2/gm2-libs/Builtins.def - cp $(srcdir)/m2/target-independent/m2/Builtins.texi $(objdir)/m2/Builtins.texi +Builtins.texi-check: m2/gm2-libs-pim-common/Builtins.def + cp $(srcdir)/m2/target-independent/m2/Builtins.texi m2/Builtins.texi endif $(STAMP) Builtins.texi-check -# m2/Builtins.rst - -m2/Builtins.rst: Builtins.rst-check; @true - -ifeq ($(HAVE_PYTHON),yes) -Builtins.rst-check: m2/gm2-libs/Builtins.def - $(PYTHON) $(srcdir)/m2/tools-src/def2doc.py -x -b./ -f$(srcdir)/m2/gm2-libs/Builtins.def -o $(objdir)/m2/Builtins.rst -else -Builtins.rst-check: m2/gm2-libs/Builtins.def - cp $(srcdir)/m2/target-independent/m2/Builtins.rst $(objdir)/m2/Builtins.rst -endif - $(STAMP) Builtins.rst-check - m2/gpl_v3_without_node.texi: doc/include/gpl_v3.texi grep -v "^@node" $< > $@ @@ -496,6 +434,7 @@ MC_COPYRIGHT= MC_ARGS= --olang=c++ \ --h-file-prefix=$(SRC_PREFIX) \ + -I$(srcdir)/m2/gm2-libs-pim-common \ -I$(srcdir)/m2/gm2-libs \ -I$(srcdir)/m2/gm2-compiler \ -I$(srcdir)/m2/gm2-libiberty \ @@ -1458,7 +1397,8 @@ GM2_BOOT_INCLUDES=-I. \ -Im2/gm2-compiler-boot \ -I$(srcdir)m2/gm2-gcc \ -Im2/gm2-libiberty \ - -I$(srcdir)/m2/gm2-libiberty + -I$(srcdir)/m2/gm2-libiberty \ + -I$(srcdir)/m2/mc-boot-ch GCC_COLOR=m2/gm2-gcc/m2color.o diagnostic-color.o @@ -1470,12 +1410,17 @@ m2/boot-bin/mc$(exeext): $(BUILD-MC-BOOT-O) $(BUILD-MC-INTERFACE-O) \ m2/mc-boot/$(SRC_PREFIX)%.o: m2/mc-boot/$(SRC_PREFIX)%.cc m2/gm2-libs/gm2-libs-host.h -test -d $(@D)/$(DEPDIR) || $(mkinstalldirs) $(@D)/$(DEPDIR) - $(CXX) $(CM2DEP) $(CXXFLAGS) $(GM2_PICFLAGS) $(MC_SRC_FLAGS) -g -c -I. -I$(srcdir)/m2/mc-boot-ch -I$(srcdir)/m2/mc-boot -I$(srcdir)/../include -I$(srcdir) $(INCLUDES) $< -o $@ + $(CXX) $(CM2DEP) $(CXXFLAGS) $(GM2_PICFLAGS) $(MC_SRC_FLAGS) \ + -g -c -I. -I$(srcdir)/m2/mc-boot-ch -I$(srcdir)/m2/mc-boot \ + -I$(srcdir)/../include -I$(srcdir) $(INCLUDES) \ + -I$(srcdir)/m2/mc-boot-ch $< -o $@ $(POSTCOMPILE) m2/mc-boot-ch/$(SRC_PREFIX)%.o: m2/mc-boot-ch/$(SRC_PREFIX)%.c m2/gm2-libs/gm2-libs-host.h -test -d $(@D)/$(DEPDIR) || $(mkinstalldirs) $(@D)/$(DEPDIR) - $(CXX) $(CM2DEP) $(CXXFLAGS) $(GM2_PICFLAGS) $(MC_SRC_FLAGS) -DHAVE_CONFIG_H -g -c -I. -Im2/gm2-libs -I$(srcdir)/../include -I$(srcdir) $(INCLUDES) -Im2/gm2-libs $< -o $@ + $(CXX) $(CM2DEP) $(CXXFLAGS) $(GM2_PICFLAGS) $(MC_SRC_FLAGS) -DHAVE_CONFIG_H \ + -g -c -I. -Im2/gm2-libs -I$(srcdir)/../include -I$(srcdir) $(INCLUDES) \ + -I$(srcdir)/m2/mc-boot-ch -Im2/gm2-libs $< -o $@ $(POSTCOMPILE) m2/mc-boot-ch/$(SRC_PREFIX)%.o: m2/mc-boot-ch/$(SRC_PREFIX)%.cc m2/gm2-libs/gm2-libs-host.h @@ -1536,47 +1481,56 @@ m2/gm2-libs-boot/wrapc.o: $(srcdir)/m2/gm2-libs-ch/wrapc.c m2/gm2-libs-boot/$(SR $(CXX) $(CM2DEP) -c -DHAVE_CONFIG_H $(CFLAGS) $(GM2_PICFLAGS) $(MC_SRC_FLAGS) -Im2/gm2-libs -I$(srcdir)/m2 -Im2 -I. -Im2/gm2-libs-boot -Im2/gm2-libs $(INCLUDES) $< -o $@ $(POSTCOMPILE) +MC_BOOT_INCLUDES = -Im2/gm2-libs -I$(srcdir)/m2 -Im2 -I. -Im2/gm2-libs-boot -I$(srcdir)/m2/mc-boot-ch + m2/gm2-libs-boot/UnixArgs.o: $(srcdir)/m2/gm2-libs-ch/UnixArgs.cc m2/gm2-libs-boot/$(SRC_PREFIX)UnixArgs.h $(GM2-LIBS-BOOT-H) -test -d $(@D)/$(DEPDIR) || $(mkinstalldirs) $(@D)/$(DEPDIR) - $(CXX) $(CM2DEP) -c -DIN_GCC $(CFLAGS) $(GM2_PICFLAGS) $(MC_SRC_FLAGS) -Im2/gm2-libs -I$(srcdir)/m2 -Im2 -I. -Im2/gm2-libs-boot $(INCLUDES) $< -o $@ + $(CXX) $(CM2DEP) -c -DIN_GCC $(CFLAGS) $(GM2_PICFLAGS) $(MC_SRC_FLAGS) \ + $(MC_BOOT_INCLUDES) $(INCLUDES) $< -o $@ $(POSTCOMPILE) m2/gm2-libs-boot/choosetemp.o: m2/gm2-libs-ch/choosetemp.c m2/gm2-libiberty/Gchoosetemp.h $(GM2-LIBS-BOOT-H) -test -d $(@D)/$(DEPDIR) || $(mkinstalldirs) $(@D)/$(DEPDIR) - $(CXX) $(CM2DEP) -c $(CFLAGS) $(GM2_PICFLAGS) $(MC_SRC_FLAGS) -Im2/gm2-libs -I$(srcdir)/m2 -Im2 -I. -Im2/gm2-libs-boot -Im2/gm2-libiberty -I$(srcdir)/m2/gm2-libiberty/ $(INCLUDES) $< -o $@ + $(CXX) $(CM2DEP) -c $(CFLAGS) $(GM2_PICFLAGS) $(MC_SRC_FLAGS) $(MC_BOOT_INCLUDES) \ + -Im2/gm2-libiberty -I$(srcdir)/m2/gm2-libiberty/ $(INCLUDES) $< -o $@ $(POSTCOMPILE) m2/gm2-libs-boot/errno.o: $(srcdir)/m2/gm2-libs-ch/errno.c m2/gm2-libs-boot/$(SRC_PREFIX)errno.h $(GM2-LIBS-BOOT-H) -test -d $(@D)/$(DEPDIR) || $(mkinstalldirs) $(@D)/$(DEPDIR) - $(CXX) $(CM2DEP) -c $(CFLAGS) $(GM2_PICFLAGS) $(MC_SRC_FLAGS) -Im2/gm2-libs -I$(srcdir)/m2 -Im2 -I. -Im2/gm2-libs-boot $(INCLUDES) $< -o $@ + $(CXX) $(CM2DEP) -c $(CFLAGS) $(GM2_PICFLAGS) $(MC_SRC_FLAGS) \ + $(MC_BOOT_INCLUDES) $(INCLUDES) $< -o $@ $(POSTCOMPILE) m2/gm2-libs-boot/dtoa.o: $(srcdir)/m2/gm2-libs-ch/dtoa.cc $(GM2-LIBS-BOOT-H) -test -d $(@D)/$(DEPDIR) || $(mkinstalldirs) $(@D)/$(DEPDIR) - $(CXX) $(CM2DEP) -c $(CFLAGS) $(GM2_PICFLAGS) $(MC_SRC_FLAGS) -Im2/gm2-libs-boot -Im2/gm2-libs -I$(srcdir)/m2 -Im2 -I. -Im2/gm2-libs-boot $(INCLUDES) $< -o $@ + $(CXX) $(CM2DEP) -c $(CFLAGS) $(GM2_PICFLAGS) $(MC_SRC_FLAGS) $(MC_BOOT_INCLUDES) \ + $(INCLUDES) $< -o $@ $(POSTCOMPILE) m2/gm2-libs-boot/ldtoa.o: $(srcdir)/m2/gm2-libs-ch/ldtoa.cc $(GM2-LIBS-BOOT-H) -test -d $(@D)/$(DEPDIR) || $(mkinstalldirs) $(@D)/$(DEPDIR) - $(CXX) $(CM2DEP) -c $(CFLAGS) $(GM2_PICFLAGS) $(MC_SRC_FLAGS) -Im2/gm2-libs-boot -Im2/gm2-libs -I$(srcdir)/m2 -Im2 -I. -Im2/gm2-libs-boot $(INCLUDES) $< -o $@ + $(CXX) $(CM2DEP) -c $(CFLAGS) $(GM2_PICFLAGS) $(MC_SRC_FLAGS) $(MC_BOOT_INCLUDES) \ + $(INCLUDES) $< -o $@ $(POSTCOMPILE) m2/gm2-libs-boot/termios.o: $(srcdir)/m2/gm2-libs-ch/termios.c $(BUILD-LIBS-BOOT-H) $(GM2-LIBS-BOOT-H) -test -d $(@D)/$(DEPDIR) || $(mkinstalldirs) $(@D)/$(DEPDIR) - $(CXX) $(CM2DEP) -c $(CFLAGS) $(GM2_PICFLAGS) $(MC_SRC_FLAGS) -Im2/gm2-libs -I$(srcdir)/m2 -Im2 -I. -Im2/gm2-libs-boot $(INCLUDES) $< -o $@ + $(CXX) $(CM2DEP) -c $(CFLAGS) $(GM2_PICFLAGS) $(MC_SRC_FLAGS) $(MC_BOOT_INCLUDES) \ + $(INCLUDES) $< -o $@ $(POSTCOMPILE) m2/gm2-libs-boot/SysExceptions.o: $(srcdir)/m2/gm2-libs-ch/SysExceptions.c \ m2/gm2-libs-boot/$(SRC_PREFIX)SysExceptions.h $(GM2-LIBS-BOOT-H) -test -d $(@D)/$(DEPDIR) || $(mkinstalldirs) $(@D)/$(DEPDIR) - $(CXX) $(CM2DEP) -c $(CFLAGS) $(GM2_PICFLAGS) $(MC_SRC_FLAGS) -Im2/gm2-libs -I$(srcdir)/m2 -Im2 -I. -Im2/gm2-libs-boot $(INCLUDES) $< -o $@ + $(CXX) $(CM2DEP) -c $(CFLAGS) $(GM2_PICFLAGS) $(MC_SRC_FLAGS) $(MC_BOOT_INCLUDES) \ + $(INCLUDES) $< -o $@ $(POSTCOMPILE) m2/gm2-libs-boot/SysStorage.o: $(srcdir)/m2/gm2-libs/SysStorage.mod $(MCDEPS) $(BUILD-BOOT-H) -test -d $(@D)/$(DEPDIR) || $(mkinstalldirs) $(@D)/$(DEPDIR) $(MC) -o=m2/gm2-libs-boot/SysStorage.c $(srcdir)/m2/gm2-libs/SysStorage.mod $(COMPILER) $(CM2DEP) -DIN_GCC -c $(CFLAGS) $(GM2_PICFLAGS) $(MC_SRC_FLAGS) \ - -I$(srcdir)/m2 -Im2 -I. -Im2/gm2-libs-boot $(MCINCLUDES) $(INCLUDES) \ + $(MC_BOOT_INCLUDES) $(MCINCLUDES) $(INCLUDES) \ m2/gm2-libs-boot/SysStorage.c -o m2/gm2-libs-boot/SysStorage.o $(POSTCOMPILE) @@ -1761,39 +1715,96 @@ m2/gm2config.aci: --target=$(target) --program-suffix=$(exeext)' ; \ fi -$(objdir)/m2/gm2-libs-min/SYSTEM.def: $(GM2_PROG_DEP) +ifeq ($(HAVE_PYTHON),yes) +m2/gm2-libs/Builtins.def: $(GM2_PROG_DEP) -test -d $(@D) || $(mkinstalldirs) $(@D) - $(SHELL) $(srcdir)/m2/tools-src/makeSystem -fpim \ - $(srcdir)/m2/gm2-libs-min/SYSTEM.def \ - $(srcdir)/m2/gm2-libs-min/SYSTEM.mod \ - -I$(srcdir)/m2/gm2-libs-min -I$(srcdir)/m2/gm2-libs \ - "$(GM2_FOR_TARGET)" $@ + $(PYTHON) $(srcdir)/m2/tools-src/mktargetsrc.py --fpim \ + -D=$(srcdir)/m2/gm2-libs-pim-common/Builtins.def \ + -M=$(srcdir)/m2/gm2-libs-pim-common/Builtins.mod \ + -I=$(srcdir)/m2/gm2-libs \ + -I=$(srcdir)/m2/gm2-libs-pim-common \ + -C=$(GM2_FOR_TARGET_ESC) -o $@ +else +m2/gm2-libs/Builtins.def: $(GM2_PROG_DEP) + -test -d $(@D) || $(mkinstalldirs) $(@D) + -cp -p $(srcdir)/m2/gm2-libs-common/Builtins.def $@ +endif -$(objdir)/m2/gm2-libs/SYSTEM.def: $(GM2_PROG_DEP) +ifeq ($(HAVE_PYTHON),yes) +m2/gm2-libs/Builtins.mod: $(GM2_PROG_DEP) + -test -d $(@D) || $(mkinstalldirs) $(@D) + $(PYTHON) $(srcdir)/m2/tools-src/mktargetsrc.py --fpim \ + -M=$(srcdir)/m2/gm2-libs-pim-common/Builtins.mod \ + -I=$(srcdir)/m2/gm2-libs \ + -I=$(srcdir)/m2/gm2-libs-pim-common \ + -C=$(GM2_FOR_TARGET_ESC) -o $@ +else +m2/gm2-libs/Builtins.mod: $(GM2_PROG_DEP) + -test -d $(@D) || $(mkinstalldirs) $(@D) + -cp -p $(srcdir)/m2/gm2-libs-common/Builtins.mod $@ +endif + +ifeq ($(HAVE_PYTHON),yes) +m2/gm2-libs/SYSTEM.def: $(GM2_PROG_DEP) + -test -d $(@D) || $(mkinstalldirs) $(@D) + $(PYTHON) $(srcdir)/m2/tools-src/mktargetsrc.py --fpim \ + -D=$(srcdir)/m2/gm2-libs-pim-common/SYSTEM.def \ + -M=$(srcdir)/m2/gm2-libs-pim-common/SYSTEM.mod \ + -I=$(srcdir)/m2/gm2-libs \ + -I=$(srcdir)/m2/gm2-libs-pim-common \ + -C=$(GM2_FOR_TARGET_ESC) -o $@ +else +m2/gm2-libs/SYSTEM.def: $(GM2_PROG_DEP) -test -d $(@D) || $(mkinstalldirs) $(@D) - echo "GM2_FOR_TARGET $(GM2_FOR_TARGET)" - echo "GCC_FOR_TARGET $(GCC_FOR_TARGET)" $(SHELL) $(srcdir)/m2/tools-src/makeSystem -fpim \ - $(srcdir)/m2/gm2-libs/SYSTEM.def \ - $(srcdir)/m2/gm2-libs/SYSTEM.mod \ + $(srcdir)/m2/gm2-libs-pim-common/SYSTEM.def \ + $(srcdir)/m2/gm2-libs-pim-common/SYSTEM.mod \ -I$(srcdir)/m2/gm2-libs \ + -I$(srcdir)/m2/gm2-libs-pim-common \ "$(GM2_FOR_TARGET)" $@ +endif -$(objdir)/m2/gm2-libs-iso/SYSTEM.def: $(GM2_PROG_DEP) +ifeq ($(HAVE_PYTHON),yes) +m2/gm2-libs-iso/SYSTEM.def: $(GM2_PROG_DEP) + -test -d $(@D) || $(mkinstalldirs) $(@D) + $(PYTHON) $(srcdir)/m2/tools-src/mktargetsrc.py --fpim \ + -D=$(srcdir)/m2/gm2-libs-iso-common/SYSTEM.def \ + -M=$(srcdir)/m2/gm2-libs-iso-common/SYSTEM.mod \ + -I=$(srcdir)/m2/gm2-libs \ + -I=$(srcdir)/m2/gm2-libs-iso-common \ + -C=$(GM2_FOR_TARGET_ESC) -o $@ +else +m2/gm2-libs-iso/SYSTEM.def: $(GM2_PROG_DEP) -test -d $(@D) || $(mkinstalldirs) $(@D) - $(SHELL) $(srcdir)/m2/tools-src/makeSystem -fiso \ - $(srcdir)/m2/gm2-libs-iso/SYSTEM.def \ - $(srcdir)/m2/gm2-libs-iso/SYSTEM.mod \ - -I$(srcdir)/m2/gm2-libs-iso -I$(srcdir)/m2/gm2-libs \ + $(SHELL) $(srcdir)/m2/tools-src/makeSystem -fpim \ + $(srcdir)/m2/gm2-libs-iso-common/SYSTEM.def \ + $(srcdir)/m2/gm2-libs-iso-common/SYSTEM.mod \ + -I$(srcdir)/m2/gm2-libs \ + -I$(srcdir)/m2/gm2-libs-iso-common \ "$(GM2_FOR_TARGET)" $@ +endif -$(objdir)/m2/gm2-libs-coroutines/SYSTEM.def: $(GM2_PROG_DEP) +ifeq ($(HAVE_PYTHON),yes) +m2/gm2-libs-coroutines/SYSTEM.def: $(GM2_PROG_DEP) + -test -d $(@D) || $(mkinstalldirs) $(@D) + $(PYTHON) $(srcdir)/m2/tools-src/mktargetsrc.py --fpim \ + -D=$(srcdir)/m2/gm2-libs-cor-common/SYSTEM.def \ + -M=$(srcdir)/m2/gm2-libs-cor-common/SYSTEM.mod \ + -I=$(srcdir)/m2/gm2-libs \ + -I=$(srcdir)/m2/gm2-libs-cor-common \ + -I=$(srcdir)/m2/gm2-libs-iso \ + -C=$(GM2_FOR_TARGET_ESC) -o $@ +else +m2/gm2-libs-coroutines/SYSTEM.def: $(GM2_PROG_DEP) -test -d $(@D) || $(mkinstalldirs) $(@D) $(SHELL) $(srcdir)/m2/tools-src/makeSystem -fpim \ - $(srcdir)/m2/gm2-libs-coroutines/SYSTEM.def \ - $(srcdir)/m2/gm2-libs-coroutines/SYSTEM.mod \ - -I$(srcdir)/m2/gm2-libs-coroutines -I$(srcdir)/m2/gm2-libs-iso -I$(srcdir)/m2/gm2-libs \ + $(srcdir)/m2/gm2-libs-cor-common/SYSTEM.def \ + $(srcdir)/m2/gm2-libs-cor-common/SYSTEM.mod \ + -I$(srcdir)/m2/gm2-libs \ + -I$(srcdir)/m2/gm2-libs-cor-common \ + -I$(srcdir)/m2/gm2-libs-iso \ "$(GM2_FOR_TARGET)" $@ +endif build-compiler: $(GM2-COMP-MODS:%.mod=m2/gm2-compiler/%.o) \ $(GM2-AUTO-MODS:%.mod=m2/gm2-compiler/%.o) \ @@ -1819,7 +1830,8 @@ m2/gm2-libs/%.o: $(srcdir)/m2/gm2-libs/%.mod $(MCDEPS) $(BUILD-BOOT-H) m2/gm2-libs/%.o: $(srcdir)/m2/gm2-libs-ch/%.c m2/gm2-libs/gm2-libs-host.h -test -d $(@D)/$(DEPDIR) || $(mkinstalldirs) $(@D)/$(DEPDIR) - $(CXX) $(CM2DEP) -DBUILD_GM2_LIBS -c $(CFLAGS) $(GM2_PICFLAGS) -Im2/gm2-libs -I$(srcdir)/m2 -Im2/gm2-libs-boot $(INCLUDES) $< -o $@ + $(CXX) $(CM2DEP) -DBUILD_GM2_LIBS -c $(CFLAGS) $(GM2_PICFLAGS) \ + -Im2/gm2-libs -I$(srcdir)/m2 -Im2/gm2-libs-boot $(INCLUDES) $< -o $@ $(POSTCOMPILE) m2/gm2-libs/%.o: $(srcdir)/m2/gm2-libs-ch/%.cc m2/gm2-libs/gm2-libs-host.h diff --git a/gcc/m2/gm2-compiler/M2Options.def b/gcc/m2/gm2-compiler/M2Options.def index c603b52ec3f..64eb9529e0d 100644 --- a/gcc/m2/gm2-compiler/M2Options.def +++ b/gcc/m2/gm2-compiler/M2Options.def @@ -708,6 +708,20 @@ PROCEDURE SetSources (value: BOOLEAN) ; PROCEDURE SetDumpSystemExports (value: BOOLEAN) ; +(* + SetDumpBuiltins - set by -fdump_builtins. +*) + +PROCEDURE SetDumpBuiltins (value: BOOLEAN) ; + + +(* + GetDumpBuiltins - return the value of -fdump_builtins. +*) + +PROCEDURE GetDumpBuiltins () : BOOLEAN ; + + (* SetSwig - *) diff --git a/gcc/m2/gm2-compiler/M2Options.mod b/gcc/m2/gm2-compiler/M2Options.mod index 4842d7a960c..5c05d53af3c 100644 --- a/gcc/m2/gm2-compiler/M2Options.mod +++ b/gcc/m2/gm2-compiler/M2Options.mod @@ -78,6 +78,7 @@ VAR UselistFilename, RuntimeModuleOverride, CppArgs : String ; + DumpBuiltinsFlag, EnableForward, DebugFunctionLineNumbers, DebugTraceQuad, (* -fm2-debug-trace=quad. *) @@ -1270,6 +1271,26 @@ BEGIN END SetDumpSystemExports ; +(* + SetDumpBuiltins - set the value of -fdump-builtins. +*) + +PROCEDURE SetDumpBuiltins (value: BOOLEAN) ; +BEGIN + DumpBuiltinsFlag := value +END SetDumpBuiltins ; + + +(* + GetDumpBuiltins - return the value of -fdump-builtins. +*) + +PROCEDURE GetDumpBuiltins () : BOOLEAN ; +BEGIN + RETURN DumpBuiltinsFlag +END GetDumpBuiltins ; + + (* SetSearchPath - *) @@ -2219,4 +2240,5 @@ BEGIN EnableForward := TRUE ; OffTBits := 0 ; (* Default to CSSIZE_T. *) WidesetFlag := TRUE ; + DumpBuiltinsFlag := FALSE ; END M2Options. diff --git a/gcc/m2/gm2-compiler/M2Quads.mod b/gcc/m2/gm2-compiler/M2Quads.mod index 14e0f4b3e19..dd8eb95ffe7 100644 --- a/gcc/m2/gm2-compiler/M2Quads.mod +++ b/gcc/m2/gm2-compiler/M2Quads.mod @@ -12807,8 +12807,7 @@ PROCEDURE BuildComponentValue ; VAR e1tok, e2tok, - consttok, - virtpos : CARDINAL ; + consttok : CARDINAL ; const, e1, e2 : CARDINAL ; nuldotdot, diff --git a/gcc/m2/gm2-gcc/m2builtins.cc b/gcc/m2/gm2-gcc/m2builtins.cc index a494ff7b107..01d429abc91 100644 --- a/gcc/m2/gm2-gcc/m2builtins.cc +++ b/gcc/m2/gm2-gcc/m2builtins.cc @@ -30,26 +30,27 @@ along with GNU Modula-2; see the file COPYING3. If not see #include "m2treelib.h" #include "m2type.h" #include "m2configure.h" +#include "m2options.h" #undef DEBUGGING #define GM2 -#define GM2_BUG_REPORT \ - "Please report this crash to the GNU Modula-2 mailing list " \ +#define GM2_BUG_REPORT \ + "Please report this crash to the GNU Modula-2 mailing list " \ "<[email protected]>\n" -#define ASSERT(X, Y) \ - { \ - if (!(X)) \ - { \ - debug_tree (Y); \ - internal_error ("%s:%d:assertion of condition %qs failed", __FILE__, __LINE__, \ - #X); \ - } \ +#define ASSERT(X, Y) \ + { \ + if (!(X)) \ + { \ + debug_tree (Y); \ + internal_error ("%s:%d:assertion of condition %qs failed", \ + __FILE__, __LINE__, #X); \ + } \ } -#define ERROR(X) \ - { \ - internal_error ("%s:%d:%s", __FILE__, __LINE__, X); \ +#define ERROR(X) \ + { \ + internal_error ("%s:%d:%s", __FILE__, __LINE__, X); \ } typedef enum { @@ -1447,6 +1448,15 @@ set_decl_function_code (tree decl, built_in_function f) fndecl.function_code = f; } +/* dump_available issue a printf containing builtin procedure name. */ + +static +void +dump_available (const char *name) +{ + printf ("builtin procedure function: %s\n", name); +} + /* Define a single builtin. */ static void @@ -1471,6 +1481,8 @@ define_builtin (enum built_in_function val, const char *name, tree prototype, bmd.function_node = decl; bmd.return_node = TREE_TYPE (prototype); vec_safe_push (builtin_macros, bmd); + if (M2Options_GetDumpBuiltins ()) + dump_available (libname); } /* Define a math type variant of the builtin function. */ @@ -1526,6 +1538,19 @@ define_builtin_gcc (void) "__builtin_ctzll", ECF_CONST | ECF_NOTHROW | ECF_LEAF); } +/* dump_builtin check the availability of name and dump + a message to stdout if -fdump-builtins was set. */ + +static +void +dump_builtin (struct builtin_function_entry *fe) +{ + if (M2Options_GetDumpBuiltins () && do_target_support_exists (fe)) + dump_available (fe->name); +} + +/* m2builtins_init declare function prototypes matching the available GCC builtins. */ + void m2builtins_init (location_t location) { @@ -1572,7 +1597,10 @@ m2builtins_init (location_t location) integer_type_node, tree_cons (NULL_TREE, long_long_unsigned_type_node, endlink)); for (i = 0; list_of_builtins[i].name != NULL; i++) - create_function_prototype (location, &list_of_builtins[i]); + { + create_function_prototype (location, &list_of_builtins[i]); + dump_builtin (&list_of_builtins[i]); + } define_builtin (BUILT_IN_TRAP, "__builtin_trap", build_function_type_list (void_type_node, NULL_TREE), @@ -1601,7 +1629,7 @@ m2builtins_init (location_t location) gm2_alloca_node = find_builtin_tree ("__builtin_alloca"); gm2_memcpy_node = find_builtin_tree ("__builtin_memcpy"); gm2_memset_node = find_builtin_tree ("__builtin_memset"); - gm2_strncpy_node = find_builtin_tree ("__builtin_strncpy"); + gm2_strncpy_node = find_builtin_tree ("__builtin_strncpy"); gm2_huge_valf_node = find_builtin_tree ("__builtin_huge_valf"); gm2_huge_val_node = find_builtin_tree ("__builtin_huge_val"); gm2_huge_vall_node = find_builtin_tree ("__builtin_huge_vall"); diff --git a/gcc/m2/gm2-gcc/m2options.h b/gcc/m2/gm2-gcc/m2options.h index 893fa41fcfd..fcec4a9105e 100644 --- a/gcc/m2/gm2-gcc/m2options.h +++ b/gcc/m2/gm2-gcc/m2options.h @@ -91,6 +91,8 @@ EXTERN bool M2Options_GetDebugFunctionLineNumbers (void); EXTERN void M2Options_SetSources (bool value); EXTERN bool M2Options_SetUnboundedByReference (bool value); EXTERN void M2Options_SetDumpSystemExports (bool value); +EXTERN void M2Options_SetDumpBuiltins (bool value); +EXTERN bool M2Options_GetDumpBuiltins (void); EXTERN void M2Options_SetOptimizing (unsigned int value); EXTERN bool M2Options_SetQuiet (bool value); EXTERN void M2Options_SetCC1Quiet (bool value); diff --git a/gcc/m2/gm2-lang.cc b/gcc/m2/gm2-lang.cc index c34e8c1da19..6ebaaa77751 100644 --- a/gcc/m2/gm2-lang.cc +++ b/gcc/m2/gm2-lang.cc @@ -864,6 +864,9 @@ gm2_langhook_handle_option ( case OPT_fmod_: M2Options_setmodextension (arg); return 1; + case OPT_fdump_builtins: + M2Options_SetDumpBuiltins (value); + return 1; case OPT_fdump_system_exports: M2Options_SetDumpSystemExports (value); return 1; diff --git a/gcc/m2/gm2-libs-coroutines/SYSTEM.def b/gcc/m2/gm2-libs-coroutines/SYSTEM.def deleted file mode 100644 index c5e23235d02..00000000000 --- a/gcc/m2/gm2-libs-coroutines/SYSTEM.def +++ /dev/null @@ -1,192 +0,0 @@ -(* SYSTEM.def provides access to COROUTINE primitives and underlying system. - -Copyright (C) 2002-2026 Free Software Foundation, Inc. -Contributed by Gaius Mulley <[email protected]>. - -This file is part of GNU Modula-2. - -GNU Modula-2 is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 3, or (at your option) -any later version. - -GNU Modula-2 is distributed in the hope that it will be useful, but -WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -General Public License for more details. - -Under Section 7 of GPL version 3, you are granted additional -permissions described in the GCC Runtime Library Exception, version -3.1, as published by the Free Software Foundation. - -You should have received a copy of the GNU General Public License and -a copy of the GCC Runtime Library Exception along with this program; -see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -<http://www.gnu.org/licenses/>. *) - -DEFINITION MODULE SYSTEM ; - -(* This module is designed to be used on a native operating system - rather than an embedded system as it implements the coroutine - primitives TRANSFER, IOTRANSFER and - NEWPROCESS through the GNU Pthread library. *) - -FROM COROUTINES IMPORT PROTECTION ; - -EXPORT QUALIFIED (* the following are built into the compiler: *) - ADDRESS, WORD, BYTE, CSIZE_T, CSSIZE_T, COFF_T, (* @SYSTEM_DATATYPES@ *) - ADR, TSIZE, ROTATE, SHIFT, THROW, TBITSIZE, - (* SIZE is exported depending upon -fpim2 and - -fpedantic. *) - (* The rest are implemented in SYSTEM.mod. *) - PROCESS, TRANSFER, NEWPROCESS, IOTRANSFER, - LISTEN, - ListenLoop, TurnInterrupts ; - - -TYPE - PROCESS = RECORD - context: INTEGER ; - END ; - -(* Note that the full list of system and sized datatypes include: - LOC, WORD, BYTE, ADDRESS, - - (and the non language standard target types) - - INTEGER8, INTEGER16, INTEGER32, INTEGER64, - CARDINAL8, CARDINAL16, CARDINAL32, CARDINAL64, - WORD16, WORD32, WORD64, BITSET8, BITSET16, - BITSET32, REAL32, REAL64, REAL128, COMPLEX32, - COMPLEX64, COMPLEX128, CSIZE_T, CSSIZE_T. - - Also note that the non-standard data types will - move into another module in the future. *) - -(* The following types are supported on this target: - @SYSTEM_TYPES@ -*) - - -(* - TRANSFER - save the current volatile environment into, p1. - Restore the volatile environment from, p2. -*) - -PROCEDURE TRANSFER (VAR p1: PROCESS; p2: PROCESS) ; - - -(* - NEWPROCESS - p is a parameterless procedure, a, is the origin of - the workspace used for the process stack and containing - the volatile environment of the process. StackSize, is - the maximum size of the stack in bytes which can be used - by this process. new, is the new process. -*) - -PROCEDURE NEWPROCESS (p: PROC; a: ADDRESS; StackSize: CARDINAL; VAR new: PROCESS) ; - - -(* - IOTRANSFER - saves the current volatile environment into, First, - and restores volatile environment, Second. - When an interrupt, InterruptNo, is encountered then - the reverse takes place. (The then current volatile - environment is shelved onto Second and First is resumed). - - NOTE: that upon interrupt the Second might not be the - same process as that before the original call to - IOTRANSFER. -*) - -PROCEDURE IOTRANSFER (VAR First, Second: PROCESS; InterruptNo: CARDINAL) ; - - -(* - LISTEN - briefly listen for any interrupts. -*) - -PROCEDURE LISTEN ; - - -(* - ListenLoop - should be called instead of users writing: - - LOOP - LISTEN - END - - It performs the same function but yields - control back to the underlying operating system - via a call to pth_select. - It also checks for deadlock. - This function returns when an interrupt occurs ie - a file descriptor becomes ready or a time event - expires. See the module RTint. -*) - -PROCEDURE ListenLoop ; - - -(* - TurnInterrupts - switches processor interrupts to the protection - level, to. It returns the old value. -*) - -PROCEDURE TurnInterrupts (to: PROTECTION) : PROTECTION ; - - -(* - all the functions below are declared internally to gm2 - ==================================================== - -PROCEDURE ADR (VAR v: <anytype>): ADDRESS; - (* Returns the address of variable v. *) - -PROCEDURE SIZE (v: <type>) : ZType; - (* Returns the number of BYTES used to store a v of - any specified <type>. Only available if -fpim2 is used. - *) - -PROCEDURE TSIZE (<type>) : CARDINAL; - (* Returns the number of BYTES used to store a value of the - specified <type>. - *) - -PROCEDURE ROTATE (val: <a set type>; - num: INTEGER): <type of first parameter>; - (* Returns a bit sequence obtained from val by rotating up or down - (left or right) by the absolute value of num. The direction is - down if the sign of num is negative, otherwise the direction is up. - *) - -PROCEDURE SHIFT (val: <a set type>; - num: INTEGER): <type of first parameter>; - (* Returns a bit sequence obtained from val by shifting up or down - (left or right) by the absolute value of num, introducing - zeros as necessary. The direction is down if the sign of - num is negative, otherwise the direction is up. - *) - -PROCEDURE THROW (i: INTEGER) <* noreturn *> ; - (* - THROW is a GNU extension and was not part of the PIM or ISO - standards. It throws an exception which will be caught by the EXCEPT - block (assuming it exists). This is a compiler builtin function which - interfaces to the GCC exception handling runtime system. - GCC uses the term throw, hence the naming distinction between - the GCC builtin and the Modula-2 runtime library procedure Raise. - The later library procedure Raise will call SYSTEM.THROW after - performing various housekeeping activities. - *) - -PROCEDURE TBITSIZE (<type>) : CARDINAL ; - (* Returns the minimum number of bits necessary to represent - <type>. This procedure function is only useful for determining - the number of bits used for any type field within a packed RECORD. - It is not particularly useful elsewhere since <type> might be - optimized for speed, for example a BOOLEAN could occupy a WORD. - *) -*) - -END SYSTEM. diff --git a/gcc/m2/gm2-libs-coroutines/SYSTEM.mod b/gcc/m2/gm2-libs-coroutines/SYSTEM.mod deleted file mode 100644 index a3285c9de8d..00000000000 --- a/gcc/m2/gm2-libs-coroutines/SYSTEM.mod +++ /dev/null @@ -1,251 +0,0 @@ -(* SYSTEM.mod provides access to COROUTINE primitives and underlying system. - -Copyright (C) 2002-2026 Free Software Foundation, Inc. -Contributed by Gaius Mulley <[email protected]>. - -This file is part of GNU Modula-2. - -GNU Modula-2 is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 3, or (at your option) -any later version. - -GNU Modula-2 is distributed in the hope that it will be useful, but -WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -General Public License for more details. - -Under Section 7 of GPL version 3, you are granted additional -permissions described in the GCC Runtime Library Exception, version -3.1, as published by the Free Software Foundation. - -You should have received a copy of the GNU General Public License and -a copy of the GCC Runtime Library Exception along with this program; -see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -<http://www.gnu.org/licenses/>. *) - -IMPLEMENTATION MODULE SYSTEM ; - -FROM RTco IMPORT init, initThread, transfer, currentThread, turnInterrupts ; -FROM RTint IMPORT Listen, AttachVector, IncludeVector, ExcludeVector ; - -IMPORT RTint ; - -FROM Storage IMPORT ALLOCATE ; -FROM M2RTS IMPORT Halt ; -FROM libc IMPORT printf, memcpy, memset ; - - -CONST - BitsPerBitset = MAX (BITSET) +1 ; - -TYPE - PtrToIOTransferState = POINTER TO IOTransferState ; - IOTransferState = RECORD - ptrToFirst, - ptrToSecond: POINTER TO PROCESS ; - next : PtrToIOTransferState ; - END ; - -VAR - initMain, - initGTh : BOOLEAN ; - - -(* - TRANSFER - save the current volatile environment into, p1. - Restore the volatile environment from, p2. -*) - -PROCEDURE TRANSFER (VAR p1: PROCESS; p2: PROCESS) ; -BEGIN - localMain (p1) ; - IF p1.context=p2.context - THEN - Halt('error when attempting to context switch to the same process', - __FILE__, __FUNCTION__, __LINE__) - END ; - transfer (p1.context, p2.context) -END TRANSFER ; - - -(* - NEWPROCESS - p is a parameterless procedure, a, is the origin of - the workspace used for the process stack and containing - the volatile environment of the process. StackSize, is - the maximum size of the stack in bytes which can be used - by this process. new, is the new process. -*) - -PROCEDURE NEWPROCESS (p: PROC; a: ADDRESS; StackSize: CARDINAL; VAR new: PROCESS) ; -BEGIN - localInit ; - WITH new DO - context := initThread (p, StackSize, MAX(PROTECTION)) - END -END NEWPROCESS ; - - -(* - IOTRANSFER - saves the current volatile environment into, First, - and restores volatile environment, Second. - When an interrupt, InterruptNo, is encountered then - the reverse takes place. (The then current volatile - environment is shelved onto Second and First is resumed). - - NOTE: that upon interrupt the Second might not be the - same process as that before the original call to - IOTRANSFER. -*) - -PROCEDURE IOTRANSFER (VAR First, Second: PROCESS; InterruptNo: CARDINAL) ; -VAR - iots: IOTransferState ; -BEGIN - localMain (First) ; - WITH iots DO - ptrToFirst := ADR (First) ; - ptrToSecond := ADR (Second) ; - next := AttachVector (InterruptNo, ADR (iots)) - END ; - IncludeVector (InterruptNo) ; - TRANSFER (First, Second) -END IOTRANSFER ; - - -(* - IOTransferHandler - handles interrupts related to a pending IOTRANSFER. -*) - -PROCEDURE IOTransferHandler (InterruptNo: CARDINAL; - Priority: CARDINAL ; - piots: PtrToIOTransferState) ; -VAR - old: PtrToIOTransferState ; -BEGIN - IF piots = NIL - THEN - Halt ('no processes attached to this interrupt vector which is associated with IOTRANSFER', - __FILE__, __FUNCTION__, __LINE__) - ELSE - WITH piots^ DO - old := AttachVector (InterruptNo, next) ; - IF old # piots - THEN - Halt ('inconsistancy of return result', - __FILE__, __FUNCTION__, __LINE__) - END ; - IF next=NIL - THEN - ExcludeVector (InterruptNo) - ELSE - printf ('odd vector has been chained\n') - END ; - TRANSFER (ptrToSecond^, ptrToFirst^) - END - END -END IOTransferHandler ; - - -(* - LISTEN - briefly listen for any interrupts. -*) - -PROCEDURE LISTEN ; -BEGIN - localInit ; - Listen (FALSE, IOTransferHandler, MIN (PROTECTION)) -END LISTEN ; - - -(* - ListenLoop - should be called instead of users writing: - - LOOP - LISTEN - END - - It performs the same function but yields - control back to the underlying operating system. - It also checks for deadlock. - This function returns when an interrupt occurs. - (File descriptor becomes ready or time event expires). -*) - -PROCEDURE ListenLoop ; -BEGIN - localInit ; - LOOP - Listen (TRUE, IOTransferHandler, MIN (PROTECTION)) - END -END ListenLoop ; - - -(* - TurnInterrupts - switches processor interrupts to the - protection level, to. It returns the old value. -*) - -PROCEDURE TurnInterrupts (to: PROTECTION) : PROTECTION ; -VAR - old: PROTECTION ; -BEGIN - localInit ; - old := VAL (PROTECTION, turnInterrupts (VAL (CARDINAL, to))) ; - Listen (FALSE, IOTransferHandler, to) ; - (* printf ("interrupt level is %d\n", currentIntValue); *) - RETURN old -END TurnInterrupts ; - - -(* - Finished - generates an error message. Modula-2 processes should never - terminate. -*) - -PROCEDURE Finished (p: ADDRESS) ; -BEGIN - Halt ('process terminated illegally', - __FILE__, __FUNCTION__, __LINE__) -END Finished ; - - -(* - localInit - checks to see whether we need to initialize pthread -*) - -PROCEDURE localInit ; -BEGIN - IF NOT initGTh - THEN - initGTh := TRUE ; - IF init () # 0 - THEN - Halt ("gthr did not initialize", - __FILE__, __FUNCTION__, __LINE__) - END ; - RTint.Init - END -END localInit ; - - -(* - localMain - creates the holder for the main process. -*) - -PROCEDURE localMain (VAR mainProcess: PROCESS) ; -BEGIN - IF NOT initMain - THEN - initMain := TRUE ; - WITH mainProcess DO - context := currentThread () - END - END -END localMain ; - - -BEGIN - initGTh := FALSE ; - initMain := FALSE -END SYSTEM. diff --git a/gcc/m2/gm2-libs-iso/ComplexMath.def b/gcc/m2/gm2-libs-iso/ComplexMath.def deleted file mode 100644 index bc3d32e151b..00000000000 --- a/gcc/m2/gm2-libs-iso/ComplexMath.def +++ /dev/null @@ -1,73 +0,0 @@ -(* Library module defined by the International Standard - Information technology - programming languages - BS ISO/IEC 10514-1:1996E Part 1: Modula-2, Base Language. - - Copyright ISO/IEC (International Organization for Standardization - and International Electrotechnical Commission) 1996-2021. - - It may be freely copied for the purpose of implementation (see page - 707 of the Information technology - Programming languages Part 1: - Modula-2, Base Language. BS ISO/IEC 10514-1:1996). *) - -DEFINITION MODULE ComplexMath; - - (* Mathematical functions for the type COMPLEX *) - -CONST - i = CMPLX (0.0, 1.0); - one = CMPLX (1.0, 0.0); - zero = CMPLX (0.0, 0.0); - -PROCEDURE __BUILTIN__ abs (z: COMPLEX): REAL; - (* Returns the length of z *) - -PROCEDURE __BUILTIN__ arg (z: COMPLEX): REAL; - (* Returns the angle that z subtends to the positive real axis *) - -PROCEDURE __BUILTIN__ conj (z: COMPLEX): COMPLEX; - (* Returns the complex conjugate of z *) - -PROCEDURE __BUILTIN__ power (base: COMPLEX; exponent: REAL): COMPLEX; - (* Returns the value of the number base raised to the power exponent *) - -PROCEDURE __BUILTIN__ sqrt (z: COMPLEX): COMPLEX; - (* Returns the principal square root of z *) - -PROCEDURE __BUILTIN__ exp (z: COMPLEX): COMPLEX; - (* Returns the complex exponential of z *) - -PROCEDURE __BUILTIN__ ln (z: COMPLEX): COMPLEX; - (* Returns the principal value of the natural logarithm of z *) - -PROCEDURE __BUILTIN__ sin (z: COMPLEX): COMPLEX; - (* Returns the sine of z *) - -PROCEDURE __BUILTIN__ cos (z: COMPLEX): COMPLEX; - (* Returns the cosine of z *) - -PROCEDURE __BUILTIN__ tan (z: COMPLEX): COMPLEX; - (* Returns the tangent of z *) - -PROCEDURE __BUILTIN__ arcsin (z: COMPLEX): COMPLEX; - (* Returns the arcsine of z *) - -PROCEDURE __BUILTIN__ arccos (z: COMPLEX): COMPLEX; - (* Returns the arccosine of z *) - -PROCEDURE __BUILTIN__ arctan (z: COMPLEX): COMPLEX; - (* Returns the arctangent of z *) - -PROCEDURE polarToComplex (abs, arg: REAL): COMPLEX; - (* Returns the complex number with the specified polar coordinates *) - -PROCEDURE scalarMult (scalar: REAL; z: COMPLEX): COMPLEX; - (* Returns the scalar product of scalar with z *) - -PROCEDURE IsCMathException (): BOOLEAN; - (* Returns TRUE if the current coroutine is in the exceptional - execution state because of the raising of an exception in a - routine from this module; otherwise returns FALSE. - *) - -END ComplexMath. - diff --git a/gcc/m2/gm2-libs-iso/ComplexMath.mod b/gcc/m2/gm2-libs-iso/ComplexMath.mod deleted file mode 100644 index d0a618c6dd0..00000000000 --- a/gcc/m2/gm2-libs-iso/ComplexMath.mod +++ /dev/null @@ -1,164 +0,0 @@ -(* ComplexMath.mod implement the ISO ComplexMath specification. - -Copyright (C) 2009-2026 Free Software Foundation, Inc. -Contributed by Gaius Mulley <[email protected]>. - -This file is part of GNU Modula-2. - -GNU Modula-2 is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 3, or (at your option) -any later version. - -GNU Modula-2 is distributed in the hope that it will be useful, but -WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -General Public License for more details. - -Under Section 7 of GPL version 3, you are granted additional -permissions described in the GCC Runtime Library Exception, version -3.1, as published by the Free Software Foundation. - -You should have received a copy of the GNU General Public License and -a copy of the GCC Runtime Library Exception along with this program; -see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -<http://www.gnu.org/licenses/>. *) - -IMPLEMENTATION MODULE ComplexMath ; - -IMPORT cbuiltin ; - - -(* Returns the length of z *) - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_cabs)) abs (z: COMPLEX): REAL; -BEGIN - RETURN cbuiltin.cabs (z) -END abs ; - - -(* Returns the angle that z subtends to the positive real axis *) - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_carg)) arg (z: COMPLEX): REAL; -BEGIN - RETURN cbuiltin.carg (z) -END arg ; - - -(* Returns the complex conjugate of z *) - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_conj)) conj (z: COMPLEX): COMPLEX; -BEGIN - RETURN cbuiltin.conj (z) -END conj ; - - -(* Returns the value of the number base raised to the power exponent *) - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_cpower)) power (base: COMPLEX; exponent: REAL): COMPLEX; -BEGIN - RETURN cbuiltin.cpow (base, exponent) -END power ; - - -(* Returns the principal square root of z *) - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_csqrt)) sqrt (z: COMPLEX): COMPLEX; -BEGIN - RETURN cbuiltin.csqrt (z) -END sqrt ; - - -(* Returns the complex exponential of z *) - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_cexp)) exp (z: COMPLEX): COMPLEX; -BEGIN - RETURN cbuiltin.cexp (z) -END exp ; - - -(* Returns the principal value of the natural logarithm of z *) - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_cln)) ln (z: COMPLEX): COMPLEX; -BEGIN - RETURN cbuiltin.clog (z) -END ln ; - - -(* Returns the sine of z *) - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_csin)) sin (z: COMPLEX): COMPLEX; -BEGIN - RETURN cbuiltin.csin (z) -END sin ; - - -(* Returns the cosine of z *) - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_ccos)) cos (z: COMPLEX): COMPLEX; -BEGIN - RETURN cbuiltin.ccos (z) -END cos ; - - -(* Returns the tangent of z *) - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_ctan)) tan (z: COMPLEX): COMPLEX; -BEGIN - RETURN cbuiltin.ctan (z) -END tan ; - - -(* Returns the arcsine of z *) - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_carcsin)) arcsin (z: COMPLEX): COMPLEX; -BEGIN - RETURN cbuiltin.casin (z) -END arcsin ; - - -(* Returns the arccosine of z *) - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_carccos)) arccos (z: COMPLEX): COMPLEX; -BEGIN - RETURN cbuiltin.cacos (z) -END arccos ; - - -(* Returns the arctangent of z *) - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_carctan)) arctan (z: COMPLEX): COMPLEX; -BEGIN - RETURN cbuiltin.catan (z) -END arctan ; - - -(* Returns the complex number with the specified polar coordinates *) - -PROCEDURE polarToComplex (abs, arg: REAL): COMPLEX; -BEGIN - RETURN CMPLX (abs*cbuiltin.cos(arg), abs*cbuiltin.sin(arg)) -END polarToComplex ; - - -(* Returns the scalar product of scalar with z *) - -PROCEDURE scalarMult (scalar: REAL; z: COMPLEX): COMPLEX; -BEGIN - RETURN CMPLX (RE(z)*scalar, IM(z)*scalar) -END scalarMult ; - - -(* Returns TRUE if the current coroutine is in the exceptional - execution state because of the raising of an exception in a - routine from this module; otherwise returns FALSE. -*) - -PROCEDURE IsCMathException (): BOOLEAN; -BEGIN - (* --fixme-- we should really attempt to catch sigfpe in these procedures *) - RETURN( FALSE ) -END IsCMathException ; - - -END ComplexMath. diff --git a/gcc/m2/gm2-libs-iso/LongComplexMath.def b/gcc/m2/gm2-libs-iso/LongComplexMath.def deleted file mode 100644 index cf092d4532a..00000000000 --- a/gcc/m2/gm2-libs-iso/LongComplexMath.def +++ /dev/null @@ -1,73 +0,0 @@ -(* Library module defined by the International Standard - Information technology - programming languages - BS ISO/IEC 10514-1:1996E Part 1: Modula-2, Base Language. - - Copyright ISO/IEC (International Organization for Standardization - and International Electrotechnical Commission) 1996-2021. - - It may be freely copied for the purpose of implementation (see page - 707 of the Information technology - Programming languages Part 1: - Modula-2, Base Language. BS ISO/IEC 10514-1:1996). *) - -DEFINITION MODULE LongComplexMath; - - (* Mathematical functions for the type LONGCOMPLEX *) - -CONST - i = CMPLX (0.0, 1.0); - one = CMPLX (1.0, 0.0); - zero = CMPLX (0.0, 0.0); - -PROCEDURE abs (z: LONGCOMPLEX): LONGREAL; - (* Returns the length of z *) - -PROCEDURE arg (z: LONGCOMPLEX): LONGREAL; - (* Returns the angle that z subtends to the positive real axis *) - -PROCEDURE conj (z: LONGCOMPLEX): LONGCOMPLEX; - (* Returns the complex conjugate of z *) - -PROCEDURE power (base: LONGCOMPLEX; exponent: LONGREAL): LONGCOMPLEX; - (* Returns the value of the number base raised to the power exponent *) - -PROCEDURE sqrt (z: LONGCOMPLEX): LONGCOMPLEX; - (* Returns the principal square root of z *) - -PROCEDURE exp (z: LONGCOMPLEX): LONGCOMPLEX; - (* Returns the complex exponential of z *) - -PROCEDURE ln (z: LONGCOMPLEX): LONGCOMPLEX; - (* Returns the principal value of the natural logarithm of z *) - -PROCEDURE sin (z: LONGCOMPLEX): LONGCOMPLEX; - (* Returns the sine of z *) - -PROCEDURE cos (z: LONGCOMPLEX): LONGCOMPLEX; - (* Returns the cosine of z *) - -PROCEDURE tan (z: LONGCOMPLEX): LONGCOMPLEX; - (* Returns the tangent of z *) - -PROCEDURE arcsin (z: LONGCOMPLEX): LONGCOMPLEX; - (* Returns the arcsine of z *) - -PROCEDURE arccos (z: LONGCOMPLEX): LONGCOMPLEX; - (* Returns the arccosine of z *) - -PROCEDURE arctan (z: LONGCOMPLEX): LONGCOMPLEX; - (* Returns the arctangent of z *) - -PROCEDURE polarToComplex (abs, arg: LONGREAL): LONGCOMPLEX; - (* Returns the complex number with the specified polar coordinates *) - -PROCEDURE scalarMult (scalar: LONGREAL; z: LONGCOMPLEX): LONGCOMPLEX; - (* Returns the scalar product of scalar with z *) - -PROCEDURE IsCMathException (): BOOLEAN; - (* Returns TRUE if the current coroutine is in the exceptional execution state - because of the raising of an exception in a routine from this module; otherwise - returns FALSE. - *) - -END LongComplexMath. - diff --git a/gcc/m2/gm2-libs-iso/LongComplexMath.mod b/gcc/m2/gm2-libs-iso/LongComplexMath.mod deleted file mode 100644 index 4bc414dd221..00000000000 --- a/gcc/m2/gm2-libs-iso/LongComplexMath.mod +++ /dev/null @@ -1,164 +0,0 @@ -(* LongComplexMath.mod implement the ISO LongComplexMath specification. - -Copyright (C) 2009-2026 Free Software Foundation, Inc. -Contributed by Gaius Mulley <[email protected]>. - -This file is part of GNU Modula-2. - -GNU Modula-2 is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 3, or (at your option) -any later version. - -GNU Modula-2 is distributed in the hope that it will be useful, but -WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -General Public License for more details. - -Under Section 7 of GPL version 3, you are granted additional -permissions described in the GCC Runtime Library Exception, version -3.1, as published by the Free Software Foundation. - -You should have received a copy of the GNU General Public License and -a copy of the GCC Runtime Library Exception along with this program; -see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -<http://www.gnu.org/licenses/>. *) - -IMPLEMENTATION MODULE LongComplexMath ; - -IMPORT cbuiltin ; - - -(* Returns the length of z *) - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_cabsl)) abs (z: LONGCOMPLEX): LONGREAL; -BEGIN - RETURN cbuiltin.cabsl (z) -END abs ; - - -(* Returns the angle that z subtends to the positive real axis *) - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_cargl)) arg (z: LONGCOMPLEX): LONGREAL; -BEGIN - RETURN cbuiltin.cargl (z) -END arg ; - - -(* Returns the complex conjugate of z *) - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_conjl)) conj (z: LONGCOMPLEX): LONGCOMPLEX; -BEGIN - RETURN cbuiltin.conjl (z) -END conj ; - - -(* Returns the value of the number base raised to the power exponent *) - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_cpowerl)) power (base: LONGCOMPLEX; exponent: LONGREAL): LONGCOMPLEX; -BEGIN - RETURN cbuiltin.cpowl (base, exponent) -END power ; - - -(* Returns the principal square root of z *) - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_csqrtl)) sqrt (z: LONGCOMPLEX): LONGCOMPLEX; -BEGIN - RETURN cbuiltin.csqrtl (z) -END sqrt ; - - -(* Returns the complex exponential of z *) - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_cexpl)) exp (z: LONGCOMPLEX): LONGCOMPLEX; -BEGIN - RETURN cbuiltin.cexpl (z) -END exp ; - - -(* Returns the principal value of the natural logarithm of z *) - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_clnl)) ln (z: LONGCOMPLEX): LONGCOMPLEX; -BEGIN - RETURN cbuiltin.clogl (z) -END ln ; - - -(* Returns the sine of z *) - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_csinl)) sin (z: LONGCOMPLEX): LONGCOMPLEX; -BEGIN - RETURN cbuiltin.csinl (z) -END sin ; - - -(* Returns the cosine of z *) - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_ccosl)) cos (z: LONGCOMPLEX): LONGCOMPLEX; -BEGIN - RETURN cbuiltin.ccosl (z) -END cos ; - - -(* Returns the tangent of z *) - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_ctanl)) tan (z: LONGCOMPLEX): LONGCOMPLEX; -BEGIN - RETURN cbuiltin.ctanl (z) -END tan ; - - -(* Returns the arcsine of z *) - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_carcsinl)) arcsin (z: LONGCOMPLEX): LONGCOMPLEX; -BEGIN - RETURN cbuiltin.casinl (z) -END arcsin ; - - -(* Returns the arccosine of z *) - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_carccosl)) arccos (z: LONGCOMPLEX): LONGCOMPLEX; -BEGIN - RETURN cbuiltin.cacosl (z) -END arccos ; - - -(* Returns the arctangent of z *) - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_carctanl)) arctan (z: LONGCOMPLEX): LONGCOMPLEX; -BEGIN - RETURN cbuiltin.catanl (z) -END arctan ; - - -(* Returns the complex number with the specified polar coordinates *) - -PROCEDURE polarToComplex (abs, arg: LONGREAL): LONGCOMPLEX; -BEGIN - RETURN CMPLX (abs*cbuiltin.cosl(arg), abs*cbuiltin.sinl(arg)) -END polarToComplex ; - - -(* Returns the scalar product of scalar with z *) - -PROCEDURE scalarMult (scalar: LONGREAL; z: LONGCOMPLEX): LONGCOMPLEX; -BEGIN - RETURN CMPLX (RE(z)*scalar, IM(z)*scalar) -END scalarMult ; - - -(* Returns TRUE if the current coroutine is in the exceptional - execution state because of the raising of an exception in a - routine from this module; otherwise returns FALSE. -*) - -PROCEDURE IsCMathException (): BOOLEAN; -BEGIN - (* --fixme-- we should really attempt to catch sigfpe in these procedures *) - RETURN( FALSE ) -END IsCMathException ; - - -END LongComplexMath. diff --git a/gcc/m2/gm2-libs-iso/SYSTEM.def b/gcc/m2/gm2-libs-iso/SYSTEM.def deleted file mode 100644 index 75d19ea2e62..00000000000 --- a/gcc/m2/gm2-libs-iso/SYSTEM.def +++ /dev/null @@ -1,155 +0,0 @@ -(* Library module defined by the International Standard - Information technology - programming languages - BS ISO/IEC 10514-1:1996E Part 1: Modula-2, Base Language. - - Copyright ISO/IEC (International Organization for Standardization - and International Electrotechnical Commission) 1996-2021. - - It may be freely copied for the purpose of implementation (see page - 707 of the Information technology - Programming languages Part 1: - Modula-2, Base Language. BS ISO/IEC 10514-1:1996). *) - -DEFINITION MODULE SYSTEM; - - (* Gives access to system programming facilities that are probably - non portable. *) - - (* The constants and types define underlying properties of storage *) - -EXPORT QUALIFIED BITSPERLOC, LOCSPERWORD, - LOC, BYTE, WORD, ADDRESS, CSIZE_T, CSSIZE_T, COFF_T, (* @SYSTEM_DATATYPES@ *) - ADDADR, SUBADR, DIFADR, MAKEADR, ADR, ROTATE, - SHIFT, CAST, TSIZE, - (* Internal GM2 compiler functions *) - THROW, TBITSIZE ; - -CONST - (* <implementation-defined constant> ; *) - BITSPERLOC = __ATTRIBUTE__ __BUILTIN__ ((BITS_PER_UNIT)) ; - (* <implementation-defined constant> ; *) - LOCSPERWORD = __ATTRIBUTE__ __BUILTIN__ ((UNITS_PER_WORD)) ; - (* <implementation-defined constant> ; *) - LOCSPERBYTE = 8 DIV BITSPERLOC ; - -(* Note that the full list of system and sized datatypes include: - LOC, WORD, BYTE, ADDRESS, - - (and the non language standard target types) - - INTEGER8, INTEGER16, INTEGER32, INTEGER64, - CARDINAL8, CARDINAL16, CARDINAL32, CARDINAL64, - WORD16, WORD32, WORD64, BITSET8, BITSET16, - BITSET32, REAL32, REAL64, REAL128, COMPLEX32, - COMPLEX64, COMPLEX128, CSIZE_T, CSSIZE_T. - - Also note that the non-standard data types will - move into another module in the future. *) - -(* - All the data types and procedures below are declared internally. - =============================================================== - -TYPE - @SYSTEM_TYPES@ - -TYPE - LOC; (* A system basic type. Values are the uninterpreted - contents of the smallest addressable unit of storage *) - ADDRESS = POINTER TO LOC; - WORD = ARRAY [0 .. LOCSPERWORD-1] OF LOC; - - (* BYTE and LOCSPERBYTE are provided if appropriate for machine *) - -TYPE - BYTE = ARRAY [0 .. LOCSPERBYTE-1] OF LOC; - -PROCEDURE ADDADR (addr: ADDRESS; offset: CARDINAL): ADDRESS; - (* Returns address given by (addr + offset), or may raise - an exception if this address is not valid. - *) - -PROCEDURE SUBADR (addr: ADDRESS; offset: CARDINAL): ADDRESS; - (* Returns address given by (addr - offset), or may raise an - exception if this address is not valid. - *) - -PROCEDURE DIFADR (addr1, addr2: ADDRESS): INTEGER; - (* Returns the difference between addresses (addr1 - addr2), - or may raise an exception if the arguments are invalid - or address space is non-contiguous. - *) - -PROCEDURE MAKEADR (high: <some type>; ...): ADDRESS; - (* Returns an address constructed from a list of values whose - types are implementation-defined, or may raise an - exception if this address is not valid. - - In GNU Modula-2, MAKEADR can take any number of arguments - which are mapped onto the type ADDRESS. The first parameter - maps onto the high address bits and subsequent parameters map - onto lower address bits. For example: - - a := MAKEADR(BYTE(0FEH), BYTE(0DCH), BYTE(0BAH), BYTE(098H), - BYTE(076H), BYTE(054H), BYTE(032H), BYTE(010H)) ; - - then the value of, a, on a 64 bit machine is: 0FEDCBA9876543210H - - The parameters do not have to be the same type, but constants - _must_ be typed. - *) - -PROCEDURE ADR (VAR v: <anytype>): ADDRESS; - (* Returns the address of variable v. *) - -PROCEDURE ROTATE (val: <a packedset type>; - num: INTEGER): <type of first parameter>; - (* Returns a bit sequence obtained from val by rotating up/right - or down/right by the absolute value of num. The direction is - down/right if the sign of num is negative, otherwise the direction - is up/left. - *) - -PROCEDURE SHIFT (val: <a packedset type>; - num: INTEGER): <type of first parameter>; - (* Returns a bit sequence obtained from val by shifting up/left - or down/right by the absolute value of num, introducing - zeros as necessary. The direction is down/right if the sign of - num is negative, otherwise the direction is up/left. - *) - -PROCEDURE CAST (<targettype>; val: <anytype>): <targettype>; - (* CAST is a type transfer function. Given the expression - denoted by val, it returns a value of the type <targettype>. - An invalid value for the target value or a - physical address alignment problem may raise an exception. - *) - -PROCEDURE TSIZE (<type>; ... ): CARDINAL; - (* Returns the number of LOCS used to store a value of the - specified <type>. The extra parameters, if present, - are used to distinguish variants in a variant record. - *) - -PROCEDURE THROW (i: INTEGER) <* noreturn *> ; - (* - THROW is a GNU extension and was not part of the PIM or ISO - standards. It throws an exception which will be caught by the - EXCEPT block (assuming it exists). This is a compiler builtin - function which interfaces to the GCC exception handling runtime - system. - GCC uses the term throw, hence the naming distinction between - the GCC builtin and the Modula-2 runtime library procedure Raise. - The later library procedure Raise will call SYSTEM.THROW after - performing various housekeeping activities. - *) - -PROCEDURE TBITSIZE (<type>) : CARDINAL ; - (* Returns the minimum number of bits necessary to represent - <type>. This procedure function is only useful for determining - the number of bits used for any type field within a packed RECORD. - It is not particularly useful elsewhere since <type> might be - optimized for speed, for example a BOOLEAN could occupy a WORD. - *) -*) - -END SYSTEM. diff --git a/gcc/m2/gm2-libs-iso/SYSTEM.mod b/gcc/m2/gm2-libs-iso/SYSTEM.mod deleted file mode 100644 index efd4d96c1c8..00000000000 --- a/gcc/m2/gm2-libs-iso/SYSTEM.mod +++ /dev/null @@ -1,29 +0,0 @@ -(* SYSTEM.mod implement the ISO SYSTEM specification. - -Copyright (C) 2004-2026 Free Software Foundation, Inc. -Contributed by Gaius Mulley <[email protected]>. - -This file is part of GNU Modula-2. - -GNU Modula-2 is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 3, or (at your option) -any later version. - -GNU Modula-2 is distributed in the hope that it will be useful, but -WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -General Public License for more details. - -Under Section 7 of GPL version 3, you are granted additional -permissions described in the GCC Runtime Library Exception, version -3.1, as published by the Free Software Foundation. - -You should have received a copy of the GNU General Public License and -a copy of the GCC Runtime Library Exception along with this program; -see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -<http://www.gnu.org/licenses/>. *) - -IMPLEMENTATION MODULE SYSTEM ; - -END SYSTEM. diff --git a/gcc/m2/gm2-libs-iso/ShortComplexMath.def b/gcc/m2/gm2-libs-iso/ShortComplexMath.def deleted file mode 100644 index 7cdd220947d..00000000000 --- a/gcc/m2/gm2-libs-iso/ShortComplexMath.def +++ /dev/null @@ -1,88 +0,0 @@ -(* ShortComplexMath.def provides access to the ShortComplex intrincics. - -Copyright (C) 2010-2026 Free Software Foundation, Inc. -Contributed by Gaius Mulley <[email protected]>. - -This file is part of GNU Modula-2. - -GNU Modula-2 is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 3, or (at your option) -any later version. - -GNU Modula-2 is distributed in the hope that it will be useful, but -WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -General Public License for more details. - -Under Section 7 of GPL version 3, you are granted additional -permissions described in the GCC Runtime Library Exception, version -3.1, as published by the Free Software Foundation. - -You should have received a copy of the GNU General Public License and -a copy of the GCC Runtime Library Exception along with this program; -see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -<http://www.gnu.org/licenses/>. *) - -DEFINITION MODULE ShortComplexMath; - - (* Mathematical functions for the type SHORTCOMPLEX *) - -CONST - i = CMPLX (0.0, 1.0); - one = CMPLX (1.0, 0.0); - zero = CMPLX (0.0, 0.0); - -PROCEDURE abs (z: SHORTCOMPLEX): SHORTREAL; - (* Returns the length of z *) - -PROCEDURE arg (z: SHORTCOMPLEX): SHORTREAL; - (* Returns the angle that z subtends to the positive real axis *) - -PROCEDURE conj (z: SHORTCOMPLEX): SHORTCOMPLEX; - (* Returns the complex conjugate of z *) - -PROCEDURE power (base: SHORTCOMPLEX; exponent: SHORTREAL): SHORTCOMPLEX; - (* Returns the value of the number base raised to the power exponent *) - -PROCEDURE sqrt (z: SHORTCOMPLEX): SHORTCOMPLEX; - (* Returns the principal square root of z *) - -PROCEDURE exp (z: SHORTCOMPLEX): SHORTCOMPLEX; - (* Returns the complex exponential of z *) - -PROCEDURE ln (z: SHORTCOMPLEX): SHORTCOMPLEX; - (* Returns the principal value of the natural logarithm of z *) - -PROCEDURE sin (z: SHORTCOMPLEX): SHORTCOMPLEX; - (* Returns the sine of z *) - -PROCEDURE cos (z: SHORTCOMPLEX): SHORTCOMPLEX; - (* Returns the cosine of z *) - -PROCEDURE tan (z: SHORTCOMPLEX): SHORTCOMPLEX; - (* Returns the tangent of z *) - -PROCEDURE arcsin (z: SHORTCOMPLEX): SHORTCOMPLEX; - (* Returns the arcsine of z *) - -PROCEDURE arccos (z: SHORTCOMPLEX): SHORTCOMPLEX; - (* Returns the arccosine of z *) - -PROCEDURE arctan (z: SHORTCOMPLEX): SHORTCOMPLEX; - (* Returns the arctangent of z *) - -PROCEDURE polarToComplex (abs, arg: SHORTREAL): SHORTCOMPLEX; - (* Returns the complex number with the specified polar coordinates *) - -PROCEDURE scalarMult (scalar: SHORTREAL; z: SHORTCOMPLEX): SHORTCOMPLEX; - (* Returns the scalar product of scalar with z *) - -PROCEDURE IsCMathException (): BOOLEAN; - (* Returns TRUE if the current coroutine is in the exceptional execution state - because of the raising of an exception in a routine from this module; otherwise - returns FALSE. - *) - -END ShortComplexMath. - diff --git a/gcc/m2/gm2-libs-iso/ShortComplexMath.mod b/gcc/m2/gm2-libs-iso/ShortComplexMath.mod deleted file mode 100644 index e7236a92bdd..00000000000 --- a/gcc/m2/gm2-libs-iso/ShortComplexMath.mod +++ /dev/null @@ -1,164 +0,0 @@ -(* ShortComplexMath.mod implements access to the ShortComplex intrincics. - -Copyright (C) 2009-2026 Free Software Foundation, Inc. -Contributed by Gaius Mulley <[email protected]>. - -This file is part of GNU Modula-2. - -GNU Modula-2 is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 3, or (at your option) -any later version. - -GNU Modula-2 is distributed in the hope that it will be useful, but -WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -General Public License for more details. - -Under Section 7 of GPL version 3, you are granted additional -permissions described in the GCC Runtime Library Exception, version -3.1, as published by the Free Software Foundation. - -You should have received a copy of the GNU General Public License and -a copy of the GCC Runtime Library Exception along with this program; -see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -<http://www.gnu.org/licenses/>. *) - -IMPLEMENTATION MODULE ShortComplexMath ; - -IMPORT cbuiltin ; - - -(* Returns the length of z *) - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_cabsf)) abs (z: SHORTCOMPLEX): SHORTREAL; -BEGIN - RETURN cbuiltin.cabsf (z) -END abs ; - - -(* Returns the angle that z subtends to the positive real axis *) - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_cargf)) arg (z: SHORTCOMPLEX): SHORTREAL; -BEGIN - RETURN cbuiltin.cargf (z) -END arg ; - - -(* Returns the complex conjugate of z *) - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_conjf)) conj (z: SHORTCOMPLEX): SHORTCOMPLEX; -BEGIN - RETURN cbuiltin.conjf (z) -END conj ; - - -(* Returns the value of the number base raised to the power exponent *) - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_cpowerf)) power (base: SHORTCOMPLEX; exponent: SHORTREAL): SHORTCOMPLEX; -BEGIN - RETURN cbuiltin.cpowf (base, exponent) -END power ; - - -(* Returns the principal square root of z *) - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_csqrtf)) sqrt (z: SHORTCOMPLEX): SHORTCOMPLEX; -BEGIN - RETURN cbuiltin.csqrtf (z) -END sqrt ; - - -(* Returns the complex exponential of z *) - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_cexpf)) exp (z: SHORTCOMPLEX): SHORTCOMPLEX; -BEGIN - RETURN cbuiltin.cexpf (z) -END exp ; - - -(* Returns the principal value of the natural logarithm of z *) - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_clnf)) ln (z: SHORTCOMPLEX): SHORTCOMPLEX; -BEGIN - RETURN cbuiltin.clogf (z) -END ln ; - - -(* Returns the sine of z *) - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_csinf)) sin (z: SHORTCOMPLEX): SHORTCOMPLEX; -BEGIN - RETURN cbuiltin.csinf (z) -END sin ; - - -(* Returns the cosine of z *) - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_ccosf)) cos (z: SHORTCOMPLEX): SHORTCOMPLEX; -BEGIN - RETURN cbuiltin.ccosf (z) -END cos ; - - -(* Returns the tangent of z *) - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_ctanf)) tan (z: SHORTCOMPLEX): SHORTCOMPLEX; -BEGIN - RETURN cbuiltin.ctanf (z) -END tan ; - - -(* Returns the arcsine of z *) - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_carcsinf)) arcsin (z: SHORTCOMPLEX): SHORTCOMPLEX; -BEGIN - RETURN cbuiltin.casinf (z) -END arcsin ; - - -(* Returns the arccosine of z *) - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_carccosf)) arccos (z: SHORTCOMPLEX): SHORTCOMPLEX; -BEGIN - RETURN cbuiltin.cacosf (z) -END arccos ; - - -(* Returns the arctangent of z *) - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_carctanf)) arctan (z: SHORTCOMPLEX): SHORTCOMPLEX; -BEGIN - RETURN cbuiltin.catanf (z) -END arctan ; - - -(* Returns the complex number with the specified polar coordinates *) - -PROCEDURE polarToComplex (abs, arg: SHORTREAL): SHORTCOMPLEX; -BEGIN - RETURN CMPLX (abs*cbuiltin.cosf(arg), abs*cbuiltin.sinf(arg)) -END polarToComplex ; - - -(* Returns the scalar product of scalar with z *) - -PROCEDURE scalarMult (scalar: SHORTREAL; z: SHORTCOMPLEX): SHORTCOMPLEX; -BEGIN - RETURN CMPLX (RE(z)*scalar, IM(z)*scalar) -END scalarMult ; - - -(* Returns TRUE if the current coroutine is in the exceptional - execution state because of the raising of an exception in a - routine from this module; otherwise returns FALSE. -*) - -PROCEDURE IsCMathException (): BOOLEAN; -BEGIN - (* --fixme-- we should really attempt to catch sigfpe in these procedures *) - RETURN( FALSE ) -END IsCMathException ; - - -END ShortComplexMath. diff --git a/gcc/m2/gm2-libs-min/SYSTEM.def b/gcc/m2/gm2-libs-min/SYSTEM.def index 6fe0bde8b3b..0a1a4e79abc 100644 --- a/gcc/m2/gm2-libs-min/SYSTEM.def +++ b/gcc/m2/gm2-libs-min/SYSTEM.def @@ -27,7 +27,9 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see DEFINITION MODULE SYSTEM ; EXPORT QUALIFIED BITSPERBYTE, BYTESPERWORD, - ADDRESS, WORD, BYTE, CSIZE_T, CSSIZE_T, COFF_T, (* @SYSTEM_DATATYPES@ *) + (* <SYSTEM_DATATYPES> *) + ADDRESS, WORD, BYTE, CSIZE_T, CSSIZE_T, COFF_T, + (* </SYSTEM_DATATYPES> *) ADR, TSIZE ; (* SIZE is also exported if -fpim2 is used *) @@ -38,7 +40,8 @@ CONST (* all the following types are declared internally to gm2 TYPE - @SYSTEM_TYPES@ + <SYSTEM_TYPES> + </SYSTEM_TYPES> *) diff --git a/gcc/m2/gm2-libs/Builtins.def b/gcc/m2/gm2-libs/Builtins.def deleted file mode 100644 index c0bb8425de1..00000000000 --- a/gcc/m2/gm2-libs/Builtins.def +++ /dev/null @@ -1,276 +0,0 @@ -(* Builtins.def provides access to all built-in functions. - -Copyright (C) 2001-2026 Free Software Foundation, Inc. -Contributed by Gaius Mulley <[email protected]>. - -This file is part of GNU Modula-2. - -GNU Modula-2 is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 3, or (at your option) -any later version. - -GNU Modula-2 is distributed in the hope that it will be useful, but -WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -General Public License for more details. - -Under Section 7 of GPL version 3, you are granted additional -permissions described in the GCC Runtime Library Exception, version -3.1, as published by the Free Software Foundation. - -You should have received a copy of the GNU General Public License and -a copy of the GCC Runtime Library Exception along with this program; -see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -<http://www.gnu.org/licenses/>. *) - -DEFINITION MODULE Builtins ; - -FROM SYSTEM IMPORT ADDRESS ; - -(* Floating point intrinsic procedure functions. *) - -PROCEDURE __BUILTIN__ isnanf (x: SHORTREAL) : INTEGER ; -PROCEDURE __BUILTIN__ isnan (x: REAL) : INTEGER ; -PROCEDURE __BUILTIN__ isnanl (x: LONGREAL) : INTEGER ; - -PROCEDURE __BUILTIN__ isfinitef (x: SHORTREAL) : INTEGER ; -PROCEDURE __BUILTIN__ isfinite (x: REAL) : INTEGER ; -PROCEDURE __BUILTIN__ isfinitel (x: LONGREAL) : INTEGER ; - -PROCEDURE __BUILTIN__ sinf (x: SHORTREAL) : SHORTREAL ; -PROCEDURE __BUILTIN__ sin (x: REAL) : REAL ; -PROCEDURE __BUILTIN__ sinl (x: LONGREAL) : LONGREAL ; - -PROCEDURE __BUILTIN__ cosf (x: SHORTREAL) : SHORTREAL ; -PROCEDURE __BUILTIN__ cos (x: REAL) : REAL ; -PROCEDURE __BUILTIN__ cosl (x: LONGREAL) : LONGREAL ; - -PROCEDURE __BUILTIN__ sqrtf (x: SHORTREAL) : SHORTREAL ; -PROCEDURE __BUILTIN__ sqrt (x: REAL) : REAL ; -PROCEDURE __BUILTIN__ sqrtl (x: LONGREAL) : LONGREAL ; - -PROCEDURE __BUILTIN__ atan2f (x, y: SHORTREAL) : SHORTREAL ; -PROCEDURE __BUILTIN__ atan2 (x, y: REAL) : REAL ; -PROCEDURE __BUILTIN__ atan2l (x, y: LONGREAL) : LONGREAL ; - -PROCEDURE __BUILTIN__ fabsf (x: SHORTREAL) : SHORTREAL ; -PROCEDURE __BUILTIN__ fabs (x: REAL) : REAL ; -PROCEDURE __BUILTIN__ fabsl (x: LONGREAL) : LONGREAL ; - -PROCEDURE __BUILTIN__ logf (x: SHORTREAL) : SHORTREAL ; -PROCEDURE __BUILTIN__ log (x: REAL) : REAL ; -PROCEDURE __BUILTIN__ logl (x: LONGREAL) : LONGREAL ; - -PROCEDURE __BUILTIN__ expf (x: SHORTREAL) : SHORTREAL ; -PROCEDURE __BUILTIN__ exp (x: REAL) : REAL ; -PROCEDURE __BUILTIN__ expl (x: LONGREAL) : LONGREAL ; - -PROCEDURE __BUILTIN__ log10f (x: SHORTREAL) : SHORTREAL ; -PROCEDURE __BUILTIN__ log10 (x: REAL) : REAL ; -PROCEDURE __BUILTIN__ log10l (x: LONGREAL) : LONGREAL ; - -PROCEDURE __BUILTIN__ exp10f (x: SHORTREAL) : SHORTREAL ; -PROCEDURE __BUILTIN__ exp10 (x: REAL) : REAL ; -PROCEDURE __BUILTIN__ exp10l (x: LONGREAL) : LONGREAL ; - -PROCEDURE __BUILTIN__ ilogbf (x: SHORTREAL) : INTEGER ; -PROCEDURE __BUILTIN__ ilogb (x: REAL) : INTEGER ; -PROCEDURE __BUILTIN__ ilogbl (x: LONGREAL) : INTEGER ; - -PROCEDURE __BUILTIN__ huge_val () : REAL ; -PROCEDURE __BUILTIN__ huge_valf () : SHORTREAL ; -PROCEDURE __BUILTIN__ huge_vall () : LONGREAL ; - -PROCEDURE __BUILTIN__ modf (x: REAL; VAR y: REAL) : REAL ; -PROCEDURE __BUILTIN__ modff (x: SHORTREAL; - VAR y: SHORTREAL) : SHORTREAL ; -PROCEDURE __BUILTIN__ modfl (x: LONGREAL; VAR y: LONGREAL) : LONGREAL ; - -PROCEDURE __BUILTIN__ signbit (r: REAL) : INTEGER ; -PROCEDURE __BUILTIN__ signbitf (s: SHORTREAL) : INTEGER ; -PROCEDURE __BUILTIN__ signbitl (l: LONGREAL) : INTEGER ; - -PROCEDURE __BUILTIN__ nextafter (x, y: REAL) : REAL ; -PROCEDURE __BUILTIN__ nextafterf (x, y: SHORTREAL) : SHORTREAL ; -PROCEDURE __BUILTIN__ nextafterl (x, y: LONGREAL) : LONGREAL ; - -PROCEDURE __BUILTIN__ nexttoward (x: REAL; y: LONGREAL) : REAL ; -PROCEDURE __BUILTIN__ nexttowardf (x: SHORTREAL; y: LONGREAL) : SHORTREAL ; -PROCEDURE __BUILTIN__ nexttowardl (x, y: LONGREAL) : LONGREAL ; - -PROCEDURE __BUILTIN__ scalbln (x: REAL; n: LONGINT) : REAL ; -PROCEDURE __BUILTIN__ scalblnf (x: SHORTREAL; n: LONGINT) : SHORTREAL ; -PROCEDURE __BUILTIN__ scalblnl (x: LONGREAL; n: LONGINT) : LONGREAL ; - -PROCEDURE __BUILTIN__ scalbn (x: REAL; n: INTEGER) : REAL ; -PROCEDURE __BUILTIN__ scalbnf (x: SHORTREAL; n: INTEGER) : SHORTREAL ; -PROCEDURE __BUILTIN__ scalbnl (x: LONGREAL; n: INTEGER) : LONGREAL ; - -PROCEDURE __BUILTIN__ isgreater (x, y: REAL) : INTEGER ; -PROCEDURE __BUILTIN__ isgreaterf (x, y: SHORTREAL) : INTEGER ; -PROCEDURE __BUILTIN__ isgreaterl (x, y: LONGREAL) : INTEGER ; - -PROCEDURE __BUILTIN__ isgreaterequal (x, y: REAL) : INTEGER ; -PROCEDURE __BUILTIN__ isgreaterequalf (x, y: SHORTREAL) : INTEGER ; -PROCEDURE __BUILTIN__ isgreaterequall (x, y: LONGREAL) : INTEGER ; - -PROCEDURE __BUILTIN__ isless (x, y: REAL) : INTEGER ; -PROCEDURE __BUILTIN__ islessf (x, y: SHORTREAL) : INTEGER ; -PROCEDURE __BUILTIN__ islessl (x, y: LONGREAL) : INTEGER ; - -PROCEDURE __BUILTIN__ islessequal (x, y: REAL) : INTEGER ; -PROCEDURE __BUILTIN__ islessequalf (x, y: SHORTREAL) : INTEGER ; -PROCEDURE __BUILTIN__ islessequall (x, y: LONGREAL) : INTEGER ; - -PROCEDURE __BUILTIN__ islessgreater (x, y: REAL) : INTEGER ; -PROCEDURE __BUILTIN__ islessgreaterf (x, y: SHORTREAL) : INTEGER ; -PROCEDURE __BUILTIN__ islessgreaterl (x, y: LONGREAL) : INTEGER ; - -PROCEDURE __BUILTIN__ isunordered (x, y: REAL) : INTEGER ; -PROCEDURE __BUILTIN__ isunorderedf (x, y: SHORTREAL) : INTEGER ; -PROCEDURE __BUILTIN__ isunorderedl (x, y: LONGREAL) : INTEGER ; - -PROCEDURE __BUILTIN__ iseqsig (x, y: REAL) : INTEGER ; -PROCEDURE __BUILTIN__ iseqsigf (x, y: SHORTREAL) : INTEGER ; -PROCEDURE __BUILTIN__ iseqsigl (x, y: LONGREAL) : INTEGER ; - -PROCEDURE __BUILTIN__ isnormal (r: REAL) : INTEGER ; -PROCEDURE __BUILTIN__ isnormalf (s: SHORTREAL) : INTEGER ; -PROCEDURE __BUILTIN__ isnormall (l: LONGREAL) : INTEGER ; - -PROCEDURE __BUILTIN__ isinf_sign (r: REAL) : INTEGER ; -PROCEDURE __BUILTIN__ isinf_signf (s: SHORTREAL) : INTEGER ; -PROCEDURE __BUILTIN__ isinf_signl (l: LONGREAL) : INTEGER ; - -(* Complex arithmetic intrincic procedure functions. *) - -PROCEDURE __BUILTIN__ cabsf (z: SHORTCOMPLEX) : SHORTREAL ; -PROCEDURE __BUILTIN__ cabs (z: COMPLEX) : REAL ; -PROCEDURE __BUILTIN__ cabsl (z: LONGCOMPLEX) : LONGREAL ; - -PROCEDURE __BUILTIN__ cargf (z: SHORTCOMPLEX) : SHORTREAL ; -PROCEDURE __BUILTIN__ carg (z: COMPLEX) : REAL ; -PROCEDURE __BUILTIN__ cargl (z: LONGCOMPLEX) : LONGREAL ; - -PROCEDURE __BUILTIN__ conjf (z: SHORTCOMPLEX) : SHORTCOMPLEX ; -PROCEDURE __BUILTIN__ conj (z: COMPLEX) : COMPLEX ; -PROCEDURE __BUILTIN__ conjl (z: LONGCOMPLEX) : LONGCOMPLEX ; - -PROCEDURE __BUILTIN__ cpowerf (base: SHORTCOMPLEX; - exp: SHORTREAL) : SHORTCOMPLEX ; -PROCEDURE __BUILTIN__ cpower (base: COMPLEX; exp: REAL) : COMPLEX ; -PROCEDURE __BUILTIN__ cpowerl (base: LONGCOMPLEX; - exp: LONGREAL) : LONGCOMPLEX ; - -PROCEDURE __BUILTIN__ csqrtf (z: SHORTCOMPLEX) : SHORTCOMPLEX ; -PROCEDURE __BUILTIN__ csqrt (z: COMPLEX) : COMPLEX ; -PROCEDURE __BUILTIN__ csqrtl (z: LONGCOMPLEX) : LONGCOMPLEX ; - -PROCEDURE __BUILTIN__ cexpf (z: SHORTCOMPLEX) : SHORTCOMPLEX ; -PROCEDURE __BUILTIN__ cexp (z: COMPLEX) : COMPLEX ; -PROCEDURE __BUILTIN__ cexpl (z: LONGCOMPLEX) : LONGCOMPLEX ; - -PROCEDURE __BUILTIN__ clnf (z: SHORTCOMPLEX) : SHORTCOMPLEX ; -PROCEDURE __BUILTIN__ cln (z: COMPLEX) : COMPLEX ; -PROCEDURE __BUILTIN__ clnl (z: LONGCOMPLEX) : LONGCOMPLEX ; - -PROCEDURE __BUILTIN__ csinf (z: SHORTCOMPLEX) : SHORTCOMPLEX ; -PROCEDURE __BUILTIN__ csin (z: COMPLEX) : COMPLEX ; -PROCEDURE __BUILTIN__ csinl (z: LONGCOMPLEX) : LONGCOMPLEX ; - -PROCEDURE __BUILTIN__ ccosf (z: SHORTCOMPLEX) : SHORTCOMPLEX ; -PROCEDURE __BUILTIN__ ccos (z: COMPLEX) : COMPLEX ; -PROCEDURE __BUILTIN__ ccosl (z: LONGCOMPLEX) : LONGCOMPLEX ; - -PROCEDURE __BUILTIN__ ctanf (z: SHORTCOMPLEX) : SHORTCOMPLEX ; -PROCEDURE __BUILTIN__ ctan (z: COMPLEX) : COMPLEX ; -PROCEDURE __BUILTIN__ ctanl (z: LONGCOMPLEX) : LONGCOMPLEX ; - -PROCEDURE __BUILTIN__ carcsinf (z: SHORTCOMPLEX) : SHORTCOMPLEX ; -PROCEDURE __BUILTIN__ carcsin (z: COMPLEX) : COMPLEX ; -PROCEDURE __BUILTIN__ carcsinl (z: LONGCOMPLEX) : LONGCOMPLEX ; - -PROCEDURE __BUILTIN__ carccosf (z: SHORTCOMPLEX) : SHORTCOMPLEX ; -PROCEDURE __BUILTIN__ carccos (z: COMPLEX) : COMPLEX ; -PROCEDURE __BUILTIN__ carccosl (z: LONGCOMPLEX) : LONGCOMPLEX ; - -PROCEDURE __BUILTIN__ carctanf (z: SHORTCOMPLEX) : SHORTCOMPLEX ; -PROCEDURE __BUILTIN__ carctan (z: COMPLEX) : COMPLEX ; -PROCEDURE __BUILTIN__ carctanl (z: LONGCOMPLEX) : LONGCOMPLEX ; - -(* memory and string intrincic procedure functions *) - -PROCEDURE __BUILTIN__ alloca (i: CARDINAL) : ADDRESS ; -PROCEDURE __BUILTIN__ memcpy (dest, src: ADDRESS; - nbytes: CARDINAL) : ADDRESS ; -PROCEDURE __BUILTIN__ index (s: ADDRESS; c: INTEGER) : ADDRESS ; -PROCEDURE __BUILTIN__ rindex (s: ADDRESS; c: INTEGER) : ADDRESS ; -PROCEDURE __BUILTIN__ memcmp (s1, s2: ADDRESS; - nbytes: CARDINAL) : INTEGER ; -PROCEDURE __BUILTIN__ memset (s: ADDRESS; c: INTEGER; - nbytes: CARDINAL) : ADDRESS ; -PROCEDURE __BUILTIN__ memmove (s1, s2: ADDRESS; - nbytes: CARDINAL) : ADDRESS ; -PROCEDURE __BUILTIN__ strcat (dest, src: ADDRESS) : ADDRESS ; -PROCEDURE __BUILTIN__ strncat (dest, src: ADDRESS; - nbytes: CARDINAL) : ADDRESS ; -PROCEDURE __BUILTIN__ strcpy (dest, src: ADDRESS) : ADDRESS ; -PROCEDURE __BUILTIN__ strncpy (dest, src: ADDRESS; - nbytes: CARDINAL) : ADDRESS ; -PROCEDURE __BUILTIN__ strcmp (s1, s2: ADDRESS) : INTEGER ; -PROCEDURE __BUILTIN__ strncmp (s1, s2: ADDRESS; - nbytes: CARDINAL) : INTEGER ; -PROCEDURE __BUILTIN__ strlen (s: ADDRESS) : INTEGER ; -PROCEDURE __BUILTIN__ strstr (haystack, needle: ADDRESS) : ADDRESS ; -PROCEDURE __BUILTIN__ strpbrk (s, accept: ADDRESS) : ADDRESS ; -PROCEDURE __BUILTIN__ strspn (s, accept: ADDRESS) : CARDINAL ; -PROCEDURE __BUILTIN__ strcspn (s, accept: ADDRESS) : CARDINAL ; -PROCEDURE __BUILTIN__ strchr (s: ADDRESS; c: INTEGER) : ADDRESS ; -PROCEDURE __BUILTIN__ strrchr (s: ADDRESS; c: INTEGER) : ADDRESS ; - -PROCEDURE __BUILTIN__ clz (value: CARDINAL) : INTEGER ; -PROCEDURE __BUILTIN__ clzll (value: LONGCARD) : INTEGER ; -PROCEDURE __BUILTIN__ ctz (value: CARDINAL) : INTEGER ; -PROCEDURE __BUILTIN__ ctzll (value: LONGCARD) : INTEGER ; - -(* - longjmp - this GCC builtin restricts the val to always 1. -*) -(* do not use these two builtins, as gcc, only really - anticipates that the Ada front end should use them - and it only uses them in its runtime exception handling. - We leave them here in the hope that someday they will - behave more like their libc counterparts. *) - -PROCEDURE __BUILTIN__ longjmp (env: ADDRESS; val: INTEGER) ; -PROCEDURE __BUILTIN__ setjmp (env: ADDRESS) : INTEGER ; - - -(* - frame_address - returns the address of the frame. - The current frame is obtained if level is 0, - the next level up if level is 1 etc. -*) - -PROCEDURE __BUILTIN__ frame_address (level: CARDINAL) : ADDRESS ; - - -(* - return_address - returns the return address of function. - The current function return address is - obtained if level is 0, - the next level up if level is 1 etc. -*) - -PROCEDURE __BUILTIN__ return_address (level: CARDINAL) : ADDRESS ; - - -(* - alloca_trace - this is a no-op which is used for internal debugging. -*) - -PROCEDURE alloca_trace (returned: ADDRESS; nBytes: CARDINAL) : ADDRESS ; - - -END Builtins. diff --git a/gcc/m2/gm2-libs/Builtins.mod b/gcc/m2/gm2-libs/Builtins.mod deleted file mode 100644 index 65009b1561e..00000000000 --- a/gcc/m2/gm2-libs/Builtins.mod +++ /dev/null @@ -1,828 +0,0 @@ -(* Builtins.mod provides access to all built-in functions. - -Copyright (C) 2001-2026 Free Software Foundation, Inc. -Contributed by Gaius Mulley <[email protected]>. - -This file is part of GNU Modula-2. - -GNU Modula-2 is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 3, or (at your option) -any later version. - -GNU Modula-2 is distributed in the hope that it will be useful, but -WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -General Public License for more details. - -Under Section 7 of GPL version 3, you are granted additional -permissions described in the GCC Runtime Library Exception, version -3.1, as published by the Free Software Foundation. - -You should have received a copy of the GNU General Public License and -a copy of the GCC Runtime Library Exception along with this program; -see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -<http://www.gnu.org/licenses/>. *) - -IMPLEMENTATION MODULE Builtins ; - -IMPORT cbuiltin, wrapc ; - - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_alloca)) alloca (i: CARDINAL) : ADDRESS ; -BEGIN - (* This routine will never be called as it allocates memory on - top of the current stack frame, which is automatically - deallocated upon its return. *) - HALT ; - RETURN NIL -END alloca ; - -PROCEDURE alloca_trace (returned: ADDRESS; nBytes: CARDINAL) : ADDRESS ; -BEGIN - (* this routine is only called if -fdebug-builtins is supplied - on the command line. The purpose of this routine is to allow - a developer to single step into this routine and inspect the - value of nBytes and returned. *) - RETURN returned -END alloca_trace ; - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_memcpy)) - memcpy (dest, src: ADDRESS; nbytes: CARDINAL) : ADDRESS ; -BEGIN - (* Hopefully the compiler will choose to use the __builtin_memcpy - function within GCC. This call is here just in case it cannot. - If the user sets a procedure variable to memcpy then the - code below could be run instead. *) - RETURN cbuiltin.memcpy (dest, src, nbytes) -END memcpy ; - - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_isnan)) isnanf (x: SHORTREAL) : INTEGER ; -BEGIN - RETURN wrapc.isnanf (x) -END isnanf ; - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_isnan)) isnan (x: REAL) : INTEGER ; -BEGIN - RETURN wrapc.isnan (x) -END isnan ; - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_isnan)) isnanl (x: LONGREAL) : INTEGER ; -BEGIN - RETURN wrapc.isnanl (x) -END isnanl ; - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_isfinite)) isfinitef (x: SHORTREAL) : INTEGER ; -BEGIN - RETURN wrapc.isfinitef (x) -END isfinitef ; - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_isfinite)) isfinite (x: REAL) : INTEGER ; -BEGIN - RETURN wrapc.isfinite (x) -END isfinite ; - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_isfinite)) isfinitel (x: LONGREAL) : INTEGER ; -BEGIN - RETURN wrapc.isfinitel (x) -END isfinitel ; - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_sin)) sin (x: REAL) : REAL ; -BEGIN - RETURN cbuiltin.sin (x) -END sin ; - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_sinf)) sinf (x: SHORTREAL) : SHORTREAL ; -BEGIN - RETURN cbuiltin.sinf (x) -END sinf ; - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_sinl)) sinl (x: LONGREAL) : LONGREAL ; -BEGIN - RETURN cbuiltin.sinl (x) -END sinl ; - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_cos)) cos (x: REAL) : REAL ; -BEGIN - RETURN cbuiltin.cos (x) -END cos ; - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_cosf)) cosf (x: SHORTREAL) : SHORTREAL ; -BEGIN - RETURN cbuiltin.cosf (x) -END cosf ; - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_cosl)) cosl (x: LONGREAL) : LONGREAL ; -BEGIN - RETURN cbuiltin.cosl (x) -END cosl ; - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_atan2)) atan2 (x, y: REAL) : REAL ; -BEGIN - RETURN cbuiltin.atan2 (x, y) -END atan2 ; - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_atan2f)) atan2f (x, y: SHORTREAL) : SHORTREAL ; -BEGIN - RETURN cbuiltin.atan2f (x, y) -END atan2f ; - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_atan2l)) atan2l (x, y: LONGREAL) : LONGREAL ; -BEGIN - RETURN cbuiltin.atan2l (x, y) -END atan2l ; - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_sqrt)) sqrt (x: REAL) : REAL ; -BEGIN - RETURN cbuiltin.sqrt (x) -END sqrt ; - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_sqrtf)) sqrtf (x: SHORTREAL) : SHORTREAL ; -BEGIN - RETURN cbuiltin.sqrtf (x) -END sqrtf ; - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_sqrtl)) sqrtl (x: LONGREAL) : LONGREAL ; -BEGIN - RETURN cbuiltin.sqrtl (x) -END sqrtl ; - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_fabs)) fabs (x: REAL) : REAL ; -BEGIN - RETURN cbuiltin.fabs (x) -END fabs ; - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_fabsf)) fabsf (x: SHORTREAL) : SHORTREAL ; -BEGIN - RETURN cbuiltin.fabsf (x) -END fabsf ; - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_fabsl)) fabsl (x: LONGREAL) : LONGREAL ; -BEGIN - RETURN cbuiltin.fabsl (x) -END fabsl ; - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_log)) log (x: REAL) : REAL ; -BEGIN - RETURN cbuiltin.log (x) -END log ; - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_logf)) logf (x: SHORTREAL) : SHORTREAL ; -BEGIN - RETURN cbuiltin.logf (x) -END logf ; - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_logl)) logl (x: LONGREAL) : LONGREAL ; -BEGIN - RETURN cbuiltin.logl (x) -END logl ; - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_exp)) exp (x: REAL) : REAL ; -BEGIN - RETURN cbuiltin.exp (x) -END exp ; - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_expf)) expf (x: SHORTREAL) : SHORTREAL ; -BEGIN - RETURN cbuiltin.expf (x) -END expf ; - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_expl)) expl (x: LONGREAL) : LONGREAL ; -BEGIN - RETURN cbuiltin.expl (x) -END expl ; - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_log10)) log10 (x: REAL) : REAL ; -BEGIN - RETURN cbuiltin.log10 (x) -END log10 ; - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_log10f)) log10f (x: SHORTREAL) : SHORTREAL ; -BEGIN - RETURN cbuiltin.log10f (x) -END log10f ; - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_log10l)) log10l (x: LONGREAL) : LONGREAL ; -BEGIN - RETURN cbuiltin.log10l (x) -END log10l ; - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_exp10)) exp10 (x: REAL) : REAL ; -BEGIN - RETURN cbuiltin.exp10 (x) -END exp10 ; - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_exp10f)) exp10f (x: SHORTREAL) : SHORTREAL ; -BEGIN - RETURN cbuiltin.exp10f (x) -END exp10f ; - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_exp10l)) exp10l (x: LONGREAL) : LONGREAL ; -BEGIN - RETURN cbuiltin.exp10l (x) -END exp10l ; - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_ilogb)) ilogb (x: REAL) : INTEGER ; -BEGIN - RETURN cbuiltin.ilogb (x) -END ilogb ; - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_ilogbf)) ilogbf (x: SHORTREAL) : INTEGER ; -BEGIN - RETURN cbuiltin.ilogbf (x) -END ilogbf ; - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_ilogbl)) ilogbl (x: LONGREAL) : INTEGER ; -BEGIN - RETURN cbuiltin.ilogbl (x) -END ilogbl ; - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_modf)) modf (x: REAL; VAR y: REAL) : REAL ; -BEGIN - RETURN cbuiltin.modf (x, y) -END modf ; - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_modff)) modff (x: SHORTREAL; VAR y: SHORTREAL) : SHORTREAL ; -BEGIN - RETURN cbuiltin.modff (x, y) -END modff ; - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_modfl)) modfl (x: LONGREAL; VAR y: LONGREAL) : LONGREAL ; -BEGIN - RETURN cbuiltin.modfl (x, y) -END modfl ; - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_signbit)) signbit (r: REAL) : INTEGER ; -BEGIN - RETURN wrapc.signbit (r) -END signbit ; - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_signbitf)) signbitf (s: SHORTREAL) : INTEGER ; -BEGIN - RETURN wrapc.signbitf (s) -END signbitf ; - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_signbitl)) signbitl (l: LONGREAL) : INTEGER ; -BEGIN - RETURN wrapc.signbitl (l) -END signbitl ; - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_nextafter)) nextafter (x, y: REAL) : REAL ; -BEGIN - RETURN cbuiltin.nextafter (x, y) -END nextafter ; - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_nextafterf)) nextafterf (x, y: SHORTREAL) : SHORTREAL ; -BEGIN - RETURN cbuiltin.nextafterf (x, y) -END nextafterf ; - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_nextafterl)) nextafterl (x, y: LONGREAL) : LONGREAL ; -BEGIN - RETURN cbuiltin.nextafterl (x, y) -END nextafterl ; - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_nexttoward)) nexttoward (x: REAL; y: LONGREAL) : REAL ; -BEGIN - RETURN cbuiltin.nexttoward (x, y) -END nexttoward ; - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_nexttowardf)) nexttowardf (x: SHORTREAL; y: LONGREAL) : SHORTREAL ; -BEGIN - RETURN cbuiltin.nexttowardf (x, y) -END nexttowardf ; - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_nexttowardl)) nexttowardl (x, y: LONGREAL) : LONGREAL ; -BEGIN - RETURN cbuiltin.nexttowardl (x, y) -END nexttowardl ; - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_scalbln)) scalbln (x: REAL; n: LONGINT) : REAL ; -BEGIN - RETURN cbuiltin.scalbln (x, n) -END scalbln ; - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_scalblnf)) scalblnf (x: SHORTREAL; n: LONGINT) : SHORTREAL ; -BEGIN - RETURN cbuiltin.scalblnf (x, n) -END scalblnf ; - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_scalblnl)) scalblnl (x: LONGREAL; n: LONGINT) : LONGREAL ; -BEGIN - RETURN cbuiltin.scalblnl (x, n) -END scalblnl ; - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_scalbn)) scalbn (x: REAL; n: INTEGER) : REAL ; -BEGIN - RETURN cbuiltin.scalbn (x, n) -END scalbn ; - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_scalbnf)) scalbnf (x: SHORTREAL; n: INTEGER) : SHORTREAL ; -BEGIN - RETURN cbuiltin.scalbnf (x, n) -END scalbnf ; - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_scalbnl)) scalbnl (x: LONGREAL; n: INTEGER) : LONGREAL ; -BEGIN - RETURN cbuiltin.scalbnl (x, n) -END scalbnl ; - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_cabsf)) cabsf (z: SHORTCOMPLEX) : SHORTREAL ; -BEGIN - RETURN cbuiltin.cabsf(z) -END cabsf ; - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_cabs)) cabs (z: COMPLEX) : REAL ; -BEGIN - RETURN cbuiltin.cabs(z) -END cabs ; - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_cabsl)) cabsl (z: LONGCOMPLEX) : LONGREAL ; -BEGIN - RETURN cbuiltin.cabsl(z) -END cabsl ; - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_cargf)) cargf (z: SHORTCOMPLEX) : SHORTREAL ; -BEGIN - RETURN cbuiltin.cargf(z) -END cargf ; - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_carg)) carg (z: COMPLEX) : REAL ; -BEGIN - RETURN cbuiltin.carg(z) -END carg ; - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_cargl)) cargl (z: LONGCOMPLEX) : LONGREAL ; -BEGIN - RETURN cbuiltin.cargl(z) -END cargl ; - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_conjf)) conjf (z: SHORTCOMPLEX) : SHORTCOMPLEX ; -BEGIN - RETURN cbuiltin.conjf(z) -END conjf ; - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_conj)) conj (z: COMPLEX) : COMPLEX ; -BEGIN - RETURN cbuiltin.conj(z) -END conj ; - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_conjl)) conjl (z: LONGCOMPLEX) : LONGCOMPLEX ; -BEGIN - RETURN cbuiltin.conjl(z) -END conjl ; - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_cpowf)) cpowerf (base: SHORTCOMPLEX; exp: SHORTREAL) : SHORTCOMPLEX ; -BEGIN - RETURN cbuiltin.cpowf(base, exp) -END cpowerf ; - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_cpow)) cpower (base: COMPLEX; exp: REAL) : COMPLEX ; -BEGIN - RETURN cbuiltin.cpow(base, exp) -END cpower ; - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_cpowl)) cpowerl (base: LONGCOMPLEX; exp: LONGREAL) : LONGCOMPLEX ; -BEGIN - RETURN cbuiltin.cpowl(base, exp) -END cpowerl ; - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_csqrtf)) csqrtf (z: SHORTCOMPLEX) : SHORTCOMPLEX ; -BEGIN - RETURN cbuiltin.csqrtf(z) -END csqrtf ; - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_csqrt)) csqrt (z: COMPLEX) : COMPLEX ; -BEGIN - RETURN cbuiltin.csqrt(z) -END csqrt ; - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_csqrtl)) csqrtl (z: LONGCOMPLEX) : LONGCOMPLEX ; -BEGIN - RETURN cbuiltin.csqrtl(z) -END csqrtl ; - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_cexpf)) cexpf (z: SHORTCOMPLEX) : SHORTCOMPLEX ; -BEGIN - RETURN cbuiltin.cexpf(z) -END cexpf ; - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_cexp)) cexp (z: COMPLEX) : COMPLEX ; -BEGIN - RETURN cbuiltin.cexp(z) -END cexp ; - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_cexpl)) cexpl (z: LONGCOMPLEX) : LONGCOMPLEX ; -BEGIN - RETURN cbuiltin.cexpl(z) -END cexpl ; - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_clogf)) clnf (z: SHORTCOMPLEX) : SHORTCOMPLEX ; -BEGIN - RETURN cbuiltin.clogf(z) -END clnf ; - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_clog)) cln (z: COMPLEX) : COMPLEX ; -BEGIN - RETURN cbuiltin.clog(z) -END cln ; - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_clogl)) clnl (z: LONGCOMPLEX) : LONGCOMPLEX ; -BEGIN - RETURN cbuiltin.clogl(z) -END clnl ; - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_csinf)) csinf (z: SHORTCOMPLEX) : SHORTCOMPLEX ; -BEGIN - RETURN cbuiltin.csinf(z) -END csinf ; - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_csin)) csin (z: COMPLEX) : COMPLEX ; -BEGIN - RETURN cbuiltin.csin(z) -END csin ; - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_csinl)) csinl (z: LONGCOMPLEX) : LONGCOMPLEX ; -BEGIN - RETURN cbuiltin.csinl(z) -END csinl ; - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_ccosf)) ccosf (z: SHORTCOMPLEX) : SHORTCOMPLEX ; -BEGIN - RETURN cbuiltin.ccosf(z) -END ccosf ; - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_ccos)) ccos (z: COMPLEX) : COMPLEX ; -BEGIN - RETURN cbuiltin.ccos(z) -END ccos ; - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_ccosl)) ccosl (z: LONGCOMPLEX) : LONGCOMPLEX ; -BEGIN - RETURN cbuiltin.ccosl(z) -END ccosl ; - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_ctanf)) ctanf (z: SHORTCOMPLEX) : SHORTCOMPLEX ; -BEGIN - RETURN cbuiltin.ctanf(z) -END ctanf ; - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_ctan)) ctan (z: COMPLEX) : COMPLEX ; -BEGIN - RETURN cbuiltin.ctan(z) -END ctan ; - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_ctanl)) ctanl (z: LONGCOMPLEX) : LONGCOMPLEX ; -BEGIN - RETURN cbuiltin.ctanl(z) -END ctanl ; - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_casinf)) carcsinf (z: SHORTCOMPLEX) : SHORTCOMPLEX ; -BEGIN - RETURN cbuiltin.casinf(z) -END carcsinf ; - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_casin)) carcsin (z: COMPLEX) : COMPLEX ; -BEGIN - RETURN cbuiltin.casin(z) -END carcsin ; - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_casinl)) carcsinl (z: LONGCOMPLEX) : LONGCOMPLEX ; -BEGIN - RETURN cbuiltin.casinl(z) -END carcsinl ; - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_cacosf)) carccosf (z: SHORTCOMPLEX) : SHORTCOMPLEX ; -BEGIN - RETURN cbuiltin.cacosf(z) -END carccosf ; - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_cacos)) carccos (z: COMPLEX) : COMPLEX ; -BEGIN - RETURN cbuiltin.cacos(z) -END carccos ; - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_cacosl)) carccosl (z: LONGCOMPLEX) : LONGCOMPLEX ; -BEGIN - RETURN cbuiltin.cacosl(z) -END carccosl ; - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_catanf)) carctanf (z: SHORTCOMPLEX) : SHORTCOMPLEX ; -BEGIN - RETURN cbuiltin.catanf(z) -END carctanf ; - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_catan)) carctan (z: COMPLEX) : COMPLEX ; -BEGIN - RETURN cbuiltin.catan(z) -END carctan ; - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_catanl)) carctanl (z: LONGCOMPLEX) : LONGCOMPLEX ; -BEGIN - RETURN cbuiltin.catanl(z) -END carctanl ; - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_index)) index (s: ADDRESS; c: INTEGER) : ADDRESS ; -BEGIN - RETURN cbuiltin.index (s, c) -END index ; - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_rindex)) rindex (s: ADDRESS; c: INTEGER) : ADDRESS ; -BEGIN - RETURN cbuiltin.rindex (s, c) -END rindex ; - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_memcmp)) memcmp (s1, s2: ADDRESS; nbytes: CARDINAL) : INTEGER ; -BEGIN - RETURN cbuiltin.memcmp (s1, s2, nbytes) -END memcmp ; - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_memset)) memset (s: ADDRESS; c: INTEGER; nbytes: CARDINAL) : ADDRESS ; -BEGIN - RETURN cbuiltin.memset (s, c, nbytes) -END memset ; - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_memmove)) memmove (s1, s2: ADDRESS; nbytes: CARDINAL) : ADDRESS ; -BEGIN - RETURN cbuiltin.memmove (s1, s2, nbytes) -END memmove ; - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_strcat)) strcat (dest, src: ADDRESS) : ADDRESS ; -BEGIN - RETURN cbuiltin.strcat (dest, src) -END strcat ; - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_strncat)) strncat (dest, src: ADDRESS; nbytes: CARDINAL) : ADDRESS ; -BEGIN - RETURN cbuiltin.strncat (dest, src, nbytes) -END strncat ; - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_strcpy)) strcpy (dest, src: ADDRESS) : ADDRESS ; -BEGIN - RETURN cbuiltin.strcpy (dest, src) -END strcpy ; - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_strncpy)) strncpy (dest, src: ADDRESS; nbytes: CARDINAL) : ADDRESS ; -BEGIN - RETURN cbuiltin.strncpy (dest, src, nbytes) -END strncpy ; - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_strcmp)) strcmp (s1, s2: ADDRESS) : INTEGER ; -BEGIN - RETURN cbuiltin.strcmp (s1, s2) -END strcmp ; - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_strncmp)) strncmp (s1, s2: ADDRESS; nbytes: CARDINAL) : INTEGER ; -BEGIN - RETURN cbuiltin.strncmp (s1, s2, nbytes) -END strncmp ; - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_strlen)) strlen (s: ADDRESS) : INTEGER ; -BEGIN - RETURN cbuiltin.strlen (s) -END strlen ; - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_strstr)) strstr (haystack, needle: ADDRESS) : ADDRESS ; -BEGIN - RETURN cbuiltin.strstr (haystack, needle) -END strstr ; - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_strpbrk)) strpbrk (s, accept: ADDRESS) : ADDRESS ; -BEGIN - RETURN cbuiltin.strpbrk (s, accept) -END strpbrk ; - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_strspn)) strspn (s, accept: ADDRESS) : CARDINAL ; -BEGIN - RETURN cbuiltin.strspn (s, accept) -END strspn ; - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_strcspn)) strcspn (s, accept: ADDRESS) : CARDINAL ; -BEGIN - RETURN cbuiltin.strcspn (s, accept) -END strcspn ; - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_strchr)) strchr (s: ADDRESS; c: INTEGER) : ADDRESS ; -BEGIN - RETURN cbuiltin.strchr (s, c) -END strchr ; - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_strrchr)) strrchr (s: ADDRESS; c: INTEGER) : ADDRESS ; -BEGIN - RETURN cbuiltin.strrchr (s, c) -END strrchr ; - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_huge_val)) huge_val () : REAL ; -BEGIN - RETURN -1.0 -END huge_val ; - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_huge_vall)) huge_vall () : LONGREAL ; -BEGIN - RETURN -1.0 -END huge_vall ; - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_huge_valf)) huge_valf () : SHORTREAL ; -BEGIN - RETURN -1.0 -END huge_valf ; - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_isgreater)) isgreater (x, y: REAL) : INTEGER ; -BEGIN - RETURN 1 -END isgreater ; - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_isgreaterf)) isgreaterf (x, y: SHORTREAL) : INTEGER ; -BEGIN - RETURN 1 -END isgreaterf ; - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_isgreaterl)) isgreaterl (x, y: LONGREAL) : INTEGER ; -BEGIN - RETURN 1 -END isgreaterl ; - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_isgreaterequal)) isgreaterequal (x, y: REAL) : INTEGER ; -BEGIN - RETURN 1 -END isgreaterequal ; - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_isgreaterequalf)) isgreaterequalf (x, y: SHORTREAL) : INTEGER ; -BEGIN - RETURN 1 -END isgreaterequalf ; - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_isgreaterequall)) isgreaterequall (x, y: LONGREAL) : INTEGER ; -BEGIN - RETURN 1 -END isgreaterequall ; - - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_isless)) isless (x, y: REAL) : INTEGER ; -BEGIN - RETURN 1 -END isless ; - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_islessf)) islessf (x, y: SHORTREAL) : INTEGER ; -BEGIN - RETURN 1 -END islessf ; - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_islessl)) islessl (x, y: LONGREAL) : INTEGER ; -BEGIN - RETURN 1 -END islessl ; - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_islessequal)) islessequal (x, y: REAL) : INTEGER ; -BEGIN - RETURN 1 -END islessequal ; - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_islessequalf)) islessequalf (x, y: SHORTREAL) : INTEGER ; -BEGIN - RETURN 1 -END islessequalf ; - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_islessequall)) islessequall (x, y: LONGREAL) : INTEGER ; -BEGIN - RETURN 1 -END islessequall ; - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_islessgreater)) islessgreater (x, y: REAL) : INTEGER ; -BEGIN - RETURN 1 -END islessgreater ; - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_islessgreaterf)) islessgreaterf (x, y: SHORTREAL) : INTEGER ; -BEGIN - RETURN 1 -END islessgreaterf ; - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_islessgreaterl)) islessgreaterl (x, y: LONGREAL) : INTEGER ; -BEGIN - RETURN 1 -END islessgreaterl ; - - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_isunordered)) isunordered (x, y: REAL) : INTEGER ; -BEGIN - RETURN 1 -END isunordered ; - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_isunorderedf)) isunorderedf (x, y: SHORTREAL) : INTEGER ; -BEGIN - RETURN 1 -END isunorderedf ; - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_isunorderedl)) isunorderedl (x, y: LONGREAL) : INTEGER ; -BEGIN - RETURN 1 -END isunorderedl ; - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_iseqsig)) iseqsig (x, y: REAL) : INTEGER ; -BEGIN - RETURN 1 -END iseqsig ; - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_iseqsigf)) iseqsigf (x, y: SHORTREAL) : INTEGER ; -BEGIN - RETURN 1 -END iseqsigf ; - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_iseqsigl)) iseqsigl (x, y: LONGREAL) : INTEGER ; -BEGIN - RETURN 1 -END iseqsigl ; - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_isnormal)) isnormal (r: REAL) : INTEGER ; -BEGIN - RETURN 1 -END isnormal ; - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_isnormalf)) isnormalf (s: SHORTREAL) : INTEGER ; -BEGIN - RETURN 1 -END isnormalf ; - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_isnormall)) isnormall (l: LONGREAL) : INTEGER ; -BEGIN - RETURN 1 -END isnormall ; - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_isinf)) isinf_sign (r: REAL) : INTEGER ; -BEGIN - RETURN 1 -END isinf_sign ; - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_isinf_signf)) isinf_signf (s: SHORTREAL) : INTEGER ; -BEGIN - RETURN 1 -END isinf_signf ; - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_isinf)) isinf_signl (l: LONGREAL) : INTEGER ; -BEGIN - RETURN 1 -END isinf_signl ; - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_clz)) clz (value: CARDINAL) : INTEGER ; -BEGIN - RETURN 1 -END clz ; - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_clzll)) clzll (value: LONGCARD) : INTEGER ; -BEGIN - RETURN 1 -END clzll ; - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_ctz)) ctz (value: CARDINAL) : INTEGER ; -BEGIN - RETURN 1 -END ctz ; - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_ctzll)) ctzll (value: LONGCARD) : INTEGER ; -BEGIN - RETURN 1 -END ctzll ; - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_longjmp)) longjmp (env: ADDRESS; val: INTEGER) ; -BEGIN - (* Empty, replaced internally by gcc. *) -END longjmp ; - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_setjmp)) setjmp (env: ADDRESS) : INTEGER ; -BEGIN - (* Empty, replaced internally by gcc. *) - RETURN 0 (* Keep -Wreturn-type happy. *) -END setjmp ; - -(* - frame_address - returns the address of the frame. - The current frame is obtained if level is 0, - the next level up is level is 1 etc. -*) - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ - ((__builtin_frame_address)) - frame_address (level: CARDINAL) : ADDRESS ; -BEGIN - RETURN NIL -END frame_address ; - - -(* - return_address - returns the return address of function. - The current function return address is - obtained if level is 0, - the next level up is level is 1 etc. -*) - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ - ((__builtin_return_address)) - return_address (level: CARDINAL) : ADDRESS ; -BEGIN - RETURN NIL -END return_address ; - - -END Builtins. diff --git a/gcc/m2/gm2-libs/SYSTEM.def b/gcc/m2/gm2-libs/SYSTEM.def deleted file mode 100644 index 6bf9d52d12c..00000000000 --- a/gcc/m2/gm2-libs/SYSTEM.def +++ /dev/null @@ -1,114 +0,0 @@ -(* SYSTEM.def provides access to the SYSTEM dependent module. - -Copyright (C) 2001-2026 Free Software Foundation, Inc. -Contributed by Gaius Mulley <[email protected]>. - -This file is part of GNU Modula-2. - -GNU Modula-2 is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 3, or (at your option) -any later version. - -GNU Modula-2 is distributed in the hope that it will be useful, but -WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -General Public License for more details. - -Under Section 7 of GPL version 3, you are granted additional -permissions described in the GCC Runtime Library Exception, version -3.1, as published by the Free Software Foundation. - -You should have received a copy of the GNU General Public License and -a copy of the GCC Runtime Library Exception along with this program; -see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -<http://www.gnu.org/licenses/>. *) - -DEFINITION MODULE SYSTEM ; - -EXPORT QUALIFIED BITSPERBYTE, BYTESPERWORD, - ADDRESS, WORD, BYTE, CSIZE_T, CSSIZE_T, COFF_T, CARDINAL64, (* @SYSTEM_DATATYPES@ *) - ADR, TSIZE, ROTATE, SHIFT, THROW, TBITSIZE ; - (* SIZE is also exported if -fpim2 is used. *) - -CONST - BITSPERBYTE = __ATTRIBUTE__ __BUILTIN__ ((BITS_PER_UNIT)) ; - BYTESPERWORD = __ATTRIBUTE__ __BUILTIN__ ((UNITS_PER_WORD)) ; - -(* Note that the full list of system and sized datatypes include: - LOC, WORD, BYTE, ADDRESS, - - (and the non language standard target types) - - INTEGER8, INTEGER16, INTEGER32, INTEGER64, - CARDINAL8, CARDINAL16, CARDINAL32, CARDINAL64, - WORD16, WORD32, WORD64, BITSET8, BITSET16, - BITSET32, REAL32, REAL64, REAL128, COMPLEX32, - COMPLEX64, COMPLEX128, CSIZE_T, CSSIZE_T. - - Also note that the non-standard data types will - move into another module in the future. *) - - -(* The following types are supported on this target: -TYPE - @SYSTEM_TYPES@ -*) - - -(* - all the functions below are declared internally to gm2 - ====================================================== - -PROCEDURE ADR (VAR v: <anytype>): ADDRESS; - (* Returns the address of variable v. *) - -PROCEDURE SIZE (v: <type>) : ZType; - (* Returns the number of BYTES used to store a v of - any specified <type>. Only available if -fpim2 is used. - *) - -PROCEDURE TSIZE (<type>) : CARDINAL; - (* Returns the number of BYTES used to store a value of the - specified <type>. - *) - -PROCEDURE ROTATE (val: <a set type>; - num: INTEGER): <type of first parameter>; - (* Returns a bit sequence obtained from val by rotating up/right - or down/right by the absolute value of num. The direction is - down/right if the sign of num is negative, otherwise the direction - is up/left. - *) - -PROCEDURE SHIFT (val: <a set type>; - num: INTEGER): <type of first parameter>; - (* Returns a bit sequence obtained from val by shifting up/left - or down/right by the absolute value of num, introducing - zeros as necessary. The direction is down/right if the sign of - num is negative, otherwise the direction is up/left. - *) - -PROCEDURE THROW (i: INTEGER) <* noreturn *> ; - (* - THROW is a GNU extension and was not part of the PIM or ISO - standards. It throws an exception which will be caught by the - EXCEPT block (assuming it exists). This is a compiler builtin - function which interfaces to the GCC exception handling runtime - system. - GCC uses the term throw, hence the naming distinction between - the GCC builtin and the Modula-2 runtime library procedure Raise. - The later library procedure Raise will call SYSTEM.THROW after - performing various housekeeping activities. - *) - -PROCEDURE TBITSIZE (<type>) : CARDINAL ; - (* Returns the minimum number of bits necessary to represent - <type>. This procedure function is only useful for determining - the number of bits used for any type field within a packed RECORD. - It is not particularly useful elsewhere since <type> might be - optimized for speed, for example a BOOLEAN could occupy a WORD. - *) -*) - -END SYSTEM. diff --git a/gcc/m2/gm2-libs/SYSTEM.mod b/gcc/m2/gm2-libs/SYSTEM.mod deleted file mode 100644 index fd803abd82c..00000000000 --- a/gcc/m2/gm2-libs/SYSTEM.mod +++ /dev/null @@ -1,29 +0,0 @@ -(* SYSTEM.mod provides access to the SYSTEM dependent module. - -Copyright (C) 2001-2026 Free Software Foundation, Inc. -Contributed by Gaius Mulley <[email protected]>. - -This file is part of GNU Modula-2. - -GNU Modula-2 is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 3, or (at your option) -any later version. - -GNU Modula-2 is distributed in the hope that it will be useful, but -WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -General Public License for more details. - -Under Section 7 of GPL version 3, you are granted additional -permissions described in the GCC Runtime Library Exception, version -3.1, as published by the Free Software Foundation. - -You should have received a copy of the GNU General Public License and -a copy of the GCC Runtime Library Exception along with this program; -see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -<http://www.gnu.org/licenses/>. *) - -IMPLEMENTATION MODULE SYSTEM ; - -END SYSTEM. diff --git a/gcc/m2/gm2-libs/cbuiltin.def b/gcc/m2/gm2-libs/cbuiltin.def deleted file mode 100644 index bccaa3b4462..00000000000 --- a/gcc/m2/gm2-libs/cbuiltin.def +++ /dev/null @@ -1,217 +0,0 @@ -(* cbuiltin.def provides non-builtin equivalent routines. - -Copyright (C) 2003-2026 Free Software Foundation, Inc. -Contributed by Gaius Mulley <[email protected]>. - -This file is part of GNU Modula-2. - -GNU Modula-2 is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 3, or (at your option) -any later version. - -GNU Modula-2 is distributed in the hope that it will be useful, but -WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -General Public License for more details. - -Under Section 7 of GPL version 3, you are granted additional -permissions described in the GCC Runtime Library Exception, version -3.1, as published by the Free Software Foundation. - -You should have received a copy of the GNU General Public License and -a copy of the GCC Runtime Library Exception along with this program; -see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -<http://www.gnu.org/licenses/>. *) - -DEFINITION MODULE FOR "C" cbuiltin ; - -FROM SYSTEM IMPORT ADDRESS ; -EXPORT UNQUALIFIED alloca, memcpy, - isfinite, isfinitef, isfinitel, - isinf_sign, isinf_signf, isinf_signl, - sinf, sinl, sin, - cosf, cosl, cos, - atan2f, atan2l, atan2, - sqrtf, sqrtl, sqrt, - fabsf, fabsl, fabs, - logf, logl, log, - expf, expl, exp, - log10f, log10l, log10, - exp10f, exp10l, exp10, - ilogbf, ilogbl, ilogb, - significand, significandf, significandl, - modf, modff, modfl, - nextafter, nextafterf, nextafterl, - nexttoward, nexttowardf, nexttowardl, - scalb, scalbf, scalbl, - scalbn, scalbnf, scalbnl, - scalbln, scalblnf, scalblnl, - - cabsf, cabsl, cabs, - cargf, carg, cargl, - conjf, conj, conjl, - cpowf, cpow, cpowl, - csqrtf, csqrt, csqrtl, - cexpf, cexp, cexpl, - clogf, clog, clogl, - csinf, csin, csinl, - ccosf, ccos, ccosl, - ctanf, ctan, ctanl, - casinf, casin, casinl, - cacosf, cacos, cacosl, - catanf, catan, catanl, - - index, rindex, - memcmp, memset, memmove, - strcat, strncat, strcpy, strncpy, strcmp, strncmp, - strlen, strstr, strpbrk, strspn, strcspn, strchr, strrchr, - - clz, clzll, - ctz, ctzll ; - -PROCEDURE alloca (i: CARDINAL) : ADDRESS ; -PROCEDURE memcpy (dest, src: ADDRESS; n: CARDINAL) : ADDRESS ; -PROCEDURE isfinite (x: REAL) : BOOLEAN ; -PROCEDURE isfinitel (x: LONGREAL) : BOOLEAN ; -PROCEDURE isfinitef (x: SHORTREAL) : BOOLEAN ; -PROCEDURE isinf_sign (x: REAL) : BOOLEAN ; -PROCEDURE isinf_signl (x: LONGREAL) : BOOLEAN ; -PROCEDURE isinf_signf (x: SHORTREAL) : BOOLEAN ; -PROCEDURE sinf (x: SHORTREAL) : SHORTREAL ; -PROCEDURE sin (x: REAL) : REAL ; -PROCEDURE sinl (x: LONGREAL) : LONGREAL ; -PROCEDURE cosf (x: SHORTREAL) : SHORTREAL ; -PROCEDURE cos (x: REAL) : REAL ; -PROCEDURE cosl (x: LONGREAL) : LONGREAL ; -PROCEDURE atan2f (x, y: SHORTREAL) : SHORTREAL ; -PROCEDURE atan2 (x, y: REAL) : REAL ; -PROCEDURE atan2l (x, y: LONGREAL) : LONGREAL ; -PROCEDURE sqrtf (x: SHORTREAL) : SHORTREAL ; -PROCEDURE sqrt (x: REAL) : REAL ; -PROCEDURE sqrtl (x: LONGREAL) : LONGREAL ; -PROCEDURE fabsf (x: SHORTREAL) : SHORTREAL ; -PROCEDURE fabs (x: REAL) : REAL ; -PROCEDURE fabsl (x: LONGREAL) : LONGREAL ; -PROCEDURE logf (x: SHORTREAL) : SHORTREAL ; -PROCEDURE log (x: REAL) : REAL ; -PROCEDURE logl (x: LONGREAL) : LONGREAL ; -PROCEDURE expf (x: SHORTREAL) : SHORTREAL ; -PROCEDURE exp (x: REAL) : REAL ; -PROCEDURE expl (x: LONGREAL) : LONGREAL ; -PROCEDURE log10f (x: SHORTREAL) : SHORTREAL ; -PROCEDURE log10 (x: REAL) : REAL ; -PROCEDURE log10l (x: LONGREAL) : LONGREAL ; -PROCEDURE exp10f (x: SHORTREAL) : SHORTREAL ; -PROCEDURE exp10 (x: REAL) : REAL ; -PROCEDURE exp10l (x: LONGREAL) : LONGREAL ; -PROCEDURE ilogbf (x: SHORTREAL) : INTEGER ; -PROCEDURE ilogb (x: REAL) : INTEGER ; -PROCEDURE ilogbl (x: LONGREAL) : INTEGER ; - -PROCEDURE significand (r: REAL) : REAL ; -PROCEDURE significandf (s: SHORTREAL) : SHORTREAL ; -PROCEDURE significandl (l: LONGREAL) : LONGREAL ; - -PROCEDURE modf (x: REAL; VAR y: REAL) : REAL ; -PROCEDURE modff (x: SHORTREAL; VAR y: SHORTREAL) : SHORTREAL ; -PROCEDURE modfl (x: LONGREAL; VAR y: LONGREAL) : LONGREAL ; - -PROCEDURE nextafter (x, y: REAL) : REAL ; -PROCEDURE nextafterf (x, y: SHORTREAL) : SHORTREAL ; -PROCEDURE nextafterl (x, y: LONGREAL) : LONGREAL ; - -PROCEDURE nexttoward (x: REAL; y: LONGREAL) : REAL ; -PROCEDURE nexttowardf (x: SHORTREAL; y: LONGREAL) : SHORTREAL ; -PROCEDURE nexttowardl (x, y: LONGREAL) : LONGREAL ; - -PROCEDURE scalb (x, n: REAL) : REAL ; -PROCEDURE scalbf (x, n: SHORTREAL) : SHORTREAL ; -PROCEDURE scalbl (x, n: LONGREAL) : LONGREAL ; - -PROCEDURE scalbn (x: REAL; n: INTEGER) : REAL ; -PROCEDURE scalbnf (x: SHORTREAL; n: INTEGER) : SHORTREAL ; -PROCEDURE scalbnl (x: LONGREAL; n: INTEGER) : LONGREAL ; - -PROCEDURE scalbln (x: REAL; n: LONGINT) : REAL ; -PROCEDURE scalblnf (x: SHORTREAL; n: LONGINT) : SHORTREAL ; -PROCEDURE scalblnl (x: LONGREAL; n: LONGINT) : LONGREAL ; - -PROCEDURE cabsf (z: SHORTCOMPLEX) : SHORTREAL ; -PROCEDURE cabs (z: COMPLEX) : REAL ; -PROCEDURE cabsl (z: LONGCOMPLEX) : LONGREAL ; - -PROCEDURE cargf (z: SHORTCOMPLEX) : SHORTREAL ; -PROCEDURE carg (z: COMPLEX) : REAL ; -PROCEDURE cargl (z: LONGCOMPLEX) : LONGREAL ; - -PROCEDURE conjf (z: SHORTCOMPLEX) : SHORTCOMPLEX ; -PROCEDURE conj (z: COMPLEX) : COMPLEX ; -PROCEDURE conjl (z: LONGCOMPLEX) : LONGCOMPLEX ; - -PROCEDURE cpowf (base: SHORTCOMPLEX; exp: SHORTREAL) : SHORTCOMPLEX ; -PROCEDURE cpow (base: COMPLEX; exp: REAL) : COMPLEX ; -PROCEDURE cpowl (base: LONGCOMPLEX; exp: LONGREAL) : LONGCOMPLEX ; - -PROCEDURE csqrtf (z: SHORTCOMPLEX) : SHORTCOMPLEX ; -PROCEDURE csqrt (z: COMPLEX) : COMPLEX ; -PROCEDURE csqrtl (z: LONGCOMPLEX) : LONGCOMPLEX ; - -PROCEDURE cexpf (z: SHORTCOMPLEX) : SHORTCOMPLEX ; -PROCEDURE cexp (z: COMPLEX) : COMPLEX ; -PROCEDURE cexpl (z: LONGCOMPLEX) : LONGCOMPLEX ; - -PROCEDURE clogf (z: SHORTCOMPLEX) : SHORTCOMPLEX ; -PROCEDURE clog (z: COMPLEX) : COMPLEX ; -PROCEDURE clogl (z: LONGCOMPLEX) : LONGCOMPLEX ; - -PROCEDURE csinf (z: SHORTCOMPLEX) : SHORTCOMPLEX ; -PROCEDURE csin (z: COMPLEX) : COMPLEX ; -PROCEDURE csinl (z: LONGCOMPLEX) : LONGCOMPLEX ; - -PROCEDURE ccosf (z: SHORTCOMPLEX) : SHORTCOMPLEX ; -PROCEDURE ccos (z: COMPLEX) : COMPLEX ; -PROCEDURE ccosl (z: LONGCOMPLEX) : LONGCOMPLEX ; - -PROCEDURE ctanf (z: SHORTCOMPLEX) : SHORTCOMPLEX ; -PROCEDURE ctan (z: COMPLEX) : COMPLEX ; -PROCEDURE ctanl (z: LONGCOMPLEX) : LONGCOMPLEX ; - -PROCEDURE casinf (z: SHORTCOMPLEX) : SHORTCOMPLEX ; -PROCEDURE casin (z: COMPLEX) : COMPLEX ; -PROCEDURE casinl (z: LONGCOMPLEX) : LONGCOMPLEX ; - -PROCEDURE cacosf (z: SHORTCOMPLEX) : SHORTCOMPLEX ; -PROCEDURE cacos (z: COMPLEX) : COMPLEX ; -PROCEDURE cacosl (z: LONGCOMPLEX) : LONGCOMPLEX ; - -PROCEDURE catanf (z: SHORTCOMPLEX) : SHORTCOMPLEX ; -PROCEDURE catan (z: COMPLEX) : COMPLEX ; -PROCEDURE catanl (z: LONGCOMPLEX) : LONGCOMPLEX ; - -PROCEDURE index (s: ADDRESS; c: INTEGER) : ADDRESS ; -PROCEDURE rindex (s: ADDRESS; c: INTEGER) : ADDRESS ; -PROCEDURE memcmp (s1, s2: ADDRESS; n: CARDINAL) : INTEGER ; -PROCEDURE memmove (s1, s2: ADDRESS; n: CARDINAL) : ADDRESS ; -PROCEDURE memset (s: ADDRESS; c: INTEGER; n: CARDINAL) : ADDRESS ; -PROCEDURE strcat (dest, src: ADDRESS) : ADDRESS ; -PROCEDURE strncat (dest, src: ADDRESS; n: CARDINAL) : ADDRESS ; -PROCEDURE strcpy (dest, src: ADDRESS) : ADDRESS ; -PROCEDURE strncpy (dest, src: ADDRESS; n: CARDINAL) : ADDRESS ; -PROCEDURE strcmp (s1, s2: ADDRESS) : INTEGER ; -PROCEDURE strncmp (s1, s2: ADDRESS; n: CARDINAL) : INTEGER ; -PROCEDURE strlen (s: ADDRESS) : INTEGER ; -PROCEDURE strstr (haystack, needle: ADDRESS) : ADDRESS ; -PROCEDURE strpbrk (s, accept: ADDRESS) : ADDRESS ; -PROCEDURE strspn (s, accept: ADDRESS) : CARDINAL ; -PROCEDURE strcspn (s, accept: ADDRESS) : CARDINAL ; -PROCEDURE strchr (s: ADDRESS; c: INTEGER) : ADDRESS ; -PROCEDURE strrchr (s: ADDRESS; c: INTEGER) : ADDRESS ; - -PROCEDURE clz (value: CARDINAL) : INTEGER ; -PROCEDURE clzll (value: CARDINAL) : INTEGER ; -PROCEDURE ctz (value: CARDINAL) : INTEGER ; -PROCEDURE ctzll (value: CARDINAL) : INTEGER ; - - -END cbuiltin. diff --git a/gcc/m2/lang.opt b/gcc/m2/lang.opt index 30e211e292f..12b0676dd5f 100644 --- a/gcc/m2/lang.opt +++ b/gcc/m2/lang.opt @@ -98,6 +98,10 @@ fdef= Modula-2 Joined Recognize the specified suffix as a definition module filename. +fdump-builtins +Modula-2 +Display all builtin procedure functions. + fdump-system-exports Modula-2 Display all inbuilt system items. diff --git a/gcc/m2/tools-src/def2doc.py b/gcc/m2/tools-src/def2doc.py index ccc090af150..a953d959699 100644 --- a/gcc/m2/tools-src/def2doc.py +++ b/gcc/m2/tools-src/def2doc.py @@ -254,6 +254,10 @@ def check_index(line): var = word.split('=') if len(var) > 0: emit_index(var[0], '(const)') + emit_procedure_index(procedure) + + +def emit_procedure_index(procedure): if procedure != '': name = procedure.split('(') if name[0] != '': @@ -263,18 +267,134 @@ def check_index(line): if proc != '': emit_index(proc, '') -def demangle_system_datatype(line, indent): - # The spaces in front align in the export qualified list. - indent += len ('EXPORT QUALIFIED ') - line = line.replace('@SYSTEM_DATATYPES@', - '\n' + indent * ' ' + 'Target specific data types.') - line = line.replace('@SYSTEM_TYPES@', - '(* Target specific data types. *)') - return line + +def contains(line, sub): + # Return True if line contains sub. + return line.find(sub) >= 0 + + +def contains_builtin_tag(line): + # Return True if line contains a builtin tag. + for key in builtin_func: + if contains(line, key): + return True + return False + + +def startWith(line, sub): + # Return True if line starts with sub. + return (len(line)>len(sub)) and (line[:len(sub)]==sub) + + +def process_def_cbuiltin(line, key): + line = line.strip() + if startWith(line, "(*") and (len(line)>len("(*")): + line = line[2:] + funcname = line.split('(')[1].split(',')[0] + emit_procedure_index(funcname + "(") + output.write('(* ' + funcname + ' availability is determined by the target. *)\n') + + +def process_cbuiltin(line, key): + funcname = key.split("_")[2] + funcname = funcname.lower()[:-1] + emit_procedure_index(funcname + "(") + output.write('(* ' + funcname + ' availability is determined by the target. *)\n') + keyname = "__builtin_" + funcname + + +def process_mod_builtin(line, key): + pass + + +def process_def_builtin(line, key): + # Issue a comment stating the procedure availability is target dependent. + line = line.strip() + if startWith(line, "(*") and (len(line)>len("(*")): + line = line[2:] + funcname = line.split('(')[1].split(',')[0] + keyname = line.split('(')[1].split(',')[3] + emit_procedure_index(funcname + "(") + output.write('(* ' + funcname + ' availability is determined by the target. *)\n') + + +def process_def_target_procedure(line, key): + line = line.strip() + if startWith(line, "(*") and (len(line)>len("(*")): + line = line[2:] + funcname = line.split('(')[1].split(',')[0] + argtype = line.split('(')[1].split(',')[1] + returntype = line.split('(')[1].split(',')[2] + keyname = line.split('(')[1].split(',')[3] + emit_procedure_index(funcname + "(") + output.write('(* ' + funcname + ' availability is determined by the target. *)\n') + output.write('(* PROCEDURE ' + funcname + ' (z: ' + argtype + ') : ' + returntype + ' ; *)\n\n') + +def process_cbuiltin_export(line, key): + pass + + +def process_mod_target_procedure(line, key): + pass + + +builtin_func = { "<DEF_CBUILTIN_PROCEDURE":process_def_cbuiltin, + "<DEF_BUILTIN_PROCEDURE":process_def_builtin, + "<MOD_BUILTIN_PROCEDURE":process_mod_builtin, + "<CBUILTIN_EXPORT_LIST>":process_cbuiltin_export, + "<DEF_TARGET_PROCEDURE":process_def_target_procedure, + "<MOD_TARGET_PROCEDURE":process_mod_target_procedure} + + +def process_tag(line): + for key in builtin_func: + if contains(line, key): + builtin_func[key](line, key) + + +def process_line(line): + global seen_SYSTEM_DATATYPES + global seen_SYSTEM_TYPES + # process_line interpet and process any tags. + if contains (line, "<SYSTEM_DATATYPES>"): + seen_SYSTEM_DATATYPES = True + elif contains (line, "</SYSTEM_DATATYPES>"): + output_SYSTEM_DATATYPES(line) + seen_SYSTEM_DATATYPES = False + elif contains (line, "<SYSTEM_TYPES>"): + seen_SYSTEM_TYPES = True + elif contains (line, "</SYSTEM_TYPES>"): + output_SYSTEM_DATATYPES(line) + seen_SYSTEM_TYPES = False + elif seen_SYSTEM_DATATYPES: + pass + elif contains_builtin_tag(line): + process_tag(line) + else: + output.write(line + '\n') + + +def output_SYSTEM_DATATYPES(line): + # Write a list of system datatypes into the output file. + indent = leadingSpaces(line) + output.write(" " * indent) + output.write("All target supported system data types.\n") + + +def leadingSpaces(line): + # Return the leading number of spaces in line. + s = line.lstrip() + return len(line)-len(s) def emit_texinfo_content(f, line): global state_obj + global seen_SYSTEM_DATATYPES + global seen_SYSTEM_TYPES + global output + + seen_SYSTEM_DATATYPES = False + seen_SYSTEM_TYPES = False output.write(line.rstrip() + '\n') line = f.readline() if len(line.rstrip()) == 0: @@ -291,8 +411,7 @@ def emit_texinfo_content(f, line): line = line.rstrip() check_index(line) line = line.replace('{', '@{').replace('}', '@}') - line = demangle_system_datatype(line, 0) - output.write(line + '\n') + process_line(line) line = f.readline() return f diff --git a/gcc/m2/tools-src/makeSystem b/gcc/m2/tools-src/makeSystem index 3830809f671..8adebd700ed 100644 --- a/gcc/m2/tools-src/makeSystem +++ b/gcc/m2/tools-src/makeSystem @@ -90,18 +90,18 @@ displayBuiltinTypes () { } displayStart () { - sed -e "1,/@SYSTEM_DATATYPES@/!d" < ${SYSTEMDEF} | \ - sed -e "/@SYSTEM_DATATYPES@/d" >> ${OUTPUTFILE} + sed -e "1,/<SYSTEM_DATATYPES>/!d" < ${SYSTEMDEF} | \ + sed -e "/<SYSTEM_DATATYPES>/d" >> ${OUTPUTFILE} } displayMiddle () { - sed -e "1,/@SYSTEM_DATATYPES@/d" < ${SYSTEMDEF} | \ - sed -e "1,/@SYSTEM_TYPES@/!d" | \ - sed -e "/@SYSTEM_TYPES@/d" >> ${OUTPUTFILE} + sed -e "1,/<\/SYSTEM_DATATYPES>/d" < ${SYSTEMDEF} | \ + sed -e "1,/<SYSTEM_TYPES>/!d" | \ + sed -e "/<SYSTEM_TYPES>/d" >> ${OUTPUTFILE} } displayEnd () { - sed -e "1,/@SYSTEM_TYPES@/d" < ${SYSTEMDEF} >> ${OUTPUTFILE} + sed -e "1,/<\/SYSTEM_TYPES>/d" < ${SYSTEMDEF} >> ${OUTPUTFILE} } MINIMAL="-fno-scaffold-main -fno-scaffold-dynamic -fno-scaffold-static -fno-m2-plugin" diff --git a/gcc/m2/tools-src/mktargetsrc.py b/gcc/m2/tools-src/mktargetsrc.py new file mode 100644 index 00000000000..cd61ecec87c --- /dev/null +++ b/gcc/m2/tools-src/mktargetsrc.py @@ -0,0 +1,417 @@ +#!/usr/bin/env python3 + +# maketargetsrc creates target library target modules. + +# Copyright (C) 2026 Free Software Foundation, Inc. +# +# This file is part of GNU Modula-2. +# +# GNU Modula-2 is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3, or (at your option) +# any later version. +# +# GNU Modula-2 is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with GCC; see the file COPYING3. If not see +# <http://www.gnu.org/licenses/>. + +import argparse +import uuid +import os +import pathlib +import sys + + +exit_code = 0 +minimalCommandLine = "-fno-scaffold-main -fno-scaffold-dynamic" +minimalCommandLine += " -fno-scaffold-static -fno-m2-plugin" +sourceLineLength = 60 + + +def printf (format, *args): + # printf a very basic printf. + print(str(format) % args, end=' ') + + +def quietSystem(args, commandLine): + # Execute commandline and exit if unsuccessful. It will run + # gdb on the command line if --gdb is set in args. + if args.gdb: + result = os.system(commandLine + " -wrapper gdb,--args") + else: + result = os.system(commandLine + " 2>&1 /dev/null") + if result != 0: + printf("failed to execute: %s with an exit code: %d\n", + commandLine, result) + sys.exit(result) + + +def extractJoined(): + # Return the commandLine and includePath. + commandLine = [] + includePath = "" + defInput = "" + modInput = "" + compiler = "" + i = 1 + while i<len(sys.argv): + if (len(sys.argv[i])>2) and (sys.argv[i][:3] == '-I='): + if includePath != "": + includePath += " " + includePath += "-I" + includePath += sys.argv[i][3:] + elif (len(sys.argv[i])>2) and (sys.argv[i][:3] == '-C='): + compiler = sys.argv[i][3:] + elif (len(sys.argv[i])>2) and (sys.argv[i][:3] == '-D='): + defInput = sys.argv[i][3:] + elif (len(sys.argv[i])>2) and (sys.argv[i][:3] == '-M='): + modInput = sys.argv[i][3:] + else: + commandLine += [sys.argv[i]] + i += 1 + return commandLine, includePath, defInput, modInput, compiler + + +def initOptions(): + # initOptions build and return the args object. + commandLine, includePath, defInput, modInput, compiler = extractJoined() + parser = argparse.ArgumentParser(prog='mktargetsrc') + parser.add_argument('-s', '--fiso', help='use the ISO dialect', + default=False, action='store_true') + parser.add_argument('-p', '--fpim', help='use the PIM dialect', + default=False, action='store_true') + parser.add_argument('-g', '--gdb', help='run gm2 under gdb', + default=False, action='store_true') + parser.add_argument('-o', '--outputfile', help='set the output file', + default=None, action='store') + parser.add_argument('-v', '--verbose', help='generate progress messages', + action='store_true') + parser.add_argument('-C=', '--compiler', help='the compiler driver', + default=compiler, action='store') + parser.add_argument('-D=', '--definputfile', help='set the def input file', + default=defInput, action='store') + parser.add_argument('-M=', '--modinputfile', help='set the mod input file', + default=modInput, action='store') + parser.add_argument('-I=', '--include', help='append to the search path', + default=includePath, action='store') + args = parser.parse_args(commandLine) + return args, includePath + + +def startWith(line, sub): + # Return True if line starts with sub. + return (len(line)>len(sub)) and (line[:len(sub)]==sub) + + +def makeDictionary(temporaryFile): + # Populate dictDefs with the contents of temporaryFile. + dictDefs = { "SYSTEM":{}, "builtin":{} } + for line in open(temporaryFile).readlines(): + if startWith (line, "SYSTEM module creates type:"): + definedType = line[len("SYSTEM module creates type:"):] + definedType = definedType.strip() + dictDefs["SYSTEM"][definedType] = True + elif startWith (line, "builtin procedure function:"): + definedFunc = line[len("builtin procedure function:"):] + definedFunc = definedFunc.strip() + dictDefs["builtin"][definedFunc] = True + return dictDefs + + +def leadingSpaces(line): + # Return the leading number of spaces in line. + s = line.lstrip() + return len(line)-len(s) + + +def output_export_list(args, line, export_list): + # Append the export_list to the args.outputfile. It preserves + # indentation and wraps at sourceLineLength. + outf = open(args.outputfile, "a") + indent = leadingSpaces(line) + pos = 0 + for el in export_list: + if pos == 0: + outf.write(" " * indent) + pos = indent + outf.write(el) + outf.write(", ") + pos += len(el) + pos += 2 + if pos > sourceLineLength: + outf.write("\n") + pos = 0 + if pos > 0: + outf.write("\n") + outf.close() + + +def output_SYSTEM_DATATYPES(args, line, dictDefs): + # Write a list of system datatypes into the output file. + output_export_list (args, line, [key for key in dictDefs["SYSTEM"]]) + + +def output_SYSTEM_TYPES(args, line, dictDefs): + # Write a list of system types into the output file. + outf = open(args.outputfile, "a") + indent = leadingSpaces(line) + for key in dictDefs["SYSTEM"]: + outf.write(" " * indent) + outf.write(key) + outf.write(" ;\n") + outf.close() + + +def output(args, line): + # Append line to the output file. + outf = open(args.outputfile, "a") + outf.write(line) + outf.close() + + +def contains(line, sub): + # Return True if line contains sub. + return line.find(sub) >= 0 + + +def contains_builtin_tag(line): + # Return True if line contains a builtin tag. + for key in builtin_func: + if contains(line, key): + return True + return False + + +class builtin_prototype: + def __init__(self, name, returnType, argNameList, argTypeList): + self.name = name + self.builtinName = "__builtin_" + name + self.returnType = returnType + self.argNameList = argNameList + self.argTypeList = argTypeList + +# The list of gcc_builtins which might not be available on a target. + +list_of_builtins = [builtin_prototype("csinl", "LONGCOMPLEX", ["z"], ["LONGCOMPLEX"]), + builtin_prototype("csin", "COMPLEX", ["z"], ["COMPLEX"]), + builtin_prototype("csinf", "SHORTCOMPLEX", ["z"], ["SHORTCOMPLEX"]), + builtin_prototype("ccosl", "LONGCOMPLEX", ["z"], ["LONGCOMPLEX"]), + builtin_prototype("ccos", "COMPLEX", ["z"], ["COMPLEX"]), + builtin_prototype("ccosf", "SHORTCOMPLEX", ["z"], ["SHORTCOMPLEX"]), + builtin_prototype("ctanl", "LONGCOMPLEX", ["z"], ["LONGCOMPLEX"]), + builtin_prototype("ctan", "COMPLEX", ["z"], ["COMPLEX"]), + builtin_prototype("ctanf", "SHORTCOMPLEX", ["z"], ["SHORTCOMPLEX"])] + +gcc_builtins = {element.builtinName: element for element in list_of_builtins} + + +def output_def_cbuiltin(args, keyname): + # Generate the definition module procedure declaration for a cbuiltin keyname. + output(args, "(* " + gcc_builtins[keyname].name + " is available on the target. *)\n") + output(args, "PROCEDURE %s (%s: %s) : %s ;\n" % (gcc_builtins[keyname].name, + gcc_builtins[keyname].argNameList[0], + gcc_builtins[keyname].argTypeList[0], + gcc_builtins[keyname].returnType)) + + +def output_def_builtin(args, keyname): + # Generate the definition module procedure declaration for a builtin keyname. + output(args, "(* " + gcc_builtins[keyname].name + " is available on the target. *)\n") + output(args, "PROCEDURE __BUILTIN__ %s (%s: %s) : %s ;\n" % (gcc_builtins[keyname].name, + gcc_builtins[keyname].argNameList[0], + gcc_builtins[keyname].argTypeList[0], + gcc_builtins[keyname].returnType)) + + +def process_def_builtin(args, line, key, dictDefs): + # Check target availability for the builtin and generate a procedure declaration + # or an unavailablity comment. + line = line.strip() + if startWith(line, "(*") and (len(line)>len("(*")): + line = line[2:] + funcname = line.split('(')[1].split(',')[0] + keyname = line.split('(')[1].split(',')[3] + if keyname in dictDefs["builtin"]: + output_def_builtin(args, keyname) + else: + unavailable(args, funcname) + + +def output_mod_builtin(args, keyname, line): + output(args, "(* " + gcc_builtins[keyname].name + " is available on the target. *)\n") + output(args, "PROCEDURE __ATTRIBUTE__ __BUILTIN__ ") + output(args, "((%s)) %s (%s: %s) : %s ;" % (gcc_builtins[keyname].builtinName, + gcc_builtins[keyname].name, + gcc_builtins[keyname].argNameList[0], + gcc_builtins[keyname].argTypeList[0], + gcc_builtins[keyname].returnType)) + builtin = line.split('(')[1].split(',')[4].split(')')[0] + output(args, """ +BEGIN + RETURN %s(z) +END %s ; + +""" % (builtin, gcc_builtins[keyname].name)) + + +def process_mod_builtin(args, line, key, dictDefs): + line = line.strip() + if startWith(line, "(*") and (len(line)>len("(*")): + line = line[2:] + funcname = line.split('(')[1].split(',')[0] + keyname = line.split('(')[1].split(',')[3] + if keyname in dictDefs["builtin"]: + output_mod_builtin(args, keyname, line) + else: + unavailable(args, funcname) + + +def unavailable(args, funcname): + output(args, "(* Procedure function %s is unavailable on the target. *)\n" % funcname) + + +def process_def_cbuiltin(args, line, key, dictDefs): + line = line.strip() + if startWith(line, "(*") and (len(line)>len("(*")): + line = line[2:] + funcname = line.split('(')[1].split(',')[0] + keyname = line.split('(')[1].split(',')[3] + output(args, "(* " + funcname + " is available on the target. *)\n") + if keyname in dictDefs["builtin"]: + output_def_cbuiltin(args, keyname) + else: + unavailable(args, funcname) + + +def target_builtins(args, key, dictDefs): + builtin_list = [gcc_builtins[key] for key in gcc_builtins] + target_list = [] + for el in builtin_list: + if el.builtinName in dictDefs["builtin"]: + target_list += [el.name] + return target_list + + +def process_cbuiltin_export(args, line, key, dictDefs): + output_export_list (args, line, target_builtins (args, key, dictDefs)) + + +def process_mod_target_procedure(args, line, key, dictDefs): + line = line.strip() + if startWith(line, "(*") and (len(line)>len("(*")): + line = line[2:] + funcname = line.split('(')[1].split(',')[0] + argtype = line.split('(')[1].split(',')[1] + returntype = line.split('(')[1].split(',')[2] + keyname = line.split('(')[1].split(',')[3] + cbuiltin = line.split('(')[1].split(',')[4].split('>')[0].split(')')[0] + if keyname in dictDefs["builtin"]: + output(args, """ +PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((%s)) %s (z: %s): %s ; +BEGIN + RETURN %s (z) +END %s ; + +""" % (keyname, funcname, argtype, returntype, cbuiltin, funcname)) + + +def process_def_target_procedure(args, line, key, dictDefs): + line = line.strip() + if startWith(line, "(*") and (len(line)>len("(*")): + line = line[2:] + funcname = line.split('(')[1].split(',')[0] + argtype = line.split('(')[1].split(',')[1] + returntype = line.split('(')[1].split(',')[2] + keyname = line.split('(')[1].split(',')[3] + if keyname in dictDefs["builtin"]: + output(args, "PROCEDURE %s (z: %s) : %s ;\n" % (funcname, argtype, returntype)) + + +builtin_func = { "<DEF_CBUILTIN_PROCEDURE":process_def_cbuiltin, + "<DEF_BUILTIN_PROCEDURE":process_def_builtin, + "<MOD_BUILTIN_PROCEDURE":process_mod_builtin, + "<CBUILTIN_EXPORT_LIST>":process_cbuiltin_export, + "<DEF_TARGET_PROCEDURE":process_def_target_procedure, + "<MOD_TARGET_PROCEDURE":process_mod_target_procedure} + + +def process_tag(args, line, dictDefs): + for key in builtin_func: + if contains(line, key): + builtin_func[key](args, line, key, dictDefs) + + +def generateSource(args, temporaryFile): + # generateSource interpet and process any tags. + dictDefs = makeDictionary(temporaryFile) + seen_SYSTEM_DATATYPES = False + seen_SYSTEM_TYPES = False + filename = args.modinputfile + if args.definputfile != "": + filename = args.definputfile + if os.path.isfile(filename): + for line in open(filename): + if contains (line, "<SYSTEM_DATATYPES>"): + seen_SYSTEM_DATATYPES = True + elif contains (line, "</SYSTEM_DATATYPES>"): + output_SYSTEM_DATATYPES(args, line, dictDefs) + seen_SYSTEM_DATATYPES = False + elif contains (line, "<SYSTEM_TYPES>"): + seen_SYSTEM_TYPES = True + elif contains (line, "</SYSTEM_TYPES>"): + output_SYSTEM_TYPES(args, line, dictDefs) + seen_SYSTEM_TYPES = False + elif seen_SYSTEM_DATATYPES: + pass + elif contains_builtin_tag(line): + process_tag(args, line, dictDefs) + else: + output(args, line) + else: + printf("mktargetsrc cannot open: %s\n", filename) + sys.exit(1) + + +def makeTemporaryFile(): + # makeTemporaryFile returns the name of a temporary file. + return str(uuid.uuid4())+'.txt' + + +def stripBackslash(compiler): + compiler = compiler.replace("\\ ", " ") + return compiler + + +def determineBuiltins(args, includePath): + # determineBuiltins build the builtin_dict with the gm2 builtins. + print(args.modinputfile) + if args.outputfile != None: + open(args.outputfile, "w").close() + temporaryFile = makeTemporaryFile() + dialect = '-fpim' + if args.fiso or (not args.fpim): + dialect = '-fiso' + compiler = stripBackslash(args.compiler) + commandLine = "%s %s %s %s -c -fdump-system-exports -o /dev/null %s > %s" % ( + compiler, dialect, includePath, minimalCommandLine, + args.modinputfile, temporaryFile) + quietSystem(args, commandLine) + commandLine = "%s %s %s %s -c -fdump-builtins %s >> %s" % ( + compiler, dialect, includePath, minimalCommandLine, + args.modinputfile, temporaryFile) + quietSystem(args, commandLine) + generateSource(args, temporaryFile) + os.remove(temporaryFile) + + +def main(): + args, includePath = initOptions() + determineBuiltins(args, includePath) + + +main() diff --git a/gcc/testsuite/gm2/exceptions/run/pass/exceptions-run-pass.exp b/gcc/testsuite/gm2/exceptions/run/pass/exceptions-run-pass.exp index 4c6511931d2..ea3db640baf 100644 --- a/gcc/testsuite/gm2/exceptions/run/pass/exceptions-run-pass.exp +++ b/gcc/testsuite/gm2/exceptions/run/pass/exceptions-run-pass.exp @@ -28,8 +28,8 @@ load_lib prune.exp load_lib gm2-torture.exp -set output [target_compile $srcdir/$subdir/cpp.cpp cpp.o object "-g"] -set output [target_compile $srcdir/$subdir/mycpp.cpp mycpp.o object "-g"] +set output [gm2_target_compile $srcdir/$subdir/cpp.cpp cpp.o object "-g"] +set output [gm2_target_compile $srcdir/$subdir/mycpp.cpp mycpp.o object "-g"] # # notice this uses PIM libraries with exceptions - this is a useful test. diff --git a/gcc/testsuite/lib/gm2.exp b/gcc/testsuite/lib/gm2.exp index b1093e1bd97..7590fe05845 100644 --- a/gcc/testsuite/lib/gm2.exp +++ b/gcc/testsuite/lib/gm2.exp @@ -190,9 +190,13 @@ proc gm2_target_compile_default { source dest type options } { if [istarget "powerpc-*-*"] { lappend options "-mabi=ieeelongdouble" } + if [check_effective_target_pie] { + lappend options "additional_flags=-fPIE" + } - lappend options "timeout=[timeout_value]" lappend options "compiler=$GCC_UNDER_TEST" + lappend options "timeout=[timeout_value]" + # puts stderr "options = $options\n" # puts stderr "***** target_compile: $source $dest $type $options\n" return [target_compile $source $dest $type $options] diff --git a/libgm2/Makefile.am b/libgm2/Makefile.am index ef29732dbed..bacc51bd2e3 100644 --- a/libgm2/Makefile.am +++ b/libgm2/Makefile.am @@ -25,7 +25,7 @@ AUTOMAKE_OPTIONS = 1.8 foreign SUFFIXES = .c .mod .def .o .obj .lo .a -ACLOCAL_AMFLAGS = -I .. -I ../config +ACLOCAL_AMFLAGS = -I .. -I ../config -I . # Multilib support. MAKEOVERRIDES= @@ -41,6 +41,9 @@ GM2_SRC = $(GCC_DIR)/m2 toolexeclibdir=@toolexeclibdir@ toolexecdir=@toolexecdir@ GM2_FOR_TARGET=@GM2_FOR_TARGET@ +GM2_FOR_TARGET_ESC=$(shell echo $(GM2_FOR_TARGET) | sed 's/ /\\ /g') +$(info GM2_FOR_TARGET is $(GM2_FOR_TARGET)) +$(info GM2_FOR_TARGET_ESC is $(GM2_FOR_TARGET_ESC)) SUBDIRS = libm2min libm2log libm2cor libm2iso libm2pim GM2_BUILDDIR := $(shell pwd) @@ -62,6 +65,7 @@ AM_MAKEFLAGS = \ "CC_FOR_BUILD=$(CC_FOR_BUILD)" \ "CC_FOR_TARGET=$(CC_FOR_TARGET)" \ "GM2_FOR_TARGET=$(GM2_FOR_TARGET)" \ + "GM2_FOR_TARGET_ESC=$(GM2_FOR_TARGET_ESC)" \ "CFLAGS=$(CFLAGS)" \ "CXXFLAGS=$(CXXFLAGS)" \ "CFLAGS_FOR_BUILD=$(CFLAGS_FOR_BUILD)" \ @@ -100,7 +104,8 @@ AM_MAKEFLAGS = \ "TARGET_LIB_PATH=$(TARGET_LIB_PATH)" \ "TARGET_LIB_PATH_libgm2=$(TARGET_LIB_PATH_libgm2)" \ "LIBTOOL=$(GM2_BUILDDIR)/libtool" \ - "DARWIN_AT_RPATH=$(DARWIN_AT_RPATH)" + "DARWIN_AT_RPATH=$(DARWIN_AT_RPATH)" \ + "HAVE_PYTHON_INTERPRETER=$(HAVE_PYTHON_INTERPRETER)" # Subdir rules rely on $(FLAGS_TO_PASS) FLAGS_TO_PASS = $(AM_MAKEFLAGS) diff --git a/libgm2/Makefile.in b/libgm2/Makefile.in index af46b30ad60..b2ad58d08e8 100644 --- a/libgm2/Makefile.in +++ b/libgm2/Makefile.in @@ -90,7 +90,8 @@ host_triplet = @host@ target_triplet = @target@ subdir = . ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/../config/acx.m4 \ +am__aclocal_m4_deps = $(top_srcdir)/ax_python_devel.m4 \ + $(top_srcdir)/../config/acx.m4 \ $(top_srcdir)/../config/clang-plugin.m4 \ $(top_srcdir)/../config/depstand.m4 \ $(top_srcdir)/../config/gcc-plugin.m4 \ @@ -98,10 +99,10 @@ am__aclocal_m4_deps = $(top_srcdir)/../config/acx.m4 \ $(top_srcdir)/../config/multi.m4 \ $(top_srcdir)/../config/no-executables.m4 \ $(top_srcdir)/../config/override.m4 \ - $(top_srcdir)/../libtool.m4 $(top_srcdir)/../ltoptions.m4 \ - $(top_srcdir)/../ltsugar.m4 $(top_srcdir)/../ltversion.m4 \ - $(top_srcdir)/../lt~obsolete.m4 $(top_srcdir)/acinclude.m4 \ - $(top_srcdir)/../config/gc++filt.m4 \ + $(top_srcdir)/../config/picflag.m4 $(top_srcdir)/../libtool.m4 \ + $(top_srcdir)/../ltoptions.m4 $(top_srcdir)/../ltsugar.m4 \ + $(top_srcdir)/../ltversion.m4 $(top_srcdir)/../lt~obsolete.m4 \ + $(top_srcdir)/acinclude.m4 $(top_srcdir)/../config/gc++filt.m4 \ $(top_srcdir)/../config/tls.m4 $(top_srcdir)/../config/gthr.m4 \ $(top_srcdir)/../config/cet.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ @@ -237,6 +238,15 @@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ +PICFLAG = @PICFLAG@ +PYTHON = @PYTHON@ +PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ +PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ +PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ +PYTHON_LIBS = @PYTHON_LIBS@ +PYTHON_PLATFORM_SITE_PKG = @PYTHON_PLATFORM_SITE_PKG@ +PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ +PYTHON_VERSION = @PYTHON_VERSION@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ @@ -255,6 +265,7 @@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ +ax_python_interpreter = @ax_python_interpreter@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ @@ -343,7 +354,7 @@ toplevel_srcdir = @toplevel_srcdir@ # Modula-2 support. AUTOMAKE_OPTIONS = 1.8 foreign SUFFIXES = .c .mod .def .o .obj .lo .a -ACLOCAL_AMFLAGS = -I .. -I ../config +ACLOCAL_AMFLAGS = -I .. -I ../config -I . # Multilib support. MAKEOVERRIDES = @@ -352,6 +363,7 @@ gcc_version := $(shell @get_gcc_base_ver@ $(top_srcdir)/../gcc/BASE-VER) TOP_GCCDIR := $(shell cd $(top_srcdir) && cd .. && pwd) GCC_DIR = $(TOP_GCCDIR)/gcc GM2_SRC = $(GCC_DIR)/m2 +GM2_FOR_TARGET_ESC = $(shell echo $(GM2_FOR_TARGET) | sed 's/ /\\ /g') SUBDIRS = libm2min libm2log libm2cor libm2iso libm2pim GM2_BUILDDIR := $(shell pwd) gm2_cdir = $(libdir)/gcc/$(target_alias)/$(gcc_version)/include @@ -368,6 +380,7 @@ AM_MAKEFLAGS = \ "CC_FOR_BUILD=$(CC_FOR_BUILD)" \ "CC_FOR_TARGET=$(CC_FOR_TARGET)" \ "GM2_FOR_TARGET=$(GM2_FOR_TARGET)" \ + "GM2_FOR_TARGET_ESC=$(GM2_FOR_TARGET_ESC)" \ "CFLAGS=$(CFLAGS)" \ "CXXFLAGS=$(CXXFLAGS)" \ "CFLAGS_FOR_BUILD=$(CFLAGS_FOR_BUILD)" \ @@ -406,7 +419,8 @@ AM_MAKEFLAGS = \ "TARGET_LIB_PATH=$(TARGET_LIB_PATH)" \ "TARGET_LIB_PATH_libgm2=$(TARGET_LIB_PATH_libgm2)" \ "LIBTOOL=$(GM2_BUILDDIR)/libtool" \ - "DARWIN_AT_RPATH=$(DARWIN_AT_RPATH)" + "DARWIN_AT_RPATH=$(DARWIN_AT_RPATH)" \ + "HAVE_PYTHON_INTERPRETER=$(HAVE_PYTHON_INTERPRETER)" # Subdir rules rely on $(FLAGS_TO_PASS) @@ -712,6 +726,8 @@ uninstall-am: .PRECIOUS: Makefile +$(info GM2_FOR_TARGET is $(GM2_FOR_TARGET)) +$(info GM2_FOR_TARGET_ESC is $(GM2_FOR_TARGET_ESC)) # GNU Make needs to see an explicit $(MAKE) variable in the command it # runs to enable its job server during parallel builds. Hence the diff --git a/libgm2/aclocal.m4 b/libgm2/aclocal.m4 index 80a7ff96196..c9eee317b7b 100644 --- a/libgm2/aclocal.m4 +++ b/libgm2/aclocal.m4 @@ -1187,6 +1187,7 @@ AC_SUBST([am__tar]) AC_SUBST([am__untar]) ]) # _AM_PROG_TAR +m4_include([ax_python_devel.m4]) m4_include([../config/acx.m4]) m4_include([../config/clang-plugin.m4]) m4_include([../config/depstand.m4]) @@ -1195,6 +1196,7 @@ m4_include([../config/lead-dot.m4]) m4_include([../config/multi.m4]) m4_include([../config/no-executables.m4]) m4_include([../config/override.m4]) +m4_include([../config/picflag.m4]) m4_include([../libtool.m4]) m4_include([../ltoptions.m4]) m4_include([../ltsugar.m4]) diff --git a/libgm2/ax_python_devel.m4 b/libgm2/ax_python_devel.m4 new file mode 100644 index 00000000000..b018748cc19 --- /dev/null +++ b/libgm2/ax_python_devel.m4 @@ -0,0 +1,522 @@ +# =========================================================================== +# https://www.gnu.org/software/autoconf-archive/ax_python_devel.html +# =========================================================================== +# +# SYNOPSIS +# +# AX_PYTHON_DEVEL([version[,optional[,checkdev]]]) +# +# DESCRIPTION +# +# Note: Defines as a precious variable "PYTHON_VERSION". Don't override it +# in your configure.ac. +# +# This macro checks for Python and tries to get the include path to +# 'Python.h'. It provides the $(PYTHON_CPPFLAGS) and $(PYTHON_LIBS) +# output variables. It also exports $(PYTHON_EXTRA_LIBS) and +# $(PYTHON_EXTRA_LDFLAGS) for embedding Python in your code. +# +# You can search for some particular version of Python by passing a +# parameter to this macro, for example ">= '2.3.1'", or "== '2.4'". Please +# note that you *have* to pass also an operator along with the version to +# match, and pay special attention to the single quotes surrounding the +# version number. Don't use "PYTHON_VERSION" for this: that environment +# variable is declared as precious and thus reserved for the end-user. +# +# By default this will fail if it does not detect a development version of +# python. If you want it to continue, set optional to something, like +# AX_PYTHON_DEVEL([], [no]). The ax_python_devel_found variable will be +# "no" if it fails. The ax_python_interpreter variable will be "no" +# if the incorrect version of Python is found. It will be "yes" if found. +# +# If you want to disable the search for Python development files you can +# add a non empty third parameter. For example: +# +# AX_PYTHON_DEVEL([>= '3.0'], [no], [no]) searches for a Python3 +# interpreter (no development files) and will not fail if not found. +# +# AX_PYTHON_DEVEL([>= '3.0'], [], [no]) searches for a Python3 +# interpreter (no development files) and will fail if not found. +# +# AX_PYTHON_DEVEL([>= '3.0'], [], []) searches for a Python3 +# interpreter (with development files) and will fail if not found. +# +# This macro should work for all versions of Python >= 2.1.0. As an end +# user, you can disable the check for the python version by setting the +# PYTHON_NOVERSIONCHECK environment variable to something else than the +# empty string. +# +# If you need to use this macro for an older Python version, please +# contact the authors. We're always open for feedback. +# +# LICENSE +# +# Copyright (c) 2009 Sebastian Huber <[email protected]> +# Copyright (c) 2009 Alan W. Irwin +# Copyright (c) 2009 Rafael Laboissiere <[email protected]> +# Copyright (c) 2009 Andrew Collier +# Copyright (c) 2009 Matteo Settenvini <[email protected]> +# Copyright (c) 2009 Horst Knorr <[email protected]> +# Copyright (c) 2013 Daniel Mullner <[email protected]> +# Copyright (c) 2026 Gaius Mulley <[email protected]> +# +# This program is free software: you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by the +# Free Software Foundation, either version 3 of the License, or (at your +# option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General +# Public License for more details. +# +# You should have received a copy of the GNU General Public License along +# with this program. If not, see <https://www.gnu.org/licenses/>. +# +# As a special exception, the respective Autoconf Macro's copyright owner +# gives unlimited permission to copy, distribute and modify the configure +# scripts that are the output of Autoconf when processing the Macro. You +# need not follow the terms of the GNU General Public License when using +# or distributing such scripts, even though portions of the text of the +# Macro appear in them. The GNU General Public License (GPL) does govern +# all other use of the material that constitutes the Autoconf Macro. +# +# This special exception to the GPL applies to versions of the Autoconf +# Macro released by the Autoconf Archive. When you make and distribute a +# modified version of the Autoconf Macro, you may extend this special +# exception to the GPL to apply to your modified version as well. +# +# example of usage: +# +# AC_PYTHON_DEVEL([>= '3.0'],[no],[no]) +# +# check for version >= 3.0. +# do not bail out if no Python interpreter is found. +# do not check for Python development files. +# + +#serial 37 + +AU_ALIAS([AC_PYTHON_DEVEL], [AX_PYTHON_DEVEL]) +AC_DEFUN([AX_PYTHON_DEVEL],[ + AC_MSG_CHECKING([starting ax_python_devel]) + # Get whether it's optional + if test -z "$2"; then + AC_MSG_CHECKING([having a Python interpreter is not optional]) + ax_python_devel_optional=false + else + AC_MSG_CHECKING([having a Python interpreter is optional]) + ax_python_devel_optional=$2 + fi + # Should we test for python development? + if test -z "$3"; then + ax_python_devel_check=yes + else + AC_MSG_CHECKING([not checking for Python development]) + ax_python_devel_check=$3 + fi + ax_python_devel_found=yes + ax_python_interpreter=yes + AC_MSG_CHECKING([do we have a Python interpreter]) + # + # Allow the use of a (user set) custom python version + # + AC_ARG_VAR([PYTHON_VERSION],[The installed Python + version to use, for example '2.3'. This string + will be appended to the Python interpreter + canonical name.]) + + AC_MSG_CHECKING([for python version]) + for version in $PYTHON_VERSION "" 3 2; do + AC_PATH_PROG([PYTHON],[python[$version]]) + AC_MSG_CHECKING([$version]) + if test -z "$PYTHON"; then + AC_MSG_CHECKING([no]) + ax_python_devel_found=no + ax_python_interpreter=no + else + AC_MSG_CHECKING([yes]) + ax_python_devel_found=yes + ax_python_interpreter=yes + PYTHON_VERSION=$version + break + fi + done + + if test "$ax_python_devel_found" = "yes"; then + # + # Check for a version of Python >= 2.1.0 + # + AC_MSG_CHECKING([for a version of Python >= '2.1.0']) + ac_supports_python_ver=`$PYTHON -c "import sys; \ + ver = sys.version.split ()[[0]]; \ + print (ver >= '2.1.0')"` + if test "$ac_supports_python_ver" != "True"; then + if test -z "$PYTHON_NOVERSIONCHECK"; then + AC_MSG_RESULT([no]) + AC_MSG_WARN([ +This version of the AC@&t@_PYTHON_DEVEL macro +doesn't work properly with versions of Python before +2.1.0. You may need to re-run configure, setting the +variables PYTHON_CPPFLAGS, PYTHON_LIBS, PYTHON_SITE_PKG, +PYTHON_EXTRA_LIBS and PYTHON_EXTRA_LDFLAGS by hand. +Moreover, to disable this check, set PYTHON_NOVERSIONCHECK +to something else than an empty string. +]) + if ! $ax_python_devel_optional; then + AC_MSG_FAILURE([Giving up]) + fi + ax_python_devel_found=no + AC_MSG_CHECKING([no interpreter found, incorrect version]) + PYTHON_VERSION="" + ax_python_interpreter=no + AC_MSG_CHECKING([no interpreter found]) + else + AC_MSG_RESULT([skip at user request]) + fi + else + AC_MSG_RESULT([yes]) + fi + fi + + if test "$ax_python_devel_found" = "yes"; then + # + # If the macro parameter ``version'' is set, honour it. + # A Python shim class, VPy, is used to implement correct version comparisons via + # string expressions, since e.g. a naive textual ">= 2.7.3" won't work for + # Python 2.7.10 (the ".1" being evaluated as less than ".3"). + # + if test -n $1; then + AC_MSG_CHECKING([for a version of Python $1]) + cat << EOF > ax_python_devel_vpy.py +class VPy: + def vtup(self, s): + return tuple(map(int, s.strip().replace("rc", ".").split("."))) + def __init__(self): + import sys + self.vpy = tuple(sys.version_info)[[:3]] + def __eq__(self, s): + return self.vpy == self.vtup(s) + def __ne__(self, s): + return self.vpy != self.vtup(s) + def __lt__(self, s): + return self.vpy < self.vtup(s) + def __gt__(self, s): + return self.vpy > self.vtup(s) + def __le__(self, s): + return self.vpy <= self.vtup(s) + def __ge__(self, s): + return self.vpy >= self.vtup(s) +EOF + ac_supports_python_ver=`$PYTHON -c """import ax_python_devel_vpy; \ + ver = ax_python_devel_vpy.VPy(); \ + print (ver $1) """` + rm -rf ax_python_devel_vpy*.py* __pycache__/ax_python_devel_vpy*.py* + if test "$ac_supports_python_ver" = "True"; then + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + AC_MSG_WARN([this package requires Python $1. +If you have it installed, but it isn't the default Python +interpreter in your system path, please pass the PYTHON_VERSION +variable to configure. See ``configure --help'' for reference. +]) + if ! $ax_python_devel_optional; then + AC_MSG_ERROR([Giving up]) + fi + AC_MSG_CHECKING([no interpreter found, wrong version $1]) + ax_python_devel_found=no + PYTHON_VERSION="" + # Wrong version of the interpreter. + ax_python_interpreter=no + fi + fi + fi + if test "$ax_python_devel_found" = "yes"; then + # + # Check if you have distutils, else fail + # + AC_MSG_CHECKING([for the sysconfig Python package]) + ac_sysconfig_result=`$PYTHON -c "import sysconfig" 2>&1` + if test $? -eq 0; then + AC_MSG_RESULT([yes]) + IMPORT_SYSCONFIG="import sysconfig" + else + AC_MSG_RESULT([no]) + + AC_MSG_CHECKING([for the distutils Python package]) + ac_sysconfig_result=`$PYTHON -c "from distutils import sysconfig" 2>&1` + if test $? -eq 0; then + AC_MSG_RESULT([yes]) + IMPORT_SYSCONFIG="from distutils import sysconfig" + else + AC_MSG_WARN([cannot import Python module "distutils". +Please check your Python installation. The error was: +$ac_sysconfig_result]) + if ! $ax_python_devel_optional; then + AC_MSG_ERROR([Giving up]) + fi + ax_python_devel_found=no + PYTHON_VERSION="" + fi + fi + fi + + if test "$ax_python_devel_found" = "yes"; then + # + # Check for Python include path + # + AC_MSG_CHECKING([for Python include path]) + if test -z "$PYTHON_CPPFLAGS"; then + if test "$IMPORT_SYSCONFIG" = "import sysconfig"; then + # sysconfig module has different functions + python_path=`$PYTHON -c "$IMPORT_SYSCONFIG; \ + print (sysconfig.get_path ('include'));"` + plat_python_path=`$PYTHON -c "$IMPORT_SYSCONFIG; \ + print (sysconfig.get_path ('platinclude'));"` + else + # old distutils way + python_path=`$PYTHON -c "$IMPORT_SYSCONFIG; \ + print (sysconfig.get_python_inc ());"` + plat_python_path=`$PYTHON -c "$IMPORT_SYSCONFIG; \ + print (sysconfig.get_python_inc (plat_specific=1));"` + fi + if test -n "${python_path}"; then + if test "${plat_python_path}" != "${python_path}"; then + python_path="-I$python_path -I$plat_python_path" + else + python_path="-I$python_path" + fi + fi + PYTHON_CPPFLAGS=$python_path + fi + AC_MSG_RESULT([$PYTHON_CPPFLAGS]) + AC_SUBST([PYTHON_CPPFLAGS]) + + # + # Check for Python library path + # + AC_MSG_CHECKING([for Python library path]) + if test -z "$PYTHON_LIBS"; then + # (makes two attempts to ensure we've got a version number + # from the interpreter) + ac_python_version=`cat<<EOD | $PYTHON - + +# join all versioning strings, on some systems +# major/minor numbers could be in different list elements +from sysconfig import * +e = get_config_var('VERSION') +if e is not None: + print(e) +EOD` + + if test -z "$ac_python_version"; then + if test -n "$PYTHON_VERSION"; then + ac_python_version=$PYTHON_VERSION + else + ac_python_version=`$PYTHON -c "import sys; \ + print ("%d.%d" % sys.version_info[[:2]])"` + fi + fi + + # Make the versioning information available to the compiler + AC_DEFINE_UNQUOTED([HAVE_PYTHON], ["$ac_python_version"], + [If available, contains the Python version number currently in use.]) + + # First, the library directory: + ac_python_libdir=`cat<<EOD | $PYTHON - + +# There should be only one +$IMPORT_SYSCONFIG +e = sysconfig.get_config_var('LIBDIR') +if e is not None: + print (e) +EOD` + + # Now, for the library: + ac_python_library=`cat<<EOD | $PYTHON - + +$IMPORT_SYSCONFIG +c = sysconfig.get_config_vars() +if 'LDVERSION' in c: + print ('python'+c[['LDVERSION']]) +else: + print ('python'+c[['VERSION']]) +EOD` + + # This small piece shamelessly adapted from PostgreSQL python macro; + # credits goes to momjian, I think. I'd like to put the right name + # in the credits, if someone can point me in the right direction... ? + # + if test -n "$ac_python_libdir" -a -n "$ac_python_library" + then + # use the official shared library + ac_python_library=`echo "$ac_python_library" | sed "s/^lib//"` + PYTHON_LIBS="-L$ac_python_libdir -l$ac_python_library" + else + # old way: use libpython from python_configdir + ac_python_libdir=`$PYTHON -c \ + "from sysconfig import get_python_lib as f; \ + import os; \ + print (os.path.join(f(plat_specific=1, standard_lib=1), 'config'));"` + PYTHON_LIBS="-L$ac_python_libdir -lpython$ac_python_version" + fi + + if test -z "$PYTHON_LIBS"; then + AC_MSG_WARN([ + Cannot determine location of your Python DSO. Please check it was installed with + dynamic libraries enabled, or try setting PYTHON_LIBS by hand. + ]) + if ! $ax_python_devel_optional; then + AC_MSG_ERROR([Giving up]) + fi + ax_python_devel_found=no + PYTHON_VERSION="" + fi + fi + fi + + if test "$ax_python_devel_found" = "yes"; then + AC_MSG_RESULT([$PYTHON_LIBS]) + AC_SUBST([PYTHON_LIBS]) + + # + # Check for site packages + # + AC_MSG_CHECKING([for Python site-packages path]) + if test -z "$PYTHON_SITE_PKG"; then + if test "$IMPORT_SYSCONFIG" = "import sysconfig"; then + PYTHON_SITE_PKG=`$PYTHON -c " +$IMPORT_SYSCONFIG; +if hasattr(sysconfig, 'get_default_scheme'): + scheme = sysconfig.get_default_scheme() +else: + scheme = sysconfig._get_default_scheme() +if scheme == 'posix_local': + # Debian's default scheme installs to /usr/local/ but we want to find headers in /usr/ + scheme = 'posix_prefix' +prefix = '$prefix' +if prefix == 'NONE': + prefix = '$ac_default_prefix' +sitedir = sysconfig.get_path('purelib', scheme, vars={'base': prefix}) +print(sitedir)"` + else + # distutils.sysconfig way + PYTHON_SITE_PKG=`$PYTHON -c "$IMPORT_SYSCONFIG; \ + print (sysconfig.get_python_lib(0,0));"` + fi + fi + AC_MSG_RESULT([$PYTHON_SITE_PKG]) + AC_SUBST([PYTHON_SITE_PKG]) + + # + # Check for platform-specific site packages + # + AC_MSG_CHECKING([for Python platform specific site-packages path]) + if test -z "$PYTHON_PLATFORM_SITE_PKG"; then + if test "$IMPORT_SYSCONFIG" = "import sysconfig"; then + PYTHON_PLATFORM_SITE_PKG=`$PYTHON -c " +$IMPORT_SYSCONFIG; +if hasattr(sysconfig, 'get_default_scheme'): + scheme = sysconfig.get_default_scheme() +else: + scheme = sysconfig._get_default_scheme() +if scheme == 'posix_local': + # Debian's default scheme installs to /usr/local/ but we want to find headers in /usr/ + scheme = 'posix_prefix' +prefix = '$prefix' +if prefix == 'NONE': + prefix = '$ac_default_prefix' +sitedir = sysconfig.get_path('platlib', scheme, vars={'platbase': prefix}) +print(sitedir)"` + else + # distutils.sysconfig way + PYTHON_PLATFORM_SITE_PKG=`$PYTHON -c "$IMPORT_SYSCONFIG; \ + print (sysconfig.get_python_lib(1,0));"` + fi + fi + AC_MSG_RESULT([$PYTHON_PLATFORM_SITE_PKG]) + AC_SUBST([PYTHON_PLATFORM_SITE_PKG]) + + # + # libraries which must be linked in when embedding + # + AC_MSG_CHECKING(python extra libraries) + if test -z "$PYTHON_EXTRA_LIBS"; then + PYTHON_EXTRA_LIBS=`$PYTHON -c "$IMPORT_SYSCONFIG; \ + conf = sysconfig.get_config_var; \ + print (conf('LIBS') + ' ' + conf('SYSLIBS'))"` + fi + AC_MSG_RESULT([$PYTHON_EXTRA_LIBS]) + AC_SUBST(PYTHON_EXTRA_LIBS) + + # + # linking flags needed when embedding + # + AC_MSG_CHECKING(python extra linking flags) + if test -z "$PYTHON_EXTRA_LDFLAGS"; then + PYTHON_EXTRA_LDFLAGS=`$PYTHON -c "$IMPORT_SYSCONFIG; \ + conf = sysconfig.get_config_var; \ + print (conf('LINKFORSHARED'))"` + # Hack for macos, it sticks this in here. + PYTHON_EXTRA_LDFLAGS=`echo $PYTHON_EXTRA_LDFLAGS | sed 's/CoreFoundation.*$/CoreFoundation/'` + fi + AC_MSG_RESULT([$PYTHON_EXTRA_LDFLAGS]) + AC_SUBST(PYTHON_EXTRA_LDFLAGS) + + if test "$ax_python_devel_check" = "yes"; then + # + # final check to see if everything compiles alright + # + AC_MSG_CHECKING([consistency of all components of python development environment]) + # save current global flags + ac_save_LIBS="$LIBS" + ac_save_LDFLAGS="$LDFLAGS" + ac_save_CPPFLAGS="$CPPFLAGS" + LIBS="$ac_save_LIBS $PYTHON_LIBS $PYTHON_EXTRA_LIBS" + LDFLAGS="$ac_save_LDFLAGS $PYTHON_EXTRA_LDFLAGS" + CPPFLAGS="$ac_save_CPPFLAGS $PYTHON_CPPFLAGS" + AC_LANG_PUSH([C]) + AC_LINK_IFELSE([ + AC_LANG_PROGRAM([[#include <Python.h>]], + [[Py_Initialize();]]) + ],[pythonexists=yes],[pythonexists=no]) + AC_LANG_POP([C]) + # turn back to default flags + CPPFLAGS="$ac_save_CPPFLAGS" + LIBS="$ac_save_LIBS" + LDFLAGS="$ac_save_LDFLAGS" + AC_MSG_RESULT([$pythonexists]) + + if test ! "x$pythonexists" = "xyes"; then + AC_MSG_WARN([ + Could not link test program to Python. Maybe the main Python library has been + installed in some non-standard library path. If so, pass it to configure, + via the LIBS environment variable. + Example: ./configure LIBS="-L/usr/non-standard-path/python/lib" + ============================================================================ + ERROR! + You probably have to install the development version of the Python package + for your distribution. The exact name of this package varies among them. + ============================================================================ + ]) + if ! $ax_python_devel_optional; then + AC_MSG_ERROR([Giving up]) + fi + ax_python_devel_found=no + PYTHON_VERSION="" + fi + fi + fi + AC_SUBST([ax_python_interpreter]) + AC_MSG_CHECKING([result of having a Python interpreter]) + if test "$ax_python_interpreter" = "yes"; then + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + fi + + # + # all done! + # +]) diff --git a/libgm2/config.h.in b/libgm2/config.h.in index f9710ffde8a..bd0c3237f4b 100644 --- a/libgm2/config.h.in +++ b/libgm2/config.h.in @@ -152,6 +152,9 @@ /* Define to 1 if you have the <pwd.h> header file. */ #undef HAVE_PWD_H +/* If available, contains the Python version number currently in use. */ +#undef HAVE_PYTHON + /* function rand exists */ #undef HAVE_RAND diff --git a/libgm2/configure b/libgm2/configure index a907d8813dc..e522e73d4db 100755 --- a/libgm2/configure +++ b/libgm2/configure @@ -647,8 +647,20 @@ BUILD_PIMLIB_FALSE BUILD_PIMLIB_TRUE GM2_FOR_TARGET CC_FOR_BUILD +PICFLAG enable_static enable_shared +HAVE_PYTHON_INTERPRETER_FALSE +HAVE_PYTHON_INTERPRETER_TRUE +ax_python_interpreter +PYTHON_EXTRA_LDFLAGS +PYTHON_EXTRA_LIBS +PYTHON_PLATFORM_SITE_PKG +PYTHON_SITE_PKG +PYTHON_LIBS +PYTHON_CPPFLAGS +PYTHON +PYTHON_VERSION ENABLE_DARWIN_AT_RPATH_FALSE ENABLE_DARWIN_AT_RPATH_TRUE OTOOL64 @@ -832,7 +844,8 @@ CPP CXX CXXFLAGS CCC -CXXCPP' +CXXCPP +PYTHON_VERSION' # Initialize some variables set by options. @@ -1507,6 +1520,10 @@ Some influential environment variables: CXXCPP C++ preprocessor CCAS assembler compiler command (defaults to CC) CCASFLAGS assembler compiler flags (defaults to CFLAGS) + PYTHON_VERSION + The installed Python version to use, for example '2.3'. This + string will be appended to the Python interpreter canonical + name. Use these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations. @@ -15241,7 +15258,7 @@ else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF -#line 15244 "configure" +#line 15261 "configure" #include "confdefs.h" #if HAVE_DLFCN_H @@ -15347,7 +15364,7 @@ else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF -#line 15350 "configure" +#line 15367 "configure" #include "confdefs.h" #if HAVE_DLFCN_H @@ -18689,6 +18706,579 @@ else fi + { $as_echo "$as_me:${as_lineno-$LINENO}: checking starting ax_python_devel" >&5 +$as_echo_n "checking starting ax_python_devel... " >&6; } + # Get whether it's optional + if test -z "no"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking having a Python interpreter is not optional" >&5 +$as_echo_n "checking having a Python interpreter is not optional... " >&6; } + ax_python_devel_optional=false + else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking having a Python interpreter is optional" >&5 +$as_echo_n "checking having a Python interpreter is optional... " >&6; } + ax_python_devel_optional=no + fi + # Should we test for python development? + if test -z "no"; then + ax_python_devel_check=yes + else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking not checking for Python development" >&5 +$as_echo_n "checking not checking for Python development... " >&6; } + ax_python_devel_check=no + fi + ax_python_devel_found=yes + ax_python_interpreter=yes + { $as_echo "$as_me:${as_lineno-$LINENO}: checking do we have a Python interpreter" >&5 +$as_echo_n "checking do we have a Python interpreter... " >&6; } + # + # Allow the use of a (user set) custom python version + # + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for python version" >&5 +$as_echo_n "checking for python version... " >&6; } + for version in $PYTHON_VERSION "" 3 2; do + # Extract the first word of "python[$version]", so it can be a program name with args. +set dummy python$version; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_PYTHON+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $PYTHON in + [\\/]* | ?:[\\/]*) + ac_cv_path_PYTHON="$PYTHON" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_PYTHON="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +PYTHON=$ac_cv_path_PYTHON +if test -n "$PYTHON"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON" >&5 +$as_echo "$PYTHON" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking $version" >&5 +$as_echo_n "checking $version... " >&6; } + if test -z "$PYTHON"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking no" >&5 +$as_echo_n "checking no... " >&6; } + ax_python_devel_found=no + ax_python_interpreter=no + else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking yes" >&5 +$as_echo_n "checking yes... " >&6; } + ax_python_devel_found=yes + ax_python_interpreter=yes + PYTHON_VERSION=$version + break + fi + done + + if test "$ax_python_devel_found" = "yes"; then + # + # Check for a version of Python >= 2.1.0 + # + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a version of Python >= '2.1.0'" >&5 +$as_echo_n "checking for a version of Python >= '2.1.0'... " >&6; } + ac_supports_python_ver=`$PYTHON -c "import sys; \ + ver = sys.version.split ()[0]; \ + print (ver >= '2.1.0')"` + if test "$ac_supports_python_ver" != "True"; then + if test -z "$PYTHON_NOVERSIONCHECK"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: +This version of the AC_PYTHON_DEVEL macro +doesn't work properly with versions of Python before +2.1.0. You may need to re-run configure, setting the +variables PYTHON_CPPFLAGS, PYTHON_LIBS, PYTHON_SITE_PKG, +PYTHON_EXTRA_LIBS and PYTHON_EXTRA_LDFLAGS by hand. +Moreover, to disable this check, set PYTHON_NOVERSIONCHECK +to something else than an empty string. +" >&5 +$as_echo "$as_me: WARNING: +This version of the AC_PYTHON_DEVEL macro +doesn't work properly with versions of Python before +2.1.0. You may need to re-run configure, setting the +variables PYTHON_CPPFLAGS, PYTHON_LIBS, PYTHON_SITE_PKG, +PYTHON_EXTRA_LIBS and PYTHON_EXTRA_LDFLAGS by hand. +Moreover, to disable this check, set PYTHON_NOVERSIONCHECK +to something else than an empty string. +" >&2;} + if ! $ax_python_devel_optional; then + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "Giving up +See \`config.log' for more details" "$LINENO" 5; } + fi + ax_python_devel_found=no + { $as_echo "$as_me:${as_lineno-$LINENO}: checking no interpreter found, incorrect version" >&5 +$as_echo_n "checking no interpreter found, incorrect version... " >&6; } + PYTHON_VERSION="" + ax_python_interpreter=no + { $as_echo "$as_me:${as_lineno-$LINENO}: checking no interpreter found" >&5 +$as_echo_n "checking no interpreter found... " >&6; } + else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: skip at user request" >&5 +$as_echo "skip at user request" >&6; } + fi + else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + fi + fi + + if test "$ax_python_devel_found" = "yes"; then + # + # If the macro parameter ``version'' is set, honour it. + # A Python shim class, VPy, is used to implement correct version comparisons via + # string expressions, since e.g. a naive textual ">= 2.7.3" won't work for + # Python 2.7.10 (the ".1" being evaluated as less than ".3"). + # + if test -n >= '3.0'; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a version of Python >= '3.0'" >&5 +$as_echo_n "checking for a version of Python >= '3.0'... " >&6; } + cat << EOF > ax_python_devel_vpy.py +class VPy: + def vtup(self, s): + return tuple(map(int, s.strip().replace("rc", ".").split("."))) + def __init__(self): + import sys + self.vpy = tuple(sys.version_info)[:3] + def __eq__(self, s): + return self.vpy == self.vtup(s) + def __ne__(self, s): + return self.vpy != self.vtup(s) + def __lt__(self, s): + return self.vpy < self.vtup(s) + def __gt__(self, s): + return self.vpy > self.vtup(s) + def __le__(self, s): + return self.vpy <= self.vtup(s) + def __ge__(self, s): + return self.vpy >= self.vtup(s) +EOF + ac_supports_python_ver=`$PYTHON -c """import ax_python_devel_vpy; \ + ver = ax_python_devel_vpy.VPy(); \ + print (ver >= '3.0') """` + rm -rf ax_python_devel_vpy*.py* __pycache__/ax_python_devel_vpy*.py* + if test "$ac_supports_python_ver" = "True"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: this package requires Python >= '3.0'. +If you have it installed, but it isn't the default Python +interpreter in your system path, please pass the PYTHON_VERSION +variable to configure. See \`\`configure --help'' for reference. +" >&5 +$as_echo "$as_me: WARNING: this package requires Python >= '3.0'. +If you have it installed, but it isn't the default Python +interpreter in your system path, please pass the PYTHON_VERSION +variable to configure. See \`\`configure --help'' for reference. +" >&2;} + if ! $ax_python_devel_optional; then + as_fn_error $? "Giving up" "$LINENO" 5 + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: checking no interpreter found, wrong version >= '3.0'" >&5 +$as_echo_n "checking no interpreter found, wrong version >= '3.0'... " >&6; } + ax_python_devel_found=no + PYTHON_VERSION="" + # Wrong version of the interpreter. + ax_python_interpreter=no + fi + fi + fi + if test "$ax_python_devel_found" = "yes"; then + # + # Check if you have distutils, else fail + # + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for the sysconfig Python package" >&5 +$as_echo_n "checking for the sysconfig Python package... " >&6; } + ac_sysconfig_result=`$PYTHON -c "import sysconfig" 2>&1` + if test $? -eq 0; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + IMPORT_SYSCONFIG="import sysconfig" + else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for the distutils Python package" >&5 +$as_echo_n "checking for the distutils Python package... " >&6; } + ac_sysconfig_result=`$PYTHON -c "from distutils import sysconfig" 2>&1` + if test $? -eq 0; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + IMPORT_SYSCONFIG="from distutils import sysconfig" + else + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot import Python module \"distutils\". +Please check your Python installation. The error was: +$ac_sysconfig_result" >&5 +$as_echo "$as_me: WARNING: cannot import Python module \"distutils\". +Please check your Python installation. The error was: +$ac_sysconfig_result" >&2;} + if ! $ax_python_devel_optional; then + as_fn_error $? "Giving up" "$LINENO" 5 + fi + ax_python_devel_found=no + PYTHON_VERSION="" + fi + fi + fi + + if test "$ax_python_devel_found" = "yes"; then + # + # Check for Python include path + # + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Python include path" >&5 +$as_echo_n "checking for Python include path... " >&6; } + if test -z "$PYTHON_CPPFLAGS"; then + if test "$IMPORT_SYSCONFIG" = "import sysconfig"; then + # sysconfig module has different functions + python_path=`$PYTHON -c "$IMPORT_SYSCONFIG; \ + print (sysconfig.get_path ('include'));"` + plat_python_path=`$PYTHON -c "$IMPORT_SYSCONFIG; \ + print (sysconfig.get_path ('platinclude'));"` + else + # old distutils way + python_path=`$PYTHON -c "$IMPORT_SYSCONFIG; \ + print (sysconfig.get_python_inc ());"` + plat_python_path=`$PYTHON -c "$IMPORT_SYSCONFIG; \ + print (sysconfig.get_python_inc (plat_specific=1));"` + fi + if test -n "${python_path}"; then + if test "${plat_python_path}" != "${python_path}"; then + python_path="-I$python_path -I$plat_python_path" + else + python_path="-I$python_path" + fi + fi + PYTHON_CPPFLAGS=$python_path + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON_CPPFLAGS" >&5 +$as_echo "$PYTHON_CPPFLAGS" >&6; } + + + # + # Check for Python library path + # + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Python library path" >&5 +$as_echo_n "checking for Python library path... " >&6; } + if test -z "$PYTHON_LIBS"; then + # (makes two attempts to ensure we've got a version number + # from the interpreter) + ac_python_version=`cat<<EOD | $PYTHON - + +# join all versioning strings, on some systems +# major/minor numbers could be in different list elements +from sysconfig import * +e = get_config_var('VERSION') +if e is not None: + print(e) +EOD` + + if test -z "$ac_python_version"; then + if test -n "$PYTHON_VERSION"; then + ac_python_version=$PYTHON_VERSION + else + ac_python_version=`$PYTHON -c "import sys; \ + print ("%d.%d" % sys.version_info[:2])"` + fi + fi + + # Make the versioning information available to the compiler + +cat >>confdefs.h <<_ACEOF +#define HAVE_PYTHON "$ac_python_version" +_ACEOF + + + # First, the library directory: + ac_python_libdir=`cat<<EOD | $PYTHON - + +# There should be only one +$IMPORT_SYSCONFIG +e = sysconfig.get_config_var('LIBDIR') +if e is not None: + print (e) +EOD` + + # Now, for the library: + ac_python_library=`cat<<EOD | $PYTHON - + +$IMPORT_SYSCONFIG +c = sysconfig.get_config_vars() +if 'LDVERSION' in c: + print ('python'+c['LDVERSION']) +else: + print ('python'+c['VERSION']) +EOD` + + # This small piece shamelessly adapted from PostgreSQL python macro; + # credits goes to momjian, I think. I'd like to put the right name + # in the credits, if someone can point me in the right direction... ? + # + if test -n "$ac_python_libdir" -a -n "$ac_python_library" + then + # use the official shared library + ac_python_library=`echo "$ac_python_library" | sed "s/^lib//"` + PYTHON_LIBS="-L$ac_python_libdir -l$ac_python_library" + else + # old way: use libpython from python_configdir + ac_python_libdir=`$PYTHON -c \ + "from sysconfig import get_python_lib as f; \ + import os; \ + print (os.path.join(f(plat_specific=1, standard_lib=1), 'config'));"` + PYTHON_LIBS="-L$ac_python_libdir -lpython$ac_python_version" + fi + + if test -z "$PYTHON_LIBS"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: + Cannot determine location of your Python DSO. Please check it was installed with + dynamic libraries enabled, or try setting PYTHON_LIBS by hand. + " >&5 +$as_echo "$as_me: WARNING: + Cannot determine location of your Python DSO. Please check it was installed with + dynamic libraries enabled, or try setting PYTHON_LIBS by hand. + " >&2;} + if ! $ax_python_devel_optional; then + as_fn_error $? "Giving up" "$LINENO" 5 + fi + ax_python_devel_found=no + PYTHON_VERSION="" + fi + fi + fi + + if test "$ax_python_devel_found" = "yes"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON_LIBS" >&5 +$as_echo "$PYTHON_LIBS" >&6; } + + + # + # Check for site packages + # + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Python site-packages path" >&5 +$as_echo_n "checking for Python site-packages path... " >&6; } + if test -z "$PYTHON_SITE_PKG"; then + if test "$IMPORT_SYSCONFIG" = "import sysconfig"; then + PYTHON_SITE_PKG=`$PYTHON -c " +$IMPORT_SYSCONFIG; +if hasattr(sysconfig, 'get_default_scheme'): + scheme = sysconfig.get_default_scheme() +else: + scheme = sysconfig._get_default_scheme() +if scheme == 'posix_local': + # Debian's default scheme installs to /usr/local/ but we want to find headers in /usr/ + scheme = 'posix_prefix' +prefix = '$prefix' +if prefix == 'NONE': + prefix = '$ac_default_prefix' +sitedir = sysconfig.get_path('purelib', scheme, vars={'base': prefix}) +print(sitedir)"` + else + # distutils.sysconfig way + PYTHON_SITE_PKG=`$PYTHON -c "$IMPORT_SYSCONFIG; \ + print (sysconfig.get_python_lib(0,0));"` + fi + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON_SITE_PKG" >&5 +$as_echo "$PYTHON_SITE_PKG" >&6; } + + + # + # Check for platform-specific site packages + # + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Python platform specific site-packages path" >&5 +$as_echo_n "checking for Python platform specific site-packages path... " >&6; } + if test -z "$PYTHON_PLATFORM_SITE_PKG"; then + if test "$IMPORT_SYSCONFIG" = "import sysconfig"; then + PYTHON_PLATFORM_SITE_PKG=`$PYTHON -c " +$IMPORT_SYSCONFIG; +if hasattr(sysconfig, 'get_default_scheme'): + scheme = sysconfig.get_default_scheme() +else: + scheme = sysconfig._get_default_scheme() +if scheme == 'posix_local': + # Debian's default scheme installs to /usr/local/ but we want to find headers in /usr/ + scheme = 'posix_prefix' +prefix = '$prefix' +if prefix == 'NONE': + prefix = '$ac_default_prefix' +sitedir = sysconfig.get_path('platlib', scheme, vars={'platbase': prefix}) +print(sitedir)"` + else + # distutils.sysconfig way + PYTHON_PLATFORM_SITE_PKG=`$PYTHON -c "$IMPORT_SYSCONFIG; \ + print (sysconfig.get_python_lib(1,0));"` + fi + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON_PLATFORM_SITE_PKG" >&5 +$as_echo "$PYTHON_PLATFORM_SITE_PKG" >&6; } + + + # + # libraries which must be linked in when embedding + # + { $as_echo "$as_me:${as_lineno-$LINENO}: checking python extra libraries" >&5 +$as_echo_n "checking python extra libraries... " >&6; } + if test -z "$PYTHON_EXTRA_LIBS"; then + PYTHON_EXTRA_LIBS=`$PYTHON -c "$IMPORT_SYSCONFIG; \ + conf = sysconfig.get_config_var; \ + print (conf('LIBS') + ' ' + conf('SYSLIBS'))"` + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON_EXTRA_LIBS" >&5 +$as_echo "$PYTHON_EXTRA_LIBS" >&6; } + + + # + # linking flags needed when embedding + # + { $as_echo "$as_me:${as_lineno-$LINENO}: checking python extra linking flags" >&5 +$as_echo_n "checking python extra linking flags... " >&6; } + if test -z "$PYTHON_EXTRA_LDFLAGS"; then + PYTHON_EXTRA_LDFLAGS=`$PYTHON -c "$IMPORT_SYSCONFIG; \ + conf = sysconfig.get_config_var; \ + print (conf('LINKFORSHARED'))"` + # Hack for macos, it sticks this in here. + PYTHON_EXTRA_LDFLAGS=`echo $PYTHON_EXTRA_LDFLAGS | sed 's/CoreFoundation.*$/CoreFoundation/'` + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON_EXTRA_LDFLAGS" >&5 +$as_echo "$PYTHON_EXTRA_LDFLAGS" >&6; } + + + if test "$ax_python_devel_check" = "yes"; then + # + # final check to see if everything compiles alright + # + { $as_echo "$as_me:${as_lineno-$LINENO}: checking consistency of all components of python development environment" >&5 +$as_echo_n "checking consistency of all components of python development environment... " >&6; } + # save current global flags + ac_save_LIBS="$LIBS" + ac_save_LDFLAGS="$LDFLAGS" + ac_save_CPPFLAGS="$CPPFLAGS" + LIBS="$ac_save_LIBS $PYTHON_LIBS $PYTHON_EXTRA_LIBS" + LDFLAGS="$ac_save_LDFLAGS $PYTHON_EXTRA_LDFLAGS" + CPPFLAGS="$ac_save_CPPFLAGS $PYTHON_CPPFLAGS" + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + if test x$gcc_no_link = xyes; then + as_fn_error $? "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5 +fi +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #include <Python.h> +int +main () +{ +Py_Initialize(); + ; + return 0; +} + +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + pythonexists=yes +else + pythonexists=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + # turn back to default flags + CPPFLAGS="$ac_save_CPPFLAGS" + LIBS="$ac_save_LIBS" + LDFLAGS="$ac_save_LDFLAGS" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $pythonexists" >&5 +$as_echo "$pythonexists" >&6; } + + if test ! "x$pythonexists" = "xyes"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: + Could not link test program to Python. Maybe the main Python library has been + installed in some non-standard library path. If so, pass it to configure, + via the LIBS environment variable. + Example: ./configure LIBS=\"-L/usr/non-standard-path/python/lib\" + ============================================================================ + ERROR! + You probably have to install the development version of the Python package + for your distribution. The exact name of this package varies among them. + ============================================================================ + " >&5 +$as_echo "$as_me: WARNING: + Could not link test program to Python. Maybe the main Python library has been + installed in some non-standard library path. If so, pass it to configure, + via the LIBS environment variable. + Example: ./configure LIBS=\"-L/usr/non-standard-path/python/lib\" + ============================================================================ + ERROR! + You probably have to install the development version of the Python package + for your distribution. The exact name of this package varies among them. + ============================================================================ + " >&2;} + if ! $ax_python_devel_optional; then + as_fn_error $? "Giving up" "$LINENO" 5 + fi + ax_python_devel_found=no + PYTHON_VERSION="" + fi + fi + fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking result of having a Python interpreter" >&5 +$as_echo_n "checking result of having a Python interpreter... " >&6; } + if test "$ax_python_interpreter" = "yes"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + fi + + # + # all done! + # + + if test x$ax_python_interpreter = xyes; then + HAVE_PYTHON_INTERPRETER_TRUE= + HAVE_PYTHON_INTERPRETER_FALSE='#' +else + HAVE_PYTHON_INTERPRETER_TRUE='#' + HAVE_PYTHON_INTERPRETER_FALSE= +fi + @@ -19406,6 +19996,89 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu +case "${host}" in + # PIC is the default on some targets or must not be used. + *-*-darwin*) + # For darwin, common symbols are not allowed in MH_DYLIB files + case "${CFLAGS}" in + # If we are using a compiler supporting mdynamic-no-pic + # and the option has been tested as safe to add, then cancel + # it here, since the code generated is incompatible with shared + # libs. + *-mdynamic-no-pic*) PICFLAG='-fno-common -mno-dynamic-no-pic' ;; + *) PICFLAG=-fno-common ;; + esac + ;; + alpha*-dec-osf5*) + # PIC is the default. + ;; + hppa*64*-*-hpux*) + # PIC is the default for 64-bit PA HP-UX. + ;; + i[34567]86-*-cygwin* | x86_64-*-cygwin*) + ;; + i[34567]86-*-mingw* | x86_64-*-mingw*) + ;; + i[34567]86-*-interix[3-9]*) + # Interix 3.x gcc -fpic/-fPIC options generate broken code. + # Instead, we relocate shared libraries at runtime. + ;; + i[34567]86-*-nto-qnx*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + PICFLAG='-fPIC -shared' + ;; + i[34567]86-pc-msdosdjgpp*) + # DJGPP does not support shared libraries at all. + ;; + ia64*-*-hpux*) + # On IA64 HP-UX, PIC is the default but the pic flag + # sets the default TLS model and affects inlining. + PICFLAG=-fPIC + ;; + loongarch*-*-*) + PICFLAG=-fpic + ;; + mips-sgi-irix6*) + # PIC is the default. + ;; + rs6000-ibm-aix* | powerpc-ibm-aix*) + # All AIX code is PIC. + ;; + + # Some targets support both -fPIC and -fpic, but prefer the latter. + # FIXME: Why? + i[34567]86-*-* | x86_64-*-*) + PICFLAG=-fpic + ;; + # FIXME: Override -fPIC default in libgcc only? + sh-*-linux* | sh[2346lbe]*-*-linux*) + PICFLAG=-fpic + ;; + sh*-*-netbsd*) + PICFLAG=-fpic + ;; + # Default to -fPIC unless specified otherwise. + *) + PICFLAG=-fPIC + ;; +esac + +# If the user explicitly uses -fpic/-fPIC, keep that. +case "${CFLAGS}" in + *-fpic*) + PICFLAG=-fpic + ;; + *-fPIC*) + PICFLAG=-fPIC + ;; +esac + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking m2 front end checking c library for access" >&5 @@ -23312,6 +23985,10 @@ if test -z "${ENABLE_DARWIN_AT_RPATH_TRUE}" && test -z "${ENABLE_DARWIN_AT_RPATH as_fn_error $? "conditional \"ENABLE_DARWIN_AT_RPATH\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi +if test -z "${HAVE_PYTHON_INTERPRETER_TRUE}" && test -z "${HAVE_PYTHON_INTERPRETER_FALSE}"; then + as_fn_error $? "conditional \"HAVE_PYTHON_INTERPRETER\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi if test -z "${BUILD_PIMLIB_TRUE}" && test -z "${BUILD_PIMLIB_FALSE}"; then as_fn_error $? "conditional \"BUILD_PIMLIB\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 diff --git a/libgm2/configure.ac b/libgm2/configure.ac index bd8b3c3e35d..8f71649cd16 100644 --- a/libgm2/configure.ac +++ b/libgm2/configure.ac @@ -259,7 +259,8 @@ LT_INIT AC_LIBTOOL_DLOPEN AM_CONDITIONAL([ENABLE_DARWIN_AT_RPATH], [test x$enable_darwin_at_rpath = xyes]) - +AC_PYTHON_DEVEL([>= '3.0'],[no],[no]) +AM_CONDITIONAL([HAVE_PYTHON_INTERPRETER], [test x$ax_python_interpreter = xyes]) AC_SUBST(enable_shared) AC_SUBST(enable_static) @@ -302,6 +303,8 @@ AC_PROG_CC m4_rename_force([real_PRECIOUS],[_AC_ARG_VAR_PRECIOUS]) AC_SUBST(CFLAGS) +GCC_PICFLAG +AC_SUBST([PICFLAG]) AC_DEFUN([GM2_UNDEF],[ $as_echo "#undef HAVE_$1" >>confdefs.h diff --git a/libgm2/libm2cor/Makefile.am b/libgm2/libm2cor/Makefile.am index edf9243a5b8..dc8478b449a 100644 --- a/libgm2/libm2cor/Makefile.am +++ b/libgm2/libm2cor/Makefile.am @@ -103,7 +103,8 @@ M2DEFS = Executive.def \ TimerHandler.def M2MODS = Executive.mod \ - SYSTEM.mod TimerHandler.mod + TimerHandler.mod \ + SYSTEM.mod toolexeclib_LTLIBRARIES = libm2cor.la @@ -112,7 +113,9 @@ libm2cor_la_SOURCES = $(M2MODS) KeyBoardLEDs.cc nodist_EXTRA_libm2cor_la_SOURCES = dummy.c ## forces automake to generate the LINK definition libm2cordir = libm2cor -libm2cor_la_DEPENDENCIES = SYSTEM.def $(addsuffix .lo, $(basename $(libm2cor_la_SOURCES))) +libm2cor_la_DEPENDENCIES = SYSTEM.def \ + $(addsuffix .lo, $(basename $(libm2cor_la_SOURCES))) + libm2cor_la_CFLAGS = \ -I. -I.. -I$(GM2_SRC)/gm2-libs -I$(GM2_SRC)/gm2-libs-iso \ -DBUILD_GM2_LIBS -I@srcdir@/../ -I@srcdir@/../libm2iso @@ -121,6 +124,7 @@ libm2cor_la_M2FLAGS = \ -fm2-pathname=m2cor -I. -I$(GM2_SRC)/gm2-libs-coroutines \ -fm2-pathname=m2pim -I$(GM2_SRC)/gm2-libs \ -fm2-pathname=m2iso -I$(GM2_SRC)/gm2-libs-iso \ + -fm2-pathname=m2cor -I. -I$(GM2_SRC)/gm2-libs-cor-common \ -fm2-g -g -Wcase-enum -Wreturn-type -fcase -fm2-prefix=m2cor if TARGET_DARWIN @@ -133,26 +137,33 @@ libm2cor_la_link_flags += -nodefaultrpaths -Wl,-rpath,@loader_path/ endif libm2cor_la_LINK = $(LINK) -version-info $(libtool_VERSION) $(libm2cor_la_link_flags) -BUILT_SOURCES = SYSTEM.def +BUILT_SOURCES = SYSTEM.def SYSTEM.mod CLEANFILES = SYSTEM.def M2LIBDIR = /m2/m2cor/ SYSTEM.def: Makefile bash $(GM2_SRC)/tools-src/makeSystem -fpim \ - $(GM2_SRC)/gm2-libs-coroutines/SYSTEM.def \ - $(GM2_SRC)/gm2-libs-coroutines/SYSTEM.mod \ - -I$(GM2_SRC)/gm2-libs-coroutines -I$(GM2_SRC)/gm2-libs -I$(GM2_SRC)/gm2-libs-iso \ + $(GM2_SRC)/gm2-libs-cor-common/SYSTEM.def \ + $(GM2_SRC)/gm2-libs-cor-common/SYSTEM.mod \ + -I$(GM2_SRC)/gm2-libs-cor-common \ + -I$(GM2_SRC)/gm2-libs-coroutines \ + -I$(GM2_SRC)/gm2-libs \ + -I$(GM2_SRC)/gm2-libs-iso \ "$(GM2_FOR_TARGET)" $@ +SYSTEM.mod: $(GM2_SRC)/gm2-libs-cor-common/SYSTEM.mod + cp $< $@ + .mod.lo: - $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + $(LIBTOOL) --tag CC \ + $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=compile $(GM2_FOR_TARGET) \ -c $(CFLAGS_FOR_TARGET) $(LIBCFLAGS) $(libm2cor_la_M2FLAGS) $< -o $@ .cc.lo: - $(LIBTOOL) --tag=CXX --mode=compile $(CXX) \ - -c -I$(srcdir) $(CXXFLAGS) $(LIBCFLAGS) $(libm2cor_la_CFLAGS) $< -o $@ + $(LIBTOOL) --tag CXX --mode=compile \ + $(CXX) -c -I$(srcdir) $(CXXFLAGS) $(LIBCFLAGS) $(libm2cor_la_CFLAGS) $< -o $@ install-data-local: force mkdir -p $(DESTDIR)$(inst_libdir)/$(M2LIBDIR) diff --git a/libgm2/libm2cor/Makefile.in b/libgm2/libm2cor/Makefile.in index 19efef15b82..fe2fe468f60 100644 --- a/libgm2/libm2cor/Makefile.in +++ b/libgm2/libm2cor/Makefile.in @@ -108,7 +108,8 @@ target_triplet = @target@ @BUILD_CORLIB_TRUE@@ENABLE_DARWIN_AT_RPATH_TRUE@am__append_1 = -nodefaultrpaths -Wl,-rpath,@loader_path/ subdir = libm2cor ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/../config/acx.m4 \ +am__aclocal_m4_deps = $(top_srcdir)/ax_python_devel.m4 \ + $(top_srcdir)/../config/acx.m4 \ $(top_srcdir)/../config/clang-plugin.m4 \ $(top_srcdir)/../config/depstand.m4 \ $(top_srcdir)/../config/gcc-plugin.m4 \ @@ -116,10 +117,10 @@ am__aclocal_m4_deps = $(top_srcdir)/../config/acx.m4 \ $(top_srcdir)/../config/multi.m4 \ $(top_srcdir)/../config/no-executables.m4 \ $(top_srcdir)/../config/override.m4 \ - $(top_srcdir)/../libtool.m4 $(top_srcdir)/../ltoptions.m4 \ - $(top_srcdir)/../ltsugar.m4 $(top_srcdir)/../ltversion.m4 \ - $(top_srcdir)/../lt~obsolete.m4 $(top_srcdir)/acinclude.m4 \ - $(top_srcdir)/../config/gc++filt.m4 \ + $(top_srcdir)/../config/picflag.m4 $(top_srcdir)/../libtool.m4 \ + $(top_srcdir)/../ltoptions.m4 $(top_srcdir)/../ltsugar.m4 \ + $(top_srcdir)/../ltversion.m4 $(top_srcdir)/../lt~obsolete.m4 \ + $(top_srcdir)/acinclude.m4 $(top_srcdir)/../config/gc++filt.m4 \ $(top_srcdir)/../config/tls.m4 $(top_srcdir)/../config/gthr.m4 \ $(top_srcdir)/../config/cet.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ @@ -159,8 +160,8 @@ am__uninstall_files_from_dir = { \ am__installdirs = "$(DESTDIR)$(toolexeclibdir)" LTLIBRARIES = $(toolexeclib_LTLIBRARIES) libm2cor_la_LIBADD = -@BUILD_CORLIB_TRUE@am__objects_1 = Executive.lo SYSTEM.lo \ -@BUILD_CORLIB_TRUE@ TimerHandler.lo +@BUILD_CORLIB_TRUE@am__objects_1 = Executive.lo TimerHandler.lo \ +@BUILD_CORLIB_TRUE@ SYSTEM.lo @BUILD_CORLIB_TRUE@am_libm2cor_la_OBJECTS = $(am__objects_1) \ @BUILD_CORLIB_TRUE@ KeyBoardLEDs.lo libm2cor_la_OBJECTS = $(am_libm2cor_la_OBJECTS) @@ -314,6 +315,15 @@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ +PICFLAG = @PICFLAG@ +PYTHON = @PYTHON@ +PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ +PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ +PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ +PYTHON_LIBS = @PYTHON_LIBS@ +PYTHON_PLATFORM_SITE_PKG = @PYTHON_PLATFORM_SITE_PKG@ +PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ +PYTHON_VERSION = @PYTHON_VERSION@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ @@ -332,6 +342,7 @@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ +ax_python_interpreter = @ax_python_interpreter@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ @@ -468,13 +479,16 @@ FLAGS_TO_PASS = $(AM_MAKEFLAGS) @BUILD_CORLIB_TRUE@ TimerHandler.def @BUILD_CORLIB_TRUE@M2MODS = Executive.mod \ -@BUILD_CORLIB_TRUE@ SYSTEM.mod TimerHandler.mod +@BUILD_CORLIB_TRUE@ TimerHandler.mod \ +@BUILD_CORLIB_TRUE@ SYSTEM.mod @BUILD_CORLIB_TRUE@toolexeclib_LTLIBRARIES = libm2cor.la @BUILD_CORLIB_TRUE@libm2cor_la_SOURCES = $(M2MODS) KeyBoardLEDs.cc @BUILD_CORLIB_TRUE@nodist_EXTRA_libm2cor_la_SOURCES = dummy.c ## forces automake to generate the LINK definition @BUILD_CORLIB_TRUE@libm2cordir = libm2cor -@BUILD_CORLIB_TRUE@libm2cor_la_DEPENDENCIES = SYSTEM.def $(addsuffix .lo, $(basename $(libm2cor_la_SOURCES))) +@BUILD_CORLIB_TRUE@libm2cor_la_DEPENDENCIES = SYSTEM.def \ +@BUILD_CORLIB_TRUE@ $(addsuffix .lo, $(basename $(libm2cor_la_SOURCES))) + @BUILD_CORLIB_TRUE@libm2cor_la_CFLAGS = \ @BUILD_CORLIB_TRUE@ -I. -I.. -I$(GM2_SRC)/gm2-libs -I$(GM2_SRC)/gm2-libs-iso \ @BUILD_CORLIB_TRUE@ -DBUILD_GM2_LIBS -I@srcdir@/../ -I@srcdir@/../libm2iso @@ -483,6 +497,7 @@ FLAGS_TO_PASS = $(AM_MAKEFLAGS) @BUILD_CORLIB_TRUE@ -fm2-pathname=m2cor -I. -I$(GM2_SRC)/gm2-libs-coroutines \ @BUILD_CORLIB_TRUE@ -fm2-pathname=m2pim -I$(GM2_SRC)/gm2-libs \ @BUILD_CORLIB_TRUE@ -fm2-pathname=m2iso -I$(GM2_SRC)/gm2-libs-iso \ +@BUILD_CORLIB_TRUE@ -fm2-pathname=m2cor -I. -I$(GM2_SRC)/gm2-libs-cor-common \ @BUILD_CORLIB_TRUE@ -fm2-g -g -Wcase-enum -Wreturn-type -fcase -fm2-prefix=m2cor @BUILD_CORLIB_TRUE@@TARGET_DARWIN_FALSE@libm2cor_la_link_flags = \ @@ -490,7 +505,7 @@ FLAGS_TO_PASS = $(AM_MAKEFLAGS) @BUILD_CORLIB_TRUE@@TARGET_DARWIN_TRUE@libm2cor_la_link_flags = -Wl,-undefined,dynamic_lookup \ @BUILD_CORLIB_TRUE@@TARGET_DARWIN_TRUE@ $(am__append_1) @BUILD_CORLIB_TRUE@libm2cor_la_LINK = $(LINK) -version-info $(libtool_VERSION) $(libm2cor_la_link_flags) -@BUILD_CORLIB_TRUE@BUILT_SOURCES = SYSTEM.def +@BUILD_CORLIB_TRUE@BUILT_SOURCES = SYSTEM.def SYSTEM.mod @BUILD_CORLIB_TRUE@CLEANFILES = SYSTEM.def @BUILD_CORLIB_TRUE@M2LIBDIR = /m2/m2cor/ all: $(BUILT_SOURCES) @@ -816,19 +831,26 @@ uninstall-am: uninstall-toolexeclibLTLIBRARIES @[email protected]: Makefile @BUILD_CORLIB_TRUE@ bash $(GM2_SRC)/tools-src/makeSystem -fpim \ -@BUILD_CORLIB_TRUE@ $(GM2_SRC)/gm2-libs-coroutines/SYSTEM.def \ -@BUILD_CORLIB_TRUE@ $(GM2_SRC)/gm2-libs-coroutines/SYSTEM.mod \ -@BUILD_CORLIB_TRUE@ -I$(GM2_SRC)/gm2-libs-coroutines -I$(GM2_SRC)/gm2-libs -I$(GM2_SRC)/gm2-libs-iso \ +@BUILD_CORLIB_TRUE@ $(GM2_SRC)/gm2-libs-cor-common/SYSTEM.def \ +@BUILD_CORLIB_TRUE@ $(GM2_SRC)/gm2-libs-cor-common/SYSTEM.mod \ +@BUILD_CORLIB_TRUE@ -I$(GM2_SRC)/gm2-libs-cor-common \ +@BUILD_CORLIB_TRUE@ -I$(GM2_SRC)/gm2-libs-coroutines \ +@BUILD_CORLIB_TRUE@ -I$(GM2_SRC)/gm2-libs \ +@BUILD_CORLIB_TRUE@ -I$(GM2_SRC)/gm2-libs-iso \ @BUILD_CORLIB_TRUE@ "$(GM2_FOR_TARGET)" $@ +@[email protected]: $(GM2_SRC)/gm2-libs-cor-common/SYSTEM.mod +@BUILD_CORLIB_TRUE@ cp $< $@ + @[email protected]: -@BUILD_CORLIB_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ +@BUILD_CORLIB_TRUE@ $(LIBTOOL) --tag CC \ +@BUILD_CORLIB_TRUE@ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ @BUILD_CORLIB_TRUE@ --mode=compile $(GM2_FOR_TARGET) \ @BUILD_CORLIB_TRUE@ -c $(CFLAGS_FOR_TARGET) $(LIBCFLAGS) $(libm2cor_la_M2FLAGS) $< -o $@ @[email protected]: -@BUILD_CORLIB_TRUE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) \ -@BUILD_CORLIB_TRUE@ -c -I$(srcdir) $(CXXFLAGS) $(LIBCFLAGS) $(libm2cor_la_CFLAGS) $< -o $@ +@BUILD_CORLIB_TRUE@ $(LIBTOOL) --tag CXX --mode=compile \ +@BUILD_CORLIB_TRUE@ $(CXX) -c -I$(srcdir) $(CXXFLAGS) $(LIBCFLAGS) $(libm2cor_la_CFLAGS) $< -o $@ @BUILD_CORLIB_TRUE@install-data-local: force @BUILD_CORLIB_TRUE@ mkdir -p $(DESTDIR)$(inst_libdir)/$(M2LIBDIR) diff --git a/libgm2/libm2iso/Makefile.am b/libgm2/libm2iso/Makefile.am index 1af1d6aeb93..b271e34b18c 100644 --- a/libgm2/libm2iso/Makefile.am +++ b/libgm2/libm2iso/Makefile.am @@ -53,6 +53,7 @@ AM_MAKEFLAGS = \ "CC_FOR_BUILD=$(CC_FOR_BUILD)" \ "CC_FOR_TARGET=$(CC_FOR_TARGET)" \ "GM2_FOR_TARGET=$(GM2_FOR_TARGET)" \ + "GM2_FOR_TARGET_ESC=$(GM2_FOR_TARGET_ESC)" \ "CFLAGS=$(CFLAGS)" \ "CXXFLAGS=$(CXXFLAGS)" \ "CFLAGS_FOR_BUILD=$(CFLAGS_FOR_BUILD)" \ @@ -90,7 +91,9 @@ AM_MAKEFLAGS = \ "NM_FOR_TARGET=$(NM_FOR_TARGET)" \ "DESTDIR=$(DESTDIR)" \ "WERROR=$(WERROR)" \ - "TARGET_LIB_PATH_libgm2=$(TARGET_LIB_PATH_libgm2)" + "TARGET_LIB_PATH_libgm2=$(TARGET_LIB_PATH_libgm2)" \ + "PYTHON=$(PYTHON)" \ + "HAVE_PYTHON_INTERPRETER=$(HAVE_PYTHON_INTERPRETER)" # Subdir rules rely on $(FLAGS_TO_PASS) FLAGS_TO_PASS = $(AM_MAKEFLAGS) @@ -205,6 +208,7 @@ libm2iso_la_CFLAGS = \ libm2iso_la_M2FLAGS = \ -fm2-pathname=m2iso -I. -Ilibm2iso -I$(GM2_SRC)/gm2-libs-iso \ -fm2-pathname=m2pim -I$(GM2_SRC)/gm2-libs \ + -fm2-pathname=m2pim -I../libm2pim \ -fiso -fextended-opaque -fm2-g -g -Wcase-enum \ -Wall \ -Wreturn-type -fcase -fm2-prefix=m2iso @@ -219,31 +223,159 @@ libm2iso_la_link_flags += -nodefaultrpaths -Wl,-rpath,@loader_path/ endif libm2iso_la_LINK = $(LINK) -version-info $(libtool_VERSION) $(libm2iso_la_link_flags) -lm -CLEANFILES = SYSTEM.def -BUILT_SOURCES = SYSTEM.def +CLEANFILES = \ + SYSTEM.def SYSTEM.mod cbuiltin.def \ + ShortComplex.def Complex.def LongComplex.def \ + ShortComplex.mod Complex.mod LongComplex.mod +BUILT_SOURCES = \ + SYSTEM.def SYSTEM.mod cbuiltin.def \ + ShortComplexMath.def ComplexMath.def LongComplexMath.def \ + ShortComplexMath.mod ComplexMath.mod LongComplexMath.mod M2LIBDIR = /m2/m2iso/ M2HEADER_FILES = m2rts.h +GENERATED = \ + SYSTEM.def \ + SYSTEM.mod \ + ../libm2pim/Builtins.def \ + ../libm2pim/Builtins.mod \ + ../libm2pim/cbuiltin.def + +if HAVE_PYTHON_INTERPRETER +SYSTEM.def: Makefile + $(PYTHON) $(GM2_SRC)/tools-src/mktargetsrc.py --fiso \ + -D=$(GM2_SRC)/gm2-libs-iso-common/SYSTEM.def \ + -M=$(GM2_SRC)/gm2-libs-iso-common/SYSTEM.mod \ + -I=$(GM2_SRC)/gm2-libs-iso \ + -I=$(GM2_SRC)/gm2-libs \ + -I=$(GM2_SRC)/gm2-libs-iso-common \ + -C="$(GM2_FOR_TARGET_ESC)" -o $@ +else SYSTEM.def: Makefile bash $(GM2_SRC)/tools-src/makeSystem -fiso \ - $(GM2_SRC)/gm2-libs-iso/SYSTEM.def \ - $(GM2_SRC)/gm2-libs-iso/SYSTEM.mod \ - -I$(GM2_SRC)/gm2-libs-iso -I$(GM2_SRC)/gm2-libs \ + $(GM2_SRC)/gm2-libs-iso-common/SYSTEM.def \ + $(GM2_SRC)/gm2-libs-iso-common/SYSTEM.mod \ + -I$(GM2_SRC)/gm2-libs-iso \ + -I$(GM2_SRC)/gm2-libs \ + -I$(GM2_SRC)/gm2-libs-iso-common \ "$(GM2_FOR_TARGET)" $@ +endif + +../libm2pim/Builtins.def: + cd ../libm2pim ; $(MAKE) $(AM_MAKEFLAGS) Builtins.def + +../libm2pim/Builtins.mod: + cd ../libm2pim ; $(MAKE) $(AM_MAKEFLAGS) Builtins.mod + +../libm2pim/cbuiltin.def: + cd ../libm2pim ; $(MAKE) $(AM_MAKEFLAGS) cbuiltin.def + +if HAVE_PYTHON_INTERPRETER +ShortComplexMath.def: Makefile + $(PYTHON) $(GM2_SRC)/tools-src/mktargetsrc.py --fiso \ + -D=$(GM2_SRC)/gm2-libs-iso-common/ShortComplexMath.def \ + -M=$(GM2_SRC)/gm2-libs-iso-common/ShortComplexMath.mod \ + -I=$(GM2_SRC)/gm2-libs-iso -I=$(GM2_SRC)/gm2-libs \ + -I=$(GM2_SRC)/gm2-libs-iso-common \ + -C="$(GM2_FOR_TARGET_ESC)" -o $@ +else +ShortComplexMath.def: Makefile + cp $(GM2_SRC)/gm2-libs-iso-common/ShortComplexMath.def $@ +endif + +if HAVE_PYTHON_INTERPRETER +ShortComplexMath.mod: Makefile + $(PYTHON) $(GM2_SRC)/tools-src/mktargetsrc.py --fiso \ + -M=$(GM2_SRC)/gm2-libs-iso-common/ShortComplexMath.mod \ + -I=$(GM2_SRC)/gm2-libs-iso -I=$(GM2_SRC)/gm2-libs \ + -I=$(GM2_SRC)/gm2-libs-iso-common \ + -C="$(GM2_FOR_TARGET_ESC)" -o $@ +else +ShortComplexMath.mod: Makefile + cp $(GM2_SRC)/gm2-libs-iso-common/ShortComplexMath.mod $@ +endif + +if HAVE_PYTHON_INTERPRETER +ComplexMath.def: Makefile + $(PYTHON) $(GM2_SRC)/tools-src/mktargetsrc.py --fiso \ + -D=$(GM2_SRC)/gm2-libs-iso-common/ComplexMath.def \ + -M=$(GM2_SRC)/gm2-libs-iso-common/ComplexMath.mod \ + -I=$(GM2_SRC)/gm2-libs-iso -I=$(GM2_SRC)/gm2-libs \ + -I=$(GM2_SRC)/gm2-libs-iso-common \ + -C="$(GM2_FOR_TARGET_ESC)" -o $@ +else +ComplexMath.def: Makefile + cp $(GM2_SRC)/gm2-libs-iso-common/ComplexMath.def $@ +endif + +if HAVE_PYTHON_INTERPRETER +ComplexMath.mod: Makefile + $(PYTHON) $(GM2_SRC)/tools-src/mktargetsrc.py --fiso \ + -M=$(GM2_SRC)/gm2-libs-iso-common/ComplexMath.mod \ + -I=$(GM2_SRC)/gm2-libs-iso -I=$(GM2_SRC)/gm2-libs \ + -I=$(GM2_SRC)/gm2-libs-iso-common \ + -C="$(GM2_FOR_TARGET_ESC)" -o $@ +else +ComplexMath.mod: Makefile + cp $(GM2_SRC)/gm2-libs-iso-common/ComplexMath.mod $@ +endif + +if HAVE_PYTHON_INTERPRETER +LongComplexMath.def: Makefile + $(PYTHON) $(GM2_SRC)/tools-src/mktargetsrc.py --fiso \ + -D=$(GM2_SRC)/gm2-libs-iso-common/LongComplexMath.def \ + -M=$(GM2_SRC)/gm2-libs-iso-common/LongComplexMath.mod \ + -I=$(GM2_SRC)/gm2-libs-iso -I=$(GM2_SRC)/gm2-libs \ + -I=$(GM2_SRC)/gm2-libs-iso-common \ + -C="$(GM2_FOR_TARGET_ESC)" -o $@ +else +LongComplexMath.def: Makefile + cp $(GM2_SRC)/gm2-libs-iso-common/LongComplexMath.def $@ +endif + +if HAVE_PYTHON_INTERPRETER +LongComplexMath.mod: Makefile + $(PYTHON) $(GM2_SRC)/tools-src/mktargetsrc.py --fiso \ + -M=$(GM2_SRC)/gm2-libs-iso-common/LongComplexMath.mod \ + -I=$(GM2_SRC)/gm2-libs-iso -I=$(GM2_SRC)/gm2-libs \ + -I=$(GM2_SRC)/gm2-libs-iso-common \ + -C="$(GM2_FOR_TARGET_ESC)" -o $@ +else +LongComplexMath.mod: Makefile + cp $(GM2_SRC)/gm2-libs-iso-common/LongComplexMath.mod $@ +endif + +if HAVE_PYTHON_INTERPRETER +cbuiltin.def: ../libm2pim/cbuiltin.def + cp $< $@ +else +cbuiltin.def: Makefile + cp $(GM2_SRC)/gm2-libs-pim-common/cbuiltin.def $@ +endif + +SYSTEM.mod: Makefile + cp $(GM2_SRC)/gm2-libs-iso-common/SYSTEM.mod $@ + +ComplexMath.lo: $(GENERATED) ComplexMath.def ComplexMath.mod +LongComplexMath.lo: $(GENERATED) LongComplexMath.def LongComplexMath.mod +ShortComplexMath.lo: $(GENERATED) ShortComplexMath.def ShortComplexMath.mod -.mod.lo: - $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile \ +.mod.lo: $(BUILT_SOURCES) + $(LIBTOOL) --tag CC \ + $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile \ $(GM2_FOR_TARGET) -c \ $(CFLAGS_FOR_TARGET) $(LIBCFLAGS) $(libm2iso_la_M2FLAGS) $< -o $@ .cc.lo: - $(LIBTOOL) --tag=CXX --mode=compile $(CXX) -c -I$(srcdir) \ + $(LIBTOOL) --tag CXX --mode=compile \ + $(CXX) -c -I$(srcdir) \ $(CXXFLAGS) $(LIBCFLAGS) $(libm2iso_la_CFLAGS) $< -o $@ .c.lo: - $(LIBTOOL) --tag=CC --mode=compile $(CC) -c -I$(srcdir) \ + $(LIBTOOL) --tag CC --mode=compile \ + $(CC) -c -I$(srcdir) \ $(CFLAGS) $(LIBCFLAGS) $(libm2iso_la_CFLAGS) $< -o $@ install-data-local: force diff --git a/libgm2/libm2iso/Makefile.in b/libgm2/libm2iso/Makefile.in index d6b143eaf23..37216b856c8 100644 --- a/libgm2/libm2iso/Makefile.in +++ b/libgm2/libm2iso/Makefile.in @@ -108,7 +108,8 @@ target_triplet = @target@ @BUILD_ISOLIB_TRUE@@ENABLE_DARWIN_AT_RPATH_TRUE@am__append_1 = -nodefaultrpaths -Wl,-rpath,@loader_path/ subdir = libm2iso ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/../config/acx.m4 \ +am__aclocal_m4_deps = $(top_srcdir)/ax_python_devel.m4 \ + $(top_srcdir)/../config/acx.m4 \ $(top_srcdir)/../config/clang-plugin.m4 \ $(top_srcdir)/../config/depstand.m4 \ $(top_srcdir)/../config/gcc-plugin.m4 \ @@ -116,10 +117,10 @@ am__aclocal_m4_deps = $(top_srcdir)/../config/acx.m4 \ $(top_srcdir)/../config/multi.m4 \ $(top_srcdir)/../config/no-executables.m4 \ $(top_srcdir)/../config/override.m4 \ - $(top_srcdir)/../libtool.m4 $(top_srcdir)/../ltoptions.m4 \ - $(top_srcdir)/../ltsugar.m4 $(top_srcdir)/../ltversion.m4 \ - $(top_srcdir)/../lt~obsolete.m4 $(top_srcdir)/acinclude.m4 \ - $(top_srcdir)/../config/gc++filt.m4 \ + $(top_srcdir)/../config/picflag.m4 $(top_srcdir)/../libtool.m4 \ + $(top_srcdir)/../ltoptions.m4 $(top_srcdir)/../ltsugar.m4 \ + $(top_srcdir)/../ltversion.m4 $(top_srcdir)/../lt~obsolete.m4 \ + $(top_srcdir)/acinclude.m4 $(top_srcdir)/../config/gc++filt.m4 \ $(top_srcdir)/../config/tls.m4 $(top_srcdir)/../config/gthr.m4 \ $(top_srcdir)/../config/cet.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ @@ -340,6 +341,15 @@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ +PICFLAG = @PICFLAG@ +PYTHON = @PYTHON@ +PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ +PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ +PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ +PYTHON_LIBS = @PYTHON_LIBS@ +PYTHON_PLATFORM_SITE_PKG = @PYTHON_PLATFORM_SITE_PKG@ +PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ +PYTHON_VERSION = @PYTHON_VERSION@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ @@ -358,6 +368,7 @@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ +ax_python_interpreter = @ax_python_interpreter@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ @@ -447,6 +458,7 @@ AM_MAKEFLAGS = \ "CC_FOR_BUILD=$(CC_FOR_BUILD)" \ "CC_FOR_TARGET=$(CC_FOR_TARGET)" \ "GM2_FOR_TARGET=$(GM2_FOR_TARGET)" \ + "GM2_FOR_TARGET_ESC=$(GM2_FOR_TARGET_ESC)" \ "CFLAGS=$(CFLAGS)" \ "CXXFLAGS=$(CXXFLAGS)" \ "CFLAGS_FOR_BUILD=$(CFLAGS_FOR_BUILD)" \ @@ -484,7 +496,9 @@ AM_MAKEFLAGS = \ "NM_FOR_TARGET=$(NM_FOR_TARGET)" \ "DESTDIR=$(DESTDIR)" \ "WERROR=$(WERROR)" \ - "TARGET_LIB_PATH_libgm2=$(TARGET_LIB_PATH_libgm2)" + "TARGET_LIB_PATH_libgm2=$(TARGET_LIB_PATH_libgm2)" \ + "PYTHON=$(PYTHON)" \ + "HAVE_PYTHON_INTERPRETER=$(HAVE_PYTHON_INTERPRETER)" # Subdir rules rely on $(FLAGS_TO_PASS) @@ -596,6 +610,7 @@ FLAGS_TO_PASS = $(AM_MAKEFLAGS) @BUILD_ISOLIB_TRUE@libm2iso_la_M2FLAGS = \ @BUILD_ISOLIB_TRUE@ -fm2-pathname=m2iso -I. -Ilibm2iso -I$(GM2_SRC)/gm2-libs-iso \ @BUILD_ISOLIB_TRUE@ -fm2-pathname=m2pim -I$(GM2_SRC)/gm2-libs \ +@BUILD_ISOLIB_TRUE@ -fm2-pathname=m2pim -I../libm2pim \ @BUILD_ISOLIB_TRUE@ -fiso -fextended-opaque -fm2-g -g -Wcase-enum \ @BUILD_ISOLIB_TRUE@ -Wall \ @BUILD_ISOLIB_TRUE@ -Wreturn-type -fcase -fm2-prefix=m2iso @@ -605,10 +620,25 @@ FLAGS_TO_PASS = $(AM_MAKEFLAGS) @BUILD_ISOLIB_TRUE@@TARGET_DARWIN_TRUE@libm2iso_la_link_flags = -Wl,-undefined,dynamic_lookup \ @BUILD_ISOLIB_TRUE@@TARGET_DARWIN_TRUE@ $(am__append_1) @BUILD_ISOLIB_TRUE@libm2iso_la_LINK = $(LINK) -version-info $(libtool_VERSION) $(libm2iso_la_link_flags) -lm -@BUILD_ISOLIB_TRUE@CLEANFILES = SYSTEM.def -@BUILD_ISOLIB_TRUE@BUILT_SOURCES = SYSTEM.def +@BUILD_ISOLIB_TRUE@CLEANFILES = \ +@BUILD_ISOLIB_TRUE@ SYSTEM.def SYSTEM.mod cbuiltin.def \ +@BUILD_ISOLIB_TRUE@ ShortComplex.def Complex.def LongComplex.def \ +@BUILD_ISOLIB_TRUE@ ShortComplex.mod Complex.mod LongComplex.mod + +@BUILD_ISOLIB_TRUE@BUILT_SOURCES = \ +@BUILD_ISOLIB_TRUE@ SYSTEM.def SYSTEM.mod cbuiltin.def \ +@BUILD_ISOLIB_TRUE@ ShortComplexMath.def ComplexMath.def LongComplexMath.def \ +@BUILD_ISOLIB_TRUE@ ShortComplexMath.mod ComplexMath.mod LongComplexMath.mod + @BUILD_ISOLIB_TRUE@M2LIBDIR = /m2/m2iso/ @BUILD_ISOLIB_TRUE@M2HEADER_FILES = m2rts.h +@BUILD_ISOLIB_TRUE@GENERATED = \ +@BUILD_ISOLIB_TRUE@ SYSTEM.def \ +@BUILD_ISOLIB_TRUE@ SYSTEM.mod \ +@BUILD_ISOLIB_TRUE@ ../libm2pim/Builtins.def \ +@BUILD_ISOLIB_TRUE@ ../libm2pim/Builtins.mod \ +@BUILD_ISOLIB_TRUE@ ../libm2pim/cbuiltin.def + all: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) all-am @@ -933,24 +963,115 @@ uninstall-am: uninstall-toolexeclibLTLIBRARIES .PRECIOUS: Makefile -@[email protected]: Makefile -@BUILD_ISOLIB_TRUE@ bash $(GM2_SRC)/tools-src/makeSystem -fiso \ -@BUILD_ISOLIB_TRUE@ $(GM2_SRC)/gm2-libs-iso/SYSTEM.def \ -@BUILD_ISOLIB_TRUE@ $(GM2_SRC)/gm2-libs-iso/SYSTEM.mod \ -@BUILD_ISOLIB_TRUE@ -I$(GM2_SRC)/gm2-libs-iso -I$(GM2_SRC)/gm2-libs \ -@BUILD_ISOLIB_TRUE@ "$(GM2_FOR_TARGET)" $@ - -@[email protected]: -@BUILD_ISOLIB_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile \ +@BUILD_ISOLIB_TRUE@@[email protected]: Makefile +@BUILD_ISOLIB_TRUE@@HAVE_PYTHON_INTERPRETER_TRUE@ $(PYTHON) $(GM2_SRC)/tools-src/mktargetsrc.py --fiso \ +@BUILD_ISOLIB_TRUE@@HAVE_PYTHON_INTERPRETER_TRUE@ -D=$(GM2_SRC)/gm2-libs-iso-common/SYSTEM.def \ +@BUILD_ISOLIB_TRUE@@HAVE_PYTHON_INTERPRETER_TRUE@ -M=$(GM2_SRC)/gm2-libs-iso-common/SYSTEM.mod \ +@BUILD_ISOLIB_TRUE@@HAVE_PYTHON_INTERPRETER_TRUE@ -I=$(GM2_SRC)/gm2-libs-iso \ +@BUILD_ISOLIB_TRUE@@HAVE_PYTHON_INTERPRETER_TRUE@ -I=$(GM2_SRC)/gm2-libs \ +@BUILD_ISOLIB_TRUE@@HAVE_PYTHON_INTERPRETER_TRUE@ -I=$(GM2_SRC)/gm2-libs-iso-common \ +@BUILD_ISOLIB_TRUE@@HAVE_PYTHON_INTERPRETER_TRUE@ -C="$(GM2_FOR_TARGET_ESC)" -o $@ +@BUILD_ISOLIB_TRUE@@[email protected]: Makefile +@BUILD_ISOLIB_TRUE@@HAVE_PYTHON_INTERPRETER_FALSE@ bash $(GM2_SRC)/tools-src/makeSystem -fiso \ +@BUILD_ISOLIB_TRUE@@HAVE_PYTHON_INTERPRETER_FALSE@ $(GM2_SRC)/gm2-libs-iso-common/SYSTEM.def \ +@BUILD_ISOLIB_TRUE@@HAVE_PYTHON_INTERPRETER_FALSE@ $(GM2_SRC)/gm2-libs-iso-common/SYSTEM.mod \ +@BUILD_ISOLIB_TRUE@@HAVE_PYTHON_INTERPRETER_FALSE@ -I$(GM2_SRC)/gm2-libs-iso \ +@BUILD_ISOLIB_TRUE@@HAVE_PYTHON_INTERPRETER_FALSE@ -I$(GM2_SRC)/gm2-libs \ +@BUILD_ISOLIB_TRUE@@HAVE_PYTHON_INTERPRETER_FALSE@ -I$(GM2_SRC)/gm2-libs-iso-common \ +@BUILD_ISOLIB_TRUE@@HAVE_PYTHON_INTERPRETER_FALSE@ "$(GM2_FOR_TARGET)" $@ + +@BUILD_ISOLIB_TRUE@../libm2pim/Builtins.def: +@BUILD_ISOLIB_TRUE@ cd ../libm2pim ; $(MAKE) $(AM_MAKEFLAGS) Builtins.def + +@BUILD_ISOLIB_TRUE@../libm2pim/Builtins.mod: +@BUILD_ISOLIB_TRUE@ cd ../libm2pim ; $(MAKE) $(AM_MAKEFLAGS) Builtins.mod + +@BUILD_ISOLIB_TRUE@../libm2pim/cbuiltin.def: +@BUILD_ISOLIB_TRUE@ cd ../libm2pim ; $(MAKE) $(AM_MAKEFLAGS) cbuiltin.def + +@BUILD_ISOLIB_TRUE@@[email protected]: Makefile +@BUILD_ISOLIB_TRUE@@HAVE_PYTHON_INTERPRETER_TRUE@ $(PYTHON) $(GM2_SRC)/tools-src/mktargetsrc.py --fiso \ +@BUILD_ISOLIB_TRUE@@HAVE_PYTHON_INTERPRETER_TRUE@ -D=$(GM2_SRC)/gm2-libs-iso-common/ShortComplexMath.def \ +@BUILD_ISOLIB_TRUE@@HAVE_PYTHON_INTERPRETER_TRUE@ -M=$(GM2_SRC)/gm2-libs-iso-common/ShortComplexMath.mod \ +@BUILD_ISOLIB_TRUE@@HAVE_PYTHON_INTERPRETER_TRUE@ -I=$(GM2_SRC)/gm2-libs-iso -I=$(GM2_SRC)/gm2-libs \ +@BUILD_ISOLIB_TRUE@@HAVE_PYTHON_INTERPRETER_TRUE@ -I=$(GM2_SRC)/gm2-libs-iso-common \ +@BUILD_ISOLIB_TRUE@@HAVE_PYTHON_INTERPRETER_TRUE@ -C="$(GM2_FOR_TARGET_ESC)" -o $@ +@BUILD_ISOLIB_TRUE@@[email protected]: Makefile +@BUILD_ISOLIB_TRUE@@HAVE_PYTHON_INTERPRETER_FALSE@ cp $(GM2_SRC)/gm2-libs-iso-common/ShortComplexMath.def $@ + +@BUILD_ISOLIB_TRUE@@[email protected]: Makefile +@BUILD_ISOLIB_TRUE@@HAVE_PYTHON_INTERPRETER_TRUE@ $(PYTHON) $(GM2_SRC)/tools-src/mktargetsrc.py --fiso \ +@BUILD_ISOLIB_TRUE@@HAVE_PYTHON_INTERPRETER_TRUE@ -M=$(GM2_SRC)/gm2-libs-iso-common/ShortComplexMath.mod \ +@BUILD_ISOLIB_TRUE@@HAVE_PYTHON_INTERPRETER_TRUE@ -I=$(GM2_SRC)/gm2-libs-iso -I=$(GM2_SRC)/gm2-libs \ +@BUILD_ISOLIB_TRUE@@HAVE_PYTHON_INTERPRETER_TRUE@ -I=$(GM2_SRC)/gm2-libs-iso-common \ +@BUILD_ISOLIB_TRUE@@HAVE_PYTHON_INTERPRETER_TRUE@ -C="$(GM2_FOR_TARGET_ESC)" -o $@ +@BUILD_ISOLIB_TRUE@@[email protected]: Makefile +@BUILD_ISOLIB_TRUE@@HAVE_PYTHON_INTERPRETER_FALSE@ cp $(GM2_SRC)/gm2-libs-iso-common/ShortComplexMath.mod $@ + +@BUILD_ISOLIB_TRUE@@[email protected]: Makefile +@BUILD_ISOLIB_TRUE@@HAVE_PYTHON_INTERPRETER_TRUE@ $(PYTHON) $(GM2_SRC)/tools-src/mktargetsrc.py --fiso \ +@BUILD_ISOLIB_TRUE@@HAVE_PYTHON_INTERPRETER_TRUE@ -D=$(GM2_SRC)/gm2-libs-iso-common/ComplexMath.def \ +@BUILD_ISOLIB_TRUE@@HAVE_PYTHON_INTERPRETER_TRUE@ -M=$(GM2_SRC)/gm2-libs-iso-common/ComplexMath.mod \ +@BUILD_ISOLIB_TRUE@@HAVE_PYTHON_INTERPRETER_TRUE@ -I=$(GM2_SRC)/gm2-libs-iso -I=$(GM2_SRC)/gm2-libs \ +@BUILD_ISOLIB_TRUE@@HAVE_PYTHON_INTERPRETER_TRUE@ -I=$(GM2_SRC)/gm2-libs-iso-common \ +@BUILD_ISOLIB_TRUE@@HAVE_PYTHON_INTERPRETER_TRUE@ -C="$(GM2_FOR_TARGET_ESC)" -o $@ +@BUILD_ISOLIB_TRUE@@[email protected]: Makefile +@BUILD_ISOLIB_TRUE@@HAVE_PYTHON_INTERPRETER_FALSE@ cp $(GM2_SRC)/gm2-libs-iso-common/ComplexMath.def $@ + +@BUILD_ISOLIB_TRUE@@[email protected]: Makefile +@BUILD_ISOLIB_TRUE@@HAVE_PYTHON_INTERPRETER_TRUE@ $(PYTHON) $(GM2_SRC)/tools-src/mktargetsrc.py --fiso \ +@BUILD_ISOLIB_TRUE@@HAVE_PYTHON_INTERPRETER_TRUE@ -M=$(GM2_SRC)/gm2-libs-iso-common/ComplexMath.mod \ +@BUILD_ISOLIB_TRUE@@HAVE_PYTHON_INTERPRETER_TRUE@ -I=$(GM2_SRC)/gm2-libs-iso -I=$(GM2_SRC)/gm2-libs \ +@BUILD_ISOLIB_TRUE@@HAVE_PYTHON_INTERPRETER_TRUE@ -I=$(GM2_SRC)/gm2-libs-iso-common \ +@BUILD_ISOLIB_TRUE@@HAVE_PYTHON_INTERPRETER_TRUE@ -C="$(GM2_FOR_TARGET_ESC)" -o $@ +@BUILD_ISOLIB_TRUE@@[email protected]: Makefile +@BUILD_ISOLIB_TRUE@@HAVE_PYTHON_INTERPRETER_FALSE@ cp $(GM2_SRC)/gm2-libs-iso-common/ComplexMath.mod $@ + +@BUILD_ISOLIB_TRUE@@[email protected]: Makefile +@BUILD_ISOLIB_TRUE@@HAVE_PYTHON_INTERPRETER_TRUE@ $(PYTHON) $(GM2_SRC)/tools-src/mktargetsrc.py --fiso \ +@BUILD_ISOLIB_TRUE@@HAVE_PYTHON_INTERPRETER_TRUE@ -D=$(GM2_SRC)/gm2-libs-iso-common/LongComplexMath.def \ +@BUILD_ISOLIB_TRUE@@HAVE_PYTHON_INTERPRETER_TRUE@ -M=$(GM2_SRC)/gm2-libs-iso-common/LongComplexMath.mod \ +@BUILD_ISOLIB_TRUE@@HAVE_PYTHON_INTERPRETER_TRUE@ -I=$(GM2_SRC)/gm2-libs-iso -I=$(GM2_SRC)/gm2-libs \ +@BUILD_ISOLIB_TRUE@@HAVE_PYTHON_INTERPRETER_TRUE@ -I=$(GM2_SRC)/gm2-libs-iso-common \ +@BUILD_ISOLIB_TRUE@@HAVE_PYTHON_INTERPRETER_TRUE@ -C="$(GM2_FOR_TARGET_ESC)" -o $@ +@BUILD_ISOLIB_TRUE@@[email protected]: Makefile +@BUILD_ISOLIB_TRUE@@HAVE_PYTHON_INTERPRETER_FALSE@ cp $(GM2_SRC)/gm2-libs-iso-common/LongComplexMath.def $@ + +@BUILD_ISOLIB_TRUE@@[email protected]: Makefile +@BUILD_ISOLIB_TRUE@@HAVE_PYTHON_INTERPRETER_TRUE@ $(PYTHON) $(GM2_SRC)/tools-src/mktargetsrc.py --fiso \ +@BUILD_ISOLIB_TRUE@@HAVE_PYTHON_INTERPRETER_TRUE@ -M=$(GM2_SRC)/gm2-libs-iso-common/LongComplexMath.mod \ +@BUILD_ISOLIB_TRUE@@HAVE_PYTHON_INTERPRETER_TRUE@ -I=$(GM2_SRC)/gm2-libs-iso -I=$(GM2_SRC)/gm2-libs \ +@BUILD_ISOLIB_TRUE@@HAVE_PYTHON_INTERPRETER_TRUE@ -I=$(GM2_SRC)/gm2-libs-iso-common \ +@BUILD_ISOLIB_TRUE@@HAVE_PYTHON_INTERPRETER_TRUE@ -C="$(GM2_FOR_TARGET_ESC)" -o $@ +@BUILD_ISOLIB_TRUE@@[email protected]: Makefile +@BUILD_ISOLIB_TRUE@@HAVE_PYTHON_INTERPRETER_FALSE@ cp $(GM2_SRC)/gm2-libs-iso-common/LongComplexMath.mod $@ + +@BUILD_ISOLIB_TRUE@@[email protected]: ../libm2pim/cbuiltin.def +@BUILD_ISOLIB_TRUE@@HAVE_PYTHON_INTERPRETER_TRUE@ cp $< $@ +@BUILD_ISOLIB_TRUE@@[email protected]: Makefile +@BUILD_ISOLIB_TRUE@@HAVE_PYTHON_INTERPRETER_FALSE@ cp $(GM2_SRC)/gm2-libs-pim-common/cbuiltin.def $@ + +@[email protected]: Makefile +@BUILD_ISOLIB_TRUE@ cp $(GM2_SRC)/gm2-libs-iso-common/SYSTEM.mod $@ + +@[email protected]: $(GENERATED) ComplexMath.def ComplexMath.mod +@[email protected]: $(GENERATED) LongComplexMath.def LongComplexMath.mod +@[email protected]: $(GENERATED) ShortComplexMath.def ShortComplexMath.mod + +@[email protected]: $(BUILT_SOURCES) +@BUILD_ISOLIB_TRUE@ $(LIBTOOL) --tag CC \ +@BUILD_ISOLIB_TRUE@ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile \ @BUILD_ISOLIB_TRUE@ $(GM2_FOR_TARGET) -c \ @BUILD_ISOLIB_TRUE@ $(CFLAGS_FOR_TARGET) $(LIBCFLAGS) $(libm2iso_la_M2FLAGS) $< -o $@ @[email protected]: -@BUILD_ISOLIB_TRUE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) -c -I$(srcdir) \ +@BUILD_ISOLIB_TRUE@ $(LIBTOOL) --tag CXX --mode=compile \ +@BUILD_ISOLIB_TRUE@ $(CXX) -c -I$(srcdir) \ @BUILD_ISOLIB_TRUE@ $(CXXFLAGS) $(LIBCFLAGS) $(libm2iso_la_CFLAGS) $< -o $@ @[email protected]: -@BUILD_ISOLIB_TRUE@ $(LIBTOOL) --tag=CC --mode=compile $(CC) -c -I$(srcdir) \ +@BUILD_ISOLIB_TRUE@ $(LIBTOOL) --tag CC --mode=compile \ +@BUILD_ISOLIB_TRUE@ $(CC) -c -I$(srcdir) \ @BUILD_ISOLIB_TRUE@ $(CFLAGS) $(LIBCFLAGS) $(libm2iso_la_CFLAGS) $< -o $@ @BUILD_ISOLIB_TRUE@install-data-local: force diff --git a/libgm2/libm2log/Makefile.am b/libgm2/libm2log/Makefile.am index 8078be8d16d..d97fab7b869 100644 --- a/libgm2/libm2log/Makefile.am +++ b/libgm2/libm2log/Makefile.am @@ -124,6 +124,11 @@ M2MODS = BitBlockOps.mod BitByteOps.mod \ Strings.mod Termbase.mod \ Terminal.mod TimeDate.mod +GENERATED = \ + ../libm2pim/SYSTEM.def \ + ../libm2pim/Builtins.def \ + ../libm2pim/Builtins.mod \ + ../libm2pim/cbuiltin.def libm2logdir = libm2log toolexeclib_LTLIBRARIES = libm2log.la @@ -149,15 +154,49 @@ if ENABLE_DARWIN_AT_RPATH libm2log_la_link_flags += -nodefaultrpaths -Wl,-rpath,@loader_path/ endif libm2log_la_LINK = $(LINK) -version-info $(libtool_VERSION) $(libm2log_la_link_flags) -lm -BUILT_SOURCES = ../libm2pim/SYSTEM.def M2LIBDIR = /m2/m2log/ -../libm2pim/SYSTEM.def: ../libm2pim/Makefile +../libm2pim/SYSTEM.def: cd ../libm2pim ; $(MAKE) $(AM_MAKEFLAGS) SYSTEM.def +../libm2pim/Builtins.def: + cd ../libm2pim ; $(MAKE) $(AM_MAKEFLAGS) Builtins.def + +../libm2pim/Builtins.mod: + cd ../libm2pim ; $(MAKE) $(AM_MAKEFLAGS) Builtins.mod + +../libm2pim/cbuiltin.def: + cd ../libm2pim ; $(MAKE) $(AM_MAKEFLAGS) cbuiltin.def + +BitBlockOps.lo: $(GENERATED) BitBlockOps.mod +BitByteOps.lo: $(GENERATED) BitByteOps.mod +BitWordOps.lo: $(GENERATED) BitWordOps.mod +BlockOps.lo: $(GENERATED) BlockOps.mod +CardinalIO.lo: $(GENERATED) CardinalIO.mod +Conversions.lo: $(GENERATED) Conversions.mod +DebugPMD.lo: $(GENERATED) DebugPMD.mod +DebugTrace.lo: $(GENERATED) DebugTrace.mod +Delay.lo: $(GENERATED) Delay.mod +Display.lo: $(GENERATED) Display.mod +ErrorCode.lo: $(GENERATED) ErrorCode.mod +FileSystem.lo: $(GENERATED) FileSystem.mod +FloatingUtilities.lo: $(GENERATED) FloatingUtilities.mod +InOut.lo: $(GENERATED) InOut.mod +Keyboard.lo: $(GENERATED) Keyboard.mod +LongIO.lo: $(GENERATED) LongIO.mod +NumberConversion.lo: $(GENERATED) NumberConversion.mod +Random.lo: $(GENERATED) Random.mod +RealConversions.lo: $(GENERATED) RealConversions.mod +RealInOut.lo: $(GENERATED) RealInOut.mod +Strings.lo: $(GENERATED) Strings.mod +Termbase.lo: $(GENERATED) Termbase.mod +Terminal.lo: $(GENERATED) Terminal.mod +TimeDate.lo: $(GENERATED) TimeDate.mod + .mod.lo: - $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile \ + $(LIBTOOL) --tag=CC \ + $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile \ $(GM2_FOR_TARGET) -c \ $(CFLAGS_FOR_TARGET) $(LIBCFLAGS) $(libm2log_la_M2FLAGS) $< -o $@ diff --git a/libgm2/libm2log/Makefile.in b/libgm2/libm2log/Makefile.in index 93dcc6639fd..1bf8ec79415 100644 --- a/libgm2/libm2log/Makefile.in +++ b/libgm2/libm2log/Makefile.in @@ -108,7 +108,8 @@ target_triplet = @target@ @BUILD_LOGLIB_TRUE@@ENABLE_DARWIN_AT_RPATH_TRUE@am__append_1 = -nodefaultrpaths -Wl,-rpath,@loader_path/ subdir = libm2log ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/../config/acx.m4 \ +am__aclocal_m4_deps = $(top_srcdir)/ax_python_devel.m4 \ + $(top_srcdir)/../config/acx.m4 \ $(top_srcdir)/../config/clang-plugin.m4 \ $(top_srcdir)/../config/depstand.m4 \ $(top_srcdir)/../config/gcc-plugin.m4 \ @@ -116,10 +117,10 @@ am__aclocal_m4_deps = $(top_srcdir)/../config/acx.m4 \ $(top_srcdir)/../config/multi.m4 \ $(top_srcdir)/../config/no-executables.m4 \ $(top_srcdir)/../config/override.m4 \ - $(top_srcdir)/../libtool.m4 $(top_srcdir)/../ltoptions.m4 \ - $(top_srcdir)/../ltsugar.m4 $(top_srcdir)/../ltversion.m4 \ - $(top_srcdir)/../lt~obsolete.m4 $(top_srcdir)/acinclude.m4 \ - $(top_srcdir)/../config/gc++filt.m4 \ + $(top_srcdir)/../config/picflag.m4 $(top_srcdir)/../libtool.m4 \ + $(top_srcdir)/../ltoptions.m4 $(top_srcdir)/../ltsugar.m4 \ + $(top_srcdir)/../ltversion.m4 $(top_srcdir)/../lt~obsolete.m4 \ + $(top_srcdir)/acinclude.m4 $(top_srcdir)/../config/gc++filt.m4 \ $(top_srcdir)/../config/tls.m4 $(top_srcdir)/../config/gthr.m4 \ $(top_srcdir)/../config/cet.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ @@ -303,6 +304,15 @@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ +PICFLAG = @PICFLAG@ +PYTHON = @PYTHON@ +PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ +PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ +PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ +PYTHON_LIBS = @PYTHON_LIBS@ +PYTHON_PLATFORM_SITE_PKG = @PYTHON_PLATFORM_SITE_PKG@ +PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ +PYTHON_VERSION = @PYTHON_VERSION@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ @@ -321,6 +331,7 @@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ +ax_python_interpreter = @ax_python_interpreter@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ @@ -478,6 +489,12 @@ FLAGS_TO_PASS = $(AM_MAKEFLAGS) @BUILD_LOGLIB_TRUE@ Strings.mod Termbase.mod \ @BUILD_LOGLIB_TRUE@ Terminal.mod TimeDate.mod +@BUILD_LOGLIB_TRUE@GENERATED = \ +@BUILD_LOGLIB_TRUE@ ../libm2pim/SYSTEM.def \ +@BUILD_LOGLIB_TRUE@ ../libm2pim/Builtins.def \ +@BUILD_LOGLIB_TRUE@ ../libm2pim/Builtins.mod \ +@BUILD_LOGLIB_TRUE@ ../libm2pim/cbuiltin.def + @BUILD_LOGLIB_TRUE@libm2logdir = libm2log @BUILD_LOGLIB_TRUE@toolexeclib_LTLIBRARIES = libm2log.la @BUILD_LOGLIB_TRUE@libm2log_la_SOURCES = $(M2MODS) Break.c @@ -497,10 +514,8 @@ FLAGS_TO_PASS = $(AM_MAKEFLAGS) @BUILD_LOGLIB_TRUE@@TARGET_DARWIN_TRUE@libm2log_la_link_flags = -Wl,-undefined,dynamic_lookup \ @BUILD_LOGLIB_TRUE@@TARGET_DARWIN_TRUE@ $(am__append_1) @BUILD_LOGLIB_TRUE@libm2log_la_LINK = $(LINK) -version-info $(libtool_VERSION) $(libm2log_la_link_flags) -lm -@BUILD_LOGLIB_TRUE@BUILT_SOURCES = ../libm2pim/SYSTEM.def @BUILD_LOGLIB_TRUE@M2LIBDIR = /m2/m2log/ -all: $(BUILT_SOURCES) - $(MAKE) $(AM_MAKEFLAGS) all-am +all: all-am .SUFFIXES: .SUFFIXES: .c .mod .def .o .obj .lo .a .la @@ -666,15 +681,13 @@ cscopelist-am: $(am__tagged_files) distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags check-am: all-am -check: $(BUILT_SOURCES) - $(MAKE) $(AM_MAKEFLAGS) check-am +check: check-am all-am: Makefile $(LTLIBRARIES) installdirs: for dir in "$(DESTDIR)$(toolexeclibdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done -install: $(BUILT_SOURCES) - $(MAKE) $(AM_MAKEFLAGS) install-am +install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am @@ -704,7 +717,6 @@ 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." - -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES) @BUILD_LOGLIB_FALSE@install-data-local: clean: clean-am @@ -777,7 +789,7 @@ ps-am: uninstall-am: uninstall-toolexeclibLTLIBRARIES -.MAKE: all check install install-am install-strip +.MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ clean-libtool clean-toolexeclibLTLIBRARIES cscopelist-am ctags \ @@ -797,11 +809,46 @@ uninstall-am: uninstall-toolexeclibLTLIBRARIES .PRECIOUS: Makefile -@BUILD_LOGLIB_TRUE@../libm2pim/SYSTEM.def: ../libm2pim/Makefile +@BUILD_LOGLIB_TRUE@../libm2pim/SYSTEM.def: @BUILD_LOGLIB_TRUE@ cd ../libm2pim ; $(MAKE) $(AM_MAKEFLAGS) SYSTEM.def +@BUILD_LOGLIB_TRUE@../libm2pim/Builtins.def: +@BUILD_LOGLIB_TRUE@ cd ../libm2pim ; $(MAKE) $(AM_MAKEFLAGS) Builtins.def + +@BUILD_LOGLIB_TRUE@../libm2pim/Builtins.mod: +@BUILD_LOGLIB_TRUE@ cd ../libm2pim ; $(MAKE) $(AM_MAKEFLAGS) Builtins.mod + +@BUILD_LOGLIB_TRUE@../libm2pim/cbuiltin.def: +@BUILD_LOGLIB_TRUE@ cd ../libm2pim ; $(MAKE) $(AM_MAKEFLAGS) cbuiltin.def + +@[email protected]: $(GENERATED) BitBlockOps.mod +@[email protected]: $(GENERATED) BitByteOps.mod +@[email protected]: $(GENERATED) BitWordOps.mod +@[email protected]: $(GENERATED) BlockOps.mod +@[email protected]: $(GENERATED) CardinalIO.mod +@[email protected]: $(GENERATED) Conversions.mod +@[email protected]: $(GENERATED) DebugPMD.mod +@[email protected]: $(GENERATED) DebugTrace.mod +@[email protected]: $(GENERATED) Delay.mod +@[email protected]: $(GENERATED) Display.mod +@[email protected]: $(GENERATED) ErrorCode.mod +@[email protected]: $(GENERATED) FileSystem.mod +@[email protected]: $(GENERATED) FloatingUtilities.mod +@[email protected]: $(GENERATED) InOut.mod +@[email protected]: $(GENERATED) Keyboard.mod +@[email protected]: $(GENERATED) LongIO.mod +@[email protected]: $(GENERATED) NumberConversion.mod +@[email protected]: $(GENERATED) Random.mod +@[email protected]: $(GENERATED) RealConversions.mod +@[email protected]: $(GENERATED) RealInOut.mod +@[email protected]: $(GENERATED) Strings.mod +@[email protected]: $(GENERATED) Termbase.mod +@[email protected]: $(GENERATED) Terminal.mod +@[email protected]: $(GENERATED) TimeDate.mod + @[email protected]: -@BUILD_LOGLIB_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile \ +@BUILD_LOGLIB_TRUE@ $(LIBTOOL) --tag=CC \ +@BUILD_LOGLIB_TRUE@ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile \ @BUILD_LOGLIB_TRUE@ $(GM2_FOR_TARGET) -c \ @BUILD_LOGLIB_TRUE@ $(CFLAGS_FOR_TARGET) $(LIBCFLAGS) $(libm2log_la_M2FLAGS) $< -o $@ diff --git a/libgm2/libm2min/Makefile.am b/libgm2/libm2min/Makefile.am index 8cee85fd477..d3cc8882d30 100644 --- a/libgm2/libm2min/Makefile.am +++ b/libgm2/libm2min/Makefile.am @@ -125,20 +125,28 @@ CLEANFILES = SYSTEM.def M2LIBDIR = /m2/m2min/ .mod.lo: - $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile \ + $(LIBTOOL) --tag CC \ + $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile \ $(GM2_FOR_TARGET) -c \ $(CFLAGS_FOR_TARGET) $(LIBCFLAGS) $(libm2min_la_M2FLAGS) $< -o $@ libc.o: $(GM2_SRC)/gm2-libs-min/libc.c - +if HAVE_PYTHON_INTERPRETER +SYSTEM.def: Makefile + $(PYTHON) $(GM2_SRC)/tools-src/mktargetsrc.py --fpim \ + -D=$(GM2_SRC)/gm2-libs-min/SYSTEM.def \ + -M=$(GM2_SRC)/gm2-libs-min/SYSTEM.mod \ + -I=$(GM2_SRC)/gm2-libs-min -I=$(GM2_SRC)/gm2-libs \ + -C="$(GM2_FOR_TARGET_ESC) -fno-exceptions" -o $@ +else SYSTEM.def: Makefile - echo "CC = $(CC_FOR_BUILD) CC_FOR_TARGET = $(CC_FOR_TARGET) GM2 = $(GM2) GM2_FOR_TARGET = $(GM2_FOR_TARGET) GM2_FOR_BUILD = $(GM2_FOR_BUILD)" bash $(GM2_SRC)/tools-src/makeSystem -fpim \ $(GM2_SRC)/gm2-libs-min/SYSTEM.def \ $(GM2_SRC)/gm2-libs-min/SYSTEM.mod \ -I$(GM2_SRC)/gm2-libs-min -I$(GM2_SRC)/gm2-libs \ "$(GM2_FOR_TARGET) -fno-exceptions" $@ +endif install-data-local: force mkdir -p $(DESTDIR)$(inst_libdir)/$(M2LIBDIR) diff --git a/libgm2/libm2min/Makefile.in b/libgm2/libm2min/Makefile.in index 2c6bb9a77f5..85d289a5b99 100644 --- a/libgm2/libm2min/Makefile.in +++ b/libgm2/libm2min/Makefile.in @@ -108,7 +108,8 @@ target_triplet = @target@ @ENABLE_DARWIN_AT_RPATH_TRUE@am__append_1 = -nodefaultrpaths -Wl,-rpath,@loader_path/ subdir = libm2min ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/../config/acx.m4 \ +am__aclocal_m4_deps = $(top_srcdir)/ax_python_devel.m4 \ + $(top_srcdir)/../config/acx.m4 \ $(top_srcdir)/../config/clang-plugin.m4 \ $(top_srcdir)/../config/depstand.m4 \ $(top_srcdir)/../config/gcc-plugin.m4 \ @@ -116,10 +117,10 @@ am__aclocal_m4_deps = $(top_srcdir)/../config/acx.m4 \ $(top_srcdir)/../config/multi.m4 \ $(top_srcdir)/../config/no-executables.m4 \ $(top_srcdir)/../config/override.m4 \ - $(top_srcdir)/../libtool.m4 $(top_srcdir)/../ltoptions.m4 \ - $(top_srcdir)/../ltsugar.m4 $(top_srcdir)/../ltversion.m4 \ - $(top_srcdir)/../lt~obsolete.m4 $(top_srcdir)/acinclude.m4 \ - $(top_srcdir)/../config/gc++filt.m4 \ + $(top_srcdir)/../config/picflag.m4 $(top_srcdir)/../libtool.m4 \ + $(top_srcdir)/../ltoptions.m4 $(top_srcdir)/../ltsugar.m4 \ + $(top_srcdir)/../ltversion.m4 $(top_srcdir)/../lt~obsolete.m4 \ + $(top_srcdir)/acinclude.m4 $(top_srcdir)/../config/gc++filt.m4 \ $(top_srcdir)/../config/tls.m4 $(top_srcdir)/../config/gthr.m4 \ $(top_srcdir)/../config/cet.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ @@ -293,6 +294,15 @@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ +PICFLAG = @PICFLAG@ +PYTHON = @PYTHON@ +PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ +PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ +PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ +PYTHON_LIBS = @PYTHON_LIBS@ +PYTHON_PLATFORM_SITE_PKG = @PYTHON_PLATFORM_SITE_PKG@ +PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ +PYTHON_VERSION = @PYTHON_VERSION@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ @@ -311,6 +321,7 @@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ +ax_python_interpreter = @ax_python_interpreter@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ @@ -762,19 +773,25 @@ uninstall-am: uninstall-toolexeclibLTLIBRARIES .mod.lo: - $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile \ + $(LIBTOOL) --tag CC \ + $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile \ $(GM2_FOR_TARGET) -c \ $(CFLAGS_FOR_TARGET) $(LIBCFLAGS) $(libm2min_la_M2FLAGS) $< -o $@ libc.o: $(GM2_SRC)/gm2-libs-min/libc.c -SYSTEM.def: Makefile - echo "CC = $(CC_FOR_BUILD) CC_FOR_TARGET = $(CC_FOR_TARGET) GM2 = $(GM2) GM2_FOR_TARGET = $(GM2_FOR_TARGET) GM2_FOR_BUILD = $(GM2_FOR_BUILD)" - bash $(GM2_SRC)/tools-src/makeSystem -fpim \ - $(GM2_SRC)/gm2-libs-min/SYSTEM.def \ - $(GM2_SRC)/gm2-libs-min/SYSTEM.mod \ - -I$(GM2_SRC)/gm2-libs-min -I$(GM2_SRC)/gm2-libs \ - "$(GM2_FOR_TARGET) -fno-exceptions" $@ +@[email protected]: Makefile +@HAVE_PYTHON_INTERPRETER_TRUE@ $(PYTHON) $(GM2_SRC)/tools-src/mktargetsrc.py --fpim \ +@HAVE_PYTHON_INTERPRETER_TRUE@ -D=$(GM2_SRC)/gm2-libs-min/SYSTEM.def \ +@HAVE_PYTHON_INTERPRETER_TRUE@ -M=$(GM2_SRC)/gm2-libs-min/SYSTEM.mod \ +@HAVE_PYTHON_INTERPRETER_TRUE@ -I=$(GM2_SRC)/gm2-libs-min -I=$(GM2_SRC)/gm2-libs \ +@HAVE_PYTHON_INTERPRETER_TRUE@ -C="$(GM2_FOR_TARGET_ESC) -fno-exceptions" -o $@ +@[email protected]: Makefile +@HAVE_PYTHON_INTERPRETER_FALSE@ bash $(GM2_SRC)/tools-src/makeSystem -fpim \ +@HAVE_PYTHON_INTERPRETER_FALSE@ $(GM2_SRC)/gm2-libs-min/SYSTEM.def \ +@HAVE_PYTHON_INTERPRETER_FALSE@ $(GM2_SRC)/gm2-libs-min/SYSTEM.mod \ +@HAVE_PYTHON_INTERPRETER_FALSE@ -I$(GM2_SRC)/gm2-libs-min -I$(GM2_SRC)/gm2-libs \ +@HAVE_PYTHON_INTERPRETER_FALSE@ "$(GM2_FOR_TARGET) -fno-exceptions" $@ install-data-local: force mkdir -p $(DESTDIR)$(inst_libdir)/$(M2LIBDIR) diff --git a/libgm2/libm2pim/Makefile.am b/libgm2/libm2pim/Makefile.am index cc27a077030..508358da9c5 100644 --- a/libgm2/libm2pim/Makefile.am +++ b/libgm2/libm2pim/Makefile.am @@ -52,6 +52,7 @@ AM_MAKEFLAGS = \ "CC_FOR_BUILD=$(CC_FOR_BUILD)" \ "CC_FOR_TARGET=$(CC_FOR_TARGET)" \ "GM2_FOR_TARGET=$(GM2_FOR_TARGET)" \ + "GM2_FOR_TARGET_ESC=$(GM2_FOR_TARGET_ESC)" \ "CFLAGS=$(CFLAGS)" \ "CXXFLAGS=$(CXXFLAGS)" \ "CFLAGS_FOR_BUILD=$(CFLAGS_FOR_BUILD)" \ @@ -88,7 +89,9 @@ AM_MAKEFLAGS = \ "NM_FOR_TARGET=$(NM_FOR_TARGET)" \ "DESTDIR=$(DESTDIR)" \ "WERROR=$(WERROR)" \ - "TARGET_LIB_PATH_libgm2=$(TARGET_LIB_PATH_libgm2)" + "TARGET_LIB_PATH_libgm2=$(TARGET_LIB_PATH_libgm2)" \ + "PYTHON=$(PYTHON)" \ + "HAVE_PYTHON_INTERPRETER=$(HAVE_PYTHON_INTERPRETER)" # Subdir rules rely on $(FLAGS_TO_PASS) FLAGS_TO_PASS = $(AM_MAKEFLAGS) @@ -103,7 +106,7 @@ M2MODS = ASCII.mod \ M2Diagnostic.mod \ M2WIDESET.mod \ Assertion.mod NumberIO.mod \ - Break.mod SYSTEM.mod \ + Break.mod \ CmdArgs.mod Scan.mod \ StrCase.mod FIO.mod \ StrIO.mod StrLib.mod \ @@ -182,7 +185,9 @@ libm2pim_la_SOURCES = $(M2MODS) \ CFileSysOp.cc libm2pimdir = libm2pim -libm2pim_la_DEPENDENCIES = SYSTEM.def $(addsuffix .lo, $(basename $(libm2pim_la_SOURCES))) +libm2pim_la_DEPENDENCIES = SYSTEM.def \ + $(addsuffix .lo, $(basename $(libm2pim_la_SOURCES))) \ + SYSTEM.lo libm2pim_la_CFLAGS = \ -I. -I.. -I$(GM2_SRC)/gm2-libs -I$(GM2_SRC)/gm2-libs-iso \ -DBUILD_GM2_LIBS -I@srcdir@/../ -I@srcdir@/../libm2iso @@ -194,6 +199,8 @@ libm2pim_la_M2FLAGS = \ -Wall \ -fcase -fm2-prefix=m2pim +libm2pim_la_LIBADD = SYSTEM.lo + if TARGET_DARWIN libm2pim_la_link_flags = -Wl,-undefined,dynamic_lookup else @@ -203,26 +210,89 @@ if ENABLE_DARWIN_AT_RPATH libm2pim_la_link_flags += -nodefaultrpaths -Wl,-rpath,@loader_path/ endif libm2pim_la_LINK = $(LINK) -version-info $(libtool_VERSION) $(libm2pim_la_link_flags) -lm -BUILT_SOURCES = SYSTEM.def -CLEANFILES = SYSTEM.def +BUILT_SOURCES = SYSTEM.def \ + Builtins.def Builtins.mod \ + cbuiltin.def +CLEANFILES = SYSTEM.def \ + Builtins.def Builtins.mod \ + cbuiltin.def M2LIBDIR = /m2/m2pim/ +if HAVE_PYTHON_INTERPRETER +SYSTEM.def: Makefile + $(PYTHON) $(GM2_SRC)/tools-src/mktargetsrc.py --fpim \ + -D=$(GM2_SRC)/gm2-libs-pim-common/SYSTEM.def \ + -M=$(GM2_SRC)/gm2-libs-pim-common/SYSTEM.mod \ + -I=$(GM2_SRC)/gm2-libs-pim-common \ + -I=$(GM2_SRC)/gm2-libs \ + -C="$(GM2_FOR_TARGET_ESC)" -o $@ +else SYSTEM.def: Makefile bash $(GM2_SRC)/tools-src/makeSystem -fpim \ - $(GM2_SRC)/gm2-libs/SYSTEM.def \ - $(GM2_SRC)/gm2-libs/SYSTEM.mod \ + $(GM2_SRC)/gm2-libs-pim-common/SYSTEM.def \ + $(GM2_SRC)/gm2-libs-pim-common/SYSTEM.mod \ + -I$(GM2_SRC)/gm2-libs-pim-common \ -I$(GM2_SRC)/gm2-libs \ "$(GM2_FOR_TARGET)" $@ +endif + +if HAVE_PYTHON_INTERPRETER +Builtins.def: Makefile + $(PYTHON) $(GM2_SRC)/tools-src/mktargetsrc.py --fpim \ + -D=$(GM2_SRC)/gm2-libs-pim-common/Builtins.def \ + -M=$(GM2_SRC)/gm2-libs-pim-common/Builtins.mod \ + -I=$(GM2_SRC)/gm2-libs-pim-common \ + -I=$(GM2_SRC)/gm2-libs \ + -C="$(GM2_FOR_TARGET_ESC)" -o $@ +else +Builtins.def: Makefile + cp $(GM2_SRC)/gm2-libs-pim-common/Builtins.def $@ +endif + +if HAVE_PYTHON_INTERPRETER +Builtins.mod: Makefile + $(PYTHON) $(GM2_SRC)/tools-src/mktargetsrc.py --fpim \ + -M=$(GM2_SRC)/gm2-libs-pim-common/Builtins.mod \ + -I=$(GM2_SRC)/gm2-libs-pim-common \ + -I=$(GM2_SRC)/gm2-libs \ + -C="$(GM2_FOR_TARGET_ESC)" -o $@ +else +Builtins.mod: Makefile + cp $(GM2_SRC)/gm2-libs-pim-common/Builtins.mod $@ +endif + +if HAVE_PYTHON_INTERPRETER +cbuiltin.def: Makefile + $(PYTHON) $(GM2_SRC)/tools-src/mktargetsrc.py --fpim \ + -D=$(GM2_SRC)/gm2-libs-pim-common/cbuiltin.def \ + -M=$(GM2_SRC)/gm2-libs-pim-common/Builtins.mod \ + -I=$(GM2_SRC)/gm2-libs-pim-common \ + -I=$(GM2_SRC)/gm2-libs \ + -C="$(GM2_FOR_TARGET_ESC)" -o $@ +else +cbuiltin.def: Makefile + cp $(GM2_SRC)/gm2-libs-pim-common/cbuiltin.def $@ +endif + +SYSTEM.lo: $(GM2_SRC)/gm2-libs-pim-common/SYSTEM.mod + $(LIBTOOL) --tag CC \ + $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=compile $(GM2_FOR_TARGET) \ + -c $(CFLAGS_FOR_TARGET) $(LIBCFLAGS) $(libm2pim_la_M2FLAGS) $< -o $@ + +Builtins.lo: Builtins.mod Builtins.def -.mod.lo: SYSTEM.def - $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ +.mod.lo: SYSTEM.def Builtins.def Builtins.mod cbuiltin.def + $(LIBTOOL) --tag CC \ + $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=compile $(GM2_FOR_TARGET) \ -c $(CFLAGS_FOR_TARGET) $(LIBCFLAGS) $(libm2pim_la_M2FLAGS) $< -o $@ .cc.lo: - $(LIBTOOL) --tag=CXX --mode=compile $(CXX) -c -I$(srcdir) \ - $(CXXFLAGS) $(LIBCFLAGS) $(libm2pim_la_CFLAGS) $< -o $@ + $(LIBTOOL) --tag CXX --mode=compile \ + $(CXX) -c -I$(srcdir) $(CXXFLAGS) $(LIBCFLAGS) \ + $(libm2pim_la_CFLAGS) $< -o $@ install-data-local: force mkdir -p $(DESTDIR)$(inst_libdir)/$(M2LIBDIR) diff --git a/libgm2/libm2pim/Makefile.in b/libgm2/libm2pim/Makefile.in index 33b97bf6554..213f5c1e626 100644 --- a/libgm2/libm2pim/Makefile.in +++ b/libgm2/libm2pim/Makefile.in @@ -108,7 +108,8 @@ target_triplet = @target@ @BUILD_PIMLIB_TRUE@@ENABLE_DARWIN_AT_RPATH_TRUE@am__append_1 = -nodefaultrpaths -Wl,-rpath,@loader_path/ subdir = libm2pim ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/../config/acx.m4 \ +am__aclocal_m4_deps = $(top_srcdir)/ax_python_devel.m4 \ + $(top_srcdir)/../config/acx.m4 \ $(top_srcdir)/../config/clang-plugin.m4 \ $(top_srcdir)/../config/depstand.m4 \ $(top_srcdir)/../config/gcc-plugin.m4 \ @@ -116,10 +117,10 @@ am__aclocal_m4_deps = $(top_srcdir)/../config/acx.m4 \ $(top_srcdir)/../config/multi.m4 \ $(top_srcdir)/../config/no-executables.m4 \ $(top_srcdir)/../config/override.m4 \ - $(top_srcdir)/../libtool.m4 $(top_srcdir)/../ltoptions.m4 \ - $(top_srcdir)/../ltsugar.m4 $(top_srcdir)/../ltversion.m4 \ - $(top_srcdir)/../lt~obsolete.m4 $(top_srcdir)/acinclude.m4 \ - $(top_srcdir)/../config/gc++filt.m4 \ + $(top_srcdir)/../config/picflag.m4 $(top_srcdir)/../libtool.m4 \ + $(top_srcdir)/../ltoptions.m4 $(top_srcdir)/../ltsugar.m4 \ + $(top_srcdir)/../ltversion.m4 $(top_srcdir)/../lt~obsolete.m4 \ + $(top_srcdir)/acinclude.m4 $(top_srcdir)/../config/gc++filt.m4 \ $(top_srcdir)/../config/tls.m4 $(top_srcdir)/../config/gthr.m4 \ $(top_srcdir)/../config/cet.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ @@ -158,14 +159,13 @@ am__uninstall_files_from_dir = { \ } am__installdirs = "$(DESTDIR)$(toolexeclibdir)" LTLIBRARIES = $(toolexeclib_LTLIBRARIES) -libm2pim_la_LIBADD = @BUILD_PIMLIB_TRUE@am__objects_1 = ASCII.lo Args.lo BinDict.lo IO.lo \ @BUILD_PIMLIB_TRUE@ M2RTS.lo M2Dependent.lo M2Diagnostic.lo \ @BUILD_PIMLIB_TRUE@ M2WIDESET.lo Assertion.lo NumberIO.lo \ -@BUILD_PIMLIB_TRUE@ Break.lo SYSTEM.lo CmdArgs.lo Scan.lo \ -@BUILD_PIMLIB_TRUE@ StrCase.lo FIO.lo StrIO.lo StrLib.lo \ -@BUILD_PIMLIB_TRUE@ TimeString.lo Environment.lo FpuIO.lo \ -@BUILD_PIMLIB_TRUE@ Debug.lo SysStorage.lo Storage.lo StdIO.lo \ +@BUILD_PIMLIB_TRUE@ Break.lo CmdArgs.lo Scan.lo StrCase.lo \ +@BUILD_PIMLIB_TRUE@ FIO.lo StrIO.lo StrLib.lo TimeString.lo \ +@BUILD_PIMLIB_TRUE@ Environment.lo FpuIO.lo Debug.lo \ +@BUILD_PIMLIB_TRUE@ SysStorage.lo Storage.lo StdIO.lo \ @BUILD_PIMLIB_TRUE@ SEnvironment.lo DynamicStrings.lo SFIO.lo \ @BUILD_PIMLIB_TRUE@ SArgs.lo SCmdArgs.lo PushBackInput.lo \ @BUILD_PIMLIB_TRUE@ StringConvert.lo FormatStrings.lo \ @@ -331,6 +331,15 @@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ +PICFLAG = @PICFLAG@ +PYTHON = @PYTHON@ +PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ +PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ +PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ +PYTHON_LIBS = @PYTHON_LIBS@ +PYTHON_PLATFORM_SITE_PKG = @PYTHON_PLATFORM_SITE_PKG@ +PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ +PYTHON_VERSION = @PYTHON_VERSION@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ @@ -349,6 +358,7 @@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ +ax_python_interpreter = @ax_python_interpreter@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ @@ -437,6 +447,7 @@ AM_MAKEFLAGS = \ "CC_FOR_BUILD=$(CC_FOR_BUILD)" \ "CC_FOR_TARGET=$(CC_FOR_TARGET)" \ "GM2_FOR_TARGET=$(GM2_FOR_TARGET)" \ + "GM2_FOR_TARGET_ESC=$(GM2_FOR_TARGET_ESC)" \ "CFLAGS=$(CFLAGS)" \ "CXXFLAGS=$(CXXFLAGS)" \ "CFLAGS_FOR_BUILD=$(CFLAGS_FOR_BUILD)" \ @@ -473,7 +484,9 @@ AM_MAKEFLAGS = \ "NM_FOR_TARGET=$(NM_FOR_TARGET)" \ "DESTDIR=$(DESTDIR)" \ "WERROR=$(WERROR)" \ - "TARGET_LIB_PATH_libgm2=$(TARGET_LIB_PATH_libgm2)" + "TARGET_LIB_PATH_libgm2=$(TARGET_LIB_PATH_libgm2)" \ + "PYTHON=$(PYTHON)" \ + "HAVE_PYTHON_INTERPRETER=$(HAVE_PYTHON_INTERPRETER)" # Subdir rules rely on $(FLAGS_TO_PASS) @@ -486,7 +499,7 @@ FLAGS_TO_PASS = $(AM_MAKEFLAGS) @BUILD_PIMLIB_TRUE@ M2Diagnostic.mod \ @BUILD_PIMLIB_TRUE@ M2WIDESET.mod \ @BUILD_PIMLIB_TRUE@ Assertion.mod NumberIO.mod \ -@BUILD_PIMLIB_TRUE@ Break.mod SYSTEM.mod \ +@BUILD_PIMLIB_TRUE@ Break.mod \ @BUILD_PIMLIB_TRUE@ CmdArgs.mod Scan.mod \ @BUILD_PIMLIB_TRUE@ StrCase.mod FIO.mod \ @BUILD_PIMLIB_TRUE@ StrIO.mod StrLib.mod \ @@ -565,7 +578,10 @@ FLAGS_TO_PASS = $(AM_MAKEFLAGS) @BUILD_PIMLIB_TRUE@ CFileSysOp.cc @BUILD_PIMLIB_TRUE@libm2pimdir = libm2pim -@BUILD_PIMLIB_TRUE@libm2pim_la_DEPENDENCIES = SYSTEM.def $(addsuffix .lo, $(basename $(libm2pim_la_SOURCES))) +@BUILD_PIMLIB_TRUE@libm2pim_la_DEPENDENCIES = SYSTEM.def \ +@BUILD_PIMLIB_TRUE@ $(addsuffix .lo, $(basename $(libm2pim_la_SOURCES))) \ +@BUILD_PIMLIB_TRUE@ SYSTEM.lo + @BUILD_PIMLIB_TRUE@libm2pim_la_CFLAGS = \ @BUILD_PIMLIB_TRUE@ -I. -I.. -I$(GM2_SRC)/gm2-libs -I$(GM2_SRC)/gm2-libs-iso \ @BUILD_PIMLIB_TRUE@ -DBUILD_GM2_LIBS -I@srcdir@/../ -I@srcdir@/../libm2iso @@ -577,13 +593,20 @@ FLAGS_TO_PASS = $(AM_MAKEFLAGS) @BUILD_PIMLIB_TRUE@ -Wall \ @BUILD_PIMLIB_TRUE@ -fcase -fm2-prefix=m2pim +@BUILD_PIMLIB_TRUE@libm2pim_la_LIBADD = SYSTEM.lo @BUILD_PIMLIB_TRUE@@TARGET_DARWIN_FALSE@libm2pim_la_link_flags = \ @BUILD_PIMLIB_TRUE@@TARGET_DARWIN_FALSE@ $(am__append_1) @BUILD_PIMLIB_TRUE@@TARGET_DARWIN_TRUE@libm2pim_la_link_flags = -Wl,-undefined,dynamic_lookup \ @BUILD_PIMLIB_TRUE@@TARGET_DARWIN_TRUE@ $(am__append_1) @BUILD_PIMLIB_TRUE@libm2pim_la_LINK = $(LINK) -version-info $(libtool_VERSION) $(libm2pim_la_link_flags) -lm -@BUILD_PIMLIB_TRUE@BUILT_SOURCES = SYSTEM.def -@BUILD_PIMLIB_TRUE@CLEANFILES = SYSTEM.def +@BUILD_PIMLIB_TRUE@BUILT_SOURCES = SYSTEM.def \ +@BUILD_PIMLIB_TRUE@ Builtins.def Builtins.mod \ +@BUILD_PIMLIB_TRUE@ cbuiltin.def + +@BUILD_PIMLIB_TRUE@CLEANFILES = SYSTEM.def \ +@BUILD_PIMLIB_TRUE@ Builtins.def Builtins.mod \ +@BUILD_PIMLIB_TRUE@ cbuiltin.def + @BUILD_PIMLIB_TRUE@M2LIBDIR = /m2/m2pim/ all: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) all-am @@ -916,21 +939,68 @@ uninstall-am: uninstall-toolexeclibLTLIBRARIES .PRECIOUS: Makefile -@[email protected]: Makefile -@BUILD_PIMLIB_TRUE@ bash $(GM2_SRC)/tools-src/makeSystem -fpim \ -@BUILD_PIMLIB_TRUE@ $(GM2_SRC)/gm2-libs/SYSTEM.def \ -@BUILD_PIMLIB_TRUE@ $(GM2_SRC)/gm2-libs/SYSTEM.mod \ -@BUILD_PIMLIB_TRUE@ -I$(GM2_SRC)/gm2-libs \ -@BUILD_PIMLIB_TRUE@ "$(GM2_FOR_TARGET)" $@ +@BUILD_PIMLIB_TRUE@@[email protected]: Makefile +@BUILD_PIMLIB_TRUE@@HAVE_PYTHON_INTERPRETER_TRUE@ $(PYTHON) $(GM2_SRC)/tools-src/mktargetsrc.py --fpim \ +@BUILD_PIMLIB_TRUE@@HAVE_PYTHON_INTERPRETER_TRUE@ -D=$(GM2_SRC)/gm2-libs-pim-common/SYSTEM.def \ +@BUILD_PIMLIB_TRUE@@HAVE_PYTHON_INTERPRETER_TRUE@ -M=$(GM2_SRC)/gm2-libs-pim-common/SYSTEM.mod \ +@BUILD_PIMLIB_TRUE@@HAVE_PYTHON_INTERPRETER_TRUE@ -I=$(GM2_SRC)/gm2-libs-pim-common \ +@BUILD_PIMLIB_TRUE@@HAVE_PYTHON_INTERPRETER_TRUE@ -I=$(GM2_SRC)/gm2-libs \ +@BUILD_PIMLIB_TRUE@@HAVE_PYTHON_INTERPRETER_TRUE@ -C="$(GM2_FOR_TARGET_ESC)" -o $@ +@BUILD_PIMLIB_TRUE@@[email protected]: Makefile +@BUILD_PIMLIB_TRUE@@HAVE_PYTHON_INTERPRETER_FALSE@ bash $(GM2_SRC)/tools-src/makeSystem -fpim \ +@BUILD_PIMLIB_TRUE@@HAVE_PYTHON_INTERPRETER_FALSE@ $(GM2_SRC)/gm2-libs-pim-common/SYSTEM.def \ +@BUILD_PIMLIB_TRUE@@HAVE_PYTHON_INTERPRETER_FALSE@ $(GM2_SRC)/gm2-libs-pim-common/SYSTEM.mod \ +@BUILD_PIMLIB_TRUE@@HAVE_PYTHON_INTERPRETER_FALSE@ -I$(GM2_SRC)/gm2-libs-pim-common \ +@BUILD_PIMLIB_TRUE@@HAVE_PYTHON_INTERPRETER_FALSE@ -I$(GM2_SRC)/gm2-libs \ +@BUILD_PIMLIB_TRUE@@HAVE_PYTHON_INTERPRETER_FALSE@ "$(GM2_FOR_TARGET)" $@ + +@BUILD_PIMLIB_TRUE@@[email protected]: Makefile +@BUILD_PIMLIB_TRUE@@HAVE_PYTHON_INTERPRETER_TRUE@ $(PYTHON) $(GM2_SRC)/tools-src/mktargetsrc.py --fpim \ +@BUILD_PIMLIB_TRUE@@HAVE_PYTHON_INTERPRETER_TRUE@ -D=$(GM2_SRC)/gm2-libs-pim-common/Builtins.def \ +@BUILD_PIMLIB_TRUE@@HAVE_PYTHON_INTERPRETER_TRUE@ -M=$(GM2_SRC)/gm2-libs-pim-common/Builtins.mod \ +@BUILD_PIMLIB_TRUE@@HAVE_PYTHON_INTERPRETER_TRUE@ -I=$(GM2_SRC)/gm2-libs-pim-common \ +@BUILD_PIMLIB_TRUE@@HAVE_PYTHON_INTERPRETER_TRUE@ -I=$(GM2_SRC)/gm2-libs \ +@BUILD_PIMLIB_TRUE@@HAVE_PYTHON_INTERPRETER_TRUE@ -C="$(GM2_FOR_TARGET_ESC)" -o $@ +@BUILD_PIMLIB_TRUE@@[email protected]: Makefile +@BUILD_PIMLIB_TRUE@@HAVE_PYTHON_INTERPRETER_FALSE@ cp $(GM2_SRC)/gm2-libs-pim-common/Builtins.def $@ + +@BUILD_PIMLIB_TRUE@@[email protected]: Makefile +@BUILD_PIMLIB_TRUE@@HAVE_PYTHON_INTERPRETER_TRUE@ $(PYTHON) $(GM2_SRC)/tools-src/mktargetsrc.py --fpim \ +@BUILD_PIMLIB_TRUE@@HAVE_PYTHON_INTERPRETER_TRUE@ -M=$(GM2_SRC)/gm2-libs-pim-common/Builtins.mod \ +@BUILD_PIMLIB_TRUE@@HAVE_PYTHON_INTERPRETER_TRUE@ -I=$(GM2_SRC)/gm2-libs-pim-common \ +@BUILD_PIMLIB_TRUE@@HAVE_PYTHON_INTERPRETER_TRUE@ -I=$(GM2_SRC)/gm2-libs \ +@BUILD_PIMLIB_TRUE@@HAVE_PYTHON_INTERPRETER_TRUE@ -C="$(GM2_FOR_TARGET_ESC)" -o $@ +@BUILD_PIMLIB_TRUE@@[email protected]: Makefile +@BUILD_PIMLIB_TRUE@@HAVE_PYTHON_INTERPRETER_FALSE@ cp $(GM2_SRC)/gm2-libs-pim-common/Builtins.mod $@ + +@BUILD_PIMLIB_TRUE@@[email protected]: Makefile +@BUILD_PIMLIB_TRUE@@HAVE_PYTHON_INTERPRETER_TRUE@ $(PYTHON) $(GM2_SRC)/tools-src/mktargetsrc.py --fpim \ +@BUILD_PIMLIB_TRUE@@HAVE_PYTHON_INTERPRETER_TRUE@ -D=$(GM2_SRC)/gm2-libs-pim-common/cbuiltin.def \ +@BUILD_PIMLIB_TRUE@@HAVE_PYTHON_INTERPRETER_TRUE@ -M=$(GM2_SRC)/gm2-libs-pim-common/Builtins.mod \ +@BUILD_PIMLIB_TRUE@@HAVE_PYTHON_INTERPRETER_TRUE@ -I=$(GM2_SRC)/gm2-libs-pim-common \ +@BUILD_PIMLIB_TRUE@@HAVE_PYTHON_INTERPRETER_TRUE@ -I=$(GM2_SRC)/gm2-libs \ +@BUILD_PIMLIB_TRUE@@HAVE_PYTHON_INTERPRETER_TRUE@ -C="$(GM2_FOR_TARGET_ESC)" -o $@ +@BUILD_PIMLIB_TRUE@@[email protected]: Makefile +@BUILD_PIMLIB_TRUE@@HAVE_PYTHON_INTERPRETER_FALSE@ cp $(GM2_SRC)/gm2-libs-pim-common/cbuiltin.def $@ + +@[email protected]: $(GM2_SRC)/gm2-libs-pim-common/SYSTEM.mod +@BUILD_PIMLIB_TRUE@ $(LIBTOOL) --tag CC \ +@BUILD_PIMLIB_TRUE@ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ +@BUILD_PIMLIB_TRUE@ --mode=compile $(GM2_FOR_TARGET) \ +@BUILD_PIMLIB_TRUE@ -c $(CFLAGS_FOR_TARGET) $(LIBCFLAGS) $(libm2pim_la_M2FLAGS) $< -o $@ + +@[email protected]: Builtins.mod Builtins.def -@[email protected]: SYSTEM.def -@BUILD_PIMLIB_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ +@[email protected]: SYSTEM.def Builtins.def Builtins.mod cbuiltin.def +@BUILD_PIMLIB_TRUE@ $(LIBTOOL) --tag CC \ +@BUILD_PIMLIB_TRUE@ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ @BUILD_PIMLIB_TRUE@ --mode=compile $(GM2_FOR_TARGET) \ @BUILD_PIMLIB_TRUE@ -c $(CFLAGS_FOR_TARGET) $(LIBCFLAGS) $(libm2pim_la_M2FLAGS) $< -o $@ @[email protected]: -@BUILD_PIMLIB_TRUE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) -c -I$(srcdir) \ -@BUILD_PIMLIB_TRUE@ $(CXXFLAGS) $(LIBCFLAGS) $(libm2pim_la_CFLAGS) $< -o $@ +@BUILD_PIMLIB_TRUE@ $(LIBTOOL) --tag CXX --mode=compile \ +@BUILD_PIMLIB_TRUE@ $(CXX) -c -I$(srcdir) $(CXXFLAGS) $(LIBCFLAGS) \ +@BUILD_PIMLIB_TRUE@ $(libm2pim_la_CFLAGS) $< -o $@ @BUILD_PIMLIB_TRUE@install-data-local: force @BUILD_PIMLIB_TRUE@ mkdir -p $(DESTDIR)$(inst_libdir)/$(M2LIBDIR) -- 2.47.3