summaryrefslogtreecommitdiff
path: root/prebuilt/Makefile.am
diff options
context:
space:
mode:
authorAndy Wingo <wingo@pobox.com>2016-01-29 10:21:44 +0100
committerAndy Wingo <wingo@pobox.com>2016-01-29 10:21:44 +0100
commiteccdeb6cc6c164ea10160fafbd276b6dc5e9b73e (patch)
tree2e31767aafb05352db514563b003fff9991c3dfa /prebuilt/Makefile.am
parente4be4aea3491be954da25b8356e97c0fe60f98f9 (diff)
downloadguile-eccdeb6cc6c164ea10160fafbd276b6dc5e9b73e.tar.gz
Distribute prebuilt bootstraps for common hosts
* am/bootstrap.am: New file, factored out of bootstrap/Makefile.am. * bootstrap/Makefile.am: Use bootstrap.am. * prebuilt/Makefile.am: * prebuilt/i686-pc-linux-gnu/Makefile.am: * prebuilt/mips-unknown-linux-gnu/Makefile.am: * prebuilt/x86_64-unknown-linux-gnu/Makefile.am: New files. * configure.ac: Output the prebuilt/ makefiles. * Makefile.am: Descend into prebuilt/ when making dist. * meta/uninstalled-env.in: Arrange to put prebuilt/ in the beginning of the GUILE_LOAD_COMPILED_PATH. Also fix a case where bootstrap/ wasn't being correctly added to the load path.
Diffstat (limited to 'prebuilt/Makefile.am')
-rw-r--r--prebuilt/Makefile.am56
1 files changed, 56 insertions, 0 deletions
diff --git a/prebuilt/Makefile.am b/prebuilt/Makefile.am
new file mode 100644
index 000000000..b0a24d023
--- /dev/null
+++ b/prebuilt/Makefile.am
@@ -0,0 +1,56 @@
+## Process this file with automake to produce Makefile.in.
+##
+## Copyright (C) 2016 Free Software Foundation, Inc.
+##
+## This file is part of GNU Guile.
+##
+## GNU 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.
+##
+## GNU 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 GNU 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 Scheme is mostly written in Guile Scheme. Its compiler is
+# written in Guile Scheme, and its interpreter too. However, it is not
+# bootstrapped from itself: Guile includes a minimal interpreter written
+# in C as well which can load the compiler, enough to compile the
+# interpreter written in Scheme. That compiled interpreter written in
+# Scheme is then used to compile the rest of Guile, including the
+# compiler itself.
+#
+# The problem is, this process takes a long time, and for people
+# installing Guile from source, it's their first experience of Guile: an
+# hour-long bootstrap. It's not the nicest experience. To avoid this,
+# in our tarballs we pre-build object files for the essential parts of
+# the compiler.
+#
+# In the future we will do native compilation and so we will need to
+# precompile object files for all common host types. Still, since we
+# use ELF everywhere, there will be many host types whose compiled files
+# are the same: because Guile incorporates its own linker and loader for
+# compiled Scheme files, any AArch64 machine, for example, is going to
+# have the same compiled files. So, for the variants that will be the
+# same, we compile one target triple, and symlink the similar targets to
+# that directory.
+#
+# The current situation though is that we compile to bytecode, and there
+# are only four variants of that bytecode: big- or little-endian, and
+# 32- or 64-bit. The strategy is the same, only that now
+# arm64-unknown-linux-gnu will link to x86_64-unknown-linux-gnu, as they
+# have the same word size and endianness. A pending issue to resolve is
+# how this wil deal with architectures where longs are 32 bits and
+# pointers are 64 bits; we'll let the x32 people deal with that.
+
+SUBDIRS = \
+ x86_64-unknown-linux-gnu \
+ i686-pc-linux-gnu \
+ mips-unknown-linux-gnu