diff --git a/Makefile.am b/Makefile.am index ebbf6d476..399946e4b 100644 --- a/Makefile.am +++ b/Makefile.am @@ -2,7 +2,7 @@ ## ## Copyright (C) 1998, 1999, 2000, 2001, 2002, 2006, 2007, ## 2008, 2009, 2010, 2011, 2012, 2013, -## 2014, 2015, 2016 Free Software Foundation, Inc. +## 2014, 2015, 2016, 2022 Free Software Foundation, Inc. ## ## This file is part of GUILE. ## @@ -30,8 +30,10 @@ SUBDIRS = \ lib \ meta \ libguile \ - bootstrap \ module \ + stage0 \ + stage1 \ + stage2 \ guile-readline \ examples \ emacs \ diff --git a/am/bootstrap.am b/am/bootstrap.am index 06acd81fe..0257d53dc 100644 --- a/am/bootstrap.am +++ b/am/bootstrap.am @@ -1,4 +1,4 @@ -## Copyright (C) 2009-2021 Free Software Foundation, Inc. +## Copyright (C) 2009-2022 Free Software Foundation, Inc. ## ## This file is part of GNU Guile. ## @@ -21,9 +21,9 @@ GUILE_WARNINGS ?= -W1 GUILE_OPTIMIZATIONS ?= -O2 GUILE_TARGET ?= $(host) -GUILE_BUILD_TAG ?= BOOTSTRAP +GUILE_BUILD_TAG ?= BOOTSTRAP($(GUILE_BOOTSTRAP_STAGE)) -GOBJECTS = $(SOURCES:%.scm=%.go) +GOBJECTS = $(SOURCES:%.scm=%.go) $(ELISP_SOURCES:%.el=%.go) nobase_noinst_DATA = $(GOBJECTS) CLEANFILES = $(GOBJECTS) @@ -35,30 +35,43 @@ AM_V_GUILEC_ = $(AM_V_GUILEC_$(AM_DEFAULT_VERBOSITY)) AM_V_GUILEC_0 = @echo " $(GUILE_BUILD_TAG) GUILEC" $@; vpath %.scm @top_srcdir@/module +vpath %.el @top_srcdir@/module -SUFFIXES = .scm .go +SUFFIXES = .scm .el .go -.scm.go: - $(AM_V_GUILEC)GUILE_AUTO_COMPILE=0 \ +COMPILE = $(AM_V_GUILEC) \ + GUILE_BOOTSTRAP_STAGE=$(GUILE_BOOTSTRAP_STAGE) \ $(top_builddir)/meta/build-env \ guild compile --target="$(GUILE_TARGET)" \ $(GUILE_WARNINGS) $(GUILE_OPTIMIZATIONS) \ - -L "$(abs_top_srcdir)/module" \ - -L "$(abs_top_srcdir)/guile-readline" \ - -o "$@" "$<" + -L "$(abs_top_srcdir)/module" -# A subset of sources that are used by the compiler. We can compile -# these in any order; the order below is designed to hopefully result in -# the lowest total compile time. +.scm.go: + $(COMPILE) -o "$@" "$<" + +.el.go: + $(COMPILE) --from=elisp -o "$@" "$<" + +ice-9/boot-9.go: ice-9/boot-9.scm ice-9/quasisyntax.scm ice-9/r6rs-libraries.scm ice-9/r7rs-libraries.scm ice-9/read.scm +ice-9/match.go: ice-9/match.scm ice-9/match.upstream.scm +srfi/srfi-64.go: srfi/srfi-64.scm srfi/srfi-64/testing.scm + +# Keep this rule in sync with that in `am/guilec'. +ice-9/psyntax-pp.go: ice-9/psyntax.scm ice-9/psyntax-pp.scm + $(COMPILE) -o "$@" "$<" + +# All sources. We can compile these in any order; the order below is +# designed to hopefully result in the lowest total compile time. SOURCES = \ ice-9/eval.scm \ ice-9/psyntax-pp.scm \ - language/tree-il/compile-bytecode.scm \ ice-9/boot-9.scm \ - srfi/srfi-1.scm \ \ language/tree-il.scm \ language/tree-il/analyze.scm \ + language/tree-il/compile-bytecode.scm \ + language/tree-il/compile-cps.scm \ + language/tree-il/cps-primitives.scm \ language/tree-il/debug.scm \ language/tree-il/effects.scm \ language/tree-il/eta-expand.scm \ @@ -71,15 +84,269 @@ SOURCES = \ language/tree-il/resolve-free-vars.scm \ language/tree-il/spec.scm \ \ - language/scheme/spec.scm \ - language/scheme/compile-tree-il.scm \ - language/scheme/decompile-tree-il.scm \ + language/cps.scm \ + language/cps/closure-conversion.scm \ + language/cps/compile-bytecode.scm \ + language/cps/contification.scm \ + language/cps/cse.scm \ + language/cps/dce.scm \ + language/cps/devirtualize-integers.scm \ + language/cps/dump.scm \ + language/cps/elide-arity-checks.scm \ + language/cps/effects-analysis.scm \ + language/cps/graphs.scm \ + language/cps/intmap.scm \ + language/cps/intset.scm \ + language/cps/licm.scm \ + language/cps/loop-instrumentation.scm \ + language/cps/optimize.scm \ + language/cps/peel-loops.scm \ + language/cps/prune-top-level-scopes.scm \ + language/cps/reify-primitives.scm \ + language/cps/renumber.scm \ + language/cps/return-types.scm \ + language/cps/rotate-loops.scm \ + language/cps/self-references.scm \ + language/cps/simplify.scm \ + language/cps/slot-allocation.scm \ + language/cps/spec.scm \ + language/cps/specialize-primcalls.scm \ + language/cps/specialize-numbers.scm \ + language/cps/split-rec.scm \ + language/cps/switch.scm \ + language/cps/type-checks.scm \ + language/cps/type-fold.scm \ + language/cps/types.scm \ + language/cps/utils.scm \ + language/cps/verify.scm \ + language/cps/with-cps.scm \ + \ + ice-9/and-let-star.scm \ + ice-9/arrays.scm \ + ice-9/atomic.scm \ + ice-9/binary-ports.scm \ + ice-9/buffered-input.scm \ + ice-9/calling.scm \ + ice-9/command-line.scm \ + ice-9/common-list.scm \ + ice-9/control.scm \ + ice-9/copy-tree.scm \ + ice-9/curried-definitions.scm \ + ice-9/deprecated.scm \ + ice-9/documentation.scm \ + ice-9/eval-string.scm \ + ice-9/exceptions.scm \ + ice-9/expect.scm \ + ice-9/fdes-finalizers.scm \ + ice-9/format.scm \ + ice-9/ftw.scm \ + ice-9/futures.scm \ + ice-9/gap-buffer.scm \ + ice-9/getopt-long.scm \ + ice-9/hash-table.scm \ + ice-9/hcons.scm \ + ice-9/history.scm \ + ice-9/i18n.scm \ + ice-9/iconv.scm \ + ice-9/lineio.scm \ + ice-9/list.scm \ + ice-9/local-eval.scm \ + ice-9/ls.scm \ + ice-9/match.scm \ + ice-9/networking.scm \ + ice-9/null.scm \ + ice-9/occam-channel.scm \ + ice-9/optargs.scm \ + ice-9/peg.scm \ + ice-9/peg/cache.scm \ + ice-9/peg/codegen.scm \ + ice-9/peg/simplify-tree.scm \ + ice-9/peg/string-peg.scm \ + ice-9/peg/using-parsers.scm \ + ice-9/poe.scm \ + ice-9/poll.scm \ + ice-9/popen.scm \ + ice-9/ports.scm \ + ice-9/posix.scm \ + ice-9/pretty-print.scm \ + ice-9/q.scm \ + ice-9/r5rs.scm \ + ice-9/rdelim.scm \ + ice-9/receive.scm \ + ice-9/regex.scm \ + ice-9/runq.scm \ + ice-9/rw.scm \ + ice-9/safe-r5rs.scm \ + ice-9/safe.scm \ + ice-9/sandbox.scm \ + ice-9/save-stack.scm \ + ice-9/scm-style-repl.scm \ + ice-9/serialize.scm \ + ice-9/session.scm \ + ice-9/slib.scm \ + ice-9/stack-catch.scm \ + ice-9/streams.scm \ + ice-9/string-fun.scm \ + ice-9/suspendable-ports.scm \ + ice-9/textual-ports.scm \ + ice-9/threads.scm \ + ice-9/time.scm \ + ice-9/top-repl.scm \ + ice-9/unicode.scm \ + ice-9/vlist.scm \ + ice-9/weak-vector.scm \ + \ + language/brainfuck/parse.scm \ + language/brainfuck/compile-scheme.scm \ + language/brainfuck/compile-tree-il.scm \ + language/brainfuck/spec.scm \ \ language/bytecode.scm \ language/bytecode/spec.scm \ \ + language/ecmascript/tokenize.scm \ + language/ecmascript/parse.scm \ + language/ecmascript/impl.scm \ + language/ecmascript/base.scm \ + language/ecmascript/function.scm \ + language/ecmascript/array.scm \ + language/ecmascript/compile-tree-il.scm \ + language/ecmascript/spec.scm \ + \ + language/elisp/falias.scm \ + language/elisp/lexer.scm \ + language/elisp/parser.scm \ + language/elisp/bindings.scm \ + language/elisp/compile-tree-il.scm \ + language/elisp/runtime.scm \ + language/elisp/runtime/function-slot.scm \ + language/elisp/runtime/value-slot.scm \ + language/elisp/spec.scm \ + \ + language/scheme/compile-tree-il.scm \ + language/scheme/decompile-tree-il.scm \ + language/scheme/spec.scm \ + \ language/value/spec.scm \ \ + rnrs/base.scm \ + rnrs/conditions.scm \ + rnrs/control.scm \ + rnrs/enums.scm \ + rnrs/eval.scm \ + rnrs/exceptions.scm \ + rnrs/files.scm \ + rnrs/hashtables.scm \ + rnrs/lists.scm \ + rnrs/mutable-pairs.scm \ + rnrs/mutable-strings.scm \ + rnrs/programs.scm \ + rnrs/r5rs.scm \ + rnrs/sorting.scm \ + rnrs/syntax-case.scm \ + rnrs/unicode.scm \ + rnrs/arithmetic/bitwise.scm \ + rnrs/arithmetic/fixnums.scm \ + rnrs/arithmetic/flonums.scm \ + rnrs/bytevectors.scm \ + rnrs/io/simple.scm \ + rnrs/io/ports.scm \ + rnrs/records/inspection.scm \ + rnrs/records/procedural.scm \ + rnrs/records/syntactic.scm \ + rnrs.scm \ + \ + oop/goops.scm \ + oop/goops/active-slot.scm \ + oop/goops/composite-slot.scm \ + oop/goops/describe.scm \ + oop/goops/internal.scm \ + oop/goops/save.scm \ + oop/goops/stklos.scm \ + oop/goops/accessors.scm \ + oop/goops/simple.scm \ + \ + scheme/base.scm \ + scheme/case-lambda.scm \ + scheme/char.scm \ + scheme/complex.scm \ + scheme/cxr.scm \ + scheme/eval.scm \ + scheme/file.scm \ + scheme/inexact.scm \ + scheme/lazy.scm \ + scheme/load.scm \ + scheme/process-context.scm \ + scheme/r5rs.scm \ + scheme/read.scm \ + scheme/repl.scm \ + scheme/time.scm \ + scheme/write.scm \ + \ + scripts/compile.scm \ + scripts/disassemble.scm \ + scripts/display-commentary.scm \ + scripts/doc-snarf.scm \ + scripts/frisk.scm \ + scripts/generate-autoload.scm \ + scripts/help.scm \ + scripts/lint.scm \ + scripts/list.scm \ + scripts/punify.scm \ + scripts/read-scheme-source.scm \ + scripts/read-text-outline.scm \ + scripts/use2dot.scm \ + scripts/snarf-check-and-output-texi.scm \ + scripts/summarize-guile-TODO.scm \ + scripts/api-diff.scm \ + scripts/read-rfc822.scm \ + scripts/snarf-guile-m4-docs.scm \ + scripts/autofrisk.scm \ + scripts/scan-api.scm \ + \ + srfi/srfi-1.scm \ + srfi/srfi-2.scm \ + srfi/srfi-4.scm \ + srfi/srfi-4/gnu.scm \ + srfi/srfi-6.scm \ + srfi/srfi-8.scm \ + srfi/srfi-9.scm \ + srfi/srfi-9/gnu.scm \ + srfi/srfi-10.scm \ + srfi/srfi-11.scm \ + srfi/srfi-13.scm \ + srfi/srfi-14.scm \ + srfi/srfi-16.scm \ + srfi/srfi-17.scm \ + srfi/srfi-18.scm \ + srfi/srfi-19.scm \ + srfi/srfi-26.scm \ + srfi/srfi-27.scm \ + srfi/srfi-28.scm \ + srfi/srfi-31.scm \ + srfi/srfi-34.scm \ + srfi/srfi-35.scm \ + srfi/srfi-37.scm \ + srfi/srfi-38.scm \ + srfi/srfi-41.scm \ + srfi/srfi-42.scm \ + srfi/srfi-43.scm \ + srfi/srfi-39.scm \ + srfi/srfi-45.scm \ + srfi/srfi-60.scm \ + srfi/srfi-64.scm \ + srfi/srfi-67.scm \ + srfi/srfi-69.scm \ + srfi/srfi-71.scm \ + srfi/srfi-88.scm \ + srfi/srfi-98.scm \ + srfi/srfi-111.scm \ + srfi/srfi-171.scm \ + srfi/srfi-171/gnu.scm \ + srfi/srfi-171/meta.scm \ + \ + statprof.scm \ + \ system/base/pmatch.scm \ system/base/syntax.scm \ system/base/compile.scm \ @@ -92,73 +359,82 @@ SOURCES = \ system/base/types/internal.scm \ system/base/ck.scm \ \ - ice-9/ports.scm \ - ice-9/r5rs.scm \ - ice-9/deprecated.scm \ - ice-9/binary-ports.scm \ - ice-9/command-line.scm \ - ice-9/control.scm \ - ice-9/format.scm \ - ice-9/getopt-long.scm \ - ice-9/i18n.scm \ - ice-9/match.scm \ - ice-9/networking.scm \ - ice-9/posix.scm \ - ice-9/rdelim.scm \ - ice-9/receive.scm \ - ice-9/regex.scm \ - ice-9/session.scm \ - ice-9/pretty-print.scm \ - ice-9/vlist.scm \ + system/foreign.scm \ + system/foreign-library.scm \ + system/foreign-object.scm \ + \ + system/repl/debug.scm \ + system/repl/error-handling.scm \ + system/repl/common.scm \ + system/repl/command.scm \ + system/repl/repl.scm \ + system/repl/server.scm \ + system/repl/coop-server.scm \ \ system/vm/assembler.scm \ + system/vm/coverage.scm \ system/vm/debug.scm \ system/vm/disassembler.scm \ system/vm/dwarf.scm \ system/vm/elf.scm \ system/vm/frame.scm \ + system/vm/inspect.scm \ system/vm/linker.scm \ system/vm/loader.scm \ system/vm/program.scm \ + system/vm/trace.scm \ + system/vm/trap-state.scm \ + system/vm/traps.scm \ system/vm/vm.scm \ - system/foreign.scm \ - system/foreign-library.scm \ \ - language/tree-il/compile-cps.scm \ - language/tree-il/cps-primitives.scm \ + system/syntax.scm \ \ - language/cps.scm \ - language/cps/closure-conversion.scm \ - language/cps/compile-bytecode.scm \ - language/cps/contification.scm \ - language/cps/cse.scm \ - language/cps/dce.scm \ - language/cps/devirtualize-integers.scm \ - language/cps/effects-analysis.scm \ - language/cps/elide-arity-checks.scm \ - language/cps/intmap.scm \ - language/cps/intset.scm \ - language/cps/graphs.scm \ - language/cps/licm.scm \ - language/cps/loop-instrumentation.scm \ - language/cps/peel-loops.scm \ - language/cps/prune-top-level-scopes.scm \ - language/cps/reify-primitives.scm \ - language/cps/renumber.scm \ - language/cps/return-types.scm \ - language/cps/rotate-loops.scm \ - language/cps/optimize.scm \ - language/cps/simplify.scm \ - language/cps/self-references.scm \ - language/cps/slot-allocation.scm \ - language/cps/spec.scm \ - language/cps/specialize-primcalls.scm \ - language/cps/specialize-numbers.scm \ - language/cps/split-rec.scm \ - language/cps/switch.scm \ - language/cps/type-checks.scm \ - language/cps/type-fold.scm \ - language/cps/types.scm \ - language/cps/utils.scm \ - language/cps/verify.scm \ - language/cps/with-cps.scm + system/xref.scm \ + \ + sxml/apply-templates.scm \ + sxml/fold.scm \ + sxml/match.scm \ + sxml/simple.scm \ + sxml/ssax/input-parse.scm \ + sxml/ssax.scm \ + sxml/transform.scm \ + sxml/xpath.scm \ + \ + texinfo.scm \ + texinfo/docbook.scm \ + texinfo/html.scm \ + texinfo/indexing.scm \ + texinfo/string-utils.scm \ + texinfo/plain-text.scm \ + texinfo/reflection.scm \ + texinfo/serialize.scm \ + \ + web/client.scm \ + web/http.scm \ + web/request.scm \ + web/response.scm \ + web/server.scm \ + web/server/http.scm \ + web/uri.scm + +ELISP_SOURCES = \ + language/elisp/boot.el + +NOCOMP_SOURCES = \ + ice-9/match.upstream.scm \ + ice-9/psyntax.scm \ + ice-9/read.scm \ + ice-9/r6rs-libraries.scm \ + ice-9/r7rs-libraries.scm \ + ice-9/quasisyntax.scm \ + srfi/srfi-42/ec.scm \ + srfi/srfi-64/testing.scm \ + srfi/srfi-67/compare.scm \ + system/base/lalr.upstream.scm \ + system/repl/describe.scm \ + sxml/sxml-match.ss \ + sxml/upstream/SSAX.scm \ + sxml/upstream/SXML-tree-trans.scm \ + sxml/upstream/SXPath-old.scm \ + sxml/upstream/assert.scm \ + sxml/upstream/input-parse.scm diff --git a/configure.ac b/configure.ac index 2f4e48bae..827e1c09d 100644 --- a/configure.ac +++ b/configure.ac @@ -1492,8 +1492,10 @@ AC_CONFIG_FILES([ test-suite/Makefile test-suite/standalone/Makefile meta/Makefile - bootstrap/Makefile module/Makefile + stage0/Makefile + stage1/Makefile + stage2/Makefile prebuilt/Makefile prebuilt/x86_64-unknown-linux-gnu/Makefile prebuilt/i686-pc-linux-gnu/Makefile diff --git a/meta/build-env.in b/meta/build-env.in index b48f9c245..bdc88ded4 100644 --- a/meta/build-env.in +++ b/meta/build-env.in @@ -40,6 +40,9 @@ top_builddir="@top_builddir_absolute@" exit 1 } +GUILE_AUTO_COMPILE=0 +export GUILE_AUTO_COMPILE + # When cross-compiling, let $GUILE_FOR_BUILD use its own .go files since # the ones that are being built may be incompatible ($GUILE_FOR_BUILD is # typically used to run `guild compile --target=$host'.) Likewise, @@ -54,7 +57,12 @@ then GUILE_LOAD_PATH="$GUILE_LOAD_PATH:${top_builddir}/module:${top_builddir}/guile-readline" fi export GUILE_LOAD_PATH - GUILE_LOAD_COMPILED_PATH="${top_builddir}/module:${top_builddir}/bootstrap:${top_srcdir}/prebuilt/@SCM_PREBUILT_BINARIES@:${top_builddir}/guile-readline" + case "$GUILE_BOOTSTRAP_STAGE" in + stage0) GUILE_LOAD_COMPILED_PATH="${top_builddir}/stage0:${top_srcdir}/prebuilt/@SCM_PREBUILT_BINARIES@" ;; + stage1) GUILE_LOAD_COMPILED_PATH="${top_builddir}/stage1:${top_builddir}/stage0" ;; + stage2) GUILE_LOAD_COMPILED_PATH="${top_builddir}/stage1" ;; + *) GUILE_LOAD_COMPILED_PATH="${top_builddir}/stage2:${top_builddir}/guile-readline" ;; + esac export GUILE_LOAD_COMPILED_PATH # Don't look in installed dirs for guile modules diff --git a/meta/uninstalled-env.in b/meta/uninstalled-env.in index ed932d0cb..2531e25cb 100644 --- a/meta/uninstalled-env.in +++ b/meta/uninstalled-env.in @@ -1,6 +1,6 @@ #!/bin/sh -# Copyright (C) 2003, 2006, 2008, 2009, 2010, 2011, 2012, 2015, 2017 Free Software Foundation +# Copyright (C) 2003, 2006, 2008, 2009, 2010, 2011, 2012, 2015, 2017, 2022 Free Software Foundation # # This file is part of GUILE. # @@ -80,7 +80,7 @@ then fi export GUILE_LOAD_PATH - for d in "/prebuilt/@SCM_PREBUILT_BINARIES@" "/bootstrap" "/module" "/guile-readline" + for d in "/prebuilt/@SCM_PREBUILT_BINARIES@" "/stage2" "/guile-readline" do # This hair prevents double inclusion. # The ":" prevents prefix aliasing. diff --git a/module/Makefile.am b/module/Makefile.am index f6f5a9bb8..de9d1e5a6 100644 --- a/module/Makefile.am +++ b/module/Makefile.am @@ -1,6 +1,6 @@ ## Process this file with automake to produce Makefile.in. ## -## Copyright (C) 2009-2021 Free Software Foundation, Inc. +## Copyright (C) 2009-2022 Free Software Foundation, Inc. ## ## This file is part of GUILE. ## @@ -19,404 +19,15 @@ ## write to the Free Software Foundation, Inc., 51 Franklin Street, ## Fifth Floor, Boston, MA 02110-1301 USA -include $(top_srcdir)/am/guilec +include $(top_srcdir)/am/bootstrap.am -# We're at the root of the module hierarchy. -modpath = +moddir = $(pkgdatadir)/$(GUILE_EFFECTIVE_VERSION) +nobase_mod_DATA = $(SOURCES) $(ELISP_SOURCES) $(NOCOMP_SOURCES) +EXTRA_DIST = $(SOURCES) $(ELISP_SOURCES) $(NOCOMP_SOURCES) +ETAGS_ARGS = $(SOURCES) $(ELISP_SOURCES) $(NOCOMP_SOURCES) -VM_TARGETS := system/vm/assembler.go system/vm/disassembler.go -$(VM_TARGETS): $(top_builddir)/libguile/vm-operations.h - -ice-9/boot-9.go: ice-9/boot-9.scm ice-9/quasisyntax.scm ice-9/r6rs-libraries.scm ice-9/r7rs-libraries.scm ice-9/read.scm -ice-9/match.go: ice-9/match.scm ice-9/match.upstream.scm -srfi/srfi-64.go: srfi/srfi-64.scm srfi/srfi-64/testing.scm -$(nobase_ccache_DATA): ../bootstrap/ice-9/eval.go - -# Keep this rule in sync with that in `am/guilec'. -ice-9/psyntax-pp.go: ice-9/psyntax.scm ice-9/psyntax-pp.scm - $(AM_V_GUILEC)GUILE_AUTO_COMPILE=0 \ - $(top_builddir)/meta/build-env \ - guild compile --target="$(host)" $(GUILE_WARNINGS) $(GUILE_OPTIMIZATIONS) \ - -L "$(abs_srcdir)" -L "$(abs_builddir)" \ - -L "$(abs_top_srcdir)/guile-readline" \ - -o "ice-9/psyntax-pp.go" "$(srcdir)/ice-9/psyntax.scm" - -SOURCES = \ - ice-9/eval.scm \ - ice-9/psyntax-pp.scm \ - \ - language/cps.scm \ - language/cps/closure-conversion.scm \ - language/cps/compile-bytecode.scm \ - language/cps/contification.scm \ - language/cps/cse.scm \ - language/cps/dce.scm \ - language/cps/devirtualize-integers.scm \ - language/cps/dump.scm \ - language/cps/elide-arity-checks.scm \ - language/cps/effects-analysis.scm \ - language/cps/graphs.scm \ - language/cps/intmap.scm \ - language/cps/intset.scm \ - language/cps/licm.scm \ - language/cps/loop-instrumentation.scm \ - language/cps/optimize.scm \ - language/cps/peel-loops.scm \ - language/cps/prune-top-level-scopes.scm \ - language/cps/reify-primitives.scm \ - language/cps/renumber.scm \ - language/cps/return-types.scm \ - language/cps/rotate-loops.scm \ - language/cps/self-references.scm \ - language/cps/simplify.scm \ - language/cps/slot-allocation.scm \ - language/cps/spec.scm \ - language/cps/specialize-primcalls.scm \ - language/cps/specialize-numbers.scm \ - language/cps/split-rec.scm \ - language/cps/switch.scm \ - language/cps/type-checks.scm \ - language/cps/type-fold.scm \ - language/cps/types.scm \ - language/cps/utils.scm \ - language/cps/verify.scm \ - language/cps/with-cps.scm \ - \ - language/tree-il.scm \ - language/tree-il/analyze.scm \ - language/tree-il/compile-bytecode.scm \ - language/tree-il/compile-cps.scm \ - language/tree-il/cps-primitives.scm \ - language/tree-il/debug.scm \ - language/tree-il/effects.scm \ - language/tree-il/eta-expand.scm \ - language/tree-il/fix-letrec.scm \ - language/tree-il/inlinable-exports.scm \ - language/tree-il/letrectify.scm \ - language/tree-il/optimize.scm \ - language/tree-il/peval.scm \ - language/tree-il/primitives.scm \ - language/tree-il/resolve-free-vars.scm \ - language/tree-il/spec.scm \ - \ - ice-9/and-let-star.scm \ - ice-9/arrays.scm \ - ice-9/atomic.scm \ - ice-9/binary-ports.scm \ - ice-9/boot-9.scm \ - ice-9/buffered-input.scm \ - ice-9/calling.scm \ - ice-9/command-line.scm \ - ice-9/common-list.scm \ - ice-9/control.scm \ - ice-9/copy-tree.scm \ - ice-9/curried-definitions.scm \ - ice-9/deprecated.scm \ - ice-9/documentation.scm \ - ice-9/eval-string.scm \ - ice-9/exceptions.scm \ - ice-9/expect.scm \ - ice-9/fdes-finalizers.scm \ - ice-9/format.scm \ - ice-9/ftw.scm \ - ice-9/futures.scm \ - ice-9/gap-buffer.scm \ - ice-9/getopt-long.scm \ - ice-9/hash-table.scm \ - ice-9/hcons.scm \ - ice-9/history.scm \ - ice-9/i18n.scm \ - ice-9/iconv.scm \ - ice-9/lineio.scm \ - ice-9/list.scm \ - ice-9/local-eval.scm \ - ice-9/ls.scm \ - ice-9/match.scm \ - ice-9/networking.scm \ - ice-9/null.scm \ - ice-9/occam-channel.scm \ - ice-9/optargs.scm \ - ice-9/peg.scm \ - ice-9/peg/cache.scm \ - ice-9/peg/codegen.scm \ - ice-9/peg/simplify-tree.scm \ - ice-9/peg/string-peg.scm \ - ice-9/peg/using-parsers.scm \ - ice-9/poe.scm \ - ice-9/poll.scm \ - ice-9/popen.scm \ - ice-9/ports.scm \ - ice-9/posix.scm \ - ice-9/pretty-print.scm \ - ice-9/q.scm \ - ice-9/r5rs.scm \ - ice-9/rdelim.scm \ - ice-9/receive.scm \ - ice-9/regex.scm \ - ice-9/runq.scm \ - ice-9/rw.scm \ - ice-9/safe-r5rs.scm \ - ice-9/safe.scm \ - ice-9/sandbox.scm \ - ice-9/save-stack.scm \ - ice-9/scm-style-repl.scm \ - ice-9/serialize.scm \ - ice-9/session.scm \ - ice-9/slib.scm \ - ice-9/stack-catch.scm \ - ice-9/streams.scm \ - ice-9/string-fun.scm \ - ice-9/suspendable-ports.scm \ - ice-9/textual-ports.scm \ - ice-9/threads.scm \ - ice-9/time.scm \ - ice-9/top-repl.scm \ - ice-9/unicode.scm \ - ice-9/vlist.scm \ - ice-9/weak-vector.scm \ - \ - language/brainfuck/parse.scm \ - language/brainfuck/compile-scheme.scm \ - language/brainfuck/compile-tree-il.scm \ - language/brainfuck/spec.scm \ - \ - language/bytecode.scm \ - language/bytecode/spec.scm \ - \ - language/ecmascript/tokenize.scm \ - language/ecmascript/parse.scm \ - language/ecmascript/impl.scm \ - language/ecmascript/base.scm \ - language/ecmascript/function.scm \ - language/ecmascript/array.scm \ - language/ecmascript/compile-tree-il.scm \ - language/ecmascript/spec.scm \ - \ - language/elisp/falias.scm \ - language/elisp/lexer.scm \ - language/elisp/parser.scm \ - language/elisp/bindings.scm \ - language/elisp/compile-tree-il.scm \ - language/elisp/runtime.scm \ - language/elisp/runtime/function-slot.scm \ - language/elisp/runtime/value-slot.scm \ - language/elisp/spec.scm \ - \ - language/scheme/compile-tree-il.scm \ - language/scheme/decompile-tree-il.scm \ - language/scheme/spec.scm \ - \ - language/value/spec.scm \ - \ - rnrs/base.scm \ - rnrs/conditions.scm \ - rnrs/control.scm \ - rnrs/enums.scm \ - rnrs/eval.scm \ - rnrs/exceptions.scm \ - rnrs/files.scm \ - rnrs/hashtables.scm \ - rnrs/lists.scm \ - rnrs/mutable-pairs.scm \ - rnrs/mutable-strings.scm \ - rnrs/programs.scm \ - rnrs/r5rs.scm \ - rnrs/sorting.scm \ - rnrs/syntax-case.scm \ - rnrs/unicode.scm \ - rnrs/arithmetic/bitwise.scm \ - rnrs/arithmetic/fixnums.scm \ - rnrs/arithmetic/flonums.scm \ - rnrs/bytevectors.scm \ - rnrs/io/simple.scm \ - rnrs/io/ports.scm \ - rnrs/records/inspection.scm \ - rnrs/records/procedural.scm \ - rnrs/records/syntactic.scm \ - rnrs.scm \ - \ - oop/goops.scm \ - oop/goops/active-slot.scm \ - oop/goops/composite-slot.scm \ - oop/goops/describe.scm \ - oop/goops/internal.scm \ - oop/goops/save.scm \ - oop/goops/stklos.scm \ - oop/goops/accessors.scm \ - oop/goops/simple.scm \ - \ - scheme/base.scm \ - scheme/case-lambda.scm \ - scheme/char.scm \ - scheme/complex.scm \ - scheme/cxr.scm \ - scheme/eval.scm \ - scheme/file.scm \ - scheme/inexact.scm \ - scheme/lazy.scm \ - scheme/load.scm \ - scheme/process-context.scm \ - scheme/r5rs.scm \ - scheme/read.scm \ - scheme/repl.scm \ - scheme/time.scm \ - scheme/write.scm \ - \ - scripts/compile.scm \ - scripts/disassemble.scm \ - scripts/display-commentary.scm \ - scripts/doc-snarf.scm \ - scripts/frisk.scm \ - scripts/generate-autoload.scm \ - scripts/help.scm \ - scripts/lint.scm \ - scripts/list.scm \ - scripts/punify.scm \ - scripts/read-scheme-source.scm \ - scripts/read-text-outline.scm \ - scripts/use2dot.scm \ - scripts/snarf-check-and-output-texi.scm \ - scripts/summarize-guile-TODO.scm \ - scripts/api-diff.scm \ - scripts/read-rfc822.scm \ - scripts/snarf-guile-m4-docs.scm \ - scripts/autofrisk.scm \ - scripts/scan-api.scm \ - \ - srfi/srfi-1.scm \ - srfi/srfi-2.scm \ - srfi/srfi-4.scm \ - srfi/srfi-4/gnu.scm \ - srfi/srfi-6.scm \ - srfi/srfi-8.scm \ - srfi/srfi-9.scm \ - srfi/srfi-9/gnu.scm \ - srfi/srfi-10.scm \ - srfi/srfi-11.scm \ - srfi/srfi-13.scm \ - srfi/srfi-14.scm \ - srfi/srfi-16.scm \ - srfi/srfi-17.scm \ - srfi/srfi-18.scm \ - srfi/srfi-19.scm \ - srfi/srfi-26.scm \ - srfi/srfi-27.scm \ - srfi/srfi-28.scm \ - srfi/srfi-31.scm \ - srfi/srfi-34.scm \ - srfi/srfi-35.scm \ - srfi/srfi-37.scm \ - srfi/srfi-38.scm \ - srfi/srfi-41.scm \ - srfi/srfi-42.scm \ - srfi/srfi-43.scm \ - srfi/srfi-39.scm \ - srfi/srfi-45.scm \ - srfi/srfi-60.scm \ - srfi/srfi-64.scm \ - srfi/srfi-67.scm \ - srfi/srfi-69.scm \ - srfi/srfi-71.scm \ - srfi/srfi-88.scm \ - srfi/srfi-98.scm \ - srfi/srfi-111.scm \ - srfi/srfi-171.scm \ - srfi/srfi-171/gnu.scm \ - srfi/srfi-171/meta.scm \ - \ - statprof.scm \ - \ - system/base/pmatch.scm \ - system/base/syntax.scm \ - system/base/compile.scm \ - system/base/optimize.scm \ - system/base/language.scm \ - system/base/lalr.scm \ - system/base/message.scm \ - system/base/target.scm \ - system/base/types.scm \ - system/base/types/internal.scm \ - system/base/ck.scm \ - \ - system/foreign.scm \ - system/foreign-library.scm \ - system/foreign-object.scm \ - \ - system/repl/debug.scm \ - system/repl/error-handling.scm \ - system/repl/common.scm \ - system/repl/command.scm \ - system/repl/repl.scm \ - system/repl/server.scm \ - system/repl/coop-server.scm \ - \ - system/vm/assembler.scm \ - system/vm/coverage.scm \ - system/vm/debug.scm \ - system/vm/disassembler.scm \ - system/vm/dwarf.scm \ - system/vm/elf.scm \ - system/vm/frame.scm \ - system/vm/inspect.scm \ - system/vm/linker.scm \ - system/vm/loader.scm \ - system/vm/program.scm \ - system/vm/trace.scm \ - system/vm/trap-state.scm \ - system/vm/traps.scm \ - system/vm/vm.scm \ - \ - system/syntax.scm \ - \ - system/xref.scm \ - \ - sxml/apply-templates.scm \ - sxml/fold.scm \ - sxml/match.scm \ - sxml/simple.scm \ - sxml/ssax/input-parse.scm \ - sxml/ssax.scm \ - sxml/transform.scm \ - sxml/xpath.scm \ - \ - texinfo.scm \ - texinfo/docbook.scm \ - texinfo/html.scm \ - texinfo/indexing.scm \ - texinfo/string-utils.scm \ - texinfo/plain-text.scm \ - texinfo/reflection.scm \ - texinfo/serialize.scm \ - \ - web/client.scm \ - web/http.scm \ - web/request.scm \ - web/response.scm \ - web/server.scm \ - web/server/http.scm \ - web/uri.scm - -ELISP_SOURCES = \ - language/elisp/boot.el - -NOCOMP_SOURCES = \ - ice-9/match.upstream.scm \ - ice-9/psyntax.scm \ - ice-9/read.scm \ - ice-9/r6rs-libraries.scm \ - ice-9/r7rs-libraries.scm \ - ice-9/quasisyntax.scm \ - srfi/srfi-42/ec.scm \ - srfi/srfi-64/testing.scm \ - srfi/srfi-67/compare.scm \ - system/base/lalr.upstream.scm \ - system/repl/describe.scm \ - sxml/sxml-match.ss \ - sxml/upstream/SSAX.scm \ - sxml/upstream/SXML-tree-trans.scm \ - sxml/upstream/SXPath-old.scm \ - sxml/upstream/assert.scm \ - sxml/upstream/input-parse.scm +# Don't build .go files here. +nobase_noinst_DATA = ## ice-9/test.scm is not currently installed. EXTRA_DIST += \ diff --git a/module/system/base/optimize.scm b/module/system/base/optimize.scm index a0eb6edb6..8c36cca07 100644 --- a/module/system/base/optimize.scm +++ b/module/system/base/optimize.scm @@ -1,6 +1,6 @@ ;;; Optimization flags -;; Copyright (C) 2018, 2020, 2021 Free Software Foundation, Inc. +;; Copyright (C) 2018, 2020-2022 Free Software Foundation, Inc. ;;;; This library is free software; you can redistribute it and/or ;;;; modify it under the terms of the GNU Lesser General Public @@ -28,14 +28,14 @@ (match lang-name ('tree-il '((#:cps? 2) - (#:resolve-free-vars? 1) + (#:resolve-free-vars? 2) (#:resolve-primitives? 1) (#:expand-primitives? 1) (#:letrectify? 2) (#:seal-private-bindings? 3) (#:partial-eval? 1) (#:eta-expand? 2) - (#:inlinable-exports? 1) + (#:inlinable-exports? 2) (#:cross-module-inlining? 2))) ('cps '( ;; (#:split-rec? #t) diff --git a/stage0/Makefile.am b/stage0/Makefile.am new file mode 100644 index 000000000..12029fb45 --- /dev/null +++ b/stage0/Makefile.am @@ -0,0 +1,36 @@ +## Process this file with automake to produce Makefile.in. +## +## Copyright (C) 2009, 2010, 2011, 2012, 2013, +## 2014, 2015, 2018, 2020, 2022 Free Software Foundation, Inc. +## +## This file is part of GUILE. +## +## GUILE is free software; you can redistribute it and/or modify it +## under the terms of the GNU Lesser General Public License as +## published by the Free Software Foundation; either version 3, or +## (at your option) any later version. +## +## GUILE 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 Lesser General Public License for more details. +## +## You should have received a copy of the GNU Lesser General Public +## License along with GUILE; see the file COPYING.LESSER. If not, +## write to the Free Software Foundation, Inc., 51 Franklin Street, +## Fifth Floor, Boston, MA 02110-1301 USA + + +GUILE_WARNINGS = -W0 +GUILE_OPTIMIZATIONS = -O1 +GUILE_BOOTSTRAP_STAGE = stage0 + +include $(top_srcdir)/am/bootstrap.am + +# We must build the evaluator first, so that we can be sure to control +# the stack. Then, we build the syntax-case macro expander before the +# rest, in order to speed up parallel builds. +ice-9/psyntax-pp.go: | ice-9/eval.go + +$(filter-out ice-9/eval.go ice-9/psyntax-pp.go, $(GOBJECTS)): | \ + ice-9/psyntax-pp.go diff --git a/stage1/Makefile.am b/stage1/Makefile.am new file mode 100644 index 000000000..a70bdd59f --- /dev/null +++ b/stage1/Makefile.am @@ -0,0 +1,28 @@ +## Process this file with automake to produce Makefile.in. +## +## Copyright (C) 2009, 2010, 2011, 2012, 2013, +## 2014, 2015, 2018, 2020, 2022 Free Software Foundation, Inc. +## +## This file is part of GUILE. +## +## GUILE is free software; you can redistribute it and/or modify it +## under the terms of the GNU Lesser General Public License as +## published by the Free Software Foundation; either version 3, or +## (at your option) any later version. +## +## GUILE 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 Lesser General Public License for more details. +## +## You should have received a copy of the GNU Lesser General Public +## License along with GUILE; see the file COPYING.LESSER. If not, +## write to the Free Software Foundation, Inc., 51 Franklin Street, +## Fifth Floor, Boston, MA 02110-1301 USA + + +GUILE_WARNINGS = -W1 +GUILE_OPTIMIZATIONS = -O2 -Ono-cross-module-inlining +GUILE_BOOTSTRAP_STAGE = stage1 + +include $(top_srcdir)/am/bootstrap.am diff --git a/stage2/Makefile.am b/stage2/Makefile.am new file mode 100644 index 000000000..aefe91f00 --- /dev/null +++ b/stage2/Makefile.am @@ -0,0 +1,31 @@ +## Process this file with automake to produce Makefile.in. +## +## Copyright (C) 2009, 2010, 2011, 2012, 2013, +## 2014, 2015, 2018, 2020, 2022 Free Software Foundation, Inc. +## +## This file is part of GUILE. +## +## GUILE is free software; you can redistribute it and/or modify it +## under the terms of the GNU Lesser General Public License as +## published by the Free Software Foundation; either version 3, or +## (at your option) any later version. +## +## GUILE 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 Lesser General Public License for more details. +## +## You should have received a copy of the GNU Lesser General Public +## License along with GUILE; see the file COPYING.LESSER. If not, +## write to the Free Software Foundation, Inc., 51 Franklin Street, +## Fifth Floor, Boston, MA 02110-1301 USA + + +GUILE_WARNINGS = -W1 +GUILE_OPTIMIZATIONS = -O2 +GUILE_BOOTSTRAP_STAGE = stage2 + +include $(top_srcdir)/am/bootstrap.am + +ccachedir = $(pkglibdir)/$(GUILE_EFFECTIVE_VERSION)/ccache +nobase_ccache_DATA = $(GOBJECTS)