develooper Front page | perl.cvs.parrot | Postings from December 2008

[svn:parrot] r34717 - trunk/ports/cygwin

From:
rurban
Date:
December 31, 2008 10:51
Subject:
[svn:parrot] r34717 - trunk/ports/cygwin
Message ID:
20081231185139.1FCE3CB9FA@x12.develooper.com
Author: rurban
Date: Wed Dec 31 10:51:37 2008
New Revision: 34717

Added:
   trunk/ports/cygwin/parrot-0.8.2-1.cygport
   trunk/ports/cygwin/parrot-0.8.2-1.cygwin.patch
   trunk/ports/cygwin/parrot-0.8.2-1.src.patch
Removed:
   trunk/ports/cygwin/parrot-0.7.1-1.cygport
   trunk/ports/cygwin/parrot-0.7.1-1.cygwin.patch
   trunk/ports/cygwin/parrot-0.7.1-1.src.patch
Modified:
   trunk/ports/cygwin/README

Log:
[ports] cygwin release parrot-0.8.2-1

Modified: trunk/ports/cygwin/README
==============================================================================
--- trunk/ports/cygwin/README	(original)
+++ trunk/ports/cygwin/README	Wed Dec 31 10:51:37 2008
@@ -52,447 +52,15 @@
 
 Files included in the =parrot= package:
 
+  /etc/postinstall/parrot.sh
+  /etc/preremove/parrot.sh
   /usr/bin/parrot.exe
   /usr/bin/parrot_config.exe
   /usr/bin/parrot_debugger.exe
-  /usr/bin/pbc_disassemble.exe
   /usr/bin/pbc_info.exe
   /usr/bin/pbc_merge.exe
+  /usr/bin/pbc_to_exe.exe
   /usr/bin/pdump.exe
-  /usr/share/doc/Cygwin/parrot-0.7.1.README
-  /usr/share/doc/parrot-0.7.1/ChangeLog
-  /usr/share/doc/parrot-0.7.1/CREDITS
-  /usr/share/doc/parrot-0.7.1/docs/art/pp001-intro.pod
-  /usr/share/doc/parrot-0.7.1/docs/art/pp002-pmc.pod
-  /usr/share/doc/parrot-0.7.1/docs/art/pp003-oop.pod
-  /usr/share/doc/parrot-0.7.1/docs/book/appendix.pod
-  /usr/share/doc/parrot-0.7.1/docs/book/ch01_overview.pod
-  /usr/share/doc/parrot-0.7.1/docs/book/ch02_getting_started.pod
-  /usr/share/doc/parrot-0.7.1/docs/book/ch03_pir_basics.pod
-  /usr/share/doc/parrot-0.7.1/docs/book/ch04_pir_subroutines.pod
-  /usr/share/doc/parrot-0.7.1/docs/book/ch05_pasm.pod
-  /usr/share/doc/parrot-0.7.1/docs/book/ch06_testing.pod
-  /usr/share/doc/parrot-0.7.1/docs/book/ch07_architecture.pod
-  /usr/share/doc/parrot-0.7.1/docs/book/ch08_pct.pod
-  /usr/share/doc/parrot-0.7.1/docs/book/ch09_reference.pod
-  /usr/share/doc/parrot-0.7.1/docs/book/figs/p6e_0801.png
-  /usr/share/doc/parrot-0.7.1/docs/debugger.pod
-  /usr/share/doc/parrot-0.7.1/docs/embed.pod
-  /usr/share/doc/parrot-0.7.1/docs/extend.pod
-  /usr/share/doc/parrot-0.7.1/docs/faq.pod
-  /usr/share/doc/parrot-0.7.1/docs/gettingstarted.pod
-  /usr/share/doc/parrot-0.7.1/docs/glossary.pod
-  /usr/share/doc/parrot-0.7.1/docs/imcc/imcfaq.pod
-  /usr/share/doc/parrot-0.7.1/docs/imcc/operation.pod
-  /usr/share/doc/parrot-0.7.1/docs/imcc/README
-  /usr/share/doc/parrot-0.7.1/docs/intro.pod
-  /usr/share/doc/parrot-0.7.1/docs/jit.pod
-  /usr/share/doc/parrot-0.7.1/docs/memory_internals.pod
-  /usr/share/doc/parrot-0.7.1/docs/mmd.pod
-  /usr/share/doc/parrot-0.7.1/docs/native_exec.pod
-  /usr/share/doc/parrot-0.7.1/docs/ops/bit.pod
-  /usr/share/doc/parrot-0.7.1/docs/ops/cmp.pod
-  /usr/share/doc/parrot-0.7.1/docs/ops/core.pod
-  /usr/share/doc/parrot-0.7.1/docs/ops/debug.pod
-  /usr/share/doc/parrot-0.7.1/docs/ops/experimental.pod
-  /usr/share/doc/parrot-0.7.1/docs/ops/io.pod
-  /usr/share/doc/parrot-0.7.1/docs/ops/math.pod
-  /usr/share/doc/parrot-0.7.1/docs/ops/object.pod
-  /usr/share/doc/parrot-0.7.1/docs/ops/obscure.pod
-  /usr/share/doc/parrot-0.7.1/docs/ops/pic.pod
-  /usr/share/doc/parrot-0.7.1/docs/ops/pmc.pod
-  /usr/share/doc/parrot-0.7.1/docs/ops/set.pod
-  /usr/share/doc/parrot-0.7.1/docs/ops/string.pod
-  /usr/share/doc/parrot-0.7.1/docs/ops/sys.pod
-  /usr/share/doc/parrot-0.7.1/docs/ops/var.pod
-  /usr/share/doc/parrot-0.7.1/docs/optable.pod
-  /usr/share/doc/parrot-0.7.1/docs/overview.pod
-  /usr/share/doc/parrot-0.7.1/docs/parrot.pod
-  /usr/share/doc/parrot-0.7.1/docs/parrotbyte.pod
-  /usr/share/doc/parrot-0.7.1/docs/parrothist.pod
-  /usr/share/doc/parrot-0.7.1/docs/pct/gettingstarted.pod
-  /usr/share/doc/parrot-0.7.1/docs/pct/past_building_blocks.pod
-  /usr/share/doc/parrot-0.7.1/docs/pct/pct_optable_guide.pod
-  /usr/share/doc/parrot-0.7.1/docs/pdds/draft/pdd01_overview.pod
-  /usr/share/doc/parrot-0.7.1/docs/pdds/draft/pdd04_datatypes.pod
-  /usr/share/doc/parrot-0.7.1/docs/pdds/draft/pdd05_opfunc.pod
-  /usr/share/doc/parrot-0.7.1/docs/pdds/draft/pdd06_pasm.pod
-  /usr/share/doc/parrot-0.7.1/docs/pdds/draft/pdd08_keys.pod
-  /usr/share/doc/parrot-0.7.1/docs/pdds/draft/pdd10_embedding.pod
-  /usr/share/doc/parrot-0.7.1/docs/pdds/draft/pdd11_extending.pod
-  /usr/share/doc/parrot-0.7.1/docs/pdds/draft/pdd14_bignum.pod
-  /usr/share/doc/parrot-0.7.1/docs/pdds/draft/pdd16_native_call.pod
-  /usr/share/doc/parrot-0.7.1/docs/pdds/draft/pdd29_compiler_tools.pod
-  /usr/share/doc/parrot-0.7.1/docs/pdds/draft/pdd30_install.pod
-  /usr/share/doc/parrot-0.7.1/docs/pdds/draft/pdd31_hll_interop.pod
-  /usr/share/doc/parrot-0.7.1/docs/pdds/pdd00_pdd.pod
-  /usr/share/doc/parrot-0.7.1/docs/pdds/pdd03_calling_conventions.pod
-  /usr/share/doc/parrot-0.7.1/docs/pdds/pdd07_codingstd.pod
-  /usr/share/doc/parrot-0.7.1/docs/pdds/pdd09_gc.pod
-  /usr/share/doc/parrot-0.7.1/docs/pdds/pdd13_bytecode.pod
-  /usr/share/doc/parrot-0.7.1/docs/pdds/pdd15_objects.pod
-  /usr/share/doc/parrot-0.7.1/docs/pdds/pdd15_object_metamodel.png
-  /usr/share/doc/parrot-0.7.1/docs/pdds/pdd15_object_metamodel.svg
-  /usr/share/doc/parrot-0.7.1/docs/pdds/pdd17_pmc.pod
-  /usr/share/doc/parrot-0.7.1/docs/pdds/pdd18_security.pod
-  /usr/share/doc/parrot-0.7.1/docs/pdds/pdd19_pir.pod
-  /usr/share/doc/parrot-0.7.1/docs/pdds/pdd20_lexical_vars.pod
-  /usr/share/doc/parrot-0.7.1/docs/pdds/pdd21_namespaces.pod
-  /usr/share/doc/parrot-0.7.1/docs/pdds/pdd22_io.pod
-  /usr/share/doc/parrot-0.7.1/docs/pdds/pdd23_exceptions.pod
-  /usr/share/doc/parrot-0.7.1/docs/pdds/pdd24_events.pod
-  /usr/share/doc/parrot-0.7.1/docs/pdds/pdd25_concurrency.pod
-  /usr/share/doc/parrot-0.7.1/docs/pdds/pdd26_ast.pod
-  /usr/share/doc/parrot-0.7.1/docs/pdds/pdd27_multiple_dispatch.pod
-  /usr/share/doc/parrot-0.7.1/docs/pdds/pdd28_strings.pod
-  /usr/share/doc/parrot-0.7.1/docs/pdds/pdd_template.pod
-  /usr/share/doc/parrot-0.7.1/docs/pdds/README
-  /usr/share/doc/parrot-0.7.1/docs/pmc/array.pod
-  /usr/share/doc/parrot-0.7.1/docs/pmc/documentation.pod
-  /usr/share/doc/parrot-0.7.1/docs/pmc/struct.pod
-  /usr/share/doc/parrot-0.7.1/docs/pmc/subs.pod
-  /usr/share/doc/parrot-0.7.1/docs/pmc.pod
-  /usr/share/doc/parrot-0.7.1/docs/pmc2c.pod
-  /usr/share/doc/parrot-0.7.1/docs/porting_intro.pod
-  /usr/share/doc/parrot-0.7.1/docs/req/model_users.pod
-  /usr/share/doc/parrot-0.7.1/docs/resources/favicon.ico
-  /usr/share/doc/parrot-0.7.1/docs/resources/parrot_small.png
-  /usr/share/doc/parrot-0.7.1/docs/resources/perl.css
-  /usr/share/doc/parrot-0.7.1/docs/resources/up.gif
-  /usr/share/doc/parrot-0.7.1/docs/running.pod
-  /usr/share/doc/parrot-0.7.1/docs/stability.pod
-  /usr/share/doc/parrot-0.7.1/docs/stm/atomic.pod
-  /usr/share/doc/parrot-0.7.1/docs/stm/howto.pod
-  /usr/share/doc/parrot-0.7.1/docs/stm/internals.pod
-  /usr/share/doc/parrot-0.7.1/docs/stm/stm_frontend.pod
-  /usr/share/doc/parrot-0.7.1/docs/stm/thread-issues.pod
-  /usr/share/doc/parrot-0.7.1/docs/submissions.pod
-  /usr/share/doc/parrot-0.7.1/docs/tests.pod
-  /usr/share/doc/parrot-0.7.1/docs/vtables.pod
-  /usr/share/doc/parrot-0.7.1/DONORS.pod
-  /usr/share/doc/parrot-0.7.1/examples/benchmarks/addit.pasm
-  /usr/share/doc/parrot-0.7.1/examples/benchmarks/addit.pir
-  /usr/share/doc/parrot-0.7.1/examples/benchmarks/addit.pl
-  /usr/share/doc/parrot-0.7.1/examples/benchmarks/addit.rb
-  /usr/share/doc/parrot-0.7.1/examples/benchmarks/addit2.pir
-  /usr/share/doc/parrot-0.7.1/examples/benchmarks/array_access.pir
-  /usr/share/doc/parrot-0.7.1/examples/benchmarks/arriter.pir
-  /usr/share/doc/parrot-0.7.1/examples/benchmarks/arriter.pl
-  /usr/share/doc/parrot-0.7.1/examples/benchmarks/arriter.rb
-  /usr/share/doc/parrot-0.7.1/examples/benchmarks/arriter_o1.pir
-  /usr/share/doc/parrot-0.7.1/examples/benchmarks/bench_newp.pasm
-  /usr/share/doc/parrot-0.7.1/examples/benchmarks/fib.pir
-  /usr/share/doc/parrot-0.7.1/examples/benchmarks/fib.pl
-  /usr/share/doc/parrot-0.7.1/examples/benchmarks/fib.py
-  /usr/share/doc/parrot-0.7.1/examples/benchmarks/fib.rb
-  /usr/share/doc/parrot-0.7.1/examples/benchmarks/float4.pir
-  /usr/share/doc/parrot-0.7.1/examples/benchmarks/freeze.pasm
-  /usr/share/doc/parrot-0.7.1/examples/benchmarks/freeze.pl
-  /usr/share/doc/parrot-0.7.1/examples/benchmarks/gc_alloc_new.pasm
-  /usr/share/doc/parrot-0.7.1/examples/benchmarks/gc_alloc_reuse.pasm
-  /usr/share/doc/parrot-0.7.1/examples/benchmarks/gc_generations.pasm
-  /usr/share/doc/parrot-0.7.1/examples/benchmarks/gc_header_new.pasm
-  /usr/share/doc/parrot-0.7.1/examples/benchmarks/gc_header_reuse.pasm
-  /usr/share/doc/parrot-0.7.1/examples/benchmarks/gc_waves_headers.pasm
-  /usr/share/doc/parrot-0.7.1/examples/benchmarks/gc_waves_sizeable_data.pasm
-  /usr/share/doc/parrot-0.7.1/examples/benchmarks/gc_waves_sizeable_headers.pasm
-  /usr/share/doc/parrot-0.7.1/examples/benchmarks/mops.pasm
-  /usr/share/doc/parrot-0.7.1/examples/benchmarks/mops.pl
-  /usr/share/doc/parrot-0.7.1/examples/benchmarks/mops_intval.pasm
-  /usr/share/doc/parrot-0.7.1/examples/benchmarks/oo1.pasm
-  /usr/share/doc/parrot-0.7.1/examples/benchmarks/oo1.pl
-  /usr/share/doc/parrot-0.7.1/examples/benchmarks/oo1.py
-  /usr/share/doc/parrot-0.7.1/examples/benchmarks/oo1.rb
-  /usr/share/doc/parrot-0.7.1/examples/benchmarks/oo2.pasm
-  /usr/share/doc/parrot-0.7.1/examples/benchmarks/oo2.pl
-  /usr/share/doc/parrot-0.7.1/examples/benchmarks/oo2.py
-  /usr/share/doc/parrot-0.7.1/examples/benchmarks/oo2.rb
-  /usr/share/doc/parrot-0.7.1/examples/benchmarks/oo3.pasm
-  /usr/share/doc/parrot-0.7.1/examples/benchmarks/oo3.pl
-  /usr/share/doc/parrot-0.7.1/examples/benchmarks/oo3.py
-  /usr/share/doc/parrot-0.7.1/examples/benchmarks/oo3.rb
-  /usr/share/doc/parrot-0.7.1/examples/benchmarks/oo4.pasm
-  /usr/share/doc/parrot-0.7.1/examples/benchmarks/oo4.pl
-  /usr/share/doc/parrot-0.7.1/examples/benchmarks/oo4.py
-  /usr/share/doc/parrot-0.7.1/examples/benchmarks/oo4.rb
-  /usr/share/doc/parrot-0.7.1/examples/benchmarks/oo5.pir
-  /usr/share/doc/parrot-0.7.1/examples/benchmarks/oo5.pl
-  /usr/share/doc/parrot-0.7.1/examples/benchmarks/oo5.py
-  /usr/share/doc/parrot-0.7.1/examples/benchmarks/oo5.rb
-  /usr/share/doc/parrot-0.7.1/examples/benchmarks/oo6.pir
-  /usr/share/doc/parrot-0.7.1/examples/benchmarks/oo6.pl
-  /usr/share/doc/parrot-0.7.1/examples/benchmarks/oo6.py
-  /usr/share/doc/parrot-0.7.1/examples/benchmarks/oo6.rb
-  /usr/share/doc/parrot-0.7.1/examples/benchmarks/oofib.pir
-  /usr/share/doc/parrot-0.7.1/examples/benchmarks/oofib.pl
-  /usr/share/doc/parrot-0.7.1/examples/benchmarks/oofib.py
-  /usr/share/doc/parrot-0.7.1/examples/benchmarks/oofib.rb
-  /usr/share/doc/parrot-0.7.1/examples/benchmarks/oon.txt
-  /usr/share/doc/parrot-0.7.1/examples/benchmarks/overload.pir
-  /usr/share/doc/parrot-0.7.1/examples/benchmarks/overload.pl
-  /usr/share/doc/parrot-0.7.1/examples/benchmarks/primes.c
-  /usr/share/doc/parrot-0.7.1/examples/benchmarks/primes.pasm
-  /usr/share/doc/parrot-0.7.1/examples/benchmarks/primes.pl
-  /usr/share/doc/parrot-0.7.1/examples/benchmarks/primes2.c
-  /usr/share/doc/parrot-0.7.1/examples/benchmarks/primes2.pir
-  /usr/share/doc/parrot-0.7.1/examples/benchmarks/primes2.pl
-  /usr/share/doc/parrot-0.7.1/examples/benchmarks/primes2.py
-  /usr/share/doc/parrot-0.7.1/examples/benchmarks/primes2.rb
-  /usr/share/doc/parrot-0.7.1/examples/benchmarks/primes2_i.pir
-  /usr/share/doc/parrot-0.7.1/examples/benchmarks/primes_i.pasm
-  /usr/share/doc/parrot-0.7.1/examples/benchmarks/shared_ref.pasm
-  /usr/share/doc/parrot-0.7.1/examples/benchmarks/shared_ref.pl
-  /usr/share/doc/parrot-0.7.1/examples/benchmarks/stress.pasm
-  /usr/share/doc/parrot-0.7.1/examples/benchmarks/stress.pl
-  /usr/share/doc/parrot-0.7.1/examples/benchmarks/stress.rb
-  /usr/share/doc/parrot-0.7.1/examples/benchmarks/stress1.pasm
-  /usr/share/doc/parrot-0.7.1/examples/benchmarks/stress1.pl
-  /usr/share/doc/parrot-0.7.1/examples/benchmarks/stress2.pasm
-  /usr/share/doc/parrot-0.7.1/examples/benchmarks/stress2.pl
-  /usr/share/doc/parrot-0.7.1/examples/benchmarks/stress2.rb
-  /usr/share/doc/parrot-0.7.1/examples/benchmarks/stress3.pasm
-  /usr/share/doc/parrot-0.7.1/examples/benchmarks/vpm.pir
-  /usr/share/doc/parrot-0.7.1/examples/benchmarks/vpm.pl
-  /usr/share/doc/parrot-0.7.1/examples/benchmarks/vpm.py
-  /usr/share/doc/parrot-0.7.1/examples/benchmarks/vpm.rb
-  /usr/share/doc/parrot-0.7.1/examples/c/nanoparrot.c
-  /usr/share/doc/parrot-0.7.1/examples/c/test_main.c
-  /usr/share/doc/parrot-0.7.1/examples/compilers/japhc.c
-  /usr/share/doc/parrot-0.7.1/examples/compilers/Makefile
-  /usr/share/doc/parrot-0.7.1/examples/io/async_select.pir
-  /usr/share/doc/parrot-0.7.1/examples/io/echo_client.pir
-  /usr/share/doc/parrot-0.7.1/examples/io/http.pir
-  /usr/share/doc/parrot-0.7.1/examples/io/httpd.pir
-  /usr/share/doc/parrot-0.7.1/examples/io/httpd2.pir
-  /usr/share/doc/parrot-0.7.1/examples/io/net_smtp.pasm
-  /usr/share/doc/parrot-0.7.1/examples/io/pioctl.pasm
-  /usr/share/doc/parrot-0.7.1/examples/io/pipe2.pir
-  /usr/share/doc/parrot-0.7.1/examples/io/pipe3.pir
-  /usr/share/doc/parrot-0.7.1/examples/japh/japh1.pasm
-  /usr/share/doc/parrot-0.7.1/examples/japh/japh2.pasm
-  /usr/share/doc/parrot-0.7.1/examples/japh/japh3.pasm
-  /usr/share/doc/parrot-0.7.1/examples/japh/japh4.pasm
-  /usr/share/doc/parrot-0.7.1/examples/japh/japh5.pasm
-  /usr/share/doc/parrot-0.7.1/examples/japh/README
-  /usr/share/doc/parrot-0.7.1/examples/library/acorn.l
-  /usr/share/doc/parrot-0.7.1/examples/library/getopt_demo.pir
-  /usr/share/doc/parrot-0.7.1/examples/library/md5sum.pir
-  /usr/share/doc/parrot-0.7.1/examples/library/ncurses_life.pir
-  /usr/share/doc/parrot-0.7.1/examples/library/pcre.pir
-  /usr/share/doc/parrot-0.7.1/examples/mops/mops.c
-  /usr/share/doc/parrot-0.7.1/examples/mops/mops.cs
-  /usr/share/doc/parrot-0.7.1/examples/mops/mops.il
-  /usr/share/doc/parrot-0.7.1/examples/mops/mops.p6
-  /usr/share/doc/parrot-0.7.1/examples/mops/mops.pl
-  /usr/share/doc/parrot-0.7.1/examples/mops/mops.ps
-  /usr/share/doc/parrot-0.7.1/examples/mops/mops.py
-  /usr/share/doc/parrot-0.7.1/examples/mops/mops.rb
-  /usr/share/doc/parrot-0.7.1/examples/mops/mops.scheme
-  /usr/share/doc/parrot-0.7.1/examples/mops/README
-  /usr/share/doc/parrot-0.7.1/examples/namespace/namespace_dump.pir
-  /usr/share/doc/parrot-0.7.1/examples/nci/ls.pir
-  /usr/share/doc/parrot-0.7.1/examples/nci/Mysql.pir
-  /usr/share/doc/parrot-0.7.1/examples/nci/mysqltest.p6
-  /usr/share/doc/parrot-0.7.1/examples/nci/mysqltest.pir
-  /usr/share/doc/parrot-0.7.1/examples/nci/PQt.C
-  /usr/share/doc/parrot-0.7.1/examples/nci/QtHelloWorld.pasm
-  /usr/share/doc/parrot-0.7.1/examples/nci/sdl_blue_rectangle.pir
-  /usr/share/doc/parrot-0.7.1/examples/nci/win32api.pir
-  /usr/share/doc/parrot-0.7.1/examples/nci/Xlib.pir
-  /usr/share/doc/parrot-0.7.1/examples/nci/Xlibconstants.pir
-  /usr/share/doc/parrot-0.7.1/examples/nci/xlibtest.nqp
-  /usr/share/doc/parrot-0.7.1/examples/nci/xlibtest.p6
-  /usr/share/doc/parrot-0.7.1/examples/nci/xlibtest.pir
-  /usr/share/doc/parrot-0.7.1/examples/opengl/shapes.pir
-  /usr/share/doc/parrot-0.7.1/examples/opengl/triangle.pir
-  /usr/share/doc/parrot-0.7.1/examples/pasm/cat.pasm
-  /usr/share/doc/parrot-0.7.1/examples/pasm/fact.pasm
-  /usr/share/doc/parrot-0.7.1/examples/pasm/hello.pasm
-  /usr/share/doc/parrot-0.7.1/examples/pasm/nanoforth.pasm
-  /usr/share/doc/parrot-0.7.1/examples/pasm/nanoforth2.pasm
-  /usr/share/doc/parrot-0.7.1/examples/pasm/small.xml
-  /usr/share/doc/parrot-0.7.1/examples/pasm/trace.pasm
-  /usr/share/doc/parrot-0.7.1/examples/pasm/xml_parser.pasm
-  /usr/share/doc/parrot-0.7.1/examples/past/01-sub.pir
-  /usr/share/doc/parrot-0.7.1/examples/past/blocktype_immediate.pir
-  /usr/share/doc/parrot-0.7.1/examples/past/four_plus_one.pir
-  /usr/share/doc/parrot-0.7.1/examples/pge/benchmarks/ambs1/ambs1.pg
-  /usr/share/doc/parrot-0.7.1/examples/pge/benchmarks/ambs1/main.pir
-  /usr/share/doc/parrot-0.7.1/examples/pge/benchmarks/ambs1/Makefile
-  /usr/share/doc/parrot-0.7.1/examples/pge/benchmarks/ambs1/mktestcase
-  /usr/share/doc/parrot-0.7.1/examples/pge/grammars/IO.pg
-  /usr/share/doc/parrot-0.7.1/examples/pge/grammars/PatchGrammar.pg
-  /usr/share/doc/parrot-0.7.1/examples/pge/README
-  /usr/share/doc/parrot-0.7.1/examples/pge/simple.pir
-  /usr/share/doc/parrot-0.7.1/examples/pge/TAP_grammar.pg
-  /usr/share/doc/parrot-0.7.1/examples/pir/circle.pir
-  /usr/share/doc/parrot-0.7.1/examples/pir/euclid.pir
-  /usr/share/doc/parrot-0.7.1/examples/pir/hanoi.pir
-  /usr/share/doc/parrot-0.7.1/examples/pir/hello-dwim.pir
-  /usr/share/doc/parrot-0.7.1/examples/pir/io.pir
-  /usr/share/doc/parrot-0.7.1/examples/pir/levenshtein.pir
-  /usr/share/doc/parrot-0.7.1/examples/pir/life.pir
-  /usr/share/doc/parrot-0.7.1/examples/pir/local_label.pir
-  /usr/share/doc/parrot-0.7.1/examples/pir/mandel.pir
-  /usr/share/doc/parrot-0.7.1/examples/pir/queens_r.pir
-  /usr/share/doc/parrot-0.7.1/examples/pir/quine_ord.pir
-  /usr/share/doc/parrot-0.7.1/examples/pir/readline.pir
-  /usr/share/doc/parrot-0.7.1/examples/pir/substr.pir
-  /usr/share/doc/parrot-0.7.1/examples/pir/sudoku.pir
-  /usr/share/doc/parrot-0.7.1/examples/pir/thr-primes.pir
-  /usr/share/doc/parrot-0.7.1/examples/pir/uniq.pir
-  /usr/share/doc/parrot-0.7.1/examples/README
-  /usr/share/doc/parrot-0.7.1/examples/sdl/blue_rect.pl
-  /usr/share/doc/parrot-0.7.1/examples/sdl/mandel.pir
-  /usr/share/doc/parrot-0.7.1/examples/sdl/minesweeper/eventhandler.pir
-  /usr/share/doc/parrot-0.7.1/examples/sdl/minesweeper/field.pir
-  /usr/share/doc/parrot-0.7.1/examples/sdl/minesweeper/mines.pir
-  /usr/share/doc/parrot-0.7.1/examples/sdl/minesweeper/mines.png
-  /usr/share/doc/parrot-0.7.1/examples/sdl/minesweeper/mines_debug.png
-  /usr/share/doc/parrot-0.7.1/examples/sdl/minesweeper/README
-  /usr/share/doc/parrot-0.7.1/examples/sdl/minesweeper/smiley.png
-  /usr/share/doc/parrot-0.7.1/examples/sdl/tetris/app.pir
-  /usr/share/doc/parrot-0.7.1/examples/sdl/tetris/block.pir
-  /usr/share/doc/parrot-0.7.1/examples/sdl/tetris/blockdata.pir
-  /usr/share/doc/parrot-0.7.1/examples/sdl/tetris/blocks.pir
-  /usr/share/doc/parrot-0.7.1/examples/sdl/tetris/board.pir
-  /usr/share/doc/parrot-0.7.1/examples/sdl/tetris/boarddata.pir
-  /usr/share/doc/parrot-0.7.1/examples/sdl/tetris/eventhandler.pir
-  /usr/share/doc/parrot-0.7.1/examples/sdl/tetris/README
-  /usr/share/doc/parrot-0.7.1/examples/sdl/tetris/tetris.pir
-  /usr/share/doc/parrot-0.7.1/examples/shootout/ack.pir
-  /usr/share/doc/parrot-0.7.1/examples/shootout/ack.pir_output
-  /usr/share/doc/parrot-0.7.1/examples/shootout/ack.py
-  /usr/share/doc/parrot-0.7.1/examples/shootout/binarytrees.pir
-  /usr/share/doc/parrot-0.7.1/examples/shootout/binarytrees.pir_output
-  /usr/share/doc/parrot-0.7.1/examples/shootout/fannkuch.pir
-  /usr/share/doc/parrot-0.7.1/examples/shootout/fannkuch.pir_output
-  /usr/share/doc/parrot-0.7.1/examples/shootout/fannkuch.py
-  /usr/share/doc/parrot-0.7.1/examples/shootout/fasta.pir
-  /usr/share/doc/parrot-0.7.1/examples/shootout/fasta.pir_output
-  /usr/share/doc/parrot-0.7.1/examples/shootout/harmonic.pir
-  /usr/share/doc/parrot-0.7.1/examples/shootout/knucleotide.pir
-  /usr/share/doc/parrot-0.7.1/examples/shootout/knucleotide.pir_input
-  /usr/share/doc/parrot-0.7.1/examples/shootout/knucleotide.pir_output
-  /usr/share/doc/parrot-0.7.1/examples/shootout/mandelbrot.pir
-  /usr/share/doc/parrot-0.7.1/examples/shootout/mandelbrot.pir_output
-  /usr/share/doc/parrot-0.7.1/examples/shootout/nbody.pir
-  /usr/share/doc/parrot-0.7.1/examples/shootout/nbody.pir_output
-  /usr/share/doc/parrot-0.7.1/examples/shootout/nsieve-bits-2.pir
-  /usr/share/doc/parrot-0.7.1/examples/shootout/nsieve-bits-2.pir_output
-  /usr/share/doc/parrot-0.7.1/examples/shootout/nsieve-bits.pir
-  /usr/share/doc/parrot-0.7.1/examples/shootout/nsieve-bits.pir_output
-  /usr/share/doc/parrot-0.7.1/examples/shootout/nsieve.pir
-  /usr/share/doc/parrot-0.7.1/examples/shootout/nsieve.pir_output
-  /usr/share/doc/parrot-0.7.1/examples/shootout/partialsums-2.pir
-  /usr/share/doc/parrot-0.7.1/examples/shootout/partialsums-2.pir_output
-  /usr/share/doc/parrot-0.7.1/examples/shootout/partialsums.pir
-  /usr/share/doc/parrot-0.7.1/examples/shootout/partialsums.pir_output
-  /usr/share/doc/parrot-0.7.1/examples/shootout/pidigits.pir
-  /usr/share/doc/parrot-0.7.1/examples/shootout/pidigits.pir_output
-  /usr/share/doc/parrot-0.7.1/examples/shootout/pidigits.py
-  /usr/share/doc/parrot-0.7.1/examples/shootout/random.pasm
-  /usr/share/doc/parrot-0.7.1/examples/shootout/random.pir
-  /usr/share/doc/parrot-0.7.1/examples/shootout/README
-  /usr/share/doc/parrot-0.7.1/examples/shootout/recursive-2.pir
-  /usr/share/doc/parrot-0.7.1/examples/shootout/recursive-2.pir_output
-  /usr/share/doc/parrot-0.7.1/examples/shootout/recursive.pir
-  /usr/share/doc/parrot-0.7.1/examples/shootout/recursive.pir_output
-  /usr/share/doc/parrot-0.7.1/examples/shootout/regexdna.pir
-  /usr/share/doc/parrot-0.7.1/examples/shootout/regexdna.pir_input
-  /usr/share/doc/parrot-0.7.1/examples/shootout/regexdna.pir_output
-  /usr/share/doc/parrot-0.7.1/examples/shootout/revcomp.pir
-  /usr/share/doc/parrot-0.7.1/examples/shootout/revcomp.pir_input
-  /usr/share/doc/parrot-0.7.1/examples/shootout/revcomp.pir_output
-  /usr/share/doc/parrot-0.7.1/examples/shootout/spectralnorm.pir
-  /usr/share/doc/parrot-0.7.1/examples/shootout/spectralnorm.pir_output
-  /usr/share/doc/parrot-0.7.1/examples/shootout/sumcol.pir
-  /usr/share/doc/parrot-0.7.1/examples/shootout/sumcol.pir_input
-  /usr/share/doc/parrot-0.7.1/examples/shootout/sumcol.pir_output
-  /usr/share/doc/parrot-0.7.1/examples/shootout/takfp.pir
-  /usr/share/doc/parrot-0.7.1/examples/shootout/takfp.pir_output
-  /usr/share/doc/parrot-0.7.1/examples/streams/Bytes.pir
-  /usr/share/doc/parrot-0.7.1/examples/streams/Combiner.pir
-  /usr/share/doc/parrot-0.7.1/examples/streams/Coroutine.pir
-  /usr/share/doc/parrot-0.7.1/examples/streams/FileLines.pir
-  /usr/share/doc/parrot-0.7.1/examples/streams/Filter.pir
-  /usr/share/doc/parrot-0.7.1/examples/streams/Include.pir
-  /usr/share/doc/parrot-0.7.1/examples/streams/Lines.pir
-  /usr/share/doc/parrot-0.7.1/examples/streams/ParrotIO.pir
-  /usr/share/doc/parrot-0.7.1/examples/streams/Replay.pir
-  /usr/share/doc/parrot-0.7.1/examples/streams/SubCounter.pir
-  /usr/share/doc/parrot-0.7.1/examples/streams/SubHello.pir
-  /usr/share/doc/parrot-0.7.1/examples/streams/Writer.pir
-  /usr/share/doc/parrot-0.7.1/examples/subs/bsr_ret.pasm
-  /usr/share/doc/parrot-0.7.1/examples/subs/coroutine.pasm
-  /usr/share/doc/parrot-0.7.1/examples/subs/jsr_ret.pasm
-  /usr/share/doc/parrot-0.7.1/examples/subs/multi_retvals.pir
-  /usr/share/doc/parrot-0.7.1/examples/subs/no_retval.pir
-  /usr/share/doc/parrot-0.7.1/examples/subs/pasm_sub1.pasm
-  /usr/share/doc/parrot-0.7.1/examples/subs/single_retval.pir
-  /usr/share/doc/parrot-0.7.1/examples/tge/branch/branch.g
-  /usr/share/doc/parrot-0.7.1/examples/tge/branch/lib/Branch.pir
-  /usr/share/doc/parrot-0.7.1/examples/tge/branch/lib/Leaf.pir
-  /usr/share/doc/parrot-0.7.1/examples/tge/branch/transform.pir
-  /usr/share/doc/parrot-0.7.1/examples/tge/README
-  /usr/share/doc/parrot-0.7.1/examples/tutorial/00_README.pod
-  /usr/share/doc/parrot-0.7.1/examples/tutorial/01_temp_var.pir
-  /usr/share/doc/parrot-0.7.1/examples/tutorial/02_local_var.pir
-  /usr/share/doc/parrot-0.7.1/examples/tutorial/03_temp_var_basic_pmcs.pir
-  /usr/share/doc/parrot-0.7.1/examples/tutorial/04_pod_comments.pir
-  /usr/share/doc/parrot-0.7.1/examples/tutorial/10_math_ops.pir
-  /usr/share/doc/parrot-0.7.1/examples/tutorial/11_math_ops_self_mod.pir
-  /usr/share/doc/parrot-0.7.1/examples/tutorial/12_math_ops_pasm.pir
-  /usr/share/doc/parrot-0.7.1/examples/tutorial/13_logical_ops.pir
-  /usr/share/doc/parrot-0.7.1/examples/tutorial/20_string_ops.pir
-  /usr/share/doc/parrot-0.7.1/examples/tutorial/21_string_ops_repeat.pir
-  /usr/share/doc/parrot-0.7.1/examples/tutorial/22_string_ops_length.pir
-  /usr/share/doc/parrot-0.7.1/examples/tutorial/23_string_ops_substr.pir
-  /usr/share/doc/parrot-0.7.1/examples/tutorial/24_string_ops_clone.pir
-  /usr/share/doc/parrot-0.7.1/examples/tutorial/30_arrays_basic.pir
-  /usr/share/doc/parrot-0.7.1/examples/tutorial/31_array_ops_split.pir
-  /usr/share/doc/parrot-0.7.1/examples/tutorial/32_array_ops_sprintf.pir
-  /usr/share/doc/parrot-0.7.1/examples/tutorial/33_hashes.pir
-  /usr/share/doc/parrot-0.7.1/examples/tutorial/34_multikey.pir
-  /usr/share/doc/parrot-0.7.1/examples/tutorial/40_file_ops.pir
-  /usr/share/doc/parrot-0.7.1/examples/tutorial/50_goto.pir
-  /usr/share/doc/parrot-0.7.1/examples/tutorial/51_if_unless.pir
-  /usr/share/doc/parrot-0.7.1/examples/tutorial/52_if_compare.pir
-  /usr/share/doc/parrot-0.7.1/examples/tutorial/53_loop.pir
-  /usr/share/doc/parrot-0.7.1/examples/tutorial/55_iterator.pir
-  /usr/share/doc/parrot-0.7.1/examples/tutorial/56_defined.pir
-  /usr/share/doc/parrot-0.7.1/examples/tutorial/57_exists.pir
-  /usr/share/doc/parrot-0.7.1/examples/tutorial/60_subroutines.pir
-  /usr/share/doc/parrot-0.7.1/examples/tutorial/61_namespaces.pir
-  /usr/share/doc/parrot-0.7.1/examples/tutorial/62_namespaces.pir
-  /usr/share/doc/parrot-0.7.1/examples/tutorial/70_class_object.pir
-  /usr/share/doc/parrot-0.7.1/examples/tutorial/80_closure.pir
-  /usr/share/doc/parrot-0.7.1/examples/tutorial/81_continuation.pir
-  /usr/share/doc/parrot-0.7.1/examples/tutorial/82_coroutine.pir
-  /usr/share/doc/parrot-0.7.1/examples/tutorial/83_external_libraries.pir
-  /usr/share/doc/parrot-0.7.1/examples/tutorial/90_writing_tests.pir
-  /usr/share/doc/parrot-0.7.1/LICENSE
-  /usr/share/doc/parrot-0.7.1/NEWS
-  /usr/share/doc/parrot-0.7.1/PLATFORMS
-  /usr/share/doc/parrot-0.7.1/README
-  /usr/share/doc/parrot-0.7.1/README_cygwin.pod
-  /usr/share/doc/parrot-0.7.1/RESPONSIBLE_PARTIES
-  /usr/share/doc/parrot-0.7.1/TODO
-  /usr/share/emacs/site-lisp/parrot.el
-  /usr/share/emacs/site-lisp/parrot.README
-  /usr/share/emacs/site-lisp/pasm.el
-  /usr/share/emacs/site-lisp/pir-mode.el
-  /usr/share/man/man1/parrot-wmls.5.gz
-  /usr/share/man/man1/parrot.1.gz
-  /usr/share/man/man1/parrot_debugger.1.gz
-  /usr/share/man/man1/pbc_disassemble.1.gz
-  /usr/share/man/man1/pbc_info.1.gz
-  /usr/share/man/man1/pbc_merge.1.gz
-  /usr/share/man/man1/pbc_to_exe.1.gz
-  /usr/share/vim/vimfiles/ftplugin/parrot.vim
-  /usr/share/vim/vimfiles/syntax/pasm.vim
-  /usr/share/vim/vimfiles/syntax/pir.vim
-  /usr/share/vim/vimfiles/syntax/pmc.vim
   /usr/lib/parrot/config_lib.pasm
   /usr/lib/parrot/myconfig
   /usr/lib/parrot/parrotbug
@@ -505,89 +73,48 @@
   /usr/lib/parrot/dynext/match_group.dll
   /usr/lib/parrot/dynext/rational.dll
   /usr/lib/parrot/dynext/subproxy.dll
-  /usr/lib/parrot/library/abc.pbc
-  /usr/lib/parrot/library/APL.pbc
-  /usr/lib/parrot/library/bf.pbc
-  /usr/lib/parrot/library/bfc.pbc
-  /usr/lib/parrot/library/bfco.pbc
-  /usr/lib/parrot/library/c99.pbc
-  /usr/lib/parrot/library/cardinal.pbc
+  /usr/lib/parrot/include/interpinfo.pasm
+  /usr/lib/parrot/include/config.fpmc
   /usr/lib/parrot/library/CGI/QueryHash.pbc
   /usr/lib/parrot/library/CGI/QueryHash.pir
-  /usr/lib/parrot/library/chitchat.pbc
   /usr/lib/parrot/library/Config/JSON.pir
-  /usr/lib/parrot/library/config.pir
-  /usr/lib/parrot/library/cpp.pbc
   /usr/lib/parrot/library/Crow.pir
+  /usr/lib/parrot/library/Data/Dumper.pbc
+  /usr/lib/parrot/library/Data/Dumper.pir
   /usr/lib/parrot/library/Data/Dumper/Base.pbc
   /usr/lib/parrot/library/Data/Dumper/Base.pir
   /usr/lib/parrot/library/Data/Dumper/Default.pbc
   /usr/lib/parrot/library/Data/Dumper/Default.pir
-  /usr/lib/parrot/library/Data/Dumper.pbc
-  /usr/lib/parrot/library/Data/Dumper.pir
   /usr/lib/parrot/library/Data/Escape.pbc
   /usr/lib/parrot/library/Data/Escape.pir
   /usr/lib/parrot/library/Data/Replace.pir
   /usr/lib/parrot/library/Data/Sort.pbc
   /usr/lib/parrot/library/Data/Sort.pir
   /usr/lib/parrot/library/Digest/MD5.pir
-  /usr/lib/parrot/library/dumper.pbc
-  /usr/lib/parrot/library/dumper.pir
-  /usr/lib/parrot/library/eclectus.pbc
-  /usr/lib/parrot/library/ecmascript.pbc
+  /usr/lib/parrot/library/File/Spec.pir
   /usr/lib/parrot/library/File/Spec/Unix.pir
   /usr/lib/parrot/library/File/Spec/Win32.pir
-  /usr/lib/parrot/library/File/Spec.pir
-  /usr/lib/parrot/library/forth/tokenstream.pbc
-  /usr/lib/parrot/library/forth/variablestack.pbc
-  /usr/lib/parrot/library/forth/virtualstack.pbc
-  /usr/lib/parrot/library/forth.pbc
   /usr/lib/parrot/library/Getopt/Obj.pbc
   /usr/lib/parrot/library/Getopt/Obj.pir
-  /usr/lib/parrot/library/hq9plus.pbc
   /usr/lib/parrot/library/HTTP/Daemon.pir
   /usr/lib/parrot/library/Iter.pir
-  /usr/lib/parrot/library/json.pbc
   /usr/lib/parrot/library/JSON.pir
-  /usr/lib/parrot/library/lazy-k.pbc
-  /usr/lib/parrot/library/libpcre.pir
-  /usr/lib/parrot/library/lisp.pbc
-  /usr/lib/parrot/library/lolcode.pbc
-  /usr/lib/parrot/library/m4.pbc
-  /usr/lib/parrot/library/markdown.pbc
-  /usr/lib/parrot/library/Math/Random/mt19937ar.pbc
-  /usr/lib/parrot/library/Math/Random/mt19937ar.pir
   /usr/lib/parrot/library/MIME/Base64.pbc
   /usr/lib/parrot/library/MIME/Base64.pir
+  /usr/lib/parrot/library/Math/Random/mt19937ar.pir
   /usr/lib/parrot/library/NCI/call_toolkit_init.pbc
   /usr/lib/parrot/library/NCI/call_toolkit_init.pir
-  /usr/lib/parrot/library/ncurses.declarations
-  /usr/lib/parrot/library/ncurses.pasm
-  /usr/lib/parrot/library/ncurses.pbc
-  /usr/lib/parrot/library/ncurses.pir
-  /usr/lib/parrot/library/ook.pbc
   /usr/lib/parrot/library/OpenGL.pbc
   /usr/lib/parrot/library/OpenGL.pir
   /usr/lib/parrot/library/OpenGL_funcs.pir
   /usr/lib/parrot/library/P6object.pbc
   /usr/lib/parrot/library/P6object.pir
-  /usr/lib/parrot/library/Parrot/Capture_PIR.pbc
-  /usr/lib/parrot/library/Parrot/Capture_PIR.pir
-  /usr/lib/parrot/library/Parrot/Coroutine.pbc
-  /usr/lib/parrot/library/Parrot/Coroutine.pir
-  /usr/lib/parrot/library/Parrot/Exception.pbc
-  /usr/lib/parrot/library/Parrot/Exception.pir
-  /usr/lib/parrot/library/parrotlib.pbc
-  /usr/lib/parrot/library/parrotlib.pir
-  /usr/lib/parrot/library/pcore.pir
-  /usr/lib/parrot/library/pcre.pbc
-  /usr/lib/parrot/library/pcre.pir
+  /usr/lib/parrot/library/PCT.pbc
   /usr/lib/parrot/library/PCT/Grammar.pbc
   /usr/lib/parrot/library/PCT/HLLCompiler.pbc
   /usr/lib/parrot/library/PCT/PAST.pbc
   /usr/lib/parrot/library/PCT/README
-  /usr/lib/parrot/library/PCT.pbc
-  /usr/lib/parrot/library/Pg.pir
+  /usr/lib/parrot/library/PGE.pbc
   /usr/lib/parrot/library/PGE/Dumper.pbc
   /usr/lib/parrot/library/PGE/Dumper.pir
   /usr/lib/parrot/library/PGE/Glob.pbc
@@ -598,18 +125,17 @@
   /usr/lib/parrot/library/PGE/Text.pir
   /usr/lib/parrot/library/PGE/Util.pbc
   /usr/lib/parrot/library/PGE/Util.pir
-  /usr/lib/parrot/library/PGE.pbc
-  /usr/lib/parrot/library/pheme.pbc
-  /usr/lib/parrot/library/pipp.pbc
-  /usr/lib/parrot/library/postgres.declarations
-  /usr/lib/parrot/library/postgres.pasm
-  /usr/lib/parrot/library/postgres.pir
+  /usr/lib/parrot/library/Parrot/Capture_PIR.pbc
+  /usr/lib/parrot/library/Parrot/Capture_PIR.pir
+  /usr/lib/parrot/library/Parrot/Coroutine.pbc
+  /usr/lib/parrot/library/Parrot/Coroutine.pir
+  /usr/lib/parrot/library/Parrot/Exception.pbc
+  /usr/lib/parrot/library/Parrot/Exception.pir
+  /usr/lib/parrot/library/Pg.pir
   /usr/lib/parrot/library/Protoobject.pbc
   /usr/lib/parrot/library/Protoobject.pir
-  /usr/lib/parrot/library/punie.pbc
-  /usr/lib/parrot/library/pynie.pbc
-  /usr/lib/parrot/library/random_lib.pir
   /usr/lib/parrot/library/Range.pir
+  /usr/lib/parrot/library/SDL.pir
   /usr/lib/parrot/library/SDL/App.pir
   /usr/lib/parrot/library/SDL/Button.pir
   /usr/lib/parrot/library/SDL/Color.pir
@@ -624,8 +150,6 @@
   /usr/lib/parrot/library/SDL/Sprite.pir
   /usr/lib/parrot/library/SDL/StopWatch.pir
   /usr/lib/parrot/library/SDL/Surface.pir
-  /usr/lib/parrot/library/SDL.pir
-  /usr/lib/parrot/library/squaak.pbc
   /usr/lib/parrot/library/STM.pir
   /usr/lib/parrot/library/Stream/Base.pbc
   /usr/lib/parrot/library/Stream/Base.pir
@@ -646,43 +170,487 @@
   /usr/lib/parrot/library/Stream/Writer.pbc
   /usr/lib/parrot/library/Stream/Writer.pir
   /usr/lib/parrot/library/String/Utils.pir
+  /usr/lib/parrot/library/TGE.pbc
   /usr/lib/parrot/library/Tcl/Glob.pir
-  /usr/lib/parrot/library/tcl.pbc
-  /usr/lib/parrot/library/tcpstream.pir
+  /usr/lib/parrot/library/Test/Builder.pir
   /usr/lib/parrot/library/Test/Builder/Output.pir
   /usr/lib/parrot/library/Test/Builder/Test.pir
-  /usr/lib/parrot/library/Test/Builder/Tester.pir
   /usr/lib/parrot/library/Test/Builder/TestPlan.pir
-  /usr/lib/parrot/library/Test/Builder.pir
+  /usr/lib/parrot/library/Test/Builder/Tester.pir
   /usr/lib/parrot/library/Test/Class.pir
   /usr/lib/parrot/library/Test/More.pir
-  /usr/lib/parrot/library/TGE.pbc
-  /usr/lib/parrot/library/unlambda.pbc
-  /usr/lib/parrot/library/uuid.pir
-  /usr/lib/parrot/library/WMLScript/wmlsconsole.pbc
-  /usr/lib/parrot/library/WMLScript/wmlsfloat.pbc
-  /usr/lib/parrot/library/WMLScript/wmlslang.pbc
-  /usr/lib/parrot/library/WMLScript/wmlsstring.pbc
-  /usr/lib/parrot/library/WMLScript.pbc
+  /usr/lib/parrot/library/YAML/Dumper.pir
   /usr/lib/parrot/library/YAML/Dumper/Base.pir
   /usr/lib/parrot/library/YAML/Dumper/Default.pir
-  /usr/lib/parrot/library/YAML/Dumper.pir
   /usr/lib/parrot/library/YAML/Parser/Syck.pir
+  /usr/lib/parrot/library/dumper.pbc
+  /usr/lib/parrot/library/dumper.pir
+  /usr/lib/parrot/library/libpcre.pir
+  /usr/lib/parrot/library/ncurses.declarations
+  /usr/lib/parrot/library/ncurses.pasm
+  /usr/lib/parrot/library/ncurses.pbc
+  /usr/lib/parrot/library/ncurses.pir
+  /usr/lib/parrot/library/parrotlib.pbc
+  /usr/lib/parrot/library/parrotlib.pir
+  /usr/lib/parrot/library/pcore.pir
+  /usr/lib/parrot/library/pcre.pbc
+  /usr/lib/parrot/library/pcre.pir
+  /usr/lib/parrot/library/postgres.declarations
+  /usr/lib/parrot/library/postgres.pasm
+  /usr/lib/parrot/library/postgres.pir
+  /usr/lib/parrot/library/random_lib.pir
+  /usr/lib/parrot/library/tcpstream.pir
+  /usr/lib/parrot/library/uuid.pir
   /usr/lib/parrot/library/yaml_dumper.pir
-  /usr/lib/parrot/include/interpinfo.pasm
-  /usr/lib/parrot/include/config.fpmc
+  /usr/share/doc/parrot-0.8.2/LICENSE
+  /usr/share/doc/parrot-0.8.2/RESPONSIBLE_PARTIES
+  /usr/share/doc/parrot-0.8.2/TODO
+  /usr/share/doc/parrot-0.8.2/docs/art/pp001-intro.pod
+  /usr/share/doc/parrot-0.8.2/docs/art/pp002-pmc.pod
+  /usr/share/doc/parrot-0.8.2/docs/art/pp003-oop.pod
+  /usr/share/doc/parrot-0.8.2/docs/book/appendix.pod
+  /usr/share/doc/parrot-0.8.2/docs/book/ch01_overview.pod
+  /usr/share/doc/parrot-0.8.2/docs/book/ch02_getting_started.pod
+  /usr/share/doc/parrot-0.8.2/docs/book/ch03_pir_basics.pod
+  /usr/share/doc/parrot-0.8.2/docs/book/ch04_pir_subroutines.pod
+  /usr/share/doc/parrot-0.8.2/docs/book/ch05_pasm.pod
+  /usr/share/doc/parrot-0.8.2/docs/book/ch06_testing.pod
+  /usr/share/doc/parrot-0.8.2/docs/book/ch07_architecture.pod
+  /usr/share/doc/parrot-0.8.2/docs/book/ch08_reference.pod
+  /usr/share/doc/parrot-0.8.2/docs/book/figs/p6e_0801.png
+  /usr/share/doc/parrot-0.8.2/docs/debugger.pod
+  /usr/share/doc/parrot-0.8.2/docs/dev/byteorder.pod
+  /usr/share/doc/parrot-0.8.2/docs/dev/debugging_with_msvc.pod
+  /usr/share/doc/parrot-0.8.2/docs/dev/headerizer.pod
+  /usr/share/doc/parrot-0.8.2/docs/dev/jit_i386.pod
+  /usr/share/doc/parrot-0.8.2/docs/dev/longopt.pod
+  /usr/share/doc/parrot-0.8.2/docs/dev/optimizer.pod
+  /usr/share/doc/parrot-0.8.2/docs/dev/parrot_api.pod
+  /usr/share/doc/parrot-0.8.2/docs/dev/pcc_state.pod
+  /usr/share/doc/parrot-0.8.2/docs/dev/pccmethods.pod
+  /usr/share/doc/parrot-0.8.2/docs/dev/pmc_obj_design_meeting_notes.pod
+  /usr/share/doc/parrot-0.8.2/docs/dev/seatbelts.pod
+  /usr/share/doc/parrot-0.8.2/docs/embed.pod
+  /usr/share/doc/parrot-0.8.2/docs/extend.pod
+  /usr/share/doc/parrot-0.8.2/docs/faq.pod
+  /usr/share/doc/parrot-0.8.2/docs/gettingstarted.pod
+  /usr/share/doc/parrot-0.8.2/docs/glossary.pod
+  /usr/share/doc/parrot-0.8.2/docs/imcc/README
+  /usr/share/doc/parrot-0.8.2/docs/imcc/imcfaq.pod
+  /usr/share/doc/parrot-0.8.2/docs/imcc/operation.pod
+  /usr/share/doc/parrot-0.8.2/docs/intro.pod
+  /usr/share/doc/parrot-0.8.2/docs/jit.pod
+  /usr/share/doc/parrot-0.8.2/docs/memory_internals.pod
+  /usr/share/doc/parrot-0.8.2/docs/mmd.pod
+  /usr/share/doc/parrot-0.8.2/docs/native_exec.pod
+  /usr/share/doc/parrot-0.8.2/docs/ops/bit.pod
+  /usr/share/doc/parrot-0.8.2/docs/ops/cmp.pod
+  /usr/share/doc/parrot-0.8.2/docs/ops/core.pod
+  /usr/share/doc/parrot-0.8.2/docs/ops/debug.pod
+  /usr/share/doc/parrot-0.8.2/docs/ops/experimental.pod
+  /usr/share/doc/parrot-0.8.2/docs/ops/io.pod
+  /usr/share/doc/parrot-0.8.2/docs/ops/math.pod
+  /usr/share/doc/parrot-0.8.2/docs/ops/object.pod
+  /usr/share/doc/parrot-0.8.2/docs/ops/obscure.pod
+  /usr/share/doc/parrot-0.8.2/docs/ops/pic.pod
+  /usr/share/doc/parrot-0.8.2/docs/ops/pmc.pod
+  /usr/share/doc/parrot-0.8.2/docs/ops/set.pod
+  /usr/share/doc/parrot-0.8.2/docs/ops/string.pod
+  /usr/share/doc/parrot-0.8.2/docs/ops/sys.pod
+  /usr/share/doc/parrot-0.8.2/docs/ops/var.pod
+  /usr/share/doc/parrot-0.8.2/docs/optable.pod
+  /usr/share/doc/parrot-0.8.2/docs/overview.pod
+  /usr/share/doc/parrot-0.8.2/docs/parrot.pod
+  /usr/share/doc/parrot-0.8.2/docs/parrotbyte.pod
+  /usr/share/doc/parrot-0.8.2/docs/parrothist.pod
+  /usr/share/doc/parrot-0.8.2/docs/pct/gettingstarted.pod
+  /usr/share/doc/parrot-0.8.2/docs/pct/past_building_blocks.pod
+  /usr/share/doc/parrot-0.8.2/docs/pct/pct_optable_guide.pod
+  /usr/share/doc/parrot-0.8.2/docs/pdds/README
+  /usr/share/doc/parrot-0.8.2/docs/pdds/draft/pdd01_overview.pod
+  /usr/share/doc/parrot-0.8.2/docs/pdds/draft/pdd04_datatypes.pod
+  /usr/share/doc/parrot-0.8.2/docs/pdds/draft/pdd05_opfunc.pod
+  /usr/share/doc/parrot-0.8.2/docs/pdds/draft/pdd06_pasm.pod
+  /usr/share/doc/parrot-0.8.2/docs/pdds/draft/pdd08_keys.pod
+  /usr/share/doc/parrot-0.8.2/docs/pdds/draft/pdd10_embedding.pod
+  /usr/share/doc/parrot-0.8.2/docs/pdds/draft/pdd11_extending.pod
+  /usr/share/doc/parrot-0.8.2/docs/pdds/draft/pdd14_bignum.pod
+  /usr/share/doc/parrot-0.8.2/docs/pdds/draft/pdd16_native_call.pod
+  /usr/share/doc/parrot-0.8.2/docs/pdds/draft/pdd19_pir.pod
+  /usr/share/doc/parrot-0.8.2/docs/pdds/draft/pdd29_compiler_tools.pod
+  /usr/share/doc/parrot-0.8.2/docs/pdds/draft/pdd30_install.pod
+  /usr/share/doc/parrot-0.8.2/docs/pdds/pdd00_pdd.pod
+  /usr/share/doc/parrot-0.8.2/docs/pdds/pdd03_calling_conventions.pod
+  /usr/share/doc/parrot-0.8.2/docs/pdds/pdd07_codingstd.pod
+  /usr/share/doc/parrot-0.8.2/docs/pdds/pdd09_gc.pod
+  /usr/share/doc/parrot-0.8.2/docs/pdds/pdd13_bytecode.pod
+  /usr/share/doc/parrot-0.8.2/docs/pdds/pdd15_object_metamodel.png
+  /usr/share/doc/parrot-0.8.2/docs/pdds/pdd15_object_metamodel.svg
+  /usr/share/doc/parrot-0.8.2/docs/pdds/pdd15_objects.pod
+  /usr/share/doc/parrot-0.8.2/docs/pdds/pdd17_pmc.pod
+  /usr/share/doc/parrot-0.8.2/docs/pdds/pdd18_security.pod
+  /usr/share/doc/parrot-0.8.2/docs/pdds/pdd20_lexical_vars.pod
+  /usr/share/doc/parrot-0.8.2/docs/pdds/pdd21_namespaces.pod
+  /usr/share/doc/parrot-0.8.2/docs/pdds/pdd22_io.pod
+  /usr/share/doc/parrot-0.8.2/docs/pdds/pdd23_exceptions.pod
+  /usr/share/doc/parrot-0.8.2/docs/pdds/pdd24_events.pod
+  /usr/share/doc/parrot-0.8.2/docs/pdds/pdd25_concurrency.pod
+  /usr/share/doc/parrot-0.8.2/docs/pdds/pdd26_ast.pod
+  /usr/share/doc/parrot-0.8.2/docs/pdds/pdd27_multiple_dispatch.pod
+  /usr/share/doc/parrot-0.8.2/docs/pdds/pdd28_strings.pod
+  /usr/share/doc/parrot-0.8.2/docs/pdds/pdd_template.pod
+  /usr/share/doc/parrot-0.8.2/docs/pmc.pod
+  /usr/share/doc/parrot-0.8.2/docs/pmc/array.pod
+  /usr/share/doc/parrot-0.8.2/docs/pmc/documentation.pod
+  /usr/share/doc/parrot-0.8.2/docs/pmc/struct.pod
+  /usr/share/doc/parrot-0.8.2/docs/pmc/subs.pod
+  /usr/share/doc/parrot-0.8.2/docs/pmc2c.pod
+  /usr/share/doc/parrot-0.8.2/docs/porting_intro.pod
+  /usr/share/doc/parrot-0.8.2/docs/project/cage_cleaners_guide.pod
+  /usr/share/doc/parrot-0.8.2/docs/project/committer_guide.pod
+  /usr/share/doc/parrot-0.8.2/docs/project/debian_packaging_guide.pod
+  /usr/share/doc/parrot-0.8.2/docs/project/metacommitter_guide.pod
+  /usr/share/doc/parrot-0.8.2/docs/project/pause_guide.pod
+  /usr/share/doc/parrot-0.8.2/docs/project/release_manager_guide.pod
+  /usr/share/doc/parrot-0.8.2/docs/project/roles_responsibilities.pod
+  /usr/share/doc/parrot-0.8.2/docs/project/ticket_wrangler_guide.pod
+  /usr/share/doc/parrot-0.8.2/docs/req/model_users.pod
+  /usr/share/doc/parrot-0.8.2/docs/resources/favicon.ico
+  /usr/share/doc/parrot-0.8.2/docs/resources/parrot_small.png
+  /usr/share/doc/parrot-0.8.2/docs/resources/perl.css
+  /usr/share/doc/parrot-0.8.2/docs/resources/up.gif
+  /usr/share/doc/parrot-0.8.2/docs/running.pod
+  /usr/share/doc/parrot-0.8.2/docs/stability.pod
+  /usr/share/doc/parrot-0.8.2/docs/stm/atomic.pod
+  /usr/share/doc/parrot-0.8.2/docs/stm/howto.pod
+  /usr/share/doc/parrot-0.8.2/docs/stm/internals.pod
+  /usr/share/doc/parrot-0.8.2/docs/stm/stm_frontend.pod
+  /usr/share/doc/parrot-0.8.2/docs/stm/thread-issues.pod
+  /usr/share/doc/parrot-0.8.2/docs/submissions.pod
+  /usr/share/doc/parrot-0.8.2/docs/tests.pod
+  /usr/share/doc/parrot-0.8.2/docs/vtables.pod
+  /usr/share/doc/parrot-0.8.2/examples/README
+  /usr/share/doc/parrot-0.8.2/examples/benchmarks/addit.pasm
+  /usr/share/doc/parrot-0.8.2/examples/benchmarks/addit.pir
+  /usr/share/doc/parrot-0.8.2/examples/benchmarks/addit.pl
+  /usr/share/doc/parrot-0.8.2/examples/benchmarks/addit.rb
+  /usr/share/doc/parrot-0.8.2/examples/benchmarks/addit2.pir
+  /usr/share/doc/parrot-0.8.2/examples/benchmarks/array_access.pir
+  /usr/share/doc/parrot-0.8.2/examples/benchmarks/arriter.pir
+  /usr/share/doc/parrot-0.8.2/examples/benchmarks/arriter.pl
+  /usr/share/doc/parrot-0.8.2/examples/benchmarks/arriter.rb
+  /usr/share/doc/parrot-0.8.2/examples/benchmarks/arriter_o1.pir
+  /usr/share/doc/parrot-0.8.2/examples/benchmarks/bench_newp.pasm
+  /usr/share/doc/parrot-0.8.2/examples/benchmarks/fib.pir
+  /usr/share/doc/parrot-0.8.2/examples/benchmarks/fib.pl
+  /usr/share/doc/parrot-0.8.2/examples/benchmarks/fib.py
+  /usr/share/doc/parrot-0.8.2/examples/benchmarks/fib.rb
+  /usr/share/doc/parrot-0.8.2/examples/benchmarks/float4.pir
+  /usr/share/doc/parrot-0.8.2/examples/benchmarks/freeze.pasm
+  /usr/share/doc/parrot-0.8.2/examples/benchmarks/freeze.pl
+  /usr/share/doc/parrot-0.8.2/examples/benchmarks/gc_alloc_new.pasm
+  /usr/share/doc/parrot-0.8.2/examples/benchmarks/gc_alloc_reuse.pasm
+  /usr/share/doc/parrot-0.8.2/examples/benchmarks/gc_generations.pasm
+  /usr/share/doc/parrot-0.8.2/examples/benchmarks/gc_header_new.pasm
+  /usr/share/doc/parrot-0.8.2/examples/benchmarks/gc_header_reuse.pasm
+  /usr/share/doc/parrot-0.8.2/examples/benchmarks/gc_waves_headers.pasm
+  /usr/share/doc/parrot-0.8.2/examples/benchmarks/gc_waves_sizeable_data.pasm
+  /usr/share/doc/parrot-0.8.2/examples/benchmarks/gc_waves_sizeable_headers.pasm
+  /usr/share/doc/parrot-0.8.2/examples/benchmarks/mops.pasm
+  /usr/share/doc/parrot-0.8.2/examples/benchmarks/mops.pl
+  /usr/share/doc/parrot-0.8.2/examples/benchmarks/mops_intval.pasm
+  /usr/share/doc/parrot-0.8.2/examples/benchmarks/oo1.pasm
+  /usr/share/doc/parrot-0.8.2/examples/benchmarks/oo1.pl
+  /usr/share/doc/parrot-0.8.2/examples/benchmarks/oo1.py
+  /usr/share/doc/parrot-0.8.2/examples/benchmarks/oo1.rb
+  /usr/share/doc/parrot-0.8.2/examples/benchmarks/oo2.pasm
+  /usr/share/doc/parrot-0.8.2/examples/benchmarks/oo2.pl
+  /usr/share/doc/parrot-0.8.2/examples/benchmarks/oo2.py
+  /usr/share/doc/parrot-0.8.2/examples/benchmarks/oo2.rb
+  /usr/share/doc/parrot-0.8.2/examples/benchmarks/oo3.pasm
+  /usr/share/doc/parrot-0.8.2/examples/benchmarks/oo3.pl
+  /usr/share/doc/parrot-0.8.2/examples/benchmarks/oo3.py
+  /usr/share/doc/parrot-0.8.2/examples/benchmarks/oo3.rb
+  /usr/share/doc/parrot-0.8.2/examples/benchmarks/oo4.pasm
+  /usr/share/doc/parrot-0.8.2/examples/benchmarks/oo4.pl
+  /usr/share/doc/parrot-0.8.2/examples/benchmarks/oo4.py
+  /usr/share/doc/parrot-0.8.2/examples/benchmarks/oo4.rb
+  /usr/share/doc/parrot-0.8.2/examples/benchmarks/oo5.pir
+  /usr/share/doc/parrot-0.8.2/examples/benchmarks/oo5.pl
+  /usr/share/doc/parrot-0.8.2/examples/benchmarks/oo5.py
+  /usr/share/doc/parrot-0.8.2/examples/benchmarks/oo5.rb
+  /usr/share/doc/parrot-0.8.2/examples/benchmarks/oo6.pir
+  /usr/share/doc/parrot-0.8.2/examples/benchmarks/oo6.pl
+  /usr/share/doc/parrot-0.8.2/examples/benchmarks/oo6.py
+  /usr/share/doc/parrot-0.8.2/examples/benchmarks/oo6.rb
+  /usr/share/doc/parrot-0.8.2/examples/benchmarks/oofib.pir
+  /usr/share/doc/parrot-0.8.2/examples/benchmarks/oofib.pl
+  /usr/share/doc/parrot-0.8.2/examples/benchmarks/oofib.py
+  /usr/share/doc/parrot-0.8.2/examples/benchmarks/oofib.rb
+  /usr/share/doc/parrot-0.8.2/examples/benchmarks/oon.txt
+  /usr/share/doc/parrot-0.8.2/examples/benchmarks/overload.pir
+  /usr/share/doc/parrot-0.8.2/examples/benchmarks/overload.pl
+  /usr/share/doc/parrot-0.8.2/examples/benchmarks/primes.c
+  /usr/share/doc/parrot-0.8.2/examples/benchmarks/primes.pasm
+  /usr/share/doc/parrot-0.8.2/examples/benchmarks/primes.pl
+  /usr/share/doc/parrot-0.8.2/examples/benchmarks/primes2.c
+  /usr/share/doc/parrot-0.8.2/examples/benchmarks/primes2.pir
+  /usr/share/doc/parrot-0.8.2/examples/benchmarks/primes2.pl
+  /usr/share/doc/parrot-0.8.2/examples/benchmarks/primes2.py
+  /usr/share/doc/parrot-0.8.2/examples/benchmarks/primes2.rb
+  /usr/share/doc/parrot-0.8.2/examples/benchmarks/primes2_i.pir
+  /usr/share/doc/parrot-0.8.2/examples/benchmarks/primes_i.pasm
+  /usr/share/doc/parrot-0.8.2/examples/benchmarks/shared_ref.pasm
+  /usr/share/doc/parrot-0.8.2/examples/benchmarks/shared_ref.pl
+  /usr/share/doc/parrot-0.8.2/examples/benchmarks/stress.pasm
+  /usr/share/doc/parrot-0.8.2/examples/benchmarks/stress.pl
+  /usr/share/doc/parrot-0.8.2/examples/benchmarks/stress.rb
+  /usr/share/doc/parrot-0.8.2/examples/benchmarks/stress1.pasm
+  /usr/share/doc/parrot-0.8.2/examples/benchmarks/stress1.pl
+  /usr/share/doc/parrot-0.8.2/examples/benchmarks/stress2.pasm
+  /usr/share/doc/parrot-0.8.2/examples/benchmarks/stress2.pl
+  /usr/share/doc/parrot-0.8.2/examples/benchmarks/stress2.rb
+  /usr/share/doc/parrot-0.8.2/examples/benchmarks/stress3.pasm
+  /usr/share/doc/parrot-0.8.2/examples/benchmarks/vpm.pir
+  /usr/share/doc/parrot-0.8.2/examples/benchmarks/vpm.pl
+  /usr/share/doc/parrot-0.8.2/examples/benchmarks/vpm.py
+  /usr/share/doc/parrot-0.8.2/examples/benchmarks/vpm.rb
+  /usr/share/doc/parrot-0.8.2/examples/c/nanoparrot.c
+  /usr/share/doc/parrot-0.8.2/examples/c/test_main.c
+  /usr/share/doc/parrot-0.8.2/examples/compilers/Makefile
+  /usr/share/doc/parrot-0.8.2/examples/compilers/japhc.c
+  /usr/share/doc/parrot-0.8.2/examples/io/async_select.pir
+  /usr/share/doc/parrot-0.8.2/examples/io/echo_client.pir
+  /usr/share/doc/parrot-0.8.2/examples/io/http.pir
+  /usr/share/doc/parrot-0.8.2/examples/io/httpd.pir
+  /usr/share/doc/parrot-0.8.2/examples/io/httpd2.pir
+  /usr/share/doc/parrot-0.8.2/examples/io/net_smtp.pasm
+  /usr/share/doc/parrot-0.8.2/examples/io/pioctl.pasm
+  /usr/share/doc/parrot-0.8.2/examples/io/pipe2.pir
+  /usr/share/doc/parrot-0.8.2/examples/io/pipe3.pir
+  /usr/share/doc/parrot-0.8.2/examples/japh/README
+  /usr/share/doc/parrot-0.8.2/examples/japh/japh1.pasm
+  /usr/share/doc/parrot-0.8.2/examples/japh/japh2.pasm
+  /usr/share/doc/parrot-0.8.2/examples/japh/japh3.pasm
+  /usr/share/doc/parrot-0.8.2/examples/japh/japh4.pasm
+  /usr/share/doc/parrot-0.8.2/examples/japh/japh5.pasm
+  /usr/share/doc/parrot-0.8.2/examples/library/acorn.l
+  /usr/share/doc/parrot-0.8.2/examples/library/getopt_demo.pir
+  /usr/share/doc/parrot-0.8.2/examples/library/md5sum.pir
+  /usr/share/doc/parrot-0.8.2/examples/library/ncurses_life.pir
+  /usr/share/doc/parrot-0.8.2/examples/library/pcre.pir
+  /usr/share/doc/parrot-0.8.2/examples/mops/README
+  /usr/share/doc/parrot-0.8.2/examples/mops/mops.c
+  /usr/share/doc/parrot-0.8.2/examples/mops/mops.cs
+  /usr/share/doc/parrot-0.8.2/examples/mops/mops.il
+  /usr/share/doc/parrot-0.8.2/examples/mops/mops.p6
+  /usr/share/doc/parrot-0.8.2/examples/mops/mops.pl
+  /usr/share/doc/parrot-0.8.2/examples/mops/mops.ps
+  /usr/share/doc/parrot-0.8.2/examples/mops/mops.py
+  /usr/share/doc/parrot-0.8.2/examples/mops/mops.rb
+  /usr/share/doc/parrot-0.8.2/examples/mops/mops.scheme
+  /usr/share/doc/parrot-0.8.2/examples/namespace/namespace_dump.pir
+  /usr/share/doc/parrot-0.8.2/examples/nci/PQt.C
+  /usr/share/doc/parrot-0.8.2/examples/nci/QtHelloWorld.pasm
+  /usr/share/doc/parrot-0.8.2/examples/nci/ls.pir
+  /usr/share/doc/parrot-0.8.2/examples/nci/sdl_blue_rectangle.pir
+  /usr/share/doc/parrot-0.8.2/examples/nci/win32api.pir
+  /usr/share/doc/parrot-0.8.2/examples/opengl/shapes.pir
+  /usr/share/doc/parrot-0.8.2/examples/opengl/triangle.pir
+  /usr/share/doc/parrot-0.8.2/examples/pasm/cat.pasm
+  /usr/share/doc/parrot-0.8.2/examples/pasm/fact.pasm
+  /usr/share/doc/parrot-0.8.2/examples/pasm/hello.pasm
+  /usr/share/doc/parrot-0.8.2/examples/pasm/nanoforth.pasm
+  /usr/share/doc/parrot-0.8.2/examples/pasm/nanoforth2.pasm
+  /usr/share/doc/parrot-0.8.2/examples/pasm/small.xml
+  /usr/share/doc/parrot-0.8.2/examples/pasm/trace.pasm
+  /usr/share/doc/parrot-0.8.2/examples/pasm/xml_parser.pasm
+  /usr/share/doc/parrot-0.8.2/examples/past/01-sub.pir
+  /usr/share/doc/parrot-0.8.2/examples/past/blocktype_immediate.pir
+  /usr/share/doc/parrot-0.8.2/examples/past/four_plus_one.pir
+  /usr/share/doc/parrot-0.8.2/examples/pge/README
+  /usr/share/doc/parrot-0.8.2/examples/pge/TAP_grammar.pg
+  /usr/share/doc/parrot-0.8.2/examples/pge/benchmarks/ambs1/Makefile
+  /usr/share/doc/parrot-0.8.2/examples/pge/benchmarks/ambs1/ambs1.pg
+  /usr/share/doc/parrot-0.8.2/examples/pge/benchmarks/ambs1/main.pir
+  /usr/share/doc/parrot-0.8.2/examples/pge/benchmarks/ambs1/mktestcase
+  /usr/share/doc/parrot-0.8.2/examples/pge/grammars/IO.pg
+  /usr/share/doc/parrot-0.8.2/examples/pge/grammars/PatchGrammar.pg
+  /usr/share/doc/parrot-0.8.2/examples/pge/simple.pir
+  /usr/share/doc/parrot-0.8.2/examples/pir/circle.pir
+  /usr/share/doc/parrot-0.8.2/examples/pir/euclid.pir
+  /usr/share/doc/parrot-0.8.2/examples/pir/hanoi.pir
+  /usr/share/doc/parrot-0.8.2/examples/pir/hello-dwim.pir
+  /usr/share/doc/parrot-0.8.2/examples/pir/io.pir
+  /usr/share/doc/parrot-0.8.2/examples/pir/levenshtein.pir
+  /usr/share/doc/parrot-0.8.2/examples/pir/life.pir
+  /usr/share/doc/parrot-0.8.2/examples/pir/local_label.pir
+  /usr/share/doc/parrot-0.8.2/examples/pir/mandel.pir
+  /usr/share/doc/parrot-0.8.2/examples/pir/queens_r.pir
+  /usr/share/doc/parrot-0.8.2/examples/pir/quine_ord.pir
+  /usr/share/doc/parrot-0.8.2/examples/pir/readline.pir
+  /usr/share/doc/parrot-0.8.2/examples/pir/substr.pir
+  /usr/share/doc/parrot-0.8.2/examples/pir/sudoku.pir
+  /usr/share/doc/parrot-0.8.2/examples/pir/thr-primes.pir
+  /usr/share/doc/parrot-0.8.2/examples/pir/uniq.pir
+  /usr/share/doc/parrot-0.8.2/examples/sdl/blue_rect.pl
+  /usr/share/doc/parrot-0.8.2/examples/sdl/mandel.pir
+  /usr/share/doc/parrot-0.8.2/examples/sdl/minesweeper/README
+  /usr/share/doc/parrot-0.8.2/examples/sdl/minesweeper/eventhandler.pir
+  /usr/share/doc/parrot-0.8.2/examples/sdl/minesweeper/field.pir
+  /usr/share/doc/parrot-0.8.2/examples/sdl/minesweeper/mines.pir
+  /usr/share/doc/parrot-0.8.2/examples/sdl/minesweeper/mines.png
+  /usr/share/doc/parrot-0.8.2/examples/sdl/minesweeper/mines_debug.png
+  /usr/share/doc/parrot-0.8.2/examples/sdl/minesweeper/smiley.png
+  /usr/share/doc/parrot-0.8.2/examples/sdl/tetris/README
+  /usr/share/doc/parrot-0.8.2/examples/sdl/tetris/app.pir
+  /usr/share/doc/parrot-0.8.2/examples/sdl/tetris/block.pir
+  /usr/share/doc/parrot-0.8.2/examples/sdl/tetris/blockdata.pir
+  /usr/share/doc/parrot-0.8.2/examples/sdl/tetris/blocks.pir
+  /usr/share/doc/parrot-0.8.2/examples/sdl/tetris/board.pir
+  /usr/share/doc/parrot-0.8.2/examples/sdl/tetris/boarddata.pir
+  /usr/share/doc/parrot-0.8.2/examples/sdl/tetris/eventhandler.pir
+  /usr/share/doc/parrot-0.8.2/examples/sdl/tetris/tetris.pir
+  /usr/share/doc/parrot-0.8.2/examples/shootout/README
+  /usr/share/doc/parrot-0.8.2/examples/shootout/ack.pir
+  /usr/share/doc/parrot-0.8.2/examples/shootout/ack.pir_output
+  /usr/share/doc/parrot-0.8.2/examples/shootout/ack.py
+  /usr/share/doc/parrot-0.8.2/examples/shootout/binarytrees.pir
+  /usr/share/doc/parrot-0.8.2/examples/shootout/binarytrees.pir_output
+  /usr/share/doc/parrot-0.8.2/examples/shootout/fannkuch.pir
+  /usr/share/doc/parrot-0.8.2/examples/shootout/fannkuch.pir_output
+  /usr/share/doc/parrot-0.8.2/examples/shootout/fannkuch.py
+  /usr/share/doc/parrot-0.8.2/examples/shootout/fasta.pir
+  /usr/share/doc/parrot-0.8.2/examples/shootout/fasta.pir_output
+  /usr/share/doc/parrot-0.8.2/examples/shootout/harmonic.pir
+  /usr/share/doc/parrot-0.8.2/examples/shootout/knucleotide.pir
+  /usr/share/doc/parrot-0.8.2/examples/shootout/knucleotide.pir_input
+  /usr/share/doc/parrot-0.8.2/examples/shootout/knucleotide.pir_output
+  /usr/share/doc/parrot-0.8.2/examples/shootout/mandelbrot.pir
+  /usr/share/doc/parrot-0.8.2/examples/shootout/mandelbrot.pir_output
+  /usr/share/doc/parrot-0.8.2/examples/shootout/nbody.pir
+  /usr/share/doc/parrot-0.8.2/examples/shootout/nbody.pir_output
+  /usr/share/doc/parrot-0.8.2/examples/shootout/nsieve-bits-2.pir
+  /usr/share/doc/parrot-0.8.2/examples/shootout/nsieve-bits-2.pir_output
+  /usr/share/doc/parrot-0.8.2/examples/shootout/nsieve-bits.pir
+  /usr/share/doc/parrot-0.8.2/examples/shootout/nsieve-bits.pir_output
+  /usr/share/doc/parrot-0.8.2/examples/shootout/nsieve.pir
+  /usr/share/doc/parrot-0.8.2/examples/shootout/nsieve.pir_output
+  /usr/share/doc/parrot-0.8.2/examples/shootout/partialsums-2.pir
+  /usr/share/doc/parrot-0.8.2/examples/shootout/partialsums-2.pir_output
+  /usr/share/doc/parrot-0.8.2/examples/shootout/partialsums.pir
+  /usr/share/doc/parrot-0.8.2/examples/shootout/partialsums.pir_output
+  /usr/share/doc/parrot-0.8.2/examples/shootout/pidigits.pir
+  /usr/share/doc/parrot-0.8.2/examples/shootout/pidigits.pir_output
+  /usr/share/doc/parrot-0.8.2/examples/shootout/pidigits.py
+  /usr/share/doc/parrot-0.8.2/examples/shootout/random.pasm
+  /usr/share/doc/parrot-0.8.2/examples/shootout/random.pir
+  /usr/share/doc/parrot-0.8.2/examples/shootout/recursive-2.pir
+  /usr/share/doc/parrot-0.8.2/examples/shootout/recursive-2.pir_output
+  /usr/share/doc/parrot-0.8.2/examples/shootout/recursive.pir
+  /usr/share/doc/parrot-0.8.2/examples/shootout/recursive.pir_output
+  /usr/share/doc/parrot-0.8.2/examples/shootout/regexdna.pir
+  /usr/share/doc/parrot-0.8.2/examples/shootout/regexdna.pir_input
+  /usr/share/doc/parrot-0.8.2/examples/shootout/regexdna.pir_output
+  /usr/share/doc/parrot-0.8.2/examples/shootout/revcomp.pir
+  /usr/share/doc/parrot-0.8.2/examples/shootout/revcomp.pir_input
+  /usr/share/doc/parrot-0.8.2/examples/shootout/revcomp.pir_output
+  /usr/share/doc/parrot-0.8.2/examples/shootout/spectralnorm.pir
+  /usr/share/doc/parrot-0.8.2/examples/shootout/spectralnorm.pir_output
+  /usr/share/doc/parrot-0.8.2/examples/shootout/sumcol.pir
+  /usr/share/doc/parrot-0.8.2/examples/shootout/sumcol.pir_input
+  /usr/share/doc/parrot-0.8.2/examples/shootout/sumcol.pir_output
+  /usr/share/doc/parrot-0.8.2/examples/shootout/takfp.pir
+  /usr/share/doc/parrot-0.8.2/examples/shootout/takfp.pir_output
+  /usr/share/doc/parrot-0.8.2/examples/streams/Bytes.pir
+  /usr/share/doc/parrot-0.8.2/examples/streams/Combiner.pir
+  /usr/share/doc/parrot-0.8.2/examples/streams/Coroutine.pir
+  /usr/share/doc/parrot-0.8.2/examples/streams/FileLines.pir
+  /usr/share/doc/parrot-0.8.2/examples/streams/Filter.pir
+  /usr/share/doc/parrot-0.8.2/examples/streams/Include.pir
+  /usr/share/doc/parrot-0.8.2/examples/streams/Lines.pir
+  /usr/share/doc/parrot-0.8.2/examples/streams/ParrotIO.pir
+  /usr/share/doc/parrot-0.8.2/examples/streams/Replay.pir
+  /usr/share/doc/parrot-0.8.2/examples/streams/SubCounter.pir
+  /usr/share/doc/parrot-0.8.2/examples/streams/SubHello.pir
+  /usr/share/doc/parrot-0.8.2/examples/streams/Writer.pir
+  /usr/share/doc/parrot-0.8.2/examples/subs/bsr_ret.pasm
+  /usr/share/doc/parrot-0.8.2/examples/subs/coroutine.pasm
+  /usr/share/doc/parrot-0.8.2/examples/subs/jsr_ret.pasm
+  /usr/share/doc/parrot-0.8.2/examples/subs/multi_retvals.pir
+  /usr/share/doc/parrot-0.8.2/examples/subs/no_retval.pir
+  /usr/share/doc/parrot-0.8.2/examples/subs/pasm_sub1.pasm
+  /usr/share/doc/parrot-0.8.2/examples/subs/single_retval.pir
+  /usr/share/doc/parrot-0.8.2/examples/tge/README
+  /usr/share/doc/parrot-0.8.2/examples/tge/branch/branch.g
+  /usr/share/doc/parrot-0.8.2/examples/tge/branch/lib/Branch.pir
+  /usr/share/doc/parrot-0.8.2/examples/tge/branch/lib/Leaf.pir
+  /usr/share/doc/parrot-0.8.2/examples/tge/branch/transform.pir
+  /usr/share/doc/parrot-0.8.2/examples/tutorial/00_README.pod
+  /usr/share/doc/parrot-0.8.2/examples/tutorial/01_temp_var.pir
+  /usr/share/doc/parrot-0.8.2/examples/tutorial/02_local_var.pir
+  /usr/share/doc/parrot-0.8.2/examples/tutorial/03_temp_var_basic_pmcs.pir
+  /usr/share/doc/parrot-0.8.2/examples/tutorial/04_pod_comments.pir
+  /usr/share/doc/parrot-0.8.2/examples/tutorial/10_math_ops.pir
+  /usr/share/doc/parrot-0.8.2/examples/tutorial/11_math_ops_self_mod.pir
+  /usr/share/doc/parrot-0.8.2/examples/tutorial/12_math_ops_pasm.pir
+  /usr/share/doc/parrot-0.8.2/examples/tutorial/13_logical_ops.pir
+  /usr/share/doc/parrot-0.8.2/examples/tutorial/20_string_ops.pir
+  /usr/share/doc/parrot-0.8.2/examples/tutorial/21_string_ops_repeat.pir
+  /usr/share/doc/parrot-0.8.2/examples/tutorial/22_string_ops_length.pir
+  /usr/share/doc/parrot-0.8.2/examples/tutorial/23_string_ops_substr.pir
+  /usr/share/doc/parrot-0.8.2/examples/tutorial/24_string_ops_clone.pir
+  /usr/share/doc/parrot-0.8.2/examples/tutorial/30_arrays_basic.pir
+  /usr/share/doc/parrot-0.8.2/examples/tutorial/31_array_ops_split.pir
+  /usr/share/doc/parrot-0.8.2/examples/tutorial/32_array_ops_sprintf.pir
+  /usr/share/doc/parrot-0.8.2/examples/tutorial/33_hashes.pir
+  /usr/share/doc/parrot-0.8.2/examples/tutorial/34_multikey.pir
+  /usr/share/doc/parrot-0.8.2/examples/tutorial/40_file_ops.pir
+  /usr/share/doc/parrot-0.8.2/examples/tutorial/50_goto.pir
+  /usr/share/doc/parrot-0.8.2/examples/tutorial/51_if_unless.pir
+  /usr/share/doc/parrot-0.8.2/examples/tutorial/52_if_compare.pir
+  /usr/share/doc/parrot-0.8.2/examples/tutorial/53_loop.pir
+  /usr/share/doc/parrot-0.8.2/examples/tutorial/55_iterator.pir
+  /usr/share/doc/parrot-0.8.2/examples/tutorial/56_defined.pir
+  /usr/share/doc/parrot-0.8.2/examples/tutorial/57_exists.pir
+  /usr/share/doc/parrot-0.8.2/examples/tutorial/60_subroutines.pir
+  /usr/share/doc/parrot-0.8.2/examples/tutorial/61_namespaces.pir
+  /usr/share/doc/parrot-0.8.2/examples/tutorial/62_namespaces.pir
+  /usr/share/doc/parrot-0.8.2/examples/tutorial/70_class_object.pir
+  /usr/share/doc/parrot-0.8.2/examples/tutorial/80_closure.pir
+  /usr/share/doc/parrot-0.8.2/examples/tutorial/81_continuation.pir
+  /usr/share/doc/parrot-0.8.2/examples/tutorial/82_coroutine.pir
+  /usr/share/doc/parrot-0.8.2/examples/tutorial/83_external_libraries.pir
+  /usr/share/doc/parrot-0.8.2/examples/tutorial/90_writing_tests.pir
+  /usr/share/emacs/site-lisp/parrot.el
+  /usr/share/emacs/site-lisp/parrot.README
+  /usr/share/emacs/site-lisp/pasm.el
+  /usr/share/emacs/site-lisp/pir-mode.el
+  /usr/share/man/man1/parrot.1.gz
+  /usr/share/man/man1/parrot_debugger.1.gz
+  /usr/share/man/man1/pbc_disassemble.1.gz
+  /usr/share/man/man1/pbc_info.1.gz
+  /usr/share/man/man1/pbc_merge.1.gz
+  /usr/share/man/man1/pbc_to_exe.1.gz
+  /usr/share/vim/vimfiles/ftplugin/parrot.vim
+  /usr/share/vim/vimfiles/syntax/pasm.vim
+  /usr/share/vim/vimfiles/syntax/pir.vim
+  /usr/share/vim/vimfiles/syntax/pmc.vim
 
 Files included in the =libparrot0= package:
 
-  /usr/bin/cygparrot0_7_1.dll
+  /usr/bin/cygparrot0.8.2.dll
 
 Files included in the =libparrot-devel= package:
 
+  /usr/bin/parrot-config
+  /usr/include/parrot.h
+  /usr/include/parrot/atomic.h
   /usr/include/parrot/atomic/fallback.h
   /usr/include/parrot/atomic/gcc_pcc.h
   /usr/include/parrot/atomic/gcc_x86.h
   /usr/include/parrot/atomic/sparc.h
-  /usr/include/parrot/atomic.h
+  /usr/include/parrot/builtin.h
   /usr/include/parrot/caches.h
   /usr/include/parrot/cclass.h
   /usr/include/parrot/charset.h
@@ -690,7 +658,7 @@
   /usr/include/parrot/config.h
   /usr/include/parrot/core_pmcs.h
   /usr/include/parrot/datatypes.h
-  /usr/include/parrot/debugger.h
+  /usr/include/parrot/debug.h
   /usr/include/parrot/dod.h
   /usr/include/parrot/dynext.h
   /usr/include/parrot/embed.h
@@ -705,13 +673,13 @@
   /usr/include/parrot/feature.h
   /usr/include/parrot/global.h
   /usr/include/parrot/global_setup.h
-  /usr/include/parrot/hash.h
   /usr/include/parrot/has_header.h
+  /usr/include/parrot/hash.h
   /usr/include/parrot/headers.h
   /usr/include/parrot/hll.h
   /usr/include/parrot/imcc.h
-  /usr/include/parrot/interpreter.h
   /usr/include/parrot/inter_call.h
+  /usr/include/parrot/interpreter.h
   /usr/include/parrot/intlist.h
   /usr/include/parrot/io.h
   /usr/include/parrot/jit_emit.h
@@ -726,15 +694,14 @@
   /usr/include/parrot/oo.h
   /usr/include/parrot/oo_private.h
   /usr/include/parrot/op.h
+  /usr/include/parrot/oplib.h
   /usr/include/parrot/oplib/core_ops.h
   /usr/include/parrot/oplib/core_ops_cg.h
   /usr/include/parrot/oplib/core_ops_cgp.h
   /usr/include/parrot/oplib/core_ops_switch.h
   /usr/include/parrot/oplib/ops.h
-  /usr/include/parrot/oplib.h
   /usr/include/parrot/packfile.h
   /usr/include/parrot/parrot.h
-  /usr/include/parrot/pbcversion.h
   /usr/include/parrot/pic.h
   /usr/include/parrot/platform.h
   /usr/include/parrot/platform_interface.h
@@ -756,9 +723,9 @@
   /usr/include/parrot/string_primitives.h
   /usr/include/parrot/string_private_cstring.h
   /usr/include/parrot/sub.h
-  /usr/include/parrot/thread.h
   /usr/include/parrot/thr_pthread.h
   /usr/include/parrot/thr_windows.h
+  /usr/include/parrot/thread.h
   /usr/include/parrot/tsq.h
   /usr/include/parrot/vtable.h
   /usr/include/parrot/vtables.h
@@ -770,7 +737,6 @@
   /usr/lib/parrot/include/errors.pasm
   /usr/lib/parrot/include/except_severity.pasm
   /usr/lib/parrot/include/except_types.pasm
-  /usr/lib/parrot/include/fp_equality.pasm
   /usr/lib/parrot/include/hllmacros.pir
   /usr/lib/parrot/include/iglobals.pasm
   /usr/lib/parrot/include/interpcores.pasm
@@ -802,39 +768,12 @@
   /usr/lib/parrot/src/ops/core_ops_switch.c
   /usr/lib/parrot/src/parrot_config.o
   /usr/lib/pkgconfig/parrot.pc
-  /usr/share/doc/parrot-0.7.1/DEPRECATED.html
-  /usr/share/doc/parrot-0.7.1/PBC_COMPAT
-  /usr/share/doc/parrot-0.7.1/docs/dev/byteorder.pod
-  /usr/share/doc/parrot-0.7.1/docs/dev/debugging_with_msvc.pod
-  /usr/share/doc/parrot-0.7.1/docs/dev/headerizer.pod
-  /usr/share/doc/parrot-0.7.1/docs/dev/jit_i386.pod
-  /usr/share/doc/parrot-0.7.1/docs/dev/longopt.pod
-  /usr/share/doc/parrot-0.7.1/docs/dev/optimizer.pod
-  /usr/share/doc/parrot-0.7.1/docs/dev/parrot_api.pod
-  /usr/share/doc/parrot-0.7.1/docs/dev/pccmethods.pod
-  /usr/share/doc/parrot-0.7.1/docs/dev/pcc_state.pod
-  /usr/share/doc/parrot-0.7.1/docs/dev/pmc_obj_design_meeting_notes.pod
-  /usr/share/doc/parrot-0.7.1/docs/dev/seatbelts.pod
-  /usr/share/doc/parrot-0.7.1/docs/project/cage_cleaners_guide.pod
-  /usr/share/doc/parrot-0.7.1/docs/project/committer_guide.pod
-  /usr/share/doc/parrot-0.7.1/docs/project/debian_packaging_guide.pod
-  /usr/share/doc/parrot-0.7.1/docs/project/metacommitter_guide.pod
-  /usr/share/doc/parrot-0.7.1/docs/project/pause_guide.pod
-  /usr/share/doc/parrot-0.7.1/docs/project/release_manager_guide.pod
-  /usr/share/doc/parrot-0.7.1/docs/project/roles_responsibilities.pod
-  /usr/share/doc/parrot-0.7.1/docs/project/ticket_wrangler_guide.pod
 
 Files included in the =parrot-perl6= package:
 
   /usr/bin/perl6.exe
   /usr/lib/parrot/dynext/perl6_group.dll
-  /usr/share/doc/parrot-0.7.1/languages/perl6/compiler_overview.pod
-  /usr/share/doc/parrot-0.7.1/languages/perl6/glossary.pod
-  /usr/share/doc/parrot-0.7.1/languages/perl6/MAINTAINER
-  /usr/share/doc/parrot-0.7.1/languages/perl6/README
-  /usr/share/doc/parrot-0.7.1/languages/perl6/spectest-progress.csv
-  /usr/share/doc/parrot-0.7.1/languages/perl6/STATUS
-  /usr/share/man/man1/perl6.1.gz
+  /usr/share/doc/parrot-0.8.2/languages/perl6/*
 
 Files included in the =parrot-languages= package:
 
@@ -846,80 +785,56 @@
   /usr/bin/parrot-c99.exe
   /usr/bin/parrot-cardinal.exe
   /usr/bin/parrot-chitchat.exe
-  /usr/bin/parrot-eclectus.exe
-  /usr/bin/parrot-ecmascript.exe
   /usr/bin/parrot-forth.exe
   /usr/bin/parrot-hq9plus.exe
-  /usr/bin/parrot-json.exe
-  /usr/bin/parrot-lazy-k.exe
   /usr/bin/parrot-lisp.exe
   /usr/bin/parrot-lolcode.exe
   /usr/bin/parrot-lua.exe
   /usr/bin/parrot-m4.exe
-  /usr/bin/parrot-markdown.exe
   /usr/bin/parrot-ook.exe
   /usr/bin/parrot-pheme.exe
   /usr/bin/parrot-pipp.exe
   /usr/bin/parrot-punie.exe
   /usr/bin/parrot-pynie.exe
   /usr/bin/parrot-squaak.exe
-  /usr/bin/parrot-tclsh.exe
-  /usr/bin/parrot-unlambda.exe
-  /usr/bin/parrot-wmls2pbc.exe
-  /usr/bin/parrot-wmls2pir.exe
-  /usr/bin/parrot-wmlsd.exe
-  /usr/bin/parrot-wmlsi.exe
+  /usr/bin/parrot-tcl.exe
   /usr/lib/parrot/dynext/apl_group.dll
+  /usr/lib/parrot/dynext/eclectus_group.dll
   /usr/lib/parrot/dynext/dotnet.dll
   /usr/lib/parrot/dynext/dotnet_ops.dll
   /usr/lib/parrot/dynext/dotnet_ops_cg.dll
   /usr/lib/parrot/dynext/dotnet_ops_cgp.dll
   /usr/lib/parrot/dynext/dotnet_ops_switch.dll
   /usr/lib/parrot/dynext/dotnet_runtime.dll
-  /usr/lib/parrot/dynext/eclectus_group.dll
   /usr/lib/parrot/dynext/lua_group.dll
-  /usr/lib/parrot/dynext/php_group.dll
   /usr/lib/parrot/dynext/tcl_group.dll
-  /usr/lib/parrot/dynext/tcl_ops.dll
-  /usr/lib/parrot/dynext/tcl_ops_cg.dll
-  /usr/lib/parrot/dynext/tcl_ops_cgp.dll
-  /usr/lib/parrot/dynext/tcl_ops_switch.dll
   /usr/lib/parrot/dynext/wmls_group.dll
   /usr/lib/parrot/dynext/wmls_ops.dll
   /usr/lib/parrot/dynext/wmls_ops_cg.dll
   /usr/lib/parrot/dynext/wmls_ops_cgp.dll
   /usr/lib/parrot/dynext/wmls_ops_switch.dll
-  /usr/lib/parrot/library/php_ctype.pbc
-  /usr/lib/parrot/library/php_gmp.pbc
-  /usr/lib/parrot/library/php_pcre.pbc
+  /usr/lib/parrot/library/php_*.pbc
   /usr/lib/parrot/library/pipplib.pbc
   /usr/lib/parrot/library/tcllib.pbc
-  /usr/share/doc/parrot-0.7.1/languages/*
-  /usr/share/man/man1/parrot-APL.1.gz
-  /usr/share/man/man1/parrot-abc.1.gz
-  /usr/share/man/man1/parrot-c99.1.gz
-  /usr/share/man/man1/parrot-cardinal.1.gz
-  /usr/share/man/man1/parrot-chitchat.1.gz
-  /usr/share/man/man1/parrot-cpp.1.gz
-  /usr/share/man/man1/parrot-hq9plus.1.gz
-  /usr/share/man/man1/parrot-json.1.gz
-  /usr/share/man/man1/parrot-lisp.1.gz
-  /usr/share/man/man1/parrot-lolcode.1.gz
-  /usr/share/man/man1/parrot-lua.1.gz
-  /usr/share/man/man1/parrot-pheme.1.gz
-  /usr/share/man/man1/parrot-punie.1.gz
-  /usr/share/man/man1/parrot-pynie.1.gz
-  /usr/share/man/man1/parrot-squaak.1.gz
+  /usr/share/doc/parrot-0.8.2/languages/*
 
 -------------------------------------------------------------------------------
 
 Port Notes:
 
+----- version parrot-0.8.2-1 -----
+* merged from branches/pdd30install_stage3
+
+----- version parrot-0.8.0-1 -----
+* building and testing with already installed parrot supported
+* includes the patches from 0.7.1-1, plus
+* a merge from the branch pdd30_install, without the languages/jvm
+
 ----- version parrot-0.7.1-1 -----
 * building with already installed parrot now supported, testing not.
 * includes the patches from 0.7.0-1, plus
 * a merge from the branch cygwin070patches,
-* without the languages/jvm
+  without the languages/jvm
 
 ----- version parrot-0.7.0-1 -----
 * removed /usr/runtime and its preremove and postinstall scripts
@@ -937,9 +852,7 @@
   [perl #56998] [TODO]  rename cygwin dll to cygparrot$MAJOR_$MINOR_$PATCH.dll
   [perl #57006] [PATCH] add cygwin opengl config quirks
   [perl #57296] [TODO]  make install -C languages
-* removed m4,
-* fixed force, pipp, perl6, pheme, tcl installables. added pcbc's to library  
-* not working: pheme
+* fixed pipp, perl6, pheme, tcl installables. added pcbc's to library  
 
 ----- version parrot-0.6.4-2 -----
 * fixed invalid parrot languages and perl6 paths referencing the build_dir
@@ -974,4 +887,3 @@
 Cygwin port maintained by: Reini Urban <rurban@x-ray.at>
 Please address all questions to the Cygwin mailing list 
 at <cygwin@cygwin.com>
-

Added: trunk/ports/cygwin/parrot-0.8.2-1.cygport
==============================================================================
--- (empty file)
+++ trunk/ports/cygwin/parrot-0.8.2-1.cygport	Wed Dec 31 10:51:37 2008
@@ -0,0 +1,268 @@
+# -*- sh -*-
+DESCRIPTION="Parrot Virtual Machine"
+HOMEPAGE="http://www.parrotcode.org/"
+# The release managers change with every release. Check this link
+#SRC_URI=$(lwp-request -m HEAD -x -e "http://www.parrotcode.org/release/devel" 2>&1 | grep "/authors/id" | tail -n1 | perl -ane 'print $F[2]')
+# or since 0.8.2 at:
+SRC_URI="ftp://ftp.parrot.org/pub/${PN}/releases/devel/${PV}/${PN}-${PV}.tar.gz"
+# SRC_DIR="parrot-${PV}"
+LICENSE="Artistic2"
+DIFF_EXCLUDES="MANIFEST.* parrot.pc myconfig config_lib.pasm Makefile TAGS"
+DLLVER=$(echo $PV|sed -e's,\.,_,g')
+
+PKG_NAMES="${PN} lib${PN}0 lib${PN}-devel ${PN}-perl6 ${PN}-languages"
+PKG_HINTS="${PKG_NAMES}"
+
+parrot_exists_check() {
+  for d in /usr/local/lib/parrot /usr/local/include/parrot \
+	   /usr/include/parrot /usr/lib/parrot \
+	   /usr/lib/libparrot.dll.a /usr/local/lib/libparrot.dll.a
+  do
+    if [ -e $d ]; then
+      echo "Testing with $d is brave and might not work"
+#      echo "Testing with $d is not yet supported! Remove or rename first"
+#      exit
+    fi
+  done
+}
+
+src_compile() {
+  cd ${B}
+  parrot_exists_check
+
+  test -e Configure.pl || lndirs
+  test -e config_lib.pasm && make realclean
+
+  # stable by irc:#parrot
+  lang_stable="abc cardinal eclectus lolcode perl6 pipp punie pynie squaak"
+  # 100% ok by make smoke
+  lang_alltests_ok="bf regex unlambda"
+  perl Configure.pl --prefix=/usr --optimize --mandir=/usr/share/man 
+  # -Ddoc_dir=/usr/share/doc/${P} needs to be patched for cygwin. 
+  # cygwin-1.7 will have this changed.
+  sed -e"s,/usr/share/doc/parrot\",/usr/share/doc/${P}\"," -i config_lib.pasm
+
+  cygmake all parrot_utils perl6.exe
+
+  cat >>myconfig <<EOF
+  Locally applied patches:
+     [perl #39742] [BUG]   installed conflict
+     [perl #51944] [DOCS]  Cygwin Readme
+     [perl #56544] [PATCH] install_files.pl
+     [perl #56998] [PATCH] rename cygwin dll to cygparrot$MAJOR_$MINOR_$PATCH.dll
+     [perl #57006] [PATCH] add cygwin opengl config quirks
+     [perl #56554] [TODO]  make install -C languages
+     [perl #58034] [TODO]  config_args
+     [perl #56996] [TODO]  FHS runtime paths
+     [perl #57548] [TODO]  CONDITIONED_LINE_enh
+EOF
+
+  # Build executables for the other languages.
+  cygmake languages
+
+  cygmake -C editor
+
+}
+
+src_check () {
+  cd ${B}
+  parrot_exists_check
+
+  cygtest
+  cygmake test spectest_regression -C languages/perl6
+  cygmake languages-smoke
+
+}
+
+src_install () {
+  cd ${B}
+  parrot_exists_check
+  man1=${D}/usr/share/man/man1
+  mkdir -p $man1
+
+  # already in core now
+  make reallyinstall DESTDIR=${D} DOC_DIR="/usr/share/doc/${P}"
+
+  #cygmake installable_perl6.exe -C languages/perl6
+  rm $man1/parrot-perl6.1
+
+  cd ${B}
+  #mkdir languages/bin
+  for dir in languages/* ; do
+    lang=$( basename $dir )
+    [ $lang = parrot_compiler ] && continue
+    if [ ! -f $lang -a -d $dir -a -f $dir/${lang}.pbc ] ; then
+        cd languages/$lang
+	make installable || ../../pbc_to_exe ${lang}.pbc --install
+	make install DESTDIR=${D} DOC_DIR="/usr/share/doc/${P}"
+	# TODO: do some standalone testing with renamed builddir
+	#test -e ${lang}.pir -a ! -e $man1/parrot-${lang}.1 && pod2man ${lang}.pir > $man1/parrot-${lang}.1
+        #test -e installable_${lang}.exe && cp installable_${lang}.exe ../bin/parrot-${lang}.exe
+        cd ${B}
+    fi
+  done
+  cd ${B}
+
+  # said who? gentoo or freebsd
+  insinto /usr/lib/${PN}
+  # now fix the wrong build_dir in the pbc_to_exe files
+  sed -e"s,\"${B}\",\"/usr\"," -e"s,-L${B}/blib/lib,," \
+      -e"s,/usr/share/doc/parrot\",/usr/share/doc/${P}\"," \
+      < config_lib.pasm > ${D}/usr/lib/${PN}/config_lib.pasm
+  # sed -e"s,\"-L${B}/blib/lib,\"," -i config_lib.pasm
+  # sed -e"s,$B,/usr/lib/${PN}," -i config_lib.pasm
+  doins myconfig VERSION parrotbug
+
+  exeinto /usr/bin
+  doexe parrot_config.exe cygparrot${DLLVER}.dll
+  #cp languages/perl6/installable_perl6.exe ${D}/usr/bin/perl6.exe
+
+  insinto /usr/lib
+  doins libparrot.dll.a
+
+  insinto /usr/lib/parrot/library
+  doins runtime/parrot/library/config.pir
+  insinto /usr/lib/parrot/include
+  doins runtime/parrot/include/config.fpmc runtime/parrot/include/interpinfo.pasm
+
+  # necessary for mod_parrot-0.3
+  insinto /usr/lib/${PN}/src/
+  doins "${B}/src/install_config.o" "${B}/src/null_config.o" "${B}/src/parrot_config.o"
+
+  insinto /usr/include/parrot
+  doins ${B}/include/parrot/pbcversion.h
+
+  pod2html DEPRECATED.pod > DEPRECATED.html
+  dodoc README RESPONSIBLE_PARTIES ABI_CHANGES ChangeLog CREDITS NEWS README_cygwin.pod \
+    DONORS.pod PLATFORMS TODO PBC_COMPAT DEPRECATED.html languages\LANGUAGES_STATUS.pod
+
+  # editor support (make vim-install installs into ~/.vim/)
+  insinto /usr/share/emacs/site-lisp
+  doins ${B}/editor/*.el
+  pod2text ${B}/editor/README.pod > ${D}/usr/share/emacs/site-lisp/parrot.README
+  # put this into ~/.vim/ or to the global vim dirs?
+  insinto /usr/share/vim/vimfiles/syntax
+  doins ${B}/editor/pir.vim ${B}/editor/pasm.vim ${B}/editor/pmc.vim
+  mkdir -p ${D}/usr/share/vim/vimfiles/ftplugin
+  cp ${B}/editor/filetype_parrot.vim ${D}/usr/share/vim/vimfiles/ftplugin/parrot.vim
+  # TODO: put this via postinstall into ~/.vim/
+  #mkdir -p ${D}/etc/defaults/.vim
+  #cp ${B}/editor/skeleton.pir ${D}/etc/defaults/.vim/
+
+  # man(1) for the main binaries
+  man1=${D}/usr/share/man/man1
+  pod2man docs/running.pod > $man1/parrot.1
+  pod2man src/parrot_debugger.c > $man1/parrot_debugger.1
+  pod2man src/pbc_disassemble.c > $man1/pbc_disassemble.1
+  pod2man src/pbc_info.c > $man1/pbc_info.1
+  pod2man src/pbc_merge.c > $man1/pbc_merge.1
+  pod2man pbc_to_exe.pir > $man1/pbc_to_exe.1
+  pod2man languages/perl6/perl6.pir > $man1/perl6.1
+
+  # Language examples and docs
+  for dir in languages/* ; do
+    test \! -d $dir && continue
+    lang=$( basename $dir )
+    [ $lang = parrot_compiler ] && continue
+    [ $lang = t ] && continue
+
+    cd languages/$lang
+    docinto languages/$lang
+    dodoc MAINTAINER README Changes ChangeLog CREDITS
+    #test -e $lang.pir && pod2man $lang.pir > $man1/parrot-$lang.1
+    test -d docs && dodoc docs/*
+
+    test -d examples && (insinto /usr/share/doc/${P}/languages/${lang}/examples; doins examples/*)
+    cd ${B}
+  done
+  # not yet ready
+  rm $man1/parrot-forth.1
+  cd $man1
+  for f in *.1; do gzip $f; done
+  cd ${B}
+}
+
+# parrot
+PKG_CONTENTS[0]=" \
+--exclude=usr/bin/cygparrot${DLLVER}.dll \
+--exclude=usr/include \
+--exclude=usr/bin/perl6.exe \
+--exclude=usr/bin/parrot-* \
+--exclude=usr/lib/parrot/dynext/apl_*.dll \
+--exclude=usr/lib/parrot/dynext/dotnet*.dll \
+--exclude=usr/lib/parrot/dynext/eclectus_*.dll \
+--exclude=usr/lib/parrot/dynext/lua_*.dll \
+--exclude=usr/lib/parrot/dynext/perl6_*.dll \
+--exclude=usr/lib/parrot/dynext/php_*.dll \
+--exclude=usr/lib/parrot/dynext/wmls_*.dll \
+--exclude=usr/lib/parrot/library/php_*.pbc \
+--exclude=usr/lib/parrot/library/pipplib.pbc \
+--exclude=usr/lib/parrot/library/P6object.pbc \
+--exclude=usr/share/doc/${P}/languages \
+--exclude=usr/share/doc/${P}/docs/dev \
+--exclude=usr/share/doc/${P}/docs/project \
+--exclude=usr/share/doc/${P}/DEPRECATED.html \
+--exclude=usr/share/doc/${P}/PBC_COMPAT \
+--exclude=usr/share/man/man1/parrot-*1.gz \
+--exclude=usr/share/man/man1/perl6.1.gz \
+usr/bin \
+usr/share \
+usr/lib/parrot/config_lib.pasm \
+usr/lib/parrot/myconfig \
+usr/lib/parrot/parrotbug \
+usr/lib/parrot/VERSION \
+usr/lib/parrot/dynext \
+usr/lib/parrot/library \
+usr/lib/parrot/include/interpinfo.pasm \
+usr/lib/parrot/include/config.fpmc \
+"
+
+# libparrot0
+PKG_CONTENTS[1]=" \
+usr/bin/cygparrot${DLLVER}.dll"
+
+# libparrot-devel
+PKG_CONTENTS[2]=" \
+--exclude=usr/lib/parrot/dynext \
+--exclude=usr/lib/parrot/library \
+--exclude=usr/lib/parrot/config_lib.pasm \
+--exclude=usr/lib/parrot/myconfig \
+--exclude=usr/lib/parrot/parrotbug \
+--exclude=usr/lib/parrot/VERSION \
+--exclude=usr/lib/parrot/include/interpinfo.pasm \
+--exclude=usr/lib/parrot/include/config.fpmc \
+usr/include \
+usr/lib \
+usr/share/doc/${P}/DEPRECATED.html \
+usr/share/doc/${P}/PBC_COMPAT \
+usr/share/doc/${P}/docs/dev \
+usr/share/doc/${P}/docs/project \
+"
+
+# parrot-perl6
+PKG_CONTENTS[3]=" \
+usr/bin/perl6.exe \
+usr/lib/parrot/library/P6object.pbc \
+usr/lib/parrot/dynext/perl6_*.dll \
+usr/share/doc/${P}/languages/perl6 \
+usr/share/man/man1/perl6.1.gz \
+"
+
+# parrot-languages
+PKG_CONTENTS[4]=" \
+--exclude=usr/share/doc/${P}/languages/perl6 \
+usr/bin/parrot-*.exe \
+usr/lib/parrot/dynext/apl_*.dll \
+usr/lib/parrot/dynext/dotnet*.dll \
+usr/lib/parrot/dynext/eclectus_*.dll \
+usr/lib/parrot/dynext/php_*.dll \
+usr/lib/parrot/dynext/wmls_*.dll \
+usr/lib/parrot/library/php_*.pbc \
+usr/lib/parrot/library/pipplib.pbc \
+usr/share/doc/${P}/languages \
+usr/share/man/man1/parrot-*1.gz \
+"
+
+#broken:
+#usr/lib/parrot/dynext/lua_*.dll \
+

Added: trunk/ports/cygwin/parrot-0.8.2-1.cygwin.patch
==============================================================================
--- (empty file)
+++ trunk/ports/cygwin/parrot-0.8.2-1.cygwin.patch	Wed Dec 31 10:51:37 2008
@@ -0,0 +1,934 @@
+--- origsrc/parrot-0.8.2/CYGWIN-PATCHES/README	1970-01-01 00:00:00.000000000 +0000
++++ src/parrot-0.8.2/CYGWIN-PATCHES/README	2008-12-29 16:21:33.115375000 +0000
+@@ -0,0 +1,889 @@
++parrot
++----------------------------------
++Parrot is a virtual machine designed to efficiently compile and
++execute bytecode for interpreted languages. Parrot is a target for Perl 6 
++and a lot of other languages.
++
++Runtime requirements:
++  libparrot0 libreadline6 libncurses8 libintl8 libicu38 libgmp3 libgdbm4
++
++Optional requirements:
++  w32api pcre libpq5 openssl
++
++Build requirements:
++  readline libncurses-devel libicu-devel libgmp-devel libgdbm-devel perl 
++  make gcc
++
++Optional build requirements:
++  pcre-devel openssl-devel
++
++Optional test packages:
++  perl L<Test::TAP::HTMLMatrix> if you want to run the language 
++    smoke tests with C<make languages-smoke>.
++  perl L<Test::Base> for some APL language tests.
++  perl L<Moose> for smartlink
++  perl L<Test::Perl::Critic> and L<Perl::Critic>
++
++Canonical homepage:
++  http://www.parrotcode.org/
++
++Canonical download:
++  http://www.parrotcode.org/release/devel
++
++-------------------------------------------------------------------------------
++
++Build instructions:
++
++  cd /usr/src
++  cygport parrot-<VER>-<REL>.cygport all
++
++This will create:
++  /usr/src/parrot-<VER>-<REL>-src.tar.bz2
++  /usr/src/parrot-<VER>-<REL>.tar.bz2
++  /usr/src/libparrot0-<VER>-<REL>.tar.bz2
++  /usr/src/libparrot-devel-<VER>-<REL>.tar.bz2
++  /usr/src/parrot-perl6-<VER>-<REL>.tar.bz2
++  /usr/src/parrot-languages-<VER>-<REL>.tar.bz2
++
++Or use 'cygport parrot-<VER>-<REL>.cygport prep' to get a patched 
++source directory.
++
++-------------------------------------------------------------------------------
++
++Files included in the =parrot= package:
++
++  /etc/postinstall/parrot.sh
++  /etc/preremove/parrot.sh
++  /usr/bin/parrot.exe
++  /usr/bin/parrot_config.exe
++  /usr/bin/parrot_debugger.exe
++  /usr/bin/pbc_info.exe
++  /usr/bin/pbc_merge.exe
++  /usr/bin/pbc_to_exe.exe
++  /usr/bin/pdump.exe
++  /usr/lib/parrot/config_lib.pasm
++  /usr/lib/parrot/myconfig
++  /usr/lib/parrot/parrotbug
++  /usr/lib/parrot/VERSION
++  /usr/lib/parrot/dynext/digest_group.dll
++  /usr/lib/parrot/dynext/dynlexpad.dll
++  /usr/lib/parrot/dynext/gdbmhash.dll
++  /usr/lib/parrot/dynext/libglutcb.dll
++  /usr/lib/parrot/dynext/libnci_test.dll
++  /usr/lib/parrot/dynext/match_group.dll
++  /usr/lib/parrot/dynext/rational.dll
++  /usr/lib/parrot/dynext/subproxy.dll
++  /usr/lib/parrot/include/interpinfo.pasm
++  /usr/lib/parrot/include/config.fpmc
++  /usr/lib/parrot/library/CGI/QueryHash.pbc
++  /usr/lib/parrot/library/CGI/QueryHash.pir
++  /usr/lib/parrot/library/Config/JSON.pir
++  /usr/lib/parrot/library/Crow.pir
++  /usr/lib/parrot/library/Data/Dumper.pbc
++  /usr/lib/parrot/library/Data/Dumper.pir
++  /usr/lib/parrot/library/Data/Dumper/Base.pbc
++  /usr/lib/parrot/library/Data/Dumper/Base.pir
++  /usr/lib/parrot/library/Data/Dumper/Default.pbc
++  /usr/lib/parrot/library/Data/Dumper/Default.pir
++  /usr/lib/parrot/library/Data/Escape.pbc
++  /usr/lib/parrot/library/Data/Escape.pir
++  /usr/lib/parrot/library/Data/Replace.pir
++  /usr/lib/parrot/library/Data/Sort.pbc
++  /usr/lib/parrot/library/Data/Sort.pir
++  /usr/lib/parrot/library/Digest/MD5.pir
++  /usr/lib/parrot/library/File/Spec.pir
++  /usr/lib/parrot/library/File/Spec/Unix.pir
++  /usr/lib/parrot/library/File/Spec/Win32.pir
++  /usr/lib/parrot/library/Getopt/Obj.pbc
++  /usr/lib/parrot/library/Getopt/Obj.pir
++  /usr/lib/parrot/library/HTTP/Daemon.pir
++  /usr/lib/parrot/library/Iter.pir
++  /usr/lib/parrot/library/JSON.pir
++  /usr/lib/parrot/library/MIME/Base64.pbc
++  /usr/lib/parrot/library/MIME/Base64.pir
++  /usr/lib/parrot/library/Math/Random/mt19937ar.pir
++  /usr/lib/parrot/library/NCI/call_toolkit_init.pbc
++  /usr/lib/parrot/library/NCI/call_toolkit_init.pir
++  /usr/lib/parrot/library/OpenGL.pbc
++  /usr/lib/parrot/library/OpenGL.pir
++  /usr/lib/parrot/library/OpenGL_funcs.pir
++  /usr/lib/parrot/library/P6object.pbc
++  /usr/lib/parrot/library/P6object.pir
++  /usr/lib/parrot/library/PCT.pbc
++  /usr/lib/parrot/library/PCT/Grammar.pbc
++  /usr/lib/parrot/library/PCT/HLLCompiler.pbc
++  /usr/lib/parrot/library/PCT/PAST.pbc
++  /usr/lib/parrot/library/PCT/README
++  /usr/lib/parrot/library/PGE.pbc
++  /usr/lib/parrot/library/PGE/Dumper.pbc
++  /usr/lib/parrot/library/PGE/Dumper.pir
++  /usr/lib/parrot/library/PGE/Glob.pbc
++  /usr/lib/parrot/library/PGE/Glob.pir
++  /usr/lib/parrot/library/PGE/Hs.pir
++  /usr/lib/parrot/library/PGE/Perl6Grammar.pir
++  /usr/lib/parrot/library/PGE/Text.pbc
++  /usr/lib/parrot/library/PGE/Text.pir
++  /usr/lib/parrot/library/PGE/Util.pbc
++  /usr/lib/parrot/library/PGE/Util.pir
++  /usr/lib/parrot/library/Parrot/Capture_PIR.pbc
++  /usr/lib/parrot/library/Parrot/Capture_PIR.pir
++  /usr/lib/parrot/library/Parrot/Coroutine.pbc
++  /usr/lib/parrot/library/Parrot/Coroutine.pir
++  /usr/lib/parrot/library/Parrot/Exception.pbc
++  /usr/lib/parrot/library/Parrot/Exception.pir
++  /usr/lib/parrot/library/Pg.pir
++  /usr/lib/parrot/library/Protoobject.pbc
++  /usr/lib/parrot/library/Protoobject.pir
++  /usr/lib/parrot/library/Range.pir
++  /usr/lib/parrot/library/SDL.pir
++  /usr/lib/parrot/library/SDL/App.pir
++  /usr/lib/parrot/library/SDL/Button.pir
++  /usr/lib/parrot/library/SDL/Color.pir
++  /usr/lib/parrot/library/SDL/Constants.pir
++  /usr/lib/parrot/library/SDL/Event.pir
++  /usr/lib/parrot/library/SDL/EventHandler.pir
++  /usr/lib/parrot/library/SDL/Font.pir
++  /usr/lib/parrot/library/SDL/Image.pir
++  /usr/lib/parrot/library/SDL/LCD.pir
++  /usr/lib/parrot/library/SDL/LCD.png
++  /usr/lib/parrot/library/SDL/Rect.pir
++  /usr/lib/parrot/library/SDL/Sprite.pir
++  /usr/lib/parrot/library/SDL/StopWatch.pir
++  /usr/lib/parrot/library/SDL/Surface.pir
++  /usr/lib/parrot/library/STM.pir
++  /usr/lib/parrot/library/Stream/Base.pbc
++  /usr/lib/parrot/library/Stream/Base.pir
++  /usr/lib/parrot/library/Stream/Combiner.pbc
++  /usr/lib/parrot/library/Stream/Combiner.pir
++  /usr/lib/parrot/library/Stream/Coroutine.pbc
++  /usr/lib/parrot/library/Stream/Coroutine.pir
++  /usr/lib/parrot/library/Stream/Filter.pbc
++  /usr/lib/parrot/library/Stream/Filter.pir
++  /usr/lib/parrot/library/Stream/Lines.pbc
++  /usr/lib/parrot/library/Stream/Lines.pir
++  /usr/lib/parrot/library/Stream/ParrotIO.pbc
++  /usr/lib/parrot/library/Stream/ParrotIO.pir
++  /usr/lib/parrot/library/Stream/Replay.pbc
++  /usr/lib/parrot/library/Stream/Replay.pir
++  /usr/lib/parrot/library/Stream/Sub.pbc
++  /usr/lib/parrot/library/Stream/Sub.pir
++  /usr/lib/parrot/library/Stream/Writer.pbc
++  /usr/lib/parrot/library/Stream/Writer.pir
++  /usr/lib/parrot/library/String/Utils.pir
++  /usr/lib/parrot/library/TGE.pbc
++  /usr/lib/parrot/library/Tcl/Glob.pir
++  /usr/lib/parrot/library/Test/Builder.pir
++  /usr/lib/parrot/library/Test/Builder/Output.pir
++  /usr/lib/parrot/library/Test/Builder/Test.pir
++  /usr/lib/parrot/library/Test/Builder/TestPlan.pir
++  /usr/lib/parrot/library/Test/Builder/Tester.pir
++  /usr/lib/parrot/library/Test/Class.pir
++  /usr/lib/parrot/library/Test/More.pir
++  /usr/lib/parrot/library/YAML/Dumper.pir
++  /usr/lib/parrot/library/YAML/Dumper/Base.pir
++  /usr/lib/parrot/library/YAML/Dumper/Default.pir
++  /usr/lib/parrot/library/YAML/Parser/Syck.pir
++  /usr/lib/parrot/library/dumper.pbc
++  /usr/lib/parrot/library/dumper.pir
++  /usr/lib/parrot/library/libpcre.pir
++  /usr/lib/parrot/library/ncurses.declarations
++  /usr/lib/parrot/library/ncurses.pasm
++  /usr/lib/parrot/library/ncurses.pbc
++  /usr/lib/parrot/library/ncurses.pir
++  /usr/lib/parrot/library/parrotlib.pbc
++  /usr/lib/parrot/library/parrotlib.pir
++  /usr/lib/parrot/library/pcore.pir
++  /usr/lib/parrot/library/pcre.pbc
++  /usr/lib/parrot/library/pcre.pir
++  /usr/lib/parrot/library/postgres.declarations
++  /usr/lib/parrot/library/postgres.pasm
++  /usr/lib/parrot/library/postgres.pir
++  /usr/lib/parrot/library/random_lib.pir
++  /usr/lib/parrot/library/tcpstream.pir
++  /usr/lib/parrot/library/uuid.pir
++  /usr/lib/parrot/library/yaml_dumper.pir
++  /usr/share/doc/parrot-0.8.2/LICENSE
++  /usr/share/doc/parrot-0.8.2/RESPONSIBLE_PARTIES
++  /usr/share/doc/parrot-0.8.2/TODO
++  /usr/share/doc/parrot-0.8.2/docs/art/pp001-intro.pod
++  /usr/share/doc/parrot-0.8.2/docs/art/pp002-pmc.pod
++  /usr/share/doc/parrot-0.8.2/docs/art/pp003-oop.pod
++  /usr/share/doc/parrot-0.8.2/docs/book/appendix.pod
++  /usr/share/doc/parrot-0.8.2/docs/book/ch01_overview.pod
++  /usr/share/doc/parrot-0.8.2/docs/book/ch02_getting_started.pod
++  /usr/share/doc/parrot-0.8.2/docs/book/ch03_pir_basics.pod
++  /usr/share/doc/parrot-0.8.2/docs/book/ch04_pir_subroutines.pod
++  /usr/share/doc/parrot-0.8.2/docs/book/ch05_pasm.pod
++  /usr/share/doc/parrot-0.8.2/docs/book/ch06_testing.pod
++  /usr/share/doc/parrot-0.8.2/docs/book/ch07_architecture.pod
++  /usr/share/doc/parrot-0.8.2/docs/book/ch08_reference.pod
++  /usr/share/doc/parrot-0.8.2/docs/book/figs/p6e_0801.png
++  /usr/share/doc/parrot-0.8.2/docs/debugger.pod
++  /usr/share/doc/parrot-0.8.2/docs/dev/byteorder.pod
++  /usr/share/doc/parrot-0.8.2/docs/dev/debugging_with_msvc.pod
++  /usr/share/doc/parrot-0.8.2/docs/dev/headerizer.pod
++  /usr/share/doc/parrot-0.8.2/docs/dev/jit_i386.pod
++  /usr/share/doc/parrot-0.8.2/docs/dev/longopt.pod
++  /usr/share/doc/parrot-0.8.2/docs/dev/optimizer.pod
++  /usr/share/doc/parrot-0.8.2/docs/dev/parrot_api.pod
++  /usr/share/doc/parrot-0.8.2/docs/dev/pcc_state.pod
++  /usr/share/doc/parrot-0.8.2/docs/dev/pccmethods.pod
++  /usr/share/doc/parrot-0.8.2/docs/dev/pmc_obj_design_meeting_notes.pod
++  /usr/share/doc/parrot-0.8.2/docs/dev/seatbelts.pod
++  /usr/share/doc/parrot-0.8.2/docs/embed.pod
++  /usr/share/doc/parrot-0.8.2/docs/extend.pod
++  /usr/share/doc/parrot-0.8.2/docs/faq.pod
++  /usr/share/doc/parrot-0.8.2/docs/gettingstarted.pod
++  /usr/share/doc/parrot-0.8.2/docs/glossary.pod
++  /usr/share/doc/parrot-0.8.2/docs/imcc/README
++  /usr/share/doc/parrot-0.8.2/docs/imcc/imcfaq.pod
++  /usr/share/doc/parrot-0.8.2/docs/imcc/operation.pod
++  /usr/share/doc/parrot-0.8.2/docs/intro.pod
++  /usr/share/doc/parrot-0.8.2/docs/jit.pod
++  /usr/share/doc/parrot-0.8.2/docs/memory_internals.pod
++  /usr/share/doc/parrot-0.8.2/docs/mmd.pod
++  /usr/share/doc/parrot-0.8.2/docs/native_exec.pod
++  /usr/share/doc/parrot-0.8.2/docs/ops/bit.pod
++  /usr/share/doc/parrot-0.8.2/docs/ops/cmp.pod
++  /usr/share/doc/parrot-0.8.2/docs/ops/core.pod
++  /usr/share/doc/parrot-0.8.2/docs/ops/debug.pod
++  /usr/share/doc/parrot-0.8.2/docs/ops/experimental.pod
++  /usr/share/doc/parrot-0.8.2/docs/ops/io.pod
++  /usr/share/doc/parrot-0.8.2/docs/ops/math.pod
++  /usr/share/doc/parrot-0.8.2/docs/ops/object.pod
++  /usr/share/doc/parrot-0.8.2/docs/ops/obscure.pod
++  /usr/share/doc/parrot-0.8.2/docs/ops/pic.pod
++  /usr/share/doc/parrot-0.8.2/docs/ops/pmc.pod
++  /usr/share/doc/parrot-0.8.2/docs/ops/set.pod
++  /usr/share/doc/parrot-0.8.2/docs/ops/string.pod
++  /usr/share/doc/parrot-0.8.2/docs/ops/sys.pod
++  /usr/share/doc/parrot-0.8.2/docs/ops/var.pod
++  /usr/share/doc/parrot-0.8.2/docs/optable.pod
++  /usr/share/doc/parrot-0.8.2/docs/overview.pod
++  /usr/share/doc/parrot-0.8.2/docs/parrot.pod
++  /usr/share/doc/parrot-0.8.2/docs/parrotbyte.pod
++  /usr/share/doc/parrot-0.8.2/docs/parrothist.pod
++  /usr/share/doc/parrot-0.8.2/docs/pct/gettingstarted.pod
++  /usr/share/doc/parrot-0.8.2/docs/pct/past_building_blocks.pod
++  /usr/share/doc/parrot-0.8.2/docs/pct/pct_optable_guide.pod
++  /usr/share/doc/parrot-0.8.2/docs/pdds/README
++  /usr/share/doc/parrot-0.8.2/docs/pdds/draft/pdd01_overview.pod
++  /usr/share/doc/parrot-0.8.2/docs/pdds/draft/pdd04_datatypes.pod
++  /usr/share/doc/parrot-0.8.2/docs/pdds/draft/pdd05_opfunc.pod
++  /usr/share/doc/parrot-0.8.2/docs/pdds/draft/pdd06_pasm.pod
++  /usr/share/doc/parrot-0.8.2/docs/pdds/draft/pdd08_keys.pod
++  /usr/share/doc/parrot-0.8.2/docs/pdds/draft/pdd10_embedding.pod
++  /usr/share/doc/parrot-0.8.2/docs/pdds/draft/pdd11_extending.pod
++  /usr/share/doc/parrot-0.8.2/docs/pdds/draft/pdd14_bignum.pod
++  /usr/share/doc/parrot-0.8.2/docs/pdds/draft/pdd16_native_call.pod
++  /usr/share/doc/parrot-0.8.2/docs/pdds/draft/pdd19_pir.pod
++  /usr/share/doc/parrot-0.8.2/docs/pdds/draft/pdd29_compiler_tools.pod
++  /usr/share/doc/parrot-0.8.2/docs/pdds/draft/pdd30_install.pod
++  /usr/share/doc/parrot-0.8.2/docs/pdds/pdd00_pdd.pod
++  /usr/share/doc/parrot-0.8.2/docs/pdds/pdd03_calling_conventions.pod
++  /usr/share/doc/parrot-0.8.2/docs/pdds/pdd07_codingstd.pod
++  /usr/share/doc/parrot-0.8.2/docs/pdds/pdd09_gc.pod
++  /usr/share/doc/parrot-0.8.2/docs/pdds/pdd13_bytecode.pod
++  /usr/share/doc/parrot-0.8.2/docs/pdds/pdd15_object_metamodel.png
++  /usr/share/doc/parrot-0.8.2/docs/pdds/pdd15_object_metamodel.svg
++  /usr/share/doc/parrot-0.8.2/docs/pdds/pdd15_objects.pod
++  /usr/share/doc/parrot-0.8.2/docs/pdds/pdd17_pmc.pod
++  /usr/share/doc/parrot-0.8.2/docs/pdds/pdd18_security.pod
++  /usr/share/doc/parrot-0.8.2/docs/pdds/pdd20_lexical_vars.pod
++  /usr/share/doc/parrot-0.8.2/docs/pdds/pdd21_namespaces.pod
++  /usr/share/doc/parrot-0.8.2/docs/pdds/pdd22_io.pod
++  /usr/share/doc/parrot-0.8.2/docs/pdds/pdd23_exceptions.pod
++  /usr/share/doc/parrot-0.8.2/docs/pdds/pdd24_events.pod
++  /usr/share/doc/parrot-0.8.2/docs/pdds/pdd25_concurrency.pod
++  /usr/share/doc/parrot-0.8.2/docs/pdds/pdd26_ast.pod
++  /usr/share/doc/parrot-0.8.2/docs/pdds/pdd27_multiple_dispatch.pod
++  /usr/share/doc/parrot-0.8.2/docs/pdds/pdd28_strings.pod
++  /usr/share/doc/parrot-0.8.2/docs/pdds/pdd_template.pod
++  /usr/share/doc/parrot-0.8.2/docs/pmc.pod
++  /usr/share/doc/parrot-0.8.2/docs/pmc/array.pod
++  /usr/share/doc/parrot-0.8.2/docs/pmc/documentation.pod
++  /usr/share/doc/parrot-0.8.2/docs/pmc/struct.pod
++  /usr/share/doc/parrot-0.8.2/docs/pmc/subs.pod
++  /usr/share/doc/parrot-0.8.2/docs/pmc2c.pod
++  /usr/share/doc/parrot-0.8.2/docs/porting_intro.pod
++  /usr/share/doc/parrot-0.8.2/docs/project/cage_cleaners_guide.pod
++  /usr/share/doc/parrot-0.8.2/docs/project/committer_guide.pod
++  /usr/share/doc/parrot-0.8.2/docs/project/debian_packaging_guide.pod
++  /usr/share/doc/parrot-0.8.2/docs/project/metacommitter_guide.pod
++  /usr/share/doc/parrot-0.8.2/docs/project/pause_guide.pod
++  /usr/share/doc/parrot-0.8.2/docs/project/release_manager_guide.pod
++  /usr/share/doc/parrot-0.8.2/docs/project/roles_responsibilities.pod
++  /usr/share/doc/parrot-0.8.2/docs/project/ticket_wrangler_guide.pod
++  /usr/share/doc/parrot-0.8.2/docs/req/model_users.pod
++  /usr/share/doc/parrot-0.8.2/docs/resources/favicon.ico
++  /usr/share/doc/parrot-0.8.2/docs/resources/parrot_small.png
++  /usr/share/doc/parrot-0.8.2/docs/resources/perl.css
++  /usr/share/doc/parrot-0.8.2/docs/resources/up.gif
++  /usr/share/doc/parrot-0.8.2/docs/running.pod
++  /usr/share/doc/parrot-0.8.2/docs/stability.pod
++  /usr/share/doc/parrot-0.8.2/docs/stm/atomic.pod
++  /usr/share/doc/parrot-0.8.2/docs/stm/howto.pod
++  /usr/share/doc/parrot-0.8.2/docs/stm/internals.pod
++  /usr/share/doc/parrot-0.8.2/docs/stm/stm_frontend.pod
++  /usr/share/doc/parrot-0.8.2/docs/stm/thread-issues.pod
++  /usr/share/doc/parrot-0.8.2/docs/submissions.pod
++  /usr/share/doc/parrot-0.8.2/docs/tests.pod
++  /usr/share/doc/parrot-0.8.2/docs/vtables.pod
++  /usr/share/doc/parrot-0.8.2/examples/README
++  /usr/share/doc/parrot-0.8.2/examples/benchmarks/addit.pasm
++  /usr/share/doc/parrot-0.8.2/examples/benchmarks/addit.pir
++  /usr/share/doc/parrot-0.8.2/examples/benchmarks/addit.pl
++  /usr/share/doc/parrot-0.8.2/examples/benchmarks/addit.rb
++  /usr/share/doc/parrot-0.8.2/examples/benchmarks/addit2.pir
++  /usr/share/doc/parrot-0.8.2/examples/benchmarks/array_access.pir
++  /usr/share/doc/parrot-0.8.2/examples/benchmarks/arriter.pir
++  /usr/share/doc/parrot-0.8.2/examples/benchmarks/arriter.pl
++  /usr/share/doc/parrot-0.8.2/examples/benchmarks/arriter.rb
++  /usr/share/doc/parrot-0.8.2/examples/benchmarks/arriter_o1.pir
++  /usr/share/doc/parrot-0.8.2/examples/benchmarks/bench_newp.pasm
++  /usr/share/doc/parrot-0.8.2/examples/benchmarks/fib.pir
++  /usr/share/doc/parrot-0.8.2/examples/benchmarks/fib.pl
++  /usr/share/doc/parrot-0.8.2/examples/benchmarks/fib.py
++  /usr/share/doc/parrot-0.8.2/examples/benchmarks/fib.rb
++  /usr/share/doc/parrot-0.8.2/examples/benchmarks/float4.pir
++  /usr/share/doc/parrot-0.8.2/examples/benchmarks/freeze.pasm
++  /usr/share/doc/parrot-0.8.2/examples/benchmarks/freeze.pl
++  /usr/share/doc/parrot-0.8.2/examples/benchmarks/gc_alloc_new.pasm
++  /usr/share/doc/parrot-0.8.2/examples/benchmarks/gc_alloc_reuse.pasm
++  /usr/share/doc/parrot-0.8.2/examples/benchmarks/gc_generations.pasm
++  /usr/share/doc/parrot-0.8.2/examples/benchmarks/gc_header_new.pasm
++  /usr/share/doc/parrot-0.8.2/examples/benchmarks/gc_header_reuse.pasm
++  /usr/share/doc/parrot-0.8.2/examples/benchmarks/gc_waves_headers.pasm
++  /usr/share/doc/parrot-0.8.2/examples/benchmarks/gc_waves_sizeable_data.pasm
++  /usr/share/doc/parrot-0.8.2/examples/benchmarks/gc_waves_sizeable_headers.pasm
++  /usr/share/doc/parrot-0.8.2/examples/benchmarks/mops.pasm
++  /usr/share/doc/parrot-0.8.2/examples/benchmarks/mops.pl
++  /usr/share/doc/parrot-0.8.2/examples/benchmarks/mops_intval.pasm
++  /usr/share/doc/parrot-0.8.2/examples/benchmarks/oo1.pasm
++  /usr/share/doc/parrot-0.8.2/examples/benchmarks/oo1.pl
++  /usr/share/doc/parrot-0.8.2/examples/benchmarks/oo1.py
++  /usr/share/doc/parrot-0.8.2/examples/benchmarks/oo1.rb
++  /usr/share/doc/parrot-0.8.2/examples/benchmarks/oo2.pasm
++  /usr/share/doc/parrot-0.8.2/examples/benchmarks/oo2.pl
++  /usr/share/doc/parrot-0.8.2/examples/benchmarks/oo2.py
++  /usr/share/doc/parrot-0.8.2/examples/benchmarks/oo2.rb
++  /usr/share/doc/parrot-0.8.2/examples/benchmarks/oo3.pasm
++  /usr/share/doc/parrot-0.8.2/examples/benchmarks/oo3.pl
++  /usr/share/doc/parrot-0.8.2/examples/benchmarks/oo3.py
++  /usr/share/doc/parrot-0.8.2/examples/benchmarks/oo3.rb
++  /usr/share/doc/parrot-0.8.2/examples/benchmarks/oo4.pasm
++  /usr/share/doc/parrot-0.8.2/examples/benchmarks/oo4.pl
++  /usr/share/doc/parrot-0.8.2/examples/benchmarks/oo4.py
++  /usr/share/doc/parrot-0.8.2/examples/benchmarks/oo4.rb
++  /usr/share/doc/parrot-0.8.2/examples/benchmarks/oo5.pir
++  /usr/share/doc/parrot-0.8.2/examples/benchmarks/oo5.pl
++  /usr/share/doc/parrot-0.8.2/examples/benchmarks/oo5.py
++  /usr/share/doc/parrot-0.8.2/examples/benchmarks/oo5.rb
++  /usr/share/doc/parrot-0.8.2/examples/benchmarks/oo6.pir
++  /usr/share/doc/parrot-0.8.2/examples/benchmarks/oo6.pl
++  /usr/share/doc/parrot-0.8.2/examples/benchmarks/oo6.py
++  /usr/share/doc/parrot-0.8.2/examples/benchmarks/oo6.rb
++  /usr/share/doc/parrot-0.8.2/examples/benchmarks/oofib.pir
++  /usr/share/doc/parrot-0.8.2/examples/benchmarks/oofib.pl
++  /usr/share/doc/parrot-0.8.2/examples/benchmarks/oofib.py
++  /usr/share/doc/parrot-0.8.2/examples/benchmarks/oofib.rb
++  /usr/share/doc/parrot-0.8.2/examples/benchmarks/oon.txt
++  /usr/share/doc/parrot-0.8.2/examples/benchmarks/overload.pir
++  /usr/share/doc/parrot-0.8.2/examples/benchmarks/overload.pl
++  /usr/share/doc/parrot-0.8.2/examples/benchmarks/primes.c
++  /usr/share/doc/parrot-0.8.2/examples/benchmarks/primes.pasm
++  /usr/share/doc/parrot-0.8.2/examples/benchmarks/primes.pl
++  /usr/share/doc/parrot-0.8.2/examples/benchmarks/primes2.c
++  /usr/share/doc/parrot-0.8.2/examples/benchmarks/primes2.pir
++  /usr/share/doc/parrot-0.8.2/examples/benchmarks/primes2.pl
++  /usr/share/doc/parrot-0.8.2/examples/benchmarks/primes2.py
++  /usr/share/doc/parrot-0.8.2/examples/benchmarks/primes2.rb
++  /usr/share/doc/parrot-0.8.2/examples/benchmarks/primes2_i.pir
++  /usr/share/doc/parrot-0.8.2/examples/benchmarks/primes_i.pasm
++  /usr/share/doc/parrot-0.8.2/examples/benchmarks/shared_ref.pasm
++  /usr/share/doc/parrot-0.8.2/examples/benchmarks/shared_ref.pl
++  /usr/share/doc/parrot-0.8.2/examples/benchmarks/stress.pasm
++  /usr/share/doc/parrot-0.8.2/examples/benchmarks/stress.pl
++  /usr/share/doc/parrot-0.8.2/examples/benchmarks/stress.rb
++  /usr/share/doc/parrot-0.8.2/examples/benchmarks/stress1.pasm
++  /usr/share/doc/parrot-0.8.2/examples/benchmarks/stress1.pl
++  /usr/share/doc/parrot-0.8.2/examples/benchmarks/stress2.pasm
++  /usr/share/doc/parrot-0.8.2/examples/benchmarks/stress2.pl
++  /usr/share/doc/parrot-0.8.2/examples/benchmarks/stress2.rb
++  /usr/share/doc/parrot-0.8.2/examples/benchmarks/stress3.pasm
++  /usr/share/doc/parrot-0.8.2/examples/benchmarks/vpm.pir
++  /usr/share/doc/parrot-0.8.2/examples/benchmarks/vpm.pl
++  /usr/share/doc/parrot-0.8.2/examples/benchmarks/vpm.py
++  /usr/share/doc/parrot-0.8.2/examples/benchmarks/vpm.rb
++  /usr/share/doc/parrot-0.8.2/examples/c/nanoparrot.c
++  /usr/share/doc/parrot-0.8.2/examples/c/test_main.c
++  /usr/share/doc/parrot-0.8.2/examples/compilers/Makefile
++  /usr/share/doc/parrot-0.8.2/examples/compilers/japhc.c
++  /usr/share/doc/parrot-0.8.2/examples/io/async_select.pir
++  /usr/share/doc/parrot-0.8.2/examples/io/echo_client.pir
++  /usr/share/doc/parrot-0.8.2/examples/io/http.pir
++  /usr/share/doc/parrot-0.8.2/examples/io/httpd.pir
++  /usr/share/doc/parrot-0.8.2/examples/io/httpd2.pir
++  /usr/share/doc/parrot-0.8.2/examples/io/net_smtp.pasm
++  /usr/share/doc/parrot-0.8.2/examples/io/pioctl.pasm
++  /usr/share/doc/parrot-0.8.2/examples/io/pipe2.pir
++  /usr/share/doc/parrot-0.8.2/examples/io/pipe3.pir
++  /usr/share/doc/parrot-0.8.2/examples/japh/README
++  /usr/share/doc/parrot-0.8.2/examples/japh/japh1.pasm
++  /usr/share/doc/parrot-0.8.2/examples/japh/japh2.pasm
++  /usr/share/doc/parrot-0.8.2/examples/japh/japh3.pasm
++  /usr/share/doc/parrot-0.8.2/examples/japh/japh4.pasm
++  /usr/share/doc/parrot-0.8.2/examples/japh/japh5.pasm
++  /usr/share/doc/parrot-0.8.2/examples/library/acorn.l
++  /usr/share/doc/parrot-0.8.2/examples/library/getopt_demo.pir
++  /usr/share/doc/parrot-0.8.2/examples/library/md5sum.pir
++  /usr/share/doc/parrot-0.8.2/examples/library/ncurses_life.pir
++  /usr/share/doc/parrot-0.8.2/examples/library/pcre.pir
++  /usr/share/doc/parrot-0.8.2/examples/mops/README
++  /usr/share/doc/parrot-0.8.2/examples/mops/mops.c
++  /usr/share/doc/parrot-0.8.2/examples/mops/mops.cs
++  /usr/share/doc/parrot-0.8.2/examples/mops/mops.il
++  /usr/share/doc/parrot-0.8.2/examples/mops/mops.p6
++  /usr/share/doc/parrot-0.8.2/examples/mops/mops.pl
++  /usr/share/doc/parrot-0.8.2/examples/mops/mops.ps
++  /usr/share/doc/parrot-0.8.2/examples/mops/mops.py
++  /usr/share/doc/parrot-0.8.2/examples/mops/mops.rb
++  /usr/share/doc/parrot-0.8.2/examples/mops/mops.scheme
++  /usr/share/doc/parrot-0.8.2/examples/namespace/namespace_dump.pir
++  /usr/share/doc/parrot-0.8.2/examples/nci/PQt.C
++  /usr/share/doc/parrot-0.8.2/examples/nci/QtHelloWorld.pasm
++  /usr/share/doc/parrot-0.8.2/examples/nci/ls.pir
++  /usr/share/doc/parrot-0.8.2/examples/nci/sdl_blue_rectangle.pir
++  /usr/share/doc/parrot-0.8.2/examples/nci/win32api.pir
++  /usr/share/doc/parrot-0.8.2/examples/opengl/shapes.pir
++  /usr/share/doc/parrot-0.8.2/examples/opengl/triangle.pir
++  /usr/share/doc/parrot-0.8.2/examples/pasm/cat.pasm
++  /usr/share/doc/parrot-0.8.2/examples/pasm/fact.pasm
++  /usr/share/doc/parrot-0.8.2/examples/pasm/hello.pasm
++  /usr/share/doc/parrot-0.8.2/examples/pasm/nanoforth.pasm
++  /usr/share/doc/parrot-0.8.2/examples/pasm/nanoforth2.pasm
++  /usr/share/doc/parrot-0.8.2/examples/pasm/small.xml
++  /usr/share/doc/parrot-0.8.2/examples/pasm/trace.pasm
++  /usr/share/doc/parrot-0.8.2/examples/pasm/xml_parser.pasm
++  /usr/share/doc/parrot-0.8.2/examples/past/01-sub.pir
++  /usr/share/doc/parrot-0.8.2/examples/past/blocktype_immediate.pir
++  /usr/share/doc/parrot-0.8.2/examples/past/four_plus_one.pir
++  /usr/share/doc/parrot-0.8.2/examples/pge/README
++  /usr/share/doc/parrot-0.8.2/examples/pge/TAP_grammar.pg
++  /usr/share/doc/parrot-0.8.2/examples/pge/benchmarks/ambs1/Makefile
++  /usr/share/doc/parrot-0.8.2/examples/pge/benchmarks/ambs1/ambs1.pg
++  /usr/share/doc/parrot-0.8.2/examples/pge/benchmarks/ambs1/main.pir
++  /usr/share/doc/parrot-0.8.2/examples/pge/benchmarks/ambs1/mktestcase
++  /usr/share/doc/parrot-0.8.2/examples/pge/grammars/IO.pg
++  /usr/share/doc/parrot-0.8.2/examples/pge/grammars/PatchGrammar.pg
++  /usr/share/doc/parrot-0.8.2/examples/pge/simple.pir
++  /usr/share/doc/parrot-0.8.2/examples/pir/circle.pir
++  /usr/share/doc/parrot-0.8.2/examples/pir/euclid.pir
++  /usr/share/doc/parrot-0.8.2/examples/pir/hanoi.pir
++  /usr/share/doc/parrot-0.8.2/examples/pir/hello-dwim.pir
++  /usr/share/doc/parrot-0.8.2/examples/pir/io.pir
++  /usr/share/doc/parrot-0.8.2/examples/pir/levenshtein.pir
++  /usr/share/doc/parrot-0.8.2/examples/pir/life.pir
++  /usr/share/doc/parrot-0.8.2/examples/pir/local_label.pir
++  /usr/share/doc/parrot-0.8.2/examples/pir/mandel.pir
++  /usr/share/doc/parrot-0.8.2/examples/pir/queens_r.pir
++  /usr/share/doc/parrot-0.8.2/examples/pir/quine_ord.pir
++  /usr/share/doc/parrot-0.8.2/examples/pir/readline.pir
++  /usr/share/doc/parrot-0.8.2/examples/pir/substr.pir
++  /usr/share/doc/parrot-0.8.2/examples/pir/sudoku.pir
++  /usr/share/doc/parrot-0.8.2/examples/pir/thr-primes.pir
++  /usr/share/doc/parrot-0.8.2/examples/pir/uniq.pir
++  /usr/share/doc/parrot-0.8.2/examples/sdl/blue_rect.pl
++  /usr/share/doc/parrot-0.8.2/examples/sdl/mandel.pir
++  /usr/share/doc/parrot-0.8.2/examples/sdl/minesweeper/README
++  /usr/share/doc/parrot-0.8.2/examples/sdl/minesweeper/eventhandler.pir
++  /usr/share/doc/parrot-0.8.2/examples/sdl/minesweeper/field.pir
++  /usr/share/doc/parrot-0.8.2/examples/sdl/minesweeper/mines.pir
++  /usr/share/doc/parrot-0.8.2/examples/sdl/minesweeper/mines.png
++  /usr/share/doc/parrot-0.8.2/examples/sdl/minesweeper/mines_debug.png
++  /usr/share/doc/parrot-0.8.2/examples/sdl/minesweeper/smiley.png
++  /usr/share/doc/parrot-0.8.2/examples/sdl/tetris/README
++  /usr/share/doc/parrot-0.8.2/examples/sdl/tetris/app.pir
++  /usr/share/doc/parrot-0.8.2/examples/sdl/tetris/block.pir
++  /usr/share/doc/parrot-0.8.2/examples/sdl/tetris/blockdata.pir
++  /usr/share/doc/parrot-0.8.2/examples/sdl/tetris/blocks.pir
++  /usr/share/doc/parrot-0.8.2/examples/sdl/tetris/board.pir
++  /usr/share/doc/parrot-0.8.2/examples/sdl/tetris/boarddata.pir
++  /usr/share/doc/parrot-0.8.2/examples/sdl/tetris/eventhandler.pir
++  /usr/share/doc/parrot-0.8.2/examples/sdl/tetris/tetris.pir
++  /usr/share/doc/parrot-0.8.2/examples/shootout/README
++  /usr/share/doc/parrot-0.8.2/examples/shootout/ack.pir
++  /usr/share/doc/parrot-0.8.2/examples/shootout/ack.pir_output
++  /usr/share/doc/parrot-0.8.2/examples/shootout/ack.py
++  /usr/share/doc/parrot-0.8.2/examples/shootout/binarytrees.pir
++  /usr/share/doc/parrot-0.8.2/examples/shootout/binarytrees.pir_output
++  /usr/share/doc/parrot-0.8.2/examples/shootout/fannkuch.pir
++  /usr/share/doc/parrot-0.8.2/examples/shootout/fannkuch.pir_output
++  /usr/share/doc/parrot-0.8.2/examples/shootout/fannkuch.py
++  /usr/share/doc/parrot-0.8.2/examples/shootout/fasta.pir
++  /usr/share/doc/parrot-0.8.2/examples/shootout/fasta.pir_output
++  /usr/share/doc/parrot-0.8.2/examples/shootout/harmonic.pir
++  /usr/share/doc/parrot-0.8.2/examples/shootout/knucleotide.pir
++  /usr/share/doc/parrot-0.8.2/examples/shootout/knucleotide.pir_input
++  /usr/share/doc/parrot-0.8.2/examples/shootout/knucleotide.pir_output
++  /usr/share/doc/parrot-0.8.2/examples/shootout/mandelbrot.pir
++  /usr/share/doc/parrot-0.8.2/examples/shootout/mandelbrot.pir_output
++  /usr/share/doc/parrot-0.8.2/examples/shootout/nbody.pir
++  /usr/share/doc/parrot-0.8.2/examples/shootout/nbody.pir_output
++  /usr/share/doc/parrot-0.8.2/examples/shootout/nsieve-bits-2.pir
++  /usr/share/doc/parrot-0.8.2/examples/shootout/nsieve-bits-2.pir_output
++  /usr/share/doc/parrot-0.8.2/examples/shootout/nsieve-bits.pir
++  /usr/share/doc/parrot-0.8.2/examples/shootout/nsieve-bits.pir_output
++  /usr/share/doc/parrot-0.8.2/examples/shootout/nsieve.pir
++  /usr/share/doc/parrot-0.8.2/examples/shootout/nsieve.pir_output
++  /usr/share/doc/parrot-0.8.2/examples/shootout/partialsums-2.pir
++  /usr/share/doc/parrot-0.8.2/examples/shootout/partialsums-2.pir_output
++  /usr/share/doc/parrot-0.8.2/examples/shootout/partialsums.pir
++  /usr/share/doc/parrot-0.8.2/examples/shootout/partialsums.pir_output
++  /usr/share/doc/parrot-0.8.2/examples/shootout/pidigits.pir
++  /usr/share/doc/parrot-0.8.2/examples/shootout/pidigits.pir_output
++  /usr/share/doc/parrot-0.8.2/examples/shootout/pidigits.py
++  /usr/share/doc/parrot-0.8.2/examples/shootout/random.pasm
++  /usr/share/doc/parrot-0.8.2/examples/shootout/random.pir
++  /usr/share/doc/parrot-0.8.2/examples/shootout/recursive-2.pir
++  /usr/share/doc/parrot-0.8.2/examples/shootout/recursive-2.pir_output
++  /usr/share/doc/parrot-0.8.2/examples/shootout/recursive.pir
++  /usr/share/doc/parrot-0.8.2/examples/shootout/recursive.pir_output
++  /usr/share/doc/parrot-0.8.2/examples/shootout/regexdna.pir
++  /usr/share/doc/parrot-0.8.2/examples/shootout/regexdna.pir_input
++  /usr/share/doc/parrot-0.8.2/examples/shootout/regexdna.pir_output
++  /usr/share/doc/parrot-0.8.2/examples/shootout/revcomp.pir
++  /usr/share/doc/parrot-0.8.2/examples/shootout/revcomp.pir_input
++  /usr/share/doc/parrot-0.8.2/examples/shootout/revcomp.pir_output
++  /usr/share/doc/parrot-0.8.2/examples/shootout/spectralnorm.pir
++  /usr/share/doc/parrot-0.8.2/examples/shootout/spectralnorm.pir_output
++  /usr/share/doc/parrot-0.8.2/examples/shootout/sumcol.pir
++  /usr/share/doc/parrot-0.8.2/examples/shootout/sumcol.pir_input
++  /usr/share/doc/parrot-0.8.2/examples/shootout/sumcol.pir_output
++  /usr/share/doc/parrot-0.8.2/examples/shootout/takfp.pir
++  /usr/share/doc/parrot-0.8.2/examples/shootout/takfp.pir_output
++  /usr/share/doc/parrot-0.8.2/examples/streams/Bytes.pir
++  /usr/share/doc/parrot-0.8.2/examples/streams/Combiner.pir
++  /usr/share/doc/parrot-0.8.2/examples/streams/Coroutine.pir
++  /usr/share/doc/parrot-0.8.2/examples/streams/FileLines.pir
++  /usr/share/doc/parrot-0.8.2/examples/streams/Filter.pir
++  /usr/share/doc/parrot-0.8.2/examples/streams/Include.pir
++  /usr/share/doc/parrot-0.8.2/examples/streams/Lines.pir
++  /usr/share/doc/parrot-0.8.2/examples/streams/ParrotIO.pir
++  /usr/share/doc/parrot-0.8.2/examples/streams/Replay.pir
++  /usr/share/doc/parrot-0.8.2/examples/streams/SubCounter.pir
++  /usr/share/doc/parrot-0.8.2/examples/streams/SubHello.pir
++  /usr/share/doc/parrot-0.8.2/examples/streams/Writer.pir
++  /usr/share/doc/parrot-0.8.2/examples/subs/bsr_ret.pasm
++  /usr/share/doc/parrot-0.8.2/examples/subs/coroutine.pasm
++  /usr/share/doc/parrot-0.8.2/examples/subs/jsr_ret.pasm
++  /usr/share/doc/parrot-0.8.2/examples/subs/multi_retvals.pir
++  /usr/share/doc/parrot-0.8.2/examples/subs/no_retval.pir
++  /usr/share/doc/parrot-0.8.2/examples/subs/pasm_sub1.pasm
++  /usr/share/doc/parrot-0.8.2/examples/subs/single_retval.pir
++  /usr/share/doc/parrot-0.8.2/examples/tge/README
++  /usr/share/doc/parrot-0.8.2/examples/tge/branch/branch.g
++  /usr/share/doc/parrot-0.8.2/examples/tge/branch/lib/Branch.pir
++  /usr/share/doc/parrot-0.8.2/examples/tge/branch/lib/Leaf.pir
++  /usr/share/doc/parrot-0.8.2/examples/tge/branch/transform.pir
++  /usr/share/doc/parrot-0.8.2/examples/tutorial/00_README.pod
++  /usr/share/doc/parrot-0.8.2/examples/tutorial/01_temp_var.pir
++  /usr/share/doc/parrot-0.8.2/examples/tutorial/02_local_var.pir
++  /usr/share/doc/parrot-0.8.2/examples/tutorial/03_temp_var_basic_pmcs.pir
++  /usr/share/doc/parrot-0.8.2/examples/tutorial/04_pod_comments.pir
++  /usr/share/doc/parrot-0.8.2/examples/tutorial/10_math_ops.pir
++  /usr/share/doc/parrot-0.8.2/examples/tutorial/11_math_ops_self_mod.pir
++  /usr/share/doc/parrot-0.8.2/examples/tutorial/12_math_ops_pasm.pir
++  /usr/share/doc/parrot-0.8.2/examples/tutorial/13_logical_ops.pir
++  /usr/share/doc/parrot-0.8.2/examples/tutorial/20_string_ops.pir
++  /usr/share/doc/parrot-0.8.2/examples/tutorial/21_string_ops_repeat.pir
++  /usr/share/doc/parrot-0.8.2/examples/tutorial/22_string_ops_length.pir
++  /usr/share/doc/parrot-0.8.2/examples/tutorial/23_string_ops_substr.pir
++  /usr/share/doc/parrot-0.8.2/examples/tutorial/24_string_ops_clone.pir
++  /usr/share/doc/parrot-0.8.2/examples/tutorial/30_arrays_basic.pir
++  /usr/share/doc/parrot-0.8.2/examples/tutorial/31_array_ops_split.pir
++  /usr/share/doc/parrot-0.8.2/examples/tutorial/32_array_ops_sprintf.pir
++  /usr/share/doc/parrot-0.8.2/examples/tutorial/33_hashes.pir
++  /usr/share/doc/parrot-0.8.2/examples/tutorial/34_multikey.pir
++  /usr/share/doc/parrot-0.8.2/examples/tutorial/40_file_ops.pir
++  /usr/share/doc/parrot-0.8.2/examples/tutorial/50_goto.pir
++  /usr/share/doc/parrot-0.8.2/examples/tutorial/51_if_unless.pir
++  /usr/share/doc/parrot-0.8.2/examples/tutorial/52_if_compare.pir
++  /usr/share/doc/parrot-0.8.2/examples/tutorial/53_loop.pir
++  /usr/share/doc/parrot-0.8.2/examples/tutorial/55_iterator.pir
++  /usr/share/doc/parrot-0.8.2/examples/tutorial/56_defined.pir
++  /usr/share/doc/parrot-0.8.2/examples/tutorial/57_exists.pir
++  /usr/share/doc/parrot-0.8.2/examples/tutorial/60_subroutines.pir
++  /usr/share/doc/parrot-0.8.2/examples/tutorial/61_namespaces.pir
++  /usr/share/doc/parrot-0.8.2/examples/tutorial/62_namespaces.pir
++  /usr/share/doc/parrot-0.8.2/examples/tutorial/70_class_object.pir
++  /usr/share/doc/parrot-0.8.2/examples/tutorial/80_closure.pir
++  /usr/share/doc/parrot-0.8.2/examples/tutorial/81_continuation.pir
++  /usr/share/doc/parrot-0.8.2/examples/tutorial/82_coroutine.pir
++  /usr/share/doc/parrot-0.8.2/examples/tutorial/83_external_libraries.pir
++  /usr/share/doc/parrot-0.8.2/examples/tutorial/90_writing_tests.pir
++  /usr/share/emacs/site-lisp/parrot.el
++  /usr/share/emacs/site-lisp/parrot.README
++  /usr/share/emacs/site-lisp/pasm.el
++  /usr/share/emacs/site-lisp/pir-mode.el
++  /usr/share/man/man1/parrot.1.gz
++  /usr/share/man/man1/parrot_debugger.1.gz
++  /usr/share/man/man1/pbc_disassemble.1.gz
++  /usr/share/man/man1/pbc_info.1.gz
++  /usr/share/man/man1/pbc_merge.1.gz
++  /usr/share/man/man1/pbc_to_exe.1.gz
++  /usr/share/vim/vimfiles/ftplugin/parrot.vim
++  /usr/share/vim/vimfiles/syntax/pasm.vim
++  /usr/share/vim/vimfiles/syntax/pir.vim
++  /usr/share/vim/vimfiles/syntax/pmc.vim
++
++Files included in the =libparrot0= package:
++
++  /usr/bin/cygparrot0.8.2.dll
++
++Files included in the =libparrot-devel= package:
++
++  /usr/bin/parrot-config
++  /usr/include/parrot.h
++  /usr/include/parrot/atomic.h
++  /usr/include/parrot/atomic/fallback.h
++  /usr/include/parrot/atomic/gcc_pcc.h
++  /usr/include/parrot/atomic/gcc_x86.h
++  /usr/include/parrot/atomic/sparc.h
++  /usr/include/parrot/builtin.h
++  /usr/include/parrot/caches.h
++  /usr/include/parrot/cclass.h
++  /usr/include/parrot/charset.h
++  /usr/include/parrot/compiler.h
++  /usr/include/parrot/config.h
++  /usr/include/parrot/core_pmcs.h
++  /usr/include/parrot/datatypes.h
++  /usr/include/parrot/debug.h
++  /usr/include/parrot/dod.h
++  /usr/include/parrot/dynext.h
++  /usr/include/parrot/embed.h
++  /usr/include/parrot/encoding.h
++  /usr/include/parrot/enums.h
++  /usr/include/parrot/events.h
++  /usr/include/parrot/exceptions.h
++  /usr/include/parrot/exec.h
++  /usr/include/parrot/exit.h
++  /usr/include/parrot/extend.h
++  /usr/include/parrot/extend_vtable.h
++  /usr/include/parrot/feature.h
++  /usr/include/parrot/global.h
++  /usr/include/parrot/global_setup.h
++  /usr/include/parrot/has_header.h
++  /usr/include/parrot/hash.h
++  /usr/include/parrot/headers.h
++  /usr/include/parrot/hll.h
++  /usr/include/parrot/imcc.h
++  /usr/include/parrot/inter_call.h
++  /usr/include/parrot/interpreter.h
++  /usr/include/parrot/intlist.h
++  /usr/include/parrot/io.h
++  /usr/include/parrot/jit_emit.h
++  /usr/include/parrot/key.h
++  /usr/include/parrot/library.h
++  /usr/include/parrot/list.h
++  /usr/include/parrot/longopt.h
++  /usr/include/parrot/memory.h
++  /usr/include/parrot/misc.h
++  /usr/include/parrot/mmd.h
++  /usr/include/parrot/nci.h
++  /usr/include/parrot/oo.h
++  /usr/include/parrot/oo_private.h
++  /usr/include/parrot/op.h
++  /usr/include/parrot/oplib.h
++  /usr/include/parrot/oplib/core_ops.h
++  /usr/include/parrot/oplib/core_ops_cg.h
++  /usr/include/parrot/oplib/core_ops_cgp.h
++  /usr/include/parrot/oplib/core_ops_switch.h
++  /usr/include/parrot/oplib/ops.h
++  /usr/include/parrot/packfile.h
++  /usr/include/parrot/parrot.h
++  /usr/include/parrot/pic.h
++  /usr/include/parrot/platform.h
++  /usr/include/parrot/platform_interface.h
++  /usr/include/parrot/pmc.h
++  /usr/include/parrot/pmc_freeze.h
++  /usr/include/parrot/pobj.h
++  /usr/include/parrot/register.h
++  /usr/include/parrot/resources.h
++  /usr/include/parrot/scheduler.h
++  /usr/include/parrot/scheduler_private.h
++  /usr/include/parrot/settings.h
++  /usr/include/parrot/slice.h
++  /usr/include/parrot/smallobject.h
++  /usr/include/parrot/stacks.h
++  /usr/include/parrot/stat.h
++  /usr/include/parrot/stm/backend.h
++  /usr/include/parrot/string.h
++  /usr/include/parrot/string_funcs.h
++  /usr/include/parrot/string_primitives.h
++  /usr/include/parrot/string_private_cstring.h
++  /usr/include/parrot/sub.h
++  /usr/include/parrot/thr_pthread.h
++  /usr/include/parrot/thr_windows.h
++  /usr/include/parrot/thread.h
++  /usr/include/parrot/tsq.h
++  /usr/include/parrot/vtable.h
++  /usr/include/parrot/vtables.h
++  /usr/include/parrot/warnings.h
++  /usr/lib/libparrot.dll.a
++  /usr/lib/parrot/include/call_bits.pasm
++  /usr/lib/parrot/include/cclass.pasm
++  /usr/lib/parrot/include/datatypes.pasm
++  /usr/lib/parrot/include/errors.pasm
++  /usr/lib/parrot/include/except_severity.pasm
++  /usr/lib/parrot/include/except_types.pasm
++  /usr/lib/parrot/include/hllmacros.pir
++  /usr/lib/parrot/include/iglobals.pasm
++  /usr/lib/parrot/include/interpcores.pasm
++  /usr/lib/parrot/include/interpdebug.pasm
++  /usr/lib/parrot/include/interpflags.pasm
++  /usr/lib/parrot/include/interptrace.pasm
++  /usr/lib/parrot/include/iotypes.pasm
++  /usr/lib/parrot/include/iterator.pasm
++  /usr/lib/parrot/include/longopt.pasm
++  /usr/lib/parrot/include/mmd.pasm
++  /usr/lib/parrot/include/opengl_defines.pasm
++  /usr/lib/parrot/include/parrotlib.pbc
++  /usr/lib/parrot/include/pmctypes.pasm
++  /usr/lib/parrot/include/signal.pasm
++  /usr/lib/parrot/include/sockets.pasm
++  /usr/lib/parrot/include/stat.pasm
++  /usr/lib/parrot/include/stdio.pasm
++  /usr/lib/parrot/include/stringinfo.pasm
++  /usr/lib/parrot/include/sysinfo.pasm
++  /usr/lib/parrot/include/test_more.pir
++  /usr/lib/parrot/include/timer.pasm
++  /usr/lib/parrot/include/tm.pasm
++  /usr/lib/parrot/include/warnings.pasm
++  /usr/lib/parrot/src/glut_callbacks.c
++  /usr/lib/parrot/src/install_config.o
++  /usr/lib/parrot/src/nci.c
++  /usr/lib/parrot/src/null_config.o
++  /usr/lib/parrot/src/ops/core_ops_cgp.c
++  /usr/lib/parrot/src/ops/core_ops_switch.c
++  /usr/lib/parrot/src/parrot_config.o
++  /usr/lib/pkgconfig/parrot.pc
++
++Files included in the =parrot-perl6= package:
++
++  /usr/bin/perl6.exe
++  /usr/lib/parrot/dynext/perl6_group.dll
++  /usr/share/doc/parrot-0.8.2/languages/perl6/*
++
++Files included in the =parrot-languages= package:
++
++  /usr/bin/parrot-APL.exe
++  /usr/bin/parrot-abc.exe
++  /usr/bin/parrot-bf.exe
++  /usr/bin/parrot-bfc.exe
++  /usr/bin/parrot-bfco.exe
++  /usr/bin/parrot-c99.exe
++  /usr/bin/parrot-cardinal.exe
++  /usr/bin/parrot-chitchat.exe
++  /usr/bin/parrot-forth.exe
++  /usr/bin/parrot-hq9plus.exe
++  /usr/bin/parrot-lisp.exe
++  /usr/bin/parrot-lolcode.exe
++  /usr/bin/parrot-lua.exe
++  /usr/bin/parrot-m4.exe
++  /usr/bin/parrot-ook.exe
++  /usr/bin/parrot-pheme.exe
++  /usr/bin/parrot-pipp.exe
++  /usr/bin/parrot-punie.exe
++  /usr/bin/parrot-pynie.exe
++  /usr/bin/parrot-squaak.exe
++  /usr/bin/parrot-tcl.exe
++  /usr/lib/parrot/dynext/apl_group.dll
++  /usr/lib/parrot/dynext/eclectus_group.dll
++  /usr/lib/parrot/dynext/dotnet.dll
++  /usr/lib/parrot/dynext/dotnet_ops.dll
++  /usr/lib/parrot/dynext/dotnet_ops_cg.dll
++  /usr/lib/parrot/dynext/dotnet_ops_cgp.dll
++  /usr/lib/parrot/dynext/dotnet_ops_switch.dll
++  /usr/lib/parrot/dynext/dotnet_runtime.dll
++  /usr/lib/parrot/dynext/lua_group.dll
++  /usr/lib/parrot/dynext/tcl_group.dll
++  /usr/lib/parrot/dynext/wmls_group.dll
++  /usr/lib/parrot/dynext/wmls_ops.dll
++  /usr/lib/parrot/dynext/wmls_ops_cg.dll
++  /usr/lib/parrot/dynext/wmls_ops_cgp.dll
++  /usr/lib/parrot/dynext/wmls_ops_switch.dll
++  /usr/lib/parrot/library/php_*.pbc
++  /usr/lib/parrot/library/pipplib.pbc
++  /usr/lib/parrot/library/tcllib.pbc
++  /usr/share/doc/parrot-0.8.2/languages/*
++
++-------------------------------------------------------------------------------
++
++Port Notes:
++
++----- version parrot-0.8.2-1 -----
++* merged from branches/pdd30install_stage3
++
++----- version parrot-0.8.0-1 -----
++* building and testing with already installed parrot supported
++* includes the patches from 0.7.1-1, plus
++* a merge from the branch pdd30_install, without the languages/jvm
++
++----- version parrot-0.7.1-1 -----
++* building with already installed parrot now supported, testing not.
++* includes the patches from 0.7.0-1, plus
++* a merge from the branch cygwin070patches,
++  without the languages/jvm
++
++----- version parrot-0.7.0-1 -----
++* removed /usr/runtime and its preremove and postinstall scripts
++* added parrot_exists_check to .cygport. Already installed parrot 
++  still not supported, despite my #39742 patch
++* other minor .cygport improvements: export PATH in seperate lines to fix check
++* new patches: 
++  [perl #39742] [BUG]   installed conflict
++  [perl #58034] [TODO]  config_args
++  [perl #56996] [TODO]  FHS runtime paths
++* enhanced patch: 
++  [perl #56554] [TODO]  make install -C languages
++* upstream fixed patches:
++  [perl #56544] [PATCH] install_files.pl
++  [perl #56998] [TODO]  rename cygwin dll to cygparrot$MAJOR_$MINOR_$PATCH.dll
++  [perl #57006] [PATCH] add cygwin opengl config quirks
++  [perl #57296] [TODO]  make install -C languages
++* fixed pipp, perl6, pheme, tcl installables. added pcbc's to library  
++
++----- version parrot-0.6.4-2 -----
++* fixed invalid parrot languages and perl6 paths referencing the build_dir
++* fixed runtime lib_path to favor FHS compliant paths
++* temp. add a /usr/runtime symlink. will be removed soon
++* added myconfig parrotbug VERSION to /usr/lib/parrot
++* moved language dll's to parrot-languages
++* added more sublanguage exe's: bfc, bfco
++* added usr/lib/parrot/include/config.fpmc usr/lib/parrot/include/interpinfo.pasm 
++  to parrot
++
++----- version parrot-0.6.4-1 -----
++* libparrot.dll renamed to cygparrot0_6_4.dll
++* moved examples to from libparrot-devel to parrot
++* Added list of local patches to myconfig
++     [perl #51944] [DOCS]  Cygwin Readme
++     [perl #56544] [PATCH] install_files.pl
++     [perl #56558] [PATCH] pdb rename to parrot_debugger
++     [perl #56562] [PATCH] root.in: add cygwin importlib
++     [perl #56998] [TODO]  rename cygwin dll to cygparrot$MAJOR_$MINOR_$PATCH.dll
++     [perl #57006] [PATCH] add cygwin opengl config quirks
++     [perl #57110] [PATCH] ncurses for cygwin
++     [perl #57112] [PATCH] postgres for cygwin
++     [perl #57114] [PATCH] urm RealBin issue
++
++----- version parrot-0.6.3-1 -----
++* first port, with the help from #parrot, fedora spec, 
++  gentoo ebuild and freebsd ports.
++* the php implementation plumhead is still named plumhead.
++  will be renamed to pipp from the next release 0.6.4 on.
++
++Cygwin port maintained by: Reini Urban <rurban@x-ray.at>
++Please address all questions to the Cygwin mailing list 
++at <cygwin@cygwin.com>
+--- origsrc/parrot-0.8.2/CYGWIN-PATCHES/libparrot-devel.hint	1970-01-01 00:00:00.000000000 +0000
++++ src/parrot-0.8.2/CYGWIN-PATCHES/libparrot-devel.hint	2008-12-24 18:31:58.397125000 +0000
+@@ -0,0 +1,5 @@
++sdesc: "Parrot Virtual Machine development headers and libraries"
++ldesc: "Libraries and headers needed for development against Parrot"
++category: Libs
++requires: parrot readline libncurses-devel libicu-devel libgmp-devel libgdbm-devel perl pcre-devel
++external-source: parrot
+--- origsrc/parrot-0.8.2/CYGWIN-PATCHES/libparrot0.hint	1970-01-01 00:00:00.000000000 +0000
++++ src/parrot-0.8.2/CYGWIN-PATCHES/libparrot0.hint	2008-12-24 18:31:58.397125000 +0000
+@@ -0,0 +1,4 @@
++sdesc: "libparrot dll"
++category: Libs
++external-source: parrot
++requires: libreadline6 libintl8 libicu38 libgmp3 libgdbm4
+--- origsrc/parrot-0.8.2/CYGWIN-PATCHES/parrot-languages.hint	1970-01-01 00:00:00.000000000 +0000
++++ src/parrot-0.8.2/CYGWIN-PATCHES/parrot-languages.hint	2008-12-24 18:31:58.397125000 +0000
+@@ -0,0 +1,6 @@
++sdesc: "Various language implementions on Parrot"
++ldesc: "parrot-APL parrot-abc parrot-bf parrot-c99 parrot-cardinal parrot-chitchat 
++parrot-forth parrot-hq9plus parrot-lisp parrot-lolcode parrot-lua parrot-m4 parrot-ook 
++parrot-pheme parrot-pipp parrot-punie parrot-pynie parrot-squaak parrot-tcl"
++category: Interpreters
++requires: parrot
+--- origsrc/parrot-0.8.2/CYGWIN-PATCHES/parrot-perl6.hint	1970-01-01 00:00:00.000000000 +0000
++++ src/parrot-0.8.2/CYGWIN-PATCHES/parrot-perl6.hint	2008-12-24 18:31:58.412750000 +0000
+@@ -0,0 +1,6 @@
++sdesc: "Rakudo Perl6 via Parrot"
++ldesc: "This is the Perl 6 compiler for Parrot, called 'Rakudo Perl 6,'
++or "Rakudo" for short.  It's still fairly primitive -- only simple
++expressions and functions are available, but it's rapidly expanding."
++category: Libs
++requires: parrot
+--- origsrc/parrot-0.8.2/CYGWIN-PATCHES/parrot.hint	1970-01-01 00:00:00.000000000 +0000
++++ src/parrot-0.8.2/CYGWIN-PATCHES/parrot.hint	2008-12-24 18:31:58.412750000 +0000
+@@ -0,0 +1,6 @@
++sdesc: "Parrot Virtual Machine"
++ldesc: "Parrot is a virtual machine designed to efficiently compile and
++execute bytecode for interpreted languages. Parrot is a target for Perl 6 
++and a lot of other languages"
++category: Interpreters
++requires: cygwin libparrot0 w32api opengl

Added: trunk/ports/cygwin/parrot-0.8.2-1.src.patch
==============================================================================
--- (empty file)
+++ trunk/ports/cygwin/parrot-0.8.2-1.src.patch	Wed Dec 31 10:51:37 2008
@@ -0,0 +1,14175 @@
+--- origsrc/parrot-0.8.2/Configure.pl	2008-12-17 06:55:05.000000000 +0000
++++ src/parrot-0.8.2/Configure.pl	2008-12-25 13:44:20.006500000 +0000
+@@ -63,6 +63,8 @@
+ 
+ # from Parrot::Configure::Data
+ $conf->options->set( %{$args} );
++# save the command-line
++$conf->data->set(config_args => join(" ", @ARGV));
+ 
+ # Log files created by Configure.pl in MANIFEST.configure.generated
+ $conf->{active_configuration} = 1;
+--- origsrc/parrot-0.8.2/MANIFEST	2008-12-17 06:57:42.000000000 +0000
++++ src/parrot-0.8.2/MANIFEST	2008-12-25 13:44:20.037750000 +0000
+@@ -1095,6 +1095,10 @@
+ languages/PIR/t/whitespace.t                                [PIR]
+ languages/WMLScript/CREDITS                                 [WMLScript]
+ languages/WMLScript/MAINTAINER                              [WMLScript]
++languages/WMLScript/WMLScript/wmlsconsole.pir               [WMLScript]
++languages/WMLScript/WMLScript/wmlsfloat.pir                 [WMLScript]
++languages/WMLScript/WMLScript/wmlslang.pir                  [WMLScript]
++languages/WMLScript/WMLScript/wmlsstring.pir                [WMLScript]
+ languages/WMLScript/build/SRM/Register.pm                   [WMLScript]
+ languages/WMLScript/build/SRM/Stack.pm                      [WMLScript]
+ languages/WMLScript/build/stdlibs.pl                        [WMLScript]
+@@ -1109,10 +1113,6 @@
+ languages/WMLScript/pmc/wmlsinteger.pmc                     [WMLScript]
+ languages/WMLScript/pmc/wmlsinvalid.pmc                     [WMLScript]
+ languages/WMLScript/pmc/wmlsstring.pmc                      [WMLScript]
+-languages/WMLScript/runtime/wmlsconsole.pir                 [WMLScript]
+-languages/WMLScript/runtime/wmlsfloat.pir                   [WMLScript]
+-languages/WMLScript/runtime/wmlslang.pir                    [WMLScript]
+-languages/WMLScript/runtime/wmlsstring.pir                  [WMLScript]
+ languages/WMLScript/src/WMLScript.pir                       [WMLScript]
+ languages/WMLScript/src/script.pir                          [WMLScript]
+ languages/WMLScript/src/translation.rules                   [WMLScript]
+--- origsrc/parrot-0.8.2/README_cygwin.pod	2008-06-01 09:08:35.000000000 +0000
++++ src/parrot-0.8.2/README_cygwin.pod	2008-12-25 13:44:20.037750000 +0000
+@@ -6,37 +6,98 @@
+ 
+ =head1 SYNOPSIS
+ 
+-Parrot builds out of the box under Cygwin.  Some tweaks are needed for
+-different names of dynamic loading of some dll's.
++Parrot builds out of the box under Cygwin after 
++C<export PATH=`pwd`/blib/lib:$PATH>
++
++There are official cygwin parrot packages available via
++L<http://cygwin.com/setup.exe>.
++
++  parrot libparrot0 libparrot-devel parrot-perl6 parrot-languages
++
++Some tweaks are needed for different names for the ffi to some dll's.
++See L</loadlib DLL versioning>
++
+ 
+ =head1 Packages
+ 
+-You'll need the following Cygwin packages to build Parrot.
++You'll need the following Cygwin packages to run and build Parrot 
++by your own.
+ 
+-=over 4
++Runtime requirements:
++
++  libreadline6 ncurses libintl8 libgmp3 libgdbm4
++
++Optional requirements:
++
++  libicu38 libpq5 openssl
++
++  for opengl: w32api opengl or libglut3 xorg-x11-base xorg-x11-bin-dlls
++
++Build requirements:
++
++  gcc make perl parrot readline libncurses-devel libgmp-devel
++  libgdbm-devel pcre-devel 
++
++Optional build requirements:
++
++  libicu-devel openssl-devel 
++
++  for Cygwin/X opengl: freeglut libglut-devel xorg-x11-devel 
++
++Optional perl packages for testing: 
++
++  L<Test::TAP::HTMLMatrix> if you want to run the language smoke tests
++  with C<make languages-smoke>.
+ 
+-=item gcc
++  L<Test::Base> for some APL language tests.
+ 
+-=item make
++  perl L<Moose> for smartlink
+ 
+-=item perl
++  perl L<Test::Perl::Critic> and L<Perl::Critic>
+ 
+-=item subversion
++=over 4
++
++=item Cygwin subversion and perl
+ 
+ If you use SVN to get a copy of Parrot, you should use the Cygwin SVN
+ and not the TortoiseSVN client to avoid build errors.  Similarly you will
+ need Cygwin Perl rather than ActiveState or Strawberry Perl.
+ 
+-=item ICU
+-
+-This is no official Cygwin package yet.  However, icu4c-3_8 builds out of the
+-box on Cygwin.
+-
+-  http://download.icu-project.org/files/icu4c/3.8/icu4c-3_8-src.tgz
++=item icu
+ 
+ Note that ICU is now optional, you can build Parrot without it,
+ by not installing it or asking Parrot to ignore it (C<--without-icu>).
+ 
++=item opengl
++
++You can use the w32api and opengl packages for native Windows opengl support,
++or the freeglut package for the X Server.
++
++Configure.pl will detect freeglut if freeglut is installed and DISPLAY 
++is set, otherwise it checks for w32api and opengl with GLUT.
++
++  Determining if your platform supports OpenGL.............yes, freeglut 3.4.
++  Determining if your platform supports OpenGL...................yes, GLUT 3.
++  Determining if your platform supports OpenGL............................no.
++
++Required packages:
++
++  w32api opengl
++
++or 
++
++  freeglut libglut-devel xorg-x11-devel xorg-x11-base xorg-x11-bin-dlls
++
++=item SDL
++
++SDL references F<cygSDL-1-2-0.dll>, which is only in cygports
++L<http://news.gmane.org/gmane.os.cygwin.ports.announce>
++
++=item aio
++
++libaio-devel "Linux-native asynchronous I/O access" is not available
++for cygwin, and as the name says it will never be :)
++
+ =back
+ 
+ =head1 BUILD
+@@ -53,21 +114,25 @@
+ 
+ =item Makefile tuning
+ 
+-rename libparrot.dll to cygparrot.dll, create an interim libparrot.dll.a
++Rename libparrot.dll to cygparrot0_6_x.dll and create an interim
++libparrot.dll.a
+ 
+-fix the blib/lib PATH issue
++  [perl #56998] [TODO]  rename cygwin dll to cygparrot$MAJOR_$MINOR_$PATCH.dll
++  [perl #56562] [PATCH] root.in: add cygwin importlib
+ 
+-=item DLL versioning
++=item loadlib DLL versioning
+ 
+-cyg*-1.1.dll instead of lib*.so.1.1
++Use cyg*-1.1.dll naming conventions instead of lib*.so.1.1 names for
++loadlib, the FFI.
+ 
+-Thanks to the L<Windows DLL Hell / http://> and the impossibility of file
+-hardlinks, windows dll names are versioned, so the loadlib function or the
+-various pir's needs more logic.
++Thanks to the L<Windows DLL Hell / http://?> and the impossibility of
++file hardlinks, windows dll names are versioned, so the loadlib
++function or the various pir's needs more logic.
+ 
+-Either add the version to each loadlib call, and stem the version from POSIX
+-versions within get_path(), or add an optional version argument to loadlib for
+-win32. Or just fix all the pir's.
++Either add the version to each loadlib call, and stem the version from
++POSIX versions within get_path(), or add an optional version argument
++to loadlib for win32. Or just fix all the pir's, which will be easier
++when exceptions work again.
+ 
+ =item Features
+ 
+--- origsrc/parrot-0.8.2/README_win32.pod	2008-12-17 06:55:08.000000000 +0000
++++ src/parrot-0.8.2/README_win32.pod	2008-12-25 13:44:20.053375000 +0000
+@@ -155,6 +155,10 @@
+ Note: It is possible to use ActiveState Perl with the Toolkit: you don't
+ have to compile your own perl.
+ 
++If you want to use MSVC with a mingw-gcc perl you can use 
++C<--cc=cl --link=link>. Just F<ar> in F<config_lib.pasm> has to be changed 
++to F<lib> and C<LIBPARROT = $(LIBPARROT_STATIC)> in F<Makefile>.
++
+ =item Strawberry Perl
+ 
+ With the Strawberry perl distro from
+--- origsrc/parrot-0.8.2/VERSION	2008-12-17 06:55:00.000000000 +0000
++++ src/parrot-0.8.2/VERSION	2008-12-25 13:44:20.053375000 +0000
+@@ -1 +1 @@
+-0.8.1
++0.8.2
+--- origsrc/parrot-0.8.2/config/auto/opengl.pm	2008-08-20 05:48:51.000000000 +0000
++++ src/parrot-0.8.2/config/auto/opengl.pm	2008-12-25 13:44:20.100250000 +0000
+@@ -114,14 +114,16 @@
+ 
+ The Cygwin/w32api for native opengl support
+ 
+-F<-lglut32 -lglu32 -lopengl32>
+-
++F<opengl>, F<w32api>
+ 
+ =head3 Cygwin/X
+ 
+ Requires a X server.
+ 
+-F<freeglut>, F<libglut-devel>
++F<freeglut>, F<libglut-devel>, F<xorg-x11-devel>
++
++This is detected if freeglut is installed and DISPLAY is set.
++It requires an X server.
+ 
+ =cut
+ 
+@@ -167,25 +169,20 @@
+ 
+     my $osname = $conf->data->get_p5('OSNAME');
+ 
+-    # Prefer Cygwin/w32api over Cygwin/X, but use X when DISPLAY is set
+-    if ($^O eq 'cygwin' and $ENV{DISPLAY}) {
+-        $self->_add_to_libs( {
+-            conf        => $conf,
+-            osname      => $osname,
+-            cc          => $cc,
+-            cygwin      => '-lglut -L/usr/X11R6/lib -lGLU -lGL'
+-        } )
+-    }
+-    else {
+-        $self->_add_to_libs( {
++    $self->_add_to_libs( {
+             conf            => $conf,
+             osname          => $osname,
+             cc              => $cc,
++            # Prefer Cygwin/w32api over Cygwin/X, but use X when DISPLAY is set
++            ($^O eq 'cygwin') ?
++             ($ENV{DISPLAY} ? (cygwin => '-lglut -L/usr/X11R6/lib -lGLU -lGL')
++                            : (cygwin => '/bin/cygglut-3.dll -lglu32 -lopengl32'))
++             : (),
+             win32_gcc       => '-lglut32 -lglu32 -lopengl32',
+             win32_nongcc    => 'opengl32.lib glu32.lib glut32.lib',
+             darwin          => '-framework OpenGL -framework GLUT',
+             default         => '-lglut -lGLU -lGL',
+-    } ) };
++    } );
+ 
+     # On OS X check the presence of the OpenGL headers in the standard
+     # Fink/macports locations.
+--- origsrc/parrot-0.8.2/config/gen/config_pm/config_lib.in	2008-02-27 04:34:52.000000000 +0000
++++ src/parrot-0.8.2/config/gen/config_pm/config_lib.in	2008-12-27 15:52:58.990375000 +0000
+@@ -1,3 +1,4 @@
++
+ .pcc_sub main:
+         get_params "(0)", P5
+ 	set I10, P5     # argv
+@@ -12,10 +13,17 @@
+ 
+ 	<<PCONFIG>>
+ 
+-	if I11, is_install
++	set P0["installed"], I11
++	ge I11, 1, is_install
+ 	set S1, "<<PWD>>"
+ 	set P0["prefix"], S1
+ is_install:
+ 	freeze S0, P0
+ 	print S0
+ 	end
++
++# Local Variables:
++#   mode: pir
++#   fill-column: 100
++# End:
++# vim: expandtab shiftwidth=4 ft=pir:
+--- origsrc/parrot-0.8.2/config/gen/makefiles/bcg.in	2008-09-28 09:18:54.000000000 +0000
++++ src/parrot-0.8.2/config/gen/makefiles/bcg.in	2008-12-25 13:44:20.178375000 +0000
+@@ -1,25 +1,25 @@
+ RM_F		    = @rm_f@
+ PERL		    = @perl@
+-PARROT	    	= @build_dir@/parrot@exe@
+-#CONDITIONED_LINE(win32):LIBPARROT = @build_dir@/libparrot@a@
+-#INVERSE_CONDITIONED_LINE(win32):LIBPARROT = @build_dir@/@blib_dir@/libparrot@a@
+-O		        = @o@
++PARROT	            = @build_dir@/parrot@exe@
++#IF(win32):LIBPARROT = @build_dir@/libparrot@a@
++#ELSE:LIBPARROT = @build_dir@/@blib_dir@/libparrot@a@
++O                   = @o@
+ LOAD_EXT	    = @load_ext@
+ CC         	    = @cc@
+ CC_INC     	    = @cc_inc@ -I@build_dir@/include
+ C_LIBS     	    = @libs@
+ CC_SHARED  	    = @cc_shared@
+ CFLAGS     	    = $(CC_INC) @ccflags@ @cc_debug@ @ccwarn@ @cc_hasjit@ @cg_flag@ @gc_flag@ $(CC_SHARED)
+-LINK_DYNAMIC  	= @link_dynamic@
++LINK_DYNAMIC  	    = @link_dynamic@
+ LINK       	    = @link@
+ LINKFLAGS  	    = @linkflags@ @link_debug@ @ld_debug@
+ LD         	    = @ld@
+-#CONDITIONED_LINE(win32):LDFLAGS = @ldflags@ @ld_debug@ $(LIBPARROT)
+-#INVERSE_CONDITIONED_LINE(win32):LDFLAGS = @ldflags@ @ld_debug@ -L@build_dir@/blib/lib/ -lparrot
++#IF(win32 or cygwin):LDFLAGS = @ldflags@ @ld_debug@ $(LIBPARROT)
++#ELSE:LDFLAGS = @ldflags@ @ld_debug@ -L@build_dir@/blib/lib/ -lparrot
+ SHARE_EXT       = @share_ext@
+ LD_SHARE_FLAGS  = @ld_share_flags@
+ BUILD_PMC   	= $(PERL) @build_dir@/tools/build/dynpmc.pl
+-SRC_PMC_DIR	    = src/pmc
++SRC_PMC_DIR	= src/pmc
+ DEST_PMC_DIR	= @build_dir@/runtime/parrot/dynext
+ PMC_GROUP       = $(DEST_PMC_DIR)/bcg_group$(LOAD_EXT)
+ DYNPMC_INCLUDE  = @build_dir@/compilers/bcg/include,@build_dir@/compilers/bcg/include,@build_dir@/compilers/bcg/include
+@@ -61,8 +61,7 @@
+  $(SRC_PMC_DIR)/*$(LOAD_EXT) \
+  $(PMC_GROUP)
+ 
+-all: pmcs
+-
++all: pmcs Makefile
+ 
+ #
+ # Build Targets
+@@ -73,7 +72,6 @@
+ 	$(LD) $(LD_SHARE_FLAGS) $(LDFLAGS) @ld_out@$@ $(BCG_O_FILES) @libs@
+     $(CP) @build_dir@/blib/lib/libbcg$(SHARE_EXT) @build_dir@
+ 
+-	
+ pmcs: $(LIB_BCG)
+ 	@cd $(SRC_PMC_DIR) && $(BUILD_PMC) generate $(PMCS)
+ 	@cd $(SRC_PMC_DIR) && DYNPMC_INCLUDE=$(DYNPMC_INCLUDE) $(BUILD_PMC) compile $(PMCS)
+@@ -81,6 +79,9 @@
+ 	@cd $(SRC_PMC_DIR) && $(BUILD_PMC) copy "--destination=$(DEST_PMC_DIR)" \
+ 		 $(PMCS)
+ 
++# regenerate the Makefile
++Makefile: @build_dir@/config/gen/makefiles/docs.in
++	cd @build_dir@ && $(RECONFIGURE) --step=gen::makefiles --target=docs/Makefile
+ 
+ #
+ # Test Targets
+@@ -103,3 +104,9 @@
+ realclean: clean
+ 
+ distclean: realclean
++
++#
++# Local variables:
++# mode: makefile
++# ex: ft=make
++# End:
+--- origsrc/parrot-0.8.2/config/gen/makefiles/docs.in	2008-09-25 21:22:54.000000000 +0000
++++ src/parrot-0.8.2/config/gen/makefiles/docs.in	2008-12-25 13:44:20.178375000 +0000
+@@ -7,6 +7,8 @@
+ MKPATH = @mkpath@
+ CHMOD  = @chmod@
+ PERLDOC = @perldoc@
++BUILD_DIR = @build_dir@
++RECONFIGURE   = $(PERL) @build_dir@/tools/dev/reconfigure.pl
+ 
+ # long list of .pod files
+ POD = @pod@
+@@ -16,7 +18,11 @@
+ #
+ 
+ # The default target
+-all: doc-prep packfile-c.pod $(POD)
++all: doc-prep packfile-c.pod $(POD) Makefile
++
++# regenerate the Makefile
++Makefile: $(BUILD_DIR)/config/gen/makefiles/docs.in
++	cd $(BUILD_DIR) && $(RECONFIGURE) --step=gen::makefiles --target=docs/Makefile
+ 
+ # This is a listing of all targets, that are meant to be called by users
+ # Most of them are proxied in the root makefile parrot/Makefile
+@@ -35,8 +41,8 @@
+ 	$(MKPATH) ops
+ 
+ packfile-c.pod: ../src/packfile.c
+-#CONDITIONED_LINE(new_perldoc):	$(PERLDOC) -ud packfile-c.pod ../src/packfile.c 
+-#INVERSE_CONDITIONED_LINE(new_perldoc):	$(PERLDOC) -u ../src/packfile.c > packfile-c.pod
++#IF(new_perldoc):	$(PERLDOC) -ud packfile-c.pod ../src/packfile.c 
++#ELSE:	$(PERLDOC) -u ../src/packfile.c > packfile-c.pod
+ 
+ clean:
+ 	$(RM_F) packfile-c.pod $(POD)
+@@ -47,3 +53,8 @@
+ html-clean:
+ 	$(PERL) -I../lib -MParrot::Distribution -e "Parrot::Distribution->new()->delete_html_docs()"
+ 
++#
++# Local variables:
++# mode: makefile
++# ex: ft=make
++# End:
+--- origsrc/parrot-0.8.2/config/gen/makefiles/dynoplibs.in	2007-11-10 04:47:18.000000000 +0000
++++ src/parrot-0.8.2/config/gen/makefiles/dynoplibs.in	2008-12-25 13:44:20.178375000 +0000
+@@ -46,3 +46,9 @@
+ distclean: realclean
+ 
+ svnclean: realclean
++
++#
++# Local variables:
++# mode: makefile
++# ex: ft=make
++# End:
+--- origsrc/parrot-0.8.2/config/gen/makefiles/dynoplibs_pl.in	2007-11-10 04:47:17.000000000 +0000
++++ src/parrot-0.8.2/config/gen/makefiles/dynoplibs_pl.in	2008-12-25 13:44:20.194000000 +0000
+@@ -32,7 +32,7 @@
+ our $CFLAGS = q[@ccflags@ @cc_shared@ @cc_debug@ @ccwarn@ @cc_hasjit@ @cg_flag@ @gc_flag@];
+ 
+ our $LIBPARROT = q[];
+-#CONDITIONED_LINE(parrot_is_shared):$LIBPARROT = q[@libparrot_ldflags@];
++#IF(parrot_is_shared):$LIBPARROT = q[@libparrot_ldflags@];
+ 
+ # Here comes some stuff for Win32.
+ our $PATHQUOTE = q[];
+@@ -46,15 +46,15 @@
+ }
+ 
+ # OPS2C Config
+-our $OPS2C = "$PERL -I $PATHQUOTE" . 
++our $OPS2C = "$PERL -I $PATHQUOTE" .
+              q[@build_dir@@slash@lib] .
+              "$PATHQUOTE $PATHQUOTE" .
+              q[@build_dir@@slash@tools@slash@build@slash@ops2c.pl] .
+              $PATHQUOTE;
+ our %cores = (
+     C       => q[],
+-#CONDITIONED_LINE(cg_flag):   CGP     => '_cgp',
+-#CONDITIONED_LINE(cg_flag):   CGoto   => '_cg',
++#IF(cg_flag):   CGP     => '_cgp',
++#IF(cg_flag):   CGoto   => '_cg',
+     CSwitch => '_switch'
+ );
+ 
+@@ -73,7 +73,7 @@
+ 
+ sub partial_link_cmd {
+     my ($target, $libs, $sources) = @_;
+-    
++
+     my $liblist;
+     if ($^O =~ /mswin32/i) {
+         # Need to put various libraries in the link line.
+@@ -93,7 +93,7 @@
+         "$LD ".
+         "@ld_out@" . $target . " " .
+         join(" ", map {"$PATHQUOTE$_$PATHQUOTE"} @$sources) .
+-        " $liblist $LDFLAGS $LD_LOAD_FLAGS $PATHQUOTE$LIBPARROT$PATHQUOTE";
++        " $LDFLAGS $LD_LOAD_FLAGS $PATHQUOTE$LIBPARROT$PATHQUOTE $liblist";
+ }
+ 
+ our $NOW = time();
+@@ -106,14 +106,14 @@
+     # Convert X.ops -> ops_X.c, ops_X_cgp.c, ops_X_cg.c and ops_X_switch.c
+     my $core;
+     generate_c($_) foreach (@oplibs);
+-} 
++}
+ elsif ($mode eq 'compile') {
+     # Convert X.c -> X.o for all X.c
+     my $core_suffix;
+     foreach $core_suffix (values %cores) {
+         compile($_ . "_ops$core_suffix") foreach (@oplibs);
+     }
+-} 
++}
+ elsif ($mode eq 'linklibs') {
+     my @objs = grep { /$O$/} @oplibs;
+     @oplibs  = grep {!/$O$/} @oplibs;
+@@ -123,7 +123,7 @@
+     foreach $core_suffix (values %cores) {
+         partial_link({}, $_ . "_ops$core_suffix", @objs) foreach (@oplibs);
+      }
+-} 
++}
+ elsif ($mode eq 'copy') {
+     # Copy *.so -> destination, where destination is the first
+     # argument, given as --destination=DIRECTORY
+--- origsrc/parrot-0.8.2/config/gen/makefiles/dynpmc.in	2008-05-28 19:43:48.000000000 +0000
++++ src/parrot-0.8.2/config/gen/makefiles/dynpmc.in	2008-12-27 14:30:03.349750000 +0000
+@@ -14,30 +14,30 @@
+   dynlexpad \
+   foo \
+   rotest \
+-#CONDITIONED_LINE(has_gdbm):  gdbmhash \
++#IF(has_gdbm):  gdbmhash \
+   rational \
+-#CONDITIONED_LINE(has_crypto):  md2 \
+-#CONDITIONED_LINE(has_crypto):  md4 \
+-#CONDITIONED_LINE(has_crypto):  md5 \
+-#CONDITIONED_LINE(has_crypto):  ripemd160 \
+-#CONDITIONED_LINE(has_crypto):  sha \
+-#CONDITIONED_LINE(has_crypto):  sha1 \
+-#CONDITIONED_LINE(has_crypto):  sha256 \
+-#CONDITIONED_LINE(has_crypto):  sha512 \
++#IF(has_crypto):  md2 \
++#IF(has_crypto):  md4 \
++#IF(has_crypto):  md5 \
++#IF(has_crypto):  ripemd160 \
++#IF(has_crypto):  sha \
++#IF(has_crypto):  sha1 \
++#IF(has_crypto):  sha256 \
++#IF(has_crypto):  sha512 \
+   subproxy 
+ 
+ BUILD = $(PERL) @build_dir@/tools/build/dynpmc.pl
+ 
+ # some *.pmc file are generated
+ GEN_PMC_DEFINITIONS = \
+-#CONDITIONED_LINE(has_crypto):  md2.pmc \
+-#CONDITIONED_LINE(has_crypto):  md4.pmc \
+-#CONDITIONED_LINE(has_crypto):  md5.pmc \
+-#CONDITIONED_LINE(has_crypto):  ripemd160.pmc \
+-#CONDITIONED_LINE(has_crypto):  sha.pmc \
+-#CONDITIONED_LINE(has_crypto):  sha1.pmc \
+-#CONDITIONED_LINE(has_crypto):  sha256.pmc \
+-#CONDITIONED_LINE(has_crypto):  sha512.pmc
++#IF(has_crypto):  md2.pmc \
++#IF(has_crypto):  md4.pmc \
++#IF(has_crypto):  md5.pmc \
++#IF(has_crypto):  ripemd160.pmc \
++#IF(has_crypto):  sha.pmc \
++#IF(has_crypto):  sha1.pmc \
++#IF(has_crypto):  sha256.pmc \
++#IF(has_crypto):  sha512.pmc
+ 
+ all :
+ 	@$(BUILD) generate $(PMCS)
+@@ -58,7 +58,7 @@
+ # win32 exported functions and data items
+ # win32 export definition files
+ dynext-clean :
+-	$(RM_F) "*.lib" "*.pdb" "*.ilk" "*.exp" "*.def" "*.manifest"
++#IF(win32):	$(RM_F) "*.lib" "*.pdb" "*.ilk" "*.exp" "*.def" "*.manifest"
+ 
+ clean : testclean dynext-clean
+ 	$(RM_F) "*.c" "pmc_*.h" "*_group.h" "*$(LOAD_EXT)" "*.dump" "lib-*" "*$(O)"
+@@ -72,3 +72,9 @@
+ distclean: realclean
+ 
+ svnclean: realclean
++
++#
++# Local variables:
++# mode: makefile
++# ex: ft=make
++# End:
+--- origsrc/parrot-0.8.2/config/gen/makefiles/dynpmc_pl.in	2008-10-02 03:22:42.000000000 +0000
++++ src/parrot-0.8.2/config/gen/makefiles/dynpmc_pl.in	2008-12-27 14:26:44.584125000 +0000
+@@ -36,7 +36,7 @@
+ our $CFLAGS = q[@ccflags@ @cc_shared@ @cc_debug@ @ccwarn@ @cc_hasjit@ @cg_flag@ @gc_flag@];
+ 
+ our $LIBPARROT = q[];
+-#CONDITIONED_LINE(parrot_is_shared):$LIBPARROT = q[@libparrot_ldflags@];
++#IF(parrot_is_shared):$LIBPARROT = q[@libparrot_ldflags@];
+ 
+ # Here comes some stuff for Win32.
+ our $PATHQUOTE = '';
+@@ -81,8 +81,15 @@
+ 
+     my $liblist;
+     if ($^O =~ /mswin32/i) {
+-        # Need to put various libraries in the link line.
+-        $liblist = join( ' ', map { "$_.lib" } keys %$libs );
++        # Note that we may need to look in the Parrot directory first.
++        if ($CC =~ /gcc/i) {
++            $liblist = qq{ -Wl,-L "@build_dir@"};
++        }
++        else {
++            $liblist = qq{ /LIBPATH:"@build_dir@"};
++        }
++        # Need to add various libraries in the link line.
++        $liblist .= join( ' ', map { "$_.lib" } keys %$libs );
+         if ($CC =~ /gcc/i) {
+             $liblist =~ s/libgdbm\.lib/-llibgdbm/i;
+         }
+@@ -90,14 +97,6 @@
+         $extraLibs =~ s/blib/..\\blib/g;
+         $extraLibs =~ s/\Q$(A)\E/.lib/g;
+         $liblist .= ' ' . $extraLibs;
+-
+-        # Also note that we may need to look in the Parrot blib directory.
+-        if ($CC =~ /gcc/i) {
+-            $liblist .= qq{ -Wl,-L "@build_dir@/blib/lib"};
+-        }
+-        else {
+-            $liblist .= qq{ /LIBPATH:"@build_dir@/blib/lib"};
+-        }
+     }
+     else {
+         $liblist = join( ' ', map { "-l$_" } keys %$libs );
+@@ -109,11 +108,14 @@
+         push @$sources, split ",", $ENV{DYNPMC_LINK};
+     }
+ 
++    # LDFLAGS, LIBS or ICU_SHARED may contain -L/usr/lib or -L/usr/local/lib
++    # falsely favoring an already installed libparrot.{so,dll}. So put liblist
++    # to the end.
+     return
+         "$LD ".
+         '@ld_out@' . $target . " " .
+         join(" ", map {"$PATHQUOTE$_$PATHQUOTE"} @$sources) .
+-        " $liblist $LDFLAGS $LD_LOAD_FLAGS $PATHQUOTE$LIBPARROT$PATHQUOTE";
++        " $LDFLAGS $LD_LOAD_FLAGS $PATHQUOTE$LIBPARROT$PATHQUOTE $liblist";
+ }
+ 
+ our $NOW = time();
+--- origsrc/parrot-0.8.2/config/gen/makefiles/editor.in	2008-12-17 06:55:11.000000000 +0000
++++ src/parrot-0.8.2/config/gen/makefiles/editor.in	2008-12-27 14:27:51.052875000 +0000
+@@ -1,8 +1,8 @@
+ # $Id: /mirror/trunk/config/gen/makefiles/editor.in 32838 2008-11-18T11:47:12.633216Z cotto  $
+ 
+ OPS_DIR     = ../src/ops
+-#CONDITIONED_LINE(win32):VIM_DIR     = $(USERPROFILE)/vimfiles
+-#INVERSE_CONDITIONED_LINE(win32):VIM_DIR     = $(HOME)/.vim
++#IF(win32):VIM_DIR     = $(USERPROFILE)/vimfiles
++#ELSE:VIM_DIR     = $(HOME)/.vim
+ VIM_FT_DIR  = $(VIM_DIR)/plugin
+ VIM_IN_DIR  = $(VIM_DIR)/indent
+ VIM_SYN_DIR = $(VIM_DIR)/syntax
+@@ -11,10 +11,15 @@
+ CP     = @cp@
+ MKPATH = @mkpath@
+ RM_F   = @rm_f@
++RECONFIGURE   = $(PERL) @build_dir@/tools/dev/reconfigure.pl
+ 
+ default: all
+ 
+-all: pir.vim imc.kate
++all: pir.vim imc.kate Makefile
++
++# regenerate the Makefile
++Makefile: @build_dir@/config/gen/makefiles/editor.in
++	cd @build_dir@ && $(RECONFIGURE) --step=gen::makefiles --target=editor/Makefile
+ 
+ # This is a listing of all targets, that are meant to be called by users
+ help :
+@@ -66,3 +71,9 @@
+ 
+ realclean: clean
+ 	$(RM_F) Makefile
++
++#
++# Local variables:
++# mode: makefile
++# ex: ft=make
++# End:
+--- origsrc/parrot-0.8.2/config/gen/makefiles/ext.in	2008-12-17 06:55:11.000000000 +0000
++++ src/parrot-0.8.2/config/gen/makefiles/ext.in	2008-12-25 13:44:20.240875000 +0000
+@@ -28,7 +28,14 @@
+ 	@echo "                This is the default."
+ 	@echo "  test:         Unified test suite for a lot of languages."
+ 	@echo ""
++	@echo "  installable:  Create self-hosting bins and libs."
++	@echo ""
++	@echo "  test-installable: Test self-hosting bins and libs."
++	@echo ""
++	@echo "  install:      Make install for a lot of languages."
++	@echo ""
+ 	@echo "  clean:        Clean up a lot of languages."
++	@echo "  realclean:    Clean up and remove Makefiles."
+ 	@echo ""
+ 	@echo "  help:         Print this help message."
+ 	@echo ""
+@@ -40,11 +47,14 @@
+ 	@echo ""
+ 	@echo "Following languages are available:"
+ 	@echo "  $(LANGUAGES)"
+-	@echo "A particular language <lang> can be built, tested and cleand up"
+ 	@echo "  make <lang>"
+ 	@echo "  make <lang>.test"
++	@echo "  make <lang>.installable"
++	@echo "  make <lang>.test-installable"
++	@echo "  make <lang>.install"
+ 	@echo "  make <lang>.clean"
+-	@echo "For the status of individual languages see LANGUAGES.STATUS.pod"
++	@echo "  make <lang>.realclean"
++	@echo "For the status of individual languages see LANGUAGES_STATUS.pod"
+ 	@echo ""
+ 
+ clean: \
+@@ -59,10 +69,15 @@
+ Parrot-Embed : Parrot-Embed.dummy
+ 
+ Parrot-Embed.dummy:
+-#CONDITIONED_LINE(win32):	- cd Parrot-Embed && $(PERL) Makefile.PL && nmake
+-#INVERSE_CONDITIONED_LINE(win32):	- cd Parrot-Embed && $(PERL) Makefile.PL && $(MAKE)
++#IF(win32):	- cd Parrot-Embed && $(PERL) Makefile.PL && nmake
++#ELSE:	- cd Parrot-Embed && $(PERL) Makefile.PL && $(MAKE)
+ 
+ Parrot-Embed.clean:
+-#CONDITIONED_LINE(win32):	- cd Parrot-Embed && nmake clean
+-#INVERSE_CONDITIONED_LINE(win32):	- cd Parrot-Embed && $(MAKE) clean
++#IF(win32):	- cd Parrot-Embed && nmake clean
++#ELSE:	- cd Parrot-Embed && $(MAKE) clean
+ 
++#
++# Local variables:
++# mode: makefile
++# ex: ft=make
++# End:
+--- origsrc/parrot-0.8.2/config/gen/makefiles/json.in	2008-05-28 19:43:48.000000000 +0000
++++ src/parrot-0.8.2/config/gen/makefiles/json.in	2008-12-25 13:44:20.240875000 +0000
+@@ -3,13 +3,19 @@
+ PERL     = @perl@
+ RM_F     = @rm_f@
+ PARROT   = ../../parrot@exe@
++RECONFIGURE   = $(PERL) @build_dir@/tools/dev/reconfigure.pl
++#IF(parrot_is_shared and !(cygwin|win32)):export LD_RUN_PATH := @blib_dir@:$(LD_RUN_PATH)
+ 
+ TOOL_DIR = ../..
+ PGE_DIR  = ../../compilers/pge
+ TGE_DIR  = ../../compilers/tge
+ 
+ # the default target
+-all: JSON.pbc
++all: JSON.pbc Makefile
++
++# regenerate the Makefile
++Makefile: @build_dir@/config/gen/makefiles/json.in
++	cd @build_dir@ && $(RECONFIGURE) --step=gen::makefiles --target=compilers/json/Makefile
+ 
+ # This is a listing of all targets, that are meant to be called by users
+ help:
+@@ -52,3 +58,9 @@
+ 
+ clean : testclean
+ 	@rm_f@ "JSON/*.pbc" "JSON/*.pir" JSON.pbc
++
++#
++# Local variables:
++# mode: makefile
++# ex: ft=make
++# End:
+--- origsrc/parrot-0.8.2/config/gen/makefiles/languages.in	2008-12-17 06:55:11.000000000 +0000
++++ src/parrot-0.8.2/config/gen/makefiles/languages.in	2008-12-25 13:44:20.256500000 +0000
+@@ -46,6 +46,12 @@
+ 	@echo ""
+ 	@echo "  test-separate: Run 'make test' in the individual lang dirs."
+ 	@echo ""
++	@echo "  installable:   Create self-hosting bins and libs."
++	@echo ""
++	@echo "  test-installable: Test self-hosting bins and libs."
++	@echo ""
++	@echo "  install:       Copy installable and more to DESTDIR."
++	@echo ""
+ 	@echo "  clean:         Clean up a lot of languages."
+ 	@echo ""
+ 	@echo "  help:          Print this help message."
+@@ -59,13 +65,16 @@
+ 	@echo "Following languages are available:"
+ 	@echo "  $(LANGUAGES)"
+ 	@echo ""
+-	@echo "A particular language <lang> can be built, tested and cleand up"
++	@echo "A particular language <lang> can be built, tested and cleaned up"
+ 	@echo "  make <lang>"
+ 	@echo "  make <lang>.test"
++	@echo "  make <lang>.installable"
++	@echo "  make <lang>.test-installable"
++	@echo "  make <lang>.install"
+ 	@echo "  make <lang>.clean"
+ 	@echo "  make <lang>.realclean"
+ 	@echo ""
+-	@echo "For the status of individual languages see LANGUAGES.STATUS.pod"
++	@echo "For the status of individual languages see LANGUAGES_STATUS.pod"
+ 	@echo ""
+ 
+ # regenerate the Makefile
+@@ -87,7 +96,7 @@
+     hq9plus.test \
+     jako.test json.test \
+     lazy-k.test lisp.test lolcode.test lua.test \
+-    m4.test \
++    m4.test markdown.test \
+     ook.test \
+     parrot_compiler.test perl6.test pheme.test PIR.test pipp.test punie.test pynie.test \
+     regex.test \
+@@ -96,6 +105,65 @@
+     WMLScript.test \
+     Zcode.test
+ 
++installable : all \
++    abc.installable APL.installable \
++    befunge.installable bf.installable \
++    c99.installable cardinal.installable chitchat.installable cola.installable \
++    dotnet.installable \
++    eclectus.installable ecmascript.installable \
++    forth.installable \
++    hq9plus.installable \
++    jako.installable json.installable \
++    lazy-k.installable lisp.installable lolcode.installable lua.installable \
++    m4.installable markdown.installable \
++    ook.installable \
++    parrot_compiler.installable perl6.installable pheme.installable PIR.installable pipp.installable punie.installable pynie.installable \
++    regex.installable \
++    scheme.installable squaak.installable \
++    tcl.installable \
++    urm.installable unlambda.installable \
++    WMLScript.installable \
++    Zcode.installable
++
++test-installable : all \
++    abc.test-installable APL.test-installable \
++    befunge.test-installable bf.test-installable \
++    c99.test-installable cardinal.test-installable chitchat.test-installable cola.test-installable \
++    dotnet.test-installable \
++    eclectus.test-installable ecmascript.test-installable \
++    forth.test-installable \
++    hq9plus.test-installable \
++    jako.test-installable json.test-installable \
++    lazy-k.test-installable lisp.test-installable lolcode.test-installable lua.test-installable \
++    m4.test-installable markdown.test-installable \
++    ook.test-installable \
++    parrot_compiler.test-installable perl6.test-installable pheme.test-installable PIR.test-installable pipp.test-installable punie.test-installable pynie.test-installable \
++    regex.test-installable \
++    scheme.test-installable squaak.test-installable \
++    tcl.test-installable \
++    urm.test-installable unlambda.test-installable \
++    WMLScript.test-installable \
++    Zcode.test-installable
++
++install : all \
++    abc.install APL.install \
++    befunge.install bf.install \
++    c99.install cardinal.install chitchat.install cola.install \
++    dotnet.install \
++    eclectus.install ecmascript.install \
++    forth.install \
++    hq9plus.install \
++    jako.install json.install \
++    lazy-k.install lisp.install lolcode.install lua.install \
++    m4.install markdown.install \
++    ook.install \
++    parrot_compiler.install perl6.install pheme.install PIR.install pipp.install punie.install pynie.install \
++    regex.install \
++    scheme.install squaak.install \
++    tcl.install \
++    urm.install unlambda.install \
++    WMLScript.install \
++    Zcode.install
+ 
+ smoke:  all
+ 	$(PERL) t/harness --html
+@@ -156,6 +224,12 @@
+ 	- $(MAKE) abc
+ abc.test:
+ 	- $(MAKE) abc test
++abc.installable:
++	- $(MAKE) abc installable
++abc.test-installable:
++	- $(MAKE) abc test-installable DESTDIR=$(DESTDIR)
++abc.install:
++	- $(MAKE) abc install DESTDIR=$(DESTDIR)
+ abc.clean:
+ 	- $(MAKE) abc clean
+ abc.realclean:
+@@ -166,6 +240,12 @@
+ 	- $(MAKE) APL
+ APL.test:
+ 	- $(MAKE) APL test
++APL.installable:
++	- $(MAKE) APL installable
++APL.test-installable:
++	- $(MAKE) APL test-installable DESTDIR=$(DESTDIR)
++APL.install:
++	- $(MAKE) APL install DESTDIR=$(DESTDIR)
+ APL.clean:
+ 	- $(MAKE) APL clean
+ APL.realclean:
+@@ -176,6 +256,12 @@
+ # don't know how to build BASIC
+ BASIC.test:
+ # Don't know how to test BASIC
++BASIC.installable:
++# Missing for BASIC
++BASIC.test-installable:
++# Missing for BASIC
++BASIC.install:
++# Missing for BASIC
+ BASIC.clean:
+ # Don't know how to clean BASIC
+ 
+@@ -184,6 +270,12 @@
+ 	- $(MAKE) befunge
+ befunge.test:
+ 	- $(MAKE) befunge test
++befunge.installable:
++	- $(MAKE) befunge installable
++befunge.test-installable:
++	- $(MAKE) befunge test-installable DESTDIR=$(DESTDIR)
++befunge.install:
++	- $(MAKE) befunge install DESTDIR=$(DESTDIR)
+ befunge.clean:
+ 	- $(MAKE) befunge clean
+ befunge.realclean:
+@@ -194,6 +286,12 @@
+ 	- $(MAKE) bf
+ bf.test:
+ 	- $(MAKE) bf test
++bf.installable:
++	- $(MAKE) bf installable
++bf.test-installable:
++	- $(MAKE) bf test-installable DESTDIR=$(DESTDIR)
++bf.install:
++	- $(MAKE) bf install DESTDIR=$(DESTDIR)
+ bf.clean:
+ 	- $(MAKE) bf clean
+ bf.realclean:
+@@ -204,6 +302,12 @@
+ 	- $(MAKE) c99
+ c99.test:
+ 	- $(MAKE) c99 test
++c99.installable:
++	- $(MAKE) c99 installable
++c99.test-installable:
++	- $(MAKE) c99 test-installable DESTDIR=$(DESTDIR)
++c99.install:
++	- $(MAKE) c99 install DESTDIR=$(DESTDIR)
+ c99.clean:
+ 	- $(MAKE) c99 clean
+ c99.realclean:
+@@ -214,6 +318,12 @@
+ 	- $(MAKE) cardinal
+ cardinal.test:
+ 	- $(MAKE) cardinal test
++cardinal.installable:
++	- $(MAKE) cardinal installable
++cardinal.test-installable:
++	- $(MAKE) cardinal test-installable DESTDIR=$(DESTDIR)
++cardinal.install:
++	- $(MAKE) cardinal install DESTDIR=$(DESTDIR)
+ cardinal.clean:
+ 	- $(MAKE) cardinal clean
+ cardinal.realclean:
+@@ -224,6 +334,12 @@
+ 	- $(MAKE) chitchat
+ chitchat.test:
+ 	- $(MAKE) chitchat test
++chitchat.installable:
++	- $(MAKE) chitchat installable
++chitchat.test-installable:
++	- $(MAKE) chitchat test-installable DESTDIR=$(DESTDIR)
++chitchat.install:
++	- $(MAKE) chitchat install DESTDIR=$(DESTDIR)
+ chitchat.clean:
+ 	- $(MAKE) chitchat clean
+ chitchat.realclean:
+@@ -234,6 +350,12 @@
+ 	- $(MAKE) cola
+ cola.test:
+ 	- $(MAKE) cola test
++cola.installable:
++	- $(MAKE) cola installable
++cola.test-installable:
++	- $(MAKE) cola test-installable DESTDIR=$(DESTDIR)
++cola.install:
++	- $(MAKE) cola install DESTDIR=$(DESTDIR)
+ cola.clean:
+ 	- $(MAKE) cola clean
+ cola.realclean:
+@@ -245,6 +367,12 @@
+ 	- $(MAKE) dotnet
+ dotnet.test:
+ 	- $(MAKE) dotnet test
++dotnet.installable:
++	- $(MAKE) dotnet installable
++dotnet.test-installable:
++	- $(MAKE) dotnet test-installable DESTDIR=$(DESTDIR)
++dotnet.install:
++	- $(MAKE) dotnet install DESTDIR=$(DESTDIR)
+ dotnet.clean:
+ 	- $(MAKE) dotnet clean
+ dotnet.realclean:
+@@ -255,6 +383,12 @@
+ 	- $(MAKE) eclectus
+ eclectus.test :
+ 	- $(MAKE) eclectus test
++eclectus.installable:
++	- $(MAKE) eclectus installable
++eclectus.test-installable:
++	- $(MAKE) eclectus test-installable DESTDIR=$(DESTDIR)
++eclectus.install:
++	- $(MAKE) eclectus install DESTDIR=$(DESTDIR)
+ eclectus.clean :
+ 	- $(MAKE) eclectus clean
+ eclectus.realclean :
+@@ -265,6 +399,12 @@
+ 	- $(MAKE) ecmascript
+ ecmascript.test:
+ 	- $(MAKE) ecmascript test
++ecmascript.installable:
++	- $(MAKE) ecmascript installable
++ecmascript.test-installable:
++	- $(MAKE) ecmascript test-installable DESTDIR=$(DESTDIR)
++ecmascript.install:
++	- $(MAKE) ecmascript install DESTDIR=$(DESTDIR)
+ ecmascript.clean:
+ 	- $(MAKE) ecmascript clean
+ ecmascript.realclean:
+@@ -275,6 +415,12 @@
+ 	- $(MAKE) forth
+ forth.test:
+ 	- $(MAKE) forth test
++forth.installable:
++	- $(MAKE) forth installable
++forth.test-installable:
++	- $(MAKE) forth test-installable DESTDIR=$(DESTDIR)
++forth.install:
++	- $(MAKE) forth install DESTDIR=$(DESTDIR)
+ forth.clean:
+ 	- $(MAKE) forth clean
+ forth.realclean:
+@@ -285,6 +431,12 @@
+ 	- $(MAKE) hq9plus
+ hq9plus.test:
+ 	- $(MAKE) hq9plus test
++hq9plus.installable:
++	- $(MAKE) hq9plus installable
++hq9plus.test-installable:
++	- $(MAKE) hq9plus test-installable DESTDIR=$(DESTDIR)
++hq9plus.install:
++	- $(MAKE) hq9plus install DESTDIR=$(DESTDIR)
+ hq9plus.clean:
+ 	- $(MAKE) hq9plus clean
+ hq9plus.realclean:
+@@ -295,6 +447,12 @@
+ 	- $(MAKE) jako
+ jako.test:
+ 	- $(MAKE) jako test
++jako.installable:
++	- $(MAKE) jako installable
++jako.test-installable:
++	- $(MAKE) jako test-installable DESTDIR=$(DESTDIR)
++jako.install:
++	- $(MAKE) jako install DESTDIR=$(DESTDIR)
+ jako.clean:
+ 	- $(MAKE) jako clean
+ jako.realclean:
+@@ -305,6 +463,12 @@
+ 	- $(MAKE) json
+ json.test:
+ 	- $(MAKE) json test
++json.installable:
++	- $(MAKE) json installable
++json.test-installable:
++	- $(MAKE) json test-installable DESTDIR=$(DESTDIR)
++json.install:
++	- $(MAKE) json install DESTDIR=$(DESTDIR)
+ json.clean:
+ 	- $(MAKE) json clean
+ json.realclean:
+@@ -315,6 +479,12 @@
+ 	- $(MAKE) lazy-k
+ lazy-k.test:
+ 	- $(MAKE) lazy-k test
++lazy-k.installable:
++	- $(MAKE) lazy-k installable
++lazy-k.test-installable:
++	- $(MAKE) lazy-k test-installable DESTDIR=$(DESTDIR)
++lazy-k.install:
++	- $(MAKE) lazy-k install DESTDIR=$(DESTDIR)
+ lazy-k.clean:
+ 	- $(MAKE) lazy-k clean
+ lazy-k.realclean:
+@@ -325,6 +495,12 @@
+ 	- $(MAKE) lisp
+ lisp.test:
+ 	- $(MAKE) lisp test
++lisp.installable:
++	- $(MAKE) lisp installable
++lisp.test-installable:
++	- $(MAKE) lisp test-installable DESTDIR=$(DESTDIR)
++lisp.install:
++	- $(MAKE) lisp install DESTDIR=$(DESTDIR)
+ lisp.clean:
+ 	- $(MAKE) lisp clean
+ lisp.realclean:
+@@ -335,6 +511,12 @@
+ 	- $(MAKE) lolcode
+ lolcode.test:
+ 	- $(MAKE) lolcode test
++lolcode.installable:
++	- $(MAKE) lolcode installable
++lolcode.test-installable:
++	- $(MAKE) lolcode test-installable DESTDIR=$(DESTDIR)
++lolcode.install:
++	- $(MAKE) lolcode install DESTDIR=$(DESTDIR)
+ lolcode.clean:
+ 	- $(MAKE) lolcode clean
+ lolcode.realclean:
+@@ -345,6 +527,12 @@
+ 	- $(MAKE) lua
+ lua.test:
+ 	- $(MAKE) lua test
++lua.installable:
++	- $(MAKE) lua installable
++lua.test-installable:
++	- $(MAKE) lua test-installable DESTDIR=$(DESTDIR)
++lua.install:
++	- $(MAKE) lua install DESTDIR=$(DESTDIR)
+ lua.clean:
+ 	- $(MAKE) lua clean
+ lua.realclean:
+@@ -355,6 +543,12 @@
+ 	- $(MAKE) m4
+ m4.test:
+ 	- $(MAKE) m4 test
++m4.installable:
++	- $(MAKE) m4 installable
++m4.test-installable:
++	- $(MAKE) m4 test-installable DESTDIR=$(DESTDIR)
++m4.install:
++	- $(MAKE) m4 install DESTDIR=$(DESTDIR)
+ m4.clean:
+ 	- $(MAKE) m4 clean
+ m4.realclean:
+@@ -365,6 +559,12 @@
+ 	- $(MAKE) markdown
+ markdown.test:
+ 	- $(MAKE) markdown test
++markdown.installable:
++	- $(MAKE) markdown installable
++markdown.test-installable:
++	- $(MAKE) markdown test-installable DESTDIR=$(DESTDIR)
++markdown.install:
++	- $(MAKE) markdown install DESTDIR=$(DESTDIR)
+ markdown.clean:
+ 	- $(MAKE) markdown clean
+ markdown.realclean:
+@@ -375,6 +575,12 @@
+ 	- $(MAKE) ook
+ ook.test:
+ 	- $(MAKE) ook test
++ook.installable:
++	- $(MAKE) ook installable
++ook.test-installable:
++	- $(MAKE) ook test-installable DESTDIR=$(DESTDIR)
++ook.install:
++	- $(MAKE) ook install DESTDIR=$(DESTDIR)
+ ook.clean:
+ 	- $(MAKE) ook clean
+ ook.realclean:
+@@ -385,6 +591,12 @@
+ 	- $(MAKE) parrot_compiler
+ parrot_compiler.test:
+ 	- $(MAKE) parrot_compiler test
++parrot_compiler.installable:
++	- $(MAKE) ook installable
++parrot_compiler.test-installable:
++	- $(MAKE) ook test-installable DESTDIR=$(DESTDIR)
++parrot_compiler.install:
++	- $(MAKE) ook install DESTDIR=$(DESTDIR)
+ parrot_compiler.clean:
+ 	- $(MAKE) parrot_compiler clean
+ parrot_compiler.realclean:
+@@ -395,6 +607,12 @@
+ 	- $(MAKE) perl6
+ perl6.test:
+ 	- $(MAKE) perl6 test
++perl6.installable:
++	- $(MAKE) perl6 installable
++perl6.test-installable:
++	- $(MAKE) perl6 test-installable DESTDIR=$(DESTDIR)
++perl6.install:
++	- $(MAKE) perl6 install DESTDIR=$(DESTDIR)
+ perl6.clean:
+ 	- $(MAKE) perl6 clean
+ perl6.realclean:
+@@ -405,6 +623,12 @@
+ 	- $(MAKE) pheme
+ pheme.test:
+ 	- $(MAKE) pheme test
++pheme.installable:
++	- $(MAKE) pheme installable
++pheme.test-installable:
++	- $(MAKE) pheme test-installable DESTDIR=$(DESTDIR)
++pheme.install:
++	- $(MAKE) pheme install DESTDIR=$(DESTDIR)
+ pheme.clean:
+ 	- $(MAKE) pheme clean
+ pheme.realclean:
+@@ -415,6 +639,12 @@
+ 	- $(MAKE) pipp
+ pipp.test:
+ 	- $(MAKE) pipp test
++pipp.installable:
++	- $(MAKE) pipp installable
++pipp.test-installable:
++	- $(MAKE) pipp test-installable DESTDIR=$(DESTDIR)
++pipp.install:
++	- $(MAKE) pipp install DESTDIR=$(DESTDIR)
+ pipp.clean:
+ 	- $(MAKE) pipp clean
+ pipp.realclean:
+@@ -425,6 +655,12 @@
+ 	- $(MAKE) PIR
+ PIR.test:
+ 	- $(MAKE) PIR test
++PIR.installable:
++	- $(MAKE) PIR installable
++PIR.test-installable:
++	- $(MAKE) PIR test-installable DESTDIR=$(DESTDIR)
++PIR.install:
++	- $(MAKE) PIR install DESTDIR=$(DESTDIR)
+ PIR.clean:
+ 	- $(MAKE) PIR clean
+ PIR.realclean:
+@@ -435,6 +671,12 @@
+ 	- $(MAKE) punie
+ punie.test:
+ 	- $(MAKE) punie test
++punie.installable:
++	- $(MAKE) punie installable
++punie.test-installable:
++	- $(MAKE) punie test-installable DESTDIR=$(DESTDIR)
++punie.install:
++	- $(MAKE) punie install DESTDIR=$(DESTDIR)
+ punie.clean:
+ 	- $(MAKE) punie clean
+ punie.realclean:
+@@ -445,6 +687,12 @@
+ 	- $(MAKE) pynie
+ pynie.test:
+ 	- $(MAKE) pynie test
++pynie.installable:
++	- $(MAKE) pynie installable
++pynie.test-installable:
++	- $(MAKE) pynie test-installable DESTDIR=$(DESTDIR)
++pynie.install:
++	- $(MAKE) pynie install DESTDIR=$(DESTDIR)
+ pynie.clean:
+ 	- $(MAKE) pynie clean
+ pynie.realclean:
+@@ -455,6 +703,12 @@
+ 	- $(MAKE) regex
+ regex.test :
+ 	- $(MAKE) regex test
++regex.installable:
++	- $(MAKE) regex installable
++regex.test-installable:
++	- $(MAKE) regex test-installable DESTDIR=$(DESTDIR)
++regex.install:
++	- $(MAKE) regex install DESTDIR=$(DESTDIR)
+ regex.clean :
+ 	- $(MAKE) regex clean
+ regex.realclean :
+@@ -465,6 +719,12 @@
+ 	@echo "SKIPPED: scheme: (nothing to make, but should not default to make test)"
+ scheme.test :
+ 	- $(MAKE) scheme test
++scheme.installable:
++	- $(MAKE) scheme installable
++scheme.test-installable:
++	- $(MAKE) scheme test-installable DESTDIR=$(DESTDIR)
++scheme.install:
++	- $(MAKE) scheme install DESTDIR=$(DESTDIR)
+ scheme.clean :
+ 	- $(MAKE) scheme clean
+ scheme.realclean :
+@@ -475,6 +735,12 @@
+ 	- $(MAKE) squaak
+ squaak.test:
+ 	- $(MAKE) squaak test
++squaak.installable:
++	- $(MAKE) squaak installable
++squaak.test-installable:
++	- $(MAKE) squaak test-installable DESTDIR=$(DESTDIR)
++squaak.install:
++	- $(MAKE) squaak install DESTDIR=$(DESTDIR)
+ squaak.clean:
+ 	- $(MAKE) squaak clean
+ squaak.realclean:
+@@ -485,6 +751,12 @@
+ 	- $(MAKE) unlambda
+ unlambda.test :
+ 	- $(MAKE) unlambda test
++unlambda.installable:
++	- $(MAKE) unlambda installable
++unlambda.test-installable:
++	- $(MAKE) unlambda test-installable DESTDIR=$(DESTDIR)
++unlambda.install:
++	- $(MAKE) unlambda install DESTDIR=$(DESTDIR)
+ unlambda.clean :
+ 	- $(MAKE) unlambda clean
+ unlambda.realclean :
+@@ -495,6 +767,12 @@
+ 	- $(MAKE) urm
+ urm.test:
+ 	- $(MAKE) urm test
++urm.installable:
++	- $(MAKE) urm installable
++urm.test-installable:
++	- $(MAKE) urm test-installable DESTDIR=$(DESTDIR)
++urm.install:
++	- $(MAKE) urm install DESTDIR=$(DESTDIR)
+ urm.clean:
+ 	- $(MAKE) urm clean
+ urm.realclean:
+@@ -505,6 +783,12 @@
+ 	- $(MAKE) WMLScript
+ WMLScript.test:
+ 	- $(MAKE) WMLScript test
++WMLScript.installable:
++	- $(MAKE) WMLScript installable
++WMLScript.test-installable:
++	- $(MAKE) WMLScript test-installable DESTDIR=$(DESTDIR)
++WMLScript.install:
++	- $(MAKE) WMLScript install DESTDIR=$(DESTDIR)
+ WMLScript.clean:
+ 	- $(MAKE) WMLScript clean
+ WMLScript.realclean:
+@@ -515,7 +799,19 @@
+ # Do nothing. make Zcode requires an Inform compiler
+ Zcode.test:
+ 	- $(MAKE) Zcode test
++Zcode.installable:
++# Do nothing. make Zcode requires an Inform compiler
++Zcode.test-installable:
++# Do nothing. make Zcode requires an Inform compiler
++Zcode.install:
++# Do nothing. make Zcode requires an Inform compiler
+ Zcode.clean:
+ 	- $(MAKE) Zcode clean
+ Zcode.realclean:
+ 	- $(MAKE) Zcode realclean
++
++#
++# Local variables:
++# mode: makefile
++# ex: ft=make
++# End:
+--- origsrc/parrot-0.8.2/config/gen/makefiles/nqp.in	2008-05-28 19:43:48.000000000 +0000
++++ src/parrot-0.8.2/config/gen/makefiles/nqp.in	2008-12-25 13:44:20.256500000 +0000
+@@ -4,6 +4,8 @@
+ PERL     = @perl@
+ RM_F     = @rm_f@
+ PARROT   = ../../parrot@exe@
++RECONFIGURE   = $(PERL) @build_dir@/tools/dev/reconfigure.pl
++#IF(parrot_is_shared and !(cygwin|win32)):export LD_RUN_PATH := @blib_dir@:$(LD_RUN_PATH)
+ 
+ PARROT_LIBRARY = @build_dir@/runtime/parrot/library
+ PGE_LIBRARY  = @build_dir@/runtime/parrot/library/PGE
+@@ -26,11 +28,15 @@
+ 
+ boot: $(BOOTSRC)
+ 	$(PARROT) nqp.pbc \
+-	--output=bootstrap/gen_actions.pir \
+-	--target=pir \
+-	bootstrap/actions.pm
++	  --output=bootstrap/gen_actions.pir \
++	  --target=pir \
++	  bootstrap/actions.pm
+ 	$(PARROT) --output-pbc -o bootstrap/nqp.pbc bootstrap/nqp.pir
+ 
++# regenerate the Makefile
++Makefile: @build_dir@/config/gen/makefiles/nqp.in
++	cd @build_dir@ && $(RECONFIGURE) --step=gen::makefiles --target=compilers/nqp/Makefile
++
+ # This is a listing of all targets, that are meant to be called by users
+ help:
+ 	@echo ""
+@@ -71,3 +77,9 @@
+ 	$(RM_F) Makefile
+ 
+ distclean: realclean
++
++#
++# Local variables:
++# mode: makefile
++# ex: ft=make
++# End:
+--- origsrc/parrot-0.8.2/config/gen/makefiles/parrot_embed.in	2007-11-10 04:47:18.000000000 +0000
++++ src/parrot-0.8.2/config/gen/makefiles/parrot_embed.in	2008-12-25 13:44:20.272125000 +0000
+@@ -15,7 +15,7 @@
+ $config{PARROT}          = '..@slash@..@slash@parrot@exe@';
+ $config{C_LIBS}          = '@libs@';
+ $config{INCLUDE}         = "$config{PARROTDIR}/include";
+-#INVERSE_CONDITIONED_LINE(win32):$config{ALL_PARROT_LIBS} = "@libparrot_ldflags@ $config{C_LIBS}";
++#UNLESS(win32):$config{ALL_PARROT_LIBS} = "@libparrot_ldflags@ $config{C_LIBS}";
+ $config{ABS_PARROTDIR}   = Cwd::realpath(
+                                File::Spec->rel2abs( $config{PARROTDIR} ) );
+ $config{LDDLFLAGS}       = $Config{lddlflags};
+@@ -30,9 +30,9 @@
+     'NAME'         => 'Parrot::Embed',
+     'VERSION_FROM' => 'lib/Parrot/Embed.pm',
+     'PREREQ_PM'    => { 'ExtUtils::CBuilder' => 0 },
+-#CONDITIONED_LINE(win32):    'LIBS'         => [ $config{C_LIBS} ],
+-#CONDITIONED_LINE(win32):    'OBJECT'       => "@libparrot_ldflags@ Embed@o@",
+-#INVERSE_CONDITIONED_LINE(win32):    'LIBS'         => [ $config{ALL_PARROT_LIBS} ],
++#IF(win32):    'LIBS'         => [ $config{C_LIBS} ],
++#IF(win32):    'OBJECT'       => "@libparrot_ldflags@ Embed@o@",
++#ELSE:    'LIBS'         => [ $config{ALL_PARROT_LIBS} ],
+     'INC'          => "-I$config{INCLUDE}",
+     'PM'           => { map { $_ => "blib/$_" } <lib/Parrot/*pm> },
+     'clean'        => { FILES => '*.xs t/greet.pbc' },
+@@ -43,7 +43,9 @@
+ 
+ sub postamble
+ {
+-    "t/greet.pbc:\n\t$config{PARROT} -o t/greet.pbc t/greet.pir\n";
++    "t/greet.pbc:\n\t$config{PARROT} -o t/greet.pbc t/greet.pir\n"
++    ."#\n# Local variables:\n# mode: makefile\n"
++    ."# ex: ft=make\n# End:\n";
+ }
+ 
+ sub test
+@@ -64,3 +66,10 @@
+     $inherited     =~ s{($sub_target)}{$1 t/greet.pbc};
+     $inherited;
+ }
++
++# Local Variables:
++#   mode: cperl
++#   cperl-indent-level: 4
++#   fill-column: 100
++# End:
++# vim: expandtab shiftwidth=4:
+--- origsrc/parrot-0.8.2/config/gen/makefiles/pct.in	2008-01-02 19:00:25.000000000 +0000
++++ src/parrot-0.8.2/config/gen/makefiles/pct.in	2008-12-25 13:44:20.272125000 +0000
+@@ -9,6 +9,8 @@
+ PGE_DIR  = ../../compilers/pge
+ TEST_DIR = ../../t/compilers/pct
+ CP       = @cp@
++RECONFIGURE   = $(PERL) @build_dir@/tools/dev/reconfigure.pl
++#IF(parrot_is_shared and !(cygwin|win32)):export LD_RUN_PATH := @blib_dir@:$(LD_RUN_PATH)
+ 
+ # Where to put things
+ PARROT_LIBRARY    = ../../runtime/parrot/library
+@@ -30,7 +32,7 @@
+   src/POST/Node.pir
+ 
+ # the default target
+-all: $(PARROT_LIBRARY)/PCT.pbc
++all: $(PARROT_LIBRARY)/PCT.pbc Makefile
+ 
+ $(PARROT_LIBRARY)/PCT.pbc: $(PARROT) $(PCT_SOURCES)
+ 	$(PARROT) -o $(PARROT_LIBRARY)/PCT.pbc --output-pbc PCT.pir
+@@ -38,6 +40,10 @@
+ 	$(PARROT) -o $(PARROT_LIBRARY)/PCT/Grammar.pbc --output-pbc src/PCT/Grammar.pir
+ 	$(PARROT) -o $(PARROT_LIBRARY)/PCT/HLLCompiler.pbc --output-pbc src/PCT/HLLCompiler.pir
+ 
++# regenerate the Makefile
++Makefile: @build_dir@/config/gen/makefiles/pct.in
++	cd @build_dir@ && $(RECONFIGURE) --step=gen::makefiles --target=compilers/pct/Makefile
++
+ # This is a listing of all targets, that are meant to be called by users
+ help:
+ 	@echo ""
+@@ -72,3 +78,9 @@
+ 	$(RM_F) Makefile
+ 
+ distclean: realclean
++
++#
++# Local variables:
++# mode: makefile
++# ex: ft=make
++# End:
+--- origsrc/parrot-0.8.2/config/gen/makefiles/pge.in	2008-05-28 19:43:48.000000000 +0000
++++ src/parrot-0.8.2/config/gen/makefiles/pge.in	2008-12-25 13:44:20.287750000 +0000
+@@ -7,12 +7,14 @@
+ PARROT   = ../../parrot@exe@
+ TOOL_DIR = ../..
+ CP       = @cp@
++RECONFIGURE   = $(PERL) @build_dir@/tools/dev/reconfigure.pl
++#IF(parrot_is_shared and !(cygwin|win32)):export LD_RUN_PATH := @blib_dir@:$(LD_RUN_PATH)
+ 
+ # Where to put things
+ PARROT_LIBRARY    = ../../runtime/parrot/library
+ 
+ # the default target
+-all: $(PARROT_LIBRARY)/PGE.pbc
++all: $(PARROT_LIBRARY)/PGE.pbc Makefile
+ 
+ SOURCES = PGE.pir \
+   PGE/Exp.pir \
+@@ -30,10 +32,14 @@
+ 	$(RM_F) PGE.pbc $(PARROT_LIBRARY)/PGE.pbc
+ 	$(PERL) -e "" >PGE/builtins_gen.pir
+ 	$(PARROT) -o PGE.pbc --output-pbc PGE.pir
+-	$(PARROT) $(PARROT_LIBRARY)/PGE/Perl6Grammar.pir  --output=PGE/builtins_gen.pir PGE/builtins.pg
++	$(PARROT) $(PARROT_LIBRARY)/PGE/Perl6Grammar.pir --output=PGE/builtins_gen.pir PGE/builtins.pg
+ 	$(RM_F) PGE.pbc
+ 	$(PARROT) -o PGE.pbc --output-pbc PGE.pir
+ 
++# regenerate the Makefile
++Makefile: @build_dir@/config/gen/makefiles/pge.in
++	cd @build_dir@ && $(RECONFIGURE) --step=gen::makefiles --target=compilers/pge/Makefile
++
+ # This is a listing of all targets, that are meant to be called by users
+ help:
+ 	@echo ""
+@@ -75,3 +81,9 @@
+ 	$(RM_F) Makefile
+ 
+ distclean: realclean
++
++#
++# Local variables:
++# mode: makefile
++# ex: ft=make
++# End:
+--- origsrc/parrot-0.8.2/config/gen/makefiles/pirc.in	2008-12-17 06:55:11.000000000 +0000
++++ src/parrot-0.8.2/config/gen/makefiles/pirc.in	2008-12-25 13:44:20.287750000 +0000
+@@ -8,6 +8,8 @@
+ TOOL_DIR      = ../..
+ CC            = @cc@
+ CP            = @cp@
++POD2HTML      = pod2html
++PODCHECKER    = podchecker
+ BUILD         = $(PERL) @build_dir@/tools/build/dynpmc.pl
+ O             = @o@
+ EXE           = @exe@
+@@ -56,8 +58,11 @@
+ 
+ 
+ # the default target
+-all: pirc$(EXE)
++all: pirc$(EXE) heredoc macro Makefile
+ 
++# regenerate the Makefile
++Makefile: $(BUILD_DIR)/config/gen/makefiles/pirc.in
++	cd $(BUILD_DIR) && $(RECONFIGURE) --step=gen::makefiles --target=compilers/pirc/Makefile
+ 
+ pirc$(EXE): $(OBJS)
+ 	$(LINK) @ld_out@$@ \
+@@ -76,7 +81,7 @@
+ new/bcgen$(O): new/bcgen.c new/bcgen.h
+ 
+ test: all
+-	podchecker $(SOURCES) \
++	$(PODCHECKER) $(SOURCES) \
+ 	doc/design.pod \
+ 	README.pod
+ 	perl t/harness
+@@ -98,3 +103,9 @@
+ doc/*.html
+ 
+ distclean: realclean
++
++#
++# Local variables:
++# mode: makefile
++# ex: ft=make
++# End:
+--- origsrc/parrot-0.8.2/config/gen/makefiles/root.in	2008-12-17 06:55:11.000000000 +0000
++++ src/parrot-0.8.2/config/gen/makefiles/root.in	2008-12-25 13:44:20.303375000 +0000
+@@ -19,6 +19,7 @@
+ DEVEL           = @DEVEL@
+ VERSION         = @VERSION@$(DEVEL)
+ SOVERSION       = @VERSION@
++CONFIG_ARGS     = @config_args@
+ 
+ # Override at least PREFIX with the install location if you're going
+ # to be using this outside of your build area.
+@@ -105,7 +106,7 @@
+ RECONFIGURE      = $(PERL) tools/dev/reconfigure.pl
+ INNO_SETUP       = iscc
+ JIT_BUILD_TOOL   = $(BUILD_TOOLS_DIR)/jit2c.pl
+-#CONDITIONED_LINE(darwin):export MACOSX_DEPLOYMENT_TARGET := @osx_version@
++#IF(darwin):export MACOSX_DEPLOYMENT_TARGET := @osx_version@
+ 
+ ###############################################################################
+ #
+@@ -138,7 +139,7 @@
+ 
+ GEN_MAKEFILES = \
+     Makefile \
+-#CONDITIONED_LINE(has_perldoc):    docs/Makefile \
++#IF(has_perldoc):    docs/Makefile \
+     compilers/bcg/Makefile \
+     compilers/json/Makefile \
+     compilers/ncigen/Makefile \
+@@ -165,9 +166,9 @@
+     lib/Parrot/PMC.pm \
+     runtime/parrot/include/config.fpmc \
+     $(SRC_DIR)/platform.c \
+-#CONDITIONED_LINE(platform_asm):    $(SRC_DIR)/platform_asm.s \
+-#CONDITIONED_LINE(has_opengl):    config/gen/call_list/opengl.in \
+-#CONDITIONED_LINE(has_glut):    $(SRC_DIR)/glut_callbacks.c \
++#IF(platform_asm):    $(SRC_DIR)/platform_asm.s \
++#IF(has_opengl):    config/gen/call_list/opengl.in \
++#IF(has_glut):    $(SRC_DIR)/glut_callbacks.c \
+     $(SRC_DIR)/core_pmcs.c \
+     CFLAGS \
+     $(IMCC_DIR)/CFLAGS \
+@@ -184,8 +185,8 @@
+ 
+ GEN_PASM_INCLUDES = \
+     runtime/parrot/include/signal.pasm \
+-#CONDITIONED_LINE(has_opengl):    runtime/parrot/include/opengl_defines.pasm \
+-#CONDITIONED_LINE(has_opengl):    runtime/parrot/library/OpenGL_funcs.pir \
++#IF(has_opengl):    runtime/parrot/include/opengl_defines.pasm \
++#IF(has_opengl):    runtime/parrot/library/OpenGL_funcs.pir \
+     @TEMP_gen_pasm_includes@
+ 
+ CONFIGURE_GENERATED_FILES = \
+@@ -253,7 +254,7 @@
+     $(LIBRARY_DIR)/MIME/Base64.pbc \
+     $(LIBRARY_DIR)/NCI/call_toolkit_init.pbc \
+     $(LIBRARY_DIR)/ncurses.pbc \
+-#CONDITIONED_LINE(has_opengl):    $(LIBRARY_DIR)/OpenGL.pbc \
++#IF(has_opengl):    $(LIBRARY_DIR)/OpenGL.pbc \
+     $(LIBRARY_DIR)/P6object.pbc \
+     $(LIBRARY_DIR)/parrotlib.pbc \
+     $(LIBRARY_DIR)/pcre.pbc \
+@@ -369,7 +370,7 @@
+     $(OPS_DIR)/core_ops$(O) \
+     $(OPS_DIR)/core_ops_switch$(O) \
+     \
+-#CONDITIONED_LINE(i386_has_gcc_cmpxchg):    $(SRC_DIR)/atomic/gcc_x86$(O) \
++#IF(i386_has_gcc_cmpxchg):    $(SRC_DIR)/atomic/gcc_x86$(O) \
+     $(SRC_DIR)/byteorder$(O) \
+     $(SRC_DIR)/charset$(O) \
+     $(SRC_DIR)/core_pmcs$(O) \
+@@ -441,7 +442,7 @@
+     @TEMP_atomic_o@ \
+     @TEMP_jit_o@ \
+     @TEMP_gc_o@ \
+-#CONDITIONED_LINE(platform_asm):    $(SRC_DIR)/platform_asm$(O) \
++#IF(platform_asm):    $(SRC_DIR)/platform_asm$(O) \
+ 
+ O_FILES = \
+     $(INTERP_O_FILES) \
+@@ -484,14 +485,15 @@
+ 
+ # Libraries
+ LIBPARROT_STATIC    = @blib_dir@/@libparrot_static@
+-#CONDITIONED_LINE(darwin):export DYLD_LIBRARY_PATH := @blib_dir@:$(DYLD_LIBRARY_PATH)
+-#CONDITIONED_LINE(win32):LIBPARROT_SHARED  = @libparrot_shared@
+-#INVERSE_CONDITIONED_LINE(win32):LIBPARROT_SHARED  = @blib_dir@/@libparrot_shared@
++#IF(darwin):export DYLD_LIBRARY_PATH := @blib_dir@:$(DYLD_LIBRARY_PATH)
++#IF(parrot_is_shared and !(cygwin|win32)):export LD_RUN_PATH := @blib_dir@:$(LD_RUN_PATH)
++#IF(cygwin or win32):LIBPARROT_SHARED    = @libparrot_shared@
++#ELSE:LIBPARROT_SHARED    = @blib_dir@/@libparrot_shared@
+ 
+ # This line controls whether a static or shared library is built
+ LIBPARROT           = @libparrot@
+ 
+-#CONDITIONED_LINE(has_icu):ICU_SHARED  = @icu_shared@
++#IF(has_icu):ICU_SHARED  = @icu_shared@
+ ALL_PARROT_LIBS     = @libparrot_ldflags@ $(ICU_SHARED) $(C_LIBS)
+ 
+ # dynamic extensions
+@@ -546,7 +548,7 @@
+ #
+ ###############################################################################
+ 
+-all : \
++build : \
+     flags_dummy \
+     PARROT_LIBS \
+     $(PARROT) \
+@@ -554,7 +556,7 @@
+     runtime/parrot/include/config.fpmc \
+     docs \
+     $(LIBNCI_TEST_SO) \
+-#CONDITIONED_LINE(has_glut):    $(LIBGLUTCB_SO) \
++#IF(has_glut):    $(LIBGLUTCB_SO) \
+     $(GEN_LIBRARY) \
+     dynpmc \
+     dynoplibs \
+@@ -564,6 +566,8 @@
+     $(DIS) \
+     $(PBCMERGE)
+ 
++all : build parrot_utils installable $(PERL6) languages
++
+ $(GEN_LIBRARY) : $(PARROT)
+ 
+ # constant string support
+@@ -759,7 +763,8 @@
+ 
+ parrot_utils : $(PDUMP) $(DIS) $(PINFO) $(PDB) $(PBCMERGE) $(PBC_TO_EXE) $(PARROT_CONFIG)
+ 
+-installable: all $(INSTALLABLEPARROT) $(INSTALLABLEPDUMP) $(INSTALLABLEDIS) $(INSTALLABLEPINFO) $(INSTALLABLEPDB) $(INSTALLABLEPBCMERGE) $(INSTALLABLECONFIG)
++installable: build parrot_utils $(INSTALLABLEPARROT) $(INSTALLABLEPDUMP) $(INSTALLABLEDIS) \
++             $(INSTALLABLEPINFO) $(INSTALLABLEPDB) $(INSTALLABLEPBCMERGE) $(INSTALLABLECONFIG)
+ 
+ 
+ flags_dummy :
+@@ -770,7 +775,6 @@
+ 	$(PARROT) -o $@ runtime/parrot/library/parrotlib.pir
+ 
+ runtime/parrot/include/config.fpmc : myconfig config_lib.pasm $(MINIPARROT)
+-	@cygchkdll@
+ 	@echo Invoking Parrot to generate runtime/parrot/include/config.fpmc --cross your fingers
+ 	$(MINIPARROT) config_lib.pasm > $@
+ 
+@@ -780,7 +784,7 @@
+ 	$(LINK) @ld_out@$@ \
+ 	$(SRC_DIR)/main$(O) $(SRC_DIR)/parrot_config$(O) \
+ 	@rpath_blib@ $(ALL_PARROT_LIBS) $(LINKFLAGS) $(LINK_DYNAMIC)
+-#CONDITIONED_LINE(win32):	if exist $@.manifest mt.exe -nologo -manifest $@.manifest -outputresource:$@;1
++#IF(win32):	if exist $@.manifest mt.exe -nologo -manifest $@.manifest -outputresource:$@;1
+ 
+ pbc_to_exe.pir : $(PARROT) tools/dev/pbc_to_exe_gen.pl
+ 	$(PERL) tools/dev/pbc_to_exe_gen.pl \
+@@ -794,8 +798,12 @@
+ 	$(PARROT) -o parrot_config.pbc tools/util/parrot-config.pir
+ 	$(PARROT) pbc_to_exe.pbc parrot_config.pbc
+ 
++$(INSTALLABLECONFIG) : $(SRC_DIR)/install_config$(O) $(PARROT_CONFIG) $(PBC_TO_EXE)
++	$(PARROT) -o parrot_config.pbc tools/util/parrot-config.pir
++	$(PBC_TO_EXE) parrot_config.pbc --install
++
+ # HLL Executable targets
+-#CONDITIONED_LINE(win32):perl6 : $(PERL6)
++#IF(win32 or cygwin):perl6 : $(PERL6)
+ 
+ $(PERL6) : compilers $(PBC_TO_EXE)
+ 	$(MAKE) languages/perl6 perl6$(EXE)
+@@ -803,19 +811,20 @@
+ 	$(CHMOD) 0755 $(PERL6)
+ 	$(PERL6) -e"say 'Hello, world.'"
+ 
++# build the real miniparrot
+ $(MINIPARROT) : $(SRC_DIR)/main$(O) $(GEN_HEADERS) $(LIBPARROT) \
+     lib/Parrot/OpLib/core.pm $(SRC_DIR)/null_config$(O)
+ 	$(LINK) @ld_out@$@ $(SRC_DIR)/main$(O) $(SRC_DIR)/null_config$(O) \
+ 	@rpath_blib@ $(ALL_PARROT_LIBS) $(LINKFLAGS)
+-#CONDITIONED_LINE(win32):	if exist $@.manifest mt.exe -nologo -manifest $@.manifest -outputresource:$@;1
++#IF(win32):	if exist $@.manifest mt.exe -nologo -manifest $@.manifest -outputresource:$@;1
+ 
+ $(INSTALLABLEPARROT) : $(SRC_DIR)/main$(O) $(GEN_HEADERS) $(LIBPARROT) \
+     lib/Parrot/OpLib/core.pm $(SRC_DIR)/install_config$(O) \
+     $(PARROT)
+ 	$(LINK) @ld_out@$@ \
+-    $(SRC_DIR)/main$(O) \
+-    $(ALL_PARROT_LIBS) $(LINKFLAGS) $(SRC_DIR)/install_config$(O)
+-#CONDITIONED_LINE(win32):	if exist $@.manifest mt.exe -nologo -manifest $@.manifest -outputresource:$@;1
++    $(SRC_DIR)/main$(O) $(SRC_DIR)/install_config$(O) \
++    $(ALL_PARROT_LIBS) $(LINKFLAGS)
++#IF(win32):	if exist $@.manifest mt.exe -nologo -manifest $@.manifest -outputresource:$@;1
+ 
+ $(INC_DIR)/parrot.h : $(INC_DIR)/pbcversion.h $(INC_DIR)/vtable.h
+ 
+@@ -873,27 +882,23 @@
+ # so always delete the lib -leo
+ 
+ PARROT_LIBS: \
+-#CONDITIONED_LINE(has_static_linking):  $(LIBPARROT_STATIC) \
+-#CONDITIONED_LINE(has_dynamic_linking): $(LIBPARROT_SHARED)
++#IF(has_static_linking):  $(LIBPARROT_STATIC) \
++#IF(has_dynamic_linking): $(LIBPARROT_SHARED)
+ 
+ $(LIBPARROT_STATIC) : $(O_FILES)
+ 	$(MKPATH) @blib_dir@
+ 	$(AR_CR) @ar_out@$@ @ar_extra@ $(O_FILES)
+-#CONDITIONED_LINE(win32):	if exist $@.manifest mt.exe -nologo -manifest $@.manifest -outputresource:$@;2
++#IF(win32):	if exist $@.manifest mt.exe -nologo -manifest $@.manifest -outputresource:$@;2
+ 	$(RANLIB) $@
+ 
+ $(LIBPARROT_SHARED) : $(O_FILES)
+ 	$(MKPATH) @blib_dir@
+ 	$(LD) $(LD_SHARE_FLAGS) $(LDFLAGS) @ld_out@$@ @libparrot_soname@ \
+-#CONDITIONED_LINE(cygchkdll):		-Wl,--out-implib=blib/lib/libparrot.dll.a \
++#IF(cygwin or msys or mingw):		-Wl,--out-implib=libparrot.dll.a \
+ 		$(O_FILES) $(C_LIBS) $(ICU_SHARED)
+-#CONDITIONED_LINE(win32):	if exist $@.manifest mt.exe -nologo -manifest $@.manifest -outputresource:$@;2
+-#CONDITIONED_LINE(libparrot_shared_alias):	( cd @blib_dir@ ; ln -sf @libparrot_shared@ @libparrot_shared_alias@ )
+-
++#IF(win32):	if exist $@.manifest mt.exe -nologo -manifest $@.manifest -outputresource:$@;2
++#IF(libparrot_shared_alias):	( cd @blib_dir@ ; ln -sf @libparrot_shared@ @libparrot_shared_alias@ )
+ 
+-$(INSTALLABLECONFIG) : $(SRC_DIR)/install_config$(O) $(PARROT_CONFIG) $(PBC_TO_EXE)
+-	$(PARROT) -o parrot_config.pbc tools/util/parrot-config.pir
+-	$(PBC_TO_EXE) parrot_config.pbc --install
+ 
+ #
+ # Parrot Debugger
+@@ -906,14 +911,14 @@
+     $(SRC_DIR)/parrot_debugger$(O) \
+     $(SRC_DIR)/parrot_config$(O) \
+     @rpath_blib@ $(ALL_PARROT_LIBS) $(LINKFLAGS)
+-#CONDITIONED_LINE(win32):	if exist $@.manifest mt.exe -nologo -manifest $@.manifest -outputresource:$@;1
++#IF(win32):	if exist $@.manifest mt.exe -nologo -manifest $@.manifest -outputresource:$@;1
+ 
+ $(INSTALLABLEPDB) : $(SRC_DIR)/parrot_debugger$(O) $(LIBPARROT) $(SRC_DIR)/parrot_config$(O)
+ 	$(LINK) @ld_out@$@ \
+     $(SRC_DIR)/parrot_debugger$(O) \
+     $(SRC_DIR)/parrot_config$(O) \
+     $(ALL_PARROT_LIBS) $(LINKFLAGS)
+-#CONDITIONED_LINE(win32):	if exist $@.manifest mt.exe -nologo -manifest $@.manifest -outputresource:$@;1
++#IF(win32):	if exist $@.manifest mt.exe -nologo -manifest $@.manifest -outputresource:$@;1
+ 
+ #
+ # Parrot Disassembler
+@@ -925,13 +930,13 @@
+ 	$(LINK) @ld_out@$@ \
+     $(SRC_DIR)/pbc_disassemble$(O) \
+     @rpath_blib@ $(ALL_PARROT_LIBS) $(LINKFLAGS)
+-#CONDITIONED_LINE(win32):	if exist $@.manifest mt.exe -nologo -manifest $@.manifest -outputresource:$@;1
++#IF(win32):	if exist $@.manifest mt.exe -nologo -manifest $@.manifest -outputresource:$@;1
+ 
+ $(INSTALLABLEDIS) : $(SRC_DIR)/pbc_disassemble$(O) $(LIBPARROT)
+ 	$(LINK) @ld_out@$@ \
+     $(SRC_DIR)/pbc_disassemble$(O) \
+     $(ALL_PARROT_LIBS) $(LINKFLAGS)
+-#CONDITIONED_LINE(win32):	if exist $@.manifest mt.exe -nologo -manifest $@.manifest -outputresource:$@;1
++#IF(win32):	if exist $@.manifest mt.exe -nologo -manifest $@.manifest -outputresource:$@;1
+ 
+ #
+ # Parrot Dump
+@@ -941,7 +946,7 @@
+ 	$(LINK) @ld_out@$@ \
+     $(SRC_DIR)/pdump$(O) \
+     $(SRC_DIR)/packdump$(O) @rpath_blib@ $(ALL_PARROT_LIBS) $(LINKFLAGS)
+-#CONDITIONED_LINE(win32):	if exist $@.manifest mt.exe -nologo -manifest $@.manifest -outputresource:$@;1
++#IF(win32):	if exist $@.manifest mt.exe -nologo -manifest $@.manifest -outputresource:$@;1
+ 
+ $(SRC_DIR)/pdump$(O) : $(GEN_HEADERS)
+ 
+@@ -949,7 +954,7 @@
+ 	$(LINK) @ld_out@$@ \
+     $(SRC_DIR)/pdump$(O) \
+     $(SRC_DIR)/packdump$(O) $(ALL_PARROT_LIBS) $(LINKFLAGS)
+-#CONDITIONED_LINE(win32):	if exist $@.manifest mt.exe -nologo -manifest $@.manifest -outputresource:$@;1
++#IF(win32):	if exist $@.manifest mt.exe -nologo -manifest $@.manifest -outputresource:$@;1
+ 
+ 
+ # pbc_info
+@@ -957,7 +962,7 @@
+ 	$(LINK) @ld_out@$@ \
+     $(SRC_DIR)/pbc_info$(O) \
+     @rpath_blib@ $(ALL_PARROT_LIBS) $(LINKFLAGS)
+-#CONDITIONED_LINE(win32):	if exist $@.manifest mt.exe -nologo -manifest $@.manifest -outputresource:$@;1
++#IF(win32):	if exist $@.manifest mt.exe -nologo -manifest $@.manifest -outputresource:$@;1
+ 
+ $(SRC_DIR)/pbc_info$(O) : $(GEN_HEADERS)
+ 
+@@ -965,7 +970,7 @@
+ 	$(LINK) @ld_out@$@ \
+     $(SRC_DIR)/pbc_info$(O) \
+     $(ALL_PARROT_LIBS) $(LINKFLAGS)
+-#CONDITIONED_LINE(win32):	if exist $@.manifest mt.exe -nologo -manifest $@.manifest -outputresource:$@;1
++#IF(win32):	if exist $@.manifest mt.exe -nologo -manifest $@.manifest -outputresource:$@;1
+ 
+ #
+ # Parrot Bytecode File Merger
+@@ -976,14 +981,14 @@
+     $(SRC_DIR)/pbc_merge$(O) \
+     $(SRC_DIR)/parrot_config$(O) \
+     @rpath_blib@ $(ALL_PARROT_LIBS) $(LINK_DYNAMIC) $(LINKFLAGS)
+-#CONDITIONED_LINE(win32):	if exist $@.manifest mt.exe -nologo -manifest $@.manifest -outputresource:$@;1
++#IF(win32):	if exist $@.manifest mt.exe -nologo -manifest $@.manifest -outputresource:$@;1
+ 
+ $(INSTALLABLEPBCMERGE) : $(SRC_DIR)/pbc_merge$(O) $(LIBPARROT) $(INSTALLABLECONFIG)
+ 	$(LINK) @ld_out@$@ \
+     $(SRC_DIR)/pbc_merge$(O) \
+     $(SRC_DIR)/install_config$(O) \
+     $(ALL_PARROT_LIBS) $(LINKFLAGS)
+-#CONDITIONED_LINE(win32):	if exist $@.manifest mt.exe -nologo -manifest $@.manifest -outputresource:$@;1
++#IF(win32):	if exist $@.manifest mt.exe -nologo -manifest $@.manifest -outputresource:$@;1
+ 
+ 
+ ###############################################################################
+@@ -998,6 +1003,9 @@
+     lib/Parrot/OpsFile.pm lib/Parrot/Op.pm $(OPS_DIR)/ops.num $(OPS_DIR)/ops.skip
+ 	$(PERL) $(BUILD_TOOLS_DIR)/ops2pm.pl $(OPS_FILES)
+ 
++Makefile : config/gen/makefiles/root.in
++	$(PERL) tools/dev/reconfigure.pl --step=gen::makefiles --target=Makefile
++
+ ###############################################################################
+ #
+ # Examples (Assembly):
+@@ -1090,8 +1098,8 @@
+ 
+ $(SRC_DIR)/platform$(O) : $(GENERAL_H_FILES)
+ 
+-#CONDITIONED_LINE(platform_asm):$(SRC_DIR)/platform_asm$(O) : $(GENERAL_H_FILES)
+-#CONDITIONED_LINE(platform_asm):
++#IF(platform_asm):$(SRC_DIR)/platform_asm$(O) : $(GENERAL_H_FILES)
++#IF(platform_asm):
+ $(SRC_DIR)/core_pmcs$(O) : $(GENERAL_H_FILES)
+ 
+ $(SRC_DIR)/trace$(O) : $(GENERAL_H_FILES)
+@@ -1282,11 +1290,11 @@
+ #
+ ###############################################################################
+ 
+-#CONDITIONED_LINE(has_perldoc):docs : docs.dummy
+-#INVERSE_CONDITIONED_LINE(has_perldoc):docs : docs.stub
++#IF(has_perldoc):docs : docs.dummy
++#ELSE:docs : docs.stub
+ 
+-#CONDITIONED_LINE(has_perldoc):html : html.dummy
+-#INVERSE_CONDITIONED_LINE(has_perldoc):html : html.stub
++#IF(has_perldoc):html : html.dummy
++#ELSE:html : html.stub
+ 
+ html.stub:
+ 	@echo "Perldoc is required, but not detected."
+@@ -1482,10 +1490,10 @@
+ # when the needed runcores are available
+ fulltest :
+ 	-@make@ testb \
+-#CONDITIONED_LINE(cg_flag):	testC \
++#IF(cg_flag):	testC \
+ 	testf \
+-#CONDITIONED_LINE(cg_flag):	testg \
+-#CONDITIONED_LINE(cg_flag):	testj \
++#IF(cg_flag):	testg \
++#IF(cg_flag):	testj \
+ 	testr \
+ 	testS \
+ 	src_tests \
+@@ -1601,15 +1609,15 @@
+     prog-clean \
+     dynext-clean \
+     languages-clean \
+-#CONDITIONED_LINE(has_perldoc):    docs-clean \
+-#CONDITIONED_LINE(has_perldoc):    html-clean \
++#IF(has_perldoc):    docs-clean \
++#IF(has_perldoc):    html-clean \
+     dynpmc-clean \
+     dynoplibs-clean \
+     examples-clean \
+     imcc-clean \
+     compilers-clean \
+     smoke-clean \
+-#INVERSE_CONDITIONED_LINE(win32):    cover-clean \
++#UNLESS(win32):    cover-clean \
+     editor-clean
+ 	@TEMP_cg_r@
+ 	$(RM_F) chartypes "*.s" "*~"
+@@ -1652,7 +1660,9 @@
+     $(SRC_DIR)/string_private_cstring.h \
+     "$(SRC_DIR)/*.str" "$(SRC_DIR)/io/*.str" "$(SRC_DIR)/pmc/*.str" \
+     "src/pmc/*.c" "src/pmc/pmc_*.h" "src/pmc/*.dump" \
+-    vtable.dump "*.def" "*.lib" "*.exp"
++    vtable.dump \
++#IF(win32):    "*.def" "*.lib" "*.exp" \
++#IF(cygwin):   "*.stackdump" \
+ 
+ archclean: dynoplibs-clean dynpmc-clean dynext-clean
+ 	$(RM_F) \
+@@ -1700,12 +1710,12 @@
+ 	$(RM_F) \
+     "$(DYNEXT_DIR)/*$(LOAD_EXT)" \
+     "$(DYNEXT_DIR)/*$(SHARE_EXT)" \
+-    "$(DYNEXT_DIR)/*.lib" \
+-    "*.pdb" "$(DYNEXT_DIR)/*.pdb" \
+-    "*.ilk" "$(DYNEXT_DIR)/*.ilk" \
+-    "*.exp" "$(DYNEXT_DIR)/*.exp" \
+-    "*.def" "$(DYNEXT_DIR)/*.def" \
+-    "*.manifest" "$(DYNEXT_DIR)/*.manifest"
++#IF(win32):    "$(DYNEXT_DIR)/*.lib" \
++#IF(win32):    "*.pdb" "$(DYNEXT_DIR)/*.pdb" \
++#IF(win32):    "*.ilk" "$(DYNEXT_DIR)/*.ilk" \
++#IF(win32):    "*.exp" "$(DYNEXT_DIR)/*.exp" \
++#IF(win32):    "*.def" "$(DYNEXT_DIR)/*.def" \
++#IF(win32):    "*.manifest" "$(DYNEXT_DIR)/*.manifest"
+ 
+ # Remove files generated by the test suite
+ # XXX Is there a danger of too long command lines in the $(RM_F) commands,
+@@ -1717,21 +1727,24 @@
+     "t/compilers/*/*.pbc" \
+     "t/compilers/*/*_pbcexe*" \
+     "t/compilers/*/*.pir" \
+-    "t/compilers/*/*.stabs.s"
++    "t/compilers/*/*.stabs.s" \
++    "t/compilers/*/*.stackdump"
+ 	$(RM_F) \
+     "t/compilers/*/*/*.out" \
+     "t/compilers/*/*/*.pasm" \
+     "t/compilers/*/*/*.pbc" \
+     "t/compilers/*/*/*_pbcexe*" \
+     "t/compilers/*/*/*.pir" \
+-    "t/compilers/*/*/*.stabs.s"
++    "t/compilers/*/*/*.stabs.s" \
++    "t/compilers/*/*/*.stackdump"
+ 	$(RM_F) \
+     "t/*/*$(O)" \
+     "t/*/*.out" \
+     "t/*/*.pasm" \
+     "t/*/*_pbcexe*" \
+     "t/*/*.pir" \
+-    "t/*/*.stabs.s"
++    "t/*/*.stabs.s" \
++    "t/*/*.stackdump"
+ 	$(RM_F) \
+     "t/library/*.pbc" \
+     "t/dynoplibs/*.pbc" \
+@@ -1743,14 +1756,16 @@
+ 	$(RM_F) \
+     "t/src/*.c" \
+     "t/src/*.pdb" \
+-    "t/src/*.manifest"
++    "t/src/*.manifest" \
++    "t/src/*.stackdump"
+ 	$(RM_F) \
+      "t/tools/pmc2c.t_*" \
+      "t/tools/pmc2c.pmc_t_*" \
+      "t/tools/parrot_debugger.t.*"
+ 	$(RM_F) \
+      "test$(EXE)" \
+-     "test.*"
++     "test.*" \
++     "*.stackdump"
+ 	$(RM_F) \
+      "parrot_test_run.tar.gz"
+ 
+@@ -1778,7 +1793,7 @@
+ 	$(PERL) tools/dev/svnclobber.pl
+ 
+ reconfig : clean
+-	$(PERL) Configure.pl
++	$(PERL) Configure.pl $(CONFIG_ARGS)
+ 
+ manitest :
+ 	$(PERL) tools/dev/manicheck.pl
+@@ -2069,10 +2084,10 @@
+ cover: \
+     cover.dummy \
+     cover-testb \
+-#CONDITIONED_LINE(cg_flag):    cover-testC \
++#IF(cg_flag):    cover-testC \
+     cover-testf \
+-#CONDITIONED_LINE(cg_flag):    cover-testg \
+-#CONDITIONED_LINE(jitcapable):    cover-testj \
++#IF(cg_flag):    cover-testg \
++#IF(jitcapable):    cover-testj \
+     cover-testr \
+     cover-testS \
+     cover-src \
+--- origsrc/parrot-0.8.2/config/gen/makefiles/tge.in	2008-05-28 19:43:48.000000000 +0000
++++ src/parrot-0.8.2/config/gen/makefiles/tge.in	2008-12-25 13:44:20.319000000 +0000
+@@ -6,13 +6,15 @@
+ PERL     = @perl@
+ RM_F     = @rm_f@
+ PARROT   = ../../parrot@exe@
++RECONFIGURE   = $(PERL) @build_dir@/tools/dev/reconfigure.pl
++#IF(parrot_is_shared and !(cygwin|win32)):export LD_RUN_PATH := @blib_dir@:$(LD_RUN_PATH)
+ 
+ # Where to put things
+ PARROT_LIBRARY    = ../../runtime/parrot/library
+ PERL6GRAMMAR      = $(PARROT_LIBRARY)/PGE/Perl6Grammar.pbc
+ 
+ # the default target
+-all: $(PARROT_LIBRARY)/TGE.pbc
++all: $(PARROT_LIBRARY)/TGE.pbc Makefile
+ 
+ $(PARROT_LIBRARY)/TGE.pbc: TGE.pir TGE/Rule.pbc TGE/Parser.pbc TGE/Grammar.pbc TGE/Compiler.pbc TGE/Tree.pbc
+ 	$(PARROT) -o $(PARROT_LIBRARY)/TGE.pbc --output-pbc TGE.pir
+@@ -21,7 +23,11 @@
+ 	$(PARROT) -o $@ --output-pbc $<
+ 
+ TGE/Parser.pir: TGE/Parser.pg
+-	$(PARROT) $(PERL6GRAMMAR) --output=TGE//Parser.pir TGE//Parser.pg
++	$(PARROT) $(PERL6GRAMMAR) --output=TGE/Parser.pir TGE/Parser.pg
++
++# regenerate the Makefile
++Makefile: @build_dir@/config/gen/makefiles/tge.in
++	cd @build_dir@ && $(RECONFIGURE) --step=gen::makefiles --target=compilers/tge/Makefile
+ 
+ # This is a listing of all targets, that are meant to be called by users
+ help:
+@@ -62,3 +68,9 @@
+ 	$(RM_F) Makefile
+ 
+ distclean: realclean
++
++#
++# Local variables:
++# mode: makefile
++# ex: ft=make
++# End:
+--- origsrc/parrot-0.8.2/config/gen/opengl.pm	2008-12-17 06:55:11.000000000 +0000
++++ src/parrot-0.8.2/config/gen/opengl.pm	2008-12-25 13:44:20.334625000 +0000
+@@ -448,6 +448,9 @@
+ #         "$ENV{HOME}/src/osx-insane/usr/X11R6 1/include/GL/*.h",
+     );
+ 
++    # X freeglut only if DISPLAY is set, otherwise use native w32api GLUT
++    shift @header_globs if $^O eq 'cygwin' and !$ENV{DISPLAY};
++
+     print "\nChecking for OpenGL headers using the following globs:\n\t",
+         join("\n\t", @header_globs), "\n"
+         if $verbose;
+--- origsrc/parrot-0.8.2/config/init/hints/cygwin.pm	2008-06-01 09:08:35.000000000 +0000
++++ src/parrot-0.8.2/config/init/hints/cygwin.pm	2008-12-25 13:44:20.397125000 +0000
+@@ -13,19 +13,31 @@
+     # in the standard installation, so we get rid of it
+     my $libs = $conf->data->get('libs');
+     $libs =~ s/-lutil\b//g;
++    # same for -lm and -dl
++    $libs =~ s/-lm\b//g;
++    $libs =~ s/-ldl\b//g;
+ 
+     my $build_dir = $conf->data->get('build_dir');
+     $build_dir =~ s/ /\\ /g;
++    my $libparrot_shared = $conf->data->get('libparrot_shared');
++    # force cyg prefix
++    $libparrot_shared =~ s/^lib/cyg/g;
++    # force the dll versioning
++    my @parrot_version = Parrot::BuildUtil::parrot_version();
++    my $dllsuffix = join("_",@parrot_version);
++    $libparrot_shared =~ s/parrot\.dll/parrot$dllsuffix\.dll/;
+ 
+-    # A note about building shared libraries:  Perl5 uses the 'ld2' tool, which
+-    # is installed as part of the perl5 installation.  So far, it appears
+-    # parrot can get by with simply using gcc -shared, so we override the
+-    # perl5 Configure defaults and use 'gcc -shared' instead of 'ld2'.
+-    # If this later causes problems, it might be worth revisiting.
+-    # A. Dougherty 9/9/2002
++    # An old note about building shared libraries: Perl5 used the 'ld2' tool until
++    # 5.8.8-4, which is installed as part of the perl5 installation. So far, it
++    # appears parrot can get by with simply using gcc -shared, so we override
++    # the perl5 Configure defaults and use 'gcc -shared' instead of 'ld2'.  If
++    # this later causes problems, it might be worth revisiting.  A. Dougherty
++    # 9/9/2002
+     $conf->data->set(
+         build_dir           => $build_dir,
+-        ld                  => 'gcc',
++        ld                  => $conf->data->get('ld') eq 'ld2'
++                               ? 'gcc' # do not use old perl5 linker helper
++                               : $conf->data->get('ld'), # gcc or g++
+         ld_share_flags      => '-shared',
+         ld_load_flags       => '-shared',
+         libs                => $libs,
+@@ -34,7 +46,11 @@
+         parrot_is_shared    => 1,
+         sym_export          => '__declspec(dllexport)',
+         sym_import          => '__declspec(dllimport)',
+-        cygchkdll           => 'tools/build/cygchkdll.sh $(MINIPARROT) $(LIBPARROT)',
++        #cygchkdll           => 'tools/build/cygchkdll.sh $(MINIPARROT) $(LIBPARROT)',
++        libparrot_shared    => $libparrot_shared,
++        blib_dir            => '.',
++        # as with mingw link against the dll directly, not the importlib
++        libparrot_ldflags   => $conf->data->get('build_dir') . '/' . $libparrot_shared,
+     );
+ 
+     # inet_aton needs to be defined on Cygwin.
+--- origsrc/parrot-0.8.2/config/inter/libparrot.pm	2008-08-20 05:48:50.000000000 +0000
++++ src/parrot-0.8.2/config/inter/libparrot.pm	2008-12-25 13:44:20.412750000 +0000
+@@ -41,18 +41,6 @@
+ 
+     $parrot_is_shared = 0 unless $conf->data->get('has_dynamic_linking');
+ 
+-    # Parrot can't necessarily handle a pre-existing installed shared
+-    # libparrot.so. At this point, we don't know the actual name
+-    # of the shared parrot library. However, 'libparrot.so' will catch
+-    # at least some of the problems.
+-    # RT#52288: the check for old_versions should be improved
+-    my $old_version
+-        = File::Spec->catfile($conf->data->get('libdir'), 'libparrot.so');
+-    if (-e $old_version) {
+-        warn("\nWarning: Building a shared parrot library may conflict " .
+-             "with your previously-installed $old_version\n");
+-    }
+-
+     if (
+         $conf->options->get('ask')
+         &&
+@@ -83,16 +71,38 @@
+         : ''
+     );
+ 
++    # Should be overridden by hints to allow RT#39742 installed parrot
++    # conflicts with dev parrot. We do not know the LIBPARROT name yet.
++    # mingw and cygwin can link to the dll directly. Only msvc needs to link
++    # against the importlib.
+     unless ( defined( $conf->data->get('libparrot_ldflags') ) ) {
+-        $conf->data->set(libparrot_ldflags =>
+-        '-L'
+-        . $conf->data->get('build_dir')
+-        . $conf->data->get('slash')
+-        . $conf->data->get('blib_dir')
+-        . ' -lparrot'
++        $conf->data->set
++          ( libparrot_ldflags =>
++            defined( $conf->data->get('libparrot_shared') )
++            ? '-L'
++            . $conf->data->get('build_dir')
++            . $conf->data->get('slash')
++            . $conf->data->get('blib_dir')
++            . ' -lparrot'
++            : $conf->data->get('build_dir')
++            . $conf->data->get('slash')
++            . $conf->data->get('blib_dir')
++            . 'libparrot'
++            . $conf->data->get('a')
+         );
+     }
+ 
++    # RT#39742 installed parrot conflicts with dev parrot:
++    # move -L/usr/lib in ldflags to the back after -lparrot
++    # but better link directly to the file.
++    if ($parrot_is_shared and $conf->data->get('ldflags') =~ /(-L\S+)/) {
++       my $ldflags = $conf->data->get('ldflags');
++       my $lpath = $1;
++       $ldflags =~ s|$1||;
++       $conf->data->set('libs' => $lpath . " " . $conf->data->get('libs'));
++       $conf->data->set('ldflags' => $ldflags);
++    }
++
+     $self->set_result( $parrot_is_shared ? 'yes' : 'no' );
+ 
+     return 1;
+--- origsrc/parrot-0.8.2/languages/APL/config/makefiles/root.in	2008-06-23 02:30:47.000000000 +0000
++++ src/parrot-0.8.2/languages/APL/config/makefiles/root.in	2008-12-25 13:44:20.459625000 +0000
+@@ -4,33 +4,46 @@
+ PARROT_ARGS =
+ 
+ ## configuration settings
++HLLNAME	      = APL
+ BUILD_DIR     = @build_dir@
+ LOAD_EXT      = @load_ext@
+ O             = @o@
++BIN_DIR       = @bin_dir@
++LIB_DIR       = @lib_dir@
++DOC_DIR       = @doc_dir@
++MANDIR	      = @mandir@
+ 
+ ## Setup some commands
+ LN_S          = @lns@
+ PERL          = @perl@
+ RM_F          = @rm_f@
+ CP            = @cp@
++MKPATH        = @mkpath@
++POD2MAN       = pod2man
++
++#IF(parrot_is_shared and !(cygwin|win32)):export LD_RUN_PATH := @blib_dir@:$(LD_RUN_PATH)
+ PARROT        = ../../parrot@exe@
++PBC_TO_EXE    = ../../pbc_to_exe@exe@
+ CAT           = $(PERL) -MExtUtils::Command -e cat
+ BUILD_DYNPMC  = $(PERL) $(BUILD_DIR)/tools/build/dynpmc.pl
+ RECONFIGURE   = $(PERL) $(BUILD_DIR)/tools/dev/reconfigure.pl
+-#CONDITIONED_LINE(darwin):
+-#CONDITIONED_LINE(darwin):# MACOSX_DEPLOYMENT_TARGET must be defined for OS X compilation/linking
+-#CONDITIONED_LINE(darwin):export MACOSX_DEPLOYMENT_TARGET := @osx_version@
++#IF(darwin):
++#IF(darwin):# MACOSX_DEPLOYMENT_TARGET must be defined for OS X compilation/linking
++#IF(darwin):export MACOSX_DEPLOYMENT_TARGET := @osx_version@
+ 
+ ## places to look for things
+ PARROT_DYNEXT = $(BUILD_DIR)/runtime/parrot/dynext
+-PGE_LIBRARY   = $(BUILD_DIR)/runtime/parrot/library/PGE
++PARROT_LIB    = $(BUILD_DIR)/runtime/parrot/library
++PGE_LIBRARY   = $(PARROT_LIB)/PGE
++PCT           = $(PARROT_LIB)/PCT.pbc
+ PERL6GRAMMAR  = $(PGE_LIBRARY)/Perl6Grammar.pbc
+ NQP           = $(BUILD_DIR)/compilers/nqp/nqp.pbc
+-PCT           = $(BUILD_DIR)/runtime/parrot/library/PCT.pbc
+ 
+ PMC_DIR       = src/pmc
+ 
+-all: APL.pbc
++build: APL.pbc
++
++all: APL.pbc Makefile APL@exe@ installable
+ 
+ APL_GROUP = $(PMC_DIR)/apl_group$(LOAD_EXT)
+ 
+@@ -42,11 +55,15 @@
+ 
+ PMCS = aplvector
+ PMC_SOURCES = $(PMC_DIR)/aplvector.pmc
++DOCS = MAINTAINER README STATUS
+ 
+ # the default target
+-APL.pbc: $(PARROT) $(SOURCES) $(APL_GROUP)
++APL.pbc: $(SOURCES) $(APL_GROUP)
+ 	$(PARROT) $(PARROT_ARGS) -o APL.pbc APL.pir
+ 
++$(HLLNAME)@exe@: $(HLLNAME).pbc
++	$(PBC_TO_EXE) $(HLLNAME).pbc
++
+ src/gen_grammar.pir: $(PERL6GRAMMAR) src/parser/grammar.pg
+ 	$(PARROT) $(PARROT_ARGS) $(PERL6GRAMMAR) \
+ 	    --encoding=utf8 \
+@@ -60,15 +77,23 @@
+ src/gen_builtins.pir: tools/gen_operator_defs.pl
+ 	$(PERL) tools/gen_operator_defs.pl >src/gen_builtins.pir
+ 
+-$(APL_GROUP): $(PARROT) $(PMC_SOURCES)
++$(APL_GROUP): $(PMC_SOURCES)
+ 	cd $(PMC_DIR) && $(BUILD_DYNPMC) generate $(PMCS)
+ 	cd $(PMC_DIR) && $(BUILD_DYNPMC) compile $(PMCS)
+ 	cd $(PMC_DIR) && $(BUILD_DYNPMC) linklibs $(PMCS)
+ 	cd $(PMC_DIR) && $(BUILD_DYNPMC) copy --destination=$(PARROT_DYNEXT) $(PMCS)
+ 
++installable : installable_$(HLLNAME)@exe@ $(ABC_GROUP) $(HLLNAME).pbc
++	$(CP) installable_$(HLLNAME)@exe@ $(BUILD_DIR)
++	$(CP) $(HLLNAME).pbc $(PARROT_LIB)/$(HLLNAME).pbc
++	cd $(PMC_DIR) && $(BUILD_DYNPMC) copy --destination=$(PARROT_DYNEXT) $(PMCS)
++
++installable_$(HLLNAME)@exe@: $(HLLNAME).pbc
++	$(PBC_TO_EXE) $(HLLNAME).pbc --install
++
+ # regenerate the Makefile
+ Makefile: config/makefiles/root.in
+-	cd $(BUILD_DIR) && $(RECONFIGURE) --step=gen::languages --languages=APL
++	cd $(BUILD_DIR) && $(RECONFIGURE) --step=gen::languages --languages=$(HLLNAME)
+ 
+ # This is a listing of all targets, that are meant to be called by users
+ help:
+@@ -77,8 +102,11 @@
+ 	@echo ""
+ 	@echo "  all:               APL.pbc"
+ 	@echo "                     This is the default."
++	@echo "  install:           install the installable targets and docs."
++	@echo ""
+ 	@echo "Testing:"
+ 	@echo "  test:              Run the test suite."
++	@echo "  test-installable:  Test self-hosting targets."
+ 	@echo "  testclean:         Clean up test results."
+ 	@echo ""
+ 	@echo "Cleaning:"
+@@ -93,6 +121,18 @@
+ test: all
+ 	$(PERL) t/harness
+ 
++# TODO: test for installed libs, rename build_dir. basic run for missing libs
++test-installable : installable
++	./installable_$(HLLNAME)@exe@ demo.apl
++
++install : installable
++	$(CP) installable_$(HLLNAME)@exe@ $(DESTDIR)$(BIN_DIR)/parrot-$(HLLNAME)@exe@
++	$(CP) $(HLLNAME).pbc $(DESTDIR)$(LIB_DIR)/parrot/library/$(HLLNAME).pbc
++	cd $(PMC_DIR) && $(BUILD_DYNPMC) copy "--destination=$(DESTDIR)$(LIB_DIR)/parrot/dynext" $(PMCS)
++	$(POD2MAN) $(HLLNAME).pir > $(DESTDIR)$(MANDIR)/man1/parrot-$(HLLNAME).1
++	$(MKPATH) $(DESTDIR)$(DOC_DIR)/languages/$(HLLNAME)
++	$(CP) $(DOCS) $(DESTDIR)$(DOC_DIR)/languages/$(HLLNAME)
++
+ testclean:
+ 	$(RM_F) t/*.pir
+ 
+@@ -101,6 +141,7 @@
+   src/gen_grammar.pir \
+   src/gen_actions.pir \
+   src/gen_builtins.pir \
++  $(PARROT_LIB)/$(HLLNAME).pbc \
+   $(PMC_DIR)/*.h \
+   $(PMC_DIR)/*.c \
+   $(PMC_DIR)/*.dump \
+@@ -111,6 +152,8 @@
+   $(PMC_DIR)/*.manifest \
+   $(PMC_DIR)/*.pdb \
+   $(PMC_DIR)/*.lib \
++  $(HLLNAME)@exe@ \
++  installable_$(HLLNAME)@exe@ \
+ 
+ 
+ clean: testclean
+@@ -121,4 +164,8 @@
+ 
+ distclean: realclean
+ 
+-
++#
++# Local variables:
++# mode: makefile
++# ex: ft=make
++# End:
+--- origsrc/parrot-0.8.2/languages/BASIC/config/makefiles/root.in	1970-01-01 00:00:00.000000000 +0000
++++ src/parrot-0.8.2/languages/BASIC/config/makefiles/root.in	2008-12-25 13:44:20.475250000 +0000
+@@ -0,0 +1,131 @@
++## $Id: root.in 31315 2008-09-21 14:25:18Z rurban $
++
++## arguments we want to run parrot with
++PARROT_ARGS =
++
++## configuration settings
++HLLNAME	      = BASIC
++BUILD_DIR     = @build_dir@
++LOAD_EXT      = @load_ext@
++O             = @o@
++BIN_DIR       = @bin_dir@
++LIB_DIR       = @lib_dir@
++DOC_DIR       = @doc_dir@
++MANDIR	      = @mandir@
++
++## Setup some commands
++LN_S          = @lns@
++PERL          = @perl@
++RM_F          = @rm_f@
++CP            = @cp@
++MKPATH        = @mkpath@
++POD2MAN       = pod2man
++
++#IF(parrot_is_shared and !(cygwin|win32)):export LD_RUN_PATH := @blib_dir@:$(LD_RUN_PATH)
++PARROT        = ../../parrot@exe@
++PBC_TO_EXE    = ../../pbc_to_exe@exe@
++CAT           = $(PERL) -MExtUtils::Command -e cat
++RECONFIGURE   = $(PERL) $(BUILD_DIR)/tools/dev/reconfigure.pl
++#IF(darwin):
++#IF(darwin):# MACOSX_DEPLOYMENT_TARGET must be defined for OS X compilation/linking
++#IF(darwin):export MACOSX_DEPLOYMENT_TARGET := @osx_version@
++
++## places to look for things
++PARROT_DYNEXT = $(BUILD_DIR)/runtime/parrot/dynext
++PARROT_LIB    = $(BUILD_DIR)/runtime/parrot/library
++PGE_LIBRARY   = $(PARROT_LIB)/PGE
++PCT           = $(PARROT_LIB)/PCT.pbc
++PERL6GRAMMAR  = $(PGE_LIBRARY)/Perl6Grammar.pbc
++NQP           = $(BUILD_DIR)/compilers/nqp/nqp.pbc
++
++build: $(HLLNAME).pbc
++
++all: $(HLLNAME).pbc Makefile $(HLLNAME)@exe@ installable
++
++SOURCES = compiler/APL.pir \
++  src/gen_grammar.pir \
++  src/gen_actions.pir \
++  src/gen_builtins.pir
++
++DOCS = MAINTAINER compiler/BASIC_README 
++
++# the default target
++$(HLLNAME).pbc: $(SOURCES)
++	$(PARROT) $(PARROT_ARGS) -o $(HLLNAME).pbc $(HLLNAME).pir
++
++$(HLLNAME)@exe@: $(HLLNAME).pbc
++	$(PBC_TO_EXE) $(HLLNAME).pbc
++
++installable : installable_$(HLLNAME)@exe@ $(HLLNAME).pbc
++	$(CP) installable_$(HLLNAME)@exe@ $(BUILD_DIR)
++	$(CP) $(HLLNAME).pbc $(PARROT_LIB)/$(HLLNAME).pbc
++
++installable_$(HLLNAME)@exe@: $(HLLNAME).pbc
++	$(PBC_TO_EXE) $(HLLNAME).pbc --install
++
++# regenerate the Makefile
++Makefile: config/makefiles/root.in
++	cd $(BUILD_DIR) && $(RECONFIGURE) --step=gen::languages --languages=$(HLLNAME)
++
++# This is a listing of all targets, that are meant to be called by users
++help:
++	@echo ""
++	@echo "Following targets are available for the user:"
++	@echo ""
++	@echo "  all:               BASIC.pbc"
++	@echo "                     This is the default."
++	@echo "  install:           install the installable targets and docs."
++	@echo ""
++	@echo "Testing:"
++	@echo "  test:              Run the test suite."
++	@echo "  test-installable:  Test self-hosting targets."
++	@echo "  testclean:         Clean up test results."
++	@echo ""
++	@echo "Cleaning:"
++	@echo "  clean:             Basic cleaning up."
++	@echo "  realclean:         Removes also files generated by 'Configure.pl'"
++	@echo "  distclean:         Removes also anything built, in theory"
++	@echo ""
++	@echo "Misc:"
++	@echo "  help:              Print this help message."
++	@echo ""
++
++test: all
++	$(PERL) t/harness
++
++# TODO: test for installed libs, rename build_dir. basic run for missing libs
++test-installable : installable
++	./installable_$(HLLNAME)@exe@ readme.bas
++
++install : installable
++	$(CP) installable_$(HLLNAME)@exe@ $(DESTDIR)$(BIN_DIR)/parrot-$(HLLNAME)@exe@
++	$(CP) $(HLLNAME).pbc $(DESTDIR)$(LIB_DIR)/parrot/library/$(HLLNAME).pbc
++	$(POD2MAN) $(HLLNAME).pir > $(DESTDIR)$(MANDIR)/man1/parrot-$(HLLNAME).1
++	$(MKPATH) $(DESTDIR)$(DOC_DIR)/languages/$(HLLNAME)
++	$(CP) $(DOCS) $(DESTDIR)$(DOC_DIR)/languages/$(HLLNAME)
++
++testclean:
++	$(RM_F) t/*.pir
++
++CLEANUPS = \
++  $(HLLNAME).pbc \
++  src/gen_grammar.pir \
++  src/gen_actions.pir \
++  src/gen_builtins.pir \
++  $(PARROT_LIB)/$(HLLNAME).pbc \
++  $(HLLNAME)@exe@ \
++  installable_$(HLLNAME)@exe@
++
++clean: testclean
++	$(RM_F) $(CLEANUPS)
++
++realclean: clean
++	$(RM_F) Makefile
++
++distclean: realclean
++
++#
++# Local variables:
++# mode: makefile
++# ex: ft=make
++# End:
+--- origsrc/parrot-0.8.2/languages/PIR/config/makefiles/root.in	2008-06-23 02:30:46.000000000 +0000
++++ src/parrot-0.8.2/languages/PIR/config/makefiles/root.in	2008-12-25 13:44:20.553375000 +0000
+@@ -13,13 +13,18 @@
+ PERL          = @perl@
+ RM_RF         = @rm_rf@
+ CP            = @cp@
++MKPATH        = @mkpath@
++POD2MAN       = pod2man
++
++#IF(parrot_is_shared and !(cygwin|win32)):export LD_RUN_PATH := @blib_dir@:$(LD_RUN_PATH)
+ PARROT        = ../../parrot@exe@
++PBC_TO_EXE    = ../../pbc_to_exe@exe@
+ CAT           = $(PERL) -MExtUtils::Command -e cat
+ BUILD_DYNPMC  = $(PERL) $(BUILD_DIR)/tools/build/dynpmc.pl
+ RECONFIGURE   = $(PERL) $(BUILD_DIR)/tools/dev/reconfigure.pl
+-#CONDITIONED_LINE(darwin):
+-#CONDITIONED_LINE(darwin):# MACOSX_DEPLOYMENT_TARGET must be defined for OS X compilation/linking
+-#CONDITIONED_LINE(darwin):export MACOSX_DEPLOYMENT_TARGET := @osx_version@
++#IF(darwin):
++#IF(darwin):# MACOSX_DEPLOYMENT_TARGET must be defined for OS X compilation/linking
++#IF(darwin):export MACOSX_DEPLOYMENT_TARGET := @osx_version@
+ 
+ ## places to look for things
+ PARROT_DYNEXT = $(BUILD_DIR)/runtime/parrot/dynext
+@@ -52,7 +57,7 @@
+   src/pasm/gen_pasm_core.pbc
+ 
+ # the default target
+-pirc.pbc: $(PARROT) $(SOURCES) $(PASMGRAMMAR)
++pirc.pbc: $(SOURCES) $(PASMGRAMMAR)
+ 	$(PARROT) $(PARROT_ARGS) -o pirc.pbc pirc.pir
+ 
+ src/gen_grammar.pir: $(PERL6GRAMMAR) src/pir.pg
+@@ -102,7 +107,7 @@
+ 
+ src/pasm/gen_pasm_args.pbc: src/pasm/gen_pasm_args.pir
+ 	$(PARROT) --output-pbc -o src/pasm/gen_pasm_args.pbc src/pasm/gen_pasm_args.pir
+-	
++
+ src/pasm/gen_pasm_io.pbc: src/pasm/gen_pasm_io.pir
+ 	$(PARROT) --output-pbc -o src/pasm/gen_pasm_io.pbc src/pasm/gen_pasm_io.pir
+ 
+@@ -111,7 +116,7 @@
+ 
+ src/pasm/gen_pasm_core.pbc: src/pasm/gen_pasm_core.pir
+ 	$(PARROT) --output-pbc -o src/pasm/gen_pasm_core.pbc src/pasm/gen_pasm_core.pir
+-	
++
+ # regenerate the Makefile
+ Makefile: config/makefiles/root.in
+ 	cd $(BUILD_DIR) && $(RECONFIGURE) --step=gen::languages --languages=PIR
+@@ -177,3 +182,9 @@
+ 	$(RM_RF) Makefile
+ 
+ distclean: realclean
++
++#
++# Local variables:
++# mode: makefile
++# ex: ft=make
++# End:
+--- origsrc/parrot-0.8.2/languages/WMLScript/WMLScript/wmlsconsole.pir	1970-01-01 00:00:00.000000000 +0000
++++ src/parrot-0.8.2/languages/WMLScript/WMLScript/wmlsconsole.pir	2008-12-25 13:44:20.569000000 +0000
+@@ -0,0 +1,101 @@
++# Copyright (C) 2006-2008, The Perl Foundation.
++# $Id: /mirror/trunk/languages/WMLScript/runtime/wmlsconsole.pir 33752 2008-12-09T18:54:29.527603Z fperrad  $
++
++=head1 NAME
++
++runtime/wmlsconsole.pir - WMLScript Console library
++
++=head1 DESCRIPTION
++
++See "WMLScript Reference UP.SDK R4.B3 - October 1999".
++
++=head1 FUNCTIONS
++
++=cut
++
++.HLL 'WMLScript'
++.loadlib 'wmls_group'
++.loadlib 'wmls_ops'
++
++
++.sub 'getConsole'
++    new $P0, 'Hash'
++
++    .const 'Sub' _console_print = '_console_print'
++    $P0[0]  = _console_print
++    .const 'Sub' _console_println = '_console_println'
++    $P0[1]  = _console_println
++
++    .return ($P0)
++.end
++
++
++=head2 C<print(string)>
++
++=head3 DESCRIPTION
++
++
++=head3 PARAMETERS
++
++string = String
++
++=head3 RETURN VALUE
++
++Number or invalid.
++
++=cut
++
++.sub '_console_print' :anon
++    .param pmc str
++    .local pmc res
++    $I0 = isa str, 'WmlsInvalid'
++    if $I0 goto L1
++    $S0 = str
++    print $S0
++    $I0 = length $S0
++    box res, $I0
++    goto L2
++  L1:
++    new res, 'WmlsInvalid'
++  L2:
++    .return (res)
++.end
++
++
++=head2 C<println(string)>
++
++=head3 DESCRIPTION
++
++
++=head3 PARAMETERS
++
++string = String
++
++=head3 RETURN VALUE
++
++Number or invalid.
++
++=cut
++
++.sub '_console_println' :anon
++    .param pmc str
++    .local pmc res
++    $I0 = isa str, 'WmlsInvalid'
++    if $I0 goto L1
++    $S0 = str
++    say $S0
++    $I0 = length $S0
++    box res, $I0
++    goto L2
++  L1:
++    new res, 'WmlsInvalid'
++  L2:
++    .return (res)
++.end
++
++
++# Local Variables:
++#   mode: pir
++#   fill-column: 100
++# End:
++# vim: expandtab shiftwidth=4 ft=pir:
+--- origsrc/parrot-0.8.2/languages/WMLScript/WMLScript/wmlsfloat.pir	1970-01-01 00:00:00.000000000 +0000
++++ src/parrot-0.8.2/languages/WMLScript/WMLScript/wmlsfloat.pir	2008-12-25 13:44:20.569000000 +0000
+@@ -0,0 +1,355 @@
++# Copyright (C) 2006-2008, The Perl Foundation.
++# $Id: /mirror/trunk/languages/WMLScript/runtime/wmlsfloat.pir 33686 2008-12-08T15:50:21.922911Z fperrad  $
++
++=head1 NAME
++
++runtime/wmlsfloat.pir - WMLScript Float library
++
++=head1 DESCRIPTION
++
++This library contains a set of typical arithmetic floating-point functions that
++are frequently used by applications.
++
++See "WMLScript Standard Libraries Specification", section 8 "Float".
++
++=head1 FUNCTIONS
++
++=cut
++
++.HLL 'WMLScript'
++.loadlib 'wmls_group'
++.loadlib 'wmls_ops'
++
++
++.sub 'getFloat'
++    new $P0, 'Hash'
++
++    .const 'Sub' _float_int = '_float_int'
++    $P0[0]  = _float_int
++    .const 'Sub' _float_floor = '_float_floor'
++    $P0[1]  = _float_floor
++    .const 'Sub' _float_ceil = '_float_ceil'
++    $P0[2]  = _float_ceil
++    .const 'Sub' _float_pow = '_float_pow'
++    $P0[3]  = _float_pow
++    .const 'Sub' _float_round = '_float_round'
++    $P0[4]  = _float_round
++    .const 'Sub' _float_sqrt = '_float_sqrt'
++    $P0[5]  = _float_sqrt
++    .const 'Sub' _float_maxFloat = '_float_maxFloat'
++    $P0[6]  = _float_maxFloat
++    .const 'Sub' _float_minFloat = '_float_minFloat'
++    $P0[7]  = _float_minFloat
++
++    .return ($P0)
++.end
++
++
++=head2 C<int(value)>
++
++=head3 DESCRIPTION
++
++Returns the integer part of the given value. If the value is already an integer,
++the result is the value itself.
++
++=head3 PARAMETERS
++
++value = Number
++
++=head3 RETURN VALUE
++
++Integer or invalid.
++
++=cut
++
++.sub '_float_int' :anon
++    .param pmc value
++    .local pmc res
++    $P0 = value
++    $I0 = isa value, 'WmlsString'
++    unless $I0 goto L1
++    $P0 = value.'parseNumber'()
++  L1:
++    $I0 = isa $P0, 'WmlsInvalid'
++    if $I0 goto L2
++    $I0 = $P0
++    box res, $I0
++    goto L3
++  L2:
++    new res, 'WmlsInvalid'
++  L3:
++    .return (res)
++.end
++
++
++=head2 C<floor(value)>
++
++=head3 DESCRIPTION
++
++Returns the greatest integer value that is not greater than the given value. If
++the value is already an integer, the result is the value itself.
++
++=head3 PARAMETERS
++
++value = Number
++
++=head3 RETURN VALUE
++
++Integer or invalid.
++
++=cut
++
++.sub '_float_floor' :anon
++    .param pmc value
++    .local pmc res
++    $P0 = value
++    $I0 = isa value, 'WmlsString'
++    unless $I0 goto L1
++    $P0 = value.'parseNumber'()
++  L1:
++    $I0 = isa $P0, 'WmlsInvalid'
++    if $I0 goto L2
++    $N0 = $P0
++    $I0 = floor $N0
++    box res, $I0
++    goto L3
++  L2:
++    new res, 'WmlsInvalid'
++  L3:
++    .return (res)
++.end
++
++
++=head2 C<ceil(value)>
++
++=head3 DESCRIPTION
++
++Returns the smallest integer value that is not less than the given value. If
++the value is already an integer, the result is the value itself.
++
++=head3 PARAMETERS
++
++value = Number
++
++=head3 RETURN VALUE
++
++Integer or invalid.
++
++=cut
++
++.sub '_float_ceil' :anon
++    .param pmc value
++    .local pmc res
++    $P0 = value
++    $I0 = isa value, 'WmlsString'
++    unless $I0 goto L1
++    $P0 = value.'parseNumber'()
++  L1:
++    $I0 = isa $P0, 'WmlsInvalid'
++    if $I0 goto L2
++    $N0 = $P0
++    $I0 = ceil $N0
++    box res, $I0
++    goto L3
++  L2:
++    new res, 'WmlsInvalid'
++  L3:
++    .return (res)
++.end
++
++
++=head2 C<pow(value1, value2)>
++
++=head3 DESCRIPTION
++
++Returns an implementation-dependent approximation to the result of raising
++value1 to the power of value2. If value1 is a negative number then value2
++must be an integer.
++
++=head3 PARAMETERS
++
++value1 = Number
++
++value2 = Number
++
++=head3 RETURN VALUE
++
++Floating-point or invalid.
++
++=head3 EXCEPTIONS
++
++If value1 == 0 and value2 < 0 then C<invalid> is returned.
++
++If value1 < 0 and value2 is not an integer then C<invalid> is returned.
++
++=cut
++
++.sub '_float_pow' :anon
++    .param pmc value1
++    .param pmc value2
++    .local pmc res
++    $P1 = value1
++    $I0 = isa value1, 'WmlsString'
++    unless $I0 goto L1
++    $P1 = value1.'parseNumber'()
++  L1:
++    $I0 = isa $P1, 'WmlsInvalid'
++    if $I0 goto L2
++    $N1 = $P1
++    $P2 = value2
++    $I0 = isa value2, 'WmlsString'
++    unless $I0 goto L3
++    $P2 = value2.'parseNumber'()
++  L3:
++    $I0 = isa $P2, 'WmlsInvalid'
++    if $I0 goto L2
++    $N2 = $P2
++    unless $N1 == 0.0 goto L4
++    if $N2 < 0.0 goto L2
++    box res, 0.0
++    goto L5
++  L4:
++    unless $N1 < 0.0 goto L6
++    $I0 = isa $P2, 'WmlsFloat'
++    if $I0 goto L2
++  L6:
++    $N0 = pow $N1, $N2
++    box res, $N0
++    goto L5
++  L2:
++    new res, 'WmlsInvalid'
++  L5:
++    .return (res)
++.end
++
++
++=head2 C<round(value)>
++
++=head3 DESCRIPTION
++
++Returns the number value that is closest to the given value and is equal to a
++mathematical integer. If two integer number values are equally close to the
++value, the result is the larger number value. If the value is already an
++integer, the result is the value itself.
++
++=head3 PARAMETERS
++
++value = Number
++
++=head3 RETURN VALUE
++
++Integer or invalid.
++
++=cut
++
++.sub '_float_round' :anon
++    .param pmc value
++    .local pmc res
++    $P0 = value
++    $I0 = isa value, 'WmlsString'
++    unless $I0 goto L1
++    $P0 = value.'parseNumber'()
++  L1:
++    $I0 = isa $P0, 'WmlsInvalid'
++    if $I0 goto L2
++    $N0 = $P0
++    $N0 += 0.5
++    $I0 = floor $N0
++    box res, $I0
++    goto L3
++  L2:
++    new res, 'WmlsInvalid'
++  L3:
++    .return (res)
++.end
++
++
++=head2 C<sqrt(value)>
++
++=head3 DESCRIPTION
++
++Returns an implementation-dependent approximation to the square root of
++the given value.
++
++=head3 PARAMETERS
++
++value = Floating-point
++
++=head3 RETURN VALUE
++
++Floating-point or invalid.
++
++=head3 EXCEPTIONS
++
++If value is a negative number then invalid is returned.
++
++=cut
++
++.sub '_float_sqrt' :anon
++    .param pmc value
++    .local pmc res
++    $P0 = value
++    $I0 = isa value, 'WmlsString'
++    unless $I0 goto L1
++    $P0 = value.'parseNumber'()
++  L1:
++    $I0 = isa $P0, 'WmlsInvalid'
++    if $I0 goto L2
++    $N0 = $P0
++    if $N0 < 0.0 goto L2
++    $N1 = sqrt $N0
++    box res, $N1
++    goto L3
++  L2:
++    new res, 'WmlsInvalid'
++  L3:
++    .return (res)
++.end
++
++
++=head2 C<maxFloat()>
++
++=head3 DESCRIPTION
++
++Returns the maximum floating-point value supported by [IEEE754] single
++precision floating-point format.
++
++=head3 RETURN VALUE
++
++Floating-point 3.40282347e+38.
++
++=cut
++
++.sub '_float_maxFloat' :anon
++    .local pmc res
++    box res, 3.40282347e+38
++    .return (res)
++.end
++
++
++=head2 C<minFloat()>
++
++=head3 DESCRIPTION
++
++Returns the smallest nonzero floating-point value supported by [IEEE754]
++single precision floating-point format.
++
++=head3 RETURN VALUE
++
++Floating-point. Smaller than or equal to the normalised minimum single
++precision floating-point value: 1.17549435e-38.
++
++=cut
++
++.sub '_float_minFloat' :anon
++    .local pmc res
++    box res, 1.17549435e-38
++    .return (res)
++.end
++
++
++# Local Variables:
++#   mode: pir
++#   fill-column: 100
++# End:
++# vim: expandtab shiftwidth=4 ft=pir:
+--- origsrc/parrot-0.8.2/languages/WMLScript/WMLScript/wmlslang.pir	1970-01-01 00:00:00.000000000 +0000
++++ src/parrot-0.8.2/languages/WMLScript/WMLScript/wmlslang.pir	2008-12-25 13:44:20.569000000 +0000
+@@ -0,0 +1,663 @@
++# Copyright (C) 2006-2008, The Perl Foundation.
++# $Id: /mirror/trunk/languages/WMLScript/runtime/wmlslang.pir 33686 2008-12-08T15:50:21.922911Z fperrad  $
++
++=head1 NAME
++
++runtime/wmlslang.pir - WMLScript Lang library
++
++=head1 DESCRIPTION
++
++This library contains a set of functions that are closely related to the
++WMLScript language core.
++
++See "WMLScript Standard Libraries Specification", section 7 "Lang".
++
++=head1 FUNCTIONS
++
++=cut
++
++.HLL 'WMLScript'
++.loadlib 'wmls_group'
++.loadlib 'wmls_ops'
++
++
++.sub 'getLang'
++    new $P0, 'Hash'
++
++    .const 'Sub' _lang_abs = '_lang_abs'
++    $P0[0]  = _lang_abs
++    .const 'Sub' _lang_min = '_lang_min'
++    $P0[1]  = _lang_min
++    .const 'Sub' _lang_max = '_lang_max'
++    $P0[2]  = _lang_max
++    .const 'Sub' _lang_parseInt = '_lang_parseInt'
++    $P0[3]  = _lang_parseInt
++    .const 'Sub' _lang_parseFloat = '_lang_parseFloat'
++    $P0[4]  = _lang_parseFloat
++    .const 'Sub' _lang_isInt = '_lang_isInt'
++    $P0[5]  = _lang_isInt
++    .const 'Sub' _lang_isFloat = '_lang_isFloat'
++    $P0[6]  = _lang_isFloat
++    .const 'Sub' _lang_maxInt = '_lang_maxInt'
++    $P0[7]  = _lang_maxInt
++    .const 'Sub' _lang_minInt = '_lang_minInt'
++    $P0[8]  = _lang_minInt
++    .const 'Sub' _lang_float = '_lang_float'
++    $P0[9]  = _lang_float
++    .const 'Sub' _lang_exit = '_lang_exit'
++    $P0[10] = _lang_exit
++    .const 'Sub' _lang_abort = '_lang_abort'
++    $P0[11] = _lang_abort
++    .const 'Sub' _lang_random = '_lang_random'
++    $P0[12] = _lang_random
++    .const 'Sub' _lang_seed = '_lang_seed'
++    $P0[13] = _lang_seed
++    .const 'Sub' _lang_characterSet = '_lang_characterSet'
++    $P0[14] = _lang_characterSet
++
++    .return ($P0)
++.end
++
++
++=head2 C<abs(value)>
++
++=head3 DESCRIPTION
++
++Returns the absolute value of the given number. If the given number is of
++type integer then an integer value is returned. If the given number is of type
++floating-point then a floating-point value is returned.
++
++=head3 PARAMETERS
++
++value = Number
++
++=head3 RETURN VALUE
++
++Number or invalid.
++
++=cut
++
++.sub '_lang_abs' :anon
++    .param pmc value
++    .local pmc res
++    res = clone value
++    res = abs value
++    .return (res)
++.end
++
++
++=head2 C<min(value1, value2)>
++
++=head3 DESCRIPTION
++
++Returns the minimum value of the given two numbers. The value and type
++returned is the same as the value and type of the selected number. The
++selection is done in the following way:
++
++=over 4
++
++=item *
++
++WMLScript operator data type conversion rules for I<integers and
++floating-points> (see [WMLScript]) must be used to specify the data
++type (integer or floating-point ) for comparison.
++
++=item *
++
++Compare the numbers to select the smaller one.
++
++=item *
++
++If the values are equal then the first value is selected.
++
++=back
++
++=head3 PARAMETERS
++
++value1 = Number
++
++value2 = Number
++
++=head3 RETURN VALUE
++
++Number or invalid.
++
++=cut
++
++.sub '_lang_min' :anon
++    .param pmc value1
++    .param pmc value2
++    .local pmc res
++    $P1 = value1
++    $I0 = isa value1, 'WmlsString'
++    unless $I0 goto L1
++    $P1 = value1.'parseNumber'()
++  L1:
++    $P2 = value2
++    $I0 = isa value2, 'WmlsString'
++    unless $I0 goto L2
++    $P2 = value2.'parseNumber'()
++  L2:
++    $P0 = isle $P1, $P2
++    $I0 = isa $P0, 'WmlsInvalid'
++    unless $I0 goto L3
++    .return ($P0)
++  L3:
++    $I0 = $P0
++    unless $I0 goto L4
++    res = clone value1
++    goto L5
++  L4:
++    res = clone value2
++  L5:
++    .return (res)
++.end
++
++
++=head2 C<max(value1, value2)>
++
++=head3 DESCRIPTION
++
++Returns the maximum value of the given two numbers. The value and type
++returned is the same as the value and type of the selected number. The
++selection is done in the following way:
++
++=over 4
++
++=item *
++
++WMLScript operator data type conversion rules for I<integers and
++floating-points> (see [WMLScript]) must be used to specify the data
++type (integer or floating-point ) for comparison.
++
++=item *
++
++Compare the numbers to select the larger one.
++
++=item *
++
++If the values are equal then the first value is selected.
++
++=back
++
++=head3 PARAMETERS
++
++value1 = Number
++
++value2 = Number
++
++=head3 RETURN VALUE
++
++Number or invalid.
++
++=cut
++
++.sub '_lang_max' :anon
++    .param pmc value1
++    .param pmc value2
++    .local pmc res
++    $P1 = value1
++    $I0 = isa value1, 'WmlsString'
++    unless $I0 goto L1
++    $P1 = value1.'parseNumber'()
++  L1:
++    $P2 = value2
++    $I0 = isa value2, 'WmlsString'
++    unless $I0 goto L2
++    $P2 = value2.'parseNumber'()
++  L2:
++    $P0 = isge $P1, $P2
++    $I0 = isa $P0, 'WmlsInvalid'
++    unless $I0 goto L3
++    .return ($P0)
++  L3:
++    $I0 = $P0
++    unless $I0 goto L4
++    res = clone value1
++    goto L5
++  L4:
++    res = clone value2
++  L5:
++    .return (res)
++.end
++
++
++=head2 C<parseInt(value)>
++
++=head3 DESCRIPTION
++
++Returns an integer value defined by the string value. The legal integer
++syntax is specified by the WMLScript (see [WMLScript]) numeric string
++grammar for I<decimal integer literals> with the following additional parsing
++rule:
++
++=over 4
++
++=item *
++
++Parsing ends when the first character is encountered that is not a
++leading '+' or '-' or a decimal digit.
++
++=back
++
++The result is the parsed string converted to an integer value.
++
++=head3 PARAMETERS
++
++value = String
++
++=head3 RETURN VALUE
++
++Integer or invalid.
++
++=head3 EXCEPTIONS
++
++In case of a parsing error an C<invalid> value is returned.
++
++=cut
++
++.sub '_lang_parseInt' :anon
++    .param pmc value
++    .local pmc res
++    $I0 = isa value, 'WmlsString'
++    unless $I0 goto L1
++    res = value.'parseInt'()
++    .return (res)
++  L1:
++    res = value
++    $I0 = isa value, 'WmlsInteger'
++    if $I0 goto L2
++    new res, 'WmlsInvalid'
++  L2:
++    .return (res)
++.end
++
++
++=head2 C<parseFloat(value)>
++
++=head3 DESCRIPTION
++
++Returns a floating-point value defined by the string value. The legal floatingpoint
++syntax is specified by the WMLScript (see [WMLScript]) numeric
++string grammar for I<decimal floating-point literals> with the following additional
++parsing rule:
++
++=over 4
++
++=item *
++
++Parsing ends when the first character is encountered that cannot
++be parsed as being part of the floating-point representation.
++
++=back
++
++The result is the parsed string converted to a floating-point value.
++
++=head3 PARAMETERS
++
++value = String
++
++=head3 RETURN VALUE
++
++Floating-point or invalid.
++
++=head3 EXCEPTIONS
++
++In case of a parsing error an C<invalid> value is returned.
++
++=cut
++
++.sub '_lang_parseFloat' :anon
++    .param pmc value
++    .local pmc res
++    $I0 = isa value, 'WmlsString'
++    unless $I0 goto L1
++    res = value.'parseFloat'()
++    .return (res)
++  L1:
++    res = value
++    $I0 = isa value, 'WmlsFloat'
++    if $I0 goto L2
++    $I0 = isa value, 'WmlsInteger'
++    unless $I0 goto L3
++    $I0 = value
++    new res, 'WmlsFloat'
++    set res, $I0
++    goto L2
++  L3:
++    new res, 'WmlsInvalid'
++  L2:
++    .return (res)
++.end
++
++
++=head2 C<isInt(value)>
++
++=head3 DESCRIPTION
++
++Returns a boolean value that is C<true> if the given value can be converted
++into an integer number by using parseInt(value). Otherwise C<false> is
++returned.
++
++=head3 PARAMETERS
++
++value = Any
++
++=head3 RETURN VALUE
++
++Boolean or invalid.
++
++=cut
++
++.sub '_lang_isInt' :anon
++    .param pmc value
++    .local pmc res
++    $I0 = isa value, 'WmlsString'
++    unless $I0 goto L1
++    $P0 = value.'parseInt'()
++    res = defined $P0
++    .return (res)
++  L1:
++    $I0 = isa value, 'WmlsInvalid'
++    unless $I0 goto L2
++    new res, 'WmlsInvalid'
++    .return (res)
++  L2:
++    new res, 'WmlsBoolean'
++    $I0 = isa value, 'WmlsInteger'
++    set res, $I0
++    .return (res)
++.end
++
++
++=head2 C<isFloat(value)>
++
++=head3 DESCRIPTION
++
++Returns a boolean value that is C<true> if the given value can be converted
++into a floating-point number using parseFloat(value). Otherwise C<false> is
++returned.
++
++=head3 PARAMETERS
++
++value = Any
++
++=head3 RETURN VALUE
++
++Boolean or invalid.
++
++=cut
++
++.sub '_lang_isFloat' :anon
++    .param pmc value
++    .local pmc res
++    $I0 = isa value, 'WmlsString'
++    unless $I0 goto L1
++    $P0 = value.'parseFloat'()
++    res = defined $P0
++    .return (res)
++  L1:
++    $I0 = isa value, 'WmlsInvalid'
++    unless $I0 goto L2
++    new res, 'WmlsInvalid'
++    .return (res)
++  L2:
++    new res, 'WmlsBoolean'
++    $I0 = isa value, 'WmlsFloat'
++    set res, $I0
++    if $I0 goto L3
++    $I0 = isa value, 'WmlsInteger'
++    set res, $I0
++  L3:
++    .return (res)
++.end
++
++
++=head2 C<maxInt()>
++
++=head3 DESCRIPTION
++
++Returns the maximum integer value.
++
++=head3 RETURN VALUE
++
++Integer 2147483647.
++
++=cut
++
++.sub '_lang_maxInt' :anon
++    .local pmc res
++    box res, 2147483647
++    .return (res)
++.end
++
++
++=head2 C<minInt()>
++
++=head3 DESCRIPTION
++
++Returns the minimum integer value.
++
++=head3 RETURN VALUE
++
++Integer -2147483648.
++
++=cut
++
++.sub '_lang_minInt' :anon
++    .local pmc res
++    box res, -2147483648
++    .return (res)
++.end
++
++
++=head2 C<float()>
++
++=head3 DESCRIPTION
++
++Returns true if floating-points are supported and false if not.
++
++=head3 RETURN VALUE
++
++Boolean.
++
++=cut
++
++.sub '_lang_float' :anon
++    .local pmc res
++    new res, 'WmlsBoolean'
++    set res, 1
++    .return (res)
++.end
++
++
++=head2 C<exit(value)>
++
++=head3 DESCRIPTION
++
++Ends the interpretation of the WMLScript bytecode and returns the control
++back to the caller of the WMLScript interpreter with the given return value.
++This function can be used to perform a normal exit from a function in cases
++where the execution of the WMLScript bytecode should be discontinued.
++
++=head3 PARAMETERS
++
++value = Any
++
++=head3 RETURN VALUE
++
++None (this function ends the interpretation).
++
++=cut
++
++.sub '_lang_exit' :anon
++    .param pmc value
++    .local pmc res
++    $I0 = isa value, 'WmlsString'
++    unless $I0 goto L1
++    $P0 = value.'parseInt'()
++    $I0 = $P0
++    exit $I0
++  L1:
++    $I0 = value
++    exit $I0
++.end
++
++
++=head2 C<abort(errorDescription)>
++
++=head3 DESCRIPTION
++
++Aborts the interpretation of the WMLScript bytecode and returns the control
++back to the caller of the WMLScript interpreter with the return
++errorDescription. This function can be used to perform an abnormal exit in
++cases where the execution of the WMLScript should be discontinued due to
++serious errors detected by the program. If the type of the errorDescription is
++invalid, string "invalid" is used as the errorDescription instead.
++
++=head3 PARAMETERS
++
++errorDescription = String
++
++=head3 RETURN VALUE
++
++None (this function aborts the interpretation).
++
++=cut
++
++.sub '_lang_abort' :anon
++    .param pmc value
++    die value
++.end
++
++
++=head2 C<random(value)>
++
++=head3 DESCRIPTION
++
++Returns an integer value with positive sign that is greater than or equal to 0
++but less than or equal to the given value. The return value is chosen
++randomly or pseudo-randomly with approximately uniform distribution over
++that range, using an implementation-dependent algorithm or strategy.
++
++If the value is of type floating-point, Float.int() is first used to calculate the
++actual integer value.
++
++=head3 PARAMETERS
++
++value = Number
++
++=head3 RETURN VALUE
++
++Integer or invalid.
++
++=head3 EXCEPTIONS
++
++If value is equal to zero (0), the function returns zero.
++
++If value is less than zero (0), the function returns C<invalid>.
++
++=cut
++
++.sub '_lang_random' :anon
++    .param pmc value
++    .local pmc res
++    $P0 = value
++    $I0 = isa value, 'WmlsString'
++    unless $I0 goto L1
++    $P0 = value.'parseNumber'()
++  L1:
++    $I0 = isa $P0, 'WmlsInvalid'
++    if $I0 goto L2
++    $I0 = $P0
++    if $I0 < 0 goto L2
++    new $P0, 'Random'
++    $N0 = $P0
++    $N0 = mul $I0
++    $I0 = $N0
++    box res, $I0
++    goto L3
++  L2:
++    new res, 'WmlsInvalid'
++  L3:
++    .return (res)
++.end
++
++
++=head2 C<seed(value)>
++
++=head3 DESCRIPTION
++
++Initialises the pseudo-random number sequence and returns an empty
++string. If the value is zero or a positive integer then the given value is used
++for initialisation, otherwise a random, system dependent initialisation value
++is used. A seed value of greater than or equal to zero results in a repeatable
++sequence of pseudo-random numbers. A seed value of less than zero
++results in a non-repeatable sequence of random numbers.
++
++If the value is of type floating-point, Float.int() is first used to calculate the
++actual integer value. . If the value is non-numeric, invalid is returned and the
++current seed is unchanged.
++
++=head3 PARAMETERS
++
++value = Number
++
++=head3 RETURN VALUE
++
++String or invalid.
++
++=cut
++
++.sub '_lang_seed' :anon
++    .param pmc value
++    .local pmc res
++    $P0 = value
++    $I0 = isa value, 'WmlsString'
++    unless $I0 goto L1
++    $P0 = value.'parseNumber'()
++  L1:
++    $I0 = isa $P0, 'WmlsInvalid'
++    if $I0 goto L2
++    $I0 = $P0
++    if $I0 >= 0 goto L3
++    $I0 = time
++  L3:
++    new $P0, 'Random'
++    $P0 = $I0
++    new res, 'WmlsString'
++    set res, ''
++    goto L4
++  L2:
++    new res, 'WmlsInvalid'
++  L4:
++    .return (res)
++.end
++
++
++=head2 C<characterSet()>
++
++=head3 DESCRIPTION
++
++Returns the character set supported by the WMLScript Interpreter. The
++return value is an integer that denotes a MIBEnum value assigned by the
++IANA for all character sets (see [WSP] for more information).
++
++=head3 RETURN VALUE
++
++Integer.
++
++=cut
++
++.sub '_lang_characterSet' :anon
++    .local pmc res
++    box res, 4     # latin1
++    .return (res)
++.end
++
++
++# Local Variables:
++#   mode: pir
++#   fill-column: 100
++# End:
++# vim: expandtab shiftwidth=4 ft=pir:
+--- origsrc/parrot-0.8.2/languages/WMLScript/WMLScript/wmlsstring.pir	1970-01-01 00:00:00.000000000 +0000
++++ src/parrot-0.8.2/languages/WMLScript/WMLScript/wmlsstring.pir	2008-12-25 13:44:20.584625000 +0000
+@@ -0,0 +1,1101 @@
++# Copyright (C) 2006-2008, The Perl Foundation.
++# $Id: /mirror/trunk/languages/WMLScript/runtime/wmlsstring.pir 33686 2008-12-08T15:50:21.922911Z fperrad  $
++
++=head1 NAME
++
++runtime/wmlsstring.pir - WMLScript String library
++
++=head1 DESCRIPTION
++
++This library contains a set of string functions. A string is an array of
++characters. Each of the characters has an index. The first character in a
++string has an index zero (0). The length of the string is the number of
++characters in the array.
++
++The user of the String library can specify a special separator by which
++elements in a string can be separated. These elements can be accessed
++by specifying the separator and the element index. The first element in a
++string has an index zero (0). Each occurrence of the separator in the string
++separates two elements (no escaping of separators is allowed).
++
++A White space character is one of the following characters:
++
++=over 4
++
++=item * TAB : Horizontal Tabulation
++
++=item * VT : Vertical Tabulation
++
++=item * FF : Form Feed
++
++=item * SP : Space
++
++=item * LF : Line Feed
++
++=item * CR : Carriage Return
++
++=back
++
++See "WMLScript Standard Libraries Specification", section 9 "String".
++
++=head1 FUNCTIONS
++
++=cut
++
++.HLL 'WMLScript'
++.loadlib 'wmls_group'
++.loadlib 'wmls_ops'
++
++
++.sub 'getString'
++    new $P0, 'Hash'
++
++    .const 'Sub' _string_length = '_string_length'
++    $P0[0]  = _string_length
++    .const 'Sub' _string_isEmpty = '_string_isEmpty'
++    $P0[1]  = _string_isEmpty
++    .const 'Sub' _string_charAt = '_string_charAt'
++    $P0[2]  = _string_charAt
++    .const 'Sub' _string_subString = '_string_subString'
++    $P0[3]  = _string_subString
++    .const 'Sub' _string_find = '_string_find'
++    $P0[4]  = _string_find
++    .const 'Sub' _string_replace = '_string_replace'
++    $P0[5]  = _string_replace
++    .const 'Sub' _string_elements = '_string_elements'
++    $P0[6]  = _string_elements
++    .const 'Sub' _string_elementAt = '_string_elementAt'
++    $P0[7]  = _string_elementAt
++    .const 'Sub' _string_removeAt = '_string_removeAt'
++    $P0[8]  = _string_removeAt
++    .const 'Sub' _string_replaceAt = '_string_replaceAt'
++    $P0[9]  = _string_replaceAt
++    .const 'Sub' _string_insertAt = '_string_insertAt'
++    $P0[10] = _string_insertAt
++    .const 'Sub' _string_squeeze = '_string_squeeze'
++    $P0[11] = _string_squeeze
++    .const 'Sub' _string_trim = '_string_trim'
++    $P0[12] = _string_trim
++    .const 'Sub' _string_compare = '_string_compare'
++    $P0[13] = _string_compare
++    .const 'Sub' _string_toString = '_string_toString'
++    $P0[14] = _string_toString
++    .const 'Sub' _string_format = '_string_format'
++    $P0[15] = _string_format
++
++    .return ($P0)
++.end
++
++
++=head2 C<length(string)>
++
++=head3 DESCRIPTION
++
++Returns the length (number of characters) of the given string.
++
++=head3 PARAMETERS
++
++string = String
++
++=head3 RETURN VALUE
++
++Integer or invalid.
++
++=cut
++
++.sub '_string_length' :anon
++    .param pmc str
++    .local pmc res
++    $I0 = isa str, 'WmlsInvalid'
++    if $I0 goto L1
++    $S1 = str
++    $I1 = length $S1
++    box res, $I1
++    .return (res)
++  L1:
++    new res, 'WmlsInvalid'
++    .return (res)
++.end
++
++
++=head2 C<isEmpty(string)>
++
++=head3 DESCRIPTION
++
++Returns a boolean true if the string length is zero and boolean false
++otherwise.
++
++=head3 PARAMETERS
++
++string = String
++
++=head3 RETURN VALUE
++
++Boolean or invalid.
++
++=cut
++
++.sub '_string_isEmpty' :anon
++    .param pmc str
++    .local pmc res
++    $I0 = isa str, 'WmlsInvalid'
++    if $I0 goto L1
++    $S1 = str
++    $I1 = length $S1
++    new res, 'WmlsBoolean'
++    set res, 0
++    if $I1 goto L2
++    set res, 1
++  L2:
++    .return (res)
++  L1:
++    new res, 'WmlsInvalid'
++    .return (res)
++.end
++
++
++=head2 C<charAt(string, index)>
++
++=head3 DESCRIPTION
++
++Returns a new string of length one containing the character at the specified
++index of the given string.
++
++If the index is of type floating-point, Float.int() is first used to calculate the
++actual integer index.
++
++=head3 PARAMETERS
++
++string = String
++
++index = Number (the index of the character to be returned)
++
++=head3 RETURN VALUE
++
++String or invalid.
++
++=head3 EXCEPTIONS
++
++If index is out of range then an empty string (C<"">) is returned.
++
++=cut
++
++.sub '_string_charAt' :anon
++    .param pmc str
++    .param pmc index_
++    .local pmc res
++    $I0 = isa str, 'WmlsInvalid'
++    if $I0 goto L1
++    $I0 = isa index_, 'WmlsInteger'
++    if $I0 goto L2
++    $I0 = isa index_, 'WmlsFloat'
++    if $I0 goto L2
++    goto L1
++  L2:
++    $S1 = str
++    $I1 = length $S1
++    $I2 = index_
++    if $I2 < 0 goto L3
++    if $I2 >= $I1 goto L3
++    $S0 = substr $S1, $I2, 1
++    box res, $S0
++    .return (res)
++  L3:
++    new res, 'WmlsString'
++    .return (res)
++  L1:
++    new res, 'WmlsInvalid'
++    .return (res)
++.end
++
++
++=head2 C<subString(string, startIndex, length)>
++
++=head3 DESCRIPTION
++
++Returns a new string that is a substring of the given string. The substring
++begins at the specified startIndex and its length (number of characters) is
++the given length. If the startIndex is less than 0 then 0 is used for the
++startIndex. If the length is larger than the remaining number of characters in
++the string, the length is replaced with the number of remaining characters.
++
++If the startIndex or the length is of type floating-point, Float.int() is first used to
++calculate the actual integer value.
++
++=head3 PARAMETERS
++
++string = String
++
++startIndex = Number (the beginning index, inclusive)
++
++length = Number (the length of the substring)
++
++=head3 RETURN VALUE
++
++String or invalid.
++
++=head3 EXCEPTIONS
++
++If startIndex is larger than the last index an empty string (C<"">) is returned.
++
++If length <= 0 an empty string (C<"">) is returned.
++
++=cut
++
++.sub '_string_subString' :anon
++    .param pmc String
++    .param pmc startIndex
++    .param pmc Length
++    .local pmc res
++    $I0 = isa String, 'WmlsInvalid'
++    if $I0 goto L1
++    $I0 = isa startIndex, 'WmlsInteger'
++    if $I0 goto L2
++    $I0 = isa startIndex, 'WmlsFloat'
++    if $I0 goto L2
++    goto L1
++  L2:
++    $I0 = isa Length, 'WmlsInteger'
++    if $I0 goto L3
++    $I0 = isa Length, 'WmlsFloat'
++    if $I0 goto L3
++    goto L1
++  L3:
++    $S1 = String
++    $I1 = length $S1
++    $I2 = startIndex
++    if $I2 >= 0 goto L4
++    $I2 = 0
++  L4:
++    if $I2 >= $I1 goto L5
++    $I3 = Length
++    if $I3 <= 0 goto L5
++    $S0 = substr $S1, $I2, $I3
++    box res, $S0
++    .return (res)
++  L5:
++    new res, 'WmlsString'
++    .return (res)
++  L1:
++    new res, 'WmlsInvalid'
++    .return (res)
++.end
++
++
++=head2 C<find(string, subString)>
++
++=head3 DESCRIPTION
++
++Returns the index of the first character in the string that matches the
++requested subString. If no match is found integer value -1 is returned.
++
++Two strings are defined to match when they are identical. Characters with
++multiple possible representations match only if they have the same
++representation in both strings. No case folding is performed.
++
++=head3 PARAMETERS
++
++string = String
++
++subString = String
++
++=head3 RETURN VALUE
++
++Integer or invalid.
++
++=head3 EXCEPTIONS
++
++If subString is an empty string (C<"">), an invalid value is returned.
++
++=cut
++
++.sub '_string_find' :anon
++    .param pmc String
++    .param pmc subString
++    .local pmc res
++    $I0 = isa String, 'WmlsInvalid'
++    if $I0 goto L1
++    $I0 = isa subString, 'WmlsInvalid'
++    if $I0 goto L1
++    $S1 = String
++    $S2 = subString
++    $I2 = length $S2
++    if $I2 == 0 goto L1
++    $I0 = index $S1, $S2
++    box res, $I0
++    .return (res)
++  L1:
++    new res, 'WmlsInvalid'
++    .return (res)
++.end
++
++
++=head2 C<replace(string, oldSubString, newSubString)>
++
++=head3 DESCRIPTION
++
++Returns a new string resulting from replacing all occurrences of
++oldSubString in this string with newSubString.
++
++Two strings are defined to match when they are identical. Characters with
++multiple possible representations match only if they have the same
++representation in both strings. No case folding is performed.
++
++=head3 PARAMETERS
++
++string = String
++
++oldSubString = String
++
++newSubString = String
++
++=head3 RETURN VALUE
++
++String or invalid.
++
++=head3 EXCEPTIONS
++
++If oldSubString is an empty string an C<invalid> value is returned.
++
++=cut
++
++.sub '_string_replace' :anon
++    .param pmc String
++    .param pmc oldSubString
++    .param pmc newSubString
++    .local pmc res
++    $I0 = isa String, 'WmlsInvalid'
++    if $I0 goto L1
++    $I0 = isa oldSubString, 'WmlsInvalid'
++    if $I0 goto L1
++    $I0 = isa newSubString, 'WmlsInvalid'
++    if $I0 goto L1
++    $S1 = String
++    $S2 = oldSubString
++    $I2 = length $S2
++    if $I2 == 0 goto L1
++    $S3 = newSubString
++    $P0 = split $S2, $S1
++    $S0 = join $S3, $P0
++    box res, $S0
++    .return (res)
++  L1:
++    new res, 'WmlsInvalid'
++    .return (res)
++.end
++
++
++=head2 C<elements(string, separator)>
++
++=head3 DESCRIPTION
++
++Returns the number of elements in the given string separated by the given
++separator. Empty string ("") is a valid element (thus, this function can never
++return a value that is less or equal to zero).
++
++=head3 PARAMETERS
++
++string = String
++
++separator = String (the first character of the string used as separator)
++
++=head3 RETURN VALUE
++
++Integer or invalid.
++
++=head3 EXCEPTIONS
++
++Returns C<invalid> if the separator is an empty string.
++
++=cut
++
++.sub '_string_elements' :anon
++    .param pmc str
++    .param pmc separator
++    .local pmc res
++    $I0 = isa str, 'WmlsInvalid'
++    if $I0 goto L1
++    $I0 = isa separator, 'WmlsInvalid'
++    if $I0 goto L1
++    $S1 = str
++    $S2 = separator
++    $I2 = length $S2
++    if $I2 == 0 goto L1
++    $S2 = substr $S2, 0, 1
++    $I1 = length $S1
++    if $I1 != 0 goto L2
++    box res, 1
++    .return (res)
++  L2:
++    $P0 = split $S2, $S1
++    $I0 = elements $P0
++    box res, $I0
++    .return (res)
++  L1:
++    new res, 'WmlsInvalid'
++    .return (res)
++.end
++
++
++=head2 C<elementAt(string, index, separator)>
++
++=head3 DESCRIPTION
++
++Search string for index'th element, elements being separated by separator
++and return the corresponding element. If the index is less than 0 then the first
++element is returned. If the index is larger than the number of elements then
++the last element is returned. If the string is an empty string then an empty
++string is returned.
++
++If the index is of type floating-point, Float.int() is first used to calculate the
++actual index value.
++
++=head3 PARAMETERS
++
++string = String
++
++index = Number (the index of the element to be returned)
++
++separator = String (the first character of the string used as separator)
++
++=head3 RETURN VALUE
++
++String or invalid.
++
++=head3 EXCEPTIONS
++
++Returns C<invalid> if the separator is an empty string.
++
++=cut
++
++.sub '_string_elementAt' :anon
++    .param pmc str
++    .param pmc index_
++    .param pmc separator
++    .local pmc res
++    $I0 = isa str, 'WmlsInvalid'
++    if $I0 goto L1
++    $I0 = isa index_, 'WmlsInteger'
++    if $I0 goto L2
++    $I0 = isa index_, 'WmlsFloat'
++    if $I0 goto L2
++    goto L1
++  L2:
++    $I0 = isa separator, 'WmlsInvalid'
++    if $I0 goto L1
++    $S1 = str
++    $I2 = index_
++    if $I2 >= 0 goto L3
++    $I2 = 0
++  L3:
++    $S3 = separator
++    $I3 = length $S3
++    if $I3 == 0 goto L1
++    $S3 = substr $S3, 0, 1
++    $I1 = length $S1
++    if $I1 != 0 goto L4
++    new res, 'WmlsString'
++    .return (res)
++  L4:
++    $P0 = split $S3, $S1
++    $I0 = elements $P0
++    if $I2 < $I0 goto L5
++    $I2 = $I0 - 1
++  L5:
++    $S0 = $P0[$I2]
++    box res, $S0
++    .return (res)
++  L1:
++    new res, 'WmlsInvalid'
++    .return (res)
++.end
++
++
++=head2 C<removeAt(string, index, separator)>
++
++=head3 DESCRIPTION
++
++Returns a new string where the element and the corresponding separator (if
++existing) with the given index are removed from the given string. If the index
++is less than 0 then the first element is removed. If the index is larger than the
++number of elements then the last element is removed. If the string is empty,
++the function returns a new empty string.
++
++If the index is of type floating-point, Float.int() is first used to calculate the
++actual index value.
++
++=head3 PARAMETERS
++
++string = String
++
++index = Number (the index of the element to be deleted)
++
++separator = String (the first character of the string used as separator)
++
++=head3 RETURN VALUE
++
++String or invalid.
++
++=head3 EXCEPTIONS
++
++Returns C<invalid> if the separator is an empty string.
++
++=cut
++
++.sub '_string_removeAt' :anon
++    .param pmc str
++    .param pmc index_
++    .param pmc separator
++    .local pmc res
++    $I0 = isa str, 'WmlsInvalid'
++    if $I0 goto L1
++    $I0 = isa index_, 'WmlsInteger'
++    if $I0 goto L2
++    $I0 = isa index_, 'WmlsFloat'
++    if $I0 goto L2
++    goto L1
++  L2:
++    $I0 = isa separator, 'WmlsInvalid'
++    if $I0 goto L1
++    $S1 = str
++    $I2 = index_
++    if $I2 >= 0 goto L3
++    $I2 = 0
++  L3:
++    $S3 = separator
++    $I3 = length $S3
++    if $I3 == 0 goto L1
++    $S3 = substr $S3, 0, 1
++    $I1 = length $S1
++    if $I1 != 0 goto L4
++    new res, 'WmlsString'
++    .return (res)
++  L4:
++    $P0 = split $S3, $S1
++    $I4 = elements $P0
++    if $I2 < $I4 goto L5
++    $I2 = $I4 - 1
++  L5:
++    dec $I4
++    new $P1, 'Array'
++    set $P1, $I4
++    $I0 = 0
++    $I1 = 0
++  L6:
++    unless $I1 < $I4 goto L7
++    $S0 = $P0[$I0]
++    $P1[$I1] = $S0
++    if $I0 == $I2 goto L8
++    inc $I1
++  L8:
++    inc $I0
++    goto L6
++  L7:
++    $S0 = join $S3, $P1
++    box res, $S0
++    .return (res)
++  L1:
++    new res, 'WmlsInvalid'
++    .return (res)
++.end
++
++
++=head2 C<replaceAt(string, element, index, separator)>
++
++=head3 DESCRIPTION
++
++Returns a string with the current element at the specified index replaced with
++the given element. If the index is less than 0 then the first element is
++replaced. If the index is larger than the number of elements then the last
++element is replaced. If the string is empty, the function returns a new string
++with the given element.
++
++If the index is of type floating-point, Float.int() is first used to calculate the
++actual index value.
++
++=head3 PARAMETERS
++
++string = String
++
++element = String
++
++index = Number (the index of the element to be replaced)
++
++separator = String (the first character of the string used as separator)
++
++=head3 RETURN VALUE
++
++String or invalid.
++
++=head3 EXCEPTIONS
++
++Returns C<invalid> if the separator is an empty string.
++
++=cut
++
++.sub '_string_replaceAt' :anon
++    .param pmc str
++    .param pmc element
++    .param pmc index_
++    .param pmc separator
++    .local pmc res
++    $I0 = isa str, 'WmlsInvalid'
++    if $I0 goto L1
++    $I0 = isa element, 'WmlsInvalid'
++    if $I0 goto L1
++    $I0 = isa index_, 'WmlsInteger'
++    if $I0 goto L2
++    $I0 = isa index_, 'WmlsFloat'
++    if $I0 goto L2
++    goto L1
++  L2:
++    $I0 = isa separator, 'WmlsInvalid'
++    if $I0 goto L1
++    $S1 = str
++    $S2 = element
++    $I3 = index_
++    if $I3 >= 0 goto L3
++    $I3 = 0
++  L3:
++    $S4 = separator
++    $I4 = length $S4
++    if $I4 == 0 goto L1
++    $S4 = substr $S4, 0, 1
++    $I1 = length $S1
++    if $I1 != 0 goto L4
++    box res, $S2
++    .return (res)
++  L4:
++    $P0 = split $S4, $S1
++    $I0 = elements $P0
++    if $I3 < $I0 goto L5
++    $I3 = $I0 - 1
++  L5:
++    $P0[$I3] = $S2
++    $S0 = join $S4, $P0
++    box res, $S0
++    .return (res)
++  L1:
++    new res, 'WmlsInvalid'
++    .return (res)
++.end
++
++
++=head2 C<insertAt(string, element, index, separator)>
++
++=head3 DESCRIPTION
++
++Returns a string with the element and the corresponding separator (if
++needed) inserted at the specified element index of the original string. If the
++index is less than 0 then 0 is used as the index. If the index is larger than the
++number of elements then the element is appended at the end of the string. If
++the string is empty, the function returns a new string with the given element.
++
++If the index is of type floating-point, Float.int() is first used to calculate the
++actual index value.
++
++=head3 PARAMETERS
++
++string = String (original string)
++
++element = String (element to be inserted)
++
++index = Number (the index of the element to be added)
++
++separator = String (the first character of the string used as separator)
++
++=head3 RETURN VALUE
++
++String or invalid.
++
++=head3 EXCEPTIONS
++
++Returns C<invalid> if the separator is an empty string.
++
++=cut
++
++.sub '_string_insertAt' :anon
++    .param pmc str
++    .param pmc element
++    .param pmc index_
++    .param pmc separator
++    .local pmc res
++    $I0 = isa str, 'WmlsInvalid'
++    if $I0 goto L1
++    $I0 = isa element, 'WmlsInvalid'
++    if $I0 goto L1
++    $I0 = isa index_, 'WmlsInteger'
++    if $I0 goto L2
++    $I0 = isa index_, 'WmlsFloat'
++    if $I0 goto L2
++    goto L1
++  L2:
++    $I0 = isa separator, 'WmlsInvalid'
++    if $I0 goto L1
++    $S1 = str
++    $S2 = element
++    $I3 = index_
++    if $I3 >= 0 goto L3
++    $I3 = 0
++  L3:
++    $S4 = separator
++    $I4 = length $S4
++    if $I4 == 0 goto L1
++    $S4 = substr $S4, 0, 1
++    $I1 = length $S1
++    if $I1 != 0 goto L4
++    box res, $S2
++    .return (res)
++  L4:
++    $P0 = split $S4, $S1
++    $I5 = elements $P0
++    if $I3 <= $I5 goto L5
++    $I3 = $I5
++  L5:
++    $I6 = $I5 + 1
++    new $P1, 'Array'
++    set $P1, $I6
++    $I0 = 0
++    $I1 = 0
++  L6:
++    unless $I0 < $I5 goto L7
++    if $I1 != $I3 goto L8
++    inc $I1
++  L8:
++    $S0 = $P0[$I0]
++    $P1[$I1] = $S0
++    inc $I0
++    inc $I1
++    goto L6
++  L7:
++    $P1[$I3] = $S2
++    $S0 = join $S4, $P1
++    box res, $S0
++    .return (res)
++  L1:
++    new res, 'WmlsInvalid'
++    .return (res)
++.end
++
++
++=head2 C<squeeze(string)>
++
++=head3 DESCRIPTION
++
++Returns a string where all consecutive series of white spaces within the
++string are reduced to single inter-word space.
++
++=head3 PARAMETERS
++
++String = String
++
++=head3 RETURN VALUE
++
++String or invalid.
++
++=cut
++
++.include 'cclass.pasm'
++
++.sub 'squeeze' :anon
++    .param string s
++    .local string res
++    .local int idx
++    res = ''
++    idx = 0
++    $I1 = length s
++  L1:
++    unless idx < $I1 goto L2
++    $I0 = is_cclass .CCLASS_WHITESPACE, s, idx
++    if $I0 goto L3
++    $S0 = substr s, idx, 1
++    res = concat $S0
++    inc idx
++    goto L1
++  L3:
++    res = concat ' '
++  L4:
++    inc idx
++    $I0 = is_cclass .CCLASS_WHITESPACE, s, idx
++    if $I0 goto L4
++    goto L1
++  L2:
++    .return (res)
++.end
++
++.sub '_string_squeeze' :anon
++    .param pmc str
++    .local pmc res
++    $I0 = isa str, 'WmlsInvalid'
++    if $I0 goto L1
++    $S1 = str
++    $S0 = squeeze($S1)
++    box res, $S0
++    .return (res)
++  L1:
++    new res, 'WmlsInvalid'
++    .return (res)
++.end
++
++
++=head2 C<trim(string)>
++
++=head3 DESCRIPTION
++
++Returns a string where all trailing and leading white spaces in the given
++string have been trimmed.
++
++=head3 PARAMETERS
++
++String = String
++
++=head3 RETURN VALUE
++
++String or invalid.
++
++=cut
++
++.sub 'trim' :anon
++    .param string s
++    .local string res
++    $I1 = 0
++  L1:
++    $I0 = is_cclass .CCLASS_WHITESPACE, s, $I1
++    unless $I0 goto L2
++    inc $I1
++    goto L1
++  L2:
++    $I2 = length s
++  L3:
++    dec $I2
++    $I0 = is_cclass .CCLASS_WHITESPACE, s, $I2
++    if $I0 goto L3
++    inc $I2
++    $I2 -= $I1
++    res = substr s, $I1, $I2
++    .return (res)
++.end
++
++.sub '_string_trim' :anon
++    .param pmc str
++    .local pmc res
++    $I0 = isa str, 'WmlsInvalid'
++    if $I0 goto L1
++    $S1 = str
++    $S0 = trim($S1)
++    box res, $S0
++    .return (res)
++  L1:
++    new res, 'WmlsInvalid'
++    .return (res)
++.end
++
++
++=head2 C<compare(string1, string2)>
++
++=head3 DESCRIPTION
++
++The return value indicates the lexicographic relation of string1 to string2. The
++relation is based on the relation of the character codes in the native
++character set. The return value is -1 if string1 is less than string2, 0 if string1
++is identical to string2 or 1 if string1 is greater than string2.
++
++=head3 PARAMETERS
++
++String1 = String
++
++String2 = String
++
++=head3 RETURN VALUE
++
++Integer or invalid.
++
++=cut
++
++.sub '_string_compare' :anon
++    .param pmc string1
++    .param pmc string2
++    .local pmc res
++    $I0 = isa string1, 'WmlsInvalid'
++    if $I0 goto L1
++    $I0 = isa string2, 'WmlsInvalid'
++    if $I0 goto L1
++    $S1 = string1
++    $S2 = string2
++    if $S1 >= $S2 goto L2
++    box res, -1
++    .return (res)
++  L2:
++    if $S1 > $S2 goto L3
++    box res, 0
++    .return (res)
++  L3:
++    box res, 1
++    .return (res)
++  L1:
++    new res, 'WmlsInvalid'
++    .return (res)
++.end
++
++
++=head2 C<toString(value)>
++
++=head3 DESCRIPTION
++
++Returns a string representation of the given value. This function performs
++exactly the same conversions as supported by the [WMLScript] language
++(automatic conversion from boolean, integer and floating-point values to
++strings) except that C<invalid> value returns the string C<"invalid">.
++
++=head3 PARAMETERS
++
++value = Any
++
++=head3 RETURN VALUE
++
++String.
++
++=cut
++
++.sub '_string_toString' :anon
++    .param pmc value
++    $S1 = value
++    .local pmc res
++    box res, $S1
++    .return (res)
++.end
++
++
++=head2 C<format(format, value)>
++
++=head3 DESCRIPTION
++
++Converts the given value to a string by using the given formatting provided as
++a format string. The format string can contain only one format specifier,
++which can be located anywhere inside the string. If more than one is
++specified, only the first one (leftmost) is used and the remaining specifiers
++are replaced by an empty string. The format specifier has the following form:
++
++ % [width] [.precision] type
++
++The C<width> argument is a nonnegative decimal integer controlling the
++minimum number of characters printed. If the number of characters in the
++output value is less than the specified width, blanks are added to the left until
++the minimum width is reached. The C<width> argument never causes the
++value to be truncated. If the number of characters in the output value is
++greater than the specified width or, if width is not given, all characters of the
++value are printed (subject to the precision argument).
++
++The C<precision> argument specifies a nonnegative decimal integer,
++preceded by a period (.), which can be used to set the precision of the output
++value. The interpretation of this value depends on the given C<type>:
++
++=over 4
++
++=item d
++
++Specifies the minimum number of digits to be printed. If the number
++of digits in the value is less than precision, the output value is
++padded on the left with zeroes. The value is not truncated when the
++number of digits exceeds precision. Default precision is 1. If
++precision is specified as 0 and the value to be converted is 0, the
++result is an empty string.
++
++=item f
++
++Specifies the number of digits after the decimal point. If a decimal
++point appears, at least one digit appears before it. The value is
++rounded to the appropriate number of digits. Default precision is 6; if
++precision is 0 or if the period (.) appears without a number following
++it, no decimal point is printed.
++
++=item s
++
++Specifies the maximum number of characters to be printed. By
++default, all characters are printed.
++
++=back
++
++Unlike the C<width> argument, the C<precision> argument can cause either
++truncation of the output value or rounding of a floating-point value.
++
++The C<type> argument is the only required format argument; it appears after
++any optional format fields. The type character determines whether the given
++value is interpreted as integer, floating-point or string. If the value argument
++is of a different type than is specified by the type argument, it is converted
++according to WMLScript standard automatic conversion rules, with the
++addition that if value is of type floating-point and type is B<d>, Float.int() is called
++to convert the value. The supported C<type> arguments are:
++
++=over 4
++
++=item d
++
++Integer: The output value has the form [-]dddd, where dddd is one
++or more decimal digits.
++
++=item f
++
++Floating-point: The output value has the form [-]dddd.dddd, where
++dddd is one or more decimal digits. The number of digits before the
++decimal point depends on the magnitude of the number and the
++number of digits after the decimal point depends on the requested
++precision. When the number of digits after the decimal point in the value
++is less than the precision, letter 0 should be padded to fill columns
++(e.g. the result of String.format("%2.3f", 1.2) will be
++"1.200")
++
++=item s
++
++String: Characters are printed up to the end of the string or until the
++precision value is reached. When the width is larger than
++precision, the width should be ignored.
++
++=back
++
++A literal percent character (%) may be included in the format string by
++preceding it with another percent character (%%).
++
++MINIMALIST IMPLEMENTATION
++
++=head3 PARAMETERS
++
++format = String
++
++value = Any
++
++=head3 RETURN VALUE
++
++String or invalid.
++
++=head3 EXCEPTIONS
++
++Illegal format specifier results in an C<invalid> return value.
++
++=cut
++
++.sub '_string_format' :anon
++    .param pmc format
++    .param pmc value
++    .local pmc res
++    $I0 = isa format, 'WmlsInvalid'
++    if $I0 goto L1
++    $S0 = format
++    new $P0, 'Array'
++    set $P0, 1
++    $P0[0] = value
++  L2:
++    $S1 = sprintf $S0, $P0
++    box res, $S1
++    .return (res)
++  L1:
++    new res, 'WmlsInvalid'
++    .return (res)
++.end
++
++
++# Local Variables:
++#   mode: pir
++#   fill-column: 100
++# End:
++# vim: expandtab shiftwidth=4 ft=pir:
+--- origsrc/parrot-0.8.2/languages/WMLScript/config/makefiles/root.in	2008-06-23 02:30:48.000000000 +0000
++++ src/parrot-0.8.2/languages/WMLScript/config/makefiles/root.in	2008-12-25 13:44:20.631500000 +0000
+@@ -1,21 +1,40 @@
+ # Copyright (C) 2006-2007, The Perl Foundation.
+ # $Id: /mirror/trunk/languages/WMLScript/config/makefiles/root.in 28688 2008-06-23T00:33:41.905243Z coke  $
+ 
+-RM_F    = @rm_f@
+-PERL    = @perl@
+-PARROT  = ../../parrot@exe@
++## configuration settings
++HLLNAME = WMLScript
+ 
+-PMCBUILD = $(PERL) @build_dir@/tools/build/dynpmc.pl
+-OPSBUILD = $(PERL) @build_dir@/tools/build/dynoplibs.pl
+-LIBPATH  = runtime
+-PMCDIR   = pmc
+-OPSDIR   = ops
+-O        = @o@
+-LOAD_EXT = @load_ext@
+-PARROT_DYNEXT = @build_dir@/runtime/parrot/dynext
+-#CONDITIONED_LINE(darwin):
+-#CONDITIONED_LINE(darwin):# MACOSX_DEPLOYMENT_TARGET must be defined for OS X compilation/linking
+-#CONDITIONED_LINE(darwin):export MACOSX_DEPLOYMENT_TARGET := @osx_version@
++## Setup some commands
++PERL    = @perl@
++RM_F    = @rm_f@
++CP            = @cp@
++MKPATH        = @mkpath@
++POD2MAN       = pod2man
++PMCBUILD      = $(PERL) @build_dir@/tools/build/dynpmc.pl
++OPSBUILD      = $(PERL) @build_dir@/tools/build/dynoplibs.pl
++O             = @o@
++LOAD_EXT      = @load_ext@
++
++#IF(parrot_is_shared and !(cygwin|win32)):export LD_RUN_PATH := @blib_dir@:$(LD_RUN_PATH)
++PARROT        = ../../parrot@exe@
++PBC_TO_EXE    = ../../pbc_to_exe@exe@
++RECONFIGURE   = $(PERL) $(BUILD_DIR)/tools/dev/reconfigure.pl
++
++## places to look for things
++BUILD_DIR     = @build_dir@
++BIN_DIR       = @bin_dir@
++LIB_DIR       = @lib_dir@
++DOC_DIR       = @doc_dir@
++MANDIR	      = @mandir@
++
++LIBPATH       = WMLScript
++PMCDIR        = pmc
++OPSDIR        = ops
++PARROT_DYNEXT = $(BUILD_DIR)/runtime/parrot/dynext
++PARROT_LIB    = $(BUILD_DIR)/runtime/parrot/library
++#IF(darwin):
++#IF(darwin):# MACOSX_DEPLOYMENT_TARGET must be defined for OS X compilation/linking
++#IF(darwin):export MACOSX_DEPLOYMENT_TARGET := @osx_version@
+ 
+ SRM=Stack
+ 
+@@ -36,9 +55,10 @@
+  $(PMCDIR)/wmlsbytecode.pmc
+ 
+ OPS_FILES = $(OPSDIR)/wmls.ops
+-
+ OPSLIB    = wmls
+ 
++CMDS = wmls2pir wmls2pbc wmlsd wmlsi
++
+ PBCS = \
+  $(LIBPATH)/wmlslang.pbc \
+  $(LIBPATH)/wmlsfloat.pbc \
+@@ -49,12 +69,23 @@
+  src/opcode.pir \
+  src/stdlibs.pir
+ 
+-all: \
++DOCS = \
++ MAINTAINER doc/running.pod doc/status.pod
++
++build: \
+  pmc/wmls_group$(LOAD_EXT) \
+  ops/wmls_ops$(LOAD_EXT) \
+- src/WMLScript.pbc \
++ WMLScript.pbc \
+  $(PBCS)
+ 
++all: \
++ pmc/wmls_group$(LOAD_EXT) \
++ ops/wmls_ops$(LOAD_EXT) \
++ WMLScript.pbc \
++ Makefile \
++ $(PBCS) \
++ wmls2pir@exe@ wmls2pbc@exe@ wmlsd@exe@ wmlsi@exe@ installable
++
+ pmc/wmls_group$(LOAD_EXT) : $(PMC_FILES)
+ 	@cd $(PMCDIR) && $(PMCBUILD) generate $(PMCS)
+ 	@cd $(PMCDIR) && $(PMCBUILD) compile $(PMCS)
+@@ -67,9 +98,9 @@
+ 	@cd $(OPSDIR) && $(OPSBUILD) linklibs $(OPSLIB)
+ 	@cd $(OPSDIR) && $(OPSBUILD) copy "--destination=$(PARROT_DYNEXT)" $(OPSLIB)
+ 
+-src/WMLScript.pbc: src/WMLScript.pir \
++WMLScript.pbc: src/WMLScript.pir \
+  src/script.pir src/wmlsstdlibs.pir $(GEN_PIR)
+-	$(PARROT) -o src/WMLScript.pbc src/WMLScript.pir
++	$(PARROT) -o WMLScript.pbc src/WMLScript.pir
+ 
+ src/opcode.pir: src/translation.rules build/translator.pl \
+  build/SRM/Stack.pm build/SRM/Register.pm
+@@ -91,6 +122,67 @@
+ $(LIBPATH)/wmlsconsole.pbc: $(LIBPATH)/wmlsconsole.pir
+ 	$(PARROT) --output=$(LIBPATH)/wmlsconsole.pbc $(LIBPATH)/wmlsconsole.pir
+ 
++# regenerate the Makefile
++Makefile: config/makefiles/root.in
++	cd $(BUILD_DIR) && $(RECONFIGURE) --step=gen::languages --languages=$(HLLNAME)
++
++wmls2pir.pbc: wmls2pir.pir
++	$(PARROT) --output=$@ wmls2pir.pir
++
++wmls2pbc.pbc: wmls2pbc.pir
++	$(PARROT) --output=$@ wmls2pbc.pir
++
++wmlsd.pbc: wmlsd.pir
++	$(PARROT) --output=$@ wmlsd.pir
++
++wmlsi.pbc: wmlsi.pir
++	$(PARROT) --output=$@ wmlsi.pir
++
++wmls2pir@exe@: wmls2pir.pbc
++	$(PBC_TO_EXE) wmls2pir.pbc
++
++wmls2pbc@exe@: wmls2pbc.pbc
++	$(PBC_TO_EXE) wmls2pbc.pbc
++
++wmlsd@exe@: wmlsd.pbc
++	$(PBC_TO_EXE) wmlsd.pbc
++
++wmlsi@exe@: wmlsi.pbc
++	$(PBC_TO_EXE) wmlsi.pbc
++
++installable_wmls2pir@exe@: wmls2pir.pbc
++	$(PBC_TO_EXE) wmls2pir.pbc --install
++
++installable_wmls2pbc@exe@: wmls2pbc.pbc
++	$(PBC_TO_EXE) wmls2pbc.pbc --install
++
++installable_wmlsd@exe@: wmlsd.pbc
++	$(PBC_TO_EXE) wmlsd.pbc --install
++
++installable_wmlsi@exe@: wmlsi.pbc
++	$(PBC_TO_EXE) wmlsi.pbc --install
++
++install : installable
++	$(CP) installable_wmls2pir@exe@ $(DESTDIR)$(BIN_DIR)/parrot-wmls2pir@exe@
++	$(CP) installable_wmls2pbc@exe@ $(DESTDIR)$(BIN_DIR)/parrot-wmls2pbc@exe@
++	$(CP) installable_wmlsd@exe@ $(DESTDIR)$(BIN_DIR)/parrot-wmlsd@exe@
++	$(CP) installable_wmlsi@exe@ $(DESTDIR)$(BIN_DIR)/parrot-wmlsi@exe@
++	$(CP) $(HLLNAME).pbc $(DESTDIR)$(LIB_DIR)/parrot/library/$(HLLNAME).pbc
++	$(MKPATH) $(DESTDIR)$(LIB_DIR)/parrot/library/$(HLLNAME)
++	$(CP) $(PBCS) $(DESTDIR)$(LIB_DIR)/parrot/library/$(HLLNAME)
++	@cd $(PMCDIR) && $(PMCBUILD) copy "--destination=$(DESTDIR)$(LIB_DIR)/parrot/dynext" $(PMCS)
++	@cd $(OPSDIR) && $(OPSBUILD) copy "--destination=$(DESTDIR)$(LIB_DIR)/parrot/dynext" $(OPSLIB)
++	$(POD2MAN) doc/running.pod > $(DESTDIR)$(MANDIR)/man1/parrot-wmls.5
++	$(MKPATH) $(DESTDIR)$(DOC_DIR)/languages/$(HLLNAME)
++	$(CP) $(DOCS) $(DESTDIR)$(DOC_DIR)/languages/$(HLLNAME)
++
++installable: installable_wmls2pir@exe@ installable_wmls2pbc@exe@ \
++             installable_wmlsd@exe@ installable_wmlsi@exe@ \
++             $(HLLNAME).pbc $(PBCS)
++	$(CP) $(HLLNAME).pbc $(PARROT_LIB)/$(HLLNAME).pbc
++	-$(MKPATH) $(PARROT_LIB)/$(HLLNAME)
++	$(CP) $(PBCS) $(PARROT_LIB)/$(HLLNAME)
++
+ help:
+ 	@echo ""
+ 	@echo "Following targets are available for the user:"
+@@ -136,7 +228,11 @@
+  "$(OPSDIR)/*.h" \
+  "$(OPSDIR)/*$(LOAD_EXT)" \
+  "$(OPSDIR)/*$(O)" \
+- "$(LIBPATH)/*.pbc"
++ "$(LIBPATH)/*.pbc" \
++  $(PARROT_LIB)/$(HLLNAME).pbc \
++  $(HLLNAME).pbc installable_*@exe@ \
++  wmls2pir@exe@ wmls2pbc@exe@ wmlsd@exe@ wmlsi@exe@ \
++  $(PARROT_LIB)/$(HLLNAME)/*.pbc
+ 
+ clean:
+ 	$(RM_F) $(BUILD_CLEANERS) $(TEST_CLEANERS)
+@@ -146,3 +242,8 @@
+ 
+ distclean: realclean
+ 
++#
++# Local variables:
++# mode: makefile
++# ex: ft=make
++# End:
+--- origsrc/parrot-0.8.2/languages/WMLScript/runtime/wmlsconsole.pir	2008-12-17 06:55:15.000000000 +0000
++++ src/parrot-0.8.2/languages/WMLScript/runtime/wmlsconsole.pir	1970-01-01 00:00:00.000000000 +0000
+@@ -1,101 +0,0 @@
+-# Copyright (C) 2006-2008, The Perl Foundation.
+-# $Id: /mirror/trunk/languages/WMLScript/runtime/wmlsconsole.pir 33752 2008-12-09T18:54:29.527603Z fperrad  $
+-
+-=head1 NAME
+-
+-runtime/wmlsconsole.pir - WMLScript Console library
+-
+-=head1 DESCRIPTION
+-
+-See "WMLScript Reference UP.SDK R4.B3 - October 1999".
+-
+-=head1 FUNCTIONS
+-
+-=cut
+-
+-.HLL 'WMLScript'
+-.loadlib 'wmls_group'
+-.loadlib 'wmls_ops'
+-
+-
+-.sub 'getConsole'
+-    new $P0, 'Hash'
+-
+-    .const 'Sub' _console_print = '_console_print'
+-    $P0[0]  = _console_print
+-    .const 'Sub' _console_println = '_console_println'
+-    $P0[1]  = _console_println
+-
+-    .return ($P0)
+-.end
+-
+-
+-=head2 C<print(string)>
+-
+-=head3 DESCRIPTION
+-
+-
+-=head3 PARAMETERS
+-
+-string = String
+-
+-=head3 RETURN VALUE
+-
+-Number or invalid.
+-
+-=cut
+-
+-.sub '_console_print' :anon
+-    .param pmc str
+-    .local pmc res
+-    $I0 = isa str, 'WmlsInvalid'
+-    if $I0 goto L1
+-    $S0 = str
+-    print $S0
+-    $I0 = length $S0
+-    box res, $I0
+-    goto L2
+-  L1:
+-    new res, 'WmlsInvalid'
+-  L2:
+-    .return (res)
+-.end
+-
+-
+-=head2 C<println(string)>
+-
+-=head3 DESCRIPTION
+-
+-
+-=head3 PARAMETERS
+-
+-string = String
+-
+-=head3 RETURN VALUE
+-
+-Number or invalid.
+-
+-=cut
+-
+-.sub '_console_println' :anon
+-    .param pmc str
+-    .local pmc res
+-    $I0 = isa str, 'WmlsInvalid'
+-    if $I0 goto L1
+-    $S0 = str
+-    say $S0
+-    $I0 = length $S0
+-    box res, $I0
+-    goto L2
+-  L1:
+-    new res, 'WmlsInvalid'
+-  L2:
+-    .return (res)
+-.end
+-
+-
+-# Local Variables:
+-#   mode: pir
+-#   fill-column: 100
+-# End:
+-# vim: expandtab shiftwidth=4 ft=pir:
+--- origsrc/parrot-0.8.2/languages/WMLScript/runtime/wmlsfloat.pir	2008-12-17 06:55:15.000000000 +0000
++++ src/parrot-0.8.2/languages/WMLScript/runtime/wmlsfloat.pir	1970-01-01 00:00:00.000000000 +0000
+@@ -1,355 +0,0 @@
+-# Copyright (C) 2006-2008, The Perl Foundation.
+-# $Id: /mirror/trunk/languages/WMLScript/runtime/wmlsfloat.pir 33686 2008-12-08T15:50:21.922911Z fperrad  $
+-
+-=head1 NAME
+-
+-runtime/wmlsfloat.pir - WMLScript Float library
+-
+-=head1 DESCRIPTION
+-
+-This library contains a set of typical arithmetic floating-point functions that
+-are frequently used by applications.
+-
+-See "WMLScript Standard Libraries Specification", section 8 "Float".
+-
+-=head1 FUNCTIONS
+-
+-=cut
+-
+-.HLL 'WMLScript'
+-.loadlib 'wmls_group'
+-.loadlib 'wmls_ops'
+-
+-
+-.sub 'getFloat'
+-    new $P0, 'Hash'
+-
+-    .const 'Sub' _float_int = '_float_int'
+-    $P0[0]  = _float_int
+-    .const 'Sub' _float_floor = '_float_floor'
+-    $P0[1]  = _float_floor
+-    .const 'Sub' _float_ceil = '_float_ceil'
+-    $P0[2]  = _float_ceil
+-    .const 'Sub' _float_pow = '_float_pow'
+-    $P0[3]  = _float_pow
+-    .const 'Sub' _float_round = '_float_round'
+-    $P0[4]  = _float_round
+-    .const 'Sub' _float_sqrt = '_float_sqrt'
+-    $P0[5]  = _float_sqrt
+-    .const 'Sub' _float_maxFloat = '_float_maxFloat'
+-    $P0[6]  = _float_maxFloat
+-    .const 'Sub' _float_minFloat = '_float_minFloat'
+-    $P0[7]  = _float_minFloat
+-
+-    .return ($P0)
+-.end
+-
+-
+-=head2 C<int(value)>
+-
+-=head3 DESCRIPTION
+-
+-Returns the integer part of the given value. If the value is already an integer,
+-the result is the value itself.
+-
+-=head3 PARAMETERS
+-
+-value = Number
+-
+-=head3 RETURN VALUE
+-
+-Integer or invalid.
+-
+-=cut
+-
+-.sub '_float_int' :anon
+-    .param pmc value
+-    .local pmc res
+-    $P0 = value
+-    $I0 = isa value, 'WmlsString'
+-    unless $I0 goto L1
+-    $P0 = value.'parseNumber'()
+-  L1:
+-    $I0 = isa $P0, 'WmlsInvalid'
+-    if $I0 goto L2
+-    $I0 = $P0
+-    box res, $I0
+-    goto L3
+-  L2:
+-    new res, 'WmlsInvalid'
+-  L3:
+-    .return (res)
+-.end
+-
+-
+-=head2 C<floor(value)>
+-
+-=head3 DESCRIPTION
+-
+-Returns the greatest integer value that is not greater than the given value. If
+-the value is already an integer, the result is the value itself.
+-
+-=head3 PARAMETERS
+-
+-value = Number
+-
+-=head3 RETURN VALUE
+-
+-Integer or invalid.
+-
+-=cut
+-
+-.sub '_float_floor' :anon
+-    .param pmc value
+-    .local pmc res
+-    $P0 = value
+-    $I0 = isa value, 'WmlsString'
+-    unless $I0 goto L1
+-    $P0 = value.'parseNumber'()
+-  L1:
+-    $I0 = isa $P0, 'WmlsInvalid'
+-    if $I0 goto L2
+-    $N0 = $P0
+-    $I0 = floor $N0
+-    box res, $I0
+-    goto L3
+-  L2:
+-    new res, 'WmlsInvalid'
+-  L3:
+-    .return (res)
+-.end
+-
+-
+-=head2 C<ceil(value)>
+-
+-=head3 DESCRIPTION
+-
+-Returns the smallest integer value that is not less than the given value. If
+-the value is already an integer, the result is the value itself.
+-
+-=head3 PARAMETERS
+-
+-value = Number
+-
+-=head3 RETURN VALUE
+-
+-Integer or invalid.
+-
+-=cut
+-
+-.sub '_float_ceil' :anon
+-    .param pmc value
+-    .local pmc res
+-    $P0 = value
+-    $I0 = isa value, 'WmlsString'
+-    unless $I0 goto L1
+-    $P0 = value.'parseNumber'()
+-  L1:
+-    $I0 = isa $P0, 'WmlsInvalid'
+-    if $I0 goto L2
+-    $N0 = $P0
+-    $I0 = ceil $N0
+-    box res, $I0
+-    goto L3
+-  L2:
+-    new res, 'WmlsInvalid'
+-  L3:
+-    .return (res)
+-.end
+-
+-
+-=head2 C<pow(value1, value2)>
+-
+-=head3 DESCRIPTION
+-
+-Returns an implementation-dependent approximation to the result of raising
+-value1 to the power of value2. If value1 is a negative number then value2
+-must be an integer.
+-
+-=head3 PARAMETERS
+-
+-value1 = Number
+-
+-value2 = Number
+-
+-=head3 RETURN VALUE
+-
+-Floating-point or invalid.
+-
+-=head3 EXCEPTIONS
+-
+-If value1 == 0 and value2 < 0 then C<invalid> is returned.
+-
+-If value1 < 0 and value2 is not an integer then C<invalid> is returned.
+-
+-=cut
+-
+-.sub '_float_pow' :anon
+-    .param pmc value1
+-    .param pmc value2
+-    .local pmc res
+-    $P1 = value1
+-    $I0 = isa value1, 'WmlsString'
+-    unless $I0 goto L1
+-    $P1 = value1.'parseNumber'()
+-  L1:
+-    $I0 = isa $P1, 'WmlsInvalid'
+-    if $I0 goto L2
+-    $N1 = $P1
+-    $P2 = value2
+-    $I0 = isa value2, 'WmlsString'
+-    unless $I0 goto L3
+-    $P2 = value2.'parseNumber'()
+-  L3:
+-    $I0 = isa $P2, 'WmlsInvalid'
+-    if $I0 goto L2
+-    $N2 = $P2
+-    unless $N1 == 0.0 goto L4
+-    if $N2 < 0.0 goto L2
+-    box res, 0.0
+-    goto L5
+-  L4:
+-    unless $N1 < 0.0 goto L6
+-    $I0 = isa $P2, 'WmlsFloat'
+-    if $I0 goto L2
+-  L6:
+-    $N0 = pow $N1, $N2
+-    box res, $N0
+-    goto L5
+-  L2:
+-    new res, 'WmlsInvalid'
+-  L5:
+-    .return (res)
+-.end
+-
+-
+-=head2 C<round(value)>
+-
+-=head3 DESCRIPTION
+-
+-Returns the number value that is closest to the given value and is equal to a
+-mathematical integer. If two integer number values are equally close to the
+-value, the result is the larger number value. If the value is already an
+-integer, the result is the value itself.
+-
+-=head3 PARAMETERS
+-
+-value = Number
+-
+-=head3 RETURN VALUE
+-
+-Integer or invalid.
+-
+-=cut
+-
+-.sub '_float_round' :anon
+-    .param pmc value
+-    .local pmc res
+-    $P0 = value
+-    $I0 = isa value, 'WmlsString'
+-    unless $I0 goto L1
+-    $P0 = value.'parseNumber'()
+-  L1:
+-    $I0 = isa $P0, 'WmlsInvalid'
+-    if $I0 goto L2
+-    $N0 = $P0
+-    $N0 += 0.5
+-    $I0 = floor $N0
+-    box res, $I0
+-    goto L3
+-  L2:
+-    new res, 'WmlsInvalid'
+-  L3:
+-    .return (res)
+-.end
+-
+-
+-=head2 C<sqrt(value)>
+-
+-=head3 DESCRIPTION
+-
+-Returns an implementation-dependent approximation to the square root of
+-the given value.
+-
+-=head3 PARAMETERS
+-
+-value = Floating-point
+-
+-=head3 RETURN VALUE
+-
+-Floating-point or invalid.
+-
+-=head3 EXCEPTIONS
+-
+-If value is a negative number then invalid is returned.
+-
+-=cut
+-
+-.sub '_float_sqrt' :anon
+-    .param pmc value
+-    .local pmc res
+-    $P0 = value
+-    $I0 = isa value, 'WmlsString'
+-    unless $I0 goto L1
+-    $P0 = value.'parseNumber'()
+-  L1:
+-    $I0 = isa $P0, 'WmlsInvalid'
+-    if $I0 goto L2
+-    $N0 = $P0
+-    if $N0 < 0.0 goto L2
+-    $N1 = sqrt $N0
+-    box res, $N1
+-    goto L3
+-  L2:
+-    new res, 'WmlsInvalid'
+-  L3:
+-    .return (res)
+-.end
+-
+-
+-=head2 C<maxFloat()>
+-
+-=head3 DESCRIPTION
+-
+-Returns the maximum floating-point value supported by [IEEE754] single
+-precision floating-point format.
+-
+-=head3 RETURN VALUE
+-
+-Floating-point 3.40282347e+38.
+-
+-=cut
+-
+-.sub '_float_maxFloat' :anon
+-    .local pmc res
+-    box res, 3.40282347e+38
+-    .return (res)
+-.end
+-
+-
+-=head2 C<minFloat()>
+-
+-=head3 DESCRIPTION
+-
+-Returns the smallest nonzero floating-point value supported by [IEEE754]
+-single precision floating-point format.
+-
+-=head3 RETURN VALUE
+-
+-Floating-point. Smaller than or equal to the normalised minimum single
+-precision floating-point value: 1.17549435e-38.
+-
+-=cut
+-
+-.sub '_float_minFloat' :anon
+-    .local pmc res
+-    box res, 1.17549435e-38
+-    .return (res)
+-.end
+-
+-
+-# Local Variables:
+-#   mode: pir
+-#   fill-column: 100
+-# End:
+-# vim: expandtab shiftwidth=4 ft=pir:
+--- origsrc/parrot-0.8.2/languages/WMLScript/runtime/wmlslang.pir	2008-12-17 06:55:15.000000000 +0000
++++ src/parrot-0.8.2/languages/WMLScript/runtime/wmlslang.pir	1970-01-01 00:00:00.000000000 +0000
+@@ -1,663 +0,0 @@
+-# Copyright (C) 2006-2008, The Perl Foundation.
+-# $Id: /mirror/trunk/languages/WMLScript/runtime/wmlslang.pir 33686 2008-12-08T15:50:21.922911Z fperrad  $
+-
+-=head1 NAME
+-
+-runtime/wmlslang.pir - WMLScript Lang library
+-
+-=head1 DESCRIPTION
+-
+-This library contains a set of functions that are closely related to the
+-WMLScript language core.
+-
+-See "WMLScript Standard Libraries Specification", section 7 "Lang".
+-
+-=head1 FUNCTIONS
+-
+-=cut
+-
+-.HLL 'WMLScript'
+-.loadlib 'wmls_group'
+-.loadlib 'wmls_ops'
+-
+-
+-.sub 'getLang'
+-    new $P0, 'Hash'
+-
+-    .const 'Sub' _lang_abs = '_lang_abs'
+-    $P0[0]  = _lang_abs
+-    .const 'Sub' _lang_min = '_lang_min'
+-    $P0[1]  = _lang_min
+-    .const 'Sub' _lang_max = '_lang_max'
+-    $P0[2]  = _lang_max
+-    .const 'Sub' _lang_parseInt = '_lang_parseInt'
+-    $P0[3]  = _lang_parseInt
+-    .const 'Sub' _lang_parseFloat = '_lang_parseFloat'
+-    $P0[4]  = _lang_parseFloat
+-    .const 'Sub' _lang_isInt = '_lang_isInt'
+-    $P0[5]  = _lang_isInt
+-    .const 'Sub' _lang_isFloat = '_lang_isFloat'
+-    $P0[6]  = _lang_isFloat
+-    .const 'Sub' _lang_maxInt = '_lang_maxInt'
+-    $P0[7]  = _lang_maxInt
+-    .const 'Sub' _lang_minInt = '_lang_minInt'
+-    $P0[8]  = _lang_minInt
+-    .const 'Sub' _lang_float = '_lang_float'
+-    $P0[9]  = _lang_float
+-    .const 'Sub' _lang_exit = '_lang_exit'
+-    $P0[10] = _lang_exit
+-    .const 'Sub' _lang_abort = '_lang_abort'
+-    $P0[11] = _lang_abort
+-    .const 'Sub' _lang_random = '_lang_random'
+-    $P0[12] = _lang_random
+-    .const 'Sub' _lang_seed = '_lang_seed'
+-    $P0[13] = _lang_seed
+-    .const 'Sub' _lang_characterSet = '_lang_characterSet'
+-    $P0[14] = _lang_characterSet
+-
+-    .return ($P0)
+-.end
+-
+-
+-=head2 C<abs(value)>
+-
+-=head3 DESCRIPTION
+-
+-Returns the absolute value of the given number. If the given number is of
+-type integer then an integer value is returned. If the given number is of type
+-floating-point then a floating-point value is returned.
+-
+-=head3 PARAMETERS
+-
+-value = Number
+-
+-=head3 RETURN VALUE
+-
+-Number or invalid.
+-
+-=cut
+-
+-.sub '_lang_abs' :anon
+-    .param pmc value
+-    .local pmc res
+-    res = clone value
+-    res = abs value
+-    .return (res)
+-.end
+-
+-
+-=head2 C<min(value1, value2)>
+-
+-=head3 DESCRIPTION
+-
+-Returns the minimum value of the given two numbers. The value and type
+-returned is the same as the value and type of the selected number. The
+-selection is done in the following way:
+-
+-=over 4
+-
+-=item *
+-
+-WMLScript operator data type conversion rules for I<integers and
+-floating-points> (see [WMLScript]) must be used to specify the data
+-type (integer or floating-point ) for comparison.
+-
+-=item *
+-
+-Compare the numbers to select the smaller one.
+-
+-=item *
+-
+-If the values are equal then the first value is selected.
+-
+-=back
+-
+-=head3 PARAMETERS
+-
+-value1 = Number
+-
+-value2 = Number
+-
+-=head3 RETURN VALUE
+-
+-Number or invalid.
+-
+-=cut
+-
+-.sub '_lang_min' :anon
+-    .param pmc value1
+-    .param pmc value2
+-    .local pmc res
+-    $P1 = value1
+-    $I0 = isa value1, 'WmlsString'
+-    unless $I0 goto L1
+-    $P1 = value1.'parseNumber'()
+-  L1:
+-    $P2 = value2
+-    $I0 = isa value2, 'WmlsString'
+-    unless $I0 goto L2
+-    $P2 = value2.'parseNumber'()
+-  L2:
+-    $P0 = isle $P1, $P2
+-    $I0 = isa $P0, 'WmlsInvalid'
+-    unless $I0 goto L3
+-    .return ($P0)
+-  L3:
+-    $I0 = $P0
+-    unless $I0 goto L4
+-    res = clone value1
+-    goto L5
+-  L4:
+-    res = clone value2
+-  L5:
+-    .return (res)
+-.end
+-
+-
+-=head2 C<max(value1, value2)>
+-
+-=head3 DESCRIPTION
+-
+-Returns the maximum value of the given two numbers. The value and type
+-returned is the same as the value and type of the selected number. The
+-selection is done in the following way:
+-
+-=over 4
+-
+-=item *
+-
+-WMLScript operator data type conversion rules for I<integers and
+-floating-points> (see [WMLScript]) must be used to specify the data
+-type (integer or floating-point ) for comparison.
+-
+-=item *
+-
+-Compare the numbers to select the larger one.
+-
+-=item *
+-
+-If the values are equal then the first value is selected.
+-
+-=back
+-
+-=head3 PARAMETERS
+-
+-value1 = Number
+-
+-value2 = Number
+-
+-=head3 RETURN VALUE
+-
+-Number or invalid.
+-
+-=cut
+-
+-.sub '_lang_max' :anon
+-    .param pmc value1
+-    .param pmc value2
+-    .local pmc res
+-    $P1 = value1
+-    $I0 = isa value1, 'WmlsString'
+-    unless $I0 goto L1
+-    $P1 = value1.'parseNumber'()
+-  L1:
+-    $P2 = value2
+-    $I0 = isa value2, 'WmlsString'
+-    unless $I0 goto L2
+-    $P2 = value2.'parseNumber'()
+-  L2:
+-    $P0 = isge $P1, $P2
+-    $I0 = isa $P0, 'WmlsInvalid'
+-    unless $I0 goto L3
+-    .return ($P0)
+-  L3:
+-    $I0 = $P0
+-    unless $I0 goto L4
+-    res = clone value1
+-    goto L5
+-  L4:
+-    res = clone value2
+-  L5:
+-    .return (res)
+-.end
+-
+-
+-=head2 C<parseInt(value)>
+-
+-=head3 DESCRIPTION
+-
+-Returns an integer value defined by the string value. The legal integer
+-syntax is specified by the WMLScript (see [WMLScript]) numeric string
+-grammar for I<decimal integer literals> with the following additional parsing
+-rule:
+-
+-=over 4
+-
+-=item *
+-
+-Parsing ends when the first character is encountered that is not a
+-leading '+' or '-' or a decimal digit.
+-
+-=back
+-
+-The result is the parsed string converted to an integer value.
+-
+-=head3 PARAMETERS
+-
+-value = String
+-
+-=head3 RETURN VALUE
+-
+-Integer or invalid.
+-
+-=head3 EXCEPTIONS
+-
+-In case of a parsing error an C<invalid> value is returned.
+-
+-=cut
+-
+-.sub '_lang_parseInt' :anon
+-    .param pmc value
+-    .local pmc res
+-    $I0 = isa value, 'WmlsString'
+-    unless $I0 goto L1
+-    res = value.'parseInt'()
+-    .return (res)
+-  L1:
+-    res = value
+-    $I0 = isa value, 'WmlsInteger'
+-    if $I0 goto L2
+-    new res, 'WmlsInvalid'
+-  L2:
+-    .return (res)
+-.end
+-
+-
+-=head2 C<parseFloat(value)>
+-
+-=head3 DESCRIPTION
+-
+-Returns a floating-point value defined by the string value. The legal floatingpoint
+-syntax is specified by the WMLScript (see [WMLScript]) numeric
+-string grammar for I<decimal floating-point literals> with the following additional
+-parsing rule:
+-
+-=over 4
+-
+-=item *
+-
+-Parsing ends when the first character is encountered that cannot
+-be parsed as being part of the floating-point representation.
+-
+-=back
+-
+-The result is the parsed string converted to a floating-point value.
+-
+-=head3 PARAMETERS
+-
+-value = String
+-
+-=head3 RETURN VALUE
+-
+-Floating-point or invalid.
+-
+-=head3 EXCEPTIONS
+-
+-In case of a parsing error an C<invalid> value is returned.
+-
+-=cut
+-
+-.sub '_lang_parseFloat' :anon
+-    .param pmc value
+-    .local pmc res
+-    $I0 = isa value, 'WmlsString'
+-    unless $I0 goto L1
+-    res = value.'parseFloat'()
+-    .return (res)
+-  L1:
+-    res = value
+-    $I0 = isa value, 'WmlsFloat'
+-    if $I0 goto L2
+-    $I0 = isa value, 'WmlsInteger'
+-    unless $I0 goto L3
+-    $I0 = value
+-    new res, 'WmlsFloat'
+-    set res, $I0
+-    goto L2
+-  L3:
+-    new res, 'WmlsInvalid'
+-  L2:
+-    .return (res)
+-.end
+-
+-
+-=head2 C<isInt(value)>
+-
+-=head3 DESCRIPTION
+-
+-Returns a boolean value that is C<true> if the given value can be converted
+-into an integer number by using parseInt(value). Otherwise C<false> is
+-returned.
+-
+-=head3 PARAMETERS
+-
+-value = Any
+-
+-=head3 RETURN VALUE
+-
+-Boolean or invalid.
+-
+-=cut
+-
+-.sub '_lang_isInt' :anon
+-    .param pmc value
+-    .local pmc res
+-    $I0 = isa value, 'WmlsString'
+-    unless $I0 goto L1
+-    $P0 = value.'parseInt'()
+-    res = defined $P0
+-    .return (res)
+-  L1:
+-    $I0 = isa value, 'WmlsInvalid'
+-    unless $I0 goto L2
+-    new res, 'WmlsInvalid'
+-    .return (res)
+-  L2:
+-    new res, 'WmlsBoolean'
+-    $I0 = isa value, 'WmlsInteger'
+-    set res, $I0
+-    .return (res)
+-.end
+-
+-
+-=head2 C<isFloat(value)>
+-
+-=head3 DESCRIPTION
+-
+-Returns a boolean value that is C<true> if the given value can be converted
+-into a floating-point number using parseFloat(value). Otherwise C<false> is
+-returned.
+-
+-=head3 PARAMETERS
+-
+-value = Any
+-
+-=head3 RETURN VALUE
+-
+-Boolean or invalid.
+-
+-=cut
+-
+-.sub '_lang_isFloat' :anon
+-    .param pmc value
+-    .local pmc res
+-    $I0 = isa value, 'WmlsString'
+-    unless $I0 goto L1
+-    $P0 = value.'parseFloat'()
+-    res = defined $P0
+-    .return (res)
+-  L1:
+-    $I0 = isa value, 'WmlsInvalid'
+-    unless $I0 goto L2
+-    new res, 'WmlsInvalid'
+-    .return (res)
+-  L2:
+-    new res, 'WmlsBoolean'
+-    $I0 = isa value, 'WmlsFloat'
+-    set res, $I0
+-    if $I0 goto L3
+-    $I0 = isa value, 'WmlsInteger'
+-    set res, $I0
+-  L3:
+-    .return (res)
+-.end
+-
+-
+-=head2 C<maxInt()>
+-
+-=head3 DESCRIPTION
+-
+-Returns the maximum integer value.
+-
+-=head3 RETURN VALUE
+-
+-Integer 2147483647.
+-
+-=cut
+-
+-.sub '_lang_maxInt' :anon
+-    .local pmc res
+-    box res, 2147483647
+-    .return (res)
+-.end
+-
+-
+-=head2 C<minInt()>
+-
+-=head3 DESCRIPTION
+-
+-Returns the minimum integer value.
+-
+-=head3 RETURN VALUE
+-
+-Integer -2147483648.
+-
+-=cut
+-
+-.sub '_lang_minInt' :anon
+-    .local pmc res
+-    box res, -2147483648
+-    .return (res)
+-.end
+-
+-
+-=head2 C<float()>
+-
+-=head3 DESCRIPTION
+-
+-Returns true if floating-points are supported and false if not.
+-
+-=head3 RETURN VALUE
+-
+-Boolean.
+-
+-=cut
+-
+-.sub '_lang_float' :anon
+-    .local pmc res
+-    new res, 'WmlsBoolean'
+-    set res, 1
+-    .return (res)
+-.end
+-
+-
+-=head2 C<exit(value)>
+-
+-=head3 DESCRIPTION
+-
+-Ends the interpretation of the WMLScript bytecode and returns the control
+-back to the caller of the WMLScript interpreter with the given return value.
+-This function can be used to perform a normal exit from a function in cases
+-where the execution of the WMLScript bytecode should be discontinued.
+-
+-=head3 PARAMETERS
+-
+-value = Any
+-
+-=head3 RETURN VALUE
+-
+-None (this function ends the interpretation).
+-
+-=cut
+-
+-.sub '_lang_exit' :anon
+-    .param pmc value
+-    .local pmc res
+-    $I0 = isa value, 'WmlsString'
+-    unless $I0 goto L1
+-    $P0 = value.'parseInt'()
+-    $I0 = $P0
+-    exit $I0
+-  L1:
+-    $I0 = value
+-    exit $I0
+-.end
+-
+-
+-=head2 C<abort(errorDescription)>
+-
+-=head3 DESCRIPTION
+-
+-Aborts the interpretation of the WMLScript bytecode and returns the control
+-back to the caller of the WMLScript interpreter with the return
+-errorDescription. This function can be used to perform an abnormal exit in
+-cases where the execution of the WMLScript should be discontinued due to
+-serious errors detected by the program. If the type of the errorDescription is
+-invalid, string "invalid" is used as the errorDescription instead.
+-
+-=head3 PARAMETERS
+-
+-errorDescription = String
+-
+-=head3 RETURN VALUE
+-
+-None (this function aborts the interpretation).
+-
+-=cut
+-
+-.sub '_lang_abort' :anon
+-    .param pmc value
+-    die value
+-.end
+-
+-
+-=head2 C<random(value)>
+-
+-=head3 DESCRIPTION
+-
+-Returns an integer value with positive sign that is greater than or equal to 0
+-but less than or equal to the given value. The return value is chosen
+-randomly or pseudo-randomly with approximately uniform distribution over
+-that range, using an implementation-dependent algorithm or strategy.
+-
+-If the value is of type floating-point, Float.int() is first used to calculate the
+-actual integer value.
+-
+-=head3 PARAMETERS
+-
+-value = Number
+-
+-=head3 RETURN VALUE
+-
+-Integer or invalid.
+-
+-=head3 EXCEPTIONS
+-
+-If value is equal to zero (0), the function returns zero.
+-
+-If value is less than zero (0), the function returns C<invalid>.
+-
+-=cut
+-
+-.sub '_lang_random' :anon
+-    .param pmc value
+-    .local pmc res
+-    $P0 = value
+-    $I0 = isa value, 'WmlsString'
+-    unless $I0 goto L1
+-    $P0 = value.'parseNumber'()
+-  L1:
+-    $I0 = isa $P0, 'WmlsInvalid'
+-    if $I0 goto L2
+-    $I0 = $P0
+-    if $I0 < 0 goto L2
+-    new $P0, 'Random'
+-    $N0 = $P0
+-    $N0 = mul $I0
+-    $I0 = $N0
+-    box res, $I0
+-    goto L3
+-  L2:
+-    new res, 'WmlsInvalid'
+-  L3:
+-    .return (res)
+-.end
+-
+-
+-=head2 C<seed(value)>
+-
+-=head3 DESCRIPTION
+-
+-Initialises the pseudo-random number sequence and returns an empty
+-string. If the value is zero or a positive integer then the given value is used
+-for initialisation, otherwise a random, system dependent initialisation value
+-is used. A seed value of greater than or equal to zero results in a repeatable
+-sequence of pseudo-random numbers. A seed value of less than zero
+-results in a non-repeatable sequence of random numbers.
+-
+-If the value is of type floating-point, Float.int() is first used to calculate the
+-actual integer value. . If the value is non-numeric, invalid is returned and the
+-current seed is unchanged.
+-
+-=head3 PARAMETERS
+-
+-value = Number
+-
+-=head3 RETURN VALUE
+-
+-String or invalid.
+-
+-=cut
+-
+-.sub '_lang_seed' :anon
+-    .param pmc value
+-    .local pmc res
+-    $P0 = value
+-    $I0 = isa value, 'WmlsString'
+-    unless $I0 goto L1
+-    $P0 = value.'parseNumber'()
+-  L1:
+-    $I0 = isa $P0, 'WmlsInvalid'
+-    if $I0 goto L2
+-    $I0 = $P0
+-    if $I0 >= 0 goto L3
+-    $I0 = time
+-  L3:
+-    new $P0, 'Random'
+-    $P0 = $I0
+-    new res, 'WmlsString'
+-    set res, ''
+-    goto L4
+-  L2:
+-    new res, 'WmlsInvalid'
+-  L4:
+-    .return (res)
+-.end
+-
+-
+-=head2 C<characterSet()>
+-
+-=head3 DESCRIPTION
+-
+-Returns the character set supported by the WMLScript Interpreter. The
+-return value is an integer that denotes a MIBEnum value assigned by the
+-IANA for all character sets (see [WSP] for more information).
+-
+-=head3 RETURN VALUE
+-
+-Integer.
+-
+-=cut
+-
+-.sub '_lang_characterSet' :anon
+-    .local pmc res
+-    box res, 4     # latin1
+-    .return (res)
+-.end
+-
+-
+-# Local Variables:
+-#   mode: pir
+-#   fill-column: 100
+-# End:
+-# vim: expandtab shiftwidth=4 ft=pir:
+--- origsrc/parrot-0.8.2/languages/WMLScript/runtime/wmlsstring.pir	2008-12-17 06:55:15.000000000 +0000
++++ src/parrot-0.8.2/languages/WMLScript/runtime/wmlsstring.pir	1970-01-01 00:00:00.000000000 +0000
+@@ -1,1101 +0,0 @@
+-# Copyright (C) 2006-2008, The Perl Foundation.
+-# $Id: /mirror/trunk/languages/WMLScript/runtime/wmlsstring.pir 33686 2008-12-08T15:50:21.922911Z fperrad  $
+-
+-=head1 NAME
+-
+-runtime/wmlsstring.pir - WMLScript String library
+-
+-=head1 DESCRIPTION
+-
+-This library contains a set of string functions. A string is an array of
+-characters. Each of the characters has an index. The first character in a
+-string has an index zero (0). The length of the string is the number of
+-characters in the array.
+-
+-The user of the String library can specify a special separator by which
+-elements in a string can be separated. These elements can be accessed
+-by specifying the separator and the element index. The first element in a
+-string has an index zero (0). Each occurrence of the separator in the string
+-separates two elements (no escaping of separators is allowed).
+-
+-A White space character is one of the following characters:
+-
+-=over 4
+-
+-=item * TAB : Horizontal Tabulation
+-
+-=item * VT : Vertical Tabulation
+-
+-=item * FF : Form Feed
+-
+-=item * SP : Space
+-
+-=item * LF : Line Feed
+-
+-=item * CR : Carriage Return
+-
+-=back
+-
+-See "WMLScript Standard Libraries Specification", section 9 "String".
+-
+-=head1 FUNCTIONS
+-
+-=cut
+-
+-.HLL 'WMLScript'
+-.loadlib 'wmls_group'
+-.loadlib 'wmls_ops'
+-
+-
+-.sub 'getString'
+-    new $P0, 'Hash'
+-
+-    .const 'Sub' _string_length = '_string_length'
+-    $P0[0]  = _string_length
+-    .const 'Sub' _string_isEmpty = '_string_isEmpty'
+-    $P0[1]  = _string_isEmpty
+-    .const 'Sub' _string_charAt = '_string_charAt'
+-    $P0[2]  = _string_charAt
+-    .const 'Sub' _string_subString = '_string_subString'
+-    $P0[3]  = _string_subString
+-    .const 'Sub' _string_find = '_string_find'
+-    $P0[4]  = _string_find
+-    .const 'Sub' _string_replace = '_string_replace'
+-    $P0[5]  = _string_replace
+-    .const 'Sub' _string_elements = '_string_elements'
+-    $P0[6]  = _string_elements
+-    .const 'Sub' _string_elementAt = '_string_elementAt'
+-    $P0[7]  = _string_elementAt
+-    .const 'Sub' _string_removeAt = '_string_removeAt'
+-    $P0[8]  = _string_removeAt
+-    .const 'Sub' _string_replaceAt = '_string_replaceAt'
+-    $P0[9]  = _string_replaceAt
+-    .const 'Sub' _string_insertAt = '_string_insertAt'
+-    $P0[10] = _string_insertAt
+-    .const 'Sub' _string_squeeze = '_string_squeeze'
+-    $P0[11] = _string_squeeze
+-    .const 'Sub' _string_trim = '_string_trim'
+-    $P0[12] = _string_trim
+-    .const 'Sub' _string_compare = '_string_compare'
+-    $P0[13] = _string_compare
+-    .const 'Sub' _string_toString = '_string_toString'
+-    $P0[14] = _string_toString
+-    .const 'Sub' _string_format = '_string_format'
+-    $P0[15] = _string_format
+-
+-    .return ($P0)
+-.end
+-
+-
+-=head2 C<length(string)>
+-
+-=head3 DESCRIPTION
+-
+-Returns the length (number of characters) of the given string.
+-
+-=head3 PARAMETERS
+-
+-string = String
+-
+-=head3 RETURN VALUE
+-
+-Integer or invalid.
+-
+-=cut
+-
+-.sub '_string_length' :anon
+-    .param pmc str
+-    .local pmc res
+-    $I0 = isa str, 'WmlsInvalid'
+-    if $I0 goto L1
+-    $S1 = str
+-    $I1 = length $S1
+-    box res, $I1
+-    .return (res)
+-  L1:
+-    new res, 'WmlsInvalid'
+-    .return (res)
+-.end
+-
+-
+-=head2 C<isEmpty(string)>
+-
+-=head3 DESCRIPTION
+-
+-Returns a boolean true if the string length is zero and boolean false
+-otherwise.
+-
+-=head3 PARAMETERS
+-
+-string = String
+-
+-=head3 RETURN VALUE
+-
+-Boolean or invalid.
+-
+-=cut
+-
+-.sub '_string_isEmpty' :anon
+-    .param pmc str
+-    .local pmc res
+-    $I0 = isa str, 'WmlsInvalid'
+-    if $I0 goto L1
+-    $S1 = str
+-    $I1 = length $S1
+-    new res, 'WmlsBoolean'
+-    set res, 0
+-    if $I1 goto L2
+-    set res, 1
+-  L2:
+-    .return (res)
+-  L1:
+-    new res, 'WmlsInvalid'
+-    .return (res)
+-.end
+-
+-
+-=head2 C<charAt(string, index)>
+-
+-=head3 DESCRIPTION
+-
+-Returns a new string of length one containing the character at the specified
+-index of the given string.
+-
+-If the index is of type floating-point, Float.int() is first used to calculate the
+-actual integer index.
+-
+-=head3 PARAMETERS
+-
+-string = String
+-
+-index = Number (the index of the character to be returned)
+-
+-=head3 RETURN VALUE
+-
+-String or invalid.
+-
+-=head3 EXCEPTIONS
+-
+-If index is out of range then an empty string (C<"">) is returned.
+-
+-=cut
+-
+-.sub '_string_charAt' :anon
+-    .param pmc str
+-    .param pmc index_
+-    .local pmc res
+-    $I0 = isa str, 'WmlsInvalid'
+-    if $I0 goto L1
+-    $I0 = isa index_, 'WmlsInteger'
+-    if $I0 goto L2
+-    $I0 = isa index_, 'WmlsFloat'
+-    if $I0 goto L2
+-    goto L1
+-  L2:
+-    $S1 = str
+-    $I1 = length $S1
+-    $I2 = index_
+-    if $I2 < 0 goto L3
+-    if $I2 >= $I1 goto L3
+-    $S0 = substr $S1, $I2, 1
+-    box res, $S0
+-    .return (res)
+-  L3:
+-    new res, 'WmlsString'
+-    .return (res)
+-  L1:
+-    new res, 'WmlsInvalid'
+-    .return (res)
+-.end
+-
+-
+-=head2 C<subString(string, startIndex, length)>
+-
+-=head3 DESCRIPTION
+-
+-Returns a new string that is a substring of the given string. The substring
+-begins at the specified startIndex and its length (number of characters) is
+-the given length. If the startIndex is less than 0 then 0 is used for the
+-startIndex. If the length is larger than the remaining number of characters in
+-the string, the length is replaced with the number of remaining characters.
+-
+-If the startIndex or the length is of type floating-point, Float.int() is first used to
+-calculate the actual integer value.
+-
+-=head3 PARAMETERS
+-
+-string = String
+-
+-startIndex = Number (the beginning index, inclusive)
+-
+-length = Number (the length of the substring)
+-
+-=head3 RETURN VALUE
+-
+-String or invalid.
+-
+-=head3 EXCEPTIONS
+-
+-If startIndex is larger than the last index an empty string (C<"">) is returned.
+-
+-If length <= 0 an empty string (C<"">) is returned.
+-
+-=cut
+-
+-.sub '_string_subString' :anon
+-    .param pmc String
+-    .param pmc startIndex
+-    .param pmc Length
+-    .local pmc res
+-    $I0 = isa String, 'WmlsInvalid'
+-    if $I0 goto L1
+-    $I0 = isa startIndex, 'WmlsInteger'
+-    if $I0 goto L2
+-    $I0 = isa startIndex, 'WmlsFloat'
+-    if $I0 goto L2
+-    goto L1
+-  L2:
+-    $I0 = isa Length, 'WmlsInteger'
+-    if $I0 goto L3
+-    $I0 = isa Length, 'WmlsFloat'
+-    if $I0 goto L3
+-    goto L1
+-  L3:
+-    $S1 = String
+-    $I1 = length $S1
+-    $I2 = startIndex
+-    if $I2 >= 0 goto L4
+-    $I2 = 0
+-  L4:
+-    if $I2 >= $I1 goto L5
+-    $I3 = Length
+-    if $I3 <= 0 goto L5
+-    $S0 = substr $S1, $I2, $I3
+-    box res, $S0
+-    .return (res)
+-  L5:
+-    new res, 'WmlsString'
+-    .return (res)
+-  L1:
+-    new res, 'WmlsInvalid'
+-    .return (res)
+-.end
+-
+-
+-=head2 C<find(string, subString)>
+-
+-=head3 DESCRIPTION
+-
+-Returns the index of the first character in the string that matches the
+-requested subString. If no match is found integer value -1 is returned.
+-
+-Two strings are defined to match when they are identical. Characters with
+-multiple possible representations match only if they have the same
+-representation in both strings. No case folding is performed.
+-
+-=head3 PARAMETERS
+-
+-string = String
+-
+-subString = String
+-
+-=head3 RETURN VALUE
+-
+-Integer or invalid.
+-
+-=head3 EXCEPTIONS
+-
+-If subString is an empty string (C<"">), an invalid value is returned.
+-
+-=cut
+-
+-.sub '_string_find' :anon
+-    .param pmc String
+-    .param pmc subString
+-    .local pmc res
+-    $I0 = isa String, 'WmlsInvalid'
+-    if $I0 goto L1
+-    $I0 = isa subString, 'WmlsInvalid'
+-    if $I0 goto L1
+-    $S1 = String
+-    $S2 = subString
+-    $I2 = length $S2
+-    if $I2 == 0 goto L1
+-    $I0 = index $S1, $S2
+-    box res, $I0
+-    .return (res)
+-  L1:
+-    new res, 'WmlsInvalid'
+-    .return (res)
+-.end
+-
+-
+-=head2 C<replace(string, oldSubString, newSubString)>
+-
+-=head3 DESCRIPTION
+-
+-Returns a new string resulting from replacing all occurrences of
+-oldSubString in this string with newSubString.
+-
+-Two strings are defined to match when they are identical. Characters with
+-multiple possible representations match only if they have the same
+-representation in both strings. No case folding is performed.
+-
+-=head3 PARAMETERS
+-
+-string = String
+-
+-oldSubString = String
+-
+-newSubString = String
+-
+-=head3 RETURN VALUE
+-
+-String or invalid.
+-
+-=head3 EXCEPTIONS
+-
+-If oldSubString is an empty string an C<invalid> value is returned.
+-
+-=cut
+-
+-.sub '_string_replace' :anon
+-    .param pmc String
+-    .param pmc oldSubString
+-    .param pmc newSubString
+-    .local pmc res
+-    $I0 = isa String, 'WmlsInvalid'
+-    if $I0 goto L1
+-    $I0 = isa oldSubString, 'WmlsInvalid'
+-    if $I0 goto L1
+-    $I0 = isa newSubString, 'WmlsInvalid'
+-    if $I0 goto L1
+-    $S1 = String
+-    $S2 = oldSubString
+-    $I2 = length $S2
+-    if $I2 == 0 goto L1
+-    $S3 = newSubString
+-    $P0 = split $S2, $S1
+-    $S0 = join $S3, $P0
+-    box res, $S0
+-    .return (res)
+-  L1:
+-    new res, 'WmlsInvalid'
+-    .return (res)
+-.end
+-
+-
+-=head2 C<elements(string, separator)>
+-
+-=head3 DESCRIPTION
+-
+-Returns the number of elements in the given string separated by the given
+-separator. Empty string ("") is a valid element (thus, this function can never
+-return a value that is less or equal to zero).
+-
+-=head3 PARAMETERS
+-
+-string = String
+-
+-separator = String (the first character of the string used as separator)
+-
+-=head3 RETURN VALUE
+-
+-Integer or invalid.
+-
+-=head3 EXCEPTIONS
+-
+-Returns C<invalid> if the separator is an empty string.
+-
+-=cut
+-
+-.sub '_string_elements' :anon
+-    .param pmc str
+-    .param pmc separator
+-    .local pmc res
+-    $I0 = isa str, 'WmlsInvalid'
+-    if $I0 goto L1
+-    $I0 = isa separator, 'WmlsInvalid'
+-    if $I0 goto L1
+-    $S1 = str
+-    $S2 = separator
+-    $I2 = length $S2
+-    if $I2 == 0 goto L1
+-    $S2 = substr $S2, 0, 1
+-    $I1 = length $S1
+-    if $I1 != 0 goto L2
+-    box res, 1
+-    .return (res)
+-  L2:
+-    $P0 = split $S2, $S1
+-    $I0 = elements $P0
+-    box res, $I0
+-    .return (res)
+-  L1:
+-    new res, 'WmlsInvalid'
+-    .return (res)
+-.end
+-
+-
+-=head2 C<elementAt(string, index, separator)>
+-
+-=head3 DESCRIPTION
+-
+-Search string for index'th element, elements being separated by separator
+-and return the corresponding element. If the index is less than 0 then the first
+-element is returned. If the index is larger than the number of elements then
+-the last element is returned. If the string is an empty string then an empty
+-string is returned.
+-
+-If the index is of type floating-point, Float.int() is first used to calculate the
+-actual index value.
+-
+-=head3 PARAMETERS
+-
+-string = String
+-
+-index = Number (the index of the element to be returned)
+-
+-separator = String (the first character of the string used as separator)
+-
+-=head3 RETURN VALUE
+-
+-String or invalid.
+-
+-=head3 EXCEPTIONS
+-
+-Returns C<invalid> if the separator is an empty string.
+-
+-=cut
+-
+-.sub '_string_elementAt' :anon
+-    .param pmc str
+-    .param pmc index_
+-    .param pmc separator
+-    .local pmc res
+-    $I0 = isa str, 'WmlsInvalid'
+-    if $I0 goto L1
+-    $I0 = isa index_, 'WmlsInteger'
+-    if $I0 goto L2
+-    $I0 = isa index_, 'WmlsFloat'
+-    if $I0 goto L2
+-    goto L1
+-  L2:
+-    $I0 = isa separator, 'WmlsInvalid'
+-    if $I0 goto L1
+-    $S1 = str
+-    $I2 = index_
+-    if $I2 >= 0 goto L3
+-    $I2 = 0
+-  L3:
+-    $S3 = separator
+-    $I3 = length $S3
+-    if $I3 == 0 goto L1
+-    $S3 = substr $S3, 0, 1
+-    $I1 = length $S1
+-    if $I1 != 0 goto L4
+-    new res, 'WmlsString'
+-    .return (res)
+-  L4:
+-    $P0 = split $S3, $S1
+-    $I0 = elements $P0
+-    if $I2 < $I0 goto L5
+-    $I2 = $I0 - 1
+-  L5:
+-    $S0 = $P0[$I2]
+-    box res, $S0
+-    .return (res)
+-  L1:
+-    new res, 'WmlsInvalid'
+-    .return (res)
+-.end
+-
+-
+-=head2 C<removeAt(string, index, separator)>
+-
+-=head3 DESCRIPTION
+-
+-Returns a new string where the element and the corresponding separator (if
+-existing) with the given index are removed from the given string. If the index
+-is less than 0 then the first element is removed. If the index is larger than the
+-number of elements then the last element is removed. If the string is empty,
+-the function returns a new empty string.
+-
+-If the index is of type floating-point, Float.int() is first used to calculate the
+-actual index value.
+-
+-=head3 PARAMETERS
+-
+-string = String
+-
+-index = Number (the index of the element to be deleted)
+-
+-separator = String (the first character of the string used as separator)
+-
+-=head3 RETURN VALUE
+-
+-String or invalid.
+-
+-=head3 EXCEPTIONS
+-
+-Returns C<invalid> if the separator is an empty string.
+-
+-=cut
+-
+-.sub '_string_removeAt' :anon
+-    .param pmc str
+-    .param pmc index_
+-    .param pmc separator
+-    .local pmc res
+-    $I0 = isa str, 'WmlsInvalid'
+-    if $I0 goto L1
+-    $I0 = isa index_, 'WmlsInteger'
+-    if $I0 goto L2
+-    $I0 = isa index_, 'WmlsFloat'
+-    if $I0 goto L2
+-    goto L1
+-  L2:
+-    $I0 = isa separator, 'WmlsInvalid'
+-    if $I0 goto L1
+-    $S1 = str
+-    $I2 = index_
+-    if $I2 >= 0 goto L3
+-    $I2 = 0
+-  L3:
+-    $S3 = separator
+-    $I3 = length $S3
+-    if $I3 == 0 goto L1
+-    $S3 = substr $S3, 0, 1
+-    $I1 = length $S1
+-    if $I1 != 0 goto L4
+-    new res, 'WmlsString'
+-    .return (res)
+-  L4:
+-    $P0 = split $S3, $S1
+-    $I4 = elements $P0
+-    if $I2 < $I4 goto L5
+-    $I2 = $I4 - 1
+-  L5:
+-    dec $I4
+-    new $P1, 'Array'
+-    set $P1, $I4
+-    $I0 = 0
+-    $I1 = 0
+-  L6:
+-    unless $I1 < $I4 goto L7
+-    $S0 = $P0[$I0]
+-    $P1[$I1] = $S0
+-    if $I0 == $I2 goto L8
+-    inc $I1
+-  L8:
+-    inc $I0
+-    goto L6
+-  L7:
+-    $S0 = join $S3, $P1
+-    box res, $S0
+-    .return (res)
+-  L1:
+-    new res, 'WmlsInvalid'
+-    .return (res)
+-.end
+-
+-
+-=head2 C<replaceAt(string, element, index, separator)>
+-
+-=head3 DESCRIPTION
+-
+-Returns a string with the current element at the specified index replaced with
+-the given element. If the index is less than 0 then the first element is
+-replaced. If the index is larger than the number of elements then the last
+-element is replaced. If the string is empty, the function returns a new string
+-with the given element.
+-
+-If the index is of type floating-point, Float.int() is first used to calculate the
+-actual index value.
+-
+-=head3 PARAMETERS
+-
+-string = String
+-
+-element = String
+-
+-index = Number (the index of the element to be replaced)
+-
+-separator = String (the first character of the string used as separator)
+-
+-=head3 RETURN VALUE
+-
+-String or invalid.
+-
+-=head3 EXCEPTIONS
+-
+-Returns C<invalid> if the separator is an empty string.
+-
+-=cut
+-
+-.sub '_string_replaceAt' :anon
+-    .param pmc str
+-    .param pmc element
+-    .param pmc index_
+-    .param pmc separator
+-    .local pmc res
+-    $I0 = isa str, 'WmlsInvalid'
+-    if $I0 goto L1
+-    $I0 = isa element, 'WmlsInvalid'
+-    if $I0 goto L1
+-    $I0 = isa index_, 'WmlsInteger'
+-    if $I0 goto L2
+-    $I0 = isa index_, 'WmlsFloat'
+-    if $I0 goto L2
+-    goto L1
+-  L2:
+-    $I0 = isa separator, 'WmlsInvalid'
+-    if $I0 goto L1
+-    $S1 = str
+-    $S2 = element
+-    $I3 = index_
+-    if $I3 >= 0 goto L3
+-    $I3 = 0
+-  L3:
+-    $S4 = separator
+-    $I4 = length $S4
+-    if $I4 == 0 goto L1
+-    $S4 = substr $S4, 0, 1
+-    $I1 = length $S1
+-    if $I1 != 0 goto L4
+-    box res, $S2
+-    .return (res)
+-  L4:
+-    $P0 = split $S4, $S1
+-    $I0 = elements $P0
+-    if $I3 < $I0 goto L5
+-    $I3 = $I0 - 1
+-  L5:
+-    $P0[$I3] = $S2
+-    $S0 = join $S4, $P0
+-    box res, $S0
+-    .return (res)
+-  L1:
+-    new res, 'WmlsInvalid'
+-    .return (res)
+-.end
+-
+-
+-=head2 C<insertAt(string, element, index, separator)>
+-
+-=head3 DESCRIPTION
+-
+-Returns a string with the element and the corresponding separator (if
+-needed) inserted at the specified element index of the original string. If the
+-index is less than 0 then 0 is used as the index. If the index is larger than the
+-number of elements then the element is appended at the end of the string. If
+-the string is empty, the function returns a new string with the given element.
+-
+-If the index is of type floating-point, Float.int() is first used to calculate the
+-actual index value.
+-
+-=head3 PARAMETERS
+-
+-string = String (original string)
+-
+-element = String (element to be inserted)
+-
+-index = Number (the index of the element to be added)
+-
+-separator = String (the first character of the string used as separator)
+-
+-=head3 RETURN VALUE
+-
+-String or invalid.
+-
+-=head3 EXCEPTIONS
+-
+-Returns C<invalid> if the separator is an empty string.
+-
+-=cut
+-
+-.sub '_string_insertAt' :anon
+-    .param pmc str
+-    .param pmc element
+-    .param pmc index_
+-    .param pmc separator
+-    .local pmc res
+-    $I0 = isa str, 'WmlsInvalid'
+-    if $I0 goto L1
+-    $I0 = isa element, 'WmlsInvalid'
+-    if $I0 goto L1
+-    $I0 = isa index_, 'WmlsInteger'
+-    if $I0 goto L2
+-    $I0 = isa index_, 'WmlsFloat'
+-    if $I0 goto L2
+-    goto L1
+-  L2:
+-    $I0 = isa separator, 'WmlsInvalid'
+-    if $I0 goto L1
+-    $S1 = str
+-    $S2 = element
+-    $I3 = index_
+-    if $I3 >= 0 goto L3
+-    $I3 = 0
+-  L3:
+-    $S4 = separator
+-    $I4 = length $S4
+-    if $I4 == 0 goto L1
+-    $S4 = substr $S4, 0, 1
+-    $I1 = length $S1
+-    if $I1 != 0 goto L4
+-    box res, $S2
+-    .return (res)
+-  L4:
+-    $P0 = split $S4, $S1
+-    $I5 = elements $P0
+-    if $I3 <= $I5 goto L5
+-    $I3 = $I5
+-  L5:
+-    $I6 = $I5 + 1
+-    new $P1, 'Array'
+-    set $P1, $I6
+-    $I0 = 0
+-    $I1 = 0
+-  L6:
+-    unless $I0 < $I5 goto L7
+-    if $I1 != $I3 goto L8
+-    inc $I1
+-  L8:
+-    $S0 = $P0[$I0]
+-    $P1[$I1] = $S0
+-    inc $I0
+-    inc $I1
+-    goto L6
+-  L7:
+-    $P1[$I3] = $S2
+-    $S0 = join $S4, $P1
+-    box res, $S0
+-    .return (res)
+-  L1:
+-    new res, 'WmlsInvalid'
+-    .return (res)
+-.end
+-
+-
+-=head2 C<squeeze(string)>
+-
+-=head3 DESCRIPTION
+-
+-Returns a string where all consecutive series of white spaces within the
+-string are reduced to single inter-word space.
+-
+-=head3 PARAMETERS
+-
+-String = String
+-
+-=head3 RETURN VALUE
+-
+-String or invalid.
+-
+-=cut
+-
+-.include 'cclass.pasm'
+-
+-.sub 'squeeze' :anon
+-    .param string s
+-    .local string res
+-    .local int idx
+-    res = ''
+-    idx = 0
+-    $I1 = length s
+-  L1:
+-    unless idx < $I1 goto L2
+-    $I0 = is_cclass .CCLASS_WHITESPACE, s, idx
+-    if $I0 goto L3
+-    $S0 = substr s, idx, 1
+-    res = concat $S0
+-    inc idx
+-    goto L1
+-  L3:
+-    res = concat ' '
+-  L4:
+-    inc idx
+-    $I0 = is_cclass .CCLASS_WHITESPACE, s, idx
+-    if $I0 goto L4
+-    goto L1
+-  L2:
+-    .return (res)
+-.end
+-
+-.sub '_string_squeeze' :anon
+-    .param pmc str
+-    .local pmc res
+-    $I0 = isa str, 'WmlsInvalid'
+-    if $I0 goto L1
+-    $S1 = str
+-    $S0 = squeeze($S1)
+-    box res, $S0
+-    .return (res)
+-  L1:
+-    new res, 'WmlsInvalid'
+-    .return (res)
+-.end
+-
+-
+-=head2 C<trim(string)>
+-
+-=head3 DESCRIPTION
+-
+-Returns a string where all trailing and leading white spaces in the given
+-string have been trimmed.
+-
+-=head3 PARAMETERS
+-
+-String = String
+-
+-=head3 RETURN VALUE
+-
+-String or invalid.
+-
+-=cut
+-
+-.sub 'trim' :anon
+-    .param string s
+-    .local string res
+-    $I1 = 0
+-  L1:
+-    $I0 = is_cclass .CCLASS_WHITESPACE, s, $I1
+-    unless $I0 goto L2
+-    inc $I1
+-    goto L1
+-  L2:
+-    $I2 = length s
+-  L3:
+-    dec $I2
+-    $I0 = is_cclass .CCLASS_WHITESPACE, s, $I2
+-    if $I0 goto L3
+-    inc $I2
+-    $I2 -= $I1
+-    res = substr s, $I1, $I2
+-    .return (res)
+-.end
+-
+-.sub '_string_trim' :anon
+-    .param pmc str
+-    .local pmc res
+-    $I0 = isa str, 'WmlsInvalid'
+-    if $I0 goto L1
+-    $S1 = str
+-    $S0 = trim($S1)
+-    box res, $S0
+-    .return (res)
+-  L1:
+-    new res, 'WmlsInvalid'
+-    .return (res)
+-.end
+-
+-
+-=head2 C<compare(string1, string2)>
+-
+-=head3 DESCRIPTION
+-
+-The return value indicates the lexicographic relation of string1 to string2. The
+-relation is based on the relation of the character codes in the native
+-character set. The return value is -1 if string1 is less than string2, 0 if string1
+-is identical to string2 or 1 if string1 is greater than string2.
+-
+-=head3 PARAMETERS
+-
+-String1 = String
+-
+-String2 = String
+-
+-=head3 RETURN VALUE
+-
+-Integer or invalid.
+-
+-=cut
+-
+-.sub '_string_compare' :anon
+-    .param pmc string1
+-    .param pmc string2
+-    .local pmc res
+-    $I0 = isa string1, 'WmlsInvalid'
+-    if $I0 goto L1
+-    $I0 = isa string2, 'WmlsInvalid'
+-    if $I0 goto L1
+-    $S1 = string1
+-    $S2 = string2
+-    if $S1 >= $S2 goto L2
+-    box res, -1
+-    .return (res)
+-  L2:
+-    if $S1 > $S2 goto L3
+-    box res, 0
+-    .return (res)
+-  L3:
+-    box res, 1
+-    .return (res)
+-  L1:
+-    new res, 'WmlsInvalid'
+-    .return (res)
+-.end
+-
+-
+-=head2 C<toString(value)>
+-
+-=head3 DESCRIPTION
+-
+-Returns a string representation of the given value. This function performs
+-exactly the same conversions as supported by the [WMLScript] language
+-(automatic conversion from boolean, integer and floating-point values to
+-strings) except that C<invalid> value returns the string C<"invalid">.
+-
+-=head3 PARAMETERS
+-
+-value = Any
+-
+-=head3 RETURN VALUE
+-
+-String.
+-
+-=cut
+-
+-.sub '_string_toString' :anon
+-    .param pmc value
+-    $S1 = value
+-    .local pmc res
+-    box res, $S1
+-    .return (res)
+-.end
+-
+-
+-=head2 C<format(format, value)>
+-
+-=head3 DESCRIPTION
+-
+-Converts the given value to a string by using the given formatting provided as
+-a format string. The format string can contain only one format specifier,
+-which can be located anywhere inside the string. If more than one is
+-specified, only the first one (leftmost) is used and the remaining specifiers
+-are replaced by an empty string. The format specifier has the following form:
+-
+- % [width] [.precision] type
+-
+-The C<width> argument is a nonnegative decimal integer controlling the
+-minimum number of characters printed. If the number of characters in the
+-output value is less than the specified width, blanks are added to the left until
+-the minimum width is reached. The C<width> argument never causes the
+-value to be truncated. If the number of characters in the output value is
+-greater than the specified width or, if width is not given, all characters of the
+-value are printed (subject to the precision argument).
+-
+-The C<precision> argument specifies a nonnegative decimal integer,
+-preceded by a period (.), which can be used to set the precision of the output
+-value. The interpretation of this value depends on the given C<type>:
+-
+-=over 4
+-
+-=item d
+-
+-Specifies the minimum number of digits to be printed. If the number
+-of digits in the value is less than precision, the output value is
+-padded on the left with zeroes. The value is not truncated when the
+-number of digits exceeds precision. Default precision is 1. If
+-precision is specified as 0 and the value to be converted is 0, the
+-result is an empty string.
+-
+-=item f
+-
+-Specifies the number of digits after the decimal point. If a decimal
+-point appears, at least one digit appears before it. The value is
+-rounded to the appropriate number of digits. Default precision is 6; if
+-precision is 0 or if the period (.) appears without a number following
+-it, no decimal point is printed.
+-
+-=item s
+-
+-Specifies the maximum number of characters to be printed. By
+-default, all characters are printed.
+-
+-=back
+-
+-Unlike the C<width> argument, the C<precision> argument can cause either
+-truncation of the output value or rounding of a floating-point value.
+-
+-The C<type> argument is the only required format argument; it appears after
+-any optional format fields. The type character determines whether the given
+-value is interpreted as integer, floating-point or string. If the value argument
+-is of a different type than is specified by the type argument, it is converted
+-according to WMLScript standard automatic conversion rules, with the
+-addition that if value is of type floating-point and type is B<d>, Float.int() is called
+-to convert the value. The supported C<type> arguments are:
+-
+-=over 4
+-
+-=item d
+-
+-Integer: The output value has the form [-]dddd, where dddd is one
+-or more decimal digits.
+-
+-=item f
+-
+-Floating-point: The output value has the form [-]dddd.dddd, where
+-dddd is one or more decimal digits. The number of digits before the
+-decimal point depends on the magnitude of the number and the
+-number of digits after the decimal point depends on the requested
+-precision. When the number of digits after the decimal point in the value
+-is less than the precision, letter 0 should be padded to fill columns
+-(e.g. the result of String.format("%2.3f", 1.2) will be
+-"1.200")
+-
+-=item s
+-
+-String: Characters are printed up to the end of the string or until the
+-precision value is reached. When the width is larger than
+-precision, the width should be ignored.
+-
+-=back
+-
+-A literal percent character (%) may be included in the format string by
+-preceding it with another percent character (%%).
+-
+-MINIMALIST IMPLEMENTATION
+-
+-=head3 PARAMETERS
+-
+-format = String
+-
+-value = Any
+-
+-=head3 RETURN VALUE
+-
+-String or invalid.
+-
+-=head3 EXCEPTIONS
+-
+-Illegal format specifier results in an C<invalid> return value.
+-
+-=cut
+-
+-.sub '_string_format' :anon
+-    .param pmc format
+-    .param pmc value
+-    .local pmc res
+-    $I0 = isa format, 'WmlsInvalid'
+-    if $I0 goto L1
+-    $S0 = format
+-    new $P0, 'Array'
+-    set $P0, 1
+-    $P0[0] = value
+-  L2:
+-    $S1 = sprintf $S0, $P0
+-    box res, $S1
+-    .return (res)
+-  L1:
+-    new res, 'WmlsInvalid'
+-    .return (res)
+-.end
+-
+-
+-# Local Variables:
+-#   mode: pir
+-#   fill-column: 100
+-# End:
+-# vim: expandtab shiftwidth=4 ft=pir:
+--- origsrc/parrot-0.8.2/languages/WMLScript/src/script.pir	2008-12-17 06:55:15.000000000 +0000
++++ src/parrot-0.8.2/languages/WMLScript/src/script.pir	2008-12-25 13:44:20.694000000 +0000
+@@ -104,7 +104,7 @@
+ 
+   $P0 = get_hll_global '@stdlibs'
+   unless null $P0 goto L1
+-  load_bytecode 'languages/WMLScript/src/WMLScript.pbc'
++  load_bytecode 'WMLScript.pbc'
+ L1:
+ PIRCODE
+ 
+--- origsrc/parrot-0.8.2/languages/WMLScript/src/wmlsstdlibs.pir	2008-12-17 06:55:15.000000000 +0000
++++ src/parrot-0.8.2/languages/WMLScript/src/wmlsstdlibs.pir	2008-12-25 13:44:20.819000000 +0000
+@@ -29,10 +29,10 @@
+ 
+ .sub '__onload' :load :anon
+ #    print "__onload (wmlsstdlibs.pir)\n"
+-    load_bytecode 'languages/WMLScript/runtime/wmlslang.pbc'
+-    load_bytecode 'languages/WMLScript/runtime/wmlsfloat.pbc'
+-    load_bytecode 'languages/WMLScript/runtime/wmlsstring.pbc'
+-    load_bytecode 'languages/WMLScript/runtime/wmlsconsole.pbc'
++    load_bytecode 'WMLScript/wmlslang.pbc'
++    load_bytecode 'WMLScript/wmlsfloat.pbc'
++    load_bytecode 'WMLScript/wmlsstring.pbc'
++    load_bytecode 'WMLScript/wmlsconsole.pbc'
+ 
+     new $P0, 'Hash'
+     $P1 = getLang()
+--- origsrc/parrot-0.8.2/languages/WMLScript/t/runtime.t	2008-12-17 06:55:15.000000000 +0000
++++ src/parrot-0.8.2/languages/WMLScript/t/runtime.t	2008-12-25 13:44:20.834625000 +0000
+@@ -23,7 +23,7 @@
+ .loadlib 'wmls_ops'
+ 
+ .sub '_init' :anon
+-  load_bytecode 'languages/WMLScript/src/WMLScript.pbc'
++  load_bytecode 'WMLScript.pbc'
+ .end
+ 
+ .sub 'function0' :anon
+--- origsrc/parrot-0.8.2/languages/WMLScript/wmls2pbc.pir	2008-12-17 06:55:15.000000000 +0000
++++ src/parrot-0.8.2/languages/WMLScript/wmls2pbc.pir	2008-12-25 13:44:20.834625000 +0000
+@@ -25,7 +25,7 @@
+ 
+ .sub 'main' :main
+     .param pmc argv
+-    load_bytecode 'languages/WMLScript/src/WMLScript.pbc'
++    load_bytecode 'WMLScript'
+     .local int argc
+     .local string progname
+     .local string filename
+--- origsrc/parrot-0.8.2/languages/WMLScript/wmls2pir.pir	2008-12-17 06:55:15.000000000 +0000
++++ src/parrot-0.8.2/languages/WMLScript/wmls2pir.pir	2008-12-25 13:44:20.928375000 +0000
+@@ -25,7 +25,7 @@
+ 
+ .sub 'main' :main
+     .param pmc argv
+-    load_bytecode 'languages/WMLScript/src/WMLScript.pbc'
++    load_bytecode 'WMLScript'
+     .local int argc
+     .local string progname
+     .local string filename
+--- origsrc/parrot-0.8.2/languages/WMLScript/wmlsd.pir	2008-12-17 06:55:15.000000000 +0000
++++ src/parrot-0.8.2/languages/WMLScript/wmlsd.pir	2008-12-25 13:44:20.928375000 +0000
+@@ -25,7 +25,7 @@
+ 
+ .sub 'main' :main
+     .param pmc argv
+-    load_bytecode 'languages/WMLScript/src/WMLScript.pbc'
++    load_bytecode 'WMLScript'
+     .local int argc
+     .local string progname
+     .local string filename
+--- origsrc/parrot-0.8.2/languages/WMLScript/wmlsi.pir	2008-12-17 06:55:15.000000000 +0000
++++ src/parrot-0.8.2/languages/WMLScript/wmlsi.pir	2008-12-25 13:44:20.928375000 +0000
+@@ -26,7 +26,7 @@
+ 
+ .sub 'main' :main
+     .param pmc argv
+-    load_bytecode 'languages/WMLScript/src/WMLScript.pbc'
++    load_bytecode 'WMLScript'
+     .local int argc
+     .local string progname
+     .local string filename
+--- origsrc/parrot-0.8.2/languages/Zcode/config/makefiles/root.in	2008-06-23 02:30:46.000000000 +0000
++++ src/parrot-0.8.2/languages/Zcode/config/makefiles/root.in	2008-12-25 13:44:20.990875000 +0000
+@@ -1,14 +1,20 @@
+ # $Id: /mirror/trunk/languages/Zcode/config/makefiles/root.in 28688 2008-06-23T00:33:41.905243Z coke  $
+ 
+ # Makefile for languages/Zcode
++HLLNAME	      = Zcode
+ 
+ # Setup of some commands
+-PARROT     = ../../parrot@exe@
+-PERL       = @perl@
+-RM_F       = @rm_f@
+-#CONDITIONED_LINE(darwin):
+-#CONDITIONED_LINE(darwin):# MACOSX_DEPLOYMENT_TARGET must be defined for OS X compilation/linking
+-#CONDITIONED_LINE(darwin):export MACOSX_DEPLOYMENT_TARGET := @osx_version@
++BUILD_DIR     = @build_dir@
++PERL          = @perl@
++RM_F          = @rm_f@
++
++#IF(parrot_is_shared and !(cygwin|win32)):export LD_RUN_PATH := @blib_dir@:$(LD_RUN_PATH)
++PARROT        = ../../parrot@exe@
++PBC_TO_EXE    = ../../pbc_to_exe@exe@
++RECONFIGURE   = $(PERL) $(BUILD_DIR)/tools/dev/reconfigure.pl
++#IF(darwin):
++#IF(darwin):# MACOSX_DEPLOYMENT_TARGET must be defined for OS X compilation/linking
++#IF(darwin):export MACOSX_DEPLOYMENT_TARGET := @osx_version@
+ 
+ EXAMPLES = examples/small.z3 examples/hello.z3
+ 
+@@ -27,9 +33,7 @@
+ 	@echo "                     Requires an Inform compiler!"
+ 	@echo ""
+ 	@echo "  clean:             clean up temporary files (none presently)"
+-	@echo ""
+ 	@echo "  realclean:         clean up generated files"
+-	@echo ""
+ 	@echo "  maintclean:        clean up Z-code files"
+ 	@echo ""
+ 	@echo "  help:              print this help message"
+@@ -54,6 +58,10 @@
+ .inf.z3:
+ 	inform $< $@
+ 
++# regenerate the Makefile
++Makefile: config/makefiles/root.in
++	cd $(BUILD_DIR) && $(RECONFIGURE) --step=gen::languages --languages=$(HLLNAME)
++
+ clean:
+ 	@echo "No temp files to clean"
+ 
+@@ -64,3 +72,9 @@
+ 
+ maintclean: realclean
+ 	$(RM_F) $(EXAMPLES) $(TEST_ZFILES)
++
++#
++# Local variables:
++# mode: makefile
++# ex: ft=make
++# End:
+--- origsrc/parrot-0.8.2/languages/abc/config/makefiles/root.in	2008-06-23 02:30:48.000000000 +0000
++++ src/parrot-0.8.2/languages/abc/config/makefiles/root.in	2008-12-25 13:44:20.990875000 +0000
+@@ -4,29 +4,40 @@
+ PARROT_ARGS =
+ 
+ ## configuration settings
++HLLNAME       = abc
+ BUILD_DIR     = @build_dir@
+ LOAD_EXT      = @load_ext@
+ O             = @o@
++BIN_DIR       = @bin_dir@
++LIB_DIR       = @lib_dir@
++DOC_DIR       = @doc_dir@
++MANDIR	      = @mandir@
+ 
+ ## Setup some commands
+ LN_S          = @lns@
+ PERL          = @perl@
+ RM_RF         = @rm_rf@
+ CP            = @cp@
++MKPATH        = @mkpath@
++POD2MAN       = pod2man
++
++#IF(parrot_is_shared and !(cygwin|win32)):export LD_RUN_PATH := @blib_dir@:$(LD_RUN_PATH)
+ PARROT        = ../../parrot@exe@
++PBC_TO_EXE    = ../../pbc_to_exe@exe@
+ CAT           = $(PERL) -MExtUtils::Command -e cat
+ BUILD_DYNPMC  = $(PERL) $(BUILD_DIR)/tools/build/dynpmc.pl
+ RECONFIGURE   = $(PERL) $(BUILD_DIR)/tools/dev/reconfigure.pl
+-#CONDITIONED_LINE(darwin):
+-#CONDITIONED_LINE(darwin):# MACOSX_DEPLOYMENT_TARGET must be defined for OS X compilation/linking
+-#CONDITIONED_LINE(darwin):export MACOSX_DEPLOYMENT_TARGET := @osx_version@
++#IF(darwin):
++#IF(darwin):# MACOSX_DEPLOYMENT_TARGET must be defined for OS X compilation/linking
++#IF(darwin):export MACOSX_DEPLOYMENT_TARGET := @osx_version@
+ 
+ ## places to look for things
+ PARROT_DYNEXT = $(BUILD_DIR)/runtime/parrot/dynext
+-PGE_LIBRARY   = $(BUILD_DIR)/runtime/parrot/library/PGE
++PARROT_LIB    = $(BUILD_DIR)/runtime/parrot/library
++PGE_LIBRARY   = $(PARROT_LIB)/PGE
++PCT           = $(PARROT_LIB)/PCT.pbc
+ PERL6GRAMMAR  = $(PGE_LIBRARY)/Perl6Grammar.pbc
+ NQP           = $(BUILD_DIR)/compilers/nqp/nqp.pbc
+-PCT           = $(BUILD_DIR)/runtime/parrot/library/PCT.pbc
+ 
+ PMC_DIR       = src/pmc
+ 
+@@ -37,19 +48,20 @@
+ SOURCES = abc.pir \
+   src/gen_grammar.pir \
+   src/gen_actions.pir \
+-  src/gen_builtins.pir \
+-#  $(ABC_GROUP)
++  src/gen_builtins.pir
+ 
+ BUILTINS_PIR = \
+   src/builtins/all.pir \
+ 
+-# PMCS = abc
+-# PMC_SOURCES = $(PMC_DIR)/abc.pmc
++DOCS = MAINTAINER README TODO
+ 
+ # the default target
+ abc.pbc: $(PARROT) $(SOURCES)
+ 	$(PARROT) $(PARROT_ARGS) -o abc.pbc abc.pir
+ 
++$(HLLNAME)@exe@: $(HLLNAME).pbc
++	$(PBC_TO_EXE) $(HLLNAME).pbc
++
+ src/gen_grammar.pir: $(PERL6GRAMMAR) src/parser/grammar.pg src/parser/grammar-oper.pg
+ 	$(PARROT) $(PARROT_ARGS) $(PERL6GRAMMAR) \
+ 	    --output=src/gen_grammar.pir \
+@@ -63,25 +75,31 @@
+ src/gen_builtins.pir: $(BUILTINS_PIR)
+ 	$(CAT) $(BUILTINS_PIR) >src/gen_builtins.pir
+ 
+-$(ABC_GROUP): $(PARROT) $(PMC_SOURCES)
+-	cd $(PMC_DIR) && $(BUILD_DYNPMC) generate $(PMCS)
+-	cd $(PMC_DIR) && $(BUILD_DYNPMC) compile $(PMCS)
+-	cd $(PMC_DIR) && $(BUILD_DYNPMC) linklibs $(PMCS)
+-	cd $(PMC_DIR) && $(BUILD_DYNPMC) copy --destination=$(PARROT_DYNEXT) $(PMCS)
++installable : installable_$(HLLNAME)@exe@ $(HLLNAME).pbc
++	$(CP) installable_$(HLLNAME)@exe@ $(BUILD_DIR)
++	$(CP) $(HLLNAME).pbc $(PARROT_LIB)/$(HLLNAME).pbc
++
++installable_$(HLLNAME)@exe@ : $(HLLNAME).pbc
++	$(PBC_TO_EXE) $(HLLNAME).pbc --install
+ 
+ # regenerate the Makefile
+ Makefile: config/makefiles/root.in
+-	cd $(BUILD_DIR) && $(RECONFIGURE) --step=gen::languages --languages=abc
++	cd $(BUILD_DIR) && $(RECONFIGURE) --step=gen::languages --languages=$(HLLNAME)
+ 
+ # This is a listing of all targets, that are meant to be called by users
+ help:
+ 	@echo ""
+ 	@echo "Following targets are available for the user:"
+ 	@echo ""
+-	@echo "  all:               abc.pbc"
++	@echo "  build:             abc.pbc"
+ 	@echo "                     This is the default."
++	@echo "  all:               abc.pbc abc@exe@ installable"
++	@echo "  installable:       Create self-hosting bins and libs."
++	@echo "  install:           Install the installable targets and docs."
++	@echo ""
+ 	@echo "Testing:"
+ 	@echo "  test:              Run the test suite."
++	@echo "  test-installable:  Test self-hosting targets."
+ 	@echo "  testclean:         Clean up test results."
+ 	@echo ""
+ 	@echo "Cleaning:"
+@@ -96,6 +114,17 @@
+ test: all
+ 	prove -r t
+ 
++# TODO: rename build_dir. basic run for missing libs
++test-installable : installable
++	echo "2-1" | ./installable_$(HLLNAME)@exe@
++
++install : installable
++	$(CP) installable_$(HLLNAME)@exe@ $(DESTDIR)$(BIN_DIR)/parrot-$(HLLNAME)@exe@
++	$(CP) $(HLLNAME).pbc $(DESTDIR)$(LIB_DIR)/parrot/library/$(HLLNAME).pbc
++	$(POD2MAN) $(HLLNAME).pir > $(DESTDIR)$(MANDIR)/man1/parrot-$(HLLNAME).1
++	-$(MKPATH) $(DESTDIR)$(DOC_DIR)/languages/$(HLLNAME)
++	$(CP) $(DOCS) $(DESTDIR)$(DOC_DIR)/languages/$(HLLNAME)
++
+ testclean:
+ 	$(RM_RF) "t/*.pir" "t/*.out"
+ 
+@@ -104,17 +133,9 @@
+   src/gen_grammar.pir \
+   src/gen_actions.pir \
+   src/gen_builtins.pir \
+-  $(PMC_DIR)/*.h \
+-  $(PMC_DIR)/*.c \
+-  $(PMC_DIR)/*.dump \
+-  $(PMC_DIR)/*$(O) \
+-  $(PMC_DIR)/*$(LOAD_EXT) \
+-  $(PMC_DIR)/*.exp \
+-  $(PMC_DIR)/*.ilk \
+-  $(PMC_DIR)/*.manifest \
+-  $(PMC_DIR)/*.pdb \
+-  $(PMC_DIR)/*.lib \
+-
++  $(PARROT_LIB)/$(HLLNAME).pbc \
++  $(HLLNAME)@exe@ \
++  installable_$(HLLNAME)@exe@
+ 
+ clean: testclean
+ 	$(RM_RF) $(CLEANUPS)
+@@ -123,3 +144,9 @@
+ 	$(RM_RF) Makefile
+ 
+ distclean: realclean
++
++#
++# Local variables:
++# mode: makefile
++# ex: ft=make
++# End:
+--- origsrc/parrot-0.8.2/languages/befunge/config/makefiles/root.in	2008-06-23 02:30:48.000000000 +0000
++++ src/parrot-0.8.2/languages/befunge/config/makefiles/root.in	2008-12-25 13:44:21.022125000 +0000
+@@ -1,48 +1,105 @@
+ # $Id: /mirror/trunk/languages/befunge/config/makefiles/root.in 28688 2008-06-23T00:33:41.905243Z coke  $
+ 
+ # Makefile for languages/befunge
++HLLNAME       = befunge
++
++## configuration settings
++BUILD_DIR     = @build_dir@
++BIN_DIR       = @bin_dir@
++LIB_DIR       = @lib_dir@
++DOC_DIR       = @doc_dir@
++MANDIR	      = @mandir@
+ 
+ # Setup of some commands
+-PARROT     = ../../parrot
+-PERL       = @perl@
+-RM_F       = @rm_f@
+-#CONDITIONED_LINE(darwin):
+-#CONDITIONED_LINE(darwin):# MACOSX_DEPLOYMENT_TARGET must be defined for OS X compilation/linking
+-#CONDITIONED_LINE(darwin):export MACOSX_DEPLOYMENT_TARGET := @osx_version@
++PERL          = @perl@
++RM_F          = @rm_f@
++CP            = @cp@
++MKPATH        = @mkpath@
++POD2MAN	      = pod2man
++
++#IF(parrot_is_shared and !(cygwin|win32)):export LD_RUN_PATH := @blib_dir@:$(LD_RUN_PATH)
++PARROT        = ../../parrot@exe@
++PBC_TO_EXE    = ../../pbc_to_exe@exe@
++RECONFIGURE   = $(PERL) @build_dir@/tools/dev/reconfigure.pl
++#IF(darwin):
++#IF(darwin):# MACOSX_DEPLOYMENT_TARGET must be defined for OS X compilation/linking
++#IF(darwin):export MACOSX_DEPLOYMENT_TARGET := @osx_version@
++PARROT_LIB    = $(BUILD_DIR)/runtime/parrot/library
++
++DOCS = MAINTAINER README Changes
+ 
+-default: all
++build: befunge.pbc
++
++all: befunge.pbc Makefile befunge@exe@
+ 
+ help :
+ 	@echo ""
+ 	@echo "Following targets are available for the user:"
+ 	@echo ""
+-	@echo "  build:             Create befunge.pbc"
++	@echo "  build:             befunge.pbc"
+ 	@echo "                     This is the default."
++	@echo "  all:               "
++	@echo "  installable:       Create self-hosting bins and libs."
++	@echo "  install:           Install the installable targets and docs."
+ 	@echo ""
+-	@echo "  test:              run the test suite,"
+-	@echo ""
+-	@echo "  clean:             clean up temporary files"
++	@echo "Testing:"
++	@echo "  test:              Run the test suite."
++	@echo "  test-installable:  Test self-hosting targets."
+ 	@echo ""
+-	@echo "  realclean:         clean up generated files"
++	@echo "Cleaning:"
++	@echo "  clean:             Basic cleaning up."
++	@echo "  realclean:         Removes also files generated by 'Configure.pl'"
++	@echo "  distclean:         Removes also anything built, in theory"
+ 	@echo ""
+-	@echo "  help:              print this help message"
++	@echo "Misc:"
++	@echo "  help:              Print this help message"
+ 
+ 
+-all: build
++$(HLLNAME)@exe@: $(HLLNAME).pbc
++	$(PBC_TO_EXE) $(HLLNAME).pbc
+ 
+-build: befunge.pbc
++installable_$(HLLNAME)@exe@: $(HLLNAME).pbc
++	$(PBC_TO_EXE) $(HLLNAME).pbc --install
++
++installable : installable_$(HLLNAME)@exe@ $(HLLNAME).pbc
++	$(CP) installable_$(HLLNAME)@exe@ $(BUILD_DIR)
++	$(CP) $(HLLNAME).pbc $(PARROT_LIB)/$(HLLNAME).pbc
+ 
+ befunge.pbc: befunge.pasm debug.pasm flow.pasm io.pasm load.pasm maths.pasm stack.pasm
+ 	$(PARROT) -o befunge.pbc befunge.pasm
+ 
+ test: befunge.pbc
+-	cd .. && $(PERL) t/harness --languages=befunge
++	cd .. && $(PERL) t/harness --languages=$(HLLNAME)
++
++# TODO: rename build_dir. basic run for missing libs
++test-installable : installable
++	./installable_$(HLLNAME)@exe@ test.bef
++
++install : installable
++	$(CP) installable_$(HLLNAME)@exe@ $(DESTDIR)$(BIN_DIR)/parrot-$(HLLNAME)@exe@
++	$(CP) $(HLLNAME).pbc $(DESTDIR)$(LIB_DIR)/parrot/library/$(HLLNAME).pbc
++	$(POD2MAN) $(HLLNAME).pir > $(DESTDIR)$(MANDIR)/man1/parrot-$(HLLNAME).1
++	$(MKPATH) $(DESTDIR)$(DOC_DIR)/languages/$(HLLNAME)
++	$(CP) $(DOCS) $(DESTDIR)$(DOC_DIR)/languages/$(HLLNAME)
++
++# regenerate the Makefile
++Makefile: config/makefiles/root.in
++	cd $(BUILD_DIR) && $(RECONFIGURE) --step=gen::languages --languages=$(HLLNAME)
+ 
+ clean:
+ 	$(RM_F) core \
+     "*.pbc" \
+-    "*~"
++    "*~" \
++    "$(HLLNAME)@exe@" \
++    "installable_$(HLLNAME)@exe@"
+ 
+ realclean: clean
+ 	$(RM_F) Makefile
+ 
++distclean: clean realclean
++
++#
++# Local variables:
++# mode: makefile
++# ex: ft=make
++# End:
+--- origsrc/parrot-0.8.2/languages/befunge/debug.pasm	2007-11-10 04:48:03.000000000 +0000
++++ src/parrot-0.8.2/languages/befunge/debug.pasm	2008-12-25 13:44:21.037750000 +0000
+@@ -7,10 +7,10 @@
+ #         when reaching it, or a location "y,x", or a column "c:nn"
+ #         or a row "r:nn"
+ DEBUG_INITIALIZE:
+-        new P3, .ResizablePMCArray
++        new P3, 'ResizablePMCArray'
+         set P3[0], 1          # Stop at first step.
+         repeat S10, "0", 128  # No char to break on.
+-        new P4, .Hash
++        new P4, 'Hash'
+         set P3[1], P4         # The breakpoints.
+         ret
+ 
+--- origsrc/parrot-0.8.2/languages/bf/config/makefiles/root.in	2008-06-23 02:30:46.000000000 +0000
++++ src/parrot-0.8.2/languages/bf/config/makefiles/root.in	2008-12-25 13:44:21.100250000 +0000
+@@ -1,31 +1,84 @@
+-RM_F = @rm_f@
+-PERL = @perl@
+-PARROT=../../parrot
+-#CONDITIONED_LINE(darwin):
+-#CONDITIONED_LINE(darwin):# MACOSX_DEPLOYMENT_TARGET must be defined for OS X compilation/linking
+-#CONDITIONED_LINE(darwin):export MACOSX_DEPLOYMENT_TARGET := @osx_version@
++# $Id: root.in 31315 2008-09-21 14:25:18Z rurban $
+ 
+-default: build
++HLLNAME       = bf
++BIN_DIR       = @bin_dir@
++LIB_DIR       = @lib_dir@
++DOC_DIR       = @doc_dir@
++MANDIR        = @mandir@
++
++RM_F          = @rm_f@
++PERL          = @perl@
++CP            = @cp@
++MKPATH        = @mkpath@
++POD2MAN       = pod2man
++
++#IF(parrot_is_shared and !(cygwin|win32)):export LD_RUN_PATH := @blib_dir@:$(LD_RUN_PATH)
++PARROT        = ../../parrot@exe@
++PBC_TO_EXE    = ../../pbc_to_exe@exe@
++#IF(darwin):
++#IF(darwin):# MACOSX_DEPLOYMENT_TARGET must be defined for OS X compilation/linking
++#IF(darwin):export MACOSX_DEPLOYMENT_TARGET := @osx_version@
++PARROT_LIB    = $(BUILD_DIR)/runtime/parrot/library
++
++DOCS = MAINTAINER README
++PBCS = bf.pbc bfc.pbc bfco.pbc
++EXES = installable_bf@exe@ installable_bfc@exe@ installable_bfco@exe@
++
++all : build
+ 
+ help :
+ 	@echo ""
+ 	@echo "Following targets are available for the user:"
+ 	@echo ""
+-	@echo "  build:             build bf.pbc and bfc.pir"
++	@echo "  build:             build bf.pbc, bfc.pfc and bfco.pfc"
+ 	@echo "                     This is the default."
++	@echo "  installable:       Create self-hosting bins and libs."
++	@echo "  install:           Install the installable targets and docs."
+ 	@echo ""
+-	@echo "  test:              run the test suite,"
++	@echo "Testing:"
++	@echo "  test:              Run the test suite."
++	@echo "  test-installable:  Test self-hosting targets."
++	@echo "  testclean:         Clean up test results."
+ 	@echo ""
+-	@echo "  clean:             clean up temporary files"
++	@echo "Cleaning:"
++	@echo "  clean:             Basic cleaning up."
++	@echo "  realclean:         Removes also files generated by 'Configure.pl'"
++	@echo "  distclean:         Removes also anything built, in theory"
+ 	@echo ""
+-	@echo "  realclean:         clean up generated files"
++	@echo "Misc:"
++	@echo "  help:              Print this help message."
+ 	@echo ""
+-	@echo "  help:              print this help message"
+ 
+-test: build
++test : build
+ 	$(PERL) -Ilib -I../../lib t/harness
+ 
+-build: bf.pbc bfc.pbc bfco.pbc
++build: $(PBCS)
++
++installable: $(EXES) $(PBCS)
++	$(CP) installable_bf@exe@   $(BUILD_DIR)
++	$(CP) installable_bfc@exe@  $(BUILD_DIR)
++	$(CP) installable_bfco@exe@ $(BUILD_DIR)
++	$(CP) bf.pbc   $(PARROT_LIB)/bf.pbc
++	$(CP) bfc.pbc  $(PARROT_LIB)/bfco.pbc
++	$(CP) bfco.pbc $(PARROT_LIB)/bfco.pbc
++
++bf@exe@: bf.pbc
++	$(PBC_TO_EXE) bf.pbc
++
++bfc@exe@: bfc.pbc
++	$(PBC_TO_EXE) bfc.pbc
++
++bfco@exe@: bfco.pbc
++	$(PBC_TO_EXE) bfco.pbc
++
++installable_bf@exe@: bf.pbc
++	$(PBC_TO_EXE) bf.pbc --install
++
++installable_bfc@exe@: bfc.pbc
++	$(PBC_TO_EXE) bfc.pbc --install
++
++installable_bfco@exe@: bfco.pbc
++	$(PBC_TO_EXE) bfco.pbc --install
+ 
+ bf.pbc: bf.pasm
+ 	$(PARROT) -o bf.pbc bf.pasm
+@@ -36,9 +89,30 @@
+ bfco.pbc: bfco.pir
+ 	$(PARROT) -o bfco.pbc bfco.pir
+ 
++# TODO: rename build_dir. basic run for missing libs
++test-installable : installable
++	./installable_bf@exe@   test.bf
++	./installable_bfc@exe@  test.bf
++	./installable_bfco@exe@ test.bf
++
++install : installable
++	$(CP) installable_bf@exe@   $(DESTDIR)$(BIN_DIR)/parrot-bf@exe@
++	$(CP) installable_bfc@exe@  $(DESTDIR)$(BIN_DIR)/parrot-bfc@exe@
++	$(CP) installable_bfco@exe@ $(DESTDIR)$(BIN_DIR)/parrot-bfco@exe@
++	$(CP) bf.pbc   $(DESTDIR)$(LIB_DIR)/parrot/library/bf.pbc
++	$(CP) bfc.pbc  $(DESTDIR)$(LIB_DIR)/parrot/library/bfc.pbc
++	$(CP) bfco.pbc $(DESTDIR)$(LIB_DIR)/parrot/library/bfco.pbc
++	$(MKPATH) $(DESTDIR)$(DOC_DIR)/languages/$(HLLNAME)
++	$(CP) $(DOCS) $(DESTDIR)$(DOC_DIR)/languages/$(HLLNAME)
++
+ clean:
+-	$(RM_F) core "*.pbc" "*~"
++	$(RM_F) core "*.pbc" "*~" "installable_bf*@exe@" "$(PARROT_LIB)/bf*.pbc"
+ 
+ realclean: clean
+ 	$(RM_F) Makefile
+ 
++#
++# Local variables:
++# mode: makefile
++# ex: ft=make
++# End:
+--- origsrc/parrot-0.8.2/languages/c99/config/makefiles/cpp.in	2008-05-28 19:43:55.000000000 +0000
++++ src/parrot-0.8.2/languages/c99/config/makefiles/cpp.in	2008-12-25 13:44:21.147125000 +0000
+@@ -4,6 +4,7 @@
+ PARROT_ARGS =
+ 
+ ## configuration settings
++HLLNAME       = cpp
+ BUILD_DIR     = @build_dir@
+ LOAD_EXT      = @load_ext@
+ O             = @o@
+@@ -13,13 +14,19 @@
+ PERL          = @perl@
+ RM_RF         = @rm_rf@
+ CP            = @cp@
+-PARROT        = ../../../../parrot@exe@
++MKPATH        = @mkpath@
++POD2MAN       = pod2man
++
++#IF(parrot_is_shared and !(cygwin|win32)):export LD_RUN_PATH := @blib_dir@:$(LD_RUN_PATH)
++PARROT        = $(BUILD_DIR)/parrot@exe@
++PBC_TO_EXE    = $(BUILD_DIR)/pbc_to_exe@exe@
+ CAT           = $(PERL) -MExtUtils::Command -e cat
+ BUILD_DYNPMC  = $(PERL) $(BUILD_DIR)/tools/build/dynpmc.pl
+ RECONFIGURE   = $(PERL) $(BUILD_DIR)/tools/dev/reconfigure.pl
+ 
+ ## places to look for things
+ PARROT_DYNEXT = $(BUILD_DIR)/runtime/parrot/dynext
++PARROT_LIB    = $(BUILD_DIR)/runtime/parrot/library
+ PGE_LIBRARY   = $(BUILD_DIR)/runtime/parrot/library/PGE
+ PERL6GRAMMAR  = $(PGE_LIBRARY)/Perl6Grammar.pbc
+ NQP           = $(BUILD_DIR)/compilers/nqp/nqp.pbc
+@@ -27,26 +34,28 @@
+ 
+ PMC_DIR       = src/pmc
+ 
+-all: cpp.pbc
++build: cpp.pbc
+ 
+-C_GROUP = $(PMC_DIR)/c_group$(LOAD_EXT)
++all: cpp.pbc cpp@exe@ src/cpp/Makefile installable
+ 
+ SOURCES = cpp.pir \
+   src/gen_grammar.pir \
+   src/gen_actions.pir \
+-  src/gen_builtins.pir \
+-#  $(C_GROUP)
++  src/gen_builtins.pir
+ 
+ BUILTINS_PIR = \
+   src/builtins/say.pir \
+ 
+-# PMCS = c
+-# PMC_SOURCES = $(PMC_DIR)/c.pmc
+-
+ # the default target
+-cpp.pbc: $(PARROT) $(SOURCES)
++cpp.pbc: $(SOURCES)
+ 	$(PARROT) $(PARROT_ARGS) -o cpp.pbc cpp.pir
+ 
++cpp@exe@ : cpp.pbc
++	$(PBC_TO_EXE) cpp.pbc
++
++installable_cpp@exe@ : cpp.pbc
++	$(PBC_TO_EXE) cpp.pbc --install
++
+ src/gen_grammar.pir: $(PERL6GRAMMAR) src/parser/grammar.pg
+ 	$(PARROT) $(PARROT_ARGS) $(PERL6GRAMMAR) \
+ 	    --output=src/gen_grammar.pir \
+@@ -59,22 +68,20 @@
+ src/gen_builtins.pir: $(BUILTINS_PIR)
+ 	$(CAT) $(BUILTINS_PIR) >src/gen_builtins.pir
+ 
+-$(C_GROUP): $(PARROT) $(PMC_SOURCES)
+-	cd $(PMC_DIR) && $(BUILD_DYNPMC) generate $(PMCS)
+-	cd $(PMC_DIR) && $(BUILD_DYNPMC) compile $(PMCS)
+-	cd $(PMC_DIR) && $(BUILD_DYNPMC) linklibs $(PMCS)
+-	cd $(PMC_DIR) && $(BUILD_DYNPMC) copy --destination=$(PARROT_DYNEXT) $(PMCS)
+-
+ # regenerate the Makefile
+ Makefile: ../../config/makefiles/cpp.in
+ 	cd $(BUILD_DIR) && $(RECONFIGURE) --step=gen::languages --languages=c99
+ 
++installable : installable_cpp@exe@ cpp.pbc
++	$(CP) installable_cpp@exe@ $(BUILD_DIR)
++	$(CP) cpp.pbc $(PARROT_LIB)/cpp.pbc
++
+ # This is a listing of all targets, that are meant to be called by users
+ help:
+ 	@echo ""
+ 	@echo "Following targets are available for the user:"
+ 	@echo ""
+-	@echo "  all:               c.pbc"
++	@echo "  build:             cpp.pbc"
+ 	@echo "                     This is the default."
+ 	@echo "Testing:"
+ 	@echo "  test:              Run the test suite."
+@@ -89,7 +96,7 @@
+ 	@echo "  help:              Print this help message."
+ 	@echo ""
+ 
+-test: all
++test: build
+ 	$(PERL) t/harness
+ 
+ # this target has nothing to do
+@@ -100,17 +107,8 @@
+   src/gen_grammar.pir \
+   src/gen_actions.pir \
+   src/gen_builtins.pir \
+-  $(PMC_DIR)/*.h \
+-  $(PMC_DIR)/*.c \
+-  $(PMC_DIR)/*.dump \
+-  $(PMC_DIR)/*$(O) \
+-  $(PMC_DIR)/*$(LOAD_EXT) \
+-  $(PMC_DIR)/*.exp \
+-  $(PMC_DIR)/*.ilk \
+-  $(PMC_DIR)/*.manifest \
+-  $(PMC_DIR)/*.pdb \
+-  $(PMC_DIR)/*.lib \
+-
++  cpp@exe@ \
++  installable_cpp@exe@
+ 
+ clean:
+ 	$(RM_RF) $(CLEANUPS)
+@@ -120,4 +118,8 @@
+ 
+ distclean: realclean
+ 
+-
++#
++# Local variables:
++# mode: makefile
++# ex: ft=make
++# End:
+--- origsrc/parrot-0.8.2/languages/c99/config/makefiles/root.in	2008-06-23 02:30:48.000000000 +0000
++++ src/parrot-0.8.2/languages/c99/config/makefiles/root.in	2008-12-25 13:44:21.147125000 +0000
+@@ -4,53 +4,75 @@
+ PARROT_ARGS =
+ 
+ ## configuration settings
++HLLNAME	      = c99
+ BUILD_DIR     = @build_dir@
+ LOAD_EXT      = @load_ext@
+ O             = @o@
++BIN_DIR       = @bin_dir@
++LIB_DIR       = @lib_dir@
++DOC_DIR       = @doc_dir@
++MANDIR	      = @mandir@
+ 
+ ## Setup some commands
+ LN_S          = @lns@
+ PERL          = @perl@
+ RM_RF         = @rm_rf@
+ CP            = @cp@
++MKPATH        = @mkpath@
++POD2MAN       = pod2man
++
++#IF(parrot_is_shared and !(cygwin|win32)):export LD_RUN_PATH := @blib_dir@:$(LD_RUN_PATH)
+ PARROT        = ../../parrot@exe@
++PBC_TO_EXE    = ../../pbc_to_exe@exe@
+ CAT           = $(PERL) -MExtUtils::Command -e cat
+ BUILD_DYNPMC  = $(PERL) $(BUILD_DIR)/tools/build/dynpmc.pl
+ RECONFIGURE   = $(PERL) $(BUILD_DIR)/tools/dev/reconfigure.pl
+-#CONDITIONED_LINE(darwin):
+-#CONDITIONED_LINE(darwin):# MACOSX_DEPLOYMENT_TARGET must be defined for OS X compilation/linking
+-#CONDITIONED_LINE(darwin):export MACOSX_DEPLOYMENT_TARGET := @osx_version@
++#IF(darwin):
++#IF(darwin):# MACOSX_DEPLOYMENT_TARGET must be defined for OS X compilation/linking
++#IF(darwin):export MACOSX_DEPLOYMENT_TARGET := @osx_version@
+ 
+ ## places to look for things
+ PARROT_DYNEXT = $(BUILD_DIR)/runtime/parrot/dynext
+-PGE_LIBRARY   = $(BUILD_DIR)/runtime/parrot/library/PGE
++PARROT_LIB    = $(BUILD_DIR)/runtime/parrot/library
++PGE_LIBRARY   = $(PARROT_LIB)/PGE
++PCT           = $(PARROT_LIB)/PCT.pbc
+ PERL6GRAMMAR  = $(PGE_LIBRARY)/Perl6Grammar.pbc
+ NQP           = $(BUILD_DIR)/compilers/nqp/nqp.pbc
+-PCT           = $(BUILD_DIR)/runtime/parrot/library/PCT.pbc
+ 
+ PMC_DIR       = src/pmc
++DOCS = MAINTAINER
++
++build: c99.pbc src/cpp/cpp.pbc
+ 
+-all: c99.pbc
++all: build Makefile installable
+ 
+ C_GROUP = $(PMC_DIR)/c_group$(LOAD_EXT)
+ 
+ SOURCES = c99.pir \
+   src/gen_grammar.pir \
+   src/gen_actions.pir \
+-  src/gen_builtins.pir \
+-#  $(C_GROUP)
++  src/gen_builtins.pir
+ 
+ BUILTINS_PIR = \
+   src/builtins/say.pir \
+ 
+-# PMCS = c
+-# PMC_SOURCES = $(PMC_DIR)/c.pmc
+-
+ # the default target
+ c99.pbc: $(PARROT) $(SOURCES)
+ 	$(PARROT) $(PARROT_ARGS) -o c99.pbc c99.pir
+ 	cd src/cpp; $(MAKE)
+ 
++c99@exe@: c99.pbc
++	$(PBC_TO_EXE) c99.pbc
++
++installable_c99@exe@ : c99.pbc
++	$(PBC_TO_EXE) c99.pbc --install
++
++src/cpp/cpp.pbc: src/cpp/cpp.pir
++	cd src/cpp && $(MAKE) installable_cpp@exe@
++
++installable_cpp@exe@ : src/cpp/cpp.pbc
++	$(CP) src/cpp/installable_cpp@exe@ installable_cpp@exe@
++
+ src/gen_grammar.pir: $(PERL6GRAMMAR) src/parser/grammar.pg
+ 	$(PARROT) $(PARROT_ARGS) $(PERL6GRAMMAR) \
+ 	    --output=src/gen_grammar.pir \
+@@ -63,15 +85,9 @@
+ src/gen_builtins.pir: $(BUILTINS_PIR)
+ 	$(CAT) $(BUILTINS_PIR) >src/gen_builtins.pir
+ 
+-$(C_GROUP): $(PARROT) $(PMC_SOURCES)
+-	cd $(PMC_DIR) && $(BUILD_DYNPMC) generate $(PMCS)
+-	cd $(PMC_DIR) && $(BUILD_DYNPMC) compile $(PMCS)
+-	cd $(PMC_DIR) && $(BUILD_DYNPMC) linklibs $(PMCS)
+-	cd $(PMC_DIR) && $(BUILD_DYNPMC) copy --destination=$(PARROT_DYNEXT) $(PMCS)
+-
+ # regenerate the Makefile
+-Makefile: config/makefiles/root.in
+-	cd $(BUILD_DIR) && $(RECONFIGURE) --step=gen::languages --languages=c
++Makefile: config/makefiles/root.in config/makefiles/cpp.in
++	cd $(BUILD_DIR) && $(RECONFIGURE) --step=gen::languages --languages=c99
+ 
+ # This is a listing of all targets, that are meant to be called by users
+ help:
+@@ -80,6 +96,9 @@
+ 	@echo ""
+ 	@echo "  all:               c.pbc"
+ 	@echo "                     This is the default."
++	@echo "  installable:       Create self-hosting bins and libs."
++	@echo "  install:           Install the installable targets and docs."
++	@echo ""
+ 	@echo "Testing:"
+ 	@echo "  test:              Run the test suite."
+ 	@echo "  testclean:         Clean up test results."
+@@ -96,6 +115,27 @@
+ test: all
+ 	$(PERL) t/harness
+ 
++# TODO: rename build_dir. basic run for missing libs
++test-installable : installable
++	./installable_$(HLLNAME)@exe@ t/spi.t
++	./installable_cpp@exe@ t/spi.t
++
++install : installable
++	$(CP) installable_$(HLLNAME)@exe@ $(DESTDIR)$(BIN_DIR)/parrot-$(HLLNAME)@exe@
++	$(CP) installable_cpp@exe@ $(DESTDIR)$(BIN_DIR)/parrot-cpp@exe@
++	$(CP) $(HLLNAME).pbc $(DESTDIR)$(LIB_DIR)/parrot/library/$(HLLNAME).pbc
++	$(CP) src/cpp/cpp.pbc $(DESTDIR)$(LIB_DIR)/parrot/library/cpp.pbc
++	$(POD2MAN) $(HLLNAME).pir > $(DESTDIR)$(MANDIR)/man1/parrot-$(HLLNAME).1
++	$(POD2MAN) src/cpp/cpp.pir > $(DESTDIR)$(MANDIR)/man1/parrot-cpp.1
++	$(MKPATH) $(DESTDIR)$(DOC_DIR)/languages/$(HLLNAME)
++	$(CP) $(DOCS) $(DESTDIR)$(DOC_DIR)/languages/$(HLLNAME)
++
++installable : installable_c99@exe@ installable_cpp@exe@ $(HLLNAME).pbc src/cpp/cpp.pbc
++	$(CP) installable_c99@exe@ $(BUILD_DIR)
++	$(CP) installable_cpp@exe@ $(BUILD_DIR)
++	$(CP) $(HLLNAME).pbc $(PARROT_LIB)/$(HLLNAME).pbc
++	$(CP) src/cpp/cpp.pbc $(PARROT_LIB)/cpp.pbc
++
+ # this target has nothing to do
+ testclean:
+ 
+@@ -104,21 +144,12 @@
+   src/gen_grammar.pir \
+   src/gen_actions.pir \
+   src/gen_builtins.pir \
+-  $(PMC_DIR)/*.h \
+-  $(PMC_DIR)/*.c \
+-  $(PMC_DIR)/*.dump \
+-  $(PMC_DIR)/*$(O) \
+-  $(PMC_DIR)/*$(LOAD_EXT) \
+-  $(PMC_DIR)/*.exp \
+-  $(PMC_DIR)/*.ilk \
+-  $(PMC_DIR)/*.manifest \
+-  $(PMC_DIR)/*.pdb \
+-  $(PMC_DIR)/*.lib \
+   src/cpp/cpp.pbc \
+   src/cpp/src/gen_actions.pir \
+   src/cpp/src/gen_grammar.pir \
+-  src/cpp/src/gen_builtins.pir
+-
++  src/cpp/src/gen_builtins.pir \
++  c99@exe@ \
++  installable_*@exe@
+ 
+ clean:
+ 	$(RM_RF) $(CLEANUPS)
+@@ -128,4 +159,8 @@
+ 
+ distclean: realclean
+ 
+-
++#
++# Local variables:
++# mode: makefile
++# ex: ft=make
++# End:
+--- origsrc/parrot-0.8.2/languages/cardinal/config/makefiles/root.in	2008-12-17 06:55:14.000000000 +0000
++++ src/parrot-0.8.2/languages/cardinal/config/makefiles/root.in	2008-12-25 13:44:21.194000000 +0000
+@@ -4,35 +4,49 @@
+ PARROT_ARGS =
+ 
+ ## configuration settings
++HLLNAME       = cardinal
+ BUILD_DIR     = @build_dir@
+ LOAD_EXT      = @load_ext@
+ O             = @o@
+ EXE           = @exe@
++BIN_DIR       = @bin_dir@
++LIB_DIR       = @lib_dir@
++DOC_DIR       = @doc_dir@
++MANDIR        = @mandir@
+ 
+ ## Setup some commands
+ LN_S          = @lns@
+ PERL          = @perl@
+ RM_RF         = @rm_rf@
+ CP            = @cp@
++MKPATH        = @mkpath@
++POD2MAN       = pod2man
++
++#IF(parrot_is_shared and !(cygwin|win32)):export LD_RUN_PATH := @blib_dir@:$(LD_RUN_PATH)
+ PARROT        = ../../parrot@exe@
++PBC_TO_EXE    = ../../pbc_to_exe@exe@
+ CAT           = $(PERL) -MExtUtils::Command -e cat
+ BUILD_DYNPMC  = $(PERL) $(BUILD_DIR)/tools/build/dynpmc.pl
+ RECONFIGURE   = $(PERL) $(BUILD_DIR)/tools/dev/reconfigure.pl
+ PBC_TO_EXE    = $(BUILD_DIR)/pbc_to_exe$(EXE)
+-#CONDITIONED_LINE(darwin):
+-#CONDITIONED_LINE(darwin):# MACOSX_DEPLOYMENT_TARGET must be defined for OS X compilation/linking
+-#CONDITIONED_LINE(darwin):export MACOSX_DEPLOYMENT_TARGET := @osx_version@
++#IF(darwin):
++#IF(darwin):# MACOSX_DEPLOYMENT_TARGET must be defined for OS X compilation/linking
++#IF(darwin):export MACOSX_DEPLOYMENT_TARGET := @osx_version@
+ 
+ ## places to look for things
+ PARROT_DYNEXT = $(BUILD_DIR)/runtime/parrot/dynext
+-PGE_LIBRARY   = $(BUILD_DIR)/runtime/parrot/library/PGE
++PARROT_LIB    = $(BUILD_DIR)/runtime/parrot/library
++PGE_LIBRARY   = $(PARROT_LIB)/PGE
++PCT           = $(PARROT_LIB)/PCT.pbc
+ PERL6GRAMMAR  = $(PGE_LIBRARY)/Perl6Grammar.pbc
+ NQP           = $(BUILD_DIR)/compilers/nqp/nqp.pbc
+ PCT           = $(BUILD_DIR)/runtime/parrot/library/PCT.pbc
+ 
+ PMC_DIR       = src/pmc
+ 
+-all: cardinal.pbc test.pir
++build: cardinal.pbc
++
++all: cardinal.pbc test.pir Makefile installable
+ 
+ CARDINAL_GROUP = $(PMC_DIR)/cardinal_group$(LOAD_EXT)
+ 
+@@ -40,8 +54,7 @@
+   src/parser/quote_expression.pir \
+   src/gen_grammar.pir \
+   src/gen_actions.pir \
+-  src/gen_builtins.pir \
+-#  $(CARDINAL_GROUP)
++  src/gen_builtins.pir
+ 
+ BUILTINS_PIR = \
+   src/builtins/guts.pir \
+@@ -71,6 +84,7 @@
+   src/builtins/eval.pir \
+   src/classes/Continuation.pir \
+ 
++DOCS = README
+ # PMCS = cardinal
+ # PMC_SOURCES = $(PMC_DIR)/cardinal.pmc
+ 
+@@ -101,15 +115,9 @@
+ src/gen_builtins.pir: $(BUILTINS_PIR)
+ 	$(CAT) $(BUILTINS_PIR) >src/gen_builtins.pir
+ 
+-$(CARDINAL_GROUP): $(PARROT) $(PMC_SOURCES)
+-	cd $(PMC_DIR) && $(BUILD_DYNPMC) generate $(PMCS)
+-	cd $(PMC_DIR) && $(BUILD_DYNPMC) compile $(PMCS)
+-	cd $(PMC_DIR) && $(BUILD_DYNPMC) linklibs $(PMCS)
+-	cd $(PMC_DIR) && $(BUILD_DYNPMC) copy --destination=$(PARROT_DYNEXT) $(PMCS)
+-
+ # regenerate the Makefile
+ Makefile: config/makefiles/root.in
+-	cd $(BUILD_DIR) && $(RECONFIGURE) --step=gen::languages --languages=cardinal
++	cd $(BUILD_DIR) && $(RECONFIGURE) --step=gen::languages --languages=$(HLLNAME)
+ 
+ # This is a listing of all targets, that are meant to be called by users
+ help:
+@@ -118,8 +126,12 @@
+ 	@echo ""
+ 	@echo "  all:               cardinal.pbc"
+ 	@echo "                     This is the default."
++	@echo "  installable:       Create self-hosting bins and libs."
++	@echo "  install:           Install the installable targets and docs."
++	@echo ""
+ 	@echo "Testing:"
+ 	@echo "  test:              Run the test suite."
++	@echo "  test-installable:  Test self-hosting targets."
+ 	@echo "  testclean:         Clean up test results."
+ 	@echo ""
+ 	@echo "Cleaning:"
+@@ -140,6 +152,22 @@
+ hashtest: all
+ 	$(PERL) t/harness --tests-from-dir=hash
+ 
++# TODO: rename build_dir. basic run for missing libs
++test-installable : installable
++	./installable_$(HLLNAME)@exe@ t/00-sanity.t
++
++installable : installable_$(HLLNAME)@exe@ $(HLLNAME).pbc
++	$(CP) installable_$(HLLNAME)@exe@ $(BUILD_DIR)
++	$(CP) $(HLLNAME).pbc $(PARROT_LIB)/$(HLLNAME).pbc
++
++install : installable
++	$(CP) installable_$(HLLNAME)@exe@ $(DESTDIR)$(BIN_DIR)/parrot-$(HLLNAME)@exe@
++	$(CP) $(HLLNAME).pbc $(DESTDIR)$(LIB_DIR)/parrot/library/$(HLLNAME).pbc
++	$(POD2MAN) $(HLLNAME).pir > $(DESTDIR)$(MANDIR)/man1/parrot-$(HLLNAME).1
++	$(MKPATH) $(DESTDIR)$(DOC_DIR)/languages/$(HLLNAME)
++	$(CP) $(DOCS) $(DESTDIR)$(DOC_DIR)/languages/$(HLLNAME)
++
++
+ # this target has nothing to do
+ testclean:
+ 
+@@ -151,6 +179,8 @@
+   cardinal$(O) \
+   cardinal$(EXE) \
+   installable_cardinal$(EXE) \
++  $(PARROT_LIB)/$(HLLNAME).pbc \
++  $(BUILD_DIR)/installable_cardinal@exe@ \
+   src/gen_grammar.pir \
+   src/gen_actions.pir \
+   src/gen_builtins.pir \
+@@ -174,4 +204,8 @@
+ 
+ distclean: realclean
+ 
+-
++#
++# Local variables:
++# mode: makefile
++# ex: ft=make
++# End:
+--- origsrc/parrot-0.8.2/languages/chitchat/config/makefiles/root.in	2008-06-23 02:30:46.000000000 +0000
++++ src/parrot-0.8.2/languages/chitchat/config/makefiles/root.in	2008-12-25 13:44:21.225250000 +0000
+@@ -7,44 +7,50 @@
+ BUILD_DIR     = @build_dir@
+ LOAD_EXT      = @load_ext@
+ O             = @o@
++BIN_DIR       = @bin_dir@
++LIB_DIR       = @lib_dir@
++DOC_DIR       = @doc_dir@
++MANDIR	      = @mandir@
+ 
+ ## Setup some commands
+ LN_S          = @lns@
+ PERL          = @perl@
+ RM_RF         = @rm_rf@
+ CP            = @cp@
++MKPATH        = @mkpath@
++POD2MAN       = pod2man
++
++#IF(parrot_is_shared and !(cygwin|win32)):export LD_RUN_PATH := @blib_dir@:$(LD_RUN_PATH)
+ PARROT        = ../../parrot@exe@
++PBC_TO_EXE    = ../../pbc_to_exe@exe@
+ CAT           = $(PERL) -MExtUtils::Command -e cat
+ BUILD_DYNPMC  = $(PERL) $(BUILD_DIR)/tools/build/dynpmc.pl
+ RECONFIGURE   = $(PERL) $(BUILD_DIR)/tools/dev/reconfigure.pl
+-#CONDITIONED_LINE(darwin):
+-#CONDITIONED_LINE(darwin):# MACOSX_DEPLOYMENT_TARGET must be defined for OS X compilation/linking
+-#CONDITIONED_LINE(darwin):export MACOSX_DEPLOYMENT_TARGET := @osx_version@
++#IF(darwin):
++#IF(darwin):# MACOSX_DEPLOYMENT_TARGET must be defined for OS X compilation/linking
++#IF(darwin):export MACOSX_DEPLOYMENT_TARGET := @osx_version@
+ 
+ ## places to look for things
+ PARROT_DYNEXT = $(BUILD_DIR)/runtime/parrot/dynext
+-PGE_LIBRARY   = $(BUILD_DIR)/runtime/parrot/library/PGE
++PARROT_LIB    = $(BUILD_DIR)/runtime/parrot/library
++PGE_LIBRARY   = $(PARROT_LIB)/PGE
++PCT           = $(PARROT_LIB)/PCT.pbc
+ PERL6GRAMMAR  = $(PGE_LIBRARY)/Perl6Grammar.pbc
+ NQP           = $(BUILD_DIR)/compilers/nqp/nqp.pbc
+-PCT           = $(BUILD_DIR)/runtime/parrot/library/PCT.pbc
+-
+-PMC_DIR       = src/pmc
+-
+-all: chitchat.pbc
+ 
+-CHITCHAT_GROUP = $(PMC_DIR)/chitchat_group$(LOAD_EXT)
++DOCS = MAINTAINER
+ 
+ SOURCES = chitchat.pir \
+   src/gen_grammar.pir \
+   src/gen_actions.pir \
+-  src/gen_builtins.pir \
+-#  $(CHITCHAT_GROUP)
++  src/gen_builtins.pir
+ 
+ BUILTINS_PIR = \
+   src/builtins/say.pir \
+ 
+-# PMCS = chitchat
+-# PMC_SOURCES = $(PMC_DIR)/chitchat.pmc
++build: chitchat.pbc
++
++all: chitchat.pbc chitchat@exe@ Makefile installable
+ 
+ # the default target
+ chitchat.pbc: $(PARROT) $(SOURCES)
+@@ -62,15 +68,9 @@
+ src/gen_builtins.pir: $(BUILTINS_PIR)
+ 	$(CAT) $(BUILTINS_PIR) >src/gen_builtins.pir
+ 
+-$(CHITCHAT_GROUP): $(PARROT) $(PMC_SOURCES)
+-	cd $(PMC_DIR) && $(BUILD_DYNPMC) generate $(PMCS)
+-	cd $(PMC_DIR) && $(BUILD_DYNPMC) compile $(PMCS)
+-	cd $(PMC_DIR) && $(BUILD_DYNPMC) linklibs $(PMCS)
+-	cd $(PMC_DIR) && $(BUILD_DYNPMC) copy --destination=$(PARROT_DYNEXT) $(PMCS)
+-
+ # regenerate the Makefile
+ Makefile: config/makefiles/root.in
+-	cd $(BUILD_DIR) && $(RECONFIGURE) --step=gen::languages --languages=chitchat
++	cd $(BUILD_DIR) && $(RECONFIGURE) --step=gen::languages --languages=$(HLLNAME)
+ 
+ # This is a listing of all targets, that are meant to be called by users
+ help:
+@@ -79,8 +79,12 @@
+ 	@echo ""
+ 	@echo "  all:               chitchat.pbc"
+ 	@echo "                     This is the default."
++	@echo "  installable:       Create self-hosting bins and libs."
++	@echo "  install:           Install the installable targets and docs."
++	@echo ""
+ 	@echo "Testing:"
+ 	@echo "  test:              Run the test suite."
++	@echo "  test-installable:  Test self-hosting targets."
+ 	@echo "  testclean:         Clean up test results."
+ 	@echo ""
+ 	@echo "Cleaning:"
+@@ -95,6 +99,27 @@
+ test: all
+ 	$(PERL) t/harness
+ 
++# TODO: rename build_dir. basic run for missing libs
++test-installable : installable
++	echo "2-1" | ./installable_$(HLLNAME)@exe@
++
++install : installable
++	$(CP) installable_$(HLLNAME)@exe@ $(DESTDIR)$(BIN_DIR)/parrot-$(HLLNAME)@exe@
++	$(CP) $(HLLNAME).pbc $(DESTDIR)$(LIB_DIR)/parrot/library/$(HLLNAME).pbc
++	$(POD2MAN) $(HLLNAME).pir > $(DESTDIR)$(MANDIR)/man1/parrot-$(HLLNAME).1
++	$(MKPATH) $(DESTDIR)$(DOC_DIR)/languages/$(HLLNAME)
++	$(CP) $(DOCS) $(DESTDIR)$(DOC_DIR)/languages/$(HLLNAME)
++
++$(HLLNAME)@exe@: $(HLLNAME).pbc
++	$(PBC_TO_EXE) $(HLLNAME).pbc
++
++installable : installable_$(HLLNAME)@exe@ $(HLLNAME).pbc
++	$(CP) installable_$(HLLNAME)@exe@ $(BUILD_DIR)
++	$(CP) $(HLLNAME).pbc $(PARROT_LIB)/$(HLLNAME).pbc
++
++installable_$(HLLNAME)@exe@ : $(HLLNAME).pbc
++	$(PBC_TO_EXE) $(HLLNAME).pbc --install
++
+ # this target has nothing to do
+ testclean:
+ 
+@@ -103,17 +128,9 @@
+   src/gen_grammar.pir \
+   src/gen_actions.pir \
+   src/gen_builtins.pir \
+-  $(PMC_DIR)/*.h \
+-  $(PMC_DIR)/*.c \
+-  $(PMC_DIR)/*.dump \
+-  $(PMC_DIR)/*$(O) \
+-  $(PMC_DIR)/*$(LOAD_EXT) \
+-  $(PMC_DIR)/*.exp \
+-  $(PMC_DIR)/*.ilk \
+-  $(PMC_DIR)/*.manifest \
+-  $(PMC_DIR)/*.pdb \
+-  $(PMC_DIR)/*.lib \
+-
++  $(PARROT_LIB)/$(HLLNAME).pbc \
++  $(HLLNAME)@exe@ \
++  installable_$(HLLNAME)@exe@ \
+ 
+ clean:
+ 	$(RM_RF) $(CLEANUPS)
+@@ -123,4 +140,8 @@
+ 
+ distclean: realclean
+ 
+-
++#
++# Local variables:
++# mode: makefile
++# ex: ft=make
++# End:
+--- origsrc/parrot-0.8.2/languages/cola/config/makefiles/root.in	2008-06-23 02:30:48.000000000 +0000
++++ src/parrot-0.8.2/languages/cola/config/makefiles/root.in	2008-12-25 13:44:21.240875000 +0000
+@@ -2,25 +2,31 @@
+ 
+ # Makefile for languages/cola
+ 
++# configuration settings
++HLLNAME       = cola
++BUILD_DIR     = @build_dir@
++O             = @o@
++EXE           = @exe@
++BIN_DIR       = @bin_dir@
++LIB_DIR       = @lib_dir@
++DOC_DIR       = @doc_dir@
++MANDIR	      = @mandir@
++
+ # Set up commands
+ PERL          = @perl@
+ RM_F          = @rm_f@
+ CHMOD         = @chmod@
++CP            = @cp@
++MKPATH        = @mkpath@
+ CC            = @cc@
+ DEBUG         = @cc_debug@
+ YACC          = @yacc@
+ LEX           = @lex@
+ RECONFIGURE   = $(PERL) @build_dir@/tools/dev/reconfigure.pl
+-#CONDITIONED_LINE(darwin):
+-#CONDITIONED_LINE(darwin):# MACOSX_DEPLOYMENT_TARGET must be defined for OS X compilation/linking
+-#CONDITIONED_LINE(darwin):export MACOSX_DEPLOYMENT_TARGET := @osx_version@
+-
+-# Set up extensions
+-O             = @o@
+-EXE           = @exe@
+-
+-# Set up directories
+-BUILD_DIR     = @build_dir@
++POD2MAN	      = pod2man
++#IF(darwin):
++#IF(darwin):# MACOSX_DEPLOYMENT_TARGET must be defined for OS X compilation/linking
++#IF(darwin):export MACOSX_DEPLOYMENT_TARGET := @osx_version@
+ 
+ # Libraries:  Ordinarily, no special libraries are needed
+ # for cola, but one of the following settings might be helpful
+@@ -44,8 +50,9 @@
+ # LIBS = -lefence
+ 
+ HEADERS = cola.h parser.h
++DOCS = MAINTAINER README examples/*
+ 
+-default :
++all : colacc$(EXE)
+ 	$(MAKE) colacc$(EXE)
+ 	-$(CHMOD) 775 colacc$(EXE)
+ 
+@@ -53,22 +60,27 @@
+ 	@echo ""
+ 	@echo "Following targets are available for the user:"
+ 	@echo ""
+-	@echo "  default  :         build 'colacc'"
++	@echo "  all  :             build 'colacc'"
+ 	@echo "                     This is the default."
++	@echo "  installable:       Create self-hosting bins and libs."
++	@echo "  install:           Install the installable targets and docs."
+ 	@echo ""
+-	@echo "  test:              run the test suite"
+-	@echo ""
+-	@echo "  clean:             clean up temporary files"
++	@echo "Testing:"
++	@echo "  test:              Run the test suite"
++	@echo "  test-installable:  Test self-hosting targets."
++	@echo ""
++	@echo "Cleaning:"
++	@echo "  clean:             Clean up temporary files"
++	@echo "  realclean:         Clean up generated files"
++	@echo "  superclean:        Clean up generated files, also the flex/bison files"
+ 	@echo ""
+-	@echo "  realclean:         clean up generated files"
++	@echo "Misc:"
++	@echo "  help:              Print this help message"
+ 	@echo ""
+-	@echo "  superclean:       clean up generated files, also the flex/bison files"
+-	@echo ""
+-	@echo "  help:              print this help message"
+ 
+ # regenerate the Makefile
+ Makefile: config/makefiles/root.in
+-	cd $(BUILD_DIR) && $(RECONFIGURE) --step=gen::languages --languages=cola
++	cd $(BUILD_DIR) && $(RECONFIGURE) --step=gen::languages --languages=$(HLLNAME)
+ 
+ nogen : gen$(O) semant$(O) sym$(O) type$(O)
+ 	$(CC) $(DEBUG) -c parser.c
+@@ -93,11 +105,11 @@
+ 	$(RM_F) parser.h
+ 	$(RM_F) lexer.c parser.c
+ 
+-publish :
+-	$(PERL) publish.pl < MANIFEST
+-
+-dist :
+-	$(PERL) distribution.pl < MANIFEST
++#publish :
++#	$(PERL) publish.pl < MANIFEST
++#
++#dist :
++#	$(PERL) distribution.pl < MANIFEST
+ 
+ parser.c : cola.y
+ 	$(YACC) -d -o parser.c cola.y
+@@ -127,5 +139,23 @@
+ 	$(CC) $(DEBUG) -o colacc$(EXE) parser$(O) lexer$(O) gen$(O) semant$(O) sym$(O) type$(O) $(LIBS)
+ 
+ test: default
+-	cd .. && $(PERL) t/harness --languages=cola
++	cd .. && $(PERL) t/harness --languages=$(HLLNAME)
++
++# TODO: rename build_dir. basic run for missing libs
++test-installable : installable
++	./colacc$(EXE) examples/fib.cola
++
++install : installable
++	$(CP) colacc$(EXE) $(DESTDIR)$(BIN_DIR)/parrot-colacc$(EXE)
++	ascii2man README > $(DESTDIR)$(MANDIR)/man1/parrot-colacc.1
++	$(MKPATH) $(DESTDIR)$(DOC_DIR)/languages/$(HLLNAME)
++	$(CP) $(DOCS) $(DESTDIR)$(DOC_DIR)/languages/$(HLLNAME)
+ 
++installable : colacc$(EXE)
++	$(CP) colacc$(EXE) $(BUILD_DIR)/installable_colacc$(EXE)
++
++#
++# Local variables:
++# mode: makefile
++# ex: ft=make
++# End:
+--- origsrc/parrot-0.8.2/languages/eclectus/config/makefiles/root.in	2008-06-23 02:30:48.000000000 +0000
++++ src/parrot-0.8.2/languages/eclectus/config/makefiles/root.in	2008-12-25 13:44:21.287750000 +0000
+@@ -4,22 +4,34 @@
+ # Makefile for languages/eclectus
+ 
+ # configuration settings
+-BUILD_DIR       = @build_dir@
+-LOAD_EXT        = @load_ext@
+-O               = @o@
++HLLNAME       = eclectus
++BUILD_DIR     = @build_dir@
++LOAD_EXT      = @load_ext@
++O             = @o@
++BIN_DIR       = @bin_dir@
++LIB_DIR       = @lib_dir@
++DOC_DIR       = @doc_dir@
++MANDIR	      = @mandir@
+ 
+ # Set up commands
+-PARROT          = ../../parrot@exe@
+-PERL            = @perl@
+-RM_F            = @rm_f@
+-RECONFIGURE     = $(PERL) @build_dir@/tools/dev/reconfigure.pl
+-BUILD_DYNPMC    = $(PERL) @build_dir@/tools/build/dynpmc.pl
+-#CONDITIONED_LINE(darwin):
+-#CONDITIONED_LINE(darwin):# MACOSX_DEPLOYMENT_TARGET must be defined for OS X compilation/linking
+-#CONDITIONED_LINE(darwin):export MACOSX_DEPLOYMENT_TARGET := @osx_version@
++#IF(parrot_is_shared and !(cygwin|win32)):export LD_RUN_PATH := @blib_dir@:$(LD_RUN_PATH)
++PARROT        = ../../parrot@exe@
++PBC_TO_EXE    = ../../pbc_to_exe@exe@
++PERL          = @perl@
++RM_F          = @rm_f@
++RENAME        = @mv@
++CP            = @cp@
++MKPATH        = @mkpath@
++POD2MAN       = pod2man
++RECONFIGURE   = $(PERL) @build_dir@/tools/dev/reconfigure.pl
++BUILD_DYNPMC  = $(PERL) @build_dir@/tools/build/dynpmc.pl
++#IF(darwin):
++#IF(darwin):# MACOSX_DEPLOYMENT_TARGET must be defined for OS X compilation/linking
++#IF(darwin):export MACOSX_DEPLOYMENT_TARGET := @osx_version@
+ 
+ # Set up directories
+ PARROT_DYNEXT   = @build_dir@/runtime/parrot/dynext
++PARROT_LIB      = @build_dir@/runtime/parrot/library
+ PMC_DIR         = src/pmc
+ 
+ ECLECTUS_GROUP  = $(PMC_DIR)/eclectus_group@load_ext@
+@@ -39,45 +51,79 @@
+     $(PMC_DIR)/eclectuspair.pmc \
+     $(PMC_DIR)/eclectusstring.pmc \
+     $(PMC_DIR)/eclectusvector.pmc
+-
++DOCS = MAINTAINER README docs/eclectus.pod
+ 
+ # The default target
+ default: build
+ 
++all: build Makefile $(HLLNAME)@exe@ installable
++
+ help :
+ 	@echo ""
+ 	@echo "Following targets are available for the user:"
+ 	@echo ""
+-	@echo "  build:             Builds the dynamic PMCSs needed by Eclectus."
++	@echo "  all:               Builds the dynamic PMCSs needed by Eclectus."
+ 	@echo "                     This is the default target."
++	@echo "  installable:       Create self-hosting bins and libs."
++	@echo "  install:           Install the installable targets and docs."
+ 	@echo ""
++	@echo "Testing:"
+ 	@echo "  test:              Run the test suite."
++	@echo "  test-installable:  Test self-hosting targets."
++	@echo "  testclean:         Clean up test results."
+ 	@echo ""
++	@echo "Cleaning:"
+ 	@echo "  clean:             Clean up temporary files."
+-	@echo ""
+ 	@echo "  realclean:         Clean up generated files."
++	@echo "  distclean:         Removes also anything built, in theory"
+ 	@echo ""
++	@echo "Misc:"
+ 	@echo "  help:              Print this help message."
++	@echo ""
+ 
+ # regenerate the Makefile
+ Makefile: config/makefiles/root.in
+-	cd $(BUILD_DIR) && $(RECONFIGURE) --step=gen::languages --languages=eclectus
++	cd $(BUILD_DIR) && $(RECONFIGURE) --step=gen::languages --languages=$(HLLNAME)
+ 
+ # Compilation:
+-build: $(ECLECTUS_GROUP) driver_nqp.pbc
++build: $(ECLECTUS_GROUP) $(HLLNAME).pbc
+ 
+-$(ECLECTUS_GROUP): $(PARROT) $(PMC_SOURCES)
++$(ECLECTUS_GROUP): $(PMC_SOURCES)
+ 	cd $(PMC_DIR) && $(BUILD_DYNPMC) generate $(PMCS)
+ 	cd $(PMC_DIR) && $(BUILD_DYNPMC) compile $(PMCS)
+ 	cd $(PMC_DIR) && $(BUILD_DYNPMC) linklibs $(PMCS)
+ 	cd $(PMC_DIR) && $(BUILD_DYNPMC) copy --destination=$(PARROT_DYNEXT) $(PMCS)
+ 
+-driver_nqp.pbc: src/builtins/all.pbc driver_nqp.pir
+-	$(PARROT) -o driver_nqp.pbc driver_nqp.pir
++# TODO: merge those two and fix driver_nqp.pir
++$(HLLNAME).pbc: src/builtins/all.pbc driver_nqp.pir
++	$(PARROT) -o $(HLLNAME).pbc driver_nqp.pir
+ 
+ src/builtins/all.pbc: src/builtins/all.pir
+ 	$(PARROT) -o src/builtins/all.pbc src/builtins/all.pir
+ 
++# TODO: rename build_dir. basic run for missing libs
++test-installable : installable
++	./installable_$(HLLNAME)@exe@ tests-driver.scm
++
++install : installable
++	$(CP) installable_$(HLLNAME)@exe@ $(DESTDIR)$(BIN_DIR)/parrot-$(HLLNAME)@exe@
++	$(CP) $(HLLNAME).pbc $(DESTDIR)$(LIB_DIR)/parrot/library/$(HLLNAME).pbc
++	cd $(PMC_DIR) && $(BUILD_DYNPMC) copy "--destination=$(DESTDIR)$(LIB_DIR)/parrot/dynext" $(PMCS)
++	$(POD2MAN) docs/$(HLLNAME).pod > $(DESTDIR)$(MANDIR)/man1/parrot-$(HLLNAME).1
++	$(MKPATH) $(DESTDIR)$(DOC_DIR)/languages/$(HLLNAME)
++	$(CP) $(DOCS) $(DESTDIR)$(DOC_DIR)/languages/$(HLLNAME)
++
++$(HLLNAME)@exe@: $(HLLNAME).pbc
++	$(PBC_TO_EXE) $(HLLNAME).pbc
++
++installable : installable_$(HLLNAME)@exe@ $(ECLECTUS_GROUP) $(HLLNAME).pbc
++	$(CP) installable_$(HLLNAME)@exe@ $(BUILD_DIR)
++	$(CP) $(HLLNAME).pbc $(PARROT_LIB)/$(HLLNAME).pbc
++
++installable_$(HLLNAME)@exe@ : $(HLLNAME).pbc
++	$(PBC_TO_EXE) $(HLLNAME).pbc --install
++
++
+ # cleaning up
+ 
+ clean: dynext-clean test-clean
+@@ -97,8 +143,11 @@
+   $(PMC_DIR)/*.ilk \
+   $(PMC_DIR)/*.manifest \
+   $(PMC_DIR)/*.pdb \
+-  $(PMC_DIR)/*.lib
+-
++  $(PMC_DIR)/*.lib \
++  installable_$(HLLNAME)@exe@ \
++  $(HLLNAME)@exe@ \
++  $(HLLNAME).pbc \
++  $(PARROT_LIB)/$(HLLNAME).pbc
+ 
+ realclean: clean
+ 	$(RM_F) Makefile
+@@ -110,3 +159,11 @@
+ test-clean:
+ 	$(RM_F) t/*.nqp
+ 	$(RM_F) t/*.pir
++
++distclean: realclean
++
++#
++# Local variables:
++# mode: makefile
++# ex: ft=make
++# End:
+--- origsrc/parrot-0.8.2/languages/eclectus/driver_nqp.pir	2008-10-10 19:13:21.000000000 +0000
++++ src/parrot-0.8.2/languages/eclectus/driver_nqp.pir	2008-12-25 13:44:21.287750000 +0000
+@@ -39,7 +39,7 @@
+     # say cmd
+     ret = spawnw cmd
+ 
+-    # load the generated PIR
++    # load the generated PIR. TODO: make that installable
+     $S1 = concat "languages/eclectus/", pir_fn
+     load_bytecode $S1
+ 
+--- origsrc/parrot-0.8.2/languages/ecmascript/config/makefiles/root.in	2008-06-23 02:30:46.000000000 +0000
++++ src/parrot-0.8.2/languages/ecmascript/config/makefiles/root.in	2008-12-25 13:44:21.334625000 +0000
+@@ -4,9 +4,14 @@
+ PARROT_ARGS =
+ 
+ ## configuration settings
++HLLNAME       = eclectus
+ BUILD_DIR     = @build_dir@
+ LOAD_EXT      = @load_ext@
+ O             = @o@
++BIN_DIR       = @bin_dir@
++LIB_DIR       = @lib_dir@
++DOC_DIR       = @doc_dir@
++MANDIR	      = @mandir@
+ 
+ # Setup some commands
+ LN_S          = @lns@
+@@ -14,33 +19,42 @@
+ RM_F          = @rm_f@
+ RM_RF         = @rm_rf@
+ CP            = @cp@
++RENAME        = @mv@
++MKPATH        = @mkpath@
++POD2MAN       = pod2man
++
++#IF(parrot_is_shared and !(cygwin|win32)):export LD_RUN_PATH := @blib_dir@:$(LD_RUN_PATH)
+ PARROT        = ../../parrot@exe@
++PBC_TO_EXE    = ../../pbc_to_exe@exe@
+ CAT           = $(PERL) -MExtUtils::Command -e cat
+ BUILD_DYNPMC  = $(PERL) $(BUILD_DIR)/tools/build/dynpmc.pl
+ RECONFIGURE   = $(PERL) $(BUILD_DIR)/tools/dev/reconfigure.pl
+-#CONDITIONED_LINE(darwin):
+-#CONDITIONED_LINE(darwin):# MACOSX_DEPLOYMENT_TARGET must be defined for OS X compilation/linking
+-#CONDITIONED_LINE(darwin):export MACOSX_DEPLOYMENT_TARGET := @osx_version@
++#IF(darwin):
++#IF(darwin):# MACOSX_DEPLOYMENT_TARGET must be defined for OS X compilation/linking
++#IF(darwin):export MACOSX_DEPLOYMENT_TARGET := @osx_version@
+ 
+ ## places to look for things
+ PARROT_DYNEXT = $(BUILD_DIR)/runtime/parrot/dynext
+-PGE_LIBRARY   = $(BUILD_DIR)/runtime/parrot/library/PGE
++PARROT_LIB    = $(BUILD_DIR)/runtime/parrot/library
++PGE_LIBRARY   = $(PARROT_LIB)/PGE
+ PERL6GRAMMAR  = $(PGE_LIBRARY)/Perl6Grammar.pbc
+ NQP           = $(BUILD_DIR)/compilers/nqp/nqp.pbc
+-PCT           = $(BUILD_DIR)/runtime/parrot/library/PCT.pbc
+-PBC_TO_EXE    = $(BUILD_DIR)/pbc_to_exe@exe@
++PCT           = $(PARROT_LIB)/PCT.pbc
+ 
+ PMCDIR   = src/pmc
+ 
+ 
+ # the default target
+-all: js.pbc #$(PMCDIR)/js_group$(LOAD_EXT)
++build: $(HLLNAME).pbc
++
++all: js.pbc $(HLLNAME)@exe@ Makefile installable
+ 
++DOCS = MAINTAINER
+ SOURCES = \
+   js.pir \
+   src/gen_grammar.pir \
+   src/gen_actions.pir \
+-  src/builtin/builtins.pir \
++  src/builtin/builtins.pir
+ 
+ #PMCS = \
+ #  jsobject \
+@@ -85,7 +99,7 @@
+ 	$(PBC_TO_EXE) js.pbc
+ 
+ # the default target
+-js.pbc: $(PARROT) $(SOURCES)
++js.pbc: $(SOURCES)
+ 	$(PARROT) $(PARROT_ARGS) -o js.pbc js.pir
+ 
+ src/gen_grammar.pir: $(PERL6GRAMMAR) src/parser/grammar.pg 
+@@ -104,7 +118,7 @@
+ 
+ # regenerate the Makefile
+ Makefile: config/makefiles/root.in
+-	cd $(BUILD_DIR) && $(RECONFIGURE) --step=gen::languages --languages=ecmascript
++	cd $(BUILD_DIR) && $(RECONFIGURE) --step=gen::languages --languages=$(HLLNAME)
+ 
+ # This is a listing of all targets, that are meant to be called by users
+ help:
+@@ -113,8 +127,12 @@
+ 	@echo ""
+ 	@echo "  all:               js.pbc"
+ 	@echo "                     This is the default."
++	@echo "  installable:       Create self-hosting bins and libs."
++	@echo "  install:           Install the installable targets and docs."
++	@echo ""
+ 	@echo "Testing:"
+ 	@echo "  test:              Run the test suite."
++	@echo "  test-installable:  Test self-hosting targets."
+ 	@echo "  testclean:         Clean up test results."
+ 	@echo ""
+ 	@echo "Cleaning:"
+@@ -129,12 +147,42 @@
+ test: all
+ 	$(PERL) t/harness t
+ 
++# TODO: rename build_dir. basic run for missing libs
++test-installable : installable
++	echo "2-1" | ./installable_$(HLLNAME)@exe@
++
++install : installable $(HLLNAME).pbc
++	$(CP) installable_$(HLLNAME)@exe@ $(DESTDIR)$(BIN_DIR)/parrot-$(HLLNAME)@exe@
++	$(CP) $(HLLNAME).pbc $(DESTDIR)$(LIB_DIR)/parrot/library/$(HLLNAME).pbc
++	$(POD2MAN) $(HLLNAME).pir > $(DESTDIR)$(MANDIR)/man1/parrot-$(HLLNAME).1
++	$(MKPATH) $(DESTDIR)$(DOC_DIR)/languages/$(HLLNAME)
++	$(CP) $(DOCS) $(DESTDIR)$(DOC_DIR)/languages/$(HLLNAME)
++
++$(HLLNAME).pbc : js.pbc
++	$(CP) js.pbc $(HLLNAME).pbc
++
++$(HLLNAME)@exe@: $(HLLNAME).pbc
++	$(PBC_TO_EXE) $(HLLNAME).pbc
++
++$(PARROT_LIB)/$(HLLNAME).pbc: $(HLLNAME).pbc
++	$(CP) $(HLLNAME).pbc $(PARROT_LIB)/$(HLLNAME).pbc
++
++installable : installable_$(HLLNAME)@exe@ $(HLLNAME).pbc $(PARROT_LIB)/$(HLLNAME).pbc
++	$(CP) installable_$(HLLNAME)@exe@ $(BUILD_DIR)
++
++installable_$(HLLNAME)@exe@ : $(HLLNAME).pbc
++	$(PBC_TO_EXE) $(HLLNAME).pbc --install
++
+ testclean:
+ 	$(RM_F) "t/*.js" "t/*.out"
+ 
+ CLEANUPS = \
+-  js.pbc \
+   js@exe@ \
++  js.pbc \
++  installable_$(HLLNAME)@exe@ \
++  $(HLLNAME).pbc \
++  $(HLLNAME)@exe@ \
++  $(PARROT_LIB)/$(HLLNAME).pbc \
+   js.c \
+   src/gen_grammar.pir \
+   src/gen_actions.pir \
+@@ -159,3 +207,9 @@
+ 	$(RM_RF) Makefile
+ 
+ distclean: realclean
++
++#
++# Local variables:
++# mode: makefile
++# ex: ft=make
++# End:
+--- origsrc/parrot-0.8.2/languages/forth/config/makefiles/root.in	2008-06-23 02:30:45.000000000 +0000
++++ src/parrot-0.8.2/languages/forth/config/makefiles/root.in	2008-12-25 13:44:21.365875000 +0000
+@@ -1,23 +1,36 @@
+ # $Id: /mirror/trunk/languages/forth/config/makefiles/root.in 28688 2008-06-23T00:33:41.905243Z coke  $
+ 
+-PARROT = ../../parrot@exe@
+-PERL   = @perl@
+-RM_RF  = @rm_rf@
++HLLNAME       = forth
++PERL          = @perl@
++RM_RF         = @rm_rf@
++CP            = @cp@
++MKPATH        = @mkpath@
++POD2MAN	      = pod2man
++
++#IF(parrot_is_shared and !(cygwin|win32)):export LD_RUN_PATH := @blib_dir@:$(LD_RUN_PATH)
++PARROT        = ../../parrot@exe@
++PBC_TO_EXE    = ../../pbc_to_exe@exe@
++PBC_MERGE     = ../../pbc_merge@exe@
+ RECONFIGURE   = $(PERL) @build_dir@/tools/dev/reconfigure.pl
+-#CONDITIONED_LINE(darwin):
+-#CONDITIONED_LINE(darwin):# MACOSX_DEPLOYMENT_TARGET must be defined for OS X compilation/linking
+-#CONDITIONED_LINE(darwin):export MACOSX_DEPLOYMENT_TARGET := @osx_version@
++#IF(darwin):
++#IF(darwin):# MACOSX_DEPLOYMENT_TARGET must be defined for OS X compilation/linking
++#IF(darwin):export MACOSX_DEPLOYMENT_TARGET := @osx_version@
++
++BIN_DIR       = @bin_dir@
++LIB_DIR       = @lib_dir@
++DOC_DIR       = @doc_dir@
++MANDIR	      = @mandir@
++PARROT_LIB    = $(BUILD_DIR)/runtime/parrot/library
++
++PBCS = tokenstream.pbc \
++       variablestack.pbc \
++       virtualstack.pbc
++DEPENDENCIES = forth.pbc $(PBCS)
++DOCS = MAINTAINER
+ 
+-BUILD_DIR     = @build_dir@
++build: $(DEPENDENCIES)
+ 
+-DEPENDENCIES = \
+-    forth.pbc \
+-    tokenstream.pbc \
+-    variablestack.pbc \
+-    virtualstack.pbc
+-
+-
+-all: $(DEPENDENCIES)
++all: $(DEPENDENCIES) Makefile forth@exe@ installable
+ 
+ # regenerate the Makefile
+ Makefile: config/makefiles/root.in
+@@ -47,3 +60,76 @@
+ 
+ test: all
+ 	$(PERL) t/harness
++
++# This is a listing of all targets, that are meant to be called by users
++help:
++	@echo ""
++	@echo "Following targets are available for the user:"
++	@echo ""
++	@echo "  all:               force.pbc"
++	@echo "                     This is the default."
++	@echo "  installable:       Create self-hosting bins and libs."
++	@echo "  install:           Install the installable targets and docs."
++	@echo ""
++	@echo "Testing:"
++	@echo "  test:              Run the test suite."
++	@echo "  test-installable:  Test self-hosting targets."
++	@echo "  testclean:         Clean up test results."
++	@echo ""
++	@echo "Cleaning:"
++	@echo "  clean:             Basic cleaning up."
++	@echo "  realclean:         Removes also files generated by 'Configure.pl'"
++	@echo "  distclean:         Removes also anything built, in theory"
++	@echo ""
++	@echo "Misc:"
++	@echo "  help:              Print this help message."
++	@echo ""
++
++# TODO: rename build_dir. basic run for missing libs
++test-installable : installable
++	echo "2-1" | ./installable_$(HLLNAME)@exe@
++
++install : installable
++	$(CP) installable_$(HLLNAME)@exe@ $(DESTDIR)$(BIN_DIR)/parrot-$(HLLNAME)@exe@
++	$(CP) $(HLLNAME).pbc    $(DESTDIR)$(LIB_DIR)/parrot/library/$(HLLNAME).pbc
++	-$(MKPATH) $(DESTDIR)$(LIB_DIR)/parrot/library/forth
++	$(CP) tokenstream.pbc   $(DESTDIR)$(LIB_DIR)/parrot/library/forth/tokenstream.pbc
++	$(CP) variablestack.pbc $(DESTDIR)$(LIB_DIR)/parrot/library/forth/variablestack.pbc
++	$(CP) virtualstack.pbc  $(DESTDIR)$(LIB_DIR)/parrot/library/forth/virtualstack.pbc
++	-$(MKPATH) $(DESTDIR)$(DOC_DIR)/languages/$(HLLNAME)
++	$(CP) $(DOCS) $(DESTDIR)$(DOC_DIR)/languages/$(HLLNAME)
++
++$(HLLNAME)@exe@: $(HLLNAME).pbc
++	$(PBC_TO_EXE) $(HLLNAME).pbc
++
++installable : installable_$(HLLNAME)@exe@ $(HLLNAME).pbc
++	$(CP) installable_$(HLLNAME)@exe@ $(BUILD_DIR)
++	$(CP) $(HLLNAME).pbc    $(PARROT_LIB)/$(HLLNAME).pbc
++	-$(MKPATH) $(PARROT_LIB)/forth
++	$(CP) tokenstream.pbc   $(PARROT_LIB)/forth/tokenstream.pbc
++	$(CP) variablestack.pbc $(PARROT_LIB)/forth/variablestack.pbc
++	$(CP) virtualstack.pbc  $(PARROT_LIB)/forth/virtualstack.pbc
++
++installable_$(HLLNAME)@exe@ : $(HLLNAME).pbc
++	$(PBC_TO_EXE) $(HLLNAME).pbc --install
++
++testclean:
++
++CLEANUPS = \
++  installable_$(HLLNAME)@exe@ \
++  *.pbc \
++  $(HLLNAME)@exe@ \
++
++clean:
++	$(RM_RF) $(CLEANUPS)
++
++realclean: clean
++	$(RM_RF) Makefile
++
++distclean: realclean
++
++#
++# Local variables:
++# mode: makefile
++# ex: ft=make
++# End:
+--- origsrc/parrot-0.8.2/languages/forth/forth.pir	2008-12-17 06:55:12.000000000 +0000
++++ src/parrot-0.8.2/languages/forth/forth.pir	2008-12-25 13:44:21.381500000 +0000
+@@ -5,10 +5,27 @@
+ .include 'languages/forth/words.pir'
+ 
+ .sub ' init' :load
++
++    # determine location of libs from the Parrot config
++    load_bytecode 'config.pir'
++    .local pmc cfg
++    cfg  = _config()
++    .local int installed
++    .local string lib_dir, pbc_fn
++    lib_dir = 'forth/'
++    installed = cfg['installed']
++    if installed goto inst
++
++    lib_dir = cfg['build_dir']
++    lib_dir .= '/languages/forth/'
++inst:
+     # load the libraries we depend on
+-    load_bytecode 'languages/forth/tokenstream.pbc'
+-    load_bytecode 'languages/forth/variablestack.pbc'
+-    load_bytecode 'languages/forth/virtualstack.pbc'
++    pbc_fn = concat lib_dir, 'tokenstream.pbc'
++    load_bytecode pbc_fn
++    pbc_fn = concat lib_dir, 'variablestack.pbc'
++    load_bytecode pbc_fn
++    pbc_fn = concat lib_dir, 'virtualstack.pbc'
++    load_bytecode pbc_fn
+ 
+     # initialize the rstack
+     .local pmc stack
+--- origsrc/parrot-0.8.2/languages/forth/test.pir	2008-12-17 06:55:12.000000000 +0000
++++ src/parrot-0.8.2/languages/forth/test.pir	2008-12-25 13:44:21.381500000 +0000
+@@ -10,11 +10,23 @@
+ 
+ .sub main :main
+     .param pmc args
+-    .local int argc
++    .local int argc, installed
++    .local string lib_dir, pbc_fn
+     $P0  = shift args
+     argc = elements args
+ 
+-    load_bytecode 'languages/forth/forth.pir'
++    # determine location of libs from the Parrot config
++    .local pmc cfg
++    cfg  = _config()
++    lib_dir = 'forth/'
++    installed = cfg['installed']
++    if installed goto inst
++
++    lib_dir = cfg['build_dir']
++    lib_dir .= 'languages/forth/'
++inst:
++    pbc_fn = concat lib_dir, 'forth'
++    load_bytecode pbc_fn
+ 
+     .local pmc iter
+     iter = new 'Iterator', args
+--- origsrc/parrot-0.8.2/languages/hq9plus/config/makefiles/root.in	2008-06-23 02:30:46.000000000 +0000
++++ src/parrot-0.8.2/languages/hq9plus/config/makefiles/root.in	2008-12-25 13:44:21.397125000 +0000
+@@ -4,25 +4,39 @@
+ PARROT_ARGS =
+ 
+ ## configuration settings
++HLLNAME       = hq9plus
+ BUILD_DIR     = @build_dir@
++BIN_DIR       = @bin_dir@
++LIB_DIR       = @lib_dir@
++DOC_DIR       = @doc_dir@
++MANDIR	      = @mandir@
+ 
+ ## Setup some commands
+ PERL          = @perl@
+ RM_RF         = @rm_rf@
++CP            = @cp@
++MKPATH        = @mkpath@
++POD2MAN       = pod2man
++
++#IF(parrot_is_shared and !(cygwin|win32)):export LD_RUN_PATH := @blib_dir@:$(LD_RUN_PATH)
+ PARROT        = ../../parrot@exe@
++PBC_TO_EXE    = ../../pbc_to_exe@exe@
+ CAT           = $(PERL) -MExtUtils::Command -e cat
+ RECONFIGURE   = $(PERL) $(BUILD_DIR)/tools/dev/reconfigure.pl
+-#CONDITIONED_LINE(darwin):
+-#CONDITIONED_LINE(darwin):# MACOSX_DEPLOYMENT_TARGET must be defined for OS X compilation/linking
+-#CONDITIONED_LINE(darwin):export MACOSX_DEPLOYMENT_TARGET := @osx_version@
++#IF(darwin):
++#IF(darwin):# MACOSX_DEPLOYMENT_TARGET must be defined for OS X compilation/linking
++#IF(darwin):export MACOSX_DEPLOYMENT_TARGET := @osx_version@
+ 
+ ## places to look for things
+-PGE_LIBRARY   = $(BUILD_DIR)/runtime/parrot/library/PGE
++PARROT_LIB    = $(BUILD_DIR)/runtime/parrot/library
++PGE_LIBRARY   = $(PARROT_LIB)/PGE
+ PERL6GRAMMAR  = $(PGE_LIBRARY)/Perl6Grammar.pbc
+ NQP           = $(BUILD_DIR)/compilers/nqp/nqp.pbc
+-PCT           = $(BUILD_DIR)/runtime/parrot/library/PCT.pbc
++PCT           = $(PARROT_LIB)/PCT.pbc
++
++build: hq9plus.pbc
+ 
+-all: hq9plus.pbc
++all: hq9plus.pbc Makefile hq9plus@exe@ installable
+ 
+ SOURCES = hq9plus.pir \
+   src/gen_grammar.pir \
+@@ -35,8 +49,10 @@
+   src/builtins/nintynine_bottles_of_beer.pir \
+   src/builtins/plus.pir \
+ 
++DOCS = MAINTAINER README
++
+ # the default target
+-hq9plus.pbc: $(PARROT) $(SOURCES)
++hq9plus.pbc: $(SOURCES)
+ 	$(PARROT) $(PARROT_ARGS) -o hq9plus.pbc hq9plus.pir
+ 
+ src/gen_grammar.pir: $(PERL6GRAMMAR) src/parser/grammar.pg
+@@ -53,7 +69,7 @@
+ 
+ # regenerate the Makefile
+ Makefile: config/makefiles/root.in
+-	cd $(BUILD_DIR) && $(RECONFIGURE) --step=gen::languages --languages=hq9plus
++	cd $(BUILD_DIR) && $(RECONFIGURE) --step=gen::languages --languages=$(HLLNAME)
+ 
+ # This is a listing of all targets, that are meant to be called by users
+ help:
+@@ -62,8 +78,12 @@
+ 	@echo ""
+ 	@echo "  all:               hq9plus.pbc"
+ 	@echo "                     This is the default."
++	@echo "  installable:       Create self-hosting bins and libs."
++	@echo "  install:           Install the installable targets and docs."
++	@echo ""
+ 	@echo "Testing:"
+ 	@echo "  test:              Run the test suite."
++	@echo "  test-installable:  Test self-hosting targets."
+ 	@echo "  testclean:         Clean up test results."
+ 	@echo ""
+ 	@echo "Cleaning:"
+@@ -78,6 +98,27 @@
+ test: all
+ 	$(PERL) t/harness
+ 
++# TODO: rename build_dir. basic run for missing libs
++test-installable : installable
++	./installable_$(HLLNAME)@exe@
++
++install : installable
++	$(CP) installable_$(HLLNAME)@exe@ $(DESTDIR)$(BIN_DIR)/parrot-$(HLLNAME)@exe@
++	$(CP) $(HLLNAME).pbc $(DESTDIR)$(LIB_DIR)/parrot/library/$(HLLNAME).pbc
++	$(POD2MAN) $(HLLNAME).pir > $(DESTDIR)$(MANDIR)/man1/parrot-$(HLLNAME).1
++	$(MKPATH) $(DESTDIR)$(DOC_DIR)/languages/$(HLLNAME)
++	$(CP) $(DOCS) $(DESTDIR)$(DOC_DIR)/languages/$(HLLNAME)
++
++$(HLLNAME)@exe@: $(HLLNAME).pbc
++	$(PBC_TO_EXE) $(HLLNAME).pbc
++
++installable : installable_$(HLLNAME)@exe@ $(HLLNAME).pbc
++	$(CP) installable_$(HLLNAME)@exe@ $(BUILD_DIR)
++	$(CP) $(HLLNAME).pbc $(PARROT_LIB)/$(HLLNAME).pbc
++
++installable_$(HLLNAME)@exe@ : $(HLLNAME).pbc
++	$(PBC_TO_EXE) $(HLLNAME).pbc --install
++
+ # this target has nothing to do
+ testclean:
+ 
+@@ -87,8 +128,11 @@
+   src/gen_actions.pir \
+   src/gen_builtins.pir \
+   t/*.HQ9plus \
+-  t/*.out
+-
++  t/*.out \
++  installable_$(HLLNAME)@exe@ \
++  $(HLLNAME)@exe@ \
++  $(HLLNAME).pbc \
++  $(PARROT_LIB)/$(HLLNAME).pbc
+ 
+ clean:
+ 	$(RM_RF) $(CLEANUPS)
+@@ -96,4 +140,10 @@
+ realclean: clean
+ 	$(RM_RF) Makefile
+ 
+-distclean: realclean
++distclean: clean realclean
++
++#
++# Local variables:
++# mode: makefile
++# ex: ft=make
++# End:
+--- origsrc/parrot-0.8.2/languages/jako/config/makefiles/root.in	2008-06-23 02:30:46.000000000 +0000
++++ src/parrot-0.8.2/languages/jako/config/makefiles/root.in	2008-12-25 13:44:21.444000000 +0000
+@@ -4,18 +4,33 @@
+ # $Id: /mirror/trunk/languages/jako/config/makefiles/root.in 28688 2008-06-23T00:33:41.905243Z coke  $
+ #
+ 
++HLLNAME       = jako
++BUILD_DIR     = @build_dir@
++LOAD_EXT      = @load_ext@
++O             = @o@
++BIN_DIR       = @bin_dir@
++PERLLIB_DIR   = $(shell $(PERL) -V::sitelib:)
++DOC_DIR       = @doc_dir@
++MANDIR	      = @mandir@
++
+ PERL          = @perl@
+ RM_F          = @rm_f@
++CP            = @cp@
++MKPATH        = @mkpath@
++POD2MAN       = pod2man
+ JAKOC         = $(PERL) -I lib jakoc
++
++#IF(parrot_is_shared and !(cygwin|win32)):export LD_RUN_PATH := @blib_dir@:$(LD_RUN_PATH)
+ INTERP        = ../../@test_prog@
+-BUILD_DIR     = @build_dir@
++PBC_TO_EXE    = ../../pbc_to_exe@exe@
+ RECONFIGURE   = $(PERL) @build_dir@/tools/dev/reconfigure.pl
+-#CONDITIONED_LINE(darwin):
+-#CONDITIONED_LINE(darwin):# MACOSX_DEPLOYMENT_TARGET must be defined for OS X compilation/linking
+-#CONDITIONED_LINE(darwin):export MACOSX_DEPLOYMENT_TARGET := @osx_version@
++#IF(darwin):
++#IF(darwin):# MACOSX_DEPLOYMENT_TARGET must be defined for OS X compilation/linking
++#IF(darwin):export MACOSX_DEPLOYMENT_TARGET := @osx_version@
+ 
+-.SUFFIXES: .jako .pir
++DOCS = README MAINTAINER
+ 
++.SUFFIXES: .jako .pir
+ 
+ # default target
+ all: \
+@@ -41,16 +56,23 @@
+ 	@echo ""
+ 	@echo "  all  :             Compile the example scripts"
+ 	@echo "                     This is the default."
++	@echo "  installable:       Create self-hosting bins and libs."
++	@echo "  install:           Install the installable targets and docs."
++	@echo "  over:              Clean and build again"
++	@echo ""
++	@echo "Testing:"
++	@echo "  test:              Run the test suite."
++	@echo "  test-installable:  Test self-hosting targets."
++	@echo "  testclean:         Clean up test results."
++	@echo ""
++	@echo "Cleaning:"
++	@echo "  clean:             Basic cleaning up."
++	@echo "  realclean:         Removes also files generated by 'Configure.pl'"
++	@echo "  distclean:         Removes also anything built, in theory"
+ 	@echo ""
+-	@echo "  over:              clean and build again"
++	@echo "Misc:"
++	@echo "  help:              Print this help message."
+ 	@echo ""
+-	@echo "  test:              run the test suite"
+-	@echo ""
+-	@echo "  clean:             clean up temporary files"
+-	@echo ""
+-	@echo "  realclean:         clean up generated files"
+-	@echo ""
+-	@echo "  help:              print this help message"
+ 
+ 
+ # regenerate the Makefile
+@@ -109,7 +131,27 @@
+ 	$(INTERP) examples/queens.pir
+ 	$(INTERP) examples/sub.pir
+ 
++# TODO: rename build_dir. basic run for missing libs
++test-installable : installable
++	echo "2-1" | ./installable_$(HLLNAME)@exe@
++
++install : installable
++	$(CP) jako $(DESTDIR)$(BIN_DIR)/parrot-jako
++	$(CP) jakoc $(DESTDIR)$(BIN_DIR)/parrot-jakoc
++	$(CP) -R lib/Jako $(DESTDIR)$(PERLLIB_DIR)
++	$(POD2MAN) docs/jako.pod > $(DESTDIR)$(MANDIR)/man1/parrot-$(HLLNAME).1
++	$(MKPATH) $(DESTDIR)$(DOC_DIR)/languages/$(HLLNAME)
++	$(MKPATH) $(DESTDIR)$(DOC_DIR)/languages/$(HLLNAME)/examples
++	$(CP) $(DOCS) $(DESTDIR)$(DOC_DIR)/languages/$(HLLNAME)
++	$(CP) *.jako $(DESTDIR)$(DOC_DIR)/languages/$(HLLNAME)
++	$(CP) examples/*.jako $(DESTDIR)$(DOC_DIR)/languages/$(HLLNAME)/examples
++
++installable : jako jakoc
++
++testclean:
+ 
+ #
+-# End of file.
+-#
++# Local variables:
++# mode: makefile
++# ex: ft=make
++# End:
+--- origsrc/parrot-0.8.2/languages/json/config/makefiles/root.in	2008-07-02 08:59:01.000000000 +0000
++++ src/parrot-0.8.2/languages/json/config/makefiles/root.in	2008-12-25 13:44:21.506500000 +0000
+@@ -4,48 +4,59 @@
+ PARROT_ARGS =
+ 
+ ## configuration settings
++HLLNAME       = json
+ BUILD_DIR     = @build_dir@
+ LOAD_EXT      = @load_ext@
+ O             = @o@
++BIN_DIR       = @bin_dir@
++LIB_DIR       = @lib_dir@
++DOC_DIR       = @doc_dir@
++MANDIR	      = @mandir@
+ 
+ ## Setup some commands
+ LN_S          = @lns@
+ PERL          = @perl@
+ RM_RF         = @rm_rf@
+ CP            = @cp@
++MKPATH        = @mkpath@
++POD2MAN       = pod2man
++
++#IF(parrot_is_shared and !(cygwin|win32)):export LD_RUN_PATH := @blib_dir@:$(LD_RUN_PATH)
+ PARROT        = ../../parrot@exe@
++PBC_TO_EXE    = ../../pbc_to_exe@exe@
+ CAT           = $(PERL) -MExtUtils::Command -e cat
+ BUILD_DYNPMC  = $(PERL) $(BUILD_DIR)/tools/build/dynpmc.pl
+ RECONFIGURE   = $(PERL) $(BUILD_DIR)/tools/dev/reconfigure.pl
+-#CONDITIONED_LINE(darwin):
+-#CONDITIONED_LINE(darwin):# MACOSX_DEPLOYMENT_TARGET must be defined for OS X compilation/linking
+-#CONDITIONED_LINE(darwin):export MACOSX_DEPLOYMENT_TARGET := @osx_version@
++#IF(darwin):
++#IF(darwin):# MACOSX_DEPLOYMENT_TARGET must be defined for OS X compilation/linking
++#IF(darwin):export MACOSX_DEPLOYMENT_TARGET := @osx_version@
+ 
+ ## places to look for things
+ PARROT_DYNEXT = $(BUILD_DIR)/runtime/parrot/dynext
+-PGE_LIBRARY   = $(BUILD_DIR)/runtime/parrot/library/PGE
++PARROT_LIB    = $(BUILD_DIR)/runtime/parrot/library
++PGE_LIBRARY   = $(PARROT_LIB)/PGE
+ PERL6GRAMMAR  = $(PGE_LIBRARY)/Perl6Grammar.pbc
+ NQP           = $(BUILD_DIR)/compilers/nqp/nqp.pbc
+-PCT           = $(BUILD_DIR)/runtime/parrot/library/PCT.pbc
++PCT           = $(PARROT_LIB)/PCT.pbc
+ 
+ PMC_DIR       = src/pmc
+ 
+-all: json.pbc
++build: json.pbc
++
++all: json.pbc Makefile json@exe@ installable
+ 
+ JSON_GROUP = $(PMC_DIR)/json_group$(LOAD_EXT)
+ 
+ SOURCES = json.pir \
+   src/gen_grammar.pir \
+   src/gen_actions.pir \
+-  src/gen_builtins.pir \
+-#  $(JSON_GROUP)
++  src/gen_builtins.pir
++
++DOCS = MAINTAINER
+ 
+ BUILTINS_PIR = \
+   src/builtins/say.pir \
+ 
+-# PMCS = json
+-# PMC_SOURCES = $(PMC_DIR)/json.pmc
+-
+ # the default target
+ json.pbc: $(PARROT) $(SOURCES)
+ 	$(PARROT) $(PARROT_ARGS) -o json.pbc json.pir
+@@ -63,15 +74,9 @@
+ src/gen_builtins.pir: $(BUILTINS_PIR)
+ 	$(CAT) $(BUILTINS_PIR) >src/gen_builtins.pir
+ 
+-$(JSON_GROUP): $(PARROT) $(PMC_SOURCES)
+-	cd $(PMC_DIR) && $(BUILD_DYNPMC) generate $(PMCS)
+-	cd $(PMC_DIR) && $(BUILD_DYNPMC) compile $(PMCS)
+-	cd $(PMC_DIR) && $(BUILD_DYNPMC) linklibs $(PMCS)
+-	cd $(PMC_DIR) && $(BUILD_DYNPMC) copy --destination=$(PARROT_DYNEXT) $(PMCS)
+-
+ # regenerate the Makefile
+ Makefile: config/makefiles/root.in
+-	cd $(BUILD_DIR) && $(RECONFIGURE) --step=gen::languages --languages=json
++	cd $(BUILD_DIR) && $(RECONFIGURE) --step=gen::languages --languages=$(HLLNAME)
+ 
+ # This is a listing of all targets, that are meant to be called by users
+ help:
+@@ -80,8 +85,12 @@
+ 	@echo ""
+ 	@echo "  all:               json.pbc"
+ 	@echo "                     This is the default."
++	@echo "  installable:       Create self-hosting bins and libs."
++	@echo "  install:           Install the installable targets and docs."
++	@echo ""
+ 	@echo "Testing:"
+ 	@echo "  test:              Run the test suite."
++	@echo "  test-installable:  Test self-hosting targets."
+ 	@echo "  testclean:         Clean up test results."
+ 	@echo ""
+ 	@echo "Cleaning:"
+@@ -96,6 +105,27 @@
+ test: all
+ 	$(PERL) t/harness
+ 
++# TODO: rename build_dir. basic run for missing libs
++test-installable : installable
++	./installable_$(HLLNAME)@exe@
++
++install : installable
++	$(CP) installable_$(HLLNAME)@exe@ $(DESTDIR)$(BIN_DIR)/parrot-$(HLLNAME)@exe@
++	$(CP) $(HLLNAME).pbc $(DESTDIR)$(LIB_DIR)/parrot/library/$(HLLNAME).pbc
++	$(POD2MAN) $(HLLNAME).pir > $(DESTDIR)$(MANDIR)/man1/parrot-$(HLLNAME).1
++	$(MKPATH) $(DESTDIR)$(DOC_DIR)/languages/$(HLLNAME)
++	$(CP) $(DOCS) $(DESTDIR)$(DOC_DIR)/languages/$(HLLNAME)
++
++$(HLLNAME)@exe@: $(HLLNAME).pbc
++	$(PBC_TO_EXE) $(HLLNAME).pbc
++
++installable : installable_$(HLLNAME)@exe@ $(HLLNAME).pbc
++	$(CP) installable_$(HLLNAME)@exe@ $(BUILD_DIR)
++	$(CP) $(HLLNAME).pbc $(PARROT_LIB)/$(HLLNAME).pbc
++
++installable_$(HLLNAME)@exe@ : $(HLLNAME).pbc
++	$(PBC_TO_EXE) $(HLLNAME).pbc --install
++
+ # this target has nothing to do
+ testclean:
+ 
+@@ -104,17 +134,10 @@
+   src/gen_grammar.pir \
+   src/gen_actions.pir \
+   src/gen_builtins.pir \
+-  $(PMC_DIR)/*.h \
+-  $(PMC_DIR)/*.c \
+-  $(PMC_DIR)/*.dump \
+-  $(PMC_DIR)/*$(O) \
+-  $(PMC_DIR)/*$(LOAD_EXT) \
+-  $(PMC_DIR)/*.exp \
+-  $(PMC_DIR)/*.ilk \
+-  $(PMC_DIR)/*.manifest \
+-  $(PMC_DIR)/*.pdb \
+-  $(PMC_DIR)/*.lib \
+-
++  installable_$(HLLNAME)@exe@ \
++  $(HLLNAME)@exe@ \
++  $(HLLNAME).pbc \
++  $(PARROT_LIB)/$(HLLNAME).pbc
+ 
+ clean: testclean
+ 	$(RM_RF) $(CLEANUPS)
+@@ -123,3 +146,9 @@
+ 	$(RM_RF) Makefile
+ 
+ distclean: realclean
++
++#
++# Local variables:
++# mode: makefile
++# ex: ft=make
++# End:
+--- origsrc/parrot-0.8.2/languages/lazy-k/config/makefiles/root.in	2008-06-23 02:30:48.000000000 +0000
++++ src/parrot-0.8.2/languages/lazy-k/config/makefiles/root.in	2008-12-25 13:44:21.522125000 +0000
+@@ -1,47 +1,104 @@
+-# $Id: /mirror/trunk/languages/lazy-k/config/makefiles/root.in 28688 2008-06-23T00:33:41.905243Z coke  $
++# $Id: root.in 31298 2008-09-21 09:36:09Z rurban $
+ 
+ # Makefile for languages/lazy-k
++HLLNAME       = lazy-k
+ 
+ # Setup of some commands
+-PARROT        = @build_dir@/parrot@exe@
+ PERL          = @perl@
+ RM_F          = @rm_f@
++CP            = @cp@
++MKPATH        = @mkpath@
++POD2MAN       = pod2man
++
++#IF(parrot_is_shared and !(cygwin|win32)):export LD_RUN_PATH := @blib_dir@:$(LD_RUN_PATH)
++PARROT        = ../../parrot@exe@
++PBC_TO_EXE    = ../../pbc_to_exe@exe@
+ RECONFIGURE   = $(PERL) @build_dir@/tools/dev/reconfigure.pl
+-#CONDITIONED_LINE(darwin):
+-#CONDITIONED_LINE(darwin):# MACOSX_DEPLOYMENT_TARGET must be defined for OS X compilation/linking
+-#CONDITIONED_LINE(darwin):export MACOSX_DEPLOYMENT_TARGET := @osx_version@
++#IF(darwin):
++#IF(darwin):# MACOSX_DEPLOYMENT_TARGET must be defined for OS X compilation/linking
++#IF(darwin):export MACOSX_DEPLOYMENT_TARGET := @osx_version@
+ 
+ # set up location
+ BUILD_DIR     = @build_dir@
++BIN_DIR       = @bin_dir@
++LIB_DIR       = @lib_dir@
++DOC_DIR       = @doc_dir@
++MANDIR	      = @mandir@
++PARROT_LIB    = $(BUILD_DIR)/runtime/parrot/library
+ 
+-default: all
+-all: build
++build: lazy-k.pbc
++
++all: lazy-k.pbc lazy-k@exe@ Makefile installable
++
++lazy-k.pbc : $(SOURCES)
++	$(PARROT) $(PARROT_ARGS) -o lazy-k.pbc lazy.pir
+ 
+ help :
+ 	@echo ""
+ 	@echo "Following targets are available for the user:"
+ 	@echo ""
+-	@echo "  build:             Nothing to do"
++	@echo "  all:               lazy-k.pbc"
+ 	@echo "                     This is the default."
++	@echo "  installable:       Create self-hosting bins and libs."
++	@echo "  install:           Install the installable targets and docs."
+ 	@echo ""
+-	@echo "  test:              run the test suite,"
+-	@echo ""
+-	@echo "  clean:             clean up temporary files"
++	@echo "Testing:"
++	@echo "  test:              Run the test suite."
++	@echo "  test-installable:  Test self-hosting targets."
++	@echo "  testclean:         Clean up test results."
++	@echo ""
++	@echo "Cleaning:"
++	@echo "  clean:             Basic cleaning up."
++	@echo "  realclean:         Removes also files generated by 'Configure.pl'"
++	@echo "  distclean:         Removes also anything built, in theory"
+ 	@echo ""
+-	@echo "  realclean:         clean up generated files"
++	@echo "Misc:"
++	@echo "  help:              Print this help message."
+ 	@echo ""
+-	@echo "  help:              print this help message"
+ 
+ # regenerate the Makefile
+ Makefile: config/makefiles/root.in
+-	cd $(BUILD_DIR) && $(RECONFIGURE) --step=gen::languages --languages=lazy-k
++	cd $(BUILD_DIR) && $(RECONFIGURE) --step=gen::languages --languages=$(HLLNAME)
+ 
+-build:
+-
+-test: build
++test: all
+ 	cd .. && $(PERL) t/harness --languages=lazy-k
+ 
++# TODO: rename build_dir. basic run for missing libs
++test-installable : installable
++	echo '1+2*3' |  ./installable_$(HLLNAME)@exe@ calc.lazy
++
++install : installable
++	$(CP) installable_$(HLLNAME)@exe@ $(DESTDIR)$(BIN_DIR)/parrot-$(HLLNAME)@exe@
++	$(CP) $(HLLNAME).pbc $(DESTDIR)$(LIB_DIR)/parrot/library/$(HLLNAME).pbc
++	$(POD2MAN) lazy.pir > $(DESTDIR)$(MANDIR)/man1/parrot-$(HLLNAME).1
++	$(MKPATH) $(DESTDIR)$(DOC_DIR)/languages/$(HLLNAME)
++	$(CP) $(DOCS) $(DESTDIR)$(DOC_DIR)/languages/$(HLLNAME)
++
++installable : installable_$(HLLNAME)@exe@ $(HLLNAME).pbc
++	$(CP) installable_$(HLLNAME)@exe@ $(BUILD_DIR)
++	$(CP) $(HLLNAME).pbc $(PARROT_LIB)/$(HLLNAME).pbc
++
++$(HLLNAME)@exe@: $(HLLNAME).pbc
++	$(PBC_TO_EXE) $(HLLNAME).pbc
++
++installable_$(HLLNAME)@exe@ : $(HLLNAME).pbc
++	$(PBC_TO_EXE) $(HLLNAME).pbc --install
++
+ clean:
++	$(RM_F) core \
++  "*.pbc" \
++  "*~" \
++  $(HLLNAME)@exe@ \
++  "installable_$(HLLNAME)@exe@" \
++  $(PARROT_LIB)/$(HLLNAME).pbc
+ 
+ realclean: clean
+ 	$(RM_F) Makefile
++
++distclean: clean realclean
++
++#
++# Local variables:
++# mode: makefile
++# ex: ft=make
++# End:
+--- origsrc/parrot-0.8.2/languages/lazy-k/lazy.pir	2008-12-17 06:55:16.000000000 +0000
++++ src/parrot-0.8.2/languages/lazy-k/lazy.pir	2008-12-25 13:44:21.537750000 +0000
+@@ -61,7 +61,7 @@
+     .local pmc prog, e
+ 
+     create_globals()
+-    e = global "I"
++    e = global("I")
+     prog = parse(in)
+     ## _dumper( prog, "prog" )
+     e = append(e, prog)
+@@ -112,8 +112,8 @@
+     .param pmc church
+ 
+     .local pmc e, Zero, Inc, result
+-    Inc = global "Inc"
+-    Zero = global "Zero"
++    Inc = global("Inc")
++    Zero = global("Zero")
+     e = new_apply(church, Inc)
+     e = new_apply(e, Zero)
+     result = eval(e)
+@@ -129,7 +129,7 @@
+ .sub car
+     .param pmc list
+     .local pmc k
+-    k = global "K"
++    k = global("K")
+     .tailcall new_apply(list, k)
+ .end
+ 
+@@ -137,7 +137,7 @@
+ .sub cdr
+     .param pmc list
+     .local pmc ki
+-    ki = global "KI"
++    ki = global("KI")
+     .tailcall new_apply(list, ki)
+ .end
+ 
+@@ -212,9 +212,9 @@
+     .local string ch
+     .local pmc op, arg, NUL
+     .local pmc I, K, S
+-    I = global "I"
+-    K = global "K"
+-    S = global "S"
++    I = global("I")
++    K = global("K")
++    S = global("S")
+     null NUL
+ loop:
+     ch = read io, 1
+@@ -271,7 +271,7 @@
+     .param int i
+ 
+     .local pmc cached, e
+-    cached = global "church_cache"
++    cached = global("church_cache")
+     if i < 0 goto i256
+     if i > 256 goto i256
+     goto ok
+@@ -281,7 +281,7 @@
+     e = cached[i]
+     unless_null e,  ret
+ 	.local pmc sksk, e, cm1
+-	sksk = global "SKSK"
++	sksk = global("SKSK")
+ 	$I0 = i - 1
+ 	cm1 = int2church($I0)
+ 	e = new_expr(expS2, sksk, cm1)
+@@ -361,7 +361,7 @@
+ 	$I0 = ord s
+     eof:
+ 	cc = int2church($I0)
+-	i = global "I"
++	i = global("I")
+ 	k1c = new_expr(expK1, cc, NUL)
+ 	s2ik1 = new_expr(expS2, i, k1c)
+ 	lhs[1] = s2ik1
+--- origsrc/parrot-0.8.2/languages/lisp/config/makefiles/root.in	2008-06-23 02:30:47.000000000 +0000
++++ src/parrot-0.8.2/languages/lisp/config/makefiles/root.in	2008-12-25 13:44:21.553375000 +0000
+@@ -1,41 +1,97 @@
+-# $Id: /mirror/trunk/languages/lisp/config/makefiles/root.in 28688 2008-06-23T00:33:41.905243Z coke  $
++# $Id: root.in 31298 2008-09-21 09:36:09Z rurban $
+ 
+-# Setup some commands
+-RM_F          = @rm_f@
++## arguments we want to run parrot with
++PARROT_ARGS =
++
++## configuration settings
++HLLNAME       = lisp
++BUILD_DIR     = @build_dir@
++LOAD_EXT      = @load_ext@
++O             = @o@
++BIN_DIR       = @bin_dir@
++LIB_DIR       = @lib_dir@
++DOC_DIR       = @doc_dir@
++MANDIR	      = @mandir@
++
++## Setup some commands
++LN_S          = @lns@
+ PERL          = @perl@
++RM_RF         = @rm_rf@
++CP            = @cp@
++MKPATH        = @mkpath@
++POD2MAN       = pod2man
++
++#IF(parrot_is_shared and !(cygwin|win32)):export LD_RUN_PATH := @blib_dir@:$(LD_RUN_PATH)
+ PARROT        = ../../parrot@exe@
+-BUILD_DIR     = @build_dir@
+-RECONFIGURE   = $(PERL) @build_dir@/tools/dev/reconfigure.pl
+-#CONDITIONED_LINE(darwin):
+-#CONDITIONED_LINE(darwin):# MACOSX_DEPLOYMENT_TARGET must be defined for OS X compilation/linking
+-#CONDITIONED_LINE(darwin):export MACOSX_DEPLOYMENT_TARGET := @osx_version@
++PBC_TO_EXE    = ../../pbc_to_exe@exe@
++CAT           = $(PERL) -MExtUtils::Command -e cat
++BUILD_DYNPMC  = $(PERL) $(BUILD_DIR)/tools/build/dynpmc.pl
++RECONFIGURE   = $(PERL) $(BUILD_DIR)/tools/dev/reconfigure.pl
++#IF(darwin):
++#IF(darwin):# MACOSX_DEPLOYMENT_TARGET must be defined for OS X compilation/linking
++#IF(darwin):export MACOSX_DEPLOYMENT_TARGET := @osx_version@
++PARROT_LIB    = $(BUILD_DIR)/runtime/parrot/library
++
++DOCS = CHANGES KNOWN_BUGS LICENSE MAINTAINER README
++
++build: lisp.pbc
+ 
+-all: build
++all: lisp.pbc lisp@exe@ Makefile installable
++
++# regenerate the Makefile
++Makefile: config/makefiles/root.in
++	cd $(BUILD_DIR) && $(RECONFIGURE) --step=gen::languages --languages=$(HLLNAME)
++
++test: build
++	$(PERL) -Ilib -I../../lib t/harness
++
++lisp.pbc: lisp.pir
++	$(PARROT) -o lisp.pbc lisp.pir
+ 
+ # This is a listing of all targets, that are meant to be called by users
+-help :
++help:
+ 	@echo ""
+ 	@echo "Following targets are available for the user:"
+ 	@echo ""
+-	@echo "  all:               'lisp.pbc'"
++	@echo "  all:               lisp.pbc"
+ 	@echo "                     This is the default."
++	@echo "  installable:       Create self-hosting bins and libs."
++	@echo "  install:           Install the installable targets and docs."
+ 	@echo ""
+-	@echo "  help:              Print this help message."
+-	@echo ""
++	@echo "Testing:"
+ 	@echo "  test:              Run the test suite."
++	@echo "  test-installable:  Test self-hosting targets."
++	@echo "  testclean:         Clean up test results."
+ 	@echo ""
+-	@echo "  clean:             Cleaning up."
++	@echo "Cleaning:"
++	@echo "  clean:             Basic cleaning up."
++	@echo "  realclean:         Removes also files generated by 'Configure.pl'"
++	@echo "  distclean:         Removes also anything built, in theory"
++	@echo ""
++	@echo "Misc:"
++	@echo "  help:              Print this help message."
+ 	@echo ""
+ 
+-# regenerate the Makefile
+-Makefile: config/makefiles/root.in
+-	cd $(BUILD_DIR) && $(RECONFIGURE) --step=gen::languages --languages=lisp
+-
+-test: build
+-	$(PERL) -Ilib -I../../lib t/harness
++# TODO: rename build_dir. basic run for missing libs
++test-installable : installable
++	./installable_$(HLLNAME)@exe@
++
++install : installable
++	$(CP) installable_$(HLLNAME)@exe@ $(DESTDIR)$(BIN_DIR)/parrot-$(HLLNAME)@exe@
++	$(CP) $(HLLNAME).pbc $(DESTDIR)$(LIB_DIR)/parrot/library/$(HLLNAME).pbc
++	$(POD2MAN) $(HLLNAME).pir > $(DESTDIR)$(MANDIR)/man1/parrot-$(HLLNAME).1
++	$(MKPATH) $(DESTDIR)$(DOC_DIR)/languages/$(HLLNAME)
++	$(CP) $(DOCS) $(DESTDIR)$(DOC_DIR)/languages/$(HLLNAME)
++
++$(HLLNAME)@exe@: $(HLLNAME).pbc
++	$(PBC_TO_EXE) $(HLLNAME).pbc
++
++installable : installable_$(HLLNAME)@exe@ $(HLLNAME).pbc
++	$(CP) installable_$(HLLNAME)@exe@ $(BUILD_DIR)
++	$(CP) $(HLLNAME).pbc $(PARROT_LIB)/$(HLLNAME).pbc
+ 
+-build: lisp.pir
+-	$(PARROT) -o lisp.pbc lisp.pir
++installable_$(HLLNAME)@exe@ : $(HLLNAME).pbc
++	$(PBC_TO_EXE) $(HLLNAME).pbc --install
+ 
+ clean: testclean
+ 	$(RM_F) core "*.pbc" "*~"
+@@ -45,3 +101,11 @@
+ 
+ realclean: clean
+ 	$(RM_F) Makefile
++
++distclean: realclean
++
++#
++# Local variables:
++# mode: makefile
++# ex: ft=make
++# End:
+--- origsrc/parrot-0.8.2/languages/lolcode/config/makefiles/root.in	2008-09-19 20:45:41.000000000 +0000
++++ src/parrot-0.8.2/languages/lolcode/config/makefiles/root.in	2008-12-25 13:44:21.584625000 +0000
+@@ -4,35 +4,46 @@
+ PARROT_ARGS =
+ 
+ ## configuration settings
++HLLNAME       = lolcode
+ BUILD_DIR     = @build_dir@
+ LOAD_EXT      = @load_ext@
+ O             = @o@
+ EXE           = @exe@
++BIN_DIR       = @bin_dir@
++LIB_DIR       = @lib_dir@
++DOC_DIR       = @doc_dir@
++MANDIR        = @mandir@
+ 
+ ## Setup some commands
+ LN_S          = @lns@
+ PERL          = @perl@
+ RM_RF         = @rm_rf@
+ CP            = @cp@
+-PARROT        = ../../parrot$(EXE)
++MKPATH        = @mkpath@
++POD2MAN       = pod2man
++
++#IF(parrot_is_shared and !(cygwin|win32)):export LD_RUN_PATH := @blib_dir@:$(LD_RUN_PATH)
++PARROT        = ../../parrot@exe@
++PBC_TO_EXE    = ../../pbc_to_exe@exe@
+ CAT           = $(PERL) -MExtUtils::Command -e cat
+ BUILD_DYNPMC  = $(PERL) $(BUILD_DIR)/tools/build/dynpmc.pl
+ RECONFIGURE   = $(PERL) $(BUILD_DIR)/tools/dev/reconfigure.pl
+-#CONDITIONED_LINE(darwin):
+-#CONDITIONED_LINE(darwin):# MACOSX_DEPLOYMENT_TARGET must be defined for OS X compilation/linking
+-#CONDITIONED_LINE(darwin):export MACOSX_DEPLOYMENT_TARGET := @osx_version@
++#IF(darwin):
++#IF(darwin):# MACOSX_DEPLOYMENT_TARGET must be defined for OS X compilation/linking
++#IF(darwin):export MACOSX_DEPLOYMENT_TARGET := @osx_version@
+ 
+ ## places to look for things
+ PARROT_DYNEXT = $(BUILD_DIR)/runtime/parrot/dynext
+-PGE_LIBRARY   = $(BUILD_DIR)/runtime/parrot/library/PGE
++PARROT_LIB    = $(BUILD_DIR)/runtime/parrot/library
++PGE_LIBRARY   = $(PARROT_LIB)/PGE
++PCT           = $(PARROT_LIB)/PCT.pbc
+ PERL6GRAMMAR  = $(PGE_LIBRARY)/Perl6Grammar.pbc
+ NQP           = $(BUILD_DIR)/compilers/nqp/nqp.pbc
+-PCT           = $(BUILD_DIR)/runtime/parrot/library/PCT.pbc
+ PBC_TO_EXE    = $(BUILD_DIR)/pbc_to_exe$(EXE)
+ 
+ PMC_DIR       = src/pmc
+ 
+-all: lolcode.pbc
++build: lolcode.pbc
+ 
+ LOLCODE_GROUP = $(PMC_DIR)/lolcode_group$(LOAD_EXT)
+ 
+@@ -40,8 +51,7 @@
+   src/gen_grammar.pir \
+   src/gen_actions.pir \
+   src/gen_builtins.pir \
+-  src/parser/yarn_literal.pir \
+-#  $(LOLCODE_GROUP)
++  src/parser/yarn_literal.pir
+ 
+ BUILTINS_PIR = \
+   src/builtins/say.pir \
+@@ -52,6 +62,8 @@
+ # PMCS = lolcode
+ # PMC_SOURCES = $(PMC_DIR)/lolcode.pmc
+ 
++all: lolcode.pbc lolcode@exe@ Makefile installable
++
+ lolcode$(EXE): lolcode.pbc
+ 	$(PBC_TO_EXE) lolcode.pbc
+ 
+@@ -74,12 +86,6 @@
+ src/gen_builtins.pir: $(BUILTINS_PIR)
+ 	$(CAT) $(BUILTINS_PIR) >src/gen_builtins.pir
+ 
+-$(LOLCODE_GROUP): $(PARROT) $(PMC_SOURCES)
+-	cd $(PMC_DIR) && $(BUILD_DYNPMC) generate $(PMCS)
+-	cd $(PMC_DIR) && $(BUILD_DYNPMC) compile $(PMCS)
+-	cd $(PMC_DIR) && $(BUILD_DYNPMC) linklibs $(PMCS)
+-	cd $(PMC_DIR) && $(BUILD_DYNPMC) copy --destination=$(PARROT_DYNEXT) $(PMCS)
+-
+ # regenerate the Makefile
+ Makefile: config/makefiles/root.in
+ 	cd $(BUILD_DIR) && $(RECONFIGURE) --step=gen::languages --languages=lolcode
+@@ -91,8 +97,12 @@
+ 	@echo ""
+ 	@echo "  all:               lolcode.pbc"
+ 	@echo "                     This is the default."
++	@echo "  installable:       Create self-hosting bins and libs."
++	@echo "  install:           Install the installable targets and docs."
++	@echo ""
+ 	@echo "Testing:"
+ 	@echo "  test:              Run the test suite."
++	@echo "  test-installable:  Test self-hosting targets."
+ 	@echo "  testclean:         Clean up test results."
+ 	@echo ""
+ 	@echo "Cleaning:"
+@@ -107,6 +117,22 @@
+ test: all
+ 	$(PERL) t/harness
+ 
++# TODO: rename build_dir. basic run for missing libs
++test-installable : installable
++	./installable_$(HLLNAME)@exe@ t/00-sanity.t
++
++install : installable
++	$(CP) installable_$(HLLNAME)@exe@ $(DESTDIR)$(BIN_DIR)/parrot-$(HLLNAME)@exe@
++	$(CP) $(HLLNAME).pbc $(DESTDIR)$(LIB_DIR)/parrot/library/$(HLLNAME).pbc
++	$(POD2MAN) $(HLLNAME).pir > $(DESTDIR)$(MANDIR)/man1/parrot-$(HLLNAME).1
++
++installable : installable_$(HLLNAME)@exe@ $(HLLNAME).pbc
++	$(CP) installable_$(HLLNAME)@exe@ $(BUILD_DIR)
++	$(CP) $(HLLNAME).pbc $(PARROT_LIB)/$(HLLNAME).pbc
++
++installable_$(HLLNAME)@exe@ : $(HLLNAME).pbc
++	$(PBC_TO_EXE) $(HLLNAME).pbc --install
++
+ # this target has nothing to do
+ testclean:
+ 
+@@ -121,18 +147,7 @@
+   installable_lolcode$(EXE) \
+   src/gen_grammar.pir \
+   src/gen_actions.pir \
+-  src/gen_builtins.pir \
+-  $(PMC_DIR)/*.h \
+-  $(PMC_DIR)/*.c \
+-  $(PMC_DIR)/*.dump \
+-  $(PMC_DIR)/*$(O) \
+-  $(PMC_DIR)/*$(LOAD_EXT) \
+-  $(PMC_DIR)/*.exp \
+-  $(PMC_DIR)/*.ilk \
+-  $(PMC_DIR)/*.manifest \
+-  $(PMC_DIR)/*.pdb \
+-  $(PMC_DIR)/*.lib \
+-
++  src/gen_builtins.pir
+ 
+ clean:
+ 	$(RM_RF) $(CLEANUPS)
+@@ -140,6 +155,10 @@
+ realclean: clean
+ 	$(RM_RF) Makefile
+ 
+-distclean: realclean
+-
++distclean: clean realclean
+ 
++#
++# Local variables:
++# mode: makefile
++# ex: ft=make
++# End:
+--- origsrc/parrot-0.8.2/languages/lua/config/makefiles/root.in	2008-12-17 06:55:15.000000000 +0000
++++ src/parrot-0.8.2/languages/lua/config/makefiles/root.in	2008-12-25 13:44:21.615875000 +0000
+@@ -2,28 +2,41 @@
+ # $Id: /mirror/trunk/languages/lua/config/makefiles/root.in 33375 2008-11-29T15:35:13.202197Z fperrad  $
+ 
+ ## configuration settings
+-O        = @o@
+-LOAD_EXT = @load_ext@
++HLLNAME     = lua
++O           = @o@
++LOAD_EXT    = @load_ext@
+ 
+ ## Setup some commands
+-MAKE    = @make_c@
+-RM_F    = @rm_f@
+-PERL    = @perl@
+-PARROT  = ../../parrot@exe@
+-PBC_MERGE = ../../pbc_merge@exe@
+-PGE      = $(PARROT) ../../runtime/parrot/library/PGE/Perl6Grammar.pir
+-TGE      = $(PARROT) ../../compilers/tge/tgc.pir
+-PBC_TO_EXE = ../../pbc_to_exe@exe@
++MAKE        = @make_c@
++RM_F        = @rm_f@
++PERL        = @perl@
++CP          = @cp@
++MKPATH      = @mkpath@
++POD2MAN     = pod2man
++
++#IF(parrot_is_shared and !(cygwin|win32)):export LD_RUN_PATH := @blib_dir@:$(LD_RUN_PATH)
++PARROT      = ../../parrot@exe@
++PBC_TO_EXE  = ../../pbc_to_exe@exe@
++PBC_MERGE   = ../../pbc_merge@exe@
++PGE         = $(PARROT) ../../runtime/parrot/library/PGE/Perl6Grammar.pir
++TGE         = $(PARROT) ../../compilers/tge/tgc.pir
+ RECONFIGURE = $(PERL) @build_dir@/tools/dev/reconfigure.pl
+-PMCBUILD = $(PERL) @build_dir@/tools/build/dynpmc.pl
+-#CONDITIONED_LINE(darwin):
+-#CONDITIONED_LINE(darwin):# MACOSX_DEPLOYMENT_TARGET must be defined for OS X compilation/linking
+-#CONDITIONED_LINE(darwin):export MACOSX_DEPLOYMENT_TARGET := @osx_version@
++PMCBUILD    = $(PERL) @build_dir@/tools/build/dynpmc.pl
++#IF(darwin):
++#IF(darwin):# MACOSX_DEPLOYMENT_TARGET must be defined for OS X compilation/linking
++#IF(darwin):export MACOSX_DEPLOYMENT_TARGET := @osx_version@
+ 
+ ## places to look for things
+-LIBPATH  = src/lib
+-PMCDIR   = src/pmc
++LIBPATH       = src/lib
++PMCDIR        = src/pmc
+ PARROT_DYNEXT = @build_dir@/runtime/parrot/dynext
++PARROT_LIB    = @build_dir@/runtime/parrot/library
++BUILD_DIR     = @build_dir@
++BIN_DIR       = @bin_dir@
++LIB_DIR       = @lib_dir@
++DOC_DIR       = @doc_dir@
++MANDIR	      = @mandir@
++
+ 
+ PMCS = \
+  lua \
+@@ -94,6 +107,8 @@
+ GEN_PBC = \
+  lua.pbc
+ 
++DOCS = MAINTAINER doc/running.pod doc/status.pod
++
+ all: \
+  $(PMCDIR)/lua_group$(LOAD_EXT) \
+  $(LIB_PBCS) \
+@@ -120,6 +135,18 @@
+  $(GEN_PBC) \
+  src/yapp/Lua/parser.pm
+ 
++# TODO: rename build_dir. basic run for missing libs
++test-installable : installable
++	echo "a=1" | ./installable_$(HLLNAME)@exe@
++
++install : installable
++	$(CP) installable_$(HLLNAME)@exe@ $(DESTDIR)$(BIN_DIR)/parrot-$(HLLNAME)@exe@
++	$(CP) $(HLLNAME).pbc $(DESTDIR)$(LIB_DIR)/parrot/library/$(HLLNAME).pbc
++	$(CP) lualibs.pbc $(DESTDIR)$(LIB_DIR)/parrot/library/lualibs.pbc
++	@cd $(PMCDIR) && $(PMCBUILD) copy "--destination=$(DESTDIR)$(LIB_DIR)/parrot/dynext" $(PMCS)
++	$(POD2MAN) doc/running.pod > $(DESTDIR)$(MANDIR)/man1/parrot-$(HLLNAME).1
++	$(MKPATH) $(DESTDIR)$(DOC_DIR)/languages/$(HLLNAME)
++	$(CP) $(DOCS) $(DESTDIR)$(DOC_DIR)/languages/$(HLLNAME)
+ 
+ src/lua51_testlex_gen.pir: src/lua51_testlex.pg
+ 	$(PGE) --output=src/lua51_testlex_gen.pir src/lua51_testlex.pg
+@@ -139,10 +166,25 @@
+ 
+ lua.pbc: lua.pir src/lua51.pir src/grammar51.pir src/lua51_gen.pir src/PASTGrammar_gen.pir src/POSTGrammar_gen.pir $(LIB_SRCS)
+ 	$(PARROT) -o lua.pbc --output-pbc lua.pir
++# $(PBC_MERGE) -o lua.pbc lua_i.pbc ../../compilers/tge/TGE/Rule.pbc
+ 
+ lua@exe@: lua.pbc
+ 	$(PBC_TO_EXE) lua.pbc
+ 
++installable_lua@exe@: lua.pbc
++	$(PBC_TO_EXE) lua.pbc --install
++
++$(PARROT_LIB)/$(HLLNAME).pbc: $(HLLNAME).pbc
++	$(CP) $(HLLNAME).pbc $(PARROT_LIB)/$(HLLNAME).pbc
++
++$(PARROT_LIB)/lualibs.pbc: $(LIBPATH)/lualibs.pbc
++	$(CP) $(LIBPATH)/lualibs.pbc $(PARROT_LIB)/lualibs.pbc
++
++installable: installable_lua@exe@ $(PMCDIR)/lua_group$(LOAD_EXT) \
++  $(PARROT_LIB)/$(HLLNAME).pbc \
++  $(PARROT_LIB)/lualibs.pbc
++	$(CP) installable_$(HLLNAME)@exe@ $(BUILD_DIR)
++
+ $(LIBPATH)/lualibs.pbc: $(LIB_PBCS)
+ 	$(PBC_MERGE) -o $(LIBPATH)/lualibs.pbc $(LIB_PBCS)
+ 
+@@ -260,7 +302,7 @@
+ 
+ # regenerate the Makefile
+ Makefile: config/makefiles/root.in
+-	cd ../.. && $(RECONFIGURE) --step=gen::languages --languages=lua
++	cd ../.. && $(RECONFIGURE) --step=gen::languages --languages=$(HLLNAME)
+ 
+ help:
+ 	@echo ""
+@@ -268,8 +310,12 @@
+ 	@echo ""
+ 	@echo "  all:"
+ 	@echo "                     This is the default."
++	@echo "  installable:       Create self-hosting binaries."
++	@echo "  install:           Install the installable targets and docs."
++	@echo ""
+ 	@echo "Testing:"
+ 	@echo "  test:              Run the test suite."
++	@echo "  test-installable:  Test self-hosting targets."
+ 	@echo "  testclean:         Clean up test results."
+ 	@echo ""
+ 	@echo "Cleaning:"
+@@ -284,7 +330,6 @@
+ test: all
+ 	cd .. && $(PERL) t/harness --languages=lua
+ 
+-
+ TEST_CLEANERS = \
+  "t/pmc/*.pir" \
+  "t/*.pir" \
+@@ -298,6 +343,7 @@
+ 
+ BUILD_CLEANERS = \
+  lua@exe@ \
++ installable_lua@exe@ \
+  lua$(O) \
+  lua.c \
+  "*.pbc" \
+@@ -308,7 +354,9 @@
+  "$(PMCDIR)/*_group.h" \
+  "$(PMCDIR)/*$(LOAD_EXT)" \
+  "$(PMCDIR)/*$(O)" \
+- "$(LIBPATH)/*.pbc"
++ "$(LIBPATH)/*.pbc" \
++ $(PARROT_LIB)/$(HLLNAME).pbc \
++ $(PARROT_LIB)/lualibs.pbc
+ 
+ clean:
+ 	$(RM_F) $(BUILD_CLEANERS) $(TEST_CLEANERS)
+@@ -317,3 +365,9 @@
+ 	$(RM_F) Makefile
+ 
+ distclean: realclean
++
++#
++# Local variables:
++# mode: makefile
++# ex: ft=make
++# End:
+--- origsrc/parrot-0.8.2/languages/m4/config/makefiles/root.in	2008-06-23 02:30:45.000000000 +0000
++++ src/parrot-0.8.2/languages/m4/config/makefiles/root.in	2008-12-25 13:44:21.678375000 +0000
+@@ -1,27 +1,49 @@
+ # $Id: /mirror/trunk/languages/m4/config/makefiles/root.in 28688 2008-06-23T00:33:41.905243Z coke  $
+ 
+ # Makefile for languages/m4
++HLLNAME       = m4
+ 
+-# Setup of some commands
+-PARROT        = ../../parrot@exe@
++# Setup of some commands and dirs
+ PERL          = @perl@
+ RM_RF         = @rm_rf@
+ TOUCH         = $(PERL) -MExtUtils::Command -e touch
++CP            = @cp@
++MKPATH        = @mkpath@
++POD2MAN       = pod2man
+ BUILD_DIR     = @build_dir@
++BIN_DIR       = @bin_dir@
++LIB_DIR       = @lib_dir@
++DOC_DIR       = @doc_dir@
++MANDIR	      = @mandir@
++PARROT_LIB    = $(BUILD_DIR)/runtime/parrot/library
++
++#IF(parrot_is_shared and !(cygwin|win32)):export LD_RUN_PATH := @blib_dir@:$(LD_RUN_PATH)
++PARROT        = ../../parrot@exe@
++PBC_TO_EXE    = ../../pbc_to_exe@exe@
+ RECONFIGURE   = $(PERL) @build_dir@/tools/dev/reconfigure.pl
+-#CONDITIONED_LINE(darwin):
+-#CONDITIONED_LINE(darwin):# MACOSX_DEPLOYMENT_TARGET must be defined for OS X compilation/linking
+-#CONDITIONED_LINE(darwin):export MACOSX_DEPLOYMENT_TARGET := @osx_version@
++#IF(darwin):
++#IF(darwin):# MACOSX_DEPLOYMENT_TARGET must be defined for OS X compilation/linking
++#IF(darwin):export MACOSX_DEPLOYMENT_TARGET := @osx_version@
++
++DOCS = BUGS ChangeLog LICENSE MAINTAINER README TODO.pod VERSION \
++       doc/features.pod doc/freezing.pod doc/operation.pod doc/running.pod
+ 
+-default: all
+-all: build 
++default: build
++
++all: build m4@exe@ installable_m4@exe@
++
++build: m4.pbc
+ 
+ help:
+ 	@echo ""
+ 	@echo "Following targets are available for the user:"
+ 	@echo ""
+-	@echo "  all:               m4.pbc"
++	@echo "  all:               m4.pbc m4@exe@"
++	@echo "  build:             m4.pbc"
+ 	@echo "                     This is the default."
++	@echo "  installable:       Create self-hosting bins and libs."
++	@echo "  install:           Install the installable targets and docs."
++	@echo ""
+ 	@echo "Testing:"
+ 	@echo "  test:              Run the test suite."
+ 	@echo "  test-gnu-m4:       Run the test suite on the installed GNU m4."
+@@ -47,34 +69,62 @@
+ test-gnu-m4: build
+ 	PARROT_M4_TEST_PROG='m4' $(PERL) -Ilib -I../../lib t/harness
+ 
+-build: m4.pbc 
+-
+ m4.pbc: src/m4.pir
+-	$(PARROT) -o m4.pbc src/m4.pir 
++	$(PARROT) -o m4.pbc src/m4.pir
++
++src/m4.pir: src/builtin.pir src/freeze.pir src/input.pir src/macro.pir src/output.pir
++	$(TOUCH) $@
++
++# TODO: rename build_dir. basic run for missing libs
++test-installable : installable
++	./installable_$(HLLNAME)@exe@
++
++install : installable
++	$(CP) installable_$(HLLNAME)@exe@ $(DESTDIR)$(BIN_DIR)/parrot-$(HLLNAME)@exe@
++	$(CP) $(HLLNAME).pbc $(DESTDIR)$(LIB_DIR)/parrot/library/$(HLLNAME).pbc
++	$(POD2MAN) doc/running.pod > $(DESTDIR)$(MANDIR)/man1/parrot-$(HLLNAME).1
++	$(MKPATH) $(DESTDIR)$(DOC_DIR)/languages/$(HLLNAME)
++	$(CP) $(DOCS) $(DESTDIR)$(DOC_DIR)/languages/$(HLLNAME)
++
++m4@exe@: $(HLLNAME).pbc
++	$(PBC_TO_EXE) $(HLLNAME).pbc
++
++installable : installable_$(HLLNAME)@exe@ $(HLLNAME).pbc
++	$(CP) installable_$(HLLNAME)@exe@ $(BUILD_DIR)
++	$(CP) $(PARROT_LIB)/$(HLLNAME).pbc $(HLLNAME).pbc
+ 
+-src/m4.pir: src/builtin.pir src/freeze.pir src/input.pir src/macro.pir src/output.pir 
+-	$(TOUCH) $@ 
++installable_$(HLLNAME)@exe@ : $(HLLNAME).pbc
++	$(PBC_TO_EXE) $(HLLNAME).pbc --install
+ 
+-html: 
+-	mkdir docs/html 
++html:
++	$(MKPATH) docs/html
+ 	pod2html docs/*.pod -o docs/html
+- 
++
+ perlcritic:
+ 	$(PERL) tools/scrutinize.pl
+- 
++
+ clean:
+ 	$(RM_RF) \
+-m4.pbc \
+-"*.pdb" \
+-"*.obj" \
+-"src/*.pbc" \
+-"src/*~" \
+-"t/*/*.m4" \
+-"t/*/*.pir_out" \
+-"t/*/*.gnu_out" \
+-"t/*/*.pir"
++  m4.pbc \
++  "*.pdb" \
++  "*.obj" \
++  "src/*.pbc" \
++  "src/*~" \
++  "t/*/*.m4" \
++  "t/*/*.pir_out" \
++  "t/*/*.gnu_out" \
++  "t/*/*.pir" \
++  installable_$(HLLNAME)@exe@ \
++  $(HLLNAME)@exe@ \
++  $(PARROT_LIB)/$(HLLNAME).pbc
+ 
+ realclean: clean
+ 	$(RM_RF) Makefile
+ 
+ distclean: realclean
++
++#
++# Local variables:
++# mode: makefile
++# ex: ft=make
++# End:
+--- origsrc/parrot-0.8.2/languages/markdown/config/makefiles/root.in	2008-09-16 04:30:05.000000000 +0000
++++ src/parrot-0.8.2/languages/markdown/config/makefiles/root.in	2008-12-25 13:44:21.725250000 +0000
+@@ -5,28 +5,44 @@
+ PARROT_ARGS =
+ 
+ ## configuration settings
++HLLNAME	      = markdown
+ BUILD_DIR     = @build_dir@
++LOAD_EXT      = @load_ext@
++O             = @o@
++BIN_DIR       = @bin_dir@
++LIB_DIR       = @lib_dir@
++DOC_DIR       = @doc_dir@
++MANDIR	      = @mandir@
+ 
+ ## Setup some commands
+ LN_S          = @lns@
+ PERL          = @perl@
+ RM_F          = @rm_f@
+-RM_RF         = @rm_rf@
+ CP            = @cp@
++MKPATH        = @mkpath@
++POD2MAN       = pod2man
++
++#IF(parrot_is_shared and !(cygwin|win32)):export LD_RUN_PATH := @blib_dir@:$(LD_RUN_PATH)
+ PARROT        = ../../parrot@exe@
++PBC_TO_EXE    = ../../pbc_to_exe@exe@
+ CAT           = $(PERL) -MExtUtils::Command -e cat
+ RECONFIGURE   = $(PERL) $(BUILD_DIR)/tools/dev/reconfigure.pl
+-#CONDITIONED_LINE(darwin):
+-#CONDITIONED_LINE(darwin):# MACOSX_DEPLOYMENT_TARGET must be defined for OS X compilation/linking
+-#CONDITIONED_LINE(darwin):export MACOSX_DEPLOYMENT_TARGET := @osx_version@
++#IF(darwin):
++#IF(darwin):# MACOSX_DEPLOYMENT_TARGET must be defined for OS X compilation/linking
++#IF(darwin):export MACOSX_DEPLOYMENT_TARGET := @osx_version@
+ 
+ ## places to look for things
++PARROT_LIB    = $(BUILD_DIR)/runtime/parrot/library
+ PGE_LIBRARY   = $(BUILD_DIR)/runtime/parrot/library/PGE
+ PERL6GRAMMAR  = $(PGE_LIBRARY)/Perl6Grammar.pbc
+ NQP           = $(BUILD_DIR)/compilers/nqp/nqp.pbc
+ PCT           = $(BUILD_DIR)/runtime/parrot/library/PCT.pbc
+ 
+-all: markdown.pbc
++DOCS          = README
++
++build: markdown.pbc
++
++all: markdown.pbc Makefile markdown@exe@ installable
+ 
+ SOURCES = \
+   markdown.pir \
+@@ -40,7 +56,7 @@
+   src/builtins/length.pir \
+ 
+ # the default target
+-markdown.pbc: $(PARROT) $(SOURCES)
++markdown.pbc: $(SOURCES)
+ 	$(PARROT) $(PARROT_ARGS) -o markdown.pbc markdown.pir
+ 
+ src/gen_grammar.pir: $(PERL6GRAMMAR) src/parser/grammar.pg
+@@ -55,6 +71,16 @@
+ src/gen_builtins.pir: $(BUILTINS_PIR)
+ 	$(CAT) $(BUILTINS_PIR) >src/gen_builtins.pir
+ 
++installable : installable_$(HLLNAME)@exe@ $(HLLNAME).pbc
++	$(CP) installable_$(HLLNAME)@exe@ $(BUILD_DIR)
++	$(CP) $(HLLNAME).pbc $(PARROT_LIB)/$(HLLNAME).pbc
++
++$(HLLNAME)@exe@: $(HLLNAME).pbc
++	$(PBC_TO_EXE) $(HLLNAME).pbc
++
++installable_$(HLLNAME)@exe@: $(HLLNAME).pbc
++	$(PBC_TO_EXE) $(HLLNAME).pbc --install
++
+ # regenerate the Makefile
+ Makefile: config/makefiles/root.in
+ 	cd $(BUILD_DIR) && $(RECONFIGURE) --step=gen::languages --languages=markdown
+@@ -64,10 +90,15 @@
+ 	@echo ""
+ 	@echo "Following targets are available for the user:"
+ 	@echo ""
+-	@echo "  all:               markdown.pbc"
++	@echo "  build:             markdown.pbc"
+ 	@echo "                     This is the default."
++	@echo "  all:               markdown.pbc markdown@exe@ installable"
++	@echo "  installable:       Create self-hosting bins and libs."
++	@echo "  install:           Install the installable targets and docs."
++	@echo ""
+ 	@echo "Testing:"
+ 	@echo "  test:              Run the test suite."
++	@echo "  test-installable:  Test self-hosting targets."
+ 	@echo "  testclean:         Clean up test results."
+ 	@echo ""
+ 	@echo "Cleaning:"
+@@ -91,24 +122,42 @@
+ t/MarkdownTest_1.0: t/MarkdownTest_1.0.zip
+ 	cd t && perl -MArchive::Zip -e "Archive::Zip->new(q{MarkdownTest_1.0.zip})->extractTree();"
+ 
++# TODO: rename build_dir. basic run for missing libs
++test-installable : installable
++	echo "2-1" | ./installable_$(HLLNAME)@exe@
++
++install : installable
++	$(CP) installable_$(HLLNAME)@exe@ $(DESTDIR)$(BIN_DIR)/parrot-$(HLLNAME)@exe@
++	$(CP) $(HLLNAME).pbc $(DESTDIR)$(LIB_DIR)/parrot/library/$(HLLNAME).pbc
++	$(POD2MAN) $(HLLNAME).pir > $(DESTDIR)$(MANDIR)/man1/parrot-$(HLLNAME).1
++	-$(MKPATH) $(DESTDIR)$(DOC_DIR)/languages/$(HLLNAME)
++	$(CP) $(DOCS) $(DESTDIR)$(DOC_DIR)/languages/$(HLLNAME)
++
+ TEST_CLEANUPS = \
+   "t/*.html" \
+   "t/*.text"
+ 
+ testclean:
+-	$(RM_RF) t/MarkdownTest_1.0
+ 	$(RM_F) $(TEST_CLEANUPS)
+ 
+ GEN_CLEANUPS = \
+   markdown.pbc \
+   src/gen_grammar.pir \
+-  src/gen_actions.pir
++  src/gen_actions.pir \
++  installable_$(HLLNAME)@exe@ \
++  $(HLLNAME)@exe@ \
++  $(PARROT_LIB)/$(HLLNAME).pbc
+ 
+ clean: testclean
+ 	$(RM_F) $(GEN_CLEANUPS)
+ 
+ realclean: clean
+-	$(RM_F) Makefile t/MarkdownTest_1.0.zip
++	$(RM_F) Makefile
+ 
+ distclean: realclean
+ 
++#
++# Local variables:
++# mode: makefile
++# ex: ft=make
++# End:
+--- origsrc/parrot-0.8.2/languages/ook/config/makefiles/root.in	2008-06-23 02:30:48.000000000 +0000
++++ src/parrot-0.8.2/languages/ook/config/makefiles/root.in	2008-12-25 13:44:21.740875000 +0000
+@@ -1,20 +1,34 @@
+ # $Id: /mirror/trunk/languages/ook/config/makefiles/root.in 28688 2008-06-23T00:33:41.905243Z coke  $
+ 
+ # Makefile for languages/ook
++HLLNAME       = ook
+ 
+ # Set up of commands
+-PARROT        = ../../parrot
+ PERL          = @perl@
+ RM_F          = @rm_f@
++CP            = @cp@
++MKPATH        = @mkpath@
++POD2MAN       = pod2man
++
++#IF(parrot_is_shared and !(cygwin|win32)):export LD_RUN_PATH := @blib_dir@:$(LD_RUN_PATH)
++PARROT        = ../../parrot@exe@
++PBC_TO_EXE    = ../../pbc_to_exe@exe@
+ RECONFIGURE   = $(PERL) @build_dir@/tools/dev/reconfigure.pl
+-#CONDITIONED_LINE(darwin):
+-#CONDITIONED_LINE(darwin):# MACOSX_DEPLOYMENT_TARGET must be defined for OS X compilation/linking
+-#CONDITIONED_LINE(darwin):export MACOSX_DEPLOYMENT_TARGET := @osx_version@
++PARROT_LIB    = $(BUILD_DIR)/runtime/parrot/library
++#IF(darwin):
++#IF(darwin):# MACOSX_DEPLOYMENT_TARGET must be defined for OS X compilation/linking
++#IF(darwin):export MACOSX_DEPLOYMENT_TARGET := @osx_version@
+ 
+ # Set up directories
+ BUILD_DIR     = @build_dir@
++BIN_DIR       = @bin_dir@
++LIB_DIR       = @lib_dir@
++DOC_DIR       = @doc_dir@
++MANDIR	      = @mandir@
+ 
+-default: all
++DOCS = Changes MAINTAINER README
++
++build: ook.pbc
+ 
+ help :
+ 	@echo ""
+@@ -33,22 +47,53 @@
+ 
+ # regenerate the Makefile
+ Makefile: config/makefiles/root.in
+-	cd $(BUILD_DIR) && $(RECONFIGURE) --step=gen::languages --languages=ook
++	cd $(BUILD_DIR) && $(RECONFIGURE) --step=gen::languages --languages=$(HLLNAME)
++
++all: ook.pbc Makefile ook@exe@ installable
+ 
+-all: build
++build: ook.pbc
++
++ook.pbc: ook.pasm
++	$(PARROT) -o ook.pbc ook.pasm
+ 
+ test: build
+ 	$(PERL) -I../../lib t/harness
+ 
+-build: ook.pasm
+-	$(PARROT) -o ook.pbc ook.pasm
++ook@exe@: ook.pbc
++	$(PBC_TO_EXE) ook.pbc
++
++installable_ook@exe@: ook.pbc
++	$(PBC_TO_EXE) ook.pbc --install
++
++installable: installable_$(HLLNAME)@exe@ $(HLLNAME).pbc
++	$(CP) installable_$(HLLNAME)@exe@ $(BUILD_DIR)
++	$(CP) $(HLLNAME).pbc $(PARROT_LIB)/$(HLLNAME).pbc
++
++# TODO: rename build_dir. basic run for missing libs
++test-installable : installable
++	./installable_$(HLLNAME)@exe@ hello.ook
++
++install : installable
++	$(CP) installable_$(HLLNAME)@exe@ $(DESTDIR)$(BIN_DIR)/parrot-$(HLLNAME)@exe@
++	$(CP) $(HLLNAME).pbc $(DESTDIR)$(LIB_DIR)/parrot/library/$(HLLNAME).pbc
++	-$(MKPATH) $(DESTDIR)$(DOC_DIR)/languages/$(HLLNAME)
++	$(CP) $(DOCS) $(DESTDIR)$(DOC_DIR)/languages/$(HLLNAME)
+ 
+ clean:
+ 	$(RM_F) core \
+     "*.pbc" \
+     "*~" \
+     "hello.out" \
+-    "foo.p*"
++    "foo.p*" \
++    $(HLLNAME)@exe@ \
++    installable_* \
++    $(PARROT_LIB)/$(HLLNAME).pbc
+ 
+ realclean: clean
+ 	$(RM_F) Makefile
++
++#
++# Local variables:
++# mode: makefile
++# ex: ft=make
++# End:
+--- origsrc/parrot-0.8.2/languages/parrot_compiler/config/makefiles/root.in	2008-06-23 02:30:48.000000000 +0000
++++ src/parrot-0.8.2/languages/parrot_compiler/config/makefiles/root.in	2008-12-25 13:44:21.756500000 +0000
+@@ -6,11 +6,14 @@
+ # Set up commands
+ PERL          = @perl@
+ RM_F          = @rm_f@
++
++#IF(parrot_is_shared and !(cygwin|win32)):export LD_RUN_PATH := @blib_dir@:$(LD_RUN_PATH)
+ PARROT        = ../../@test_prog@@exe@
++PBC_TO_EXE    = ../../pbc_to_exe@exe@
+ RECONFIGURE   = $(PERL) @build_dir@/tools/dev/reconfigure.pl
+-#CONDITIONED_LINE(darwin):
+-#CONDITIONED_LINE(darwin):# MACOSX_DEPLOYMENT_TARGET must be defined for OS X compilation/linking
+-#CONDITIONED_LINE(darwin):export MACOSX_DEPLOYMENT_TARGET := @osx_version@
++#IF(darwin):
++#IF(darwin):# MACOSX_DEPLOYMENT_TARGET must be defined for OS X compilation/linking
++#IF(darwin):export MACOSX_DEPLOYMENT_TARGET := @osx_version@
+ 
+ # Set up directories
+ BUILD_DIR     = @build_dir@
+@@ -55,3 +58,8 @@
+ parrot_compiler.pasm : parrot_compiler.pir
+ 	$(PARROT) -o parrot_compiler.pasm parrot_compiler.pir
+ 
++#
++# Local variables:
++# mode: makefile
++# ex: ft=make
++# End:
+--- origsrc/parrot-0.8.2/languages/perl6/config/makefiles/root.in	2008-12-17 06:55:13.000000000 +0000
++++ src/parrot-0.8.2/languages/perl6/config/makefiles/root.in	2008-12-25 13:44:21.803375000 +0000
+@@ -1,19 +1,24 @@
+ # $Id: /mirror/trunk/languages/perl6/config/makefiles/root.in 34015 2008-12-16T21:59:39.435893Z tene  $
+ 
+ # arguments we want to run parrot with
+-PARROT_ARGS =
++HLLNAME       = perl6
++PARROT_ARGS   =
+ 
+ # places to look for things
+ BUILD_DIR     = @build_dir@
+ PARROT_DYNEXT = $(BUILD_DIR)/runtime/parrot/dynext
+-PGE_LIBRARY   = $(BUILD_DIR)/runtime/parrot/library/PGE
+-PERL6GRAMMAR  = $(PGE_LIBRARY)/Perl6Grammar.pbc
++PARROT_LIB    = $(BUILD_DIR)/runtime/parrot/library
++PERL6GRAMMAR  = $(PARROT_LIB)/PGE/Perl6Grammar.pbc
+ NQP           = $(BUILD_DIR)/compilers/nqp/nqp.pbc
+ PCT           = $(BUILD_DIR)/runtime/parrot/library/PCT.pbc
+ PMC_DIR       = src/pmc
+ OPSDIR        = src/ops
+ OPSLIB        = perl6
+ OPS_FILE      = src/ops/perl6.ops
++BIN_DIR       = @bin_dir@
++LIB_DIR       = @lib_dir@
++DOC_DIR       = @doc_dir@
++MANDIR	      = @mandir@
+ 
+ # Set up extensions
+ LOAD_EXT      = @load_ext@
+@@ -24,17 +29,23 @@
+ MAKE          = @make_c@
+ PERL          = @perl@
+ RM_F          = @rm_f@
+-PARROT        = ../../parrot$(EXE)
++CP            = @cp@
++
++#IF(parrot_is_shared and !(cygwin|win32)):export LD_RUN_PATH := @blib_dir@:$(LD_RUN_PATH)
++PARROT        = ../../parrot@exe@
++PBC_TO_EXE    = ../../pbc_to_exe@exe@
+ CAT           = $(PERL) -MExtUtils::Command -e cat
+ BUILD_DYNPMC  = $(PERL) $(BUILD_DIR)/tools/build/dynpmc.pl
+ BUILD_DYNOPS  = $(PERL) $(BUILD_DIR)/tools/build/dynoplibs.pl
+ RECONFIGURE   = $(PERL) $(BUILD_DIR)/tools/dev/reconfigure.pl
+-PBC_TO_EXE    = $(BUILD_DIR)/pbc_to_exe$(EXE)
+-#CONDITIONED_LINE(darwin):
+-#CONDITIONED_LINE(darwin):# MACOSX_DEPLOYMENT_TARGET must be defined for OS X compilation/linking
+-#CONDITIONED_LINE(darwin):export MACOSX_DEPLOYMENT_TARGET := @osx_version@
++#IF(darwin):
++#IF(darwin):# MACOSX_DEPLOYMENT_TARGET must be defined for OS X compilation/linking
++#IF(darwin):export MACOSX_DEPLOYMENT_TARGET := @osx_version@
++DOCS = README MAINTAINER ROADMAP docs/compiler_overview.pod docs/glossary.pod docs/STATUS
++
++build: perl6.pbc Test.pir
+ 
+-all: perl6.pbc
++all: build perl6$(EXE) installable
+ 
+ xmas: perl6$(EXE)
+ 
+@@ -113,6 +124,7 @@
+ PMC_SOURCES = $(PMC_DIR)/perl6str.pmc $(PMC_DIR)/objectref.pmc $(PMC_DIR)/perl6scalar.pmc \
+               $(PMC_DIR)/mutablevar.pmc $(PMC_DIR)/perl6multisub.pmc
+ PERL6_GROUP = $(PMC_DIR)/perl6_group$(LOAD_EXT)
++DOCS = README MAINTAINER ROADMAP docs/compiler_overview.pod docs/glossary.pod docs/STATUS
+ 
+ # targets for building a standalone perl6.
+ # (We're not quite ready to make this a default target.)
+@@ -129,6 +141,9 @@
+ Test.pir: Test.pm perl6.pbc
+ 	$(PARROT) $(PARROT_ARGS) perl6.pbc --target=pir --output=Test.pir Test.pm
+ 
++$(PERL6GRAMMAR): $(PARROT_LIB)/PGE/Perl6Grammar.pir
++	cd $(BUILD_DIR) && $(PARROT) $(PARROT_ARGS) -o $(PERL6GRAMMAR) $(PARROT_LIB)/PGE/Perl6Grammar.pir
++
+ src/gen_grammar.pir: $(PERL6GRAMMAR) src/parser/grammar.pg src/parser/grammar-oper.pg
+ 	$(PARROT) $(PARROT_ARGS) $(PERL6GRAMMAR) \
+ 	    --output=src/gen_grammar.pir \
+@@ -147,7 +162,7 @@
+ src/gen_junction.pir: build/gen_junction_pir.pl
+ 	$(PERL) build/gen_junction_pir.pl src/gen_junction.pir
+ 
+-$(PERL6_GROUP): $(PARROT) $(PMC_SOURCES)
++$(PERL6_GROUP): $(PMC_SOURCES)
+ 	cd $(PMC_DIR) && $(BUILD_DYNPMC) generate $(PMCS)
+ 	cd $(PMC_DIR) && $(BUILD_DYNPMC) compile $(PMCS)
+ 	cd $(PMC_DIR) && $(BUILD_DYNPMC) linklibs $(PMCS)
+@@ -172,6 +187,8 @@
+ 	@echo "                     This is the default."
+ 	@echo "  perl6$(EXE):       Some want a pony, others are satisfied with an executable."
+ 	@echo "  xmas:              Christmas is when Perl 6 is released. Alias of perl6$(EXE)."
++	@echo "  installable:       Create self-hosting binaries."
++	@echo "  install:           Install the installable targets and docs."
+ 	@echo ""
+ 	@echo "Testing:"
+ 	@echo "  test:              Run coretest and codetest."
+@@ -182,6 +199,7 @@
+ 	@echo "  spectest_full:     Run all tests of the official test suite"
+ 	@echo "  localtest:         Run the official tests given in t/localtest.data."
+ 	@echo "  fulltest:          Run coretest, spectest_regression, and codetest."
++	@echo "  test-installable:  Test self-hosting targets."
+ 	@echo ""
+ 	@echo "Cleaning:"
+ 	@echo "  clean:             Basic cleaning up."
+@@ -244,6 +262,26 @@
+ t/spec:
+ 	svn co http:////svn.pugscode.org//pugs//t//spec t/spec
+ 
++# TODO: rename build_dir. basic run for missing libs
++test-installable : installable
++	./installable_$(HLLNAME)@exe@ -e'say 1'
++
++install : installable
++	$(CP) installable_$(HLLNAME)@exe@ $(DESTDIR)$(BIN_DIR)/parrot-perl6@exe@
++	$(CP) installable_$(HLLNAME)@exe@ $(DESTDIR)$(BIN_DIR)/rakudo@exe@
++	$(CP) $(HLLNAME).pbc $(DESTDIR)$(LIB_DIR)/parrot/library/$(HLLNAME).pbc
++	@cd $(PMC_DIR) && $(BUILD_DYNPMC) copy "--destination=$(DESTDIR)$(LIB_DIR)/parrot/dynext" $(PMCS)
++	@cd $(OPSDIR)  && $(BUILD_DYNOPS) copy "--destination=$(DESTDIR)$(LIB_DIR)/parrot/dynext" $(OPSLIB)
++	$(POD2MAN) doc/running.pod > $(DESTDIR)$(MANDIR)/man1/perl6.1
++	$(MKPATH) $(DESTDIR)$(DOC_DIR)/languages/$(HLLNAME)
++	$(CP) $(DOCS) $(DESTDIR)$(DOC_DIR)/languages/$(HLLNAME)
++
++installable : installable_$(HLLNAME)@exe@ $(PERL6_GROUP) $(HLLNAME).pbc
++	$(CP) installable_$(HLLNAME)@exe@ $(BUILD_DIR)
++	$(CP) $(HLLNAME).pbc $(PARROT_LIB)/$(HLLNAME).pbc
++	@cd $(PMC_DIR) && $(BUILD_DYNPMC) copy "--destination=$(PARROT_DYNEXT)" $(PMCS)
++	@cd $(OPSDIR)  && $(BUILD_DYNOPS) copy "--destination=$(PARROT_DYNEXT)" $(OPSLIB)
++
+ CLEANUPS = \
+   perl6.pbc \
+   perl6.c \
+@@ -277,3 +315,9 @@
+ 	$(RM_F) src/utils/Makefile Makefile
+ 
+ distclean: realclean
++
++#
++# Local variables:
++# mode: makefile
++# ex: ft=make
++# End:
+--- origsrc/parrot-0.8.2/languages/perl6/config/makefiles/utils.in	2008-02-01 07:32:23.000000000 +0000
++++ src/parrot-0.8.2/languages/perl6/config/makefiles/utils.in	2008-12-25 13:44:21.803375000 +0000
+@@ -1,99 +1,132 @@
+-# $Id: /mirror/trunk/languages/perl6/config/makefiles/utils.in 25407 2008-02-01T07:32:20.072018Z chromatic  $
+-
+-## arguments we want to run parrot with
+-PARROT_ARGS =
+-
+-## configuration settings
+-BUILD_DIR     = @build_dir@
+-LOAD_EXT      = @load_ext@
+-O             = @o@
+-
+-## Setup some commands
+-LN_S          = @lns@
+-PERL          = @perl@
+-RM_RF         = @rm_rf@
+-CP            = @cp@
+-MAKE          = @make_c@
+-PARROT        = ../../../../parrot@exe@
+-CAT           = $(PERL) -MExtUtils::Command -e cat
+-BUILD_DYNPMC  = $(PERL) $(BUILD_DIR)/tools/build/dynpmc.pl
+-RECONFIGURE   = $(PERL) $(BUILD_DIR)/tools/dev/reconfigure.pl
+-
+-## places to look for things
+-PARROT_DYNEXT = $(BUILD_DIR)/runtime/parrot/dynext
+-PGE_LIBRARY   = $(BUILD_DIR)/runtime/parrot/library/PGE
+-PERL6GRAMMAR  = $(PGE_LIBRARY)/Perl6Grammar.pbc
+-NQP           = $(BUILD_DIR)/compilers/nqp/nqp.pbc
+-PCT           = $(BUILD_DIR)/runtime/parrot/library/PCT.pbc
+-PBC_TO_EXE    = $(BUILD_DIR)/pbc_to_exe@exe@
+-
+-
+-all: perl6doc.pbc
+-
+-PERL6DOC_SOURCES = \
+-  perl6doc.pir \
+-  perl6doc/gen_grammar.pir \
+-  perl6doc/gen_actions.pir \
+-
+-
+-perl6doc@exe@: perl6doc.pbc
+-	$(PBC_TO_EXE) perl6doc.pbc
+-
+-perl6doc.pbc: $(PARROT) $(PERL6DOC_SOURCES)
+-	$(PARROT) $(PARROT_ARGS) -o perl6doc.pbc perl6doc.pir
+-
+-perl6doc/gen_grammar.pir: $(PERL6GRAMMAR) perl6doc/grammar.pg
+-	$(PARROT) $(PARROT_ARGS) $(PERL6GRAMMAR) \
+-	    --output=perl6doc/gen_grammar.pir \
+-	    perl6doc/grammar.pg
+-
+-perl6doc/gen_actions.pir: $(NQP) $(PCT) perl6doc/actions.pm
+-	$(PARROT) $(PARROT_ARGS) $(NQP) --output=perl6doc/gen_actions.pir \
+-	    --target=pir perl6doc/actions.pm
+-
+-
+-# regenerate the Makefile
+-Makefile: ../../config/makefiles/root.in ../../config/makefiles/utils.in
+-	cd $(BUILD_DIR) && $(RECONFIGURE) --step=gen::languages --languages=perl6
+-
+-# This is a listing of all targets, that are meant to be called by users
+-help:
+-	@echo ""
+-	@echo "Following targets are available for the user:"
+-	@echo ""
+-	@echo "  all:               perl6doc.pbc"
+-	@echo "                     This is the default."
+-	@echo "Testing:"
+-	@echo "  test:              Run the test suite."
+-	@echo "  testclean:         Clean up test results."
+-	@echo ""
+-	@echo "Cleaning:"
+-	@echo "  clean:             Basic cleaning up."
+-	@echo "  realclean:         Removes also files generated by 'Configure.pl'"
+-	@echo "  distclean:         Removes also anything built, in theory"
+-	@echo ""
+-	@echo "Misc:"
+-	@echo "  help:              Print this help message."
+-	@echo ""
+-
+-test: all
+-	$(PERL) t/harness t/01-sanity
+-
+-# this target has nothing to do
+-testclean:
+-
+-CLEANUPS = \
+-  perl6doc.pbc \
+-  perl6doc@exe@ \
+-  perl6doc.c \
+-  perl6doc/gen_grammar.pir \
+-  perl6doc/gen_actions.pir \
+-
+-
+-clean:
+-	$(RM_RF) $(CLEANUPS)
+-
+-realclean: clean
+-	$(RM_RF) Makefile
+-
+-distclean: realclean
++# $Id: /mirror/trunk/languages/perl6/config/makefiles/utils.in 25407 2008-02-01T07:32:20.072018Z chromatic  $
++
++## arguments we want to run parrot with
++HLLNAME        = perl6doc
++PARROT_ARGS =
++
++## configuration settings
++BUILD_DIR     = @build_dir@
++LOAD_EXT      = @load_ext@
++O             = @o@
++BIN_DIR       = @bin_dir@
++LIB_DIR       = @lib_dir@
++DOC_DIR       = @doc_dir@
++MANDIR	      = @mandir@
++
++## Setup some commands
++LN_S          = @lns@
++PERL          = @perl@
++RM_RF         = @rm_rf@
++CP            = @cp@
++MKPATH        = @mkpath@
++POD2MAN       = pod2man
++MAKE          = @make_c@
++
++#IF(parrot_is_shared and !(cygwin|win32)):export LD_RUN_PATH := @blib_dir@:$(LD_RUN_PATH)
++PARROT        = $(BUILD_DIR)/parrot@exe@
++PBC_TO_EXE    = $(BUILD_DIR)/pbc_to_exe@exe@
++CAT           = $(PERL) -MExtUtils::Command -e cat
++BUILD_DYNPMC  = $(PERL) $(BUILD_DIR)/tools/build/dynpmc.pl
++RECONFIGURE   = $(PERL) $(BUILD_DIR)/tools/dev/reconfigure.pl
++
++## places to look for things
++PARROT_DYNEXT = $(BUILD_DIR)/runtime/parrot/dynext
++PGE_LIBRARY   = $(BUILD_DIR)/runtime/parrot/library/PGE
++PERL6GRAMMAR  = $(PGE_LIBRARY)/Perl6Grammar.pbc
++NQP           = $(BUILD_DIR)/compilers/nqp/nqp.pbc
++PCT           = $(BUILD_DIR)/runtime/parrot/library/PCT.pbc
++PBC_TO_EXE    = $(BUILD_DIR)/pbc_to_exe@exe@
++
++
++all: perl6doc.pbc
++
++PERL6DOC_SOURCES = \
++  perl6doc.pir \
++  perl6doc/gen_grammar.pir \
++  perl6doc/gen_actions.pir \
++
++
++perl6doc@exe@: perl6doc.pbc
++	$(PBC_TO_EXE) perl6doc.pbc
++
++perl6doc.pbc: $(PERL6DOC_SOURCES)
++	$(PARROT) $(PARROT_ARGS) -o perl6doc.pbc perl6doc.pir
++
++perl6doc/gen_grammar.pir: $(PERL6GRAMMAR) perl6doc/grammar.pg
++	$(PARROT) $(PARROT_ARGS) $(PERL6GRAMMAR) \
++	    --output=perl6doc/gen_grammar.pir \
++	    perl6doc/grammar.pg
++
++perl6doc/gen_actions.pir: $(NQP) $(PCT) perl6doc/actions.pm
++	$(PARROT) $(PARROT_ARGS) $(NQP) --output=perl6doc/gen_actions.pir \
++	    --target=pir perl6doc/actions.pm
++
++
++# regenerate the Makefile
++Makefile: ../../config/makefiles/root.in ../../config/makefiles/utils.in
++	cd $(BUILD_DIR) && $(RECONFIGURE) --step=gen::languages --languages=perl6
++
++# This is a listing of all targets, that are meant to be called by users
++help:
++	@echo ""
++	@echo "Following targets are available for the user:"
++	@echo ""
++	@echo "  all:               perl6doc.pbc"
++	@echo "                     This is the default."
++	@echo "  installable:       Create self-hosting binaries."
++	@echo "  install:           Install the installable targets and docs."
++	@echo ""
++	@echo "Testing:"
++	@echo "  test:              Run the test suite."
++	@echo "  testclean:         Clean up test results."
++	@echo ""
++	@echo "Cleaning:"
++	@echo "  clean:             Basic cleaning up."
++	@echo "  realclean:         Removes also files generated by 'Configure.pl'"
++	@echo "  distclean:         Removes also anything built, in theory"
++	@echo ""
++	@echo "Misc:"
++	@echo "  help:              Print this help message."
++	@echo ""
++
++installable_perl6doc@exe@: perl6doc.pbc
++	$(PBC_TO_EXE) perl6doc.pbc --install
++
++install : installable
++	$(CP) installable_$(HLLNAME)@exe@ $(DESTDIR)$(BIN_DIR)/$(HLLNAME)@exe@
++
++installable : installable_$(HLLNAME)@exe@
++	$(CP) installable_$(HLLNAME)@exe@ $(BUILD_DIR)
++
++# TODO: rename build_dir. basic run for missing libs
++test-installable : installable
++	./installable_$(HLLNAME)@exe@ -f 'test'
++
++
++test: all
++	$(PERL) t/harness t/01-sanity
++
++# this target has nothing to do
++testclean:
++
++CLEANUPS = \
++  perl6doc.pbc \
++  perl6doc@exe@ \
++  perl6doc.c \
++  perl6doc/gen_grammar.pir \
++  perl6doc/gen_actions.pir \
++
++
++clean:
++	$(RM_RF) $(CLEANUPS)
++
++realclean: clean
++	$(RM_RF) Makefile
++
++distclean: realclean
++
++#
++# Local variables:
++# mode: makefile
++# ex: ft=make
++# End:
+--- origsrc/parrot-0.8.2/languages/pheme/config/makefiles/root.in	2008-06-23 02:30:48.000000000 +0000
++++ src/parrot-0.8.2/languages/pheme/config/makefiles/root.in	2008-12-25 13:44:21.881500000 +0000
+@@ -1,22 +1,39 @@
+ # $Id: /mirror/trunk/languages/pheme/config/makefiles/root.in 28688 2008-06-23T00:33:41.905243Z coke  $
+ 
+ # configuration settings
++HLLNAME       = pheme
+ BUILD_DIR     = @build_dir@
++BIN_DIR       = @bin_dir@
++LIB_DIR       = @lib_dir@
++DOC_DIR       = @doc_dir@
++MANDIR	      = @mandir@
+ 
+ # Setup some commands
+ PERL          = @perl@
+ RM_F          = @rm_f@
++CP            = @cp@
++MKPATH        = @mkpath@
++POD2MAN	      = pod2man
++EXE           = @exe@
++
++#IF(parrot_is_shared and !(cygwin|win32)):export LD_RUN_PATH := @blib_dir@:$(LD_RUN_PATH)
+ PARROT        = ../../parrot@exe@
++PBC_TO_EXE    = ../../pbc_to_exe@exe@
+ TGE_DIR       = ../../compilers/tge
++PARROT_LIB    = $(BUILD_DIR)/runtime/parrot/library
+ PGE_LIBRARY   = $(BUILD_DIR)/runtime/parrot/library/PGE
+ PERL6GRAMMAR  = $(PGE_LIBRARY)/Perl6Grammar.pbc
+ RECONFIGURE   = $(PERL) $(BUILD_DIR)/tools/dev/reconfigure.pl
+-#CONDITIONED_LINE(darwin):
+-#CONDITIONED_LINE(darwin):# MACOSX_DEPLOYMENT_TARGET must be defined for OS X compilation/linking
+-#CONDITIONED_LINE(darwin):export MACOSX_DEPLOYMENT_TARGET := @osx_version@
++#IF(darwin):
++#IF(darwin):# MACOSX_DEPLOYMENT_TARGET must be defined for OS X compilation/linking
++#IF(darwin):export MACOSX_DEPLOYMENT_TARGET := @osx_version@
++
++DOCS = MAINTAINER MANIFEST README TODO
++
++# the default targets
++build: pheme.pbc Makefile
+ 
+-# the default target
+-all: pheme.pbc
++all: pheme.pbc Makefile pheme$(EXE) installable
+ 
+ lib/pheme_grammar_gen.pir: lib/pheme.g
+ 	$(PARROT) $(PERL6GRAMMAR) \
+@@ -28,6 +45,12 @@
+ pheme.pbc: pheme.pir lib/PhemeSymbols.pir lib/PhemeObjects.pir lib/ASTGrammar.pir lib/pheme_grammar_gen.pir
+ 	$(PARROT) -o pheme.pbc pheme.pir
+ 
++pheme$(EXE): pheme.pbc
++	$(PBC_TO_EXE) pheme.pbc
++
++installable_pheme$(EXE): pheme.pbc
++	$(PBC_TO_EXE) pheme.pbc --install
++
+ # regenerate the Makefile
+ Makefile: config/makefiles/root.in
+ 	cd $(BUILD_DIR) && $(RECONFIGURE) --step=gen::languages --languages=pheme
+@@ -39,6 +62,9 @@
+ 	@echo ""
+ 	@echo "  all:               pheme.pbc"
+ 	@echo "                     This is the default."
++	@echo "  installable:       Create self-hosting bins and libs."
++	@echo "  install:           Install the installable targets and docs."
++	@echo ""
+ 	@echo "Testing:"
+ 	@echo "  test:              Run the test suite."
+ 	@echo "  testclean:         Clean up test results."
+@@ -58,13 +84,35 @@
+ testclean:
+ 	$(RM_F) "t/*.out"
+ 
++
++# TODO: rename build_dir. basic run for missing libs
++test-installable : installable
++	./installable_$(HLLNAME)@exe@ -e'say 1'
++
++install : installable
++	$(CP) installable_$(HLLNAME)@exe@ $(DESTDIR)$(BIN_DIR)/parrot-$(HLLNAME)@exe@
++	$(CP) $(HLLNAME).pbc $(DESTDIR)$(LIB_DIR)/parrot/library/$(HLLNAME).pbc
++	$(POD2MAN) $(HLLNAME).pir > $(DESTDIR)$(MANDIR)/man1/parrot-$(HLLNAME).1
++	$(MKPATH) $(DESTDIR)$(DOC_DIR)/languages/$(HLLNAME)
++	$(CP) $(DOCS) $(DESTDIR)$(DOC_DIR)/languages/$(HLLNAME)
++
++installable : installable_$(HLLNAME)@exe@ $(HLLNAME).pbc
++	$(CP) installable_$(HLLNAME)@exe@ $(BUILD_DIR)
++	$(CP) $(HLLNAME).pbc $(PARROT_LIB)/$(HLLNAME).pbc
++
+ clean: testclean
+ 	$(RM_F) pheme.pbc
+ 	$(RM_F) lib/pheme_grammar_gen.pir
+-	$(RM_F) lib/*.pbc
++	$(RM_F) lib/*.pbc $(PARROT_LIB)/$(HLLNAME).pbc installable_*
+ 	$(RM_F) lib/ASTGrammar.pir
+ 
+ realclean: clean
+ 	$(RM_F) Makefile
+ 
+ distclean: realclean
++
++#
++# Local variables:
++# mode: makefile
++# ex: ft=make
++# End:
+--- origsrc/parrot-0.8.2/languages/pipp/config/makefiles/root.in	2008-12-17 06:55:16.000000000 +0000
++++ src/parrot-0.8.2/languages/pipp/config/makefiles/root.in	2008-12-25 13:44:21.912750000 +0000
+@@ -1,28 +1,40 @@
+ # $Id: /mirror/trunk/languages/pipp/config/makefiles/root.in 33374 2008-11-29T14:53:59.533402Z bernhard  $
+ 
+ # Set up extensions
++HLLNAME       = pipp
+ LOAD_EXT      = @load_ext@
+ O             = @o@
+ EXE           = @exe@
+ 
+ # Set up directories
+ BUILD_DIR     = @build_dir@
++BIN_DIR       = @bin_dir@
++LIB_DIR       = @lib_dir@
++DOC_DIR       = @doc_dir@
++MANDIR        = @mandir@
+ LIBRARY_DIR   = $(BUILD_DIR)/runtime/parrot/library
+ INCLUDE_DIR   = $(BUILD_DIR)/include
+ PMCDIR        = src/pmc
++PARROT_DYNEXT = $(BUILD_DIR)/runtime/parrot/dynext
++PARROT_LIB    = $(BUILD_DIR)/runtime/parrot/library
+ PIPPDIR       = $(BUILD_DIR)/languages/pipp
+ HASHDIR       = $(PIPPDIR)/src
+ PARROT_DYNEXT = @build_dir@/runtime/parrot/dynext
+ 
+ # Set up commands
++#IF(parrot_is_shared and !(cygwin|win32)):export LD_RUN_PATH := @blib_dir@:$(LD_RUN_PATH)
+ PARROT        = $(BUILD_DIR)/parrot@exe@
++PBC_TO_EXE    = $(BUILD_DIR)/pbc_to_exe$(EXE)
++PBC_MERGE     = $(BUILD_DIR)/pbc_merge$(EXE)
+ PERL          = @perl@
+ RM_F          = @rm_f@
++CP            = @cp@
++MKPATH        = @mkpath@
++POD2MAN       = pod2man
+ RECONFIGURE   = $(PERL) $(BUILD_DIR)/tools/dev/reconfigure.pl
+ PMCBUILD      = $(PERL) @build_dir@/tools/build/dynpmc.pl
+ NQP           = $(BUILD_DIR)/compilers/nqp/nqp.pbc
+ PCT           = $(BUILD_DIR)/runtime/parrot/library/PCT.pbc
+-PBC_TO_EXE    = $(BUILD_DIR)/pbc_to_exe$(EXE)
+ CC            = @cc@
+ #copy/pasta from CFLAGS in config/gen/makefiles/dynpmc_pl.in
+ CFLAGS        = @ccflags@ @cc_shared@ @cc_debug@ @ccwarn@ @cc_hasjit@ @cg_flag@ @gc_flag@
+@@ -115,8 +127,14 @@
+   src/common/php_gmp.pbc \
+   src/common/php_pcre.pbc
+ 
++DOCS = README ChangeLog CREDITS MAINTAINER TODO \
++       docs/antlr3.pod docs/overview.pod docs/testing.pod
++
++
+ # default
+-all: build
++build: build-pct
++
++all: Makefile build pipp$(EXE) installable
+ 
+ # This is a listing of all targets, that are meant to be called by users
+ help:
+@@ -172,8 +190,6 @@
+ 	java org.antlr.Tool src/antlr3/Pipp.g
+ 	java org.antlr.Tool -lib src/antlr3 src/antlr3/GenPastNqp.g
+ 
+-build:           build-pct
+-
+ build-all:       build-pct build-phc build-antlr3
+ 
+ #build-common:    pmc src/common/pipplib.pbc pipp.pbc $(PHP_EXT) Test.pir
+@@ -191,6 +207,9 @@
+ pipp$(EXE): build-common
+ 	$(PBC_TO_EXE) pipp.pbc
+ 
++installable_pipp$(EXE): build-common
++	$(PBC_TO_EXE) pipp.pbc --install
++
+ src/common/pipplib.pbc: src/common/builtins.pir src/common/guts.pir src/common/eval.pir src/common/php_standard.pir $(PHP_SRC_STD_EXT) src/common/php_API.pir src/common/php_MACRO.pir
+ 	$(PARROT) -o src/common/pipplib.pbc src/common/builtins.pir
+ 
+@@ -203,8 +222,8 @@
+ src/common/php_pcre.pbc: src/common/php_pcre.pir src/common/php_MACRO.pir
+ 	$(PARROT) -o src/common/php_pcre.pbc src/common/php_pcre.pir
+ 
+-src/pct/gen_grammar.pir: $(LIBRARY_DIR)/PGE/Perl6Grammar.pir src/pct/grammar.pg
+-	$(PARROT) $(LIBRARY_DIR)/PGE/Perl6Grammar.pir \
++src/pct/gen_grammar.pir: $(PARROT_LIB)/PGE/Perl6Grammar.pir src/pct/grammar.pg
++	$(PARROT) $(PARROT_LIB)/PGE/Perl6Grammar.pir \
+             --output=src/pct/gen_grammar.pir src/pct/grammar.pg
+ 
+ src/pct/gen_actions.pir: $(NQP) $(PCT) src/pct/actions.pm
+@@ -233,12 +252,25 @@
+ export DYNPMC_INCLUDE=$(PIPPDIR)
+ export DYNPMC_LINK=$(HASH_OBJS)
+ 
+-$(PHP_GROUP): $(PMC_SOURCES)
++$(PHP_GROUP): $(PARROT) $(PMC_SOURCES)
+ 	@cd $(PMCDIR) && $(PMCBUILD) generate $(PMCS)
+-	@cd $(PMCDIR) && $(PMCBUILD) compile $(PMCS)
+-	@cd $(PMCDIR) && $(PMCBUILD) linklibs $(PMCS)
++	@cd $(PMCDIR) && DYNPMC_INCLUDE=$(PIPPDIR) $(PMCBUILD) compile $(PMCS)
++	@cd $(PMCDIR) && DYNPMC_LINK=$(HASH_OBJS) $(PMCBUILD) linklibs $(PMCS)
+ 	@cd $(PMCDIR) && $(PMCBUILD) copy "--destination=$(PARROT_DYNEXT)" $(PMCS)
+ 
++installable : installable_$(HLLNAME)@exe@ pmc $(HLLNAME).pbc src/common/pipplib.pbc $(PHP_EXT)
++	$(CP) installable_$(HLLNAME)@exe@ $(BUILD_DIR)
++	$(CP) $(HLLNAME).pbc $(PARROT_LIB)/$(HLLNAME).pbc
++	$(CP) src/common/pipplib.pbc $(PHP_EXT) $(PARROT_LIB)
++
++install : installable
++	$(CP) installable_$(HLLNAME)@exe@ $(DESTDIR)$(BIN_DIR)/parrot-$(HLLNAME)@exe@
++	$(CP) $(HLLNAME).pbc $(DESTDIR)$(LIB_DIR)/parrot/library/$(HLLNAME).pbc
++	$(CP) src/common/pipplib.pbc $(PHP_EXT) $(DESTDIR)$(LIB_DIR)/parrot/library
++	@cd $(PMCDIR) && $(PMCBUILD) copy "--destination=$(DESTDIR)$(LIB_DIR)/parrot/dynext" $(PMCS)
++	$(MKPATH) $(DESTDIR)$(DOC_DIR)/languages/$(HLLNAME)
++	$(CP) $(DOCS) $(DESTDIR)$(DOC_DIR)/languages/$(HLLNAME)
++
+ test:     all test-pct
+ 
+ test-all: all test-php test-phc test-antlr3 test-pct test-pmc
+@@ -305,7 +337,8 @@
+   src/common/pipplib.pbc \
+   src/common/*.pbc \
+   pipp.pbc \
+-  pipp.c pipp.o pipp$(EXE)
++  pipp.c pipp@o@ pipp@exe@ \
++  $(PARROT_LIB)/$(HLLNAME).pbc $(HLLNAME)@exe@ installable_*
+ 
+ clean-pmc:
+ 	$(RM_F) "$(PMCDIR)/*dump" "$(PMCDIR)/*.c" "$(PMCDIR)/pmc_*h" "$(PMCDIR)/php_group.h" "$(PMCDIR)/*$(O)" "$(PMCDIR)/*$(LOAD_EXT)"
+--- origsrc/parrot-0.8.2/languages/pipp/src/common/pipp.pir	2008-12-17 06:55:17.000000000 +0000
++++ src/parrot-0.8.2/languages/pipp/src/common/pipp.pir	2008-12-25 13:44:21.990875000 +0000
+@@ -85,17 +85,21 @@
+     # determine location of libs from the Parrot config
+     .local pmc cfg
+     cfg  = _config()
+-    .local string lib_dir, pbc_fn
+-    lib_dir = cfg['build_dir']
+-    lib_dir .= '/languages/pipp/src/common'
++    .local string installed, lib_dir, pbc_fn
++    lib_dir = ''
++    installed = cfg['installed']
++    if installed goto inst
+ 
+-    pbc_fn = concat lib_dir, '/pipplib.pbc'
++    lib_dir = cfg['build_dir']
++    lib_dir .= '/languages/pipp/src/common/'
++inst:
++    pbc_fn = concat lib_dir, 'pipplib.pbc'
+     load_bytecode pbc_fn
+-    pbc_fn = concat lib_dir, '/php_ctype.pbc'
++    pbc_fn = concat lib_dir, 'php_ctype.pbc'
+     load_bytecode pbc_fn
+-    pbc_fn = concat lib_dir, '/php_gmp.pbc'
++    pbc_fn = concat lib_dir, 'php_gmp.pbc'
+     load_bytecode pbc_fn
+-    pbc_fn = concat lib_dir, '/php_pcre.pbc'
++    pbc_fn = concat lib_dir, 'php_pcre.pbc'
+     load_bytecode pbc_fn
+ 
+     load_bytecode 'CGI/QueryHash.pbc'
+--- origsrc/parrot-0.8.2/languages/punie/config/makefiles/root.in	2008-06-23 02:30:47.000000000 +0000
++++ src/parrot-0.8.2/languages/punie/config/makefiles/root.in	2008-12-25 13:44:22.084625000 +0000
+@@ -1,24 +1,38 @@
+ # $Id: /mirror/trunk/languages/punie/config/makefiles/root.in 28688 2008-06-23T00:33:41.905243Z coke  $
+ 
+ # Setup some commands
+-LN_S     = @lns@
+-PERL     = @perl@
+-RM_F     = @rm_f@
+-PARROT   = ../../parrot@exe@
++HLLNAME       = punie
++LN_S          = @lns@
++PERL          = @perl@
++RM_F          = @rm_f@
++CP            = @cp@
++MKPATH        = @mkpath@
++POD2MAN       = pod2man
+ BUILD_DIR     = @build_dir@
+-RECONFIGURE   = $(PERL) @build_dir@/tools/dev/reconfigure.pl
+-PGE_DIR       = ../../compilers/pge
+-NQP_DIR       = ../../compilers/nqp
+-CP       = @cp@
+-#CONDITIONED_LINE(darwin):
+-#CONDITIONED_LINE(darwin):# MACOSX_DEPLOYMENT_TARGET must be defined for OS X compilation/linking
+-#CONDITIONED_LINE(darwin):export MACOSX_DEPLOYMENT_TARGET := @osx_version@
++BIN_DIR       = @bin_dir@
++LIB_DIR       = @lib_dir@
++DOC_DIR       = @doc_dir@
++MANDIR	      = @mandir@
++
++#IF(parrot_is_shared and !(cygwin|win32)):export LD_RUN_PATH := @blib_dir@:$(LD_RUN_PATH)
++PARROT        = $(BUILD_DIR)/parrot@exe@
++PBC_TO_EXE    = $(BUILD_DIR)/pbc_to_exe@exe@
++RECONFIGURE   = $(PERL) $(BUILD_DIR)/tools/dev/reconfigure.pl
++#IF(darwin):
++#IF(darwin):# MACOSX_DEPLOYMENT_TARGET must be defined for OS X compilation/linking
++#IF(darwin):export MACOSX_DEPLOYMENT_TARGET := @osx_version@
++
++PARROT_LIB    = $(BUILD_DIR)/runtime/parrot/library
++PGE_LIBRARY   = $(BUILD_DIR)/runtime/parrot/library/PGE
++PGE_DIR       = $(BUILD_DIR)/compilers/pge
++NQP_DIR       = $(BUILD_DIR)/compilers/nqp
+ 
+-PARROT_LIBRARY = ../../runtime/parrot/library
+-PGE_LIBRARY   = ../../runtime/parrot/library/PGE
++DOCS = MAINTAINER README overview.pod
+ 
+ # the default target
+-all: punie.pbc
++build: punie.pbc
++
++all: punie.pbc punie@exe@ installable_punie@exe@
+ 
+ SOURCES = punie.pir \
+   src/parser/grammar.pg \
+@@ -36,8 +50,12 @@
+ 	@echo ""
+ 	@echo "Following targets are available for the user:"
+ 	@echo ""
+-	@echo "  all:               punie.pbc"
++	@echo "  build:             punie.pbc"
+ 	@echo "                     This is the default."
++	@echo "  all:               punie.pbc punie@exe@"
++	@echo "  installable:       Create self-hosting bins and libs."
++	@echo "  install:           Install the installable targets and docs."
++	@echo ""
+ 	@echo "Testing:"
+ 	@echo "  test:              Run the test suite."
+ 	@echo "  testclean:         Clean up test results."
+@@ -56,7 +74,28 @@
+ 
+ # regenerate the Makefile
+ Makefile: config/makefiles/root.in
+-	cd $(BUILD_DIR) && $(RECONFIGURE) --step=gen::languages --languages=punie
++	cd $(BUILD_DIR) && $(RECONFIGURE) --step=gen::languages --languages=$(HLLNAME)
++
++# TODO: rename build_dir. basic run for missing libs
++test-installable : installable
++	./installable_$(HLLNAME)@exe@ demo.p1
++
++install : installable
++	$(CP) installable_$(HLLNAME)@exe@ $(DESTDIR)$(BIN_DIR)/parrot-$(HLLNAME)@exe@
++	$(CP) $(HLLNAME).pbc $(DESTDIR)$(LIB_DIR)/parrot/library/$(HLLNAME).pbc
++	$(POD2MAN) $(HLLNAME).pir > $(DESTDIR)$(MANDIR)/man1/parrot-$(HLLNAME).1
++	-$(MKPATH) $(DESTDIR)$(DOC_DIR)/languages/$(HLLNAME)
++	$(CP) $(DOCS) $(DESTDIR)$(DOC_DIR)/languages/$(HLLNAME)
++
++$(HLLNAME)@exe@: $(HLLNAME).pbc
++	$(PBC_TO_EXE) $(HLLNAME).pbc
++
++installable : installable_$(HLLNAME)@exe@ $(HLLNAME).pbc
++	$(CP) installable_$(HLLNAME)@exe@ $(BUILD_DIR)
++	$(CP) $(HLLNAME).pbc $(PARROT_LIB)/$(HLLNAME).pbc
++
++installable_$(HLLNAME)@exe@ : $(HLLNAME).pbc
++	$(PBC_TO_EXE) $(HLLNAME).pbc --install
+ 
+ testclean:
+ 	$(RM_F) "t/*.p1" "t/*.out" "t/*.pir"
+@@ -65,6 +104,7 @@
+   punie.pbc \
+   src/gen_punie.pir \
+   src/gen_punie-actions.pir \
++  $(PARROT_LIB)/$(HLLNAME).pbc punie@exe@ installable_*
+ 
+ clean: testclean
+ 	$(RM_F) $(CLEANUPS)
+@@ -73,3 +113,9 @@
+ 	$(RM_F) Makefile
+ 
+ distclean: realclean
++
++#
++# Local variables:
++# mode: makefile
++# ex: ft=make
++# End:
+--- origsrc/parrot-0.8.2/languages/pynie/config/makefiles/root.in	2008-10-05 20:44:25.000000000 +0000
++++ src/parrot-0.8.2/languages/pynie/config/makefiles/root.in	2008-12-25 13:44:22.147125000 +0000
+@@ -1,36 +1,52 @@
+ # $Id: /mirror/trunk/languages/pynie/config/makefiles/root.in 31714 2008-10-05T19:35:53.959641Z moritz  $
+ 
+ ## arguments we want to run parrot with
+-PARROT_ARGS =
++HLLNAME       = pynie
++PARROT_ARGS   =
+ 
+ ## configuration settings
+ BUILD_DIR     = @build_dir@
+ LOAD_EXT      = @load_ext@
+ O             = @o@
++BIN_DIR       = @bin_dir@
++LIB_DIR       = @lib_dir@
++DOC_DIR       = @doc_dir@
++MANDIR        = @mandir@
+ 
+ ## Setup some commands
+ LN_S          = @lns@
+ PERL          = @perl@
+ RM_RF         = @rm_rf@
+ CP            = @cp@
++MKPATH        = @mkpath@
++POD2MAN       = pod2man
++
++#IF(parrot_is_shared and !(cygwin|win32)):export LD_RUN_PATH := @blib_dir@:$(LD_RUN_PATH)
+ PARROT        = ../../parrot@exe@
++PBC_TO_EXE    = ../../pbc_to_exe@exe@
+ CAT           = $(PERL) -MExtUtils::Command -e cat
+ BUILD_DYNPMC  = $(PERL) $(BUILD_DIR)/tools/build/dynpmc.pl
+ RECONFIGURE   = $(PERL) $(BUILD_DIR)/tools/dev/reconfigure.pl
+-#CONDITIONED_LINE(darwin):
+-#CONDITIONED_LINE(darwin):# MACOSX_DEPLOYMENT_TARGET must be defined for OS X compilation/linking
+-#CONDITIONED_LINE(darwin):export MACOSX_DEPLOYMENT_TARGET := @osx_version@
++#IF(darwin):
++#IF(darwin):# MACOSX_DEPLOYMENT_TARGET must be defined for OS X compilation/linking
++#IF(darwin):export MACOSX_DEPLOYMENT_TARGET := @osx_version@
+ 
+ ## places to look for things
+ PARROT_DYNEXT = $(BUILD_DIR)/runtime/parrot/dynext
+-PGE_LIBRARY   = $(BUILD_DIR)/runtime/parrot/library/PGE
++PARROT_LIB    = $(BUILD_DIR)/runtime/parrot/library
++PGE_LIBRARY   = $(PARROT_LIB)/PGE
++PCT           = $(PARROT_LIB)/PCT.pbc
+ PERL6GRAMMAR  = $(PGE_LIBRARY)/Perl6Grammar.pbc
+ NQP           = $(BUILD_DIR)/compilers/nqp/nqp.pbc
+ PCT           = $(BUILD_DIR)/runtime/parrot/library/PCT.pbc
+ 
+ PMC_DIR       = src/pmc
+ 
+-all: pynie.pbc
++DOCS = MAINTAINER README
++
++build : pynie.pbc
++
++all: pynie.pbc Makefile pynie@exe@ installable
+ 
+ SOURCES = pynie.pir \
+   src/gen_grammar.pir \
+@@ -63,8 +79,12 @@
+ 	@echo ""
+ 	@echo "Following targets are available for the user:"
+ 	@echo ""
+-	@echo "  all:               pynie.pbc"
++	@echo "  build:             pynie.pbc"
+ 	@echo "                     This is the default."
++	@echo "  all:               pynie.pbc pynie@exe@ installable"
++	@echo "  installable:       Create self-hosting bins and libs."
++	@echo "  install:           Install the installable targets and docs."
++	@echo ""
+ 	@echo "Testing:"
+ 	@echo "  test:              Run the test suite."
+ 	@echo "  testclean:         Clean up test results."
+@@ -84,10 +104,33 @@
+ # this target has nothing to do
+ testclean:
+ 
++# TODO: rename build_dir. basic run for missing libs
++test-installable : installable
++	./installable_$(HLLNAME)@exe@ t/00-parrot/03-op-logic.t
++
++$(HLLNAME)@exe@: $(HLLNAME).pbc
++	$(PBC_TO_EXE) $(HLLNAME).pbc
++
++installable_$(HLLNAME)@exe@ : $(HLLNAME).pbc
++	$(PBC_TO_EXE) $(HLLNAME).pbc --install
++
++installable : installable_$(HLLNAME)@exe@ $(HLLNAME).pbc
++	$(CP) installable_$(HLLNAME)@exe@ $(BUILD_DIR)
++	$(CP) $(HLLNAME).pbc $(PARROT_LIB)/$(HLLNAME).pbc
++
++install : installable
++	$(CP) installable_$(HLLNAME)@exe@ $(DESTDIR)$(BIN_DIR)/parrot-$(HLLNAME)@exe@
++	$(CP) $(HLLNAME).pbc $(DESTDIR)$(LIB_DIR)/parrot/library/$(HLLNAME).pbc
++	$(POD2MAN) pynie.pir > $(DESTDIR)$(MANDIR)/man1/parrot-$(HLLNAME).1
++	$(MKPATH) $(DESTDIR)$(DOC_DIR)/languages/$(HLLNAME)
++	$(CP) $(DOCS) $(DESTDIR)$(DOC_DIR)/languages/$(HLLNAME)
++
+ CLEANUPS = \
+   pynie.pbc \
+   src/gen_grammar.pir \
+   src/gen_actions.pir \
++  $(PARROT_LIB)/$(HLLNAME).pbc \
++  $(HLLNAME)@exe@ installable_*
+ 
+ clean:
+ 	$(RM_RF) $(CLEANUPS)
+@@ -96,3 +139,9 @@
+ 	$(RM_RF) Makefile
+ 
+ distclean: realclean
++
++#
++# Local variables:
++# mode: makefile
++# ex: ft=make
++# End:
+--- origsrc/parrot-0.8.2/languages/regex/config/makefiles/root.in	2008-06-23 02:30:47.000000000 +0000
++++ src/parrot-0.8.2/languages/regex/config/makefiles/root.in	2008-12-25 13:44:22.178375000 +0000
+@@ -2,33 +2,46 @@
+ # $Id: /mirror/trunk/languages/regex/config/makefiles/root.in 28688 2008-06-23T00:33:41.905243Z coke  $
+ 
+ # Makefile for languages/regex
+-
+-# Set up commands
+-PARROT        = ../../parrot@exe@
+-PERL          = @perl@
+-RM_F          = @rm_f@
+-YAPP          = yapp
+-PMC_DIR       = pmc
+-BUILD_DYNPMC  = $(PERL) @build_dir@/tools/build/dynpmc.pl
+-PARROT_DYNEXT = @build_dir@/runtime/parrot/dynext
+-RECONFIGURE   = $(PERL) @build_dir@/tools/dev/reconfigure.pl
+-#CONDITIONED_LINE(darwin):
+-#CONDITIONED_LINE(darwin):# MACOSX_DEPLOYMENT_TARGET must be defined for OS X compilation/linking
+-#CONDITIONED_LINE(darwin):export MACOSX_DEPLOYMENT_TARGET := @osx_version@
++HLLNAME	      = regex
+ 
+ # Set up directories
+-LOAD_EXT      = @load_ext@
++PMC_DIR       = pmc
+ BUILD_DIR     = @build_dir@
++BIN_DIR       = @bin_dir@
++LIB_DIR       = @lib_dir@
++DOC_DIR       = @doc_dir@
++MANDIR	      = @mandir@
+ 
+ # set up extensions
++LOAD_EXT      = @load_ext@
+ O             = @o@
+ 
++# Set up commands
++#IF(parrot_is_shared and !(cygwin|win32)):export LD_RUN_PATH := @blib_dir@:$(LD_RUN_PATH)
++PARROT        = ../../parrot@exe@
++PBC_TO_EXE    = ../../pbc_to_exe@exe@
++PERL          = @perl@
++RM_F          = @rm_f@
++YAPP          = yapp
++CP            = @cp@
++MKPATH        = @mkpath@
++POD2MAN       = pod2man
++BUILD_DYNPMC  = $(PERL) $(BUILD_DIR)/tools/build/dynpmc.pl
++PARROT_DYNEXT = $(BUILD_DIR)/runtime/parrot/dynext
++PARROT_LIB    = $(BUILD_DIR)/runtime/parrot/library
++RECONFIGURE   = $(PERL) $(BUILD_DIR)/tools/dev/reconfigure.pl
++#IF(darwin):
++#IF(darwin):# MACOSX_DEPLOYMENT_TARGET must be defined for OS X compilation/linking
++#IF(darwin):export MACOSX_DEPLOYMENT_TARGET := @osx_version@
++
+ PMCS = match matchrange
+ 
+ PMC_SOURCES = $(PMC_DIR)/match.pmc $(PMC_DIR)/matchrange.pmc
+ 
+ build : lib/Regex/Grammar.pm $(PMC_DIR)/match_group$(LOAD_EXT) regex-compiler.pbc
+ 
++all : build Makefile installable
++
+ # regenerate the Makefile
+ Makefile: config/makefiles/root.in
+ 	cd $(BUILD_DIR) && $(RECONFIGURE) --step=gen::languages --languages=regex
+@@ -39,12 +52,34 @@
+ regex-compiler.pbc : regex-compiler.pir
+ 	$(PARROT) -o regex-compiler.pbc regex-compiler.pir
+ 
+-$(PMC_DIR)/match_group$(LOAD_EXT): $(PARROT) $(PMC_SOURCES)
++regex-compiler@exe@ : regex-compiler.pbc
++	$(PBC_TO_EXE) regex-compiler.pbc
++
++$(PMC_DIR)/match_group$(LOAD_EXT): $(PMC_SOURCES)
+ 	cd $(PMC_DIR) && $(BUILD_DYNPMC) generate $(PMCS)
+ 	cd $(PMC_DIR) && $(BUILD_DYNPMC) compile $(PMCS)
+ 	cd $(PMC_DIR) && $(BUILD_DYNPMC) linklibs $(PMCS)
+ 	cd $(PMC_DIR) && $(BUILD_DYNPMC) copy --destination=$(PARROT_DYNEXT) $(PMCS)
+ 
++installable : installable_$(HLLNAME)@exe@ regex-compiler.pbc
++	$(CP) installable_$(HLLNAME)@exe@ $(BUILD_DIR)
++	$(CP) regex-compiler.pbc $(PARROT_LIB)/regex-compiler.pbc
++
++installable_regex@exe@: regex-compiler.pbc
++	$(PBC_TO_EXE) regex-compiler.pbc --install
++	$(MV) installable_regex-compiler@exe@ installable_regex@exe@
++
++# TODO: test for installed libs, rename build_dir. basic run for missing libs
++test-installable : installable
++	./installable_$(HLLNAME)@exe@ "(a+)?a" "aa"
++
++install : installable
++	$(CP) installable_$(HLLNAME)@exe@ $(DESTDIR)$(BIN_DIR)/parrot-$(HLLNAME)@exe@
++	$(CP) regex-compiler.pbc $(DESTDIR)$(LIB_DIR)/parrot/library/regex-compiler.pbc
++	$(POD2MAN) regex-compiler.pir > $(DESTDIR)$(MANDIR)/man1/parrot-$(HLLNAME).1
++	$(MKPATH) $(DESTDIR)$(DOC_DIR)/languages/$(HLLNAME)
++	$(CP) $(DOCS) $(DESTDIR)$(DOC_DIR)/languages/$(HLLNAME)
++
+ # Note: These tend to be in the order of the latest thing I've been
+ # working on to the oldest, so that I see the failures quicker.
+ .PHONY: test
+@@ -70,7 +105,8 @@
+   $(PMC_DIR)/*.pdb \
+   $(PMC_DIR)/*.lib \
+   test_regex.pir \
+-  test_regex.pbc
++  test_regex.pbc \
++  $(PARROT_LIB)/regex-compiler.pbc
+ 
+ clean:
+ 	$(RM_F) $(CLEANUPS)
+@@ -80,3 +116,8 @@
+ 
+ distclean: realclean
+ 
++#
++# Local variables:
++# mode: makefile
++# ex: ft=make
++# End:
+--- origsrc/parrot-0.8.2/languages/scheme/config/makefiles/root.in	2008-06-23 02:30:48.000000000 +0000
++++ src/parrot-0.8.2/languages/scheme/config/makefiles/root.in	2008-12-25 13:44:22.209625000 +0000
+@@ -2,17 +2,22 @@
+ # $Id: /mirror/trunk/languages/scheme/config/makefiles/root.in 28688 2008-06-23T00:33:41.905243Z coke  $
+ 
+ # Makefile for languages/scheme
++HLLNAME       = scheme
+ 
+ # Set up commands
+ PERL          = @perl@
+ RM_F          = @rm_f@
+ RECONFIGURE   = $(PERL) @build_dir@/tools/dev/reconfigure.pl
+-#CONDITIONED_LINE(darwin):
+-#CONDITIONED_LINE(darwin):# MACOSX_DEPLOYMENT_TARGET must be defined for OS X compilation/linking
+-#CONDITIONED_LINE(darwin):export MACOSX_DEPLOYMENT_TARGET := @osx_version@
++#IF(darwin):
++#IF(darwin):# MACOSX_DEPLOYMENT_TARGET must be defined for OS X compilation/linking
++#IF(darwin):export MACOSX_DEPLOYMENT_TARGET := @osx_version@
+ 
+ # Set up directories
+ BUILD_DIR     = @build_dir@
++LIB_DIR       = @lib_dir@
++DOC_DIR       = @doc_dir@
++MANDIR	      = @mandir@
++#PERL_LIB     = @ perl_lib @
+ 
+ # The default target
+ default: build
+@@ -34,12 +39,22 @@
+ 
+ # regenerate the Makefile
+ Makefile: config/makefiles/root.in
+-	cd $(BUILD_DIR) && $(RECONFIGURE) --step=gen::languages --languages=scheme
++	cd $(BUILD_DIR) && $(RECONFIGURE) --step=gen::languages --languages=$(HLLNAME)
+ 
+ # Compilation:
+ build:
+ 	$(PERL) -c schemec
+ 
++# perl libs where? need @ perl_lib @
++#	-$(MKPATH) $(DESTDIR)$(LIB_DIR)
++#	-$(MKPATH) $(DESTDIR)$(LIB_DIR)/Scheme
++#	$(CP) lib/Scheme.pm $(DESTDIR)$(LIB_DIR)/Scheme.pm
++#	$(CP) lib/Scheme/*.pm $(DESTDIR)$(LIB_DIR)/Scheme
++install : installable
++	$(CP) schemec $(DESTDIR)$(BIN_DIR)/parrot-schemec
++	$(MKPATH) $(DESTDIR)$(DOC_DIR)/languages/$(HLLNAME)
++	$(CP) $(DOCS) $(DESTDIR)$(DOC_DIR)/languages/$(HLLNAME)
++
+ # cleaning up
+ 
+ clean:
+@@ -60,3 +75,9 @@
+ # testing
+ test:
+ 	cd .. && $(PERL) scheme/t/harness
++
++#
++# Local variables:
++# mode: makefile
++# ex: ft=make
++# End:
+--- origsrc/parrot-0.8.2/languages/squaak/config/makefiles/root.in	2008-06-23 02:30:48.000000000 +0000
++++ src/parrot-0.8.2/languages/squaak/config/makefiles/root.in	2008-12-25 13:44:22.272125000 +0000
+@@ -4,52 +4,71 @@
+ PARROT_ARGS =
+ 
+ ## configuration settings
++HLLNAME       = squaak
+ BUILD_DIR     = @build_dir@
+ LOAD_EXT      = @load_ext@
+ O             = @o@
++BIN_DIR       = @bin_dir@
++LIB_DIR       = @lib_dir@
++DOC_DIR       = @doc_dir@
++MANDIR	      = @mandir@
+ 
+ ## Setup some commands
+ LN_S          = @lns@
+ PERL          = @perl@
+ RM_RF         = @rm_rf@
+ CP            = @cp@
++MKPATH        = @mkpath@
++POD2MAN       = pod2man
++
++#IF(parrot_is_shared and !(cygwin|win32)):export LD_RUN_PATH := @blib_dir@:$(LD_RUN_PATH)
+ PARROT        = ../../parrot@exe@
++PBC_TO_EXE    = ../../pbc_to_exe@exe@
+ CAT           = $(PERL) -MExtUtils::Command -e cat
+ BUILD_DYNPMC  = $(PERL) $(BUILD_DIR)/tools/build/dynpmc.pl
+ RECONFIGURE   = $(PERL) $(BUILD_DIR)/tools/dev/reconfigure.pl
+-#CONDITIONED_LINE(darwin):
+-#CONDITIONED_LINE(darwin):# MACOSX_DEPLOYMENT_TARGET must be defined for OS X compilation/linking
+-#CONDITIONED_LINE(darwin):export MACOSX_DEPLOYMENT_TARGET := @osx_version@
++#IF(darwin):
++#IF(darwin):# MACOSX_DEPLOYMENT_TARGET must be defined for OS X compilation/linking
++#IF(darwin):export MACOSX_DEPLOYMENT_TARGET := @osx_version@
+ 
+ ## places to look for things
+ PARROT_DYNEXT = $(BUILD_DIR)/runtime/parrot/dynext
+-PGE_LIBRARY   = $(BUILD_DIR)/runtime/parrot/library/PGE
++PARROT_LIB    = $(BUILD_DIR)/runtime/parrot/library
++PGE_LIBRARY   = $(PARROT_LIB)/PGE
++PCT           = $(PARROT_LIB)/PCT.pbc
+ PERL6GRAMMAR  = $(PGE_LIBRARY)/Perl6Grammar.pbc
+ NQP           = $(BUILD_DIR)/compilers/nqp/nqp.pbc
+-PCT           = $(BUILD_DIR)/runtime/parrot/library/PCT.pbc
+-
+-PMC_DIR       = src/pmc
+ 
+-all: squaak.pbc
++build: squaak.pbc
+ 
+-SQUAAK_GROUP = $(PMC_DIR)/squaak_group$(LOAD_EXT)
++all: build squaak@exe@ installable
+ 
+ SOURCES = squaak.pir \
+   src/gen_grammar.pir \
+   src/gen_actions.pir \
+-  src/gen_builtins.pir \
+-#  $(SQUAAK_GROUP)
++  src/gen_builtins.pir
+ 
+ BUILTINS_PIR = \
+   src/builtins/say.pir \
+ 
+-# PMCS = squaak
+-# PMC_SOURCES = $(PMC_DIR)/squaak.pmc
++DOCS = MAINTAINER README \
++  pod/tutorial_episode_1.pod \
++  pod/tutorial_episode_2.pod \
++  pod/tutorial_episode_3.pod \
++  pod/tutorial_episode_4.pod \
++  pod/tutorial_episode_5.pod \
++  pod/tutorial_episode_6.pod \
++  pod/tutorial_episode_7.pod \
++  pod/tutorial_episode_8.pod \
++  pod/tutorial_episode_9.pod
+ 
+ # the default target
+ squaak.pbc: $(PARROT) $(SOURCES)
+ 	$(PARROT) $(PARROT_ARGS) -o squaak.pbc squaak.pir
+ 
++squaak@exe@: $(HLLNAME).pbc
++	$(PBC_TO_EXE) $(HLLNAME).pbc
++
+ src/gen_grammar.pir: $(PERL6GRAMMAR) src/parser/grammar.pg
+ 	$(PARROT) $(PARROT_ARGS) $(PERL6GRAMMAR) \
+ 	    --output=src/gen_grammar.pir \
+@@ -62,23 +81,39 @@
+ src/gen_builtins.pir: $(BUILTINS_PIR)
+ 	$(CAT) $(BUILTINS_PIR) >src/gen_builtins.pir
+ 
+-$(SQUAAK_GROUP): $(PARROT) $(PMC_SOURCES)
+-	cd $(PMC_DIR) && $(BUILD_DYNPMC) generate $(PMCS)
+-	cd $(PMC_DIR) && $(BUILD_DYNPMC) compile $(PMCS)
+-	cd $(PMC_DIR) && $(BUILD_DYNPMC) linklibs $(PMCS)
+-	cd $(PMC_DIR) && $(BUILD_DYNPMC) copy --destination=$(PARROT_DYNEXT) $(PMCS)
++# TODO: rename build_dir. basic run for missing libs
++test-installable : installable
++	./installable_$(HLLNAME)@exe@
++
++install : installable
++	$(CP) installable_$(HLLNAME)@exe@ $(DESTDIR)$(BIN_DIR)/parrot-$(HLLNAME)@exe@
++	$(CP) $(HLLNAME).pbc $(DESTDIR)$(LIB_DIR)/parrot/library/$(HLLNAME).pbc
++	$(POD2MAN) squaak.pir > $(DESTDIR)$(MANDIR)/man1/parrot-$(HLLNAME).1
++	$(MKPATH) $(DESTDIR)$(DOC_DIR)/languages/$(HLLNAME)
++	$(CP) $(DOCS) $(DESTDIR)$(DOC_DIR)/languages/$(HLLNAME)
++
++installable : installable_$(HLLNAME)@exe@ $(HLLNAME).pbc
++	$(CP) installable_$(HLLNAME)@exe@ $(BUILD_DIR)
++	$(CP) $(HLLNAME).pbc $(PARROT_LIB)/$(HLLNAME).pbc
++
++installable_$(HLLNAME)@exe@ : $(HLLNAME).pbc
++	$(PBC_TO_EXE) $(HLLNAME).pbc --install
+ 
+ # regenerate the Makefile
+ Makefile: config/makefiles/root.in
+-	cd $(BUILD_DIR) && $(RECONFIGURE) --step=gen::languages --languages=squaak
++	cd $(BUILD_DIR) && $(RECONFIGURE) --step=gen::languages --languages=$(HLLNAME)
+ 
+ # This is a listing of all targets, that are meant to be called by users
+ help:
+ 	@echo ""
+ 	@echo "Following targets are available for the user:"
+ 	@echo ""
+-	@echo "  all:               squaak.pbc"
++	@echo "  build:             squaak.pbc"
+ 	@echo "                     This is the default."
++	@echo "  all:               squaak.pbc squaak.exe installable"
++	@echo "  installable:       Create self-hosting bins and libs."
++	@echo "  install:           Install the installable targets and docs."
++	@echo ""
+ 	@echo "Testing:"
+ 	@echo "  test:              Run the test suite."
+ 	@echo "  testclean:         Clean up test results."
+@@ -103,17 +138,7 @@
+   src/gen_grammar.pir \
+   src/gen_actions.pir \
+   src/gen_builtins.pir \
+-  $(PMC_DIR)/*.h \
+-  $(PMC_DIR)/*.c \
+-  $(PMC_DIR)/*.dump \
+-  $(PMC_DIR)/*$(O) \
+-  $(PMC_DIR)/*$(LOAD_EXT) \
+-  $(PMC_DIR)/*.exp \
+-  $(PMC_DIR)/*.ilk \
+-  $(PMC_DIR)/*.manifest \
+-  $(PMC_DIR)/*.pdb \
+-  $(PMC_DIR)/*.lib \
+-
++  $(PARROT_LIB)/$(HLLNAME).pbc $(HLLNAME)@exe@ installable_*
+ 
+ clean:
+ 	$(RM_RF) $(CLEANUPS)
+@@ -124,3 +149,8 @@
+ distclean: realclean
+ 
+ 
++#
++# Local variables:
++# mode: makefile
++# ex: ft=make
++# End:
+--- origsrc/parrot-0.8.2/languages/t/harness	2008-10-08 22:16:21.000000000 +0000
++++ src/parrot-0.8.2/languages/t/harness	2008-12-25 13:44:22.287750000 +0000
+@@ -79,6 +79,7 @@
+ # ecmascript           No t/harness
+ # eclectus
+ # forth                No t/harness
++# jvm                  not yet functional
+ # perl6                test scripts are written in Perl 6, not Perl 5
+ # pheme                test scripts are written in Scheme, not Perl 5
+ # PIR                  many test failures
+--- origsrc/parrot-0.8.2/languages/unlambda/config/makefiles/root.in	2008-06-23 02:30:45.000000000 +0000
++++ src/parrot-0.8.2/languages/unlambda/config/makefiles/root.in	2008-12-28 17:09:58.974750000 +0000
+@@ -1,36 +1,65 @@
+ # Copyright (C) 2008, The Perl Foundation.
+-# $Id: /mirror/trunk/languages/unlambda/config/makefiles/root.in 28688 2008-06-23T00:33:41.905243Z coke  $
++# $Id: root.in 34502 2008-12-28 17:09:53Z rurban $
+ 
+ # Makefile for languages/unlambda
+ 
+ # configuration settings
+-BUILD_DIR       = @build_dir@
++HLLNAME	      = unlambda
++BUILD_DIR     = @build_dir@
++LOAD_EXT      = @load_ext@
++O             = @o@
++BIN_DIR       = @bin_dir@
++LIB_DIR       = @lib_dir@
++DOC_DIR       = @doc_dir@
++MANDIR	      = @mandir@
+ 
+ # Set up commands
+-PERL            = @perl@
+-RM_F            = @rm_f@
+-RECONFIGURE     = $(PERL) @build_dir@/tools/dev/reconfigure.pl
+-#CONDITIONED_LINE(darwin):
+-#CONDITIONED_LINE(darwin):# MACOSX_DEPLOYMENT_TARGET must be defined for OS X compilation/linking
+-#CONDITIONED_LINE(darwin):export MACOSX_DEPLOYMENT_TARGET := @osx_version@
++PERL          = @perl@
++RM_F          = @rm_f@
++CP            = @cp@
++MKPATH        = @mkpath@
++#IF(has_pod2man):POD2MAN       = pod2man
++
++#IF(parrot_is_shared and !(cygwin|win32)):export LD_RUN_PATH := @blib_dir@:$(LD_RUN_PATH)
++#IF(darwin):export DYLD_LIBRARY_PATH := @blib_dir@:$(DYLD_LIBRARY_PATH)
++PARROT        = ../../parrot@exe@
++PBC_TO_EXE    = ../../pbc_to_exe@exe@
++RECONFIGURE   = $(PERL) $(BUILD_DIR)/tools/dev/reconfigure.pl
++#IF(darwin):
++#IF(darwin):# MACOSX_DEPLOYMENT_TARGET must be defined for OS X compilation/linking
++#IF(darwin):export MACOSX_DEPLOYMENT_TARGET := @osx_version@
++
++## places to look for things
++PARROT_LIB    = $(BUILD_DIR)/runtime/parrot/library
++
++DOCS = MAINTAINER README
+ 
+ # The default target
+-default: build
++build : $(HLLNAME).pbc
++
++all : $(HLLNAME).pbc $(HLLNAME)@exe@ Makefile installable
+ 
+ help :
+ 	@echo ""
+ 	@echo "Following targets are available for the user:"
+ 	@echo ""
+-	@echo "  build:             does nothing."
++	@echo "  build:             unlambda.pbc"
+ 	@echo "                     This is the default target."
++	@echo "  all:               unlambda.pbc unlambda@exe@ installable"
++	@echo "  installable:       Create self-hosting bins and libs."
++	@echo "  install:           Install the installable targets and docs."
+ 	@echo ""
++	@echo "Testing:"
+ 	@echo "  test:              Run the test suite."
++	@echo "  testclean:         Clean up test results."
+ 	@echo ""
++	@echo "Cleaning:"
+ 	@echo "  clean:             Clean up temporary files."
+-	@echo ""
+ 	@echo "  realclean:         Clean up generated files."
+ 	@echo ""
++	@echo "Misc:"
+ 	@echo "  help:              Print this help message."
++	@echo ""
+ 
+ # regenerate the Makefile
+ Makefile: config/makefiles/root.in
+@@ -40,14 +69,51 @@
+ build:
+ 	@echo "nothing to do"
+ 
+-# cleaning up
++$(HLLNAME).pbc: unl.pir
++	$(PARROT) $(PARROT_ARGS) -o $@ unl.pir
+ 
+-clean: 
+-	@echo "nothing to do"
++$(HLLNAME)@exe@ : $(HLLNAME).pbc
++	$(PBC_TO_EXE) $(HLLNAME).pbc
+ 
+-realclean: clean
+-	$(RM_F) Makefile
++installable : installable_$(HLLNAME)@exe@ $(HLLNAME).pbc
++	$(CP) installable_$(HLLNAME)@exe@ $(BUILD_DIR)
++	$(CP) $(HLLNAME).pbc $(PARROT_LIB)/$(HLLNAME).pbc
++
++installable_unlambda@exe@: $(HLLNAME).pbc
++	$(PBC_TO_EXE) $(HLLNAME).pbc --install
++
++# TODO: test for installed libs, rename build_dir. basic run for missing libs
++test-installable : installable
++	./installable_$(HLLNAME)@exe@ examples/h.unl
++
++install : installable
++	$(CP) installable_$(HLLNAME)@exe@ $(DESTDIR)$(BIN_DIR)/parrot-unlambda@exe@
++	$(CP) $(HLLNAME).pbc $(DESTDIR)$(LIB_DIR)/parrot/library/$(HLLNAME).pbc
++#IF(has_pod2man):	$(POD2MAN) $(HLLNAME).pir > $(DESTDIR)$(MANDIR)/man1/parrot-unlambda.1
++	$(MKPATH) $(DESTDIR)$(DOC_DIR)/languages/unlambda
++	$(CP) $(DOCS) $(DESTDIR)$(DOC_DIR)/languages/unlambda
+ 
+ # testing
+ test: build
+ 	$(PERL) t/harness
++
++# cleaning up
++CLEANUPS = \
++  $(HLLNAME).pbc \
++  $(HLLNAME)@exe@ \
++  installable_$(HLLNAME)@exe@ \
++  $(PARROT_LIB)/$(HLLNAME).pbc
++
++clean:
++	$(RM_F) $(CLEANUPS)
++
++testclean: clean
++
++realclean: clean
++	$(RM_F) Makefile
++
++#
++# Local variables:
++# mode: makefile
++# ex: ft=make
++# End:
+--- origsrc/parrot-0.8.2/languages/urm/config/makefiles/root.in	2008-06-23 02:30:46.000000000 +0000
++++ src/parrot-0.8.2/languages/urm/config/makefiles/root.in	2008-12-25 13:44:22.334625000 +0000
+@@ -5,30 +5,46 @@
+ # Setup of some commands
+ RM_F          = @rm_f@
+ PERL          = @perl@
+-PARROT        = ../../parrot@exe@
++CP            = @cp@
+ BUILD_DIR     = @build_dir@
++BIN_DIR       = @bin_dir@
++DOC_DIR       = @doc_dir@
++MANDIR	      = @mandir@
++
++#IF(parrot_is_shared and !(cygwin|win32)):export LD_RUN_PATH := @blib_dir@:$(LD_RUN_PATH)
++PARROT        = ../../parrot@exe@
++PBC_TO_EXE    = ../../pbc_to_exe@exe@
+ RECONFIGURE   = $(PERL) @build_dir@/tools/dev/reconfigure.pl
+-#CONDITIONED_LINE(darwin):
+-#CONDITIONED_LINE(darwin):# MACOSX_DEPLOYMENT_TARGET must be defined for OS X compilation/linking
+-#CONDITIONED_LINE(darwin):export MACOSX_DEPLOYMENT_TARGET := @osx_version@
++#IF(darwin):
++#IF(darwin):# MACOSX_DEPLOYMENT_TARGET must be defined for OS X compilation/linking
++#IF(darwin):export MACOSX_DEPLOYMENT_TARGET := @osx_version@
+ 
+-default: build
++default: all
+ 
+ help :
+ 	@echo ""
+ 	@echo "Following targets are available for the user:"
+ 	@echo ""
++	@echo "  all:               This is the default."
+ 	@echo "  build:             Just check whether 'urmc' compiles"
+-	@echo "                     This is the default."
++	@echo "  installable:       Create self-hosting bins and libs."
++	@echo "  install:           Install the installable targets and docs."
+ 	@echo ""
+-	@echo "  test:              run the test suite,"
+-	@echo ""
+-	@echo "  clean:             clean up temporary files"
+-	@echo ""
+-	@echo "  realclean:         clean up generated files"
++	@echo "Testing:"
++	@echo "  test:              Run the test suite."
++	@echo "  test-installable:  Test self-hosting targets."
++	@echo "  testclean:         Clean up test results."
++	@echo ""
++	@echo "Cleaning:"
++	@echo "  clean:             Basic cleaning up."
++	@echo "  realclean:         Removes also files generated by 'Configure.pl'"
++	@echo "  distclean:         Removes also anything built, in theory"
+ 	@echo ""
++	@echo "Misc:"
+ 	@echo "  help:              print this help message"
+ 
++all: build
++
+ # regenerate the Makefile
+ Makefile: config/makefiles/root.in
+ 	cd $(BUILD_DIR) && $(RECONFIGURE) --step=gen::languages --languages=urm
+@@ -47,6 +63,14 @@
+ build: 
+ 	$(PERL) -c urmc
+ 
++# TODO: rename build_dir. basic run for missing libs
++test-installable : test
++
++install : build
++	$(CP) urmc $(DESTDIR)$(BIN_DIR)/parrot-urmc
++
++installable: build
++
+ clean:
+ 	$(RM_F) \
+ 		core "*.pbc" "*~" "foo.p*" \
+@@ -60,4 +84,11 @@
+ 
+ realclean: clean
+ 	$(RM_F) Makefile
+-	
++
++distclean: clean realclean
++
++#
++# Local variables:
++# mode: makefile
++# ex: ft=make
++# End:
+--- origsrc/parrot-0.8.2/lib/Parrot/Configure/Compiler.pm	2008-12-17 06:55:04.000000000 +0000
++++ src/parrot-0.8.2/lib/Parrot/Configure/Compiler.pm	2008-12-27 19:21:11.209125000 +0000
+@@ -33,6 +33,7 @@
+     _run_command _build_compile_command
+     move_if_diff
+ );
++my $DEBUG;
+ 
+ our %file_types_info = (
+     makefile => {
+@@ -210,17 +211,62 @@
+ Its value will be detected automatically by target file name unless you set
+ it to a special value C<none>.
+ 
+-=item conditioned_lines
++=item conditioned_lines #IF #UNLESS #ELSIF #ELSE
+ 
+-If C<conditioned_lines> is true, then lines in the file that begin with:
+-C<#CONDITIONED_LINE(var):> are skipped if the C<var> condition is false. Lines
+-that begin with C<#INVERSE_CONDITIONED_LINE(var):> are skipped if
+-the C<var> condition is true.  For instance:
++If conditioned_lines is true, then several expressions at the first column
++are evaluated and replaced by the content after the C<:> dependending on
++the evaluation of the expression.
++
++Lines beginning with C<#IF(expr):> are skipped if the expr
++condition is false, otherwise the content after the C<:> is inserted.
++Lines beginning with C<#UNLESS(expr):> are skipped if the expr condition
++is true, otherwise the content after the C<:> is inserted.
++Lines beginning with C<#ELSIF(expr):> or C<#ELSE:> are evaluated if the
++former C<#IF(expr):> evaluated to false.
++
++A condition expr may be:
++
++  * a single key, which is true if a config key is true
++    - not 0 and not undef and not an empty string,
++  * or equal to the platform name, the osname - case-sensitive,
++  * or a C<key==value> expression, which checks for the config key,
++    Note that values may contain no spaces here. Quotes in values
++    are not supported.
++  * or a logical combination of C<|>, C<OR>, C<&>, C<AND>, C<!>, C<NOT>,
++    The verbose ops AND, OR and NOT are case-insensitive.
++    ! and NOT bind closer than &, AND and |, OR.
++    The order of precedence for AND and OR is undefined.
+ 
+-  #CONDITIONED_LINE(win32): $(SRC_DIR)/atomic/gcc_x86$(O)
++A key must only consist of the chars A-Z a-z 0-9 _ -, and is checked
++case-sensitively against the config key or the platform name.
++
++For instance:
++
++  #IF(win32): $(SRC_DIR)/atomic/gcc_x86$(O)
+ 
+ will be processed if the platform is win32.
+ 
++  #IF(cpuarch==i386): $(SRC_DIR)/atomic/gcc_x86$(O)
++
++will be skipped if the value of the config key "cpuarch" is not "i386".
++
++  #IF(cpuarch==i386): $(SRC_DIR)/atomic/gcc_x86$(O)
++  #ELSIF(cpuarch==sparcv9): $(SRC_DIR)/atomic/sparc_v9.s
++  #ELSE:
++
++will use " $(SRC_DIR)/atomic/gcc_x86$(O)" on cpuarch "i386",
++" $(SRC_DIR)/atomic/sparc_v9.s" on cpuarch "sparcv9"
++and print an empty line otherwise.
++
++  #IF(win32 and glut and not cygwin):
++
++will be used on win32 and if glut is defined, but not on cygwin.
++
++B<Legacy Syntax:>
++
++The old syntax #CONDITIONED_LINE(var): and
++#INVERSE_CONDITIONED_LINE(var): is still supported, but is deprecated.
++
+ =item comment_type
+ 
+ This option takes has two possible values, C<#> or C</*>. If present and
+@@ -294,6 +340,7 @@
+ 
+     open my $in,  '<', $source       or die "Can't open $source: $!";
+     open my $out, '>', "$target.tmp" or die "Can't open $target.tmp: $!";
++    $DEBUG++ if $ENV{TEST_VERBOSE};
+ 
+     if ( !exists $options{file_type}) {
+         if ( $target =~ m/makefile$/i ) {
+@@ -360,6 +407,8 @@
+     # this loop can not be implemented as a foreach loop as the body
+     # is dependent on <IN> being evaluated lazily
+ 
++    my $former_truth = 99;
++  LINE:
+     while ( my $line = <$in> ) {
+ 
+         # everything after the line starting with #perl is eval'ed
+@@ -376,16 +425,46 @@
+             $text =~ s{ \@ (\w+) \@ }{\$conf->data->get("$1")}gx;
+             eval $text;
+             die $@ if $@;
+-            last;
++            last LINE;
+         }
+         if ( $options{conditioned_lines} ) {
+-            if ( $line =~ m/^#CONDITIONED_LINE\(([^)]+)\):(.*)/s ) {
+-                next unless $conf->data->get($1);
+-                $line = $2;
+-            }
+-            elsif ( $line =~ m/^#INVERSE_CONDITIONED_LINE\(([^)]+)\):(.*)/s ) {
+-                next if $conf->data->get($1);
+-                $line = $2;
++            my ($op, $expr, $rest);
++            # allow multiple keys and nested parens here
++            if (($op,$expr,$rest)=($line =~ m/^#(IF|UNLESS|ELSIF)\((.+)\):(.*)/s)) {
++                if (($op eq 'ELSIF') and $former_truth) {
++                    next LINE;  # no useless check if former IF was true
++                }
++                my $truth = cond_eval($conf, $expr);
++                if ($op eq 'IF') {
++                    $former_truth = $truth;
++                    next LINE unless $truth;
++                }
++                elsif ($op eq 'UNLESS') {
++                    $former_truth = !$truth;
++                    next LINE if $truth;
++                }
++                elsif ($op eq 'ELSIF') {
++                    $former_truth = $truth;
++                    next LINE unless $truth;
++                }
++                $line = $rest;
++            }
++            elsif ( $former_truth != 99 and $line =~ m/^#ELSE:(.*)/s ) {
++                next LINE if $former_truth;
++                $line = $1;
++            }
++            # Legacy, DEPRECATED.
++            elsif (($expr,$rest)=($line =~ m/^#CONDITIONED_LINE\(([^)]+)\):(.*)/s)) {
++                next LINE unless cond_eval($conf, $expr);
++                $line = $rest;
++            }
++            elsif (($expr,$rest)=($line =~ m/^#INVERSE_CONDITIONED_LINE\(([^)]+)\):(.*)/s )) {
++                next LINE if cond_eval($conf, $expr);
++                $line = $rest;
++            }
++
++            else { # reset
++                $former_truth = 99; # ELSE must immediately follow a conditional.
+             }
+         }
+ 
+@@ -485,6 +564,131 @@
+     move_if_diff( "$target.tmp", $target, $options{ignore_pattern} );
+ }
+ 
++# Return the next subexpression from the expression in $_[0]
++# and remove it from the input expression.
++# Allowed chars: A-Z a-z 0-9 _ -, so let's take [-\w].
++# E.g. "(not win32 and has_glut)"
++#        => not win32 => has_glut
++#      "(!win32&has_glut)|cygwin"   - perl-style
++#        !win32&has_glut => !win32 => &has_glut => |cygwin
++sub next_expr {
++    my $s = $_[0];
++    return "" unless $s;
++    # start of a subexpression?
++    if ($s =~ /^\((.+)\)\s*(.*)/o) {    # longest match to matching closing paren
++        $_[0] = $2 ? $2 : "";           # modify the 2nd arg
++        print "#** nextsub \"$s\" => (\"$1\",\"$_[0]\")\n" if $DEBUG;
++        return $1;
++    }
++    else {
++        $s =~ s/^\s+//;                 # left-trim to make it more robust
++        if ($s =~ m/^([-\w=]+)\s*(.*)?/o) { # shortest match to next non-word char
++            # start with word expr
++            $_[0] = $2 ? $2 : "";       # modify the 2nd arg expr in the caller
++            print "#** nextexpr \"$s\" => (\"$1\",\"$_[0]\")\n" if $DEBUG;
++            return $1;
++        }
++        else {
++            # special case: start with non-word op (perl-syntax only)
++            $s =~ m/^([|&!])\s*(.*)?/o; # shortest match to next word char
++            $_[0] = $2 ? $2 : "";       # modify the 2nd arg expr in the caller
++            print "#** nextop \"$s\" => (\"$1\",\"$_[0]\")\n" if $DEBUG;
++            return $1;
++        }
++    }
++}
++
++# Checks the logical truth of the hash value: exists and not empty.
++# Also check the platform name, the 'osname' key, if the hash key does not exist.
++# Also check for key==value, like #IF(ld==gcc)
++sub cond_eval_single {
++    my $conf = $_[0];
++    my $key  = $_[1];
++    return unless defined $key;
++    if ($key =~ /^([-\w]+)==(.+)$/) {
++        return ($2 eq $conf->data->get($1));
++    }
++    else {
++        return exists($conf->data->{c}->{$key})
++            ? ($conf->data()->get($key) ? 1 : 0)
++            : $key eq $conf->data()->get('osname');
++    }
++}
++
++sub truth { $_[0] ? "true" : "false"; }
++
++# Recursively evaluate boolean expressions with multiple keys and | & ! ops.
++# Order of precedence: Just "!" and "NOT" binds tighter than AND and OR.
++# There's no precedence for AND over OR defined, just left to right.
++sub cond_eval {
++    my $conf = $_[0];
++    my $expr = $_[1];
++    my @count = split /[\s!&|\(]+/, $expr; # optimizable with tr
++    if (@count > 1) { # multiple keys: recurse into
++        my $truth = 0;
++        my $prevtruth = 0;
++        my $key = next_expr($expr);
++        my $op  = '';
++      LOOP:
++        while ($key) {
++            if (($key eq '!') or (uc($key) eq 'NOT')) {
++                # bind next key immediately
++                $op = 'NOT';
++                $key = next_expr($expr);
++            }
++            elsif ($truth and ($op eq 'OR')) {
++                # true OR: => true
++                print "#* => ",truth(1)," rest=\"$expr\" SKIP on true OR\n" if $DEBUG;
++                last LOOP;
++            }
++            print "#* truth=",truth($truth)," op=\"$op\" key=\"$key\"\n" if $DEBUG;
++            $prevtruth = $truth;
++            if (!$truth and ($op eq 'AND')) { # false AND: => false, skip rest
++                print "#* => ",truth(0)," rest=\"$expr\" SKIP already false\n" if $DEBUG;
++                last LOOP;
++            }
++            $truth = cond_eval($conf, $key);
++            if ($op eq 'NOT') { # NOT *: invert
++                $truth = $truth ? 0 : 1;
++            }
++            elsif ($op eq 'AND' and !$truth) { # * AND false: => false
++                print "#* => ",truth(0)," rest=\"$expr\" SKIP rest\n" if $DEBUG;
++                last LOOP;
++            }
++            # * OR false => * (keep $truth). true OR * already handled before
++            print "#* => ",truth($truth)," rest=\"$expr\"\n" if $DEBUG;
++            my $prevexpr = $expr;
++            $op  = next_expr($expr);
++            if ($op) {
++                if ($op eq '|' or uc($op) eq 'OR') {
++                    $op = 'OR';
++                }
++                elsif ($op eq '&' or uc($op) eq 'AND') {
++                    $op = 'AND';
++                }
++                elsif ($op eq '!' or uc($op) eq 'NOT') {
++                    $op = 'NOT';
++                }
++                else {
++                    die "invalid op \"$op\" in \"$_[1]\" at \"$prevexpr\".\n";
++                }
++                $key = next_expr($expr);
++            }
++            elsif ($prevexpr) {
++                die "Makefile conditional syntax error: missing op in \"$_[1]\" at \"$prevexpr\".\n";
++            }
++            else {
++                last LOOP; # end of expr, nothing left
++            }
++            if ($prevexpr eq $expr) {
++                die "Makefile conditional parser error in \"$_[1]\" at \"$prevexpr\".\n";
++            }
++        }
++        return $truth;
++    }
++    cond_eval_single($conf, $expr);
++}
++
+ sub append_configure_log {
+     my $conf = shift;
+     my $target = shift;
+--- origsrc/parrot-0.8.2/lib/Parrot/Configure/Step/Methods.pm	2008-06-24 20:20:59.000000000 +0000
++++ src/parrot-0.8.2/lib/Parrot/Configure/Step/Methods.pm	2008-12-25 13:44:22.397125000 +0000
+@@ -119,6 +119,7 @@
+         cc              => $cc,
+         win32_gcc       => '-lalpha32 -lalpha32 -lopenalpha32',
+         win32_nongcc    => 'alpha.lib',
++        cygwin          => '-lalpha32 -lXalpha32', # optional
+         darwin          => 'alphadarwin.lib',
+         default         => '-lalpha',
+     } );
+@@ -138,6 +139,8 @@
+ 
+ =item * MSWin32 with any C-compiler other than F<gcc>.
+ 
++=item * Cygwin to override Mingw.
++
+ =item * Darwin.
+ 
+ =back
+@@ -173,7 +176,7 @@
+ 
+ =item * C<win32_gcc>
+ 
+-Libraries to be added where OS is mswin32 and C-compiler is F<gcc>.
++Libraries to be added where OS is mswin32 or cygwin and C-compiler is F<gcc>.
+ Single whitespace-delimited string.
+ 
+ =item * C<win32_nongcc>
+@@ -181,6 +184,12 @@
+ Libraries to be added where OS is mswin32 and C-compiler is not F<gcc>.
+ Single whitespace-delimited string.
+ 
++=item * C<cygwin>
++
++Optional libraries to be added where OS is cygwin. This overrides C<win32_gcc>
++if defined.
++Single whitespace-delimited string.
++
+ =item * C<darwin>
+ 
+ Libraries to be added where OS is Darwin.  Do not supply a value if the value
+@@ -197,7 +206,8 @@
+     my $args = shift;
+     croak "_add_to_libs() takes hashref: $!" unless ref($args) eq 'HASH';
+     my $platform =
+-          (($args->{osname} =~ /mswin32/i ||
++           $args->{osname} =~ /cygwin/i      ? 'cygwin'
++        :(($args->{osname} =~ /mswin32/i ||
+            $args->{osname} =~ /cygwin/i) &&
+            $args->{cc} =~ /^gcc/i)          ? 'win32_gcc'
+         :  $args->{osname} =~ /mswin32/i    ? 'win32_nongcc'
+--- origsrc/parrot-0.8.2/lib/Parrot/Configure.pm	2008-12-17 06:55:04.000000000 +0000
++++ src/parrot-0.8.2/lib/Parrot/Configure.pm	2008-12-25 13:44:22.412750000 +0000
+@@ -238,13 +238,8 @@
+     # We make certain that argument to --fatal-step is a comma-delimited
+     # string of configuration steps, each of which is a string delimited by
+     # two colons, the first half of which is one of init|inter|auto|gen
+-#<<<<<<< .working
+     elsif ( defined ( $fatal_step_str ) ) {
+         %steps_to_die_for = _handle_fatal_step_option( $fatal_step_str );
+-#=======
+-#    elsif ( defined ( $fatal_step ) ) {
+-#        %steps_to_die_for = $conf->_handle_fatal_step_option( $fatal_step );
+-#>>>>>>> .merge-right.r30499
+     }
+     else {
+         # No action needed; this is the default case where no step is fatal
+--- origsrc/parrot-0.8.2/runtime/parrot/include/test_more.pir	2008-12-17 06:54:59.000000000 +0000
++++ src/parrot-0.8.2/runtime/parrot/include/test_more.pir	2008-12-25 13:44:22.475250000 +0000
+@@ -14,7 +14,7 @@
+ 
+ =cut
+ 
+-    load_bytecode 'runtime/parrot/library/Test/More.pbc'
++    load_bytecode 'Test/More.pbc'
+ 
+     # get the testing functions
+     .local pmc exports, curr_namespace, test_namespace
+--- origsrc/parrot-0.8.2/runtime/parrot/library/config.pir	2008-09-14 02:19:58.000000000 +0000
++++ src/parrot-0.8.2/runtime/parrot/library/config.pir	2008-12-28 12:20:52.115375000 +0000
+@@ -48,12 +48,28 @@
+ .sub _config
+     .local pmc CONF
+     .local string conf_file
++
++    # We should check if a linked frozen hash already exists
++    # and return that instead. See RT #57418
++    #$P0 = find_global '', '_config'
++    #unless $P0 goto runtime
++    #$P0 = _config()
++    #.return( $P0 )
++
++runtime:
++    # conf_file = locate_runtime_file_str(interp, "config.fpmc", 2)
+     conf_file = interpinfo .INTERPINFO_RUNTIME_PREFIX
+-    conf_file .= "/runtime/parrot/include/config.fpmc"
++    conf_file .= "/lib/parrot/include/config.fpmc"
++    stat $I0, conf_file, 0
++    if $I0 goto conf
+ 
++    conf_file = interpinfo .INTERPINFO_RUNTIME_PREFIX
++    conf_file .= "/runtime/parrot/include/config.fpmc"
++conf:
+     open CONF, conf_file, "<"
+     $I0 = defined CONF
+     if $I0 goto ok1
++
+     printerr "Can't read '"
+     printerr conf_file
+     printerr "': "
+--- origsrc/parrot-0.8.2/runtime/parrot/library/parrotlib.pir	2008-12-17 06:55:00.000000000 +0000
++++ src/parrot-0.8.2/runtime/parrot/library/parrotlib.pir	2008-12-25 13:44:22.506500000 +0000
+@@ -24,14 +24,13 @@
+     .local pmc includes
+     .local string root
+ 
+-
+-    # XXX todo: get root from config
+     $P0 = new 'Env'
+     root = $P0["PARROT_RUNTIME_ROOT"]
+     length $I0, root
+     if $I0 == 0 goto DEFAULT
+     branch OKAY
+ DEFAULT:
++    # lib/parrot on installed, or runtime
+     root = "runtime/parrot"
+ OKAY:
+ 
+@@ -138,13 +137,22 @@
+     stat $I0, name, 0
+     if $I0 goto END
+ 
+-    name = "runtime/parrot/dynext/"
++    .include "interpinfo.pasm"
++    name = interpinfo .INTERPINFO_RUNTIME_PREFIX
++    concat name, "lib/parrot/dynext/"
+     concat name, request
+     stat $I0, name, 0
+     if $I0 goto END
+ 
++    concat name, ext
++    stat $I0, name, 0
++    if $I0 goto END
++
+     name = "runtime/parrot/dynext/"
+     concat name, request
++    stat $I0, name, 0
++    if $I0 goto END
++
+     concat name, ext
+     stat $I0, name, 0
+     if $I0 goto END
+--- origsrc/parrot-0.8.2/src/library.c	2008-12-17 06:55:02.000000000 +0000
++++ src/parrot-0.8.2/src/library.c	2008-12-25 13:44:22.569000000 +0000
+@@ -121,64 +121,111 @@
+ Platform code may add, delete, or replace search path entries as needed. See
+ also F<include/parrot/library.h> for C<enum_lib_paths>.
+ 
++#ifdef ENABLE_PARROT_LIBRARY_INSTALLED
++then the config hash is checked for the path prefix. This still crashes.
++
+ =cut
+ 
+ */
+ 
++#undef ENABLE_PARROT_LIBRARY_INSTALLED
++
+ void
+ parrot_init_library_paths(PARROT_INTERP)
+ {
+     PMC *paths;
+     STRING *entry;
++    INTVAL installed = 0;
+ 
+     PMC * const iglobals = interp->iglobals;
+     /* create the lib_paths array */
+     PMC * const lib_paths = pmc_new(interp, enum_class_FixedPMCArray);
++#ifdef ENABLE_PARROT_LIBRARY_INSTALLED
++    PMC * const config_hash = VTABLE_get_pmc_keyed_int(interp, iglobals, IGLOBALS_CONFIG_HASH);
++    STRING * const key = CONST_STRING(interp, "installed");
++#endif
+ 
+     VTABLE_set_integer_native(interp, lib_paths, PARROT_LIB_PATH_SIZE);
+     VTABLE_set_pmc_keyed_int(interp, iglobals,
+             IGLOBALS_LIB_PATHS, lib_paths);
++#ifdef ENABLE_PARROT_LIBRARY_INSTALLED
++    if (VTABLE_elements(interp, config_hash) &&
++        VTABLE_exists_keyed_str(interp, config_hash, key))) {
++        installed = VTABLE_get_integer_keyed_str(interp, config_hash, key);
++    }
++#endif
++
+     /* each is an array of strings */
+     /* define include paths */
+     paths = pmc_new(interp, enum_class_ResizableStringArray);
+     VTABLE_set_pmc_keyed_int(interp, lib_paths,
+             PARROT_LIB_PATH_INCLUDE, paths);
+-    entry = CONST_STRING(interp, "runtime/parrot/include/");
+-    VTABLE_push_string(interp, paths, entry);
+-    entry = CONST_STRING(interp, "runtime/parrot/");
+-    VTABLE_push_string(interp, paths, entry);
++#ifdef ENABLE_PARROT_LIBRARY_INSTALLED
++    if (installed) {
++#endif
++        entry = CONST_STRING(interp, "lib/parrot/include/");
++        VTABLE_push_string(interp, paths, entry);
++        entry = CONST_STRING(interp, "lib/parrot/");
++        VTABLE_push_string(interp, paths, entry);
++#ifdef ENABLE_PARROT_LIBRARY_INSTALLED
++    }
++    else {
++#endif
++        entry = CONST_STRING(interp, "runtime/parrot/include/");
++        VTABLE_push_string(interp, paths, entry);
++        entry = CONST_STRING(interp, "runtime/parrot/");
++        VTABLE_push_string(interp, paths, entry);
++#ifdef ENABLE_PARROT_LIBRARY_INSTALLED
++    }
++#endif
+     entry = CONST_STRING(interp, "./");
+     VTABLE_push_string(interp, paths, entry);
+-    entry = CONST_STRING(interp, "lib/parrot/include/");
+-    VTABLE_push_string(interp, paths, entry);
+-    entry = CONST_STRING(interp, "lib/parrot/");
+-    VTABLE_push_string(interp, paths, entry);
+ 
+     /* define library paths */
+     paths = pmc_new(interp, enum_class_ResizableStringArray);
+     VTABLE_set_pmc_keyed_int(interp, lib_paths,
+             PARROT_LIB_PATH_LIBRARY, paths);
+-    entry = CONST_STRING(interp, "runtime/parrot/library/");
+-    VTABLE_push_string(interp, paths, entry);
+-    entry = CONST_STRING(interp, "runtime/parrot/");
+-    VTABLE_push_string(interp, paths, entry);
++#ifdef ENABLE_PARROT_LIBRARY_INSTALLED
++    if (installed) {
++#endif
++        entry = CONST_STRING(interp, "lib/parrot/library/");
++        VTABLE_push_string(interp, paths, entry);
++        entry = CONST_STRING(interp, "lib/parrot/");
++        VTABLE_push_string(interp, paths, entry);
++#ifdef ENABLE_PARROT_LIBRARY_INSTALLED
++    }
++    else {
++#endif
++        entry = CONST_STRING(interp, "runtime/parrot/library/");
++        VTABLE_push_string(interp, paths, entry);
++        entry = CONST_STRING(interp, "runtime/parrot/");
++        VTABLE_push_string(interp, paths, entry);
++#ifdef ENABLE_PARROT_LIBRARY_INSTALLED
++    }
++#endif
+     entry = CONST_STRING(interp, "./");
+     VTABLE_push_string(interp, paths, entry);
+-    entry = CONST_STRING(interp, "lib/parrot/library/");
+-    VTABLE_push_string(interp, paths, entry);
+-    entry = CONST_STRING(interp, "lib/parrot/");
+-    VTABLE_push_string(interp, paths, entry);
+ 
+     /* define dynext paths */
+     paths = pmc_new(interp, enum_class_ResizableStringArray);
+     VTABLE_set_pmc_keyed_int(interp, lib_paths,
+             PARROT_LIB_PATH_DYNEXT, paths);
+-    entry = CONST_STRING(interp, "runtime/parrot/dynext/");
+-    VTABLE_push_string(interp, paths, entry);
++#ifdef ENABLE_PARROT_LIBRARY_INSTALLED
++    if (installed) {
++#endif
++        entry = CONST_STRING(interp, "lib/parrot/dynext/");
++        VTABLE_push_string(interp, paths, entry);
++#ifdef ENABLE_PARROT_LIBRARY_INSTALLED
++    }
++    else {
++#endif
++        entry = CONST_STRING(interp, "runtime/parrot/dynext/");
++        VTABLE_push_string(interp, paths, entry);
++#ifdef ENABLE_PARROT_LIBRARY_INSTALLED
++    }
++#endif
+     entry = CONST_STRING(interp, "");
+     VTABLE_push_string(interp, paths, entry);
+-    entry = CONST_STRING(interp, "lib/parrot/dynext/");
+-    VTABLE_push_string(interp, paths, entry);
+ 
+     /* shared exts */
+     paths = pmc_new(interp, enum_class_ResizableStringArray);
+@@ -452,7 +499,7 @@
+ 
+ =item C<static STRING* try_bytecode_extensions>
+ 
+-Guess extensions, so that the user can drop the extensions
++guess extensions, so that the user can drop the extensions
+ leaving it up to the build process/install whether or not
+ a .pbc, .pasm or a .pir file is used.
+ 
+@@ -470,7 +517,7 @@
+     int guess;
+ 
+     /*
+-      First try the path without guessing the extension to ensure compatibility
++      first try the path without guessing the extension to ensure compatibility
+       with existing code.
+      */
+ 
+@@ -481,8 +528,8 @@
+         return result;
+ 
+     /*
+-      Start guessing now. This version tries to find the lowest form of the
+-      code, starting with bytecode and working up to PIR. Note the atypical
++      start guessing now. this version tries to find the lowest form of the
++      code, starting with bytecode and working up to PIR. note the atypical
+       loop control. This is so the array can easily be processed in reverse.
+      */
+ 
+--- origsrc/parrot-0.8.2/t/library/pg.t	2008-12-17 06:55:11.000000000 +0000
++++ src/parrot-0.8.2/t/library/pg.t	2008-12-25 15:55:49.178375000 +0000
+@@ -242,7 +242,8 @@
+     test.'ok'(1, 'notice receiver called')
+     # res ought to be a PGresult struct
+     $S0 = typeof res
+-    test.'is'($S0, 'UnManagedStruct', 'notice callback got a struct')
++    $I0 = $S0 == 'UnManagedStruct'
++    test.'ok'($I0, 'notice callback got a struct')
+ 
+     .local pmc st
+     st = get_root_global ['parrot';'Pg'], 'PQresultStatus'
+--- origsrc/parrot-0.8.2/t/steps/gen_makefiles-01.t	2008-10-20 03:11:18.000000000 +0000
++++ src/parrot-0.8.2/t/steps/gen_makefiles-01.t	2008-12-25 13:44:22.678375000 +0000
+@@ -5,9 +5,80 @@
+ 
+ use strict;
+ use warnings;
+-use Test::More tests =>  7;
++my @cond_tests;
++my @conf_args = ( true => 1, false => 0, value => 'xx' );
++BEGIN {
++    @cond_tests =
++      (
++       # perl-syntax       true or false
++       ["IF(true)", 		1],
++       ["IF(false)", 		0],
++       ["UNLESS(true)",	        0],
++       ["UNLESS(false)",	1],
++       ["IF(true | false)",	1],
++       ["IF(true & false)",     0],
++       ["IF(true or true)",     1],
++       ["IF(true or false)",    1],
++       ["IF(false or true)",    1],
++       ["IF(false or false)",   0],
++       ["IF(true and true)",    1],
++       ["IF(true and false)",   0],
++       ["IF(false and true)",   0],
++       ["IF(false and false)",  0],
++       ["UNLESS(true|false)",   0],
++       ["UNLESS(true&false)",   1],
++       ["IF(!false)", 		1],
++       ["IF(true)", 		1],
++       ["ELSIF(value)", 	0],
++       ["ELSE", 	        0],
++       ["IF(false)", 		0],
++       ["ELSIF(value)", 	1],
++       ["ELSE", 	        0],
++       ["IF(false)", 		0],
++       ["ELSIF(false)", 	0],
++       ["ELSE", 	        1],
++       # Strangle the parser a bit
++       ["IF(true and (!false and value))",  1],
++       ["IF(true and (!false) and value)",  1],
++       ["IF(true and !false and value)",    1, 'no parens'],
++       ["IF(true and not false and value)", 1, 'no parens'],
++       ["IF(true&!false&value)",            1],
++       ["IF(false or (!false and value))",  1, 'not parser problem'],
++       ["UNLESS(!(true&!false&value))",     1, 'no ws, but nested parens'],
++       ["IF(true&(!false&false))",          0, 'not precedence'],
++       ["IF(true&(!false&value))",          1],
++       ["IF(not true and value)",           0, 'not precedence over and'],
++       ["IF(not false and value)",          1],
++       ["IF((not false) and value)",        1],
++       ["IF(not (false and value))",        1],
++       ["IF(not (false or value))",         0],
++       ["IF(true and not false)",           1],
++       # platform
++       ["IF(someplatform)",		    1],
++       ["IF(not someplatform)",		    0],
++       ["UNLESS(someplatform)",		    0],
++       ["UNLESS(not someplatform)",	    1],
++       # key==value
++       ["IF(value==xx)",                    1],
++       ["IF(value==xxy)",                   0],
++       ["UNLESS(value==xx)",                0],
++       ["UNLESS(value==xxy)",               1],
++       ["IF(true & (value==xx & (!false)))",1],
++       # These are invalid:
++       #["IF(value == xx)",                  0], # invalid op error
++       #["IF(value = xx)",                   0], # invalid op error
++       ["IF(value=xx)",                     0], # also invalid, no warning. checks for key value=xx
++
++       # Legacy syntax                 true or false
++       ["CONDITIONED_LINE(true)", 	    1],
++       ["INVERSE_CONDITIONED_LINE(true)",   0],
++       ["CONDITIONED_LINE(false)", 	    0],
++       ["INVERSE_CONDITIONED_LINE(false)",  1],
++      );
++}
++use Test::More tests => (7 + scalar(@cond_tests));
+ use Carp;
+-use lib qw( lib );
++use lib qw( . lib );
+ use_ok('config::gen::makefiles');
+ use Parrot::Configure;
+ use Parrot::Configure::Options qw( process_options );
+@@ -38,6 +109,52 @@
+ is($missing_SOURCE, 0, "No Makefile source file missing");
+ ok(-f $step->{CFLAGS_source}, "CFLAGS source file located");
+ 
++my $i = undef;
++sub result {
++    my $c = shift;
++    my $s = $c->[0];
++    $s =~ s/^\+/plus_/;
++    $s =~ s/^\-/minus_/;
++    $s =~ s/\|/OR/g;
++    $s =~ s/\&/AND/g;
++    $s =~ s/\!/NOT/g;
++    $s =~ s/[\()]//g;
++    $s =~ s/ /_/g;
++    $s .= ("_".++$i) if $s =~ /^(ELSE|ELSIF)/;
++    return $s."=".($c->[1]?"true":"false");
++}
++# test #+(keys):line RT #57548
++$conf->data->set( @conf_args, ('osname' => 'someplatform' ) );
++open IN, ">", "Makefile_$$.in";
++print IN "# There should only be =true results in .out\n";
++for my $c (@cond_tests) {
++    my $result = result($c);
++    print IN "#$c->[0]:$result\n";
++}
++close IN;
++$conf->genfile("Makefile_$$.in", "Makefile_$$.out",
++	       (makefile => 1, conditioned_lines => 1));
++open OUT, "<", "Makefile_$$.out";
++my $f;
++{
++    local $/;
++    $f = <OUT>;
++}
++END {
++    unlink "Makefile_$$.in", "Makefile_$$.out";
++}
++$i = undef;
++for my $c (@cond_tests) {
++    my $result = result($c);
++    if ($c->[2] and $c->[2] =~ /^TODO(.*)$/) {
++        local $TODO = $1;
++        ok(($c->[1] ? $f =~ /^$result$/m : $f !~ /^$result$/m), "$result");
++    }
++    else {
++        ok(($c->[1] ? $f =~ /^$result$/m : $f !~ /^$result$/m), "$result".($c->[2]?" $c->[2]":''));
++    }
++}
++
+ pass("Completed all tests in $0");
+ 
+ ################### DOCUMENTATION ###################
+@@ -60,6 +177,8 @@
+ 
+ James E Keenan
+ 
++Reini Urban (#+, #-)
++
+ =head1 SEE ALSO
+ 
+ config::gen::makefiles, F<Configure.pl>.
+--- origsrc/parrot-0.8.2/t/tools/dump_pbc.t	2008-10-20 03:11:18.000000000 +0000
++++ src/parrot-0.8.2/t/tools/dump_pbc.t	2008-12-28 12:37:59.584125000 +0000
+@@ -1,6 +1,6 @@
+ #! perl
+ # Copyright (C) 2008, The Perl Foundation.
+-# $Id: /mirror/trunk/t/tools/dump_pbc.t 28046 2008-06-02T20:16:19.945499Z bernhard  $
++# $Id: dump_pbc.t 28039 2008-06-02 20:16:19Z bernhard $
+ 
+ =head1 NAME
+ 
+--- origsrc/parrot-0.8.2/t/tools/parrot_config.t	1970-01-01 00:00:00.000000000 +0000
++++ src/parrot-0.8.2/t/tools/parrot_config.t	2008-12-29 16:14:57.349750000 +0000
+@@ -0,0 +1,125 @@
++#! perl
++# Copyright (C) 2008, The Perl Foundation.
++# $Id: parrot_config.t 30553 2008-08-26 01:31:47Z chromatic $
++
++=head1 NAME
++
++t/tools/parrot_config.t - test parrot_config and installable-parrot_config
++
++=head1 SYNOPSIS
++
++    % prove t/tools/parrot_config.t
++
++=head1 DESCRIPTION
++
++Tests the C<parrot_config> and C<installable_parrot_config> tools by
++comparing some options to the config hash. Esp. the installable logic.
++
++=head1 REQUIREMENTS
++
++This test script requires you to build parrot_config and the installables,
++by using "make parrot_utils" and "make installables" (using a suitable
++make tool for your platform).
++If this requirement has not been met, some tests will be skipped.
++
++=cut
++
++use strict;
++use warnings;
++use lib qw(lib);
++
++use Test::More;
++use IO::File;
++use Parrot::Config;
++use File::Spec;
++
++my ($path_to_cfg, $path_to_parrot, $builddir);
++
++BEGIN {
++    $builddir = $PConfig{build_dir};
++    $path_to_cfg = File::Spec->catfile( $builddir, "parrot_config");
++    $path_to_parrot = File::Spec->catfile( $builddir, "parrot" . $PConfig{exe});
++    unless ( -f $path_to_parrot ) {
++        plan skip_all => "parrot hasn't been built. Run make";
++        exit(0);
++    }
++    my $exefile = $path_to_cfg . $PConfig{exe};
++    unless ( -f $exefile ) {
++        plan skip_all => "parrot_config hasn't been built. Run make parrot_utils";
++        exit(0);
++    }
++    plan tests => 5;
++}
++
++my $tests = 0;
++my $prefix = $PConfig{prefix};
++
++output_eq( $path_to_parrot, File::Spec->catfile( $builddir, "parrot_config.pbc") . " prefix",
++	   $builddir, "./parrot parrot_config.pbc prefix => build_dir");
++output_eq( $path_to_cfg, "prefix",
++	   $builddir, "./parrot_config prefix => build_dir");
++output_eq( $path_to_cfg, "installed",
++	   "0", "./parrot_config installed => 0");
++
++my $path_to_inst = File::Spec->catfile( $builddir, "installable_parrot_config" );
++my $exefile = $path_to_inst . $PConfig{exe};
++SKIP: {
++    skip "installable_parrot_config hasn't been built. Run make installable", 2 unless -f $exefile;
++    output_eq( $exefile, "prefix",
++	       $prefix, "./installable_parrot_config prefix => prefix");
++    output_eq( $exefile, "installed",
++	       "1", "./installable_parrot_config installed => 1");
++}
++
++=head1 HELPER SUBROUTINES
++
++=head2 output_like
++
++    output_eq($path_to_cfg, "prefix",
++              "/usr/local", "$path_to_cfg prefix => /usr/local");
++
++Takes 3-4 arguments: a program to run, the arguments,
++a regex string to match the the output,
++and the optional test diagnostic.
++
++=cut
++
++my $testno = 0;
++
++sub output_eq {
++    my ( $prog, $args, $check, $diag ) = @_;
++    $testno++;
++    my $stdoutfn = "$0.$testno.stdout";
++    system("$prog $args >$stdoutfn 2>&1");
++    my $f = IO::File->new($stdoutfn);
++
++    my $output = join( '', <$f> );
++    $output =~ s/^\s+//g;
++    $output =~ s/\s+$//g;
++
++    local $Test::Builder::Level = $Test::Builder::Level + 1;
++    $f->close;
++    unlink ($stdoutfn);
++    is( $output, $check, $diag );
++}
++
++=head1 TODO
++
++=over 4
++
++=item
++
++Flesh it out.
++This is a bare bones proof of concept just to check the --install logic.
++Add tests for all of the commands.
++
++=back
++
++=cut
++
++# Local Variables:
++#   mode: cperl
++#   cperl-indent-level: 4
++#   fill-column: 100
++# End:
++# vim: expandtab shiftwidth=4:
+--- origsrc/parrot-0.8.2/t/tools/parrot_debugger.t	2008-10-20 03:11:18.000000000 +0000
++++ src/parrot-0.8.2/t/tools/parrot_debugger.t	2008-12-29 16:14:57.334125000 +0000
+@@ -1,6 +1,6 @@
+ #! perl
+ # Copyright (C) 2007-2008, The Perl Foundation.
+-# $Id: /mirror/trunk/t/tools/parrot_debugger.t 30584 2008-08-26T01:31:47.766857Z chromatic  $
++# $Id: parrot_debugger.t 34575 2008-12-29 14:53:54Z rurban $
+ 
+ =head1 NAME
+ 
+@@ -22,7 +22,7 @@
+ =head1 REQUIREMENTS
+ 
+ This test script requires you to build parrot_debugger, by typing
+-"make parrot_debugger" (using a suitable make tool for your platform).
++"make parrot_utils" (using a suitable make tool for your platform).
+ If this requirement has not been met, all tests will be skipped.
+ 
+ =cut
+@@ -32,7 +32,7 @@
+ use lib qw(lib);
+ 
+ use Test::More;
+-use IO::File;
++use IO::File ();
+ use Parrot::Config;
+ use File::Spec;
+ 
+@@ -42,7 +42,7 @@
+     $path_to_pdb = File::Spec->catfile( ".", "parrot_debugger" );
+     my $exefile = $path_to_pdb . $PConfig{exe};
+     unless ( -f $exefile ) {
+-        plan skip_all => "parrot_debugger hasn't been built";
++        plan skip_all => "parrot_debugger hasn't been built. Run make parrot_utils";
+         exit(0);
+     }
+ }
+@@ -101,6 +101,7 @@
+     my $output = join( '', <$f> );
+ 
+     local $Test::Builder::Level = $Test::Builder::Level + 1;
++    unlink ($codefn, $stdinfn, $stdoutfn);
+     like( $output, $check, $diag );
+ }
+ 
+--- origsrc/parrot-0.8.2/t/tools/pbc_disassemble.t	1970-01-01 00:00:00.000000000 +0000
++++ src/parrot-0.8.2/t/tools/pbc_disassemble.t	2008-12-29 16:14:57.287250000 +0000
+@@ -0,0 +1,120 @@
++#! perl
++# Copyright (C) 2007-2008, The Perl Foundation.
++# $Id: pbc_disassemble.t 34223 2008-12-22 03:24:34Z petdance $
++
++=head1 NAME
++
++t/tools/pbc_disassemble.t - test the Parrot Debugger
++
++=head1 SYNOPSIS
++
++    % prove t/tools/pbc_disassemble.t
++
++=head1 DESCRIPTION
++
++Tests the C<pbc_disassemble> tool by providing it with a number of source
++files, and running through it with various commands.
++
++We never actually check the I<full> output of pbc_disassemble.  We simply check
++several smaller components to avoid a test file that is far too unwieldy.
++
++
++=head1 REQUIREMENTS
++
++This test script requires you to build pbc_disassemble, by typing
++"make parrot_utils" (using a suitable make tool for your platform).
++If this requirement has not been met, all tests will be skipped.
++
++=cut
++
++use strict;
++use warnings;
++use lib qw(lib);
++
++use Test::More;
++use IO::File ();
++use Parrot::Config;
++use File::Spec;
++
++my $path;
++my $parrot = File::Spec->catfile( ".", $PConfig{test_prog} );
++
++BEGIN {
++    $path = File::Spec->catfile( ".", "pbc_disassemble" );
++    my $exefile = $path . $PConfig{exe};
++    unless ( -f $exefile ) {
++        plan skip_all => "pbc_disassemble hasn't been built. Run make parrot_utils";
++        exit(0);
++    }
++    plan tests => 2;
++}
++
++output_like( <<PIR, "pir", [ qr/set_n_nc/, qr/print_n/], 'pbc_disassemble');
++.sub main :main
++    \$N3 = 3.14159
++    print \$N3
++    print "\\n"
++.end
++PIR
++
++=head1 HELPER SUBROUTINES
++
++=head2 output_like
++
++    output_like(<<PASM, "pasm", "some output", "running $file");
++
++Takes 3-4 arguments: a file to run,
++the filename-extension of the file (probably "pir" or "pasm"),
++an arrayref or single regex string to match within pbc_disassemble's output,
++and the optional test diagnostic.
++
++=cut
++
++my $testno = 0;
++
++sub output_like {
++    my ( $file, $ext, $check, $diag ) = @_;
++    $testno++;
++    my $codefn   = "$0.$testno.$ext";
++    my $pbcfn    = "$0.$testno.pbc";
++    my $stdoutfn = "$0.$testno.stdout";
++    my $f        = IO::File->new(">$codefn");
++    $f->print($file);
++    $f->close();
++    system("$parrot -o $pbcfn $codefn 2>&1");
++    system("$path $pbcfn >$stdoutfn 2>&1");
++    $f = IO::File->new($stdoutfn);
++
++    my $output = join( '', <$f> );
++
++    local $Test::Builder::Level = $Test::Builder::Level + 1;
++    unlink ($codefn, $pbcfn, $stdoutfn);
++    if (ref $check eq 'ARRAY') {
++	for my $chk (@$check) {
++	    like( $output, $chk, $diag );
++	    $testno++;
++	}
++    } else {
++	like( $output, $check, $diag );
++    }
++}
++
++=head1 TODO
++
++=over 4
++
++=item
++
++Flesh it out.  This is a bare bones proof of concept.
++Add tests for all of the commands.
++
++=back
++
++=cut
++
++# Local Variables:
++#   mode: cperl
++#   cperl-indent-level: 4
++#   fill-column: 100
++# End:
++# vim: expandtab shiftwidth=4:
+--- origsrc/parrot-0.8.2/t/tools/pbc_info.t	1970-01-01 00:00:00.000000000 +0000
++++ src/parrot-0.8.2/t/tools/pbc_info.t	2008-12-29 16:14:57.318500000 +0000
+@@ -0,0 +1,120 @@
++#! perl
++# Copyright (C) 2007-2008, The Perl Foundation.
++# $Id: pbc_info.t 34223 2008-12-22 03:24:34Z petdance $
++
++=head1 NAME
++
++t/tools/pbc_info.t - test the Parrot Dumper
++
++=head1 SYNOPSIS
++
++    % prove t/tools/pbc_info.t
++
++=head1 DESCRIPTION
++
++Tests the C<pbc_info> tool by providing it with a number of source
++files, and running through it with various commands.
++
++We never actually check the I<full> output of pbc_info.  We simply check
++several smaller components to avoid a test file that is far too unwieldy.
++
++
++=head1 REQUIREMENTS
++
++This test script requires you to build pbc_info, by typing
++"make parrot_utils" (using a suitable make tool for your platform).
++If this requirement has not been met, all tests will be skipped.
++
++=cut
++
++use strict;
++use warnings;
++use lib qw(lib);
++
++use Test::More;
++use IO::File ();
++use Parrot::Config;
++use File::Spec;
++
++my $path;
++my $parrot = File::Spec->catfile( ".", $PConfig{test_prog} );
++
++BEGIN {
++    $path = File::Spec->catfile( ".", "pbc_info" );
++    my $exefile = $path . $PConfig{exe};
++    unless ( -f $exefile ) {
++        plan skip_all => "pbc_info hasn't been built. Run make parrot_utils";
++        exit(0);
++    }
++    plan tests => 4;
++}
++
++output_like( <<PIR, "pir", [qr/FIXUP_t/, qr/PIC_idx/, qr/CONSTANT_t/, qr/BYTECODE_t/], 'pbc_info');
++.sub main :main
++    \$N3 = 3.14159
++    print \$N3
++    print "\\n"
++.end
++PIR
++
++=head1 HELPER SUBROUTINES
++
++=head2 output_like
++
++    output_like(<<PASM, "pasm", "some output", "running $file");
++
++Takes 3-4 arguments: a file to run,
++the filename-extension of the file (probably "pir" or "pasm"),
++an arrayref or single regex string to match within pbc_info's output,
++and the optional test diagnostic.
++
++=cut
++
++my $testno = 0;
++
++sub output_like {
++    my ( $file, $ext, $check, $diag ) = @_;
++    $testno++;
++    my $codefn   = "$0.$testno.$ext";
++    my $pbcfn    = "$0.$testno.pbc";
++    my $stdoutfn = "$0.$testno.stdout";
++    my $f        = IO::File->new(">$codefn");
++    $f->print($file);
++    $f->close();
++    system("$parrot -o $pbcfn $codefn 2>&1");
++    system("$path $pbcfn >$stdoutfn 2>&1");
++    $f = IO::File->new($stdoutfn);
++
++    my $output = join( '', <$f> );
++
++    local $Test::Builder::Level = $Test::Builder::Level + 1;
++    unlink ($codefn, $pbcfn, $stdoutfn);
++    if (ref $check eq 'ARRAY') {
++	for my $chk (@$check) {
++	    like( $output, $chk, $diag );
++	    $testno++;
++	}
++    } else {
++	like( $output, $check, $diag );
++    }
++}
++
++=head1 TODO
++
++=over 4
++
++=item
++
++Flesh it out.  This is a bare bones proof of concept.
++Add tests for all of the commands.
++
++=back
++
++=cut
++
++# Local Variables:
++#   mode: cperl
++#   cperl-indent-level: 4
++#   fill-column: 100
++# End:
++# vim: expandtab shiftwidth=4:
+--- origsrc/parrot-0.8.2/t/tools/pbc_merge.t	2008-10-20 03:11:18.000000000 +0000
++++ src/parrot-0.8.2/t/tools/pbc_merge.t	2008-12-28 12:37:59.537250000 +0000
+@@ -1,6 +1,6 @@
+ #! perl
+ # Copyright (C) 2005-2007, The Perl Foundation.
+-# $Id: /mirror/trunk/t/tools/pbc_merge.t 18563 2007-05-16T00:53:55.855429Z chromatic  $
++# $Id: pbc_merge.t 18563 2007-05-16 00:53:55Z chromatic $
+ 
+ =head1 NAME
+ 
+--- origsrc/parrot-0.8.2/t/tools/pdump.t	1970-01-01 00:00:00.000000000 +0000
++++ src/parrot-0.8.2/t/tools/pdump.t	2008-12-29 16:14:57.318500000 +0000
+@@ -0,0 +1,120 @@
++#! perl
++# Copyright (C) 2007-2008, The Perl Foundation.
++# $Id: pdump.t 34223 2008-12-22 03:24:34Z petdance $
++
++=head1 NAME
++
++t/tools/pdump.t - test the Parrot Dumper
++
++=head1 SYNOPSIS
++
++    % prove t/tools/pdump.t
++
++=head1 DESCRIPTION
++
++Tests the C<pdump> tool by providing it with a number of source
++files, and running through it with various commands.
++
++We never actually check the I<full> output of pdump.  We simply check
++several smaller components to avoid a test file that is far too unwieldy.
++
++
++=head1 REQUIREMENTS
++
++This test script requires you to build pdump, by typing
++"make parrot_utils" (using a suitable make tool for your platform).
++If this requirement has not been met, all tests will be skipped.
++
++=cut
++
++use strict;
++use warnings;
++use lib qw(lib);
++
++use Test::More;
++use IO::File ();
++use Parrot::Config;
++use File::Spec;
++
++my $path;
++my $parrot = File::Spec->catfile( ".", $PConfig{test_prog} );
++
++BEGIN {
++    $path = File::Spec->catfile( ".", "pdump" );
++    my $exefile = $path . $PConfig{exe};
++    unless ( -f $exefile ) {
++        plan skip_all => "pdump hasn't been built. Run make parrot_utils";
++        exit(0);
++    }
++    plan tests => 2;
++}
++
++output_like( <<PIR, "pir", [qr/'PFC_STRING'/, qr/PFC_PMC/], '');
++.sub main :main
++    \$N3 = 3.14159
++    print \$N3
++    print "\\n"
++.end
++PIR
++
++=head1 HELPER SUBROUTINES
++
++=head2 output_like
++
++    output_like(<<PASM, "pasm", "some output", "running $file");
++
++Takes 3-4 arguments: a file to run,
++the filename-extension of the file (probably "pir" or "pasm"),
++an arrayref or single regex string to match within pdump's output,
++and the optional test diagnostic.
++
++=cut
++
++my $testno = 0;
++
++sub output_like {
++    my ( $file, $ext, $check, $diag ) = @_;
++    $testno++;
++    my $codefn   = "$0.$testno.$ext";
++    my $pbcfn    = "$0.$testno.pbc";
++    my $stdoutfn = "$0.$testno.stdout";
++    my $f        = IO::File->new(">$codefn");
++    $f->print($file);
++    $f->close();
++    system("$parrot -o $pbcfn $codefn 2>&1");
++    system("$path $pbcfn >$stdoutfn 2>&1");
++    $f = IO::File->new($stdoutfn);
++
++    my $output = join( '', <$f> );
++
++    local $Test::Builder::Level = $Test::Builder::Level + 1;
++    unlink ($codefn, $pbcfn, $stdoutfn);
++    if (ref $check eq 'ARRAY') {
++	for my $chk (@$check) {
++	    like( $output, $chk, $diag );
++	    $testno++;
++	}
++    } else {
++	like( $output, $check, $diag );
++    }
++}
++
++=head1 TODO
++
++=over 4
++
++=item
++
++Flesh it out.  This is a bare bones proof of concept.
++Add tests for all of the commands.
++
++=back
++
++=cut
++
++# Local Variables:
++#   mode: cperl
++#   cperl-indent-level: 4
++#   fill-column: 100
++# End:
++# vim: expandtab shiftwidth=4:
+--- origsrc/parrot-0.8.2/t/tools/pmc2c.t	2008-10-20 03:11:18.000000000 +0000
++++ src/parrot-0.8.2/t/tools/pmc2c.t	2008-12-28 12:37:59.552875000 +0000
+@@ -1,6 +1,6 @@
+ #! perl
+ # Copyright (C) 2005-2008, The Perl Foundation.
+-# $Id: /mirror/trunk/t/tools/pmc2c.t 28412 2008-06-16T02:39:40.990285Z chromatic  $
++# $Id: pmc2c.t 28405 2008-06-16 02:39:40Z chromatic $
+ 
+ =head1 NAME
+ 
+--- origsrc/parrot-0.8.2/tools/build/cygchkdll.sh	2008-06-01 09:08:35.000000000 +0000
++++ src/parrot-0.8.2/tools/build/cygchkdll.sh	1970-01-01 00:00:00.000000000 +0000
+@@ -1,5 +0,0 @@
+-libname=${2##*/}
+-if cygcheck ./$1 | egrep "Error.*find.*$libname" >/dev/null ; then
+-	echo "Could not find $2.  Guessing you need to add `pwd`/blib/lib to PATH."
+-	exit 1
+-fi
+--- origsrc/parrot-0.8.2/tools/dev/install_files.pl	2008-12-17 06:55:04.000000000 +0000
++++ src/parrot-0.8.2/tools/dev/install_files.pl	2008-12-25 18:32:51.225250000 +0000
+@@ -126,7 +126,7 @@
+     bindir      => '/usr/bin',
+     libdir      => '/usr/lib',
+     includedir  => '/usr/include',
+-    docdir      => '/usr/share/doc',
++    docdir      => '/usr/share/doc/parrot',
+     'dry-run'   => 0,
+ );
+ 
+@@ -189,6 +189,7 @@
+     }
+     elsif ( $meta{include} ) {
+         $dest =~ s/^include//;
++        $dest =~ s/^src/parrot/;
+         $dest = File::Spec->catdir( $options{includedir}, $dest );
+     }
+     elsif ( $meta{doc} ) {
+@@ -197,16 +198,19 @@
+     elsif ( $meta{pkgconfig} ) {
+ 
+         # For the time being this is hardcoded as being installed under libdir
+-        # as it is typically donw with automake installed packages.  If there
++        # as it is typically done with automake installed packages.  If there
+         # is a use case to make this configurable we'll add a seperate
+         # --pkgconfigdir option.
+         $dest = File::Spec->catdir( $options{libdir}, 'pkgconfig', $dest );
+     }
+-    elsif ( /\[library]/ ) {
+-        $dest =~ s/^runtime/$options{libdir}/;
+-    }
+     else {
+-        $dest = File::Spec->catdir( $options{prefix}, $dest );
++        $dest =~ s|^src/|lib/parrot/src/|;
++        next if $dest =~ /^compilers|config|language|tools/;
++        if (/^runtime/) {
++            $dest =~ s/^runtime/$options{libdir}/;
++        } else {
++            $dest = File::Spec->catdir( $options{prefix}, $dest );
++        }
+     }
+ 
+     $dest = File::Spec->catdir( $options{buildprefix}, $dest )
+@@ -245,6 +249,7 @@
+     }
+     else {
+         next unless -e $src;
++        next if $^O eq 'cygwin' and -e "$src.exe"; # cygwin stat works, but copy not
+         copy( $src, $dest ) or die "copy $src to $dest: $!\n";
+         print "$dest\n";
+     }
+--- origsrc/parrot-0.8.2/tools/dev/mk_language_shell.pl	2008-12-17 06:55:04.000000000 +0000
++++ src/parrot-0.8.2/tools/dev/mk_language_shell.pl	2008-12-25 13:44:22.850250000 +0000
+@@ -23,13 +23,19 @@
+ files and directories (relative to C<path>, which defaults
+ to F<languages/xyz> if an explicit C<path> isn't given):
+ 
++    MAINTAINER
+     README
++    STATUS
+     xyz.pir
+     config/makefiles/root.in
++    docs/running.pod
++    docs/Xyz.pod
++    src/builtins/say.pir
+     src/parser/grammar.pg
+     src/parser/grammar-oper.pg
+     src/parser/actions.pm
+-    src/builtins/say.pir
++    src/pmc/Xyz.pmc
++    src/ops/Xyz.ops
+     t/harness
+     t/00-sanity.t
+ 
+@@ -135,6 +141,20 @@
+ __README__
+ Language '@lang@' was created with @script@, @rev@.
+ 
++See docs/@lang@.pod for the documentation, and
++docs/running.pod for the command-line options.
++
++__MAINTAINER__
++# @Id@
++
++N: My Name
++E: My Email
++
++__STATUS__
++Number of tests passing:
++Percentage of implementation finished:
++TODO:
++
+ __config/makefiles/root.in__
+ ## @Id@
+ 
+@@ -142,33 +162,48 @@
+ PARROT_ARGS =
+ 
+ ## configuration settings
++HLLNAME       = @lclang@
+ BUILD_DIR     = @build_dir@
+ LOAD_EXT      = @load_ext@
+ O             = @o@
++BIN_DIR       = @bin_dir@
++LIB_DIR       = @lib_dir@
++DOC_DIR       = @doc_dir@
++MANDIR	      = @mandir@
++HLL_LIBPATH   = $(BUILD_DIR)/runtime/parrot/library
++PARROT_DYNEXT = $(BUILD_DIR)/runtime/parrot/dynext
+ 
+ ## Setup some commands
+ LN_S          = @lns@
+ PERL          = @perl@
+ RM_RF         = @rm_rf@
+ CP            = @cp@
++MKPATH        = @mkpath@
++POD2MAN       = pod2man
++#IF(parrot_is_shared and not(cygwin or win32)):export LD_RUN_PATH := @blib_dir@:$(LD_RUN_PATH)
+ PARROT        = ../../parrot@exe@
++PBC_TO_EXE    = ../../pbc_to_exe@exe@
+ CAT           = $(PERL) -MExtUtils::Command -e cat
+-BUILD_DYNPMC  = $(PERL) $(BUILD_DIR)/tools/build/dynpmc.pl
++PMCBUILD      = $(PERL) $(BUILD_DIR)/tools/build/dynpmc.pl
++OPSBUILD      = $(PERL) $(BUILD_DIR)/tools/build/dynoplibs.pl
+ RECONFIGURE   = $(PERL) $(BUILD_DIR)/tools/dev/reconfigure.pl
+-#CONDITIONED_LINE(darwin):
+-#CONDITIONED_LINE(darwin):# MACOSX_DEPLOYMENT_TARGET must be defined for OS X compilation/linking
+-#CONDITIONED_LINE(darwin):export MACOSX_DEPLOYMENT_TARGET := @osx_version@
++#IF(darwin):
++#IF(darwin):# MACOSX_DEPLOYMENT_TARGET must be defined for OS X compilation/linking
++#IF(darwin):export MACOSX_DEPLOYMENT_TARGET := @osx_version@
+ 
+ ## places to look for things
+-PARROT_DYNEXT = $(BUILD_DIR)/runtime/parrot/dynext
+ PGE_LIBRARY   = $(BUILD_DIR)/runtime/parrot/library/PGE
++PCT           = $(BUILD_DIR)/runtime/parrot/library/PCT.pbc
+ PERL6GRAMMAR  = $(PGE_LIBRARY)/Perl6Grammar.pbc
+ NQP           = $(BUILD_DIR)/compilers/nqp/nqp.pbc
+-PCT           = $(BUILD_DIR)/runtime/parrot/library/PCT.pbc
+ 
+ PMC_DIR       = src/pmc
++OPS_DIR       = src/ops
++OPSLIB        = @lclang@
+ 
+-all: @lclang@.pbc
++build: @lclang@.pbc
++
++all: @lclang@.pbc Makefile @lclang@@exe@ installable
+ 
+ @UCLANG@_GROUP = $(PMC_DIR)/@lclang@_group$(LOAD_EXT)
+ 
+@@ -176,18 +211,23 @@
+   src/gen_grammar.pir \
+   src/gen_actions.pir \
+   src/gen_builtins.pir \
+-#  $(@UCLANG@_GROUP)
++  $(@UCLANG@_GROUP)
+ 
+ BUILTINS_PIR = \
+-  src/builtins/say.pir \
++  src/builtins/say.pir
+ 
+-# PMCS = @lclang@
+-# PMC_SOURCES = $(PMC_DIR)/@lclang@.pmc
++PMCS = @lang@
++PMC_SOURCES = $(PMC_DIR)/@lang@.pmc
++OPS_SOURCES = $(OPS_DIR)/@lang@.ops
++DOCS = MAINTAINER README TODO
+ 
+ # the default target
+-@lclang@.pbc: $(PARROT) $(SOURCES)
++@lclang@.pbc: $(SOURCES)
+ 	$(PARROT) $(PARROT_ARGS) -o @lclang@.pbc @lclang@.pir
+ 
++@lclang@@exe@: @lclang@.pbc
++	$(PBC_TO_EXE) @lclang@.pbc
++
+ src/gen_grammar.pir: $(PERL6GRAMMAR) src/parser/grammar.pg src/parser/grammar-oper.pg
+ 	$(PARROT) $(PARROT_ARGS) $(PERL6GRAMMAR) \
+ 	    --output=src/gen_grammar.pir \
+@@ -201,11 +241,24 @@
+ src/gen_builtins.pir: $(BUILTINS_PIR)
+ 	$(CAT) $(BUILTINS_PIR) >src/gen_builtins.pir
+ 
+-$(@UCLANG@_GROUP): $(PARROT) $(PMC_SOURCES)
+-	cd $(PMC_DIR) && $(BUILD_DYNPMC) generate $(PMCS)
+-	cd $(PMC_DIR) && $(BUILD_DYNPMC) compile $(PMCS)
+-	cd $(PMC_DIR) && $(BUILD_DYNPMC) linklibs $(PMCS)
+-	cd $(PMC_DIR) && $(BUILD_DYNPMC) copy --destination=$(PARROT_DYNEXT) $(PMCS)
++$(@UCLANG@_GROUP): $(PMC_SOURCES)
++	@cd $(PMC_DIR) && $(PMCBUILD) generate $(PMCS)
++	@cd $(PMC_DIR) && $(PMCBUILD) compile  $(PMCS)
++	@cd $(PMC_DIR) && $(PMCBUILD) linklibs $(PMCS)
++	@cd $(PMC_DIR) && $(PMCBUILD) copy "--destination=$(PARROT_DYNEXT)" $(PMCS)
++
++ops/@lang@$(LOAD_EXT) : $(OPS_SOURCES)
++	@cd $(OPS_DIR) && $(OPSBUILD) generate $(OPSLIB)
++	@cd $(OPS_DIR) && $(OPSBUILD) compile  $(OPSLIB)
++	@cd $(OPS_DIR) && $(OPSBUILD) linklibs $(OPSLIB)
++	@cd $(OPS_DIR) && $(OPSBUILD) copy "--destination=$(PARROT_DYNEXT)" $(OPSLIB)
++
++installable : installable_@lclang@@exe@ $(@UCLANG@_GROUP) ops/@lang@$(LOAD_EXT)
++	cp installable_@lclang@@exe@ $(BUILD_DIR)
++	$(CP) @lclang@.pbc $(HLL_LIBPATH)/@lclang@.pbc
++
++installable_@lclang@@exe@ : @lclang@.pbc
++	$(PBC_TO_EXE) @lclang@.pbc --install
+ 
+ # regenerate the Makefile
+ Makefile: config/makefiles/root.in
+@@ -216,10 +269,16 @@
+ 	@echo ""
+ 	@echo "Following targets are available for the user:"
+ 	@echo ""
+-	@echo "  all:               @lclang@.pbc"
++	@echo "  build:             @lclang@.pbc"
+ 	@echo "                     This is the default."
++	@echo "  @lclang@@exe@      Self-hosting binary not to be installed."
++	@echo "  all:               @lclang@.pbc @lclang@@exe@ installable Makefile"
++	@echo "  installable:       Create libs and self-hosting binaries to be installed."
++	@echo "  install:           Install the installable targets and docs."
++	@echo ""
+ 	@echo "Testing:"
+ 	@echo "  test:              Run the test suite."
++	@echo "  test-installable:  Test self-hosting targets."
+ 	@echo "  testclean:         Clean up test results."
+ 	@echo ""
+ 	@echo "Cleaning:"
+@@ -234,7 +293,21 @@
+ test: all
+ 	$(PERL) t/harness
+ 
+-# this target has nothing to do
++# TODO: rename build_dir. basic run for missing libs
++test-installable : installable
++	echo "1" | ./installable_@lclang@@exe@
++
++install : installable
++	$(CP) installable_@lclang@@exe@ $(DESTDIR)$(BIN_DIR)/parrot-@lclang@@exe@
++	@cd $(OPS_DIR) && $(OPSBUILD) copy "--destination=$(DESTDIR)$(LIB_DIR)/parrot/dynext" $(OPSLIB)
++	@cd $(PMC_DIR) && $(PMCBUILD) copy "--destination=$(DESTDIR)$(LIB_DIR)/parrot/dynext" $(PMCS)
++	$(CP) @lclang@.pbc $(DESTDIR)$(LIB_DIR)/parrot/library/@lclang@.pbc
++	-$(MKPATH) $(DESTDIR)$(MANDIR)/man1
++	$(POD2MAN) docs/running.pod > $(DESTDIR)$(MANDIR)/man1/parrot-@lclang@.1
++	-$(MKPATH) $(DESTDIR)$(DOC_DIR)/languages/@lclang@
++	$(CP) $(DOCS) $(DESTDIR)$(DOC_DIR)/languages/@lclang@
++
++# clean intermediate test files
+ testclean:
+ 
+ CLEANUPS = \
+@@ -252,6 +325,9 @@
+   $(PMC_DIR)/*.manifest \
+   $(PMC_DIR)/*.pdb \
+   $(PMC_DIR)/*.lib \
++  @lclang@@exe@ \
++  $(HLL_LIBPATH)/@lclang@.pbc \
++  installable_@lclang@@exe@ \
+ 
+ 
+ clean: testclean
+@@ -262,7 +338,47 @@
+ 
+ distclean: realclean
+ 
++__docs/@lang@.pod__
++# @Id@
++
++=head1 @lang@
++
++=head1 Design
++
++=head1 SEE ALSO
++
++=cut
++
++# Local Variables:
++#   fill-column:78
++# End:
++# vim: expandtab shiftwidth=4:
++__docs/running.pod__
++# @Id@
++
++=head1 Running
+ 
++This document describes how to use the command line @lclang@ program, which
++...
++
++=head2 Usage
++
++  parrot @lclang@.pbc [OPTIONS] <input>
++
++or
++
++  parrot-@lclang@@exe [OPTIONS] <input>
++
++A number of additional options are available:
++
++  -q  Quiet mode; suppress output of summary at the end.
++
++=cut
++
++# Local Variables:
++#   fill-column:78
++# End:
++# vim: expandtab shiftwidth=4:
+ __@lclang@.pir__
+ =head1 TITLE
+ 
+@@ -487,6 +603,221 @@
+ # End:
+ # vim: expandtab shiftwidth=4:
+ 
++__src/pmc/@lang@.pmc__
++/*
++Copyright (C) 20xx, The Perl Foundation.
++@Id@
++
++=head1 NAME
++
++src/pmc/@lang@.pmc - @lang@
++
++=head1 DESCRIPTION
++
++These are the vtable functions for the @lang@ class.
++
++=cut
++
++=head2 Helper functions
++
++=over 4
++
++=item INTVAL size(INTERP, PMC, PMC)
++
++*/
++
++#include "parrot/parrot.h"
++
++static INTVAL
++size(Interp *interp, PMC* self, PMC* obj)
++{
++    INTVAL retval;
++    INTVAL dimension;
++    INTVAL length;
++    INTVAL pos;
++
++    if (!obj || PMC_IS_NULL(obj)) {
++        /* not set, so a simple 1D */
++        return VTABLE_get_integer(interp, self);
++    }
++
++    retval = 1;
++    dimension = VTABLE_get_integer(interp, obj);
++    for (pos = 0; pos < dimension; pos++)
++    {
++        length = VTABLE_get_integer_keyed_int(interp, obj, pos);
++        retval *= length;
++    }
++    return retval;
++}
++
++/*
++
++=back
++
++=head2 Methods
++
++=over 4
++
++=cut
++
++*/
++
++pmclass @lang@
++    extends ResizablePMCArray
++    provides array
++    group   @lclang@_group
++
++    need_ext
++    dynpmc
++    {
++/*
++
++=item C<void class_init()>
++
++initialize the pmc class. Store some constants, etc.
++
++=cut
++
++*/
++
++    /* RT#48194: move any constant string declarations here so we just do them once. */
++    void class_init() {
++    }
++
++
++/*
++
++=item C<PMC* init()>
++
++initialize the instance.
++
++=cut
++
++*/
++
++void init() {
++    SUPER();
++};
++
++=item C<PMC* get()>
++
++Returns a vector-like PMC.
++
++=cut
++
++*/
++
++    METHOD PMC* get() {
++        PMC* property;
++        INTVAL array_t;
++        STRING* property_name;
++
++        property_name = string_from_literal(INTERP, "property");
++        shape = VTABLE_getprop(INTERP, SELF, property_name);
++        if (PMC_IS_NULL(property)) {
++           /*
++            * No property has been set yet. This means that we are
++            * a simple vector
++            *
++            * we use our own type here. Perhaps a better way to
++            * specify it?
++            */
++            /*
++            array_t = pmc_type(INTERP,
++                string_from_literal(INTERP, "@lang@"));
++            */
++            property = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
++
++            VTABLE_set_integer_native(INTERP, property, 1);
++            VTABLE_set_integer_keyed_int(INTERP, property, 0,
++                VTABLE_get_integer(INTERP, SELF));
++            VTABLE_setprop(INTERP, SELF, property_name, property);
++        }
++        RETURN(PMC* property);
++    }
++
++/*
++
++=item C<PMC* set()>
++
++Change the existing @lang@ by passing in an existing vector.
++
++If the new property is larger than our old property, pad the end of the APLv
++with elements from the beginning.
++
++If the new property is shorter than our old property, truncate elements from
++the end of the APLv.
++
++=cut
++
++*/
++
++    METHOD set(PMC *new_property) {
++        STRING* property_name;
++        PMC*    old_property;
++        INTVAL  old_size, new_size, pos;
++
++        /* save the old property momentarily, set the new property */
++        property_name = string_from_literal(INTERP, "property");
++        old_property = VTABLE_getprop(INTERP, SELF, property_name);
++        VTABLE_setprop(INTERP, SELF, property_name, new_property);
++
++        /* how big are these property? */
++        old_size = size(INTERP, SELF, old_property);
++        new_size = size(INTERP, SELF, new_property);
++
++        if (old_size > new_size) {
++            for (; new_size != old_size; new_size++) {
++                VTABLE_pop_pmc(INTERP, SELF);
++            }
++        } else if (new_size > old_size) {
++            pos = 0;
++            for (; new_size != old_size; old_size++, pos++) {
++                /* RT#48196 clone this? */
++                VTABLE_push_pmc(INTERP, SELF,
++                    VTABLE_get_pmc_keyed_int(INTERP, SELF, pos));
++            }
++        }
++    }
++
++/*
++
++=back
++
++=cut
++
++*/
++
++}
++
++/*
++ * Local variables:
++ *   c-file-style: "parrot"
++ * End:
++ * vim: expandtab shiftwidth=4:
++ */
++__src/ops/@lang@.ops__
++/*
++ * @id@
++ * Copyright (C) 20xx, The Perl Foundation.
++ */
++
++#include "parrot/dynext.h"
++VERSION = PARROT_VERSION;
++
++/* Op to get the address of a PMC. */
++inline op @lclang@_pmc_addr(out INT, invar PMC) :base_core {
++    $1 = (int) $2;
++    goto NEXT();
++}
++
++/*
++ * Local variables:
++ *   c-file-style: "parrot"
++ * End:
++ * vim: expandtab shiftwidth=4:
++ */
+ __src/builtins/say.pir__
+ # @Id@
+ 
+--- origsrc/parrot-0.8.2/tools/install/smoke.pl	2008-12-17 06:55:04.000000000 +0000
++++ src/parrot-0.8.2/tools/install/smoke.pl	2008-12-25 13:44:22.897125000 +0000
+@@ -8,8 +8,10 @@
+ 
+ use Getopt::Long;
+ use File::Spec::Functions;
++use lib qw( lib );
++use vars qw( %PConfig );
+ 
+-use Test::More tests => 28;
++use Test::More tests => 29;
+ 
+ =head1 NAME
+ 
+@@ -17,22 +19,23 @@
+ 
+ =head1 SYNOPSIS
+ 
+-parrot in bin
++  parrot in bin
+ 
+     % cd /usr/local/parrot-$version
+-    % perl tools/install/smoke.pl
++    % perl tools/install/smoke.pl -Ilib
+ 
+-parrot in .
++  parrot in .
+ 
+     % perl tools/install/smoke.pl --bindir=.
+ 
+-test installation in DESTDIR:
++  test installation in DESTDIR:
+ 
+     % cd /usr/src/parrot
+     % mkdir .inst
+     % make install DESTDIR=.inst
+     % perl tools/install/smoke.pl DESTDIR=.inst
+ 
++
+ =head1 DESCRIPTION
+ 
+ Checks that most of things run (or just start) into the install directory,
+@@ -42,29 +45,68 @@
+ 
+ =over
+ 
++=item -I libdir
++
++Add libdir to the libpath to find Parrot::Config
++
+ =item --bindir=/usr/bin
+ 
+-Override default value : 'bin'
++Override Parrot::Config bindir
+ 
+ =item --libdir=/usr/lib
+ 
+-Override default value : 'lib'
++Override Parrot::Config libdir
++
++=item --prefix=/usr
++
++Override Parrot::Config prefix and adjust
++libdir and bindir accordingly.
++
++=item DESTDIR=instpath
++
++Use the temp. installation in instpath.
+ 
+ =back
+ 
+ =cut
+ 
+-my ($bindir, $libdir, $DESTDIR);
+-my $opts = GetOptions(
+-    'bindir=s'  => \$bindir,
+-    'libdir=s'  => \$libdir,
+-    'DESTDIR=s' => \$DESTDIR,
+-);
+-
+-$bindir = 'bin' unless $bindir;
+-$libdir = 'lib' unless $libdir;
++my (@libdirs, $prefix, $bindir, $libdir, $DESTDIR);
++my $opts = GetOptions( 'I=s'       => \@libdirs,
++                       'prefix=s'  => \$prefix,
++                       'bindir=s'  => \$bindir,
++                       'libdir=s'  => \$libdir,
++                       'DESTDIR=s' => \$DESTDIR,
++                     );
++if (@libdirs) {
++    push @INC, @libdirs;
++}
++require Parrot::Config;
++Parrot::Config->import;
++require Parrot::Test;
++
++$bindir = $PConfig{bindir} unless $bindir;
++$libdir = $PConfig{libdir} unless $libdir;
++if ($prefix) {
++    $bindir = $prefix . "/bin";
++    $libdir = $prefix . "/lib";
++}
++# Check for DESTDIR arg and adjust the path
++if (@ARGV and $ARGV[0] =~ /^DESTDIR/) {
++    if ($ARGV[0] =~ /^DESTDIR=(\S+)/) {
++        $DESTDIR = $1;
++    }
++    else {
++        $DESTDIR = $ARGV[1];
++    }
++}
++if ($DESTDIR) {
++    my $envsep = $^O eq 'MSWin32' ? ';' : ':';
++    $ENV{PATH} = $DESTDIR.$bindir.$envsep.$ENV{PATH};
++    $bindir = $DESTDIR . $bindir;
++    $libdir = $DESTDIR . $libdir;
++}
+ 
+-chdir $DESTDIR if ($DESTDIR);
++use File::Spec::Functions;
+ 
+ my $filename;
+ my $exe;
+@@ -75,6 +117,7 @@
+ #
+ # parrot executable
+ #
++-x $parrot or die "$parrot does not exist\n";
+ 
+ $exe = catfile($bindir, 'pbc_merge');
+ $out = `$exe`;
+@@ -96,7 +139,7 @@
+ 
+ $filename = 'test.pg';
+ open $FH, '>', $filename
+-        or die "Can't open $filename ($!).\n";
++  or die "Can't open $filename ($!).\n";
+ print $FH "token TOP { \\s* }\n";
+ close $FH;
+ $out = `$parrot $libdir/parrot/library/PGE/Perl6Grammar.pir $filename`;
+@@ -106,7 +149,7 @@
+ # compilers/tge is typically not installed
+ $filename = 'test.tg';
+ open $FH, '>', $filename
+-        or die "Can't open $filename ($!).\n";
++  or die "Can't open $filename ($!).\n";
+ print $FH "transform past (ROOT) { }\n";
+ close $FH;
+ $out = `$parrot compilers/tge/tgc.pir $filename`;
+@@ -116,7 +159,7 @@
+ # compilers/nqp is typically not installed
+ $filename = 'test.nqp';
+ open $FH, '>', $filename
+-        or die "Can't open $filename ($!).\n";
++  or die "Can't open $filename ($!).\n";
+ print $FH "say('hello world!');\n";
+ close $FH;
+ $out = `$parrot compilers/nqp/nqp.pbc $filename`;
+@@ -124,12 +167,13 @@
+ unlink($filename);
+ 
+ #
+-# some languages
+-#
++# Some languages.
++# Now we just need to know where the HLL pbc's are installed.
++# See L<pdd30_install.pod>
+ 
+ $filename = 'test.bc';
+ open $FH, '>', $filename
+-        or die "Can't open $filename ($!).\n";
++  or die "Can't open $filename ($!).\n";
+ print $FH "1 + 2\n";
+ close $FH;
+ $out = `$parrot languages/abc/abc.pbc $filename`;
+@@ -138,7 +182,7 @@
+ 
+ $filename = 'test.apl';
+ open $FH, '>', $filename
+-        or die "Can't open $filename ($!).\n";
++  or die "Can't open $filename ($!).\n";
+ print $FH "\"Hello world!\"";
+ close $FH;
+ $out = `$parrot languages/APL/APL.pbc $filename`;
+@@ -160,7 +204,7 @@
+ 
+ $filename = 'test.js';
+ open $FH, '>', $filename
+-        or die "Can't open $filename ($!).\n";
++  or die "Can't open $filename ($!).\n";
+ print $FH "print(\"Hello World from JS\\n\");";
+ close $FH;
+ $out = `$parrot languages/ecmascript/js.pbc $filename`;
+@@ -169,7 +213,7 @@
+ 
+ $filename = 'test.HQ9Plus';
+ open $FH, '>', $filename
+-        or die "Can't open $filename ($!).\n";
++  or die "Can't open $filename ($!).\n";
+ print $FH "H";
+ close $FH;
+ $out = `$parrot languages/hq9plus/hq9plus.pbc $filename`;
+@@ -178,7 +222,7 @@
+ 
+ $filename = 'test.l';
+ open $FH, '>', $filename
+-        or die "Can't open $filename ($!).\n";
++  or die "Can't open $filename ($!).\n";
+ print $FH "( print \"Hello, World!\" )\n";
+ close $FH;
+ $out = `$parrot languages/lisp/lisp.pbc $filename`;
+@@ -187,7 +231,7 @@
+ 
+ $filename = 'test.lolcode';
+ open $FH, '>', $filename
+-        or die "Can't open $filename ($!).\n";
++  or die "Can't open $filename ($!).\n";
+ print $FH <<'LOLCODE';
+ HAI 1.2
+     VISIBLE "HAI WORLD!"
+@@ -206,8 +250,8 @@
+ 
+ $filename = 'test.text';
+ open $FH, '>', $filename
+-        or die "Can't open $filename ($!).\n";
+-print $FH "Hello, World!\n\n";
++  or die "Can't open $filename ($!).\n";
++print $FH "Hello, World!\n";
+ close $FH;
+ $out = `$parrot languages/markdown/markdown.pbc $filename`;
+ ok($out eq "<p>Hello, World!</p>\n\n", "check markdown");
+@@ -221,7 +265,7 @@
+ 
+ $filename = 'test.l';
+ open $FH, '>', $filename
+-        or die "Can't open $filename ($!).\n";
++  or die "Can't open $filename ($!).\n";
+ print $FH "( write \"Hello, World!\\n\" )\n";
+ close $FH;
+ $out = `$parrot languages/pheme/pheme.pbc $filename`;
+@@ -230,7 +274,7 @@
+ 
+ $filename = 'test.php';
+ open $FH, '>', $filename
+-        or die "Can't open $filename ($!).\n";
++  or die "Can't open $filename ($!).\n";
+ print $FH "<?php echo \"Hello, World!\\n\"; ?>";
+ close $FH;
+ $out = `$parrot languages/pipp/pipp.pbc $filename`;
+@@ -239,7 +283,7 @@
+ 
+ $filename = 'test.p1';
+ open $FH, '>', $filename
+-        or die "Can't open $filename ($!).\n";
++  or die "Can't open $filename ($!).\n";
+ print $FH "print \"Hello, World!\\n\";\n";
+ close $FH;
+ $out = `$parrot languages/punie/punie.pbc $filename`;
+@@ -248,7 +292,7 @@
+ 
+ $filename = 'test.py';
+ open $FH, '>', $filename
+-        or die "Can't open $filename ($!).\n";
++  or die "Can't open $filename ($!).\n";
+ print $FH "print 'Hello, World!'\n";
+ close $FH;
+ $out = `$parrot languages/pynie/pynie.pbc $filename`;
+@@ -257,17 +301,29 @@
+ 
+ $filename = 'test.squaak';
+ open $FH, '>', $filename
+-        or die "Can't open $filename ($!).\n";
++  or die "Can't open $filename ($!).\n";
+ print $FH "print(\"Hello, World!\")\n";
+ close $FH;
+ $out = `$parrot languages/squaak/squaak.pbc $filename`;
+ ok($out eq "Hello, World!\n", "check squaak");
+ unlink($filename);
+ 
++TODO: {
++    local $TODO = 'missing file ?';
++
++$filename = 'test.tcl';
++open $FH, '>', $filename
++  or die "Can't open $filename ($!).\n";
++print $FH "puts {hello world!}\n";
++close $FH;
++$out = `$parrot languages/tcl/tcl.pbc $filename`;
++ok($out eq "hello world!\n", "check tcl");
++unlink($filename);
++}
++
+ # Local Variables:
+ #   mode: cperl
+ #   cperl-indent-level: 4
+ #   fill-column: 100
+ # End:
+ # vim: expandtab shiftwidth=4:
+-



nntp.perl.org: Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at ask@perl.org | Group listing | About