Building the contribs doesn't need an absolute pathname for the source
tree; a relative pathname will do.
(Further, calling the environment variable SBCL_PWD is peculiarly
misleading in this context, since it's not the PWD of most processes
involved in make-target-contrib.sh; instead, it's a constant name for
the top-level source directory. In the hope of maximal clarity,
renamed the environment variable to SBCL_TOP, and SBCL-TOP in Lisp.)
Add the new feature sb-linkable-runtime, that depends on sb-dynamic-core,
the sbcl build will create a file sbcl.o or libsbcl.a that you can link
with additional other object files and libraries to deliver your applications
as a single executable (after combining with a core file) that contains
whatever statically linked C libraries you need as extensions.
CFFI-toolchain and Bazel will be know how to use this features.
Support this feature on Linux, macOS and Windows, on x86 and x86-64.
Dump the parameters to compile C code and link it into a file sbcl.mk.
This new file will be included even if sb-linkable-runtime isn't present,
so CFFI and other software will not have to guess with what compiler and
what options to build dynamically linkable extensions.
Note that without a sb-linkable-runtime, SBCL can still dlopen the C code, but
then you need at least two files to deliver an application with non-Lisp code,
and that doesn't work if the code is provided as a *.a or *.o file
(not a *.so) compiled without -fPIC.
Fix https://bugs.launchpad.net/sbcl/+bug/1500628 better than the previous
attempt, which was reverted in commit a61d893a7f.
https://bugs.launchpad.net/sbcl/+bug/1500628
The purpose of this is that you can build a program with C code and
other object files at link time. Without this change you have to
dlopen the C code from a running SBCL program. That doesn't work if
you need to link statically, only have a *.a or *.o file (not a *.so)
and is more fragile.
Patch by Fare/Tunes.
Everything has moved, which led the binary-distribution script not to
include test-passed files, and the install script to look for them in
the wrong place anyway.
Also, move contrib output to obj/sbcl-home/, asdf cache to obj/asdf-cache/
Update sb-grovel and other contribs and their tests for asdf3.
Fixes lp#1132254.
Based on patches by Daniel Herring:
* Simple --option and --option=arg command-line parser in make.sh.
* Supported options:
** --xc-host=<command> to specify XC host option instead of a
positional argument. (Incompatible change!)
** --prefix=<path> to specify a non-standard install location for
both build and install.sh.
Addresses https://bugs.launchpad.net/sbcl/+bug/550889
** --help
Semi-related minor cleanup:
* Use --no-userinit and --no-sysinit instead of version.lisp-expr as
the default inits for self-building: they have been around long
enough now that it should not stop anyone from building, and makes
for a somewhat less magical looking "//Build options: ..." line in
the build log.
... add some light css styling
... also create single-file manual for easier grepping
... unilaterally deciding on light blue as our new corporate colour
* Imaginary parts were messed up on 64 bit platforms when
filling arrays of (COMPLEX SINGLE-FLOAT). Thanks to Paul Khuong.
* Also delay the transform of FILL till constraint propagation has
run, to get the constant argument form MAKE-ARRAY in properly.
* ...and eradicate remaining references to the SUPPORT file.
Fix regressions:
* Installation was broken with non-bash /bin/sh (thanks to
Niimi Satoshi for the patch)
* DEFAULT-EXTERNAL-FORMAT would now try to print a warning for
an invalid external format before streams had been initialized,
causing an infinite error loop (reported by Hannu Koivisto).
Temporary fix is just not printing the warning, a better fix
will wait until after the freeze.
* Also stop autodetecting the external format from the locale
on non-unicode builds. Having a default external format that's
incompatible with CHARACTER doesn't seem very sensible, especially
now that the external formats are also used for SB-ALIEN:C-STRING
instead of just streams.
* Added "free software & no warranty" summary to top of COPYING.
* tools-for-build/rtf.lisp turns COPYING into License.rtf needed
for the installer.
* tools-for-build/wxs.lisp generates the XML from which
the installer is built.
* refactor good-for-lisp pathname logic from make-target-contrib.sh
to sbcl-pwd.sh.
* make-windows-installer.sh builds sbcl.msi into output/,
assuming WiX (2.0) is installed in $PROGRAMFILES/WiX or
$WIX_PATH.
The installer installs sbcl.exe, sbcl.core, and contribs
into $PROGRAMFILES/Steel Bank Common Lisp/<sbcl-version>/
by default, though the location is configurable.
.lisp and .fasl files are associated with the installed
SBCL, action being to start SBCL and load the file.
The installation directory is added to PATH.
SBCL_HOME is set to the installation directory.
A shortcut is added to the start-menu. The shortcut refers
to the core explicitly, and will continue to work even if
a newer SBCL is installed.
install.sh on win32
- installs under c:/Program Files/sbcl, or wherever your Windows
installation believes programs should go
- need to set SBCL_HOME accordingly (e.g. to "c:/Program
Files/sbcl/lib/sbcl") to run it
* Check for correct "expand" in canonicalize-whitespace, and skip
canonicalization if it doesn't seem right. (Windows "expand" is
something quite different.)
* RUN-PROGRAM now always returns a process structure, which reports
the exit-code of the process when :WAIT was true. :WAIT nil
process-structures still keep their :RUNNING status indefinitely
on Windows, though.
* FIND-EXECUTABLE-IN-SEARCH-PATH actually searches the path, and adds
"exe" as :TYPE if :TYPE is missing on Windows.
* ASDF:RUN-SHELL-COMMAND searches for Bourne-shell on Windows, as there
is no default location.
* SB-GROVEL directly runs gcc and the groveler instead of indirecting
via shell, and the groveler directly writes to the lisp-file instead
of via stdout and shell redirection.
* Hack SB-POSIX till it builds and passes all applicable tests on Windows.
Mostly this involved plenty of #-win32, but a few tests needed to
be adjusted for the delication Microsoft constitution.
* Implement COPY-STREAM in ASDF-INSTALL so that it doesn't have to
depend on SB-EXECUTABLE.
* Take the .exe suffix into account when installing over an old SBCL
on MSYS.
* Adjust UNPARSE-NATIVE-WIN32-NAMESTRING slightly: Windows OS functions
like stat don't like to have directory names ending with a slash.
This is good enough to run unpatched Slime with *COMMUNICATION-STYLE*
NIL, and build & pass tests with all contribs except SB-SIMPLE-STREAMS.
Change the way we find our asdf-based contribs, using a custom
*system-definition-search-function* rather than symlinks.
... $SBCL_HOME/systems directory can go away;
... various changes in build and install scripts.
Merge patch from James Bielman fixing self-build under Win32.
... a little bit of an accident ensued; I ran
canonicalize-whitespace on .sh files, which seemed to
work (except on wc.sh) until it scribbled all over
make.sh, confusing the shell interpreter utterly.
... the resulting files have built the system, nevertheless.
* On some systems we were installing the HTML docs
in ever deeper directories on every install. Make
it not so, and try to stick to commandline flags
actually specified in SUV3. Reported by Stefan Scholl.
INSTALL MORE DOCUMENTATION
... Clean up INSTALL
... Add "SEE ALSO" section to sbcl.1, and fold the DOCUMENTATION
section there. Also mention Slime in addition to ilisp,
and drop the mention of shell mode and package confusion.
... Make install.sh install the manual, BUGS, SUPPORT, CREDITS,
COPYING and NEWS as well, and make it tell where it put
everything. Don't install sbcl-asdf-install.1.
Miscellaneous fixes
... fix bad behaviour on install.sh on missing directories (reported
Zach Beane sbcl-devel 2004-01-16)
... fix PUSHNEW docstring (patch VJA sbcl-devel 2003-12-30)
... call PACK-BEFORE-GC-HOOK by hand in make-target-2.sh, to get
core sizes down a bit (2Mb on x86, 6Mb on PPC). We're still
awaiting a proper fix, though.
"brown paper bag" bug fix: initialise the thread->state slot
when it's created, to fix the most obvious threading problem
Search order for sbcl.core and sbclrc simplified.
Manual page edits: updates for contrib/, threading, platforms,
new sbcl.core search order, etc
Make "debugger invoked" message print thread id
asdf-install contrib: new UNINSTALL function deletes a
package's files.
New installation variable $(BUILD_ROOT) for use by package
installers that want to install into a fake root directory
A full and final answer[*] to all the people who keep asking
for slightly tangential software to be added to contrib: to
wit, a contrib module to automate the downloading and
installing of packages that are _not_ part of contrib.
* (require 'asdf-install)
* (asdf-install:install 'xlunit)
or
$ sbcl-asdf-install xlunit
See contrib/asdf-install/README for more details and scary
security-related muttering.
Also added a :INITIAL-FUNCTION to SB-EXECUTABLE:MAKE-EXECUTABLE
so that files don't have to be written such that the
application starts as soon as they're loaded
[*] Ha!
Improvements to build technology inspired by Nikodemus Siivola
(sbcl-devel 2003-07-20):
... centralize GNU Make finding functionality, and use it
everywhere;
... remove bashism from slam.sh.
Add :force t to asdf-dependent contrib modules
Change install.sh to rename old binary/core files instead of
copying them - does not kill running SBCL programs in such a
gruseome way
Create $SBCL_HOME/site-systems in install.sh
... OK, that's IT, I am DONE for 0.7.13
Eleventh hour accommodation to Solaris sh(1)
... export FOO=bar -> FOO=bar; export FOO
... more test -e -> test -f
... b=${1:?foo bar} -> b=${1:?"foo bar"}
... yay for portable shell programmes.