[gcc r17-3227] PR modula2/125129: Many tests fail to link on FreeBSD
Gaius Mulley via Gcc-cvs <[email protected]>
| Newsgroups | gmane.comp.gcc.cvs |
|---|---|
| Message-ID | <[email protected]> |
https://gcc.gnu.org/g:b3275d4a1f199872dffd9df4967673722f270671 commit r17-3227-gb3275d4a1f199872dffd9df4967673722f270671 Author: Gaius Mulley <[email protected]> Date: Wed Aug 12 13:16:28 2026 +0100 PR modula2/125129: Many tests fail to link on FreeBSD 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. * gm2-libs-min/SYSTEM.def: 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]> Diff: --- 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 + .../SYSTEM.def | 7 +- .../SYSTEM.mod | 0 .../ComplexMath.def | 7 +- .../ComplexMath.mod | 20 +- .../LongComplexMath.def | 7 +- .../LongComplexMath.mod | 20 +- .../SYSTEM.def | 15 +- .../SYSTEM.mod | 0 .../ShortComplexMath.def | 7 +- .../ShortComplexMath.mod | 20 +- gcc/m2/gm2-libs-min/SYSTEM.def | 7 +- .../{gm2-libs => gm2-libs-pim-common}/Builtins.def | 18 +- .../{gm2-libs => gm2-libs-pim-common}/Builtins.mod | 51 +- .../{gm2-libs => gm2-libs-pim-common}/SYSTEM.def | 14 +- .../{gm2-libs => gm2-libs-pim-common}/SYSTEM.mod | 0 .../{gm2-libs => gm2-libs-pim-common}/cbuiltin.def | 28 +- 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 +++++++++++++ .../exceptions/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, 2762 insertions(+), 434 deletions(-) diff --git a/gcc/doc/gm2.texi b/gcc/doc/gm2.texi index 6e14ffe64d3f..b4ecef2c5a01 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 11079927eb85..dd4d6e688d66 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 c603b52ec3f6..64eb9529e0dc 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 4842d7a960c5..5c05d53af3c0 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 14e0f4b3e198..dd8eb95ffe7c 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 a494ff7b1075..01d429abc910 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 893fa41fcfd1..fcec4a9105e4 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 c34e8c1da19e..6ebaaa77751c 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-cor-common/SYSTEM.def similarity index 98% rename from gcc/m2/gm2-libs-coroutines/SYSTEM.def rename to gcc/m2/gm2-libs-cor-common/SYSTEM.def index c5e23235d02e..b31200bdaaa5 100644 --- a/gcc/m2/gm2-libs-coroutines/SYSTEM.def +++ b/gcc/m2/gm2-libs-cor-common/SYSTEM.def @@ -34,7 +34,9 @@ DEFINITION MODULE SYSTEM ; FROM COROUTINES IMPORT PROTECTION ; EXPORT QUALIFIED (* the following are built into the compiler: *) - 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, ROTATE, SHIFT, THROW, TBITSIZE, (* SIZE is exported depending upon -fpim2 and -fpedantic. *) @@ -64,7 +66,8 @@ TYPE move into another module in the future. *) (* The following types are supported on this target: - @SYSTEM_TYPES@ + <SYSTEM_TYPES> + </SYSTEM_TYPES> *) diff --git a/gcc/m2/gm2-libs-coroutines/SYSTEM.mod b/gcc/m2/gm2-libs-cor-common/SYSTEM.mod similarity index 100% rename from gcc/m2/gm2-libs-coroutines/SYSTEM.mod rename to gcc/m2/gm2-libs-cor-common/SYSTEM.mod diff --git a/gcc/m2/gm2-libs-iso/ComplexMath.def b/gcc/m2/gm2-libs-iso-common/ComplexMath.def similarity index 90% rename from gcc/m2/gm2-libs-iso/ComplexMath.def rename to gcc/m2/gm2-libs-iso-common/ComplexMath.def index bc3d32e151bd..96df692456da 100644 --- a/gcc/m2/gm2-libs-iso/ComplexMath.def +++ b/gcc/m2/gm2-libs-iso-common/ComplexMath.def @@ -39,13 +39,13 @@ PROCEDURE __BUILTIN__ exp (z: COMPLEX): COMPLEX; PROCEDURE __BUILTIN__ ln (z: COMPLEX): COMPLEX; (* Returns the principal value of the natural logarithm of z *) -PROCEDURE __BUILTIN__ sin (z: COMPLEX): COMPLEX; + (* <DEF_TARGET_PROCEDURE(sin,COMPLEX,COMPLEX,__builtin_csin,cbuiltin.csin)> *) (* Returns the sine of z *) -PROCEDURE __BUILTIN__ cos (z: COMPLEX): COMPLEX; + (* <DEF_TARGET_PROCEDURE(cos,COMPLEX,COMPLEX,__builtin_ccos,cbuiltin.ccos)> *) (* Returns the cosine of z *) -PROCEDURE __BUILTIN__ tan (z: COMPLEX): COMPLEX; + (* <DEF_TARGET_PROCEDURE(tan,COMPLEX,COMPLEX,__builtin_ctan,cbuiltin.ctan)> *) (* Returns the tangent of z *) PROCEDURE __BUILTIN__ arcsin (z: COMPLEX): COMPLEX; @@ -70,4 +70,3 @@ PROCEDURE IsCMathException (): BOOLEAN; *) END ComplexMath. - diff --git a/gcc/m2/gm2-libs-iso/ComplexMath.mod b/gcc/m2/gm2-libs-iso-common/ComplexMath.mod similarity index 90% rename from gcc/m2/gm2-libs-iso/ComplexMath.mod rename to gcc/m2/gm2-libs-iso-common/ComplexMath.mod index d0a618c6dd01..fbade8c4d914 100644 --- a/gcc/m2/gm2-libs-iso/ComplexMath.mod +++ b/gcc/m2/gm2-libs-iso-common/ComplexMath.mod @@ -86,27 +86,13 @@ END ln ; (* Returns the sine of z *) - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_csin)) sin (z: COMPLEX): COMPLEX; -BEGIN - RETURN cbuiltin.csin (z) -END sin ; - +(* <MOD_TARGET_PROCEDURE(sin,COMPLEX,COMPLEX,__builtin_csin,cbuiltin.csin)> *) (* Returns the cosine of z *) - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_ccos)) cos (z: COMPLEX): COMPLEX; -BEGIN - RETURN cbuiltin.ccos (z) -END cos ; - +(* <MOD_TARGET_PROCEDURE(cos,COMPLEX,COMPLEX,__builtin_ccos,cbuiltin.ccos)> *) (* Returns the tangent of z *) - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_ctan)) tan (z: COMPLEX): COMPLEX; -BEGIN - RETURN cbuiltin.ctan (z) -END tan ; +(* <MOD_TARGET_PROCEDURE(tan,COMPLEX,COMPLEX,__builtin_ctan,cbuiltin.ctan)> *) (* Returns the arcsine of z *) diff --git a/gcc/m2/gm2-libs-iso/LongComplexMath.def b/gcc/m2/gm2-libs-iso-common/LongComplexMath.def similarity index 89% rename from gcc/m2/gm2-libs-iso/LongComplexMath.def rename to gcc/m2/gm2-libs-iso-common/LongComplexMath.def index cf092d4532a4..86c67a15a41c 100644 --- a/gcc/m2/gm2-libs-iso/LongComplexMath.def +++ b/gcc/m2/gm2-libs-iso-common/LongComplexMath.def @@ -39,14 +39,14 @@ PROCEDURE exp (z: LONGCOMPLEX): LONGCOMPLEX; 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 *) + (* <DEF_TARGET_PROCEDURE(sin,LONGCOMPLEX,LONGCOMPLEX,__builtin_csinl,cbuiltin.csinl)> *) -PROCEDURE cos (z: LONGCOMPLEX): LONGCOMPLEX; (* Returns the cosine of z *) + (* <DEF_TARGET_PROCEDURE(cos,LONGCOMPLEX,LONGCOMPLEX,__builtin_ccosl,cbuiltin.ccosl)> *) -PROCEDURE tan (z: LONGCOMPLEX): LONGCOMPLEX; (* Returns the tangent of z *) + (* <DEF_TARGET_PROCEDURE(tan,LONGCOMPLEX,LONGCOMPLEX,__builtin_ctanl,cbuiltin.ctanl)> *) PROCEDURE arcsin (z: LONGCOMPLEX): LONGCOMPLEX; (* Returns the arcsine of z *) @@ -70,4 +70,3 @@ PROCEDURE IsCMathException (): BOOLEAN; *) END LongComplexMath. - diff --git a/gcc/m2/gm2-libs-iso/LongComplexMath.mod b/gcc/m2/gm2-libs-iso-common/LongComplexMath.mod similarity index 90% rename from gcc/m2/gm2-libs-iso/LongComplexMath.mod rename to gcc/m2/gm2-libs-iso-common/LongComplexMath.mod index 4bc414dd2216..9203bbfcad8e 100644 --- a/gcc/m2/gm2-libs-iso/LongComplexMath.mod +++ b/gcc/m2/gm2-libs-iso-common/LongComplexMath.mod @@ -86,27 +86,13 @@ END ln ; (* Returns the sine of z *) - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_csinl)) sin (z: LONGCOMPLEX): LONGCOMPLEX; -BEGIN - RETURN cbuiltin.csinl (z) -END sin ; - +(* <MOD_TARGET_PROCEDURE(sin,LONGCOMPLEX,LONGCOMPLEX,__builtin_csinl,cbuiltin.csinl)> *) (* Returns the cosine of z *) - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_ccosl)) cos (z: LONGCOMPLEX): LONGCOMPLEX; -BEGIN - RETURN cbuiltin.ccosl (z) -END cos ; - +(* <MOD_TARGET_PROCEDURE(cos,LONGCOMPLEX,LONGCOMPLEX,__builtin_ccosl,cbuiltin.ccosl)> *) (* Returns the tangent of z *) - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_ctanl)) tan (z: LONGCOMPLEX): LONGCOMPLEX; -BEGIN - RETURN cbuiltin.ctanl (z) -END tan ; +(* <MOD_TARGET_PROCEDURE(tan,LONGCOMPLEX,LONGCOMPLEX,__builtin_ctanl,cbuiltin.ctanl)> *) (* Returns the arcsine of z *) diff --git a/gcc/m2/gm2-libs-iso/SYSTEM.def b/gcc/m2/gm2-libs-iso-common/SYSTEM.def similarity index 97% rename from gcc/m2/gm2-libs-iso/SYSTEM.def rename to gcc/m2/gm2-libs-iso-common/SYSTEM.def index 75d19ea2e620..f95f8160eaf0 100644 --- a/gcc/m2/gm2-libs-iso/SYSTEM.def +++ b/gcc/m2/gm2-libs-iso-common/SYSTEM.def @@ -17,7 +17,9 @@ DEFINITION MODULE SYSTEM; (* 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@ *) + (* <SYSTEM_DATATYPES> *) + 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 *) @@ -43,15 +45,18 @@ CONST COMPLEX64, COMPLEX128, CSIZE_T, CSSIZE_T. Also note that the non-standard data types will - move into another module in the future. *) + move into another module in the future. + +TYPE + <SYSTEM_TYPES> + </SYSTEM_TYPES> +*) + (* 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 *) diff --git a/gcc/m2/gm2-libs-iso/SYSTEM.mod b/gcc/m2/gm2-libs-iso-common/SYSTEM.mod similarity index 100% rename from gcc/m2/gm2-libs-iso/SYSTEM.mod rename to gcc/m2/gm2-libs-iso-common/SYSTEM.mod diff --git a/gcc/m2/gm2-libs-iso/ShortComplexMath.def b/gcc/m2/gm2-libs-iso-common/ShortComplexMath.def similarity index 91% rename from gcc/m2/gm2-libs-iso/ShortComplexMath.def rename to gcc/m2/gm2-libs-iso-common/ShortComplexMath.def index 7cdd220947d7..d9c698ed5b77 100644 --- a/gcc/m2/gm2-libs-iso/ShortComplexMath.def +++ b/gcc/m2/gm2-libs-iso-common/ShortComplexMath.def @@ -54,14 +54,14 @@ PROCEDURE exp (z: SHORTCOMPLEX): SHORTCOMPLEX; 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 *) + (* <DEF_TARGET_PROCEDURE(sin,SHORTCOMPLEX,SHORTCOMPLEX,__builtin_csinf,cbuiltin.csinf)> *) -PROCEDURE cos (z: SHORTCOMPLEX): SHORTCOMPLEX; (* Returns the cosine of z *) + (* <DEF_TARGET_PROCEDURE(cos,SHORTCOMPLEX,SHORTCOMPLEX,__builtin_ccosf,cbuiltin.ccosf)> *) -PROCEDURE tan (z: SHORTCOMPLEX): SHORTCOMPLEX; (* Returns the tangent of z *) + (* <DEF_TARGET_PROCEDURE(tan,SHORTCOMPLEX,SHORTCOMPLEX,__builtin_ctanf,cbuiltin.ctanf)> *) PROCEDURE arcsin (z: SHORTCOMPLEX): SHORTCOMPLEX; (* Returns the arcsine of z *) @@ -85,4 +85,3 @@ PROCEDURE IsCMathException (): BOOLEAN; *) END ShortComplexMath. - diff --git a/gcc/m2/gm2-libs-iso/ShortComplexMath.mod b/gcc/m2/gm2-libs-iso-common/ShortComplexMath.mod similarity index 90% rename from gcc/m2/gm2-libs-iso/ShortComplexMath.mod rename to gcc/m2/gm2-libs-iso-common/ShortComplexMath.mod index e7236a92bdd6..acfbcb0b50b2 100644 --- a/gcc/m2/gm2-libs-iso/ShortComplexMath.mod +++ b/gcc/m2/gm2-libs-iso-common/ShortComplexMath.mod @@ -86,27 +86,13 @@ END ln ; (* Returns the sine of z *) - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_csinf)) sin (z: SHORTCOMPLEX): SHORTCOMPLEX; -BEGIN - RETURN cbuiltin.csinf (z) -END sin ; - +(* <MOD_TARGET_PROCEDURE(sin,SHORTCOMPLEX,SHORTCOMPLEX,__builtin_csinf,cbuiltin.csinf)> *) (* Returns the cosine of z *) - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_ccosf)) cos (z: SHORTCOMPLEX): SHORTCOMPLEX; -BEGIN - RETURN cbuiltin.ccosf (z) -END cos ; - +(* <MOD_TARGET_PROCEDURE(cos,SHORTCOMPLEX,SHORTCOMPLEX,__builtin_ccosf,cbuiltin.ccosf)> *) (* Returns the tangent of z *) - -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_ctanf)) tan (z: SHORTCOMPLEX): SHORTCOMPLEX; -BEGIN - RETURN cbuiltin.ctanf (z) -END tan ; +(* <MOD_TARGET_PROCEDURE(tan,SHORTCOMPLEX,SHORTCOMPLEX,__builtin_ctanf,cbuiltin.ctanf)> *) (* Returns the arcsine of z *) diff --git a/gcc/m2/gm2-libs-min/SYSTEM.def b/gcc/m2/gm2-libs-min/SYSTEM.def index 6fe0bde8b3b2..0a1a4e79abc8 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-pim-common/Builtins.def similarity index 93% rename from gcc/m2/gm2-libs/Builtins.def rename to gcc/m2/gm2-libs-pim-common/Builtins.def index c0bb8425de14..126b8e3c3bf7 100644 --- a/gcc/m2/gm2-libs/Builtins.def +++ b/gcc/m2/gm2-libs-pim-common/Builtins.def @@ -175,17 +175,17 @@ 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 ; +(* <DEF_BUILTIN_PROCEDURE(csins,SHORTCOMPLEX,SHORTCOMPLEX,__builtin_csinf,cbuiltin.csinf)> *) +(* <DEF_BUILTIN_PROCEDURE(csin,COMPLEX,COMPLEX,__builtin_csin,cbuiltin.csin)> *) +(* <DEF_BUILTIN_PROCEDURE(csinl,LONGCOMPLEX,LONGCOMPLEX,__builtin_csinl,cbuiltin.csinl)> *) -PROCEDURE __BUILTIN__ ccosf (z: SHORTCOMPLEX) : SHORTCOMPLEX ; -PROCEDURE __BUILTIN__ ccos (z: COMPLEX) : COMPLEX ; -PROCEDURE __BUILTIN__ ccosl (z: LONGCOMPLEX) : LONGCOMPLEX ; +(* <DEF_BUILTIN_PROCEDURE(ccoss,SHORTCOMPLEX,SHORTCOMPLEX,__builtin_ccosf,cbuiltin.ccosf)> *) +(* <DEF_BUILTIN_PROCEDURE(ccos,COMPLEX,COMPLEX,__builtin_ccos,cbuiltin.ccos)> *) +(* <DEF_BUILTIN_PROCEDURE(ccosl,LONGCOMPLEX,LONGCOMPLEX,__builtin_ccosl,cbuiltin.ccosl)> *) -PROCEDURE __BUILTIN__ ctanf (z: SHORTCOMPLEX) : SHORTCOMPLEX ; -PROCEDURE __BUILTIN__ ctan (z: COMPLEX) : COMPLEX ; -PROCEDURE __BUILTIN__ ctanl (z: LONGCOMPLEX) : LONGCOMPLEX ; +(* <DEF_BUILTIN_PROCEDURE(ctans,SHORTCOMPLEX,SHORTCOMPLEX,__builtin_ctanf,cbuiltin.ctanf)> *) +(* <DEF_BUILTIN_PROCEDURE(ctan,COMPLEX,COMPLEX,__builtin_ctan,cbuiltin.ctan)> *) +(* <DEF_BUILTIN_PROCEDURE(ctanl,LONGCOMPLEX,LONGCOMPLEX,__builtin_ctanl,cbuiltin.ctanl)> *) PROCEDURE __BUILTIN__ carcsinf (z: SHORTCOMPLEX) : SHORTCOMPLEX ; PROCEDURE __BUILTIN__ carcsin (z: COMPLEX) : COMPLEX ; diff --git a/gcc/m2/gm2-libs/Builtins.mod b/gcc/m2/gm2-libs-pim-common/Builtins.mod similarity index 94% rename from gcc/m2/gm2-libs/Builtins.mod rename to gcc/m2/gm2-libs-pim-common/Builtins.mod index 65009b1561ed..8e6fe677808d 100644 --- a/gcc/m2/gm2-libs/Builtins.mod +++ b/gcc/m2/gm2-libs-pim-common/Builtins.mod @@ -433,50 +433,17 @@ 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 ; +(* <MOD_BUILTIN_PROCEDURE(csins,SHORTCOMPLEX,SHORTCOMPLEX,__builtin_csinf,cbuiltin.csinf)> *) +(* <MOD_BUILTIN_PROCEDURE(csin,COMPLEX,COMPLEX,__builtin_csin,cbuiltin.csin)> *) +(* <MOD_BUILTIN_PROCEDURE(csinl,LONGCOMPLEX,LONGCOMPLEX,__builtin_csinl,cbuiltin.csinl)> *) -PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_ccos)) ccos (z: COMPLEX) : COMPLEX ; -BEGIN - RETURN cbuiltin.ccos(z) -END ccos ; +(* <MOD_BUILTIN_PROCEDURE(ccoss,SHORTCOMPLEX,SHORTCOMPLEX,__builtin_ccosf,cbuiltin.ccosf)> *) +(* <MOD_BUILTIN_PROCEDURE(ccos,COMPLEX,COMPLEX,__builtin_ccos,cbuiltin.ccos)> *) +(* <MOD_BUILTIN_PROCEDURE(ccosl,LONGCOMPLEX,LONGCOMPLEX,__builtin_ccosl,cbuiltin.ccosl)> *) -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 ; +(* <MOD_BUILTIN_PROCEDURE(ctans,SHORTCOMPLEX,SHORTCOMPLEX,__builtin_ctanf,cbuiltin.ctanf)> *) +(* <MOD_BUILTIN_PROCEDURE(ctan,COMPLEX,COMPLEX,__builtin_ctan,cbuiltin.ctan)> *) +(* <MOD_BUILTIN_PROCEDURE(ctanl,LONGCOMPLEX,LONGCOMPLEX,__builtin_ctanl,cbuiltin.ctanl)> *) PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_casinf)) carcsinf (z: SHORTCOMPLEX) : SHORTCOMPLEX ; BEGIN diff --git a/gcc/m2/gm2-libs/SYSTEM.def b/gcc/m2/gm2-libs-pim-common/SYSTEM.def similarity index 94% rename from gcc/m2/gm2-libs/SYSTEM.def rename to gcc/m2/gm2-libs-pim-common/SYSTEM.def index 6bf9d52d12c1..e6226541e89f 100644 --- a/gcc/m2/gm2-libs/SYSTEM.def +++ b/gcc/m2/gm2-libs-pim-common/SYSTEM.def @@ -27,7 +27,10 @@ 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, CARDINAL64, (* @SYSTEM_DATATYPES@ *) + (* <SYSTEM_DATATYPES> *) + 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. *) @@ -47,17 +50,16 @@ CONST COMPLEX64, COMPLEX128, CSIZE_T, CSSIZE_T. Also note that the non-standard data types will - move into another module in the future. *) + move into another module in the future. - -(* The following types are supported on this target: TYPE - @SYSTEM_TYPES@ + <SYSTEM_TYPES> + </SYSTEM_TYPES> *) (* - all the functions below are declared internally to gm2 + All the functions below are declared internally to gm2 ====================================================== PROCEDURE ADR (VAR v: <anytype>): ADDRESS; diff --git a/gcc/m2/gm2-libs/SYSTEM.mod b/gcc/m2/gm2-libs-pim-common/SYSTEM.mod similarity index 100% rename from gcc/m2/gm2-libs/SYSTEM.mod rename to gcc/m2/gm2-libs-pim-common/SYSTEM.mod diff --git a/gcc/m2/gm2-libs/cbuiltin.def b/gcc/m2/gm2-libs-pim-common/cbuiltin.def similarity index 88% rename from gcc/m2/gm2-libs/cbuiltin.def rename to gcc/m2/gm2-libs-pim-common/cbuiltin.def index bccaa3b4462b..45f17b3bf86a 100644 --- a/gcc/m2/gm2-libs/cbuiltin.def +++ b/gcc/m2/gm2-libs-pim-common/cbuiltin.def @@ -55,17 +55,17 @@ EXPORT UNQUALIFIED alloca, memcpy, csqrtf, csqrt, csqrtl, cexpf, cexp, cexpl, clogf, clog, clogl, - csinf, csin, csinl, - ccosf, ccos, ccosl, - ctanf, ctan, ctanl, + (* <CBUILTIN_EXPORT_LIST> *) 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, + strcat, strncat, strcpy, + strncpy, strcmp, strncmp, + strlen, strstr, strpbrk, + strspn, strcspn, strchr, strrchr, clz, clzll, ctz, ctzll ; @@ -165,17 +165,17 @@ 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 ; +(* <DEF_CBUILTIN_PROCEDURE(csins,SHORTCOMPLEX,SHORTCOMPLEX,__builtin_csinf,cbuiltin.csinf)> *) +(* <DEF_CBUILTIN_PROCEDURE(csin,COMPLEX,COMPLEX,__builtin_csin,cbuiltin.csin)> *) +(* <DEF_CBUILTIN_PROCEDURE(csinl,LONGCOMPLEX,LONGCOMPLEX,__builtin_csinl,cbuiltin.csinl)> *) -PROCEDURE ccosf (z: SHORTCOMPLEX) : SHORTCOMPLEX ; -PROCEDURE ccos (z: COMPLEX) : COMPLEX ; -PROCEDURE ccosl (z: LONGCOMPLEX) : LONGCOMPLEX ; +(* <DEF_CBUILTIN_PROCEDURE(ccoss,SHORTCOMPLEX,SHORTCOMPLEX,__builtin_ccosf,cbuiltin.ccosf)> *) +(* <DEF_CBUILTIN_PROCEDURE(ccos,COMPLEX,COMPLEX,__builtin_ccos,cbuiltin.ccos)> *) +(* <DEF_CBUILTIN_PROCEDURE(ccosl,LONGCOMPLEX,LONGCOMPLEX,__builtin_ccosl,cbuiltin.ccosl)> *) -PROCEDURE ctanf (z: SHORTCOMPLEX) : SHORTCOMPLEX ; -PROCEDURE ctan (z: COMPLEX) : COMPLEX ; -PROCEDURE ctanl (z: LONGCOMPLEX) : LONGCOMPLEX ; +(* <DEF_CBUILTIN_PROCEDURE(ctans,SHORTCOMPLEX,SHORTCOMPLEX,__builtin_ctanf,cbuiltin.ctanf)> *) +(* <DEF_CBUILTIN_PROCEDURE(ctan,COMPLEX,COMPLEX,__builtin_ctan,cbuiltin.ctan)> *) +(* <DEF_CBUILTIN_PROCEDURE(ctanl,LONGCOMPLEX,LONGCOMPLEX,__builtin_ctanl,cbuiltin.ctanl)> *) PROCEDURE casinf (z: SHORTCOMPLEX) : SHORTCOMPLEX ; PROCEDURE casin (z: COMPLEX) : COMPLEX ; diff --git a/gcc/m2/lang.opt b/gcc/m2/lang.opt index 30e211e292f7..12b0676dd5f9 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 ccc090af1502..a953d9596997 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 3830809f671c..8adebd700ed6 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 000000000000..cd61ecec87cf --- /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 4c6511931d2c..ea3db640baf1 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 b1093e1bd97c..7590fe05845d 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 ef29732dbed1..bacc51bd2e32 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 af46b30ad608..b2ad58d08e8d 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 80a7ff961962..c9eee317b7bc 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 000000000000..b018748cc19e --- /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 f9710ffde8a5..bd0c3237f4b3 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 a907d8813dc5..e522e73d4dba 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 bd8b3c3e35d5..8f71649cd164 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 edf9243a5b83..dc8478b449a7 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 19efef15b829..fe2fe468f608 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 1af1d6aeb931..b271e34b18c6 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 d6b143eaf234..37216b856c82 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 8078be8d16d2..d97fab7b8696 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 93dcc6639fd5..1bf8ec794150 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 8cee85fd4772..d3cc8882d304 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 2c6bb9a77f5c..85d289a5b992 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 cc27a0770309..508358da9c57 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 33b97bf65540..213f5c1e6268 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)