Skip to content

Commit 452908d

Browse files
author
Barak A. Pearlmutter
committed
Merge branch 'devel'
2 parents a36cee0 + a596c12 commit 452908d

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

47 files changed

+392
-550
lines changed

.cvsignore

Lines changed: 0 additions & 1 deletion
This file was deleted.

.gitignore

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,17 @@
1-
build-stamp
1+
.deps/
2+
.dirstamp
3+
/INSTALL
4+
/aclocal.m4
5+
/autom4te.cache/
6+
/compile
7+
/config.h
8+
/config.h.in
9+
/config.log
10+
/config.status
11+
/configure
12+
/depcomp
13+
/install-sh
14+
/missing
15+
/stamp-h1
16+
Makefile
17+
Makefile.in

src/CREDITS renamed to AUTHORS

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,3 +43,12 @@ D: helped alex spec out his emulator mods
4343
D: perceptive bug-sniffer and system tester: found make-lambda %full-gc bug
4444
D: ported SLIB and GAMBIT-benchmarks to Oaklisp
4545
D: scheme-locale mods
46+
47+
N: Blake McBride
48+
49+
W: http://blake.mcbride.name
50+
D: Wrote the OaklispSummary document.
51+
D: Build system updates and documentation.
52+
D: Misc bug reports and bug fixes
53+
D: Various tweaks and enhancements.
54+
D: Motivation.

BUILD.txt

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
Build instructions for Oaklisp
2+
==============================
3+
4+
The build system uses autotools (autoconf/automake) so a simple build
5+
would be:
6+
7+
autoreconf --install (to install the autotools support files)
8+
./configure (to configure the system)
9+
make (to compile everything)
10+
make install (to install everything)
11+
12+
For further details read INSTALL generated by running autoreconf.
13+
14+
Bootstrapping
15+
=============
16+
17+
The only unusual aspect here is that Oaklisp is written in Oaklisp,
18+
i.e., is self-hosting. This causes a bootstrap issue. If you already
19+
have Oaklisp installed, you can just use that: in the above use
20+
21+
make OAK=/usr/local/bin/oaklisp
22+
23+
and that's that.
24+
25+
If you don't have Oaklisp already installed, read on.
26+
27+
There are only two files required to actually run Oaklisp:
28+
29+
oaklisp the executable / emulator / virtual machine
30+
oakworld.bin pre-built oaklisp (read in by the executable)
31+
32+
The file oakworld.bin contains the pre-built, pre-compiled Oaklisp
33+
system: the parts that are written in Oaklisp itself. This means you
34+
need an existing oakworld.bin in order to run "oaklisp" in order to
35+
build a new oakworld.bin. Oaklisp *cannot* run without an existing
36+
oakworld.bin file. You can however build the executable "oaklisp"
37+
(which is written in C) without a working Oaklisp. So all you really
38+
need is oakworld.bin. The executable "oaklisp" will look for
39+
oakworld.bin at a compile-time-specified location, but has an option
40+
to look elsewhere. You may need to pass this option to the compiled
41+
emulator at build time, e.g.,
42+
43+
make OAKWORLDFLAGS="--world $(pwd)/prebuilt/src/world/oakworld.bin"
44+
45+
or
46+
47+
make OAKWORLDFLAGS="--world /usr/local/lib/oaklisp/oakworld.bin"
48+
49+
CPU Architecture Issues
50+
=======================
51+
52+
Oaklisp is sensitive to the endianness of the CPU
53+
<http://en.wikipedia.org/wiki/Endianness>. The oakworld.bin included
54+
in the git branch containing a prebuilt world, or available for
55+
download as a separate file, is for a little-indian architecture. x86
56+
and x86-64 processors are little-endian. Oaklisp can be made to cross
57+
build an oakworld.bin for a different-endian architecture.
58+
59+
The executable "oaklisp" currently only works in 32-bit mode. It can
60+
be built as a 32-bit executable on 64-bit machines, assuming that
61+
32-bit development libraries are available. (These are available on
62+
most systems, sometimes as an optional package. E.g., on Debian or
63+
debian-derived distributions like Ubuntu, the correct package is
64+
gcc-multilib.) Compiling with GCC on an x86_64 aka amd64 architecture
65+
machine one should use the -m32 which builds an i386 architecture
66+
executable. This should be added by default by the build system. For
67+
the adventurous -mx32, which uses the x86_64 instruction set with
68+
32-bit pointers, also works provided that x32 kernel support is
69+
enabled and the x32 development files are available.

ChangeLog

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
2015-03-03 Barak A. Pearlmutter <[email protected]>
2+
3+
* autotools build system
4+
* rubber to build LaTeX documentation
5+
* prebuilt world on separate git branch
6+
* ChangeLog file created for automake happiness
7+
* AUTHORS file renamed from src/CREDITS for automake happiness

Makefile renamed to Makefile.am

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,7 @@
1414
# or from the Free Software Foundation, 59 Temple Place - Suite 330,
1515
# Boston, MA 02111-1307, USA
1616

17-
.PHONY: all install clean
18-
all install clean:
19-
$(MAKE) -C src $@
20-
$(MAKE) -C doc $@
21-
$(MAKE) -C man $@
17+
SUBDIRS = src doc
18+
19+
man_MANS = man/man1/oaklisp.1
20+
doc_DATA = README AUTHORS COPYING BUILD.txt ChangeLog NEWS

NEWS

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Build system switched to autotools.

README

Lines changed: 28 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -1,57 +1,37 @@
1-
This is the Oaklisp source distribution.
1+
This is an Oaklisp source distribution.
22

3-
Oaklisp's home is:
4-
http://oaklisp.alioth.debian.org/
3+
Oaklisp is a portable lisp interpreter / compiler for the Oaklisp
4+
dialect of lisp.
55

6-
Old releases are still at:
7-
See http://www-bcl.cs.may.ie/~barak/oaklisp/ for updates.
6+
Oaklisp is an object-oriented dialect of lisp sharing the standard
7+
lisp syntax, including common lisp style macros, first class types,
8+
multiple inheritance, and multiple namespaces (packages). Oaklisp is
9+
also a Lisp-1 dialect meaning functions and variables share the same
10+
namespace (like Scheme).
811

12+
Project homepage(s)
13+
https://alioth.debian.org/projects/oaklisp/ (main homepage)
14+
https://github.com/barak/oaklisp (collaborative development)
15+
http://www.bcl.hamilton.ie/~barak/oaklisp/ (ancient history)
916

10-
*** GETTING IT WORKING ***
17+
The compiler compiles Oaklisp source code into byte-code for the
18+
included Oaklisp emulator / virtual machine. The implmentation
19+
is described in the included documentation, and also in
1120

12-
Oaklisp should be straightforward to install on a virgin machine.
13-
You need to compile some C source to make the emulator:
21+
Kevin J. Lang and Barak A. Pearlmutter. Oaklisp: an object-oriented
22+
Scheme with first class types. In OOPSLA-86, pages 30–7. doi:
23+
10.1145/960112.28701. Special issue of ACM SIGPLAN Notices 21(11).
1424

15-
make -C src/emulator install
25+
Kevin J. Lang and Barak A. Pearlmutter. Oaklisp: an object-oriented
26+
dialect of Scheme. Lisp and Symbolic Computation, 1(1):39–51, May
27+
1988.
1628

17-
If you want the emulator to look for its world somewhere else, add eg
18-
CPPFLAGS='-DFAST -DDEFAULT_WORLD=\"/usr/local/lib/oaklisp/oakworld.bin\"'
29+
Barak A. Pearlmutter. Garbage collection with pointers to single
30+
cells. Communications of the ACM, 39(12):202–6, December 1996. URL
31+
http://www.acm.org/cacm/extension/pearlmt.pdf.
1932

20-
Then you need to put the recompiled binary world it will use in place:
33+
Barak A. Pearlmutter and Kevin J. Lang. The implementation of
34+
Oaklisp. In Peter Lee, editor, Topics in Advanced Language
35+
Implementation, pages 189–215. MIT Press, 1991.
2136

22-
cp -a src/world/oakworld.bin /usr/local/lib/oaklisp/
23-
24-
(You can't just use "make -C src/world install" because a new world
25-
can't be built until Oaklisp is working, which requires a world to be
26-
installed. That's why the source distribution includes a pre-built
27-
oakworld.bin.)
28-
29-
Now invoking /usr/local/bin/oaklisp should land you in an Oaklisp
30-
read-eval-print loop.
31-
32-
33-
*** INSTALLING DOCUMENTATION ***
34-
35-
Probably you should
36-
37-
make -C man install
38-
39-
The language and implementation manuals are in doc/lang/lang.ps and
40-
doc/lim/lim.ps. They are latex source but include working Makefiles.
41-
You should be able to build and install them with
42-
43-
make -C doc install
44-
45-
46-
*** BUILDING A NEW WORLD ***
47-
48-
Note that Oaklisp is written in Oaklisp, so you must have a working
49-
Oaklisp before you can rebuild the Oaklisp world, which is done via
50-
51-
make -C src/world
52-
53-
In fact, you should be able to rebuild and reinstall *everything* via
54-
55-
make install
56-
57-
in this top-level directory.
37+
See BUILD.txt for instructions on how to build the system.

configure.ac

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
# -*- Autoconf -*-
2+
# Process this file with autoconf to produce a configure script.
3+
4+
# This file is part of Oaklisp.
5+
#
6+
# This program is free software; you can redistribute it and/or modify
7+
# it under the terms of the GNU General Public License as published by
8+
# the Free Software Foundation; either version 2 of the License, or
9+
# (at your option) any later version.
10+
#
11+
# This program is distributed in the hope that it will be useful,
12+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
13+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14+
# GNU General Public License for more details.
15+
#
16+
# The GNU GPL is available at http://www.gnu.org/licenses/gpl.html
17+
# or from the Free Software Foundation, 59 Temple Place - Suite 330,
18+
# Boston, MA 02111-1307, USA
19+
20+
# Prologue
21+
AC_PREREQ([2.69])
22+
AC_INIT([Oaklisp],[1.3.4],[[email protected]],[oaklisp],[http://oaklisp.alioth.debian.org/])
23+
AC_CONFIG_SRCDIR([src/emulator/oaklisp.c])
24+
AC_CONFIG_HEADERS([config.h])
25+
AM_INIT_AUTOMAKE([subdir-objects -Wall])
26+
27+
# Checks for options
28+
dnl --enable-threads
29+
dnl --enable-ndebug
30+
31+
# No double there is a "right" way of doing this.
32+
AM_CONDITIONAL(USE_M32, [test "$(uname --machine)" = "x86_64"])
33+
34+
# Checks for programs.
35+
AC_PROG_CC
36+
AC_PROG_INSTALL
37+
AC_CHECK_PROGS([INDENT],[indent],[true])
38+
AC_CHECK_PROGS([RUBBER],[rubber],[false])
39+
40+
# Checks for libraries.
41+
AC_SEARCH_LIBS([pthread_create],[pthread])
42+
43+
# Checks for header files.
44+
AC_CHECK_HEADERS([stddef.h stdlib.h string.h sys/time.h unistd.h])
45+
46+
# Checks for typedefs, structures, and compiler characteristics.
47+
AX_CFLAGS_WARN_ALL
48+
AC_CHECK_HEADER_STDBOOL
49+
AC_C_INLINE
50+
AC_TYPE_INT16_T
51+
AC_TYPE_INT32_T
52+
AC_TYPE_INT64_T
53+
AC_TYPE_INT8_T
54+
AC_TYPE_SIZE_T
55+
56+
# Checks for library functions.
57+
AC_FUNC_MALLOC
58+
AC_FUNC_REALLOC
59+
AC_CHECK_FUNCS([gettimeofday strerror])
60+
61+
# Epilogue
62+
AC_CONFIG_FILES([Makefile doc/Makefile src/Makefile src/world/Makefile])
63+
AC_OUTPUT

debian/.gitignore

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1-
/*.log
21
/*.debhelper
2+
/*.log
33
/*.substvars
4+
/autoreconf.after
5+
/autoreconf.before
46
/files
5-
/oaklisp
6-
/oaklisp-doc
7-
/oaklisp-doc.files
8-
/tmp
9-
substvars
7+
/oaklisp-doc/
8+
/oaklisp/
9+
/tmp/

debian/README-BUILDING.Debian

Lines changed: 0 additions & 38 deletions
This file was deleted.

debian/changelog

Lines changed: 20 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,23 @@
1-
oaklisp (1.3.3-6) unstable; urgency=low
2-
3-
* priority option per override (debian/control)
4-
5-
-- Barak A. Pearlmutter <[email protected]> Mon, 31 Jan 2011 18:38:53 +0000
1+
oaklisp (1.3.4-1) unstable; urgency=low
2+
3+
* debian/control: priority option per override (debian/control)
4+
* debian/control: bump debian policy
5+
* debian/rules: bump to dh 9
6+
* debian/control: build dependency on gcc-multiarch for amd64
7+
* debian/control: update vcs browser url (closes: #528298)
8+
* debian/control: longer descriptions
9+
* new upstream version
10+
* adapt to new autotool upstream build scripts
11+
- debian/rules: dh --with autoreconf
12+
- debian/control: build dependency on rubber for LaTeX
13+
- debian/control: remove build dependency on ghostscript
14+
- debian/control: build depend on autoconf-archive for AX_CFLAGS_WARN_ALL
15+
- debian/rules: use prebuilt world or installed oaklisp (closes: #534078)
16+
- debian/README-BUILDING.Debian: remove, see upstream BUILD.txt
17+
- general simplifications
18+
- let upstream do more of the installation
19+
20+
-- Barak A. Pearlmutter <[email protected]> Tue, 03 Mar 2015 13:01:02 +0000
621

722
oaklisp (1.3.3-5) unstable; urgency=low
823

debian/control

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,13 @@ Maintainer: Barak A. Pearlmutter <[email protected]>
55
Standards-Version: 3.9.6
66
Build-depends:
77
debhelper (>= 9),
8+
dh-autoreconf,
9+
autoconf-archive,
810
texlive-latex-base, texlive-latex-extra, texlive-fonts-recommended,
9-
ghostscript,
11+
rubber,
1012
gcc-multilib [amd64]
1113
Homepage: http://oaklisp.alioth.debian.org/
12-
Vcs-Git: git://git.debian.org/git/oaklisp/oaklisp.git
14+
Vcs-Git: https://alioth.debian.org/anonscm/git/oaklisp/oaklisp.git
1315
Vcs-Browser: https://alioth.debian.org/scm/browser.php?group_id=100056
1416

1517
Package: oaklisp

debian/dirs

Lines changed: 0 additions & 4 deletions
This file was deleted.

debian/oaklisp-doc.docs

Lines changed: 0 additions & 1 deletion
This file was deleted.

debian/oaklisp-doc.install

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
doc/*/*.pdf usr/share/doc/oaklisp-doc
1+
/usr/share/doc/oaklisp/* /usr/share/doc/oaklisp-doc/

debian/oaklisp.install

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
/usr/bin/oaklisp
2+
/usr/lib/*/oaklisp/oakworld.bin
3+
/usr/share/man/*/*

debian/oaklisp.manpages

Lines changed: 0 additions & 1 deletion
This file was deleted.

0 commit comments

Comments
 (0)