1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-04-29 19:30:36 +02:00

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.
This commit is contained in:
Andy Wingo 2016-01-29 10:21:44 +01:00
parent e4be4aea34
commit eccdeb6cc6
9 changed files with 308 additions and 143 deletions

56
prebuilt/Makefile.am Normal file
View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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