diff options
author | Andy Wingo <wingo@pobox.com> | 2016-01-29 10:21:44 +0100 |
---|---|---|
committer | Andy Wingo <wingo@pobox.com> | 2016-01-29 10:21:44 +0100 |
commit | eccdeb6cc6c164ea10160fafbd276b6dc5e9b73e (patch) | |
tree | 2e31767aafb05352db514563b003fff9991c3dfa /prebuilt | |
parent | e4be4aea3491be954da25b8356e97c0fe60f98f9 (diff) |
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')
-rw-r--r-- | prebuilt/Makefile.am | 56 | ||||
-rw-r--r-- | prebuilt/i686-pc-linux-gnu/Makefile.am | 25 | ||||
-rw-r--r-- | prebuilt/mips-unknown-linux-gnu/Makefile.am | 25 | ||||
-rw-r--r-- | prebuilt/x86_64-unknown-linux-gnu/Makefile.am | 25 |
4 files changed, 131 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 diff --git a/prebuilt/i686-pc-linux-gnu/Makefile.am b/prebuilt/i686-pc-linux-gnu/Makefile.am new file mode 100644 index 000000000..6b5683498 --- /dev/null +++ b/prebuilt/i686-pc-linux-gnu/Makefile.am @@ -0,0 +1,25 @@ +## 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_TARGET = $(shell basename $(subdir)) +GUILE_BUILD_TAG = PREBUILD $(GUILE_TARGET) + +include $(top_srcdir)/am/bootstrap.am diff --git a/prebuilt/mips-unknown-linux-gnu/Makefile.am b/prebuilt/mips-unknown-linux-gnu/Makefile.am new file mode 100644 index 000000000..6b5683498 --- /dev/null +++ b/prebuilt/mips-unknown-linux-gnu/Makefile.am @@ -0,0 +1,25 @@ +## 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_TARGET = $(shell basename $(subdir)) +GUILE_BUILD_TAG = PREBUILD $(GUILE_TARGET) + +include $(top_srcdir)/am/bootstrap.am diff --git a/prebuilt/x86_64-unknown-linux-gnu/Makefile.am b/prebuilt/x86_64-unknown-linux-gnu/Makefile.am new file mode 100644 index 000000000..6b5683498 --- /dev/null +++ b/prebuilt/x86_64-unknown-linux-gnu/Makefile.am @@ -0,0 +1,25 @@ +## 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_TARGET = $(shell basename $(subdir)) +GUILE_BUILD_TAG = PREBUILD $(GUILE_TARGET) + +include $(top_srcdir)/am/bootstrap.am |