At 21:39 03/09/2007 -0400, Bob Rogers wrote:
I have finally run out of excuses to delay publishing Kea Common
Lisp, the compiler for Parrot I've been hacking on for years now.
Attached please find a draft of the release announcement and the
README.text file it mentions; these should be enough to download it and
try it out. For those who are curious enough to do so, I would be
grateful for any reports of success or failure (especially failure!)
before I annouce Kea-CL to the Lisp community.
Thanks in advance -- and many thanks to the Parrot community in
general for making dynamic language implementation (almost) easy!
-- Bob Rogers
http://rgrjr.dyndns.org/
I've added kea-cl as a SVN external definition in the Parrot tree.
At now, I don't know if it was a good idea.
When the following patch will apply on Kea-CL repository,
I could integrate kea-cl in the configuring and building process.
(but there're still many issues with non-Unix platforms)
As I run on Win32, I use SBCL instead of CMUCL.
And I've the following error :
sbcl.exe --noinform --load compiler\build-cross-compiler.lisp
This is experimental prerelease support for the Windows platform: use
at your own risk. "Your Kitten of Death awaits!"
Compiling
C:\fperrad\Parrot\trunk\languages\kea-cl\compiler\top-level.lisp...
debugger invoked on a SIMPLE-ERROR:
Error during processing of --eval option (LOAD
#P"compiler\\build-cross-compiler.lisp"):
The name "PARROT" does not designate any package.
Type HELP for debugger help, or (SB-EXT:QUIT) to exit from SBCL.
restarts (invokable by number or by possibly-abbreviated name):
0: [CONTINUE] Ignore and continue with next --eval option.
1: [ABORT ] Skip rest of --eval options.
2: Skip to toplevel READ/EVAL/PRINT loop.
3: [QUIT ] Quit SBCL (calling #'QUIT, killing the process).
((LAMBDA (SB-IMPL::E)) #<SB-KERNEL:SIMPLE-PACKAGE-ERROR {A7611B1}>)
0]
Regards.
François.
Index: config/makefiles/root.in
===================================================================
--- config/makefiles/root.in (revision 0)
+++ config/makefiles/root.in (revision 0)
@@ -0,0 +1,174 @@
+# $Id: root.in $
+
+### Environment.
+
+## some utilities (portable).
+
+CP = @cp@
+MKPATH = @mkpath@
+PERL = @perl@
+RM_F = @rm_f@
+RM_RF = @rm_rf@
+
+## Parrot config.
+
+# This is convenient for using with a testing version of Parrot (e.g. if you've
+# checked it out and built it in /usr/src/parrot, but haven't installed it).
+PARROT_HOME = ../..
+PARROT_BIN_DIR = $(PARROT_HOME)
+# These would use the installed 0.3.1 development version of Parrot.
+# [except that this no longer works; build_tools/pmc2c.pl doesn't get
installed,
+# and still needs the build environment even if installed. -- rgr, 2-Sep-05.]
+# PARROT_HOME = /usr/local/parrot-0.3.1-devel
+# PARROT_BIN_DIR = $(PARROT_HOME)/bin
+
+# The parrot binary.
+PARROT = $(PARROT_BIN_DIR)/[EMAIL PROTECTED]@
+# The dynpmc.pl tool. [NB: This is not installed, so must come from
+# the Parrot build tree. -- rgr, 5-Jun-05.]
+PARROT_BUILD_DYNPMC = $(PERL) $(PARROT_HOME)/tools/build/dynpmc.pl
+
+## Lisp config.
+
+# This is only needed if you do "make imc-clean" or "make realclean". The
+# binary extensions shown below are only correct for x86 systems; on other
+# architectures, the Lisp compiler will build a different file
+# (e.g. top-level.sparcf), and the compiler will run interpreted until
+# you tweak this setting.
+
+#CONDITIONED_LINE(win32):# CMUCL is not available on Win32
+#INVERSE_CONDITIONED_LINE(win32):# CMUCL (the default).
+#INVERSE_CONDITIONED_LINE(win32):BUILD_LISP = lisp -batch -noinit
+#INVERSE_CONDITIONED_LINE(win32):BUILD_LISP_BIN_EXT = x86f
+#INVERSE_CONDITIONED_LINE(win32):BUILD_CROSS_COMPILER = $(BUILD_LISP) -load
+#INVERSE_CONDITIONED_LINE(win32):CROSS_COMPILE = $(BUILD_LISP) -load
compiler/cross-compiler -eval
+
+# SBCL.
+#CONDITIONED_LINE(win32):BUILD_LISP = [EMAIL PROTECTED]@ --noinform
+#CONDITIONED_LINE(win32):BUILD_LISP_BIN_EXT = sb86f
+#CONDITIONED_LINE(win32):BUILD_CROSS_COMPILER = $(BUILD_LISP) --load
+#CONDITIONED_LINE(win32):CROSS_COMPILE = $(BUILD_LISP) --load
compiler/cross-compiler --eval
+#INVERSE_CONDITIONED_LINE(win32):# BUILD_LISP = sbcl --noinform
+#INVERSE_CONDITIONED_LINE(win32):# BUILD_LISP_BIN_EXT = sb86f
+#INVERSE_CONDITIONED_LINE(win32):# BUILD_CROSS_COMPILER = $(BUILD_LISP) --load
+#INVERSE_CONDITIONED_LINE(win32):# CROSS_COMPILE = $(BUILD_LISP) --load
compiler/cross-compiler --eval
+
+## End of configuration macros; no user-serviceable parts below this point.
+
+KEA_VERSION = 0.4.15
+
+### Target file lists.
+
+CROSS_COMPILER_FILES = compiler/package-decls.lisp \
+ compiler/compiler-structures.lisp compiler/defstruct.lisp \
+ compiler/emit.lisp compiler/walker.lisp \
+ compiler/forms.lisp compiler/top-level.lisp
+COMPILED_LISP_FILES = structures.lisp fdefinition.lisp stream.lisp pred.lisp
\
+ symbol.lisp hash-new.lisp list.lisp arith.lisp irrat.lisp \
+ package.lisp numbers.lisp char.lisp print.lisp string.lisp \
+ array.lisp seq.lisp reader.lisp sharpm.lisp \
+ backq.lisp simple-format.lisp \
+ info.lisp defmacro.lisp macros.lisp eval.lisp \
+ extensions.lisp lispinit.lisp fd-stream.lisp filesys.lisp
+HAND_WRITTEN_PIR = hash-internals.pir kea.pir
+HAND_WRITTEN_PBC = $(HAND_WRITTEN_PIR:.pir=.pbc)
+COMPILED_IMC_FILES = $(COMPILED_LISP_FILES:.lisp=.imc)
+COMPILED_LISP_PBC = $(COMPILED_LISP_FILES:.lisp=.pbc)
+
+all: $(HAND_WRITTEN_PBC) $(COMPILED_LISP_PBC) dynclasses
+
+# first compile the compiler . . .
+CROSS_COMPILER = compiler/top-level.$(BUILD_LISP_BIN_EXT)
+$(CROSS_COMPILER): $(CROSS_COMPILER_FILES)
+ $(BUILD_CROSS_COMPILER) compiler/build-cross-compiler.lisp
+ # in case this wasn't the file that changed.
+ touch $(CROSS_COMPILER)
+
+# then translate *.lisp to *.imc . . .
+$(COMPILED_IMC_FILES): %.imc: %.lisp $(CROSS_COMPILER)
+ $(CROSS_COMPILE) '(progn (parrot::parrot-compile-file "$<") (quit))'
+
+# then compile *.imc and *.pir to *.pbc.
+$(HAND_WRITTEN_PBC): %.pbc: %.pir
+ $(PARROT) -o $@ $^
+$(COMPILED_LISP_PBC): %.pbc: %.imc
+ $(PARROT) -o $@ $^
+
+test-all: test-compiler test
+test: all
+ find t -name '*.t' | fgrep -v /compiler/ \
+ | PARROT="$(PARROT)" xargs perl -Mlib=. \
+ -e 'use Test::Harness; runtests(@ARGV);'
+# This uses the compiler, and requires having Lisp installed.
+test-compiler: all
+ find t/compiler -name '*.t' \
+ | PARROT="$(PARROT)" BUILD_LISP="$(BUILD_LISP)" xargs perl -Mlib=. \
+ -e 'use Test::Harness; runtests(@ARGV);'
+
+### compiling dynamic PMCs.
+
+dynclasses: dynclasses/[EMAIL PROTECTED]@
+
+dynclasses/character.c: dynclasses/character.pmc
+ $(PARROT_BUILD_DYNPMC) generate dynclasses/character
+dynclasses/[EMAIL PROTECTED]@: dynclasses/character.c
+ $(PARROT_BUILD_DYNPMC) compile dynclasses/character
+dynclasses/[EMAIL PROTECTED]@: dynclasses/[EMAIL PROTECTED]@
+ $(PARROT_BUILD_DYNPMC) linklibs dynclasses/character
+
+### Create a release tarball.
+
+# One weakness of the "tarball" target is that it assumes that the repository
+# version of the makefile will work, i.e. that no configuration is required.
+
+tarball_directory = kea-cl-$(KEA_VERSION)
+tarball_name = $(tarball_directory).tgz
+built_from_rev = \
+ 'print "This tarball was built from Subversion revision $$1.\n" \
+ if /Revision: (\d+)/;'
+tarball:
+ $(RM_RF) $(tarball_directory)
+ $(MKPATH) $(tarball_directory)
+ svn co https://rgrjr.dyndns.org/svn/kea-cl/trunk $(tarball_directory)
+ # We must capture the revision before blowing away the .svn dirs.
+ cd $(tarball_directory); \
+ svn info | perl -ne $(built_from_rev) > REVISION.text
+ cd $(tarball_directory) \
+ && (find . -name .svn | xargs rm -fr) \
+ && make test clean
+ $(RM_F) $(tarball_name)
+ tar czf $(tarball_name) $(tarball_directory)
+ $(RM_RF) $(tarball_directory)
+
+# Put the current tarball on the Web site.
+publish-tarball:
+ test -e $(tarball_name)
+ cp -fp $(tarball_name) /srv/www/htdocs/lisp/kea-cl
+
+### Miscellaneous.
+
+tags:
+ etags *.lisp --regex '/\.sub \([^ ]*\)/\1/' *.pir
+
+# Note that "make clean" must remove everything built by Parrot.
+clean: pmc-clean
+ $(RM_F) *.dasm
+ $(RM_F) *.pbc
+ -find t | perl -ne 'print if /_\d+\.lisp$$/;' | xargs rm -f
+pmc-clean:
+ $(RM_F) dynclasses/pmc_character.h dynclasses/character.c
dynclasses/character.dump
+ $(RM_F) dynclasses/[EMAIL PROTECTED]@ dynclasses/[EMAIL PROTECTED]@
+imc-clean: clean
+ $(RM_F) *.imc
+realclean: imc-clean
+ $(RM_F) compiler/*.$(BUILD_LISP_BIN_EXT))
+
+# For debugging.
+arith.dasm: arith.pbc
+ $(PARROT_BIN_DIR)/disassemble $^ > $@
+
+wc:
+ wc $(COMPILED_LISP_FILES)
+ wc $(CROSS_COMPILER_FILES)
+ wc dynclasses/*.pmc $(HAND_WRITTEN_PIR)
+
Property changes on: dynclasses
___________________________________________________________________
Name: svn:ignore
- *.so
*.dump
*.c
*.h
+ *.so
*.dump
*.c
*.h
*.dll
*.o