[svn:parrot] r43593 - in trunk: . compilers/data_json compilers/imcc compilers/json compilers/nqp compilers/nqp/bootstrap compilers/nqp/t compilers/pct compilers/pct/src compilers/pge compilers/pirc compilers/pirc/t compilers/tge config/auto config/auto/sizes config/gen config/gen/makefiles docs/book/draft docs/book/pct docs/dev docs/pdds examples/config/file examples/embed examples/languages/abc examples/languages/squaak examples/pge ext/nqp-rx include/parrot lib/Parrot lib/Parrot/Configure lib/Parrot/Configure/Options/Test lib/Parrot/Configure/Step lib/Parrot/Docs/Section ports/cpan ports/cygwin ports/debian ports/fedora ports/mandriva ports/suse runtime/parrot/languages runtime/parrot/library runtime/parrot/library/Math runtime/parrot/library/Math/Random src/call src/gc src/interp src/runcore t/compilers/tge t/configure/testlib t/library t/oo t/pmc t/src t/steps/gen t/steps/init/hints t/tools/ops2pm t/tools/pmc2cutils tools/build tools/dev tools/util

jkeenan at svn.parrot.org jkeenan at svn.parrot.org
Tue Jan 26 02:39:57 UTC 2010


Author: jkeenan
Date: Tue Jan 26 02:39:50 2010
New Revision: 43593
URL: https://trac.parrot.org/parrot/changeset/43593

Log:
Merge one_make branch into trunk.

Added:
   trunk/compilers/data_json/Defines.mak
      - copied unchanged from r43591, branches/one_make/compilers/data_json/Defines.mak
   trunk/compilers/data_json/Rules.mak
      - copied unchanged from r43591, branches/one_make/compilers/data_json/Rules.mak
   trunk/compilers/imcc/Defines.mak
      - copied unchanged from r43591, branches/one_make/compilers/imcc/Defines.mak
   trunk/compilers/imcc/Rules.mak
      - copied unchanged from r43591, branches/one_make/compilers/imcc/Rules.mak
   trunk/compilers/json/Defines.mak
      - copied unchanged from r43591, branches/one_make/compilers/json/Defines.mak
   trunk/compilers/json/Rules.mak
      - copied unchanged from r43591, branches/one_make/compilers/json/Rules.mak
   trunk/compilers/nqp/Defines.mak
      - copied unchanged from r43591, branches/one_make/compilers/nqp/Defines.mak
   trunk/compilers/nqp/Rules.mak
      - copied unchanged from r43591, branches/one_make/compilers/nqp/Rules.mak
   trunk/compilers/pct/Defines.mak
      - copied unchanged from r43591, branches/one_make/compilers/pct/Defines.mak
   trunk/compilers/pct/Rules.mak
      - copied unchanged from r43591, branches/one_make/compilers/pct/Rules.mak
   trunk/compilers/pge/Defines.mak
      - copied unchanged from r43591, branches/one_make/compilers/pge/Defines.mak
   trunk/compilers/pge/Rules.mak
      - copied unchanged from r43591, branches/one_make/compilers/pge/Rules.mak
   trunk/compilers/pirc/Defines.mak
      - copied unchanged from r43591, branches/one_make/compilers/pirc/Defines.mak
   trunk/compilers/pirc/Rules.mak
      - copied unchanged from r43591, branches/one_make/compilers/pirc/Rules.mak
   trunk/compilers/tge/Defines.mak
      - copied unchanged from r43591, branches/one_make/compilers/tge/Defines.mak
   trunk/compilers/tge/Rules.mak
      - copied unchanged from r43591, branches/one_make/compilers/tge/Rules.mak
   trunk/ext/nqp-rx/Defines.mak
      - copied unchanged from r43591, branches/one_make/ext/nqp-rx/Defines.mak
   trunk/ext/nqp-rx/Rules.mak
      - copied unchanged from r43591, branches/one_make/ext/nqp-rx/Rules.mak
   trunk/lib/Parrot/H2inc.pm   (props changed)
      - copied unchanged from r43591, branches/one_make/lib/Parrot/H2inc.pm
   trunk/runtime/parrot/library/Rules.mak
      - copied unchanged from r43591, branches/one_make/runtime/parrot/library/Rules.mak
   trunk/tools/build/dynpmc.pl
      - copied unchanged from r43591, branches/one_make/tools/build/dynpmc.pl
   trunk/tools/build/h2inc.pl
      - copied unchanged from r43591, branches/one_make/tools/build/h2inc.pl
Deleted:
   trunk/config/gen/makefiles/data_json.in
   trunk/config/gen/makefiles/dynoplibs_pl.in
   trunk/config/gen/makefiles/dynpmc_pl.in
   trunk/config/gen/makefiles/json.in
   trunk/config/gen/makefiles/nqp-rx.in
   trunk/config/gen/makefiles/nqp.in
   trunk/config/gen/makefiles/pct.in
   trunk/config/gen/makefiles/pge.in
   trunk/config/gen/makefiles/pirc.in
   trunk/config/gen/makefiles/tge.in
   trunk/config/gen/parrot_include.pm
   trunk/t/steps/gen/parrot_include-01.t
   trunk/t/tools/pmc2cutils/00-qualify.t
Modified:
   trunk/   (props changed)
   trunk/Configure.pl
   trunk/DEPRECATED.pod
   trunk/MANIFEST
   trunk/MANIFEST.SKIP
   trunk/compilers/data_json/   (props changed)
   trunk/compilers/imcc/   (props changed)
   trunk/compilers/json/   (props changed)
   trunk/compilers/nqp/   (props changed)
   trunk/compilers/nqp/bootstrap/nqp.pir
   trunk/compilers/nqp/nqp.pir
   trunk/compilers/nqp/t/01-literals.t
   trunk/compilers/nqp/t/02-if-else.t
   trunk/compilers/nqp/t/02-if.t
   trunk/compilers/nqp/t/03-unless.t
   trunk/compilers/nqp/t/04-comments.t
   trunk/compilers/nqp/t/05-pod.t
   trunk/compilers/nqp/t/06-args-pos.t
   trunk/compilers/nqp/t/07-boolean.t
   trunk/compilers/nqp/t/08-blocks.t
   trunk/compilers/nqp/t/09-var.t
   trunk/compilers/nqp/t/10-sub.t
   trunk/compilers/nqp/t/11-cmp.t
   trunk/compilers/nqp/t/12-list.t
   trunk/compilers/nqp/t/13-logical.t
   trunk/compilers/nqp/t/14-op.t
   trunk/compilers/nqp/t/15-module.t
   trunk/compilers/nqp/t/16-while.t
   trunk/compilers/nqp/t/17-class.t
   trunk/compilers/nqp/t/18-inline.t
   trunk/compilers/nqp/t/19-hash_access.t
   trunk/compilers/nqp/t/20-list_access.t
   trunk/compilers/nqp/t/22-optional_args.t
   trunk/compilers/nqp/t/23-named_args.t
   trunk/compilers/nqp/t/24-scalar_context.t
   trunk/compilers/nqp/t/25-list_context.t
   trunk/compilers/nqp/t/26-method_ops.t
   trunk/compilers/nqp/t/27-ternary.t
   trunk/compilers/nqp/t/28-return.t
   trunk/compilers/nqp/t/29-self.t
   trunk/compilers/nqp/t/30-subclass.t
   trunk/compilers/nqp/t/harness
   trunk/compilers/pct/   (props changed)
   trunk/compilers/pct/src/PAST.pir
   trunk/compilers/pge/   (props changed)
   trunk/compilers/pirc/   (props changed)
   trunk/compilers/pirc/t/basic.t
   trunk/compilers/pirc/t/harness
   trunk/compilers/pirc/t/heredoc.t
   trunk/compilers/pirc/t/macro.t
   trunk/compilers/pirc/t/stmts.t
   trunk/compilers/pirc/t/subflags.t
   trunk/compilers/tge/   (props changed)
   trunk/compilers/tge/TGE.pir
   trunk/config/auto/cgoto.pm
   trunk/config/auto/gc.pm
   trunk/config/auto/pmc.pm
   trunk/config/auto/sizes/intval_maxmin_c.in   (props changed)
   trunk/config/gen/makefiles.pm
   trunk/config/gen/makefiles/docs.in
   trunk/config/gen/makefiles/dynoplibs.in
   trunk/config/gen/makefiles/dynpmc.in
   trunk/config/gen/makefiles/editor.in
   trunk/config/gen/makefiles/ext.in
   trunk/config/gen/makefiles/root.in
   trunk/docs/book/draft/README   (props changed)
   trunk/docs/book/draft/appa_glossary.pod   (props changed)
   trunk/docs/book/draft/appb_patch_submission.pod   (props changed)
   trunk/docs/book/draft/appc_command_line_options.pod   (props changed)
   trunk/docs/book/draft/appd_build_options.pod   (props changed)
   trunk/docs/book/draft/appe_source_code.pod   (props changed)
   trunk/docs/book/draft/ch01_introduction.pod   (props changed)
   trunk/docs/book/draft/ch02_getting_started.pod   (props changed)
   trunk/docs/book/draft/ch07_dynpmcs.pod   (props changed)
   trunk/docs/book/draft/ch08_dynops.pod   (props changed)
   trunk/docs/book/draft/ch10_opcode_reference.pod   (props changed)
   trunk/docs/book/draft/ch11_directive_reference.pod   (props changed)
   trunk/docs/book/draft/ch12_operator_reference.pod   (props changed)
   trunk/docs/book/draft/chXX_hlls.pod   (props changed)
   trunk/docs/book/draft/chXX_library.pod   (props changed)
   trunk/docs/book/draft/chXX_testing_and_debugging.pod   (props changed)
   trunk/docs/book/pct/ch01_introduction.pod   (props changed)
   trunk/docs/book/pct/ch02_getting_started.pod   (props changed)
   trunk/docs/book/pct/ch03_compiler_tools.pod   (props changed)
   trunk/docs/book/pct/ch04_pge.pod   (props changed)
   trunk/docs/book/pct/ch05_nqp.pod   (props changed)
   trunk/docs/dev/c_functions.pod   (props changed)
   trunk/docs/pdds/pdd30_install.pod   (props changed)
   trunk/examples/config/file/configcompiler
   trunk/examples/config/file/configwithfatalstep
   trunk/examples/embed/cotorra.c   (props changed)
   trunk/examples/languages/abc/   (props changed)
   trunk/examples/languages/squaak/   (props changed)
   trunk/examples/pge/demo.pir   (props changed)
   trunk/ext/nqp-rx/   (props changed)
   trunk/include/parrot/call.h   (props changed)
   trunk/include/parrot/gc_api.h   (props changed)
   trunk/include/parrot/runcore_api.h   (props changed)
   trunk/include/parrot/runcore_profiling.h   (props changed)
   trunk/include/parrot/runcore_trace.h   (props changed)
   trunk/lib/Parrot/Configure/Compiler.pm
   trunk/lib/Parrot/Configure/Options/Test/Prepare.pm
   trunk/lib/Parrot/Configure/Step/List.pm
   trunk/lib/Parrot/Configure/Step/Test.pm   (props changed)
   trunk/lib/Parrot/Docs/Section/Tools.pm
   trunk/ports/cpan/pause_guide.pod   (props changed)
   trunk/ports/cygwin/parrot-1.0.0-1.cygport   (props changed)
   trunk/ports/debian/libparrot-dev.install.in   (props changed)
   trunk/ports/debian/libparrot.install.in   (props changed)
   trunk/ports/debian/parrot-doc.install.in   (props changed)
   trunk/ports/debian/parrot.install.in   (props changed)
   trunk/ports/fedora/parrot.spec.fedora   (props changed)
   trunk/ports/mandriva/parrot.spec.mandriva   (props changed)
   trunk/ports/suse/parrot.spec.suse   (props changed)
   trunk/runtime/parrot/languages/   (props changed)
   trunk/runtime/parrot/library/Math/Rand.pir   (props changed)
   trunk/runtime/parrot/library/Math/Random/mt19937ar.pir   (props changed)
   trunk/src/call/ops.c   (props changed)
   trunk/src/call/pcc.c   (props changed)
   trunk/src/gc/alloc_memory.c   (props changed)
   trunk/src/gc/alloc_resources.c   (props changed)
   trunk/src/gc/api.c   (props changed)
   trunk/src/gc/malloc.c   (props changed)
   trunk/src/gc/malloc_trace.c   (props changed)
   trunk/src/gc/mark_sweep.c   (props changed)
   trunk/src/gc/system.c   (props changed)
   trunk/src/interp/inter_cb.c   (props changed)
   trunk/src/interp/inter_create.c   (props changed)
   trunk/src/interp/inter_misc.c   (props changed)
   trunk/src/runcore/cores.c   (props changed)
   trunk/src/runcore/main.c   (props changed)
   trunk/src/runcore/profiling.c   (props changed)
   trunk/src/runcore/trace.c   (props changed)
   trunk/t/compilers/tge/NoneGrammar.tg   (props changed)
   trunk/t/configure/testlib/adefectivefoobar
   trunk/t/configure/testlib/bdefectivefoobar
   trunk/t/configure/testlib/cdefectivefoobar
   trunk/t/configure/testlib/ddefectivefoobar
   trunk/t/configure/testlib/verbosefoobar
   trunk/t/library/mt19937ar.t   (props changed)
   trunk/t/library/mt19937ar.txt   (props changed)
   trunk/t/oo/root_new.t   (props changed)
   trunk/t/pmc/namespace-old.t   (props changed)
   trunk/t/src/embed.t   (props changed)
   trunk/t/steps/init/hints/linux-01.t   (props changed)
   trunk/t/tools/ops2pm/00-qualify.t
   trunk/t/tools/pmc2cutils/04-dump_pmc.t
   trunk/t/tools/pmc2cutils/README
   trunk/tools/build/   (props changed)
   trunk/tools/dev/checkdepend.pl
   trunk/tools/dev/fetch_languages.pl   (props changed)
   trunk/tools/dev/mk_gitignore.pl   (props changed)
   trunk/tools/util/perlcritic-cage.conf   (props changed)

Modified: trunk/Configure.pl
==============================================================================
--- trunk/Configure.pl	Tue Jan 26 00:46:48 2010	(r43592)
+++ trunk/Configure.pl	Tue Jan 26 02:39:50 2010	(r43593)
@@ -183,11 +183,7 @@
 
 =item C<--test=build>
 
-Run tests found in F<t/postconfigure/>, F<t/tools/pmc2cutils/>,
-F<t/tools/ops2cutils/> and F<t/tools/ops2pm/> I<after> configuration has
-completed.  These tests demonstrate (a) that certain of Parrot's configuration
-tools are working properly post-configuration; and (b) that certain of
-Parrot's build tools will work properly once you call F<make>.
+Run tests found in F<t/steps/>,  F<t/postconfigure/> and F<t/pharness>.
 
 =item C<--test>
 
@@ -645,7 +641,6 @@
     gen::config_h
     gen::core_pmcs
     gen::crypto
-    gen::parrot_include
     gen::opengl
     gen::call_list
     gen::makefiles

Modified: trunk/DEPRECATED.pod
==============================================================================
--- trunk/DEPRECATED.pod	Tue Jan 26 00:46:48 2010	(r43592)
+++ trunk/DEPRECATED.pod	Tue Jan 26 02:39:50 2010	(r43593)
@@ -392,7 +392,7 @@
 
 =over 4
 
-=item tools/build/dynoplibs.pl and tools/build/dynpmc.pl [eligible in 1.1]
+=item tools/build/dynpmc.pl [eligible in 1.1]
 
 Replaced with makefiles.
 

Modified: trunk/MANIFEST
==============================================================================
--- trunk/MANIFEST	Tue Jan 26 00:46:48 2010	(r43592)
+++ trunk/MANIFEST	Tue Jan 26 02:39:50 2010	(r43593)
@@ -1,7 +1,7 @@
 # ex: set ro:
 # $Id$
 #
-# generated by tools/dev/mk_manifest_and_skip.pl Wed Jan 20 03:18:02 2010 UT
+# generated by tools/dev/mk_manifest_and_skip.pl Tue Jan 26 00:27:14 2010 UT
 #
 # See below for documentation on the format of this file.
 #
@@ -28,9 +28,13 @@
 RESPONSIBLE_PARTIES                                         [main]doc
 TODO                                                        [devel]doc
 VERSION                                                     [devel]
+compilers/data_json/Defines.mak                             [data_json]
+compilers/data_json/Rules.mak                               [data_json]
 compilers/data_json/data_json.pir                           [data_json]
 compilers/data_json/data_json/grammar.pg                    [data_json]
 compilers/data_json/data_json/pge2pir.tg                    [data_json]
+compilers/imcc/Defines.mak                                  [imcc]
+compilers/imcc/Rules.mak                                    [imcc]
 compilers/imcc/cfg.c                                        [imcc]
 compilers/imcc/cfg.h                                        [imcc]
 compilers/imcc/debug.c                                      [imcc]
@@ -58,9 +62,11 @@
 compilers/imcc/symreg.c                                     [imcc]
 compilers/imcc/symreg.h                                     [imcc]
 compilers/imcc/unit.h                                       [imcc]
+compilers/json/Defines.mak                                  [json]
 compilers/json/JSON.pir                                     [json]
 compilers/json/JSON/grammar.pg                              [json]
 compilers/json/JSON/pge2pir.tg                              [json]
+compilers/json/Rules.mak                                    [json]
 compilers/ncigen/MAINTAINER                                 [ncigen]
 compilers/ncigen/NCIGEN.TODO                                [ncigen]
 compilers/ncigen/NCIGENP6.pm                                [ncigen]
@@ -80,7 +86,9 @@
 compilers/ncigen/t/parse_00.t                               [test]
 compilers/ncigen/t/parse_01.t                               [test]
 compilers/ncigen/t/parse_02.t                               [test]
+compilers/nqp/Defines.mak                                   [nqp]
 compilers/nqp/README.pod                                    []doc
+compilers/nqp/Rules.mak                                     [nqp]
 compilers/nqp/TODO.pod                                      [nqp]
 compilers/nqp/bootstrap/actions.pm                          [nqp]
 compilers/nqp/bootstrap/nqp.pir                             [nqp]
@@ -120,8 +128,10 @@
 compilers/nqp/t/29-self.t                                   [test]
 compilers/nqp/t/30-subclass.t                               [test]
 compilers/nqp/t/harness                                     [test]
+compilers/pct/Defines.mak                                   [pct]
 compilers/pct/PCT.pir                                       [pct]
 compilers/pct/README.pod                                    []doc
+compilers/pct/Rules.mak                                     [pct]
 compilers/pct/src/PAST.pir                                  [pct]
 compilers/pct/src/PAST/Compiler.pir                         [pct]
 compilers/pct/src/PAST/Node.pir                             [pct]
@@ -131,6 +141,7 @@
 compilers/pct/src/PCT/Node.pir                              [pct]
 compilers/pct/src/POST/Compiler.pir                         [pct]
 compilers/pct/src/POST/Node.pir                             [pct]
+compilers/pge/Defines.mak                                   [pge]
 compilers/pge/P6Rule.grammar                                [pge]
 compilers/pge/PGE.pir                                       [pge]
 compilers/pge/PGE/Exp.pir                                   [pge]
@@ -141,8 +152,11 @@
 compilers/pge/PGE/Regex.pir                                 [pge]
 compilers/pge/PGE/builtins.pg                               [pge]
 compilers/pge/README.pod                                    []doc
+compilers/pge/Rules.mak                                     [pge]
 compilers/pge/STATUS                                        [pge]
+compilers/pirc/Defines.mak                                  [pirc]
 compilers/pirc/README.pod                                   []doc
+compilers/pirc/Rules.mak                                    [pirc]
 compilers/pirc/TODO                                         [pirc]
 compilers/pirc/heredoc/heredocmain.c                        [pirc]
 compilers/pirc/macro/lexer.h                                [pirc]
@@ -193,7 +207,9 @@
 compilers/pirc/t/macro.t                                    [test]
 compilers/pirc/t/stmts.t                                    [test]
 compilers/pirc/t/subflags.t                                 [test]
+compilers/tge/Defines.mak                                   [tge]
 compilers/tge/README                                        []doc
+compilers/tge/Rules.mak                                     [tge]
 compilers/tge/TGE.pir                                       [tge]
 compilers/tge/TGE/Compiler.pir                              [tge]
 compilers/tge/TGE/Grammar.pir                               [tge]
@@ -305,26 +321,15 @@
 config/gen/crypto/digest_t.in                               []
 config/gen/makefiles.pm                                     []
 config/gen/makefiles/CFLAGS.in                              []
-config/gen/makefiles/data_json.in                           []
 config/gen/makefiles/docs.in                                []
 config/gen/makefiles/dynoplibs.in                           []
-config/gen/makefiles/dynoplibs_pl.in                        []
 config/gen/makefiles/dynpmc.in                              []
-config/gen/makefiles/dynpmc_pl.in                           []
 config/gen/makefiles/editor.in                              []
 config/gen/makefiles/ext.in                                 []
-config/gen/makefiles/json.in                                []
-config/gen/makefiles/nqp-rx.in                              []
-config/gen/makefiles/nqp.in                                 []
 config/gen/makefiles/parrot_embed_pl.in                     []
 config/gen/makefiles/parrot_pc.in                           []
-config/gen/makefiles/pct.in                                 []
-config/gen/makefiles/pge.in                                 []
-config/gen/makefiles/pirc.in                                []
 config/gen/makefiles/root.in                                []
-config/gen/makefiles/tge.in                                 []
 config/gen/opengl.pm                                        []
-config/gen/parrot_include.pm                                []
 config/gen/platform.pm                                      []
 config/gen/platform/aix/asm.s                               []
 config/gen/platform/ansi/dl.c                               []
@@ -936,8 +941,10 @@
 ext/SQLite3/test.pir                                        []
 ext/nqp-rx/.gitignore                                       []
 ext/nqp-rx/CREDITS                                          []
+ext/nqp-rx/Defines.mak                                      []
 ext/nqp-rx/LICENSE                                          []
 ext/nqp-rx/README                                           []doc
+ext/nqp-rx/Rules.mak                                        []
 ext/nqp-rx/STATUS                                           []
 ext/nqp-rx/src/stage0/HLL-s0.pir                            []
 ext/nqp-rx/src/stage0/NQP-s0.pir                            []
@@ -1112,6 +1119,7 @@
 lib/Parrot/Docs/Section/Tests.pm                            [devel]lib
 lib/Parrot/Docs/Section/Tools.pm                            [devel]lib
 lib/Parrot/Docs/Text2HTML.pm                                [devel]lib
+lib/Parrot/H2inc.pm                                         [devel]lib
 lib/Parrot/Harness/DefaultTests.pm                          [devel]lib
 lib/Parrot/Harness/Options.pm                               [devel]lib
 lib/Parrot/Harness/Smoke.pm                                 [devel]lib
@@ -1242,6 +1250,7 @@
 runtime/parrot/library/Pg.pir                               [library]
 runtime/parrot/library/Protoobject.pir                      [library]
 runtime/parrot/library/Range.pir                            [library]
+runtime/parrot/library/Rules.mak                            [library]
 runtime/parrot/library/SDL.pir                              [library]
 runtime/parrot/library/SDL/App.pir                          [library]
 runtime/parrot/library/SDL/Button.pir                       [library]
@@ -2020,7 +2029,6 @@
 t/steps/gen/crypto-01.t                                     [test]
 t/steps/gen/makefiles-01.t                                  [test]
 t/steps/gen/opengl-01.t                                     [test]
-t/steps/gen/parrot_include-01.t                             [test]
 t/steps/gen/platform-01.t                                   [test]
 t/steps/init/defaults-01.t                                  [test]
 t/steps/init/headers-01.t                                   [test]
@@ -2114,7 +2122,6 @@
 t/tools/pbc_dump.t                                          [test]
 t/tools/pbc_merge.t                                         [test]
 t/tools/pgegrep.t                                           [test]
-t/tools/pmc2cutils/00-qualify.t                             [test]
 t/tools/pmc2cutils/01-pmc2cutils.t                          [test]
 t/tools/pmc2cutils/02-find_file.t                           [test]
 t/tools/pmc2cutils/03-dump_vtable.t                         [test]
@@ -2125,7 +2132,9 @@
 t/tools/testdata                                            [test]
 tools/build/addopstags.pl                                   []
 tools/build/c2str.pl                                        []
+tools/build/dynpmc.pl                                       []
 tools/build/fixup_gen_file.pl                               []
+tools/build/h2inc.pl                                        []
 tools/build/headerizer.pl                                   []
 tools/build/nativecall.pl                                   []
 tools/build/ops2c.pl                                        [devel]

Modified: trunk/MANIFEST.SKIP
==============================================================================
--- trunk/MANIFEST.SKIP	Tue Jan 26 00:46:48 2010	(r43592)
+++ trunk/MANIFEST.SKIP	Tue Jan 26 02:39:50 2010	(r43593)
@@ -1,6 +1,6 @@
 # ex: set ro:
 # $Id$
-# generated by tools/dev/mk_manifest_and_skip.pl Mon Jan 25 13:53:39 2010 UT
+# generated by tools/dev/mk_manifest_and_skip.pl Tue Jan 26 00:27:14 2010 UT
 #
 # This file should contain a transcript of the svn:ignore properties
 # of the directories in the Parrot subversion repository. (Needed for
@@ -150,8 +150,6 @@
 ^vtable\.dump$
 ^vtable\.dump/
 # generated from svn:ignore of 'compilers/data_json/'
-^compilers/data_json/Makefile$
-^compilers/data_json/Makefile/
 ^compilers/data_json/data_json\.pbc$
 ^compilers/data_json/data_json\.pbc/
 # generated from svn:ignore of 'compilers/data_json/data_json/'
@@ -170,8 +168,6 @@
 ^compilers/imcc/.*\.tmp/
 ^compilers/imcc/CFLAGS$
 ^compilers/imcc/CFLAGS/
-^compilers/imcc/Makefile$
-^compilers/imcc/Makefile/
 ^compilers/imcc/imcc$
 ^compilers/imcc/imcc/
 ^compilers/imcc/imclexer\.c$
@@ -185,8 +181,6 @@
 # generated from svn:ignore of 'compilers/json/'
 ^compilers/json/JSON\.pbc$
 ^compilers/json/JSON\.pbc/
-^compilers/json/Makefile$
-^compilers/json/Makefile/
 # generated from svn:ignore of 'compilers/json/JSON/'
 ^compilers/json/JSON/.*\.pbc$
 ^compilers/json/JSON/.*\.pbc/
@@ -205,8 +199,6 @@
 ^compilers/ncigen/src/gen_grammar\.pir$
 ^compilers/ncigen/src/gen_grammar\.pir/
 # generated from svn:ignore of 'compilers/nqp/'
-^compilers/nqp/Makefile$
-^compilers/nqp/Makefile/
 ^compilers/nqp/nqp\.pbc$
 ^compilers/nqp/nqp\.pbc/
 # generated from svn:ignore of 'compilers/nqp/bootstrap/'
@@ -217,21 +209,10 @@
 # generated from svn:ignore of 'compilers/nqp/src/'
 ^compilers/nqp/src/Grammar_gen\.pir$
 ^compilers/nqp/src/Grammar_gen\.pir/
-# generated from svn:ignore of 'compilers/pct/'
-^compilers/pct/.*\.pbc$
-^compilers/pct/.*\.pbc/
-^compilers/pct/Makefile$
-^compilers/pct/Makefile/
 # generated from svn:ignore of 'compilers/pct/src/POST/'
 ^compilers/pct/src/POST/Grammar_gen\.pir$
 ^compilers/pct/src/POST/Grammar_gen\.pir/
 # generated from svn:ignore of 'compilers/pge/'
-^compilers/pge/.*\.dylib$
-^compilers/pge/.*\.dylib/
-^compilers/pge/.*\.so$
-^compilers/pge/.*\.so/
-^compilers/pge/Makefile$
-^compilers/pge/Makefile/
 ^compilers/pge/PGE\.pbc$
 ^compilers/pge/PGE\.pbc/
 # generated from svn:ignore of 'compilers/pge/PGE/'
@@ -246,8 +227,6 @@
 ^compilers/pirc/.*\.obj/
 ^compilers/pirc/.*\.pbd$
 ^compilers/pirc/.*\.pbd/
-^compilers/pirc/Makefile$
-^compilers/pirc/Makefile/
 ^compilers/pirc/pirc$
 ^compilers/pirc/pirc/
 ^compilers/pirc/pirc\.exe$
@@ -266,8 +245,8 @@
 ^compilers/pirc/t/subflags_?\.pir$
 ^compilers/pirc/t/subflags_?\.pir/
 # generated from svn:ignore of 'compilers/tge/'
-^compilers/tge/Makefile$
-^compilers/tge/Makefile/
+^compilers/tge/tgc\.pbc$
+^compilers/tge/tgc\.pbc/
 # generated from svn:ignore of 'compilers/tge/TGE/'
 ^compilers/tge/TGE/Parser\.pir$
 ^compilers/tge/TGE/Parser\.pir/
@@ -461,11 +440,6 @@
 # generated from svn:ignore of 'ext/Parrot-Embed/t/'
 ^ext/Parrot-Embed/t/.*\.pbc$
 ^ext/Parrot-Embed/t/.*\.pbc/
-# generated from svn:ignore of 'ext/nqp-rx/'
-^ext/nqp-rx/.*\.pbc$
-^ext/nqp-rx/.*\.pbc/
-^ext/nqp-rx/Makefile$
-^ext/nqp-rx/Makefile/
 # generated from svn:ignore of 'include/parrot/'
 ^include/parrot/.*\.tmp$
 ^include/parrot/.*\.tmp/
@@ -1067,11 +1041,6 @@
 ^t/tools/pmc2c\..*\.h/
 ^t/tools/pmc2c\..*\.pmc$
 ^t/tools/pmc2c\..*\.pmc/
-# generated from svn:ignore of 'tools/build/'
-^tools/build/dynoplibs\.pl$
-^tools/build/dynoplibs\.pl/
-^tools/build/dynpmc\.pl$
-^tools/build/dynpmc\.pl/
 # Local variables:
 #   mode: text
 #   buffer-read-only: t

Copied: trunk/compilers/data_json/Defines.mak (from r43591, branches/one_make/compilers/data_json/Defines.mak)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ trunk/compilers/data_json/Defines.mak	Tue Jan 26 02:39:50 2010	(r43593, copy of r43591, branches/one_make/compilers/data_json/Defines.mak)
@@ -0,0 +1 @@
+DATA_JSON_LIB_PBCS = compilers/data_json/data_json.pbc

Copied: trunk/compilers/data_json/Rules.mak (from r43591, branches/one_make/compilers/data_json/Rules.mak)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ trunk/compilers/data_json/Rules.mak	Tue Jan 26 02:39:50 2010	(r43593, copy of r43591, branches/one_make/compilers/data_json/Rules.mak)
@@ -0,0 +1,17 @@
+compilers/data_json/data_json.pbc : \
+    runtime/parrot/library/PGE.pbc \
+    runtime/parrot/library/PGE/Util.pbc \
+    runtime/parrot/library/TGE.pbc \
+    compilers/data_json/data_json/grammar.pir \
+    compilers/data_json/data_json/pge2pir.pir
+
+compilers/data_json/data_json/grammar.pir : $(PARROT) \
+    compilers/data_json/data_json/grammar.pg \
+    $(LIBRARY_DIR)/PGE/Perl6Grammar.pbc \
+    $(LIBRARY_DIR)/PCT/HLLCompiler.pbc
+	$(PARROT) $(LIBRARY_DIR)/PGE/Perl6Grammar.pbc --output=$@ compilers/data_json/data_json/grammar.pg
+
+compilers/data_json/data_json/pge2pir.pir : $(PARROT) \
+    compilers/data_json/data_json/pge2pir.tg \
+    compilers/tge/tgc.pbc
+	$(PARROT) compilers/tge/tgc.pbc --output=$@ compilers/data_json/pge2pir.tg

Copied: trunk/compilers/imcc/Defines.mak (from r43591, branches/one_make/compilers/imcc/Defines.mak)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ trunk/compilers/imcc/Defines.mak	Tue Jan 26 02:39:50 2010	(r43593, copy of r43591, branches/one_make/compilers/imcc/Defines.mak)
@@ -0,0 +1,16 @@
+# these are private to the IMCC subsystem
+IMCC_O_FILES = \
+    compilers/imcc/imcparser$(O) \
+    compilers/imcc/imclexer$(O) \
+    compilers/imcc/imc$(O) \
+    compilers/imcc/main$(O) \
+    compilers/imcc/symreg$(O) \
+    compilers/imcc/instructions$(O) \
+    compilers/imcc/cfg$(O) \
+    compilers/imcc/reg_alloc$(O) \
+    compilers/imcc/sets$(O) \
+    compilers/imcc/debug$(O) \
+    compilers/imcc/optimizer$(O) \
+    compilers/imcc/pbc$(O) \
+    compilers/imcc/parser_util$(O) \
+    compilers/imcc/pcc$(O)

Copied: trunk/compilers/imcc/Rules.mak (from r43591, branches/one_make/compilers/imcc/Rules.mak)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ trunk/compilers/imcc/Rules.mak	Tue Jan 26 02:39:50 2010	(r43593, copy of r43591, branches/one_make/compilers/imcc/Rules.mak)
@@ -0,0 +1,201 @@
+compilers/imcc/pcc$(O) : \
+    compilers/imcc/cfg.h \
+    compilers/imcc/debug.h \
+    compilers/imcc/imc.h \
+    compilers/imcc/imcparser.h \
+    compilers/imcc/instructions.h \
+    compilers/imcc/parser.h \
+    compilers/imcc/sets.h \
+    compilers/imcc/symreg.h \
+    compilers/imcc/unit.h \
+    $(INC_DIR)/oplib/ops.h \
+    $(PARROT_H_HEADERS)
+
+compilers/imcc/instructions$(O) : \
+    compilers/imcc/cfg.h \
+    compilers/imcc/debug.h \
+    compilers/imcc/imc.h \
+    compilers/imcc/instructions.h \
+    compilers/imcc/optimizer.h \
+    compilers/imcc/pbc.h \
+    compilers/imcc/sets.h \
+    compilers/imcc/symreg.h \
+    compilers/imcc/unit.h \
+    $(INC_DIR)/oplib/ops.h \
+    $(PARROT_H_HEADERS)
+
+compilers/imcc/pbc$(O) : \
+    compilers/imcc/cfg.h \
+    compilers/imcc/debug.h \
+    compilers/imcc/imc.h \
+    compilers/imcc/instructions.h \
+    compilers/imcc/pbc.h \
+    compilers/imcc/sets.h \
+    compilers/imcc/symreg.h \
+    compilers/imcc/unit.h \
+    $(INC_DIR)/oplib/ops.h \
+    $(PARROT_H_HEADERS) \
+    include/pmc/pmc_sub.h
+
+compilers/imcc/parser_util$(O) : \
+    compilers/imcc/cfg.h \
+    compilers/imcc/debug.h \
+    compilers/imcc/imc.h \
+    compilers/imcc/imcparser.h \
+    compilers/imcc/instructions.h \
+    compilers/imcc/optimizer.h \
+    compilers/imcc/parser.h \
+    compilers/imcc/pbc.h \
+    compilers/imcc/sets.h \
+    compilers/imcc/symreg.h \
+    compilers/imcc/unit.h \
+    $(INC_DIR)/dynext.h \
+    $(INC_DIR)/embed.h \
+    $(INC_DIR)/oplib/ops.h \
+    $(PARROT_H_HEADERS) \
+    include/pmc/pmc_sub.h
+
+compilers/imcc/imc$(O) : \
+    compilers/imcc/cfg.h \
+    compilers/imcc/debug.h \
+    compilers/imcc/imc.h \
+    compilers/imcc/instructions.h \
+    compilers/imcc/optimizer.h \
+    compilers/imcc/sets.h \
+    compilers/imcc/symreg.h \
+    compilers/imcc/unit.h \
+    $(INC_DIR)/oplib/ops.h \
+    $(PARROT_H_HEADERS)
+
+compilers/imcc/cfg$(O) : \
+    compilers/imcc/cfg.h \
+    compilers/imcc/debug.h \
+    compilers/imcc/imc.h \
+    compilers/imcc/instructions.h \
+    compilers/imcc/optimizer.h \
+    compilers/imcc/sets.h \
+    compilers/imcc/symreg.h \
+    compilers/imcc/unit.h \
+    $(INC_DIR)/oplib/ops.h \
+    $(PARROT_H_HEADERS)
+
+compilers/imcc/debug$(O) : \
+    compilers/imcc/cfg.h \
+    compilers/imcc/debug.h \
+    compilers/imcc/imc.h \
+    compilers/imcc/instructions.h \
+    compilers/imcc/sets.h \
+    compilers/imcc/symreg.h \
+    compilers/imcc/unit.h \
+    $(INC_DIR)/oplib/ops.h \
+    $(PARROT_H_HEADERS)
+
+compilers/imcc/imclexer$(O) : \
+    compilers/imcc/cfg.h \
+    compilers/imcc/debug.h \
+    compilers/imcc/imc.h \
+    compilers/imcc/imcparser.h \
+    compilers/imcc/instructions.h \
+    compilers/imcc/parser.h \
+    compilers/imcc/sets.h \
+    compilers/imcc/symreg.h \
+    compilers/imcc/unit.h \
+    $(INC_DIR)/oplib/ops.h \
+    $(PARROT_H_HEADERS)
+
+compilers/imcc/imcparser$(O) : \
+    compilers/imcc/cfg.h \
+    compilers/imcc/debug.h \
+    compilers/imcc/imc.h \
+    compilers/imcc/imcparser.h \
+    compilers/imcc/instructions.h \
+    compilers/imcc/optimizer.h \
+    compilers/imcc/parser.h \
+    compilers/imcc/pbc.h \
+    compilers/imcc/sets.h \
+    compilers/imcc/symreg.h \
+    compilers/imcc/unit.h \
+    $(INC_DIR)/dynext.h \
+    $(INC_DIR)/oplib/ops.h \
+    $(PARROT_H_HEADERS)
+
+compilers/imcc/main$(O) : \
+    compilers/imcc/cfg.h \
+    compilers/imcc/debug.h \
+    compilers/imcc/imc.h \
+    compilers/imcc/imcparser.h \
+    compilers/imcc/instructions.h \
+    compilers/imcc/parser.h \
+    compilers/imcc/pbc.h \
+    compilers/imcc/sets.h \
+    compilers/imcc/symreg.h \
+    compilers/imcc/unit.h \
+    $(INC_DIR)/embed.h \
+    $(INC_DIR)/imcc.h \
+    $(INC_DIR)/oplib/ops.h \
+    $(INC_DIR)/runcore_api.h \
+    $(PARROT_H_HEADERS)
+
+compilers/imcc/optimizer$(O) : \
+    compilers/imcc/cfg.h \
+    compilers/imcc/debug.h \
+    compilers/imcc/imc.h \
+    compilers/imcc/instructions.h \
+    compilers/imcc/optimizer.h \
+    compilers/imcc/pbc.h \
+    compilers/imcc/sets.h \
+    compilers/imcc/symreg.h \
+    compilers/imcc/unit.h \
+    $(INC_DIR)/oplib/ops.h \
+    $(PARROT_H_HEADERS)
+
+compilers/imcc/reg_alloc$(O) : \
+    compilers/imcc/cfg.h \
+    compilers/imcc/debug.h \
+    compilers/imcc/imc.h \
+    compilers/imcc/instructions.h \
+    compilers/imcc/optimizer.h \
+    compilers/imcc/sets.h \
+    compilers/imcc/symreg.h \
+    compilers/imcc/unit.h \
+    $(INC_DIR)/oplib/ops.h \
+    $(PARROT_H_HEADERS)
+
+compilers/imcc/sets$(O) : \
+    compilers/imcc/cfg.h \
+    compilers/imcc/debug.h \
+    compilers/imcc/imc.h \
+    compilers/imcc/instructions.h \
+    compilers/imcc/sets.h \
+    compilers/imcc/symreg.h \
+    compilers/imcc/unit.h \
+    $(INC_DIR)/oplib/ops.h \
+    $(PARROT_H_HEADERS)
+
+compilers/imcc/symreg$(O) : \
+    compilers/imcc/cfg.h \
+    compilers/imcc/debug.h \
+    compilers/imcc/imc.h \
+    compilers/imcc/instructions.h \
+    compilers/imcc/sets.h \
+    compilers/imcc/symreg.h \
+    compilers/imcc/unit.h \
+    $(INC_DIR)/oplib/ops.h \
+    $(PARROT_H_HEADERS)
+
+# imcc file dependencies
+#
+# The .flag files are needed because we keep some derived files in SVN,
+# which does not keep accurate timestamps on the files, relative to each other.
+# Note that YACC or LEX may be null commands, so we must `touch` all the
+# target files, instead of just the .flag files.
+
+compilers/imcc/imcc.y.flag compilers/imcc/imcparser.c compilers/imcc/imcparser.h : compilers/imcc/imcc.y
+	$(YACC) compilers/imcc/imcc.y -d -o compilers/imcc/imcparser.c
+	$(PERL) $(BUILD_TOOLS_DIR)/fixup_gen_file.pl -noheaderizer compilers/imcc/imcparser.c compilers/imcc/imcc.y
+	$(PERL) $(BUILD_TOOLS_DIR)/fixup_gen_file.pl -noheaderizer compilers/imcc/imcparser.h compilers/imcc/imcc.y
+	$(TOUCH) compilers/imcc/imcc.y.flag compilers/imcc/imcparser.c compilers/imcc/imcparser.h
+
+compilers/imcc/imcc.l.flag compilers/imcc/imclexer.c : compilers/imcc/imcc.l
+	$(LEX) -ocompilers/imcc/imclexer.c compilers/imcc/imcc.l
+	$(TOUCH) compilers/imcc/imcc.l.flag compilers/imcc/imclexer.c

Copied: trunk/compilers/json/Defines.mak (from r43591, branches/one_make/compilers/json/Defines.mak)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ trunk/compilers/json/Defines.mak	Tue Jan 26 02:39:50 2010	(r43593, copy of r43591, branches/one_make/compilers/json/Defines.mak)
@@ -0,0 +1,6 @@
+JSON_LIB_PBCS = compilers/json/JSON.pbc
+JSON_CLEANUPS = $(JSON_LIB_PBCS) \
+    compilers/json/JSON/grammar.pir \
+    compilers/json/JSON/pge2pir.pir \
+    compilers/json/JSON/grammar.pbc \
+    compilers/json/JSON/pge2pir.pbc

Copied: trunk/compilers/json/Rules.mak (from r43591, branches/one_make/compilers/json/Rules.mak)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ trunk/compilers/json/Rules.mak	Tue Jan 26 02:39:50 2010	(r43593, copy of r43591, branches/one_make/compilers/json/Rules.mak)
@@ -0,0 +1,16 @@
+compilers/json/JSON.pbc : \
+    $(LIBRARY_DIR)/PGE.pbc \
+    $(LIBRARY_DIR)/PGE/Util.pbc \
+    $(LIBRARY_DIR)/TGE.pbc \
+    compilers/json/JSON/grammar.pbc \
+    compilers/json/JSON/pge2pir.pbc \
+    compilers/json/JSON.pir
+	$(PARROT) -o $@ compilers/json/JSON.pir
+
+compilers/json/JSON/grammar.pir : compilers/json/JSON/grammar.pg \
+    $(LIBRARY_DIR)/PGE/Perl6Grammar.pbc
+	$(PARROT) $(LIBRARY_DIR)/PGE/Perl6Grammar.pbc --output=$@ compilers/json/JSON/grammar.pg
+
+compilers/json/JSON/pge2pir.pir : compilers/json/JSON/pge2pir.tg \
+    $(LIBRARY_DIR)/TGE.pbc
+	$(PARROT) compilers/tge/tgc.pir --output=$@ compilers/json/JSON/pge2pir.tg

Copied: trunk/compilers/nqp/Defines.mak (from r43591, branches/one_make/compilers/nqp/Defines.mak)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ trunk/compilers/nqp/Defines.mak	Tue Jan 26 02:39:50 2010	(r43593, copy of r43591, branches/one_make/compilers/nqp/Defines.mak)
@@ -0,0 +1,7 @@
+NQP_LIB_PBCS = compilers/nqp/nqp.pbc
+
+NQP_CLEANUPS = \
+    compilers/nqp/nqp.pbc \
+    compilers/nqp/src/Grammar_gen.pir \
+    compilers/nqp/bootstrap/gen_actions.pir \
+    compilers/nqp/bootstrap/nqp.pbc

Copied: trunk/compilers/nqp/Rules.mak (from r43591, branches/one_make/compilers/nqp/Rules.mak)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ trunk/compilers/nqp/Rules.mak	Tue Jan 26 02:39:50 2010	(r43593, copy of r43591, branches/one_make/compilers/nqp/Rules.mak)
@@ -0,0 +1,21 @@
+compilers/nqp/nqp.pbc : compilers/nqp/src/builtins.pir \
+    compilers/nqp/src/Grammar/Actions.pir \
+    compilers/nqp/src/Grammar_gen.pir \
+    $(LIBRARY_DIR)/PCT.pbc \
+    $(LIBRARY_DIR)/PGE.pbc
+
+compilers/nqp/src/Grammar_gen.pir : $(PARROT) $(LIBRARY_DIR)/PGE/Perl6Grammar.pir compilers/nqp/src/Grammar.pg $(LIBRARY_DIR)/PCT/HLLCompiler.pbc $(LIBRARY_DIR)/PGE.pbc
+	$(PARROT) $(LIBRARY_DIR)/PGE/Perl6Grammar.pir --output=$@ compilers/nqp/src/Grammar.pg
+
+# Developer target to regnerate bootstrap. Unused?
+nqp-boot: \
+    compilers/nqp/bootstrap/nqp.pir \
+    compilers/nqp/bootstrap/gen_actions.pir
+
+compilers/nqp/bootstrap/gen_actions.pir : $(PARROT) \
+    compilers/nqp/nqp.pbc \
+    compilers/nqp/bootstrap/actions.pm
+	$(PARROT) compilers/nqp/nqp.pbc --output=$@ --target=pir \
+	    compilers/nqp/bootstrap/actions.pm
+
+compilers/nqp/bootstrap/nqp.pbc : $(LIBRARY)/PCT.pbc

Modified: trunk/compilers/nqp/bootstrap/nqp.pir
==============================================================================
--- trunk/compilers/nqp/bootstrap/nqp.pir	Tue Jan 26 00:46:48 2010	(r43592)
+++ trunk/compilers/nqp/bootstrap/nqp.pir	Tue Jan 26 02:39:50 2010	(r43593)
@@ -52,9 +52,9 @@
     $P1 = $P0.'command_line'(args)
 .end
 
-.include 'src/builtins.pir'
-.include 'src/Grammar_gen.pir'
-.include 'bootstrap/gen_actions.pir'
+.include 'compilers/nqp/src/builtins.pir'
+.include 'compilers/nqp/src/Grammar_gen.pir'
+.include 'compilers/nqp/bootstrap/gen_actions.pir'
 
 
 .namespace []

Modified: trunk/compilers/nqp/nqp.pir
==============================================================================
--- trunk/compilers/nqp/nqp.pir	Tue Jan 26 00:46:48 2010	(r43592)
+++ trunk/compilers/nqp/nqp.pir	Tue Jan 26 02:39:50 2010	(r43593)
@@ -22,11 +22,11 @@
     .tailcall $P0.'command_line'(args, 'encoding'=>'utf8', 'transcode'=>'ascii')
 .end
 
-.include 'src/Grammar_gen.pir'
+.include 'compilers/nqp/src/Grammar_gen.pir'
 
-.include 'src/Grammar/Actions.pir'
+.include 'compilers/nqp/src/Grammar/Actions.pir'
 
-.include 'src/builtins.pir'
+.include 'compilers/nqp/src/builtins.pir'
 
 # Local Variables:
 #   mode: pir

Modified: trunk/compilers/nqp/t/01-literals.t
==============================================================================
--- trunk/compilers/nqp/t/01-literals.t	Tue Jan 26 00:46:48 2010	(r43592)
+++ trunk/compilers/nqp/t/01-literals.t	Tue Jan 26 02:39:50 2010	(r43593)
@@ -1,5 +1,3 @@
-#!./parrot nqp.pbc
-
 # check literals
 
 say('1..8');

Modified: trunk/compilers/nqp/t/02-if-else.t
==============================================================================
--- trunk/compilers/nqp/t/02-if-else.t	Tue Jan 26 00:46:48 2010	(r43592)
+++ trunk/compilers/nqp/t/02-if-else.t	Tue Jan 26 02:39:50 2010	(r43593)
@@ -1,5 +1,3 @@
-#!./parrot nqp.pbc
-
 # check control structure 'if ... else'
 
 say('1..14');

Modified: trunk/compilers/nqp/t/02-if.t
==============================================================================
--- trunk/compilers/nqp/t/02-if.t	Tue Jan 26 00:46:48 2010	(r43592)
+++ trunk/compilers/nqp/t/02-if.t	Tue Jan 26 02:39:50 2010	(r43593)
@@ -1,5 +1,3 @@
-#!./parrot nqp.pbc
-
 # check control structure 'if'
 
 say('1..4');

Modified: trunk/compilers/nqp/t/03-unless.t
==============================================================================
--- trunk/compilers/nqp/t/03-unless.t	Tue Jan 26 00:46:48 2010	(r43592)
+++ trunk/compilers/nqp/t/03-unless.t	Tue Jan 26 02:39:50 2010	(r43593)
@@ -1,5 +1,3 @@
-#!./parrot nqp.pbc
-
 # check control structure 'unless'
 
 say('1..4');

Modified: trunk/compilers/nqp/t/04-comments.t
==============================================================================
--- trunk/compilers/nqp/t/04-comments.t	Tue Jan 26 00:46:48 2010	(r43592)
+++ trunk/compilers/nqp/t/04-comments.t	Tue Jan 26 02:39:50 2010	(r43593)
@@ -1,5 +1,3 @@
-#!./parrot nqp.pbc
-
 # check comments
 
 say('1..2');

Modified: trunk/compilers/nqp/t/05-pod.t
==============================================================================
--- trunk/compilers/nqp/t/05-pod.t	Tue Jan 26 00:46:48 2010	(r43592)
+++ trunk/compilers/nqp/t/05-pod.t	Tue Jan 26 02:39:50 2010	(r43593)
@@ -1,5 +1,3 @@
-#!./parrot nqp.pbc
-
 # check pod
 
 say('1..4');

Modified: trunk/compilers/nqp/t/06-args-pos.t
==============================================================================
--- trunk/compilers/nqp/t/06-args-pos.t	Tue Jan 26 00:46:48 2010	(r43592)
+++ trunk/compilers/nqp/t/06-args-pos.t	Tue Jan 26 02:39:50 2010	(r43593)
@@ -1,5 +1,3 @@
-#!./parrot nqp.pbc
-
 # positional arguments
 
 say('1..2');

Modified: trunk/compilers/nqp/t/07-boolean.t
==============================================================================
--- trunk/compilers/nqp/t/07-boolean.t	Tue Jan 26 00:46:48 2010	(r43592)
+++ trunk/compilers/nqp/t/07-boolean.t	Tue Jan 26 02:39:50 2010	(r43593)
@@ -1,5 +1,3 @@
-#!./parrot nqp.pbc
-
 # Testing boolean context operators, ! and ?
 
 plan(8);

Modified: trunk/compilers/nqp/t/08-blocks.t
==============================================================================
--- trunk/compilers/nqp/t/08-blocks.t	Tue Jan 26 00:46:48 2010	(r43592)
+++ trunk/compilers/nqp/t/08-blocks.t	Tue Jan 26 02:39:50 2010	(r43593)
@@ -1,5 +1,3 @@
-#!./parrot nqp.pbc
-
 # check blocks and statement enders
 
 say('1..7');

Modified: trunk/compilers/nqp/t/09-var.t
==============================================================================
--- trunk/compilers/nqp/t/09-var.t	Tue Jan 26 00:46:48 2010	(r43592)
+++ trunk/compilers/nqp/t/09-var.t	Tue Jan 26 02:39:50 2010	(r43593)
@@ -1,5 +1,3 @@
-#!./parrot nqp.pbc
-
 # check variables
 
 say('1..14');

Modified: trunk/compilers/nqp/t/10-sub.t
==============================================================================
--- trunk/compilers/nqp/t/10-sub.t	Tue Jan 26 00:46:48 2010	(r43592)
+++ trunk/compilers/nqp/t/10-sub.t	Tue Jan 26 02:39:50 2010	(r43593)
@@ -1,5 +1,3 @@
-#!./parrot nqp.pbc
-
 # check subs
 
 say('1..11');

Modified: trunk/compilers/nqp/t/11-cmp.t
==============================================================================
--- trunk/compilers/nqp/t/11-cmp.t	Tue Jan 26 00:46:48 2010	(r43592)
+++ trunk/compilers/nqp/t/11-cmp.t	Tue Jan 26 02:39:50 2010	(r43593)
@@ -1,5 +1,3 @@
-#!./parrot nqp.pbc
-
 # check comparisons
 
 say('1..19');

Modified: trunk/compilers/nqp/t/12-list.t
==============================================================================
--- trunk/compilers/nqp/t/12-list.t	Tue Jan 26 00:46:48 2010	(r43592)
+++ trunk/compilers/nqp/t/12-list.t	Tue Jan 26 02:39:50 2010	(r43593)
@@ -1,5 +1,3 @@
-#!./parrot nqp.pbc
-
 # lists and for
 
 plan(3);

Modified: trunk/compilers/nqp/t/13-logical.t
==============================================================================
--- trunk/compilers/nqp/t/13-logical.t	Tue Jan 26 00:46:48 2010	(r43592)
+++ trunk/compilers/nqp/t/13-logical.t	Tue Jan 26 02:39:50 2010	(r43593)
@@ -1,5 +1,3 @@
-#!./parrot nqp.pbc
-
 # check '||' and '&&'
 
 plan(4);

Modified: trunk/compilers/nqp/t/14-op.t
==============================================================================
--- trunk/compilers/nqp/t/14-op.t	Tue Jan 26 00:46:48 2010	(r43592)
+++ trunk/compilers/nqp/t/14-op.t	Tue Jan 26 02:39:50 2010	(r43593)
@@ -1,5 +1,3 @@
-#!./parrot nqp.pbc
-
 # checking basic operands and circumfix:( )
 
 plan(29);

Modified: trunk/compilers/nqp/t/15-module.t
==============================================================================
--- trunk/compilers/nqp/t/15-module.t	Tue Jan 26 00:46:48 2010	(r43592)
+++ trunk/compilers/nqp/t/15-module.t	Tue Jan 26 02:39:50 2010	(r43593)
@@ -1,5 +1,3 @@
-#!./parrot nqp.pbc
-
 # check module
 
 XYZ::sayfoo();

Modified: trunk/compilers/nqp/t/16-while.t
==============================================================================
--- trunk/compilers/nqp/t/16-while.t	Tue Jan 26 00:46:48 2010	(r43592)
+++ trunk/compilers/nqp/t/16-while.t	Tue Jan 26 02:39:50 2010	(r43593)
@@ -1,5 +1,3 @@
-#!./parrot nqp.pbc
-
 # while, until statements
 
 plan(8);

Modified: trunk/compilers/nqp/t/17-class.t
==============================================================================
--- trunk/compilers/nqp/t/17-class.t	Tue Jan 26 00:46:48 2010	(r43592)
+++ trunk/compilers/nqp/t/17-class.t	Tue Jan 26 02:39:50 2010	(r43593)
@@ -1,5 +1,3 @@
-#!./parrot nqp.pbc
-
 # class
 
 plan(1);

Modified: trunk/compilers/nqp/t/18-inline.t
==============================================================================
--- trunk/compilers/nqp/t/18-inline.t	Tue Jan 26 00:46:48 2010	(r43592)
+++ trunk/compilers/nqp/t/18-inline.t	Tue Jan 26 02:39:50 2010	(r43593)
@@ -1,5 +1,3 @@
-#!./parrot nqp.pbc
-
 # inline
 
 plan(7);

Modified: trunk/compilers/nqp/t/19-hash_access.t
==============================================================================
--- trunk/compilers/nqp/t/19-hash_access.t	Tue Jan 26 00:46:48 2010	(r43592)
+++ trunk/compilers/nqp/t/19-hash_access.t	Tue Jan 26 02:39:50 2010	(r43593)
@@ -1,5 +1,3 @@
-#!./parrot nqp.pbc
-
 # check hash access methods
 
 plan(7);

Modified: trunk/compilers/nqp/t/20-list_access.t
==============================================================================
--- trunk/compilers/nqp/t/20-list_access.t	Tue Jan 26 00:46:48 2010	(r43592)
+++ trunk/compilers/nqp/t/20-list_access.t	Tue Jan 26 02:39:50 2010	(r43593)
@@ -1,5 +1,3 @@
-#!./parrot nqp.pbc
-
 # check list access methods
 
 plan(7);

Modified: trunk/compilers/nqp/t/22-optional_args.t
==============================================================================
--- trunk/compilers/nqp/t/22-optional_args.t	Tue Jan 26 00:46:48 2010	(r43592)
+++ trunk/compilers/nqp/t/22-optional_args.t	Tue Jan 26 02:39:50 2010	(r43593)
@@ -1,5 +1,3 @@
-#!./parrot nqp.pbc
-
 # test optional arguments and parameters
 
 plan(3);

Modified: trunk/compilers/nqp/t/23-named_args.t
==============================================================================
--- trunk/compilers/nqp/t/23-named_args.t	Tue Jan 26 00:46:48 2010	(r43592)
+++ trunk/compilers/nqp/t/23-named_args.t	Tue Jan 26 02:39:50 2010	(r43593)
@@ -1,5 +1,3 @@
-#!./parrot nqp.pbc
-
 # test named parameters and arguments
 
 plan(4);

Modified: trunk/compilers/nqp/t/24-scalar_context.t
==============================================================================
--- trunk/compilers/nqp/t/24-scalar_context.t	Tue Jan 26 00:46:48 2010	(r43592)
+++ trunk/compilers/nqp/t/24-scalar_context.t	Tue Jan 26 02:39:50 2010	(r43593)
@@ -1,5 +1,3 @@
-#!./parrot nqp.pbc
-
 # scalar context
 
 plan(1);

Modified: trunk/compilers/nqp/t/25-list_context.t
==============================================================================
--- trunk/compilers/nqp/t/25-list_context.t	Tue Jan 26 00:46:48 2010	(r43592)
+++ trunk/compilers/nqp/t/25-list_context.t	Tue Jan 26 02:39:50 2010	(r43593)
@@ -1,5 +1,3 @@
-#!./parrot nqp.pbc
-
 # list context
 
 plan(1);

Modified: trunk/compilers/nqp/t/26-method_ops.t
==============================================================================
--- trunk/compilers/nqp/t/26-method_ops.t	Tue Jan 26 00:46:48 2010	(r43592)
+++ trunk/compilers/nqp/t/26-method_ops.t	Tue Jan 26 02:39:50 2010	(r43593)
@@ -1,5 +1,3 @@
-#!./parrot nqp.pbc
-
 # method ops (just method calls for now)
 
 plan(3);

Modified: trunk/compilers/nqp/t/27-ternary.t
==============================================================================
--- trunk/compilers/nqp/t/27-ternary.t	Tue Jan 26 00:46:48 2010	(r43592)
+++ trunk/compilers/nqp/t/27-ternary.t	Tue Jan 26 02:39:50 2010	(r43593)
@@ -1,5 +1,3 @@
-#!./parrot nqp.pbc
-
 # the ternary ?? !! operator
 
 plan(8);

Modified: trunk/compilers/nqp/t/28-return.t
==============================================================================
--- trunk/compilers/nqp/t/28-return.t	Tue Jan 26 00:46:48 2010	(r43592)
+++ trunk/compilers/nqp/t/28-return.t	Tue Jan 26 02:39:50 2010	(r43593)
@@ -1,5 +1,3 @@
-#!./parrot nqp.pbc
-
 # implicit and explicit returns from subs
 
 plan(3);

Modified: trunk/compilers/nqp/t/29-self.t
==============================================================================
--- trunk/compilers/nqp/t/29-self.t	Tue Jan 26 00:46:48 2010	(r43592)
+++ trunk/compilers/nqp/t/29-self.t	Tue Jan 26 02:39:50 2010	(r43593)
@@ -1,5 +1,3 @@
-#!./parrot nqp.pbc
-
 plan(3);
 
 class Foo {

Modified: trunk/compilers/nqp/t/30-subclass.t
==============================================================================
--- trunk/compilers/nqp/t/30-subclass.t	Tue Jan 26 00:46:48 2010	(r43592)
+++ trunk/compilers/nqp/t/30-subclass.t	Tue Jan 26 02:39:50 2010	(r43593)
@@ -1,5 +1,3 @@
-#!./parrot nqp.pbc
-
 # class inheritance
 
 plan(6);

Modified: trunk/compilers/nqp/t/harness
==============================================================================
--- trunk/compilers/nqp/t/harness	Tue Jan 26 00:46:48 2010	(r43592)
+++ trunk/compilers/nqp/t/harness	Tue Jan 26 02:39:50 2010	(r43593)
@@ -4,5 +4,10 @@
 
 use FindBin;
 use lib qw( . lib ../lib ../../lib ../../../lib );
-use Parrot::Test::Harness language => 'nqp', compiler => 'nqp.pbc';
+use Parrot::Test::Harness
+    language  => 'nqp',
+    exec      => [ './parrot', 'compilers/nqp/nqp.pbc' ],
+    files     => [ 'compilers/nqp/t/*.t' ];
 
+    #arguments => [ '--files' ],
+    #verbosity => 1,

Copied: trunk/compilers/pct/Defines.mak (from r43591, branches/one_make/compilers/pct/Defines.mak)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ trunk/compilers/pct/Defines.mak	Tue Jan 26 02:39:50 2010	(r43593, copy of r43591, branches/one_make/compilers/pct/Defines.mak)
@@ -0,0 +1,8 @@
+PCT_LIB_PBCS = \
+    $(LIBRARY_DIR)/PCT.pbc \
+    $(LIBRARY_DIR)/PCT/PAST.pbc \
+    $(LIBRARY_DIR)/PCT/Grammar.pbc \
+    $(LIBRARY_DIR)/PCT/HLLCompiler.pbc \
+    $(LIBRARY_DIR)/PCT/Dumper.pbc 
+
+PCT_CLEANUPS = $(PCT_LIB_PBCS)

Copied: trunk/compilers/pct/Rules.mak (from r43591, branches/one_make/compilers/pct/Rules.mak)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ trunk/compilers/pct/Rules.mak	Tue Jan 26 02:39:50 2010	(r43593, copy of r43591, branches/one_make/compilers/pct/Rules.mak)
@@ -0,0 +1,32 @@
+## XXX does not cover .includes of core .pasm files
+
+$(LIBRARY_DIR)/PCT.pbc : $(PARROT) compilers/pct/PCT.pir \
+    $(LIBRARY_DIR)/PCT/Grammar.pbc $(LIBRARY_DIR)/PCT/PAST.pbc
+	$(PARROT) -o $@ compilers/pct/PCT.pir
+
+$(LIBRARY_DIR)/PCT/PAST.pbc : compilers/pct/src/PAST.pir $(PARROT) \
+    $(LIBRARY_DIR)/PCT/HLLCompiler.pbc \
+    compilers/pct/src/PCT/Node.pir \
+    compilers/pct/src/PAST/Node.pir \
+    compilers/pct/src/PAST/Compiler.pir \
+    compilers/pct/src/POST/Node.pir \
+    compilers/pct/src/POST/Compiler.pir
+	$(PARROT) -o $@ compilers/pct/src/PAST.pir
+
+$(LIBRARY_DIR)/PCT/Grammar.pbc : compilers/pct/src/PCT/Grammar.pir $(PARROT) \
+    $(LIBRARY_DIR)/PGE.pbc $(LIBRARY_DIR)/PGE/Util.pbc
+	$(PARROT) -o $@ compilers/pct/src/PCT/Grammar.pir
+
+$(LIBRARY_DIR)/PCT/HLLCompiler.pbc : compilers/pct/src/PCT/HLLCompiler.pir \
+    $(PARROT) \
+    $(LIBRARY_DIR)/PGE/Dumper.pbc \
+    $(LIBRARY_DIR)/P6object.pbc \
+    $(LIBRARY_DIR)/Parrot/Exception.pbc \
+    $(LIBRARY_DIR)/config.pir \
+    $(LIBRARY_DIR)/Getopt/Obj.pbc \
+    $(LIBRARY_DIR)/dumper.pbc \
+    $(LIBRARY_DIR)/PCT/Dumper.pbc
+	$(PARROT) -o $@ compilers/pct/src/PCT/HLLCompiler.pir
+
+$(LIBRARY_DIR)/PCT/Dumper.pbc : compilers/pct/src/PCT/Dumper.pir $(PARROT)
+	$(PARROT) -o $@ compilers/pct/src/PCT/Dumper.pir

Modified: trunk/compilers/pct/src/PAST.pir
==============================================================================
--- trunk/compilers/pct/src/PAST.pir	Tue Jan 26 00:46:48 2010	(r43592)
+++ trunk/compilers/pct/src/PAST.pir	Tue Jan 26 02:39:50 2010	(r43593)
@@ -11,15 +11,15 @@
 
 =cut
 
-.include 'src/PCT/Node.pir'
+.include 'compilers/pct/src/PCT/Node.pir'
 
-.include 'src/PAST/Node.pir'
+.include 'compilers/pct/src/PAST/Node.pir'
 
-.include 'src/PAST/Compiler.pir'
+.include 'compilers/pct/src/PAST/Compiler.pir'
 
-.include 'src/POST/Node.pir'
+.include 'compilers/pct/src/POST/Node.pir'
 
-.include 'src/POST/Compiler.pir'
+.include 'compilers/pct/src/POST/Compiler.pir'
 
 =head1 AUTHOR
 

Copied: trunk/compilers/pge/Defines.mak (from r43591, branches/one_make/compilers/pge/Defines.mak)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ trunk/compilers/pge/Defines.mak	Tue Jan 26 02:39:50 2010	(r43593, copy of r43591, branches/one_make/compilers/pge/Defines.mak)
@@ -0,0 +1,2 @@
+PGE_LIB_PBCS = $(LIBRARY_DIR)/PGE.pbc
+PGE_CLEANUPS = $(PGE_LIB_PBCS) compilers/pge/PGE/builtins_gen.pir

Copied: trunk/compilers/pge/Rules.mak (from r43591, branches/one_make/compilers/pge/Rules.mak)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ trunk/compilers/pge/Rules.mak	Tue Jan 26 02:39:50 2010	(r43593, copy of r43591, branches/one_make/compilers/pge/Rules.mak)
@@ -0,0 +1,15 @@
+$(LIBRARY_DIR)/PGE.pbc: $(PARROT) \
+    compilers/pge/PGE.pir \
+    compilers/pge/PGE/Exp.pir \
+    compilers/pge/PGE/Match.pir \
+    compilers/pge/PGE/Regex.pir \
+    compilers/pge/PGE/Perl6Regex.pir \
+    compilers/pge/PGE/OPTable.pir \
+    compilers/pge/PGE/P5Regex.pir \
+    compilers/pge/PGE/builtins.pg \
+    $(LIBRARY_DIR)/PCT/HLLCompiler.pbc
+	$(PERL) -e "" > compilers/pge/PGE/builtins_gen.pir
+	$(PARROT) -o $@ compilers/pge/PGE.pir
+	$(PARROT) $(LIBRARY_DIR)/PGE/Perl6Grammar.pir --output=compilers/pge/PGE/builtins_gen.pir compilers/pge/PGE/builtins.pg
+	$(PARROT) -o $@ compilers/pge/PGE.pir
+

Copied: trunk/compilers/pirc/Defines.mak (from r43591, branches/one_make/compilers/pirc/Defines.mak)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ trunk/compilers/pirc/Defines.mak	Tue Jan 26 02:39:50 2010	(r43593, copy of r43591, branches/one_make/compilers/pirc/Defines.mak)
@@ -0,0 +1,18 @@
+PIRC_O_FILES = \
+    compilers/pirc/src/main$(O) \
+    compilers/pirc/src/pirparser$(O) \
+    compilers/pirc/src/pirlexer$(O) \
+    compilers/pirc/src/pircompunit$(O) \
+    compilers/pirc/src/pircompiler$(O) \
+    compilers/pirc/src/pirsymbol$(O) \
+    compilers/pirc/src/piremit$(O) \
+    compilers/pirc/src/hdocprep$(O) \
+    compilers/pirc/src/pirmacro$(O) \
+    compilers/pirc/src/pirregalloc$(O) \
+    compilers/pirc/src/bcgen$(O) \
+    compilers/pirc/src/pirpcc$(O) \
+    compilers/pirc/src/pirerr$(O) \
+    compilers/pirc/src/pircapi$(O) \
+    compilers/pirc/src/pirop$(O)
+
+PIRC_CLEANUPS = $(PIRC_O_FILES) "compilers/pirc/t/*.pir" ./pirc$(EXE)

Copied: trunk/compilers/pirc/Rules.mak (from r43591, branches/one_make/compilers/pirc/Rules.mak)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ trunk/compilers/pirc/Rules.mak	Tue Jan 26 02:39:50 2010	(r43593, copy of r43591, branches/one_make/compilers/pirc/Rules.mak)
@@ -0,0 +1,226 @@
+compilers/pirc/src/piremit$(O) : $(PARROT_H_HEADERS) \
+        compilers/pirc/src/piremit.h \
+        compilers/pirc/src/pircompunit.h \
+        compilers/pirc/src/pircompiler.h \
+        compilers/pirc/src/pirerr.h \
+        compilers/pirc/src/bcgen.h \
+        compilers/pirc/src/pirdefines.h \
+        compilers/pirc/src/pirmacro.h \
+        compilers/pirc/src/pirregalloc.h \
+        compilers/pirc/src/pirsymbol.h \
+        compilers/pirc/src/piryy.h \
+        $(INC_DIR)/embed.h \
+        $(INC_DIR)/oplib/ops.h
+
+compilers/pirc/src/pirparser$(O) : $(PARROT_H_HEADERS) \
+        compilers/pirc/src/pircompiler.h \
+        compilers/pirc/src/pircompunit.h \
+        compilers/pirc/src/pirdefines.h \
+        compilers/pirc/src/pirparser.h \
+        compilers/pirc/src/piryy.h \
+        compilers/pirc/src/pirlexer.h \
+        compilers/pirc/src/pirerr.h \
+        compilers/pirc/src/pirop.h \
+        compilers/pirc/src/pirpcc.h \
+        compilers/pirc/src/pirmacro.h \
+        compilers/pirc/src/pirregalloc.h \
+        compilers/pirc/src/pirsymbol.h \
+        compilers/pirc/src/bcgen.h \
+        $(INC_DIR)/oplib/ops.h \
+        $(INC_DIR)/embed.h
+
+compilers/pirc/src/pirerr$(O) : $(PARROT_H_HEADERS) \
+        compilers/pirc/src/pircompiler.h \
+        compilers/pirc/src/pircompunit.h \
+        compilers/pirc/src/pirdefines.h \
+        compilers/pirc/src/pirparser.h \
+        compilers/pirc/src/piryy.h \
+        compilers/pirc/src/pirlexer.h \
+        compilers/pirc/src/pirerr.h \
+        compilers/pirc/src/pirmacro.h \
+        compilers/pirc/src/pirregalloc.h \
+        compilers/pirc/src/pirsymbol.h \
+        compilers/pirc/src/bcgen.h \
+        $(INC_DIR)/embed.h
+
+compilers/pirc/src/bcgen$(O) :  \
+  compilers/pirc/src/pirsymbol.h \
+  compilers/pirc/src/pircompiler.h \
+  compilers/pirc/src/pirregalloc.h \
+  compilers/pirc/src/pircompunit.h \
+  compilers/pirc/src/pirdefines.h \
+  compilers/pirc/src/pirmacro.h \
+  compilers/pirc/src/bcgen.h \
+  $(PARROT_H_HEADERS) \
+  $(INC_DIR)/embed.h \
+  include/pmc/pmc_sub.h \
+  include/pmc/pmc_namespace.h
+
+compilers/pirc/src/pirregalloc$(O) : $(PARROT_H_HEADERS) \
+        compilers/pirc/src/pircompiler.h \
+        compilers/pirc/src/pircompunit.h \
+        compilers/pirc/src/pirdefines.h \
+        compilers/pirc/src/pirmacro.h \
+        compilers/pirc/src/pirregalloc.h \
+        compilers/pirc/src/pirsymbol.h \
+        compilers/pirc/src/bcgen.h \
+        $(INC_DIR)/embed.h
+
+compilers/pirc/heredoc/heredocmain$(O) : $(PARROT_H_HEADERS)
+
+compilers/pirc/macro/macrolexer$(O) : $(PARROT_H_HEADERS) \
+        compilers/pirc/macro/macro.h  \
+        compilers/pirc/macro/lexer.h  \
+        compilers/pirc/macro/macroparser.h
+
+compilers/pirc/macro/macroparser$(O) : $(PARROT_H_HEADERS) \
+        compilers/pirc/macro/macro.h  \
+        compilers/pirc/macro/lexer.h  \
+        compilers/pirc/macro/macroparser.h \
+        compilers/pirc/macro/macrolexer.h
+
+compilers/pirc/src/hdocprep$(O) : $(PARROT_H_HEADERS) \
+        $(INC_DIR)/embed.h compilers/pirc/src/pirheredoc.h
+
+compilers/pirc/src/main$(O) : \
+        $(PARROT_H_HEADERS) \
+        $(INC_DIR)/embed.h \
+        compilers/pirc/src/bcgen.h \
+        compilers/pirc/src/pirparser.h \
+        compilers/pirc/src/pircompiler.h \
+        compilers/pirc/src/pircompunit.h \
+        compilers/pirc/src/pirmacro.h \
+        compilers/pirc/src/pirdefines.h \
+        compilers/pirc/src/piremit.h \
+        compilers/pirc/src/piryy.h \
+        compilers/pirc/src/pirlexer.h \
+        compilers/pirc/src/pirheredoc.h \
+        compilers/pirc/src/pirsymbol.h \
+        compilers/pirc/src/pirregalloc.h \
+        compilers/pirc/src/pircapi.h
+
+compilers/pirc/src/pircapi$(O) : \
+        $(PARROT_H_HEADERS) \
+        compilers/pirc/src/bcgen.h \
+        compilers/pirc/src/pircompiler.h \
+        compilers/pirc/src/pirparser.h \
+        compilers/pirc/src/pircompunit.h \
+        compilers/pirc/src/pirsymbol.h \
+        compilers/pirc/src/pirregalloc.h \
+        compilers/pirc/src/pirmacro.h \
+        compilers/pirc/src/pirdefines.h \
+        compilers/pirc/src/piremit.h \
+        compilers/pirc/src/piryy.h \
+        compilers/pirc/src/pirlexer.h \
+        compilers/pirc/src/pircapi.h \
+        $(INC_DIR)/embed.h
+
+compilers/pirc/src/pircompiler$(O) : \
+        compilers/pirc/src/pircompiler.h \
+        $(PARROT_H_HEADERS) \
+        compilers/pirc/src/piryy.h \
+        compilers/pirc/src/pirmacro.h \
+        compilers/pirc/src/pirregalloc.h \
+        compilers/pirc/src/pirerr.h \
+        compilers/pirc/src/bcgen.h \
+        compilers/pirc/src/pircompunit.h \
+        compilers/pirc/src/pirsymbol.h \
+        compilers/pirc/src/pirdefines.h \
+        $(INC_DIR)/embed.h
+
+compilers/pirc/src/pircompunit$(O) : $(PARROT_H_HEADERS) \
+  compilers/pirc/src/pircompunit.h \
+  compilers/pirc/src/pircompiler.h \
+  compilers/pirc/src/pirsymbol.h \
+  compilers/pirc/src/piryy.h \
+  compilers/pirc/src/pirdefines.h \
+  compilers/pirc/src/pirregalloc.h \
+  compilers/pirc/src/pirpcc.h \
+  compilers/pirc/src/pirerr.h \
+  compilers/pirc/src/pirmacro.h \
+  compilers/pirc/src/pirop.h \
+  compilers/pirc/src/bcgen.h \
+  $(INC_DIR)/oplib/ops.h \
+  $(INC_DIR)/dynext.h \
+  $(INC_DIR)/embed.h
+
+compilers/pirc/src/pirlexer$(O) : $(PARROT_H_HEADERS) \
+  compilers/pirc/src/pirparser.h \
+  compilers/pirc/src/pirmacro.h \
+  compilers/pirc/src/pirerr.h \
+  compilers/pirc/src/pircompunit.h \
+  compilers/pirc/src/pircompiler.h \
+  compilers/pirc/src/pirsymbol.h \
+  compilers/pirc/src/piryy.h \
+  compilers/pirc/src/pirdefines.h \
+  compilers/pirc/src/pirregalloc.h \
+  compilers/pirc/src/bcgen.h \
+  $(INC_DIR)/embed.h
+
+compilers/pirc/src/pirmacro$(O) : $(PARROT_H_HEADERS) \
+  compilers/pirc/src/pirmacro.h \
+  compilers/pirc/src/pircompunit.h \
+  compilers/pirc/src/pircompiler.h \
+  compilers/pirc/src/pirsymbol.h \
+  compilers/pirc/src/pirdefines.h \
+  compilers/pirc/src/pirregalloc.h \
+  compilers/pirc/src/bcgen.h \
+  $(INC_DIR)/embed.h
+
+compilers/pirc/src/pirop$(O) : $(PARROT_H_HEADERS) \
+  compilers/pirc/src/pircompiler.h \
+  compilers/pirc/src/pircompunit.h \
+  compilers/pirc/src/pirop.h \
+  compilers/pirc/src/pirerr.h \
+  compilers/pirc/src/pirsymbol.h \
+  compilers/pirc/src/piryy.h \
+  compilers/pirc/src/pirdefines.h \
+  compilers/pirc/src/pirregalloc.h \
+  compilers/pirc/src/pirmacro.h \
+  compilers/pirc/src/bcgen.h \
+  $(INC_DIR)/embed.h
+
+compilers/pirc/src/pirpcc$(O) : $(PARROT_H_HEADERS) \
+  compilers/pirc/src/pirpcc.h \
+  compilers/pirc/src/pircompiler.h \
+  compilers/pirc/src/pirerr.h \
+  compilers/pirc/src/pircompunit.h \
+  compilers/pirc/src/pirsymbol.h \
+  compilers/pirc/src/piryy.h \
+  compilers/pirc/src/pirdefines.h \
+  compilers/pirc/src/pirregalloc.h \
+  compilers/pirc/src/pirmacro.h \
+  compilers/pirc/src/bcgen.h \
+  $(INC_DIR)/oplib/ops.h \
+  $(INC_DIR)/embed.h
+
+compilers/pirc/src/pirsymbol$(O) : $(PARROT_H_HEADERS) \
+  compilers/pirc/src/pircompiler.h \
+  compilers/pirc/src/pirsymbol.h \
+  compilers/pirc/src/piryy.h \
+  compilers/pirc/src/pirerr.h \
+  compilers/pirc/src/pircompunit.h \
+  compilers/pirc/src/pirdefines.h \
+  compilers/pirc/src/pirregalloc.h \
+  compilers/pirc/src/pirmacro.h \
+  compilers/pirc/src/bcgen.h \
+  $(INC_DIR)/embed.h
+
+# the all here is too broad, but the separate pirc.exe is going away soonish.
+pirc$(EXE): $(PIRC_O_FILES) all
+	$(LINK) $(LD_OUT) $@ \
+	    $(PIRC_O_FILES) \
+	    $(RPATH_BLIB) $(ALL_PARROT_LIBS) $(C_LIBS) $(LINKFLAGS) $(LINK_DYNAMIC)
+#IF(win32):	if exist $@.manifest mt.exe -nologo -manifest $@.manifest -outputresource:$@;1
+
+compilers/pirc/src/pir.y.flag compilers/pirc/src/pirparser.c compilers/pirc/src/pirparser.h : compilers/pirc/src/pir.y
+	$(YACC) compilers/pirc/src/pir.y -d -o compilers/pirc/src/pirparser.c
+	$(TOUCH) compilers/pirc/src/pir.y.flag compilers/pirc/src/pirparser.c compilers/pirc/src/pirparser.h
+
+compilers/pirc/src/pir.l.flag compilers/pirc/src/pirlexer.c : compilers/pirc/src/pir.l
+	$(LEX) -o compilers/pirc/src/pirlexer.c compilers/pirc/src/pir.l
+	$(TOUCH) compilers/pirc/src/pir.l.flag compilers/pirc/src/pirlexer.c
+
+# XXX This should eventually be combined with the standard parrot test suite.
+pirc-test: all
+	$(PERL) compilers/pirc/t/harness

Modified: trunk/compilers/pirc/t/basic.t
==============================================================================
--- trunk/compilers/pirc/t/basic.t	Tue Jan 26 00:46:48 2010	(r43592)
+++ trunk/compilers/pirc/t/basic.t	Tue Jan 26 02:39:50 2010	(r43593)
@@ -2,7 +2,7 @@
 # Copyright (C) 2008-2009, Parrot Foundation.
 # $Id$
 
-use lib "../../lib";
+use lib qw(lib);
 use Parrot::Test tests => 6;
 
 pirc_2_pasm_is(<<'CODE', <<'OUTPUT', "a local, a reg and an if-stat");

Modified: trunk/compilers/pirc/t/harness
==============================================================================
--- trunk/compilers/pirc/t/harness	Tue Jan 26 00:46:48 2010	(r43592)
+++ trunk/compilers/pirc/t/harness	Tue Jan 26 02:39:50 2010	(r43593)
@@ -5,11 +5,11 @@
 use strict;
 use warnings;
 
-use lib '../../lib';
+use lib qw(lib);
 
 use Test::Harness;
 
-my @tests = @ARGV ? @ARGV : <t/*.t>;
+my @tests = @ARGV ? @ARGV : <compilers/pirc/t/*.t>;
 
 eval { require TAP::Harness };
 if ($@) {

Modified: trunk/compilers/pirc/t/heredoc.t
==============================================================================
--- trunk/compilers/pirc/t/heredoc.t	Tue Jan 26 00:46:48 2010	(r43592)
+++ trunk/compilers/pirc/t/heredoc.t	Tue Jan 26 02:39:50 2010	(r43593)
@@ -2,7 +2,7 @@
 # Copyright (C) 2008-2009, Parrot Foundation.
 # $Id$
 
-use lib "../../lib";
+use lib qw(lib);
 use Parrot::Test tests => 1;
 
 pirc_2_pasm_is(<<'CODE', <<'OUTPUT', "a single const declaration");

Modified: trunk/compilers/pirc/t/macro.t
==============================================================================
--- trunk/compilers/pirc/t/macro.t	Tue Jan 26 00:46:48 2010	(r43592)
+++ trunk/compilers/pirc/t/macro.t	Tue Jan 26 02:39:50 2010	(r43593)
@@ -2,7 +2,7 @@
 # Copyright (C) 2008-2009, Parrot Foundation.
 # $Id$
 
-use lib "../../lib";
+use lib qw(lib);
 use Parrot::Test tests => 1;
 
 pirc_2_pasm_is(<<'CODE', <<'OUTPUT', "a single const declaration");

Modified: trunk/compilers/pirc/t/stmts.t
==============================================================================
--- trunk/compilers/pirc/t/stmts.t	Tue Jan 26 00:46:48 2010	(r43592)
+++ trunk/compilers/pirc/t/stmts.t	Tue Jan 26 02:39:50 2010	(r43593)
@@ -2,7 +2,7 @@
 # Copyright (C) 2008-2009, Parrot Foundation.
 # $Id$
 
-use lib "../../lib";
+use lib qw(lib);
 use Parrot::Test tests => 5;
 
 pirc_2_pasm_is(<<'CODE', <<'OUTPUT', "a simple sub call - no params");

Modified: trunk/compilers/pirc/t/subflags.t
==============================================================================
--- trunk/compilers/pirc/t/subflags.t	Tue Jan 26 00:46:48 2010	(r43592)
+++ trunk/compilers/pirc/t/subflags.t	Tue Jan 26 02:39:50 2010	(r43593)
@@ -2,7 +2,7 @@
 # Copyright (C) 2008-2009, Parrot Foundation.
 # $Id$
 
-use lib "../../lib";
+use lib qw(lib);
 use Parrot::Test tests => 1;
 
 pirc_2_pasm_is(<<'CODE', <<'OUTPUT', "a single const declaration");

Copied: trunk/compilers/tge/Defines.mak (from r43591, branches/one_make/compilers/tge/Defines.mak)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ trunk/compilers/tge/Defines.mak	Tue Jan 26 02:39:50 2010	(r43593, copy of r43591, branches/one_make/compilers/tge/Defines.mak)
@@ -0,0 +1,2 @@
+TGE_LIB_PBCS = $(LIBRARY_DIR)/TGE.pbc compilers/tge/tgc.pbc
+TGE_CLEANUPS = $(TGE_LIB_PBCS) compilers/tge/TGE/Parser.pir

Copied: trunk/compilers/tge/Rules.mak (from r43591, branches/one_make/compilers/tge/Rules.mak)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ trunk/compilers/tge/Rules.mak	Tue Jan 26 02:39:50 2010	(r43593, copy of r43591, branches/one_make/compilers/tge/Rules.mak)
@@ -0,0 +1,18 @@
+$(LIBRARY_DIR)/TGE.pbc:  \
+    $(LIBRARY_DIR)/PGE.pbc \
+    $(LIBRARY_DIR)/PGE/Util.pbc \
+    $(LIBRARY_DIR)/P6object.pbc \
+    compilers/tge/TGE.pir \
+    compilers/tge/TGE/Rule.pir \
+    compilers/tge/TGE/Parser.pir \
+    compilers/tge/TGE/Grammar.pir \
+    compilers/tge/TGE/Compiler.pir \
+    compilers/tge/TGE/Tree.pir
+	$(PARROT) -o $@ compilers/tge/TGE.pir
+
+compilers/tge/tgc.pbc : $(LIBRARY_DIR)/TGE.pbc $(LIBRARY_DIR)/Getopt/Obj.pbc
+
+compilers/tge/TGE/Parser.pir: $(PARROT) \
+    compilers/tge/TGE/Parser.pg \
+    $(LIBRARY_DIR)/PGE/Perl6Grammar.pbc 
+	$(PARROT) $(LIBRARY_DIR)/PGE/Perl6Grammar.pbc --output=$@ compilers/tge/TGE/Parser.pg

Modified: trunk/compilers/tge/TGE.pir
==============================================================================
--- trunk/compilers/tge/TGE.pir	Tue Jan 26 00:46:48 2010	(r43592)
+++ trunk/compilers/tge/TGE.pir	Tue Jan 26 02:39:50 2010	(r43593)
@@ -16,7 +16,7 @@
     # and elsewhere...
 
     .sub _main :main
-        load_bytecode 'TGE.pir'
+        load_bytecode 'TGE.pbc'
 
         # Compile a grammar from the source grammar file
         .local pmc compiler

Modified: trunk/config/auto/cgoto.pm
==============================================================================
--- trunk/config/auto/cgoto.pm	Tue Jan 26 00:46:48 2010	(r43592)
+++ trunk/config/auto/cgoto.pm	Tue Jan 26 02:39:50 2010	(r43593)
@@ -62,25 +62,25 @@
             TEMP_cg_c => <<'EOF',
 # generated by config/auto/cgoto.pm
 
-$(OPS_DIR)/core_ops_cg$(O): $(GENERAL_H_FILES) $(OPS_DIR)/core_ops_cg.c \
-	$(PMC_INC_DIR)/pmc/pmc_parrotlibrary.h
-$(OPS_DIR)/core_ops_cgp$(O): $(GENERAL_H_FILES) $(OPS_DIR)/core_ops_cgp.c \
-	$(PMC_INC_DIR)/pmc/pmc_parrotlibrary.h
-$(SRC_DIR)/runcore/cores.c: $(INC_DIR)/oplib/core_ops_cgp.h
+src/ops/core_ops_cg$(O): $(GENERAL_H_FILES) src/ops/core_ops_cg.c \
+	include/pmc/pmc_parrotlibrary.h
+src/ops/core_ops_cgp$(O): $(GENERAL_H_FILES) src/ops/core_ops_cgp.c \
+	include/pmc/pmc_parrotlibrary.h
+src/runcore/cores.c: $(INC_DIR)/oplib/core_ops_cgp.h
 
-$(INC_DIR)/oplib/core_ops_cg.h: $(OPS_DIR)/core_ops_cg.c
+$(INC_DIR)/oplib/core_ops_cg.h: src/ops/core_ops_cg.c
 
-$(OPS_DIR)/core_ops_cg.c : $(OPS_FILES) $(BUILD_TOOLS_DIR)/ops2c.pl lib/Parrot/OpsFile.pm lib/Parrot/Op.pm lib/Parrot/OpTrans/CGoto.pm lib/Parrot/OpLib/core.pm
+src/ops/core_ops_cg.c : $(OPS_FILES) $(BUILD_TOOLS_DIR)/ops2c.pl lib/Parrot/OpsFile.pm lib/Parrot/Op.pm lib/Parrot/OpTrans/CGoto.pm lib/Parrot/OpLib/core.pm
 	$(PERL) $(BUILD_TOOLS_DIR)/ops2c.pl CGoto --core
 
-$(INC_DIR)/oplib/core_ops_cgp.h: $(OPS_DIR)/core_ops_cgp.c
+$(INC_DIR)/oplib/core_ops_cgp.h: src/ops/core_ops_cgp.c
 
-$(OPS_DIR)/core_ops_cgp.c : $(OPS_FILES) $(BUILD_TOOLS_DIR)/ops2c.pl lib/Parrot/OpsFile.pm lib/Parrot/Op.pm lib/Parrot/OpTrans/CGP.pm lib/Parrot/OpLib/core.pm lib/Parrot/OpTrans/CPrederef.pm
+src/ops/core_ops_cgp.c : $(OPS_FILES) $(BUILD_TOOLS_DIR)/ops2c.pl lib/Parrot/OpsFile.pm lib/Parrot/Op.pm lib/Parrot/OpTrans/CGP.pm lib/Parrot/OpLib/core.pm lib/Parrot/OpTrans/CPrederef.pm
 	$(PERL) $(BUILD_TOOLS_DIR)/ops2c.pl CGP --core
 EOF
-            TEMP_cg_o => '$(OPS_DIR)/core_ops_cg$(O) $(OPS_DIR)/core_ops_cgp$(O)',
-            TEMP_cg_r => '$(RM_F) $(INC_DIR)/oplib/core_ops_cg.h $(OPS_DIR)/core_ops_cg.c \
-                    $(INC_DIR)/oplib/core_ops_cgp.h $(OPS_DIR)/core_ops_cgp.c',
+            TEMP_cg_o => 'src/ops/core_ops_cg$(O) src/ops/core_ops_cgp$(O)',
+            TEMP_cg_r => '$(RM_F) $(INC_DIR)/oplib/core_ops_cg.h src/ops/core_ops_cg.c \
+                    $(INC_DIR)/oplib/core_ops_cgp.h src/ops/core_ops_cgp.c',
             cg_flag => '-DHAVE_COMPUTED_GOTO'
         );
         print " (yes) " if $verbose;

Modified: trunk/config/auto/gc.pm
==============================================================================
--- trunk/config/auto/gc.pm	Tue Jan 26 00:46:48 2010	(r43592)
+++ trunk/config/auto/gc.pm	Tue Jan 26 02:39:50 2010	(r43593)
@@ -45,9 +45,9 @@
 
     $conf->data->set(
         TEMP_gc_c => <<"EOF",
-\$(SRC_DIR)/gc/alloc_resources\$(O):	\$(GENERAL_H_FILES) \$(SRC_DIR)/gc/alloc_resources.c
+src/gc/alloc_resources\$(O):	\$(GENERAL_H_FILES) src/gc/alloc_resources.c
 EOF
-        TEMP_gc_o => "\$(SRC_DIR)/gc/alloc_resources\$(O)",
+        TEMP_gc_o => "src/gc/alloc_resources\$(O)",
         gc_flag   => '',
     );
     print(" ($gc) ") if $conf->options->get('verbose');

Modified: trunk/config/auto/pmc.pm
==============================================================================
--- trunk/config/auto/pmc.pm	Tue Jan 26 00:46:48 2010	(r43592)
+++ trunk/config/auto/pmc.pm	Tue Jan 26 02:39:50 2010	(r43593)
@@ -98,7 +98,7 @@
 src/pmc/$pmc.dump : vtable.dump $parent_dumps src/pmc/$pmc.pmc \$(PMC2C_FILES) $pccmethod_depend
 \t\$(PMC2CD) src/pmc/$pmc.pmc
 
-\$(PMC_INC_DIR)/pmc/pmc_$pmc.h: src/pmc/$pmc.c
+include/pmc/pmc_$pmc.h: src/pmc/$pmc.c
 
 src/pmc/$pmc\$(O): include/pmc/pmc_${pmc}.h src/pmc/$pmc.str \$(NONGEN_HEADERS) \\
     $parent_headers $include_headers include/pmc/pmc_continuation.h \\
@@ -173,7 +173,6 @@
         TEMP_pmc_classes_o   => $TEMP_pmc_classes_o,
         TEMP_pmc_classes_str => $TEMP_pmc_classes_str,
         TEMP_pmc_classes_pmc => $TEMP_pmc_classes_pmc,
-        pmc_inc              => 'include',
     );
 
     return 1;

Modified: trunk/config/gen/makefiles.pm
==============================================================================
--- trunk/config/gen/makefiles.pm	Tue Jan 26 00:46:48 2010	(r43592)
+++ trunk/config/gen/makefiles.pm	Tue Jan 26 02:39:50 2010	(r43593)
@@ -36,24 +36,8 @@
             conditioned_lines => 1,
         },
 
-        'ext/nqp-rx/Makefile' => { SOURCE => 'config/gen/makefiles/nqp-rx.in' },
-
         'compilers/ncigen/Makefile'  =>
             { SOURCE => 'compilers/ncigen/config/makefiles/ncigen.in' },
-        'compilers/nqp/Makefile'     =>
-            { SOURCE => 'config/gen/makefiles/nqp.in' },
-        'compilers/pct/Makefile'     =>
-            { SOURCE => 'config/gen/makefiles/pct.in' },
-        'compilers/pge/Makefile'     =>
-            { SOURCE => 'config/gen/makefiles/pge.in' },
-        'compilers/tge/Makefile'     =>
-            { SOURCE => 'config/gen/makefiles/tge.in' },
-        'compilers/json/Makefile'    =>
-            { SOURCE => 'config/gen/makefiles/json.in' },
-        'compilers/data_json/Makefile' =>
-            { SOURCE => 'config/gen/makefiles/data_json.in' },
-        'compilers/pirc/Makefile'    =>
-            { SOURCE => 'config/gen/makefiles/pirc.in' },
         'src/dynpmc/Makefile'        =>
             { SOURCE => 'config/gen/makefiles/dynpmc.in' },
         'src/dynoplibs/Makefile'     =>
@@ -61,16 +45,6 @@
         'editor/Makefile'            =>
             { SOURCE => 'config/gen/makefiles/editor.in' },
 
-        'tools/build/dynpmc.pl' => {
-            SOURCE            => 'config/gen/makefiles/dynpmc_pl.in',
-            replace_slashes   => 0,
-            conditioned_lines => 1,
-        },
-        'tools/build/dynoplibs.pl' => {
-            SOURCE            => 'config/gen/makefiles/dynoplibs_pl.in',
-            replace_slashes   => 0,
-            conditioned_lines => 1,
-        },
         'parrot.pc'     => { SOURCE => 'config/gen/makefiles/parrot_pc.in' },
         'docs/Makefile' => { SOURCE => 'config/gen/makefiles/docs.in' },
     };

Deleted: trunk/config/gen/makefiles/data_json.in
==============================================================================
--- trunk/config/gen/makefiles/data_json.in	Tue Jan 26 02:39:50 2010	(r43592)
+++ /dev/null	00:00:00 1970	(deleted)
@@ -1,60 +0,0 @@
-# Copyright (C) 2006-2009, Parrot Foundation.
-# $Id$
-
-PERL     := @perl@
-RM_F     := @rm_f@
-PARROT   := ../../parrot at exe@
-
-TOOL_DIR := ../..
-PGE_DIR  := ../../compilers/pge
-TGE_DIR  := ../../compilers/tge
-
-# the default target
-all: data_json.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:               data_json.pbc"
-	@echo "                     This is the default."
-	@echo "Testing:"
-	@echo "  test:              Run the test suite."
-	@echo "  testclean:         Clean up test results and temporary files."
-	@echo ""
-	@echo "Cleaning:"
-	@echo "  clean:             Basic cleaning up."
-	@echo ""
-	@echo "Misc:"
-	@echo "  help:              Print this help message."
-	@echo ""
-
-test: all
-	cd $(TOOL_DIR) && prove -r t/compilers/json
-
-testclean:
-	$(RM_F) "../../t/compilers/json/*.pir"
-
-data_json.pbc : data_json/grammar.pbc data_json/pge2pir.pbc data_json.pir
-	$(PARROT) --output=data_json.pbc data_json.pir
-
-data_json/grammar.pbc : data_json/grammar.pir
-	$(PARROT) --output=data_json/grammar.pbc data_json/grammar.pir
-
-data_json/grammar.pir : data_json/grammar.pg
-	$(PARROT) $(TOOL_DIR)/runtime/parrot/library/PGE/Perl6Grammar.pbc --output=data_json/grammar.pir data_json/grammar.pg
-
-data_json/pge2pir.pbc : data_json/pge2pir.pir
-	$(PARROT) --output=data_json/pge2pir.pbc data_json/pge2pir.pir
-
-data_json/pge2pir.pir : data_json/pge2pir.tg
-	$(PARROT) $(TGE_DIR)/tgc.pir --output=data_json/pge2pir.pir data_json/pge2pir.tg
-
-clean : testclean
-	$(RM_F) "data_json/*.pbc" "data_json/*.pir" data_json.pbc
-
-# Local variables:
-#   mode: makefile
-# End:
-# vim: ft=make:

Modified: trunk/config/gen/makefiles/docs.in
==============================================================================
--- trunk/config/gen/makefiles/docs.in	Tue Jan 26 00:46:48 2010	(r43592)
+++ trunk/config/gen/makefiles/docs.in	Tue Jan 26 02:39:50 2010	(r43593)
@@ -2,17 +2,17 @@
 # $Id$
 
 # Setup of some commands
-PERL    := @perl@
-CHMOD   := @chmod@
-MKPATH  := @mkpath@
-TOUCH   := @touch@
-RM_F    := @rm_f@
-RM_RF   := @rm_rf@
-PERLDOC := @perldoc@
-VERSION := @VERSION@@DEVEL@
+PERL    = @perl@
+CHMOD   = @chmod@
+MKPATH  = @mkpath@
+TOUCH   = @touch@
+RM_F    = @rm_f@
+RM_RF   = @rm_rf@
+PERLDOC = @perldoc@
+VERSION = @VERSION@@DEVEL@
 
 # long list of .pod files
-POD := @TEMP_pod@
+POD = @TEMP_pod@
 
 #
 # Targets

Modified: trunk/config/gen/makefiles/dynoplibs.in
==============================================================================
--- trunk/config/gen/makefiles/dynoplibs.in	Tue Jan 26 00:46:48 2010	(r43592)
+++ trunk/config/gen/makefiles/dynoplibs.in	Tue Jan 26 02:39:50 2010	(r43593)
@@ -1,28 +1,28 @@
 # Copyright (C) 2003-2009, Parrot Foundation.
 # $Id$
 
-PERL          := @perl@
-RM_F          := @rm_f@
-CP            := @cp@
-CHMOD         := @chmod@
-LOAD_EXT      := @load_ext@
-BUILD_DIR     := @build_dir@
-RECONFIGURE   := $(PERL) $(BUILD_DIR)/tools/dev/reconfigure.pl
-INSTALL_DIR   := $(BUILD_DIR)/runtime/parrot/dynext
-O             := @o@
-CC            := @cc@
-LD            := @ld@
-LDFLAGS       := @ldflags@ @ld_debug@ @rpath_blib@ @linkflags@
-LD_LOAD_FLAGS := @ld_load_flags@
-CFLAGS        := @ccflags@ @cc_shared@ @cc_debug@ @ccwarn@ @cc_hasjit@ @cg_flag@ @gc_flag@
-LIBPARROT     := @libparrot_ldflags@
-
-BUILD_TOOLS_DIR := $(BUILD_DIR)@slash at tools@slash at build
-OPS2C           := $(PERL) -I$(BUILD_DIR)@slash at lib $(BUILD_TOOLS_DIR)@slash at ops2c.pl
-INCLUDES        := -I$(BUILD_DIR)@slash at include -I at build_dir@@slash at src@slash at pmc
-LINKARGS        := $(LDFLAGS) $(LD_LOAD_FLAGS) $(LIBPARROT) @icu_shared@ @libs@
+PERL          = @perl@
+RM_F          = @rm_f@
+CP            = @cp@
+CHMOD         = @chmod@
+LOAD_EXT      = @load_ext@
+BUILD_DIR     = @build_dir@
+RECONFIGURE   = $(PERL) $(BUILD_DIR)/tools/dev/reconfigure.pl
+INSTALL_DIR   = $(BUILD_DIR)/runtime/parrot/dynext
+O             = @o@
+CC            = @cc@
+LD            = @ld@
+LDFLAGS       = @ldflags@ @ld_debug@ @rpath_blib@ @linkflags@
+LD_LOAD_FLAGS = @ld_load_flags@
+CFLAGS        = @ccflags@ @cc_shared@ @cc_debug@ @ccwarn@ @cc_hasjit@ @cg_flag@ @gc_flag@
+LIBPARROT     = @libparrot_ldflags@
+
+BUILD_TOOLS_DIR = $(BUILD_DIR)@slash at tools@slash at build
+OPS2C           = $(PERL) -I$(BUILD_DIR)@slash at lib $(BUILD_TOOLS_DIR)@slash at ops2c.pl
+INCLUDES        = -I$(BUILD_DIR)@slash at include -I at build_dir@@slash at src@slash at pmc
+LINKARGS        = $(LDFLAGS) $(LD_LOAD_FLAGS) $(LIBPARROT) @icu_shared@ @libs@
 
-OPS_TARGETS := \
+OPS_TARGETS = \
 #IF(cg_flag):  obscure_ops_cg$(LOAD_EXT) \
 #IF(cg_flag):  obscure_ops_cgp$(LOAD_EXT) \
   obscure_ops$(LOAD_EXT) \
@@ -32,7 +32,7 @@
   math_ops$(LOAD_EXT) \
   math_ops_switch$(LOAD_EXT)
 
-CLEANUPS := \
+CLEANUPS = \
   "*.c" \
   "*.h" \
 #IF(o):  "*@o@" \

Deleted: trunk/config/gen/makefiles/dynoplibs_pl.in
==============================================================================
--- trunk/config/gen/makefiles/dynoplibs_pl.in	Tue Jan 26 02:39:50 2010	(r43592)
+++ /dev/null	00:00:00 1970	(deleted)
@@ -1,216 +0,0 @@
-# Copyright (C) 2001-2007, Parrot Foundation.
-# $Id$
-
-=head1 NAME
-
-tools/build/dynoplibs.pl - Build script for dynamic op libraries
-
-=head1 DESCRIPTION
-
-This file is generated by F<config/gen/makefiles.pm> from
-F<config/gen/makefiles/dynopslibs_pl.in>.  This script is used for building
-dynamic op libraries.
-
-=cut
-
-use strict;
-use warnings;
-
-use File::Copy qw(copy);
-
-# qq[] isn't guaranteed to work, but it's safer than "" as some platforms
-# (eg FreeBSD) have ""s embedded in their substution values. q[] is used in
-# some places as Win32 paths have \'s in, which qq[] treats as escape sequences.
-# Config stuff
-our $CC = q[@cc@ -c];
-our $LD = q[@ld@];
-our $LDFLAGS = q[@ldflags@ @ld_debug@ @rpath_blib@ @linkflags@];
-our $LD_LOAD_FLAGS = q[@ld_load_flags@];
-our $PERL = q[@perl@];
-our $LOAD_EXT = q[@load_ext@];
-our $O = q[@o@];
-our $CFLAGS = q[@ccflags@ @cc_shared@ @cc_debug@ @ccwarn@ @cc_hasjit@ @cg_flag@ @gc_flag@];
-
-our $LIBPARROT = q[];
-#IF(parrot_is_shared):$LIBPARROT = q[@libparrot_ldflags@];
-
-# Here comes some stuff for Win32.
-our $PATHQUOTE = $^O eq 'MSWin32' ? q["] : q[];
-
-# OPS2C Config
-our $OPS2C = "$PERL -I $PATHQUOTE" .
-             q[@build_dir@@slash at lib] .
-             "$PATHQUOTE $PATHQUOTE" .
-             q[@build_dir@@slash at tools@slash at build@slash at ops2c.pl] .
-             $PATHQUOTE;
-our %cores = (
-    C       => q[],
-#IF(cg_flag):   CGP     => '_cgp',
-#IF(cg_flag):   CGoto   => '_cg',
-    CSwitch => '_switch'
-);
-
-# Actual commands
-sub compile_cmd {
-    my ($target, $source) = @_;
-
-    return
-        "$CC " .
-        "@cc_o_out@" . $target . " " .
-        "-I" . $PATHQUOTE . '@build_dir@@slash at include' . $PATHQUOTE . " " .
-        "-I" . $PATHQUOTE . '@build_dir@@slash at src@slash at pmc' . $PATHQUOTE . " " .
-        "$CFLAGS " .
-        $source;
-};
-
-sub partial_link_cmd {
-    my ($target, $libs, $sources) = @_;
-
-    my $liblist;
-    if ($^O =~ /mswin32/i) {
-        # Need to put various libraries in the link line.
-        $liblist = join( ' ', map { "$_.lib" } keys %$libs );
-        my $extraLibs = '@libs@ @icu_shared@';
-        $extraLibs =~ s/blib/..\\blib/g;
-        $extraLibs =~ s/\Q$(A)\E/.lib/g;
-        $liblist .= ' ' . $extraLibs;
-    }
-    else {
-        $liblist = join( ' ', map { "-l$_" } keys %$libs );
-    }
-
-    return
-        "$LD ".
-        "@ld_out@" . $target . " " .
-        join(" ", map {"$PATHQUOTE$_$PATHQUOTE"} @$sources) .
-        " $liblist $LDFLAGS $LD_LOAD_FLAGS $LIBPARROT";
-}
-
-our $NOW = time();
-
-################### MAIN PROGRAM ################
-
-my ($mode, @oplibs) = @ARGV;
-
-if ($mode eq 'generate') {
-    # 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;
-
-    # Convert X.o -> X.so
-    my $core_suffix;
-    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
-    shift(@oplibs) =~ /--destination=(.*)/
-      or die "copy command requires destination";
-    my $dest = $1;
-
-    my $core_suffix;
-    foreach $core_suffix (values %cores) {
-        foreach (@oplibs) {
-            my $src = $_ . "_ops$core_suffix$LOAD_EXT";
-            copy($src, $dest)
-                or die "Copy $src failed ($?)\n";
-
-            # Execute permissions on libraries is especially important on
-            # some platforms
-            if ($^O eq 'hpux' or $^O eq 'cygwin') {
-                chmod 0755, "$dest at slash@$src";
-            }
-        }
-    }
-}
-else {
-    die "invalid command '$mode'\nmust be one of generate, compile, linklibs, or copy\n";
-}
-
-sub run {
-    print join(" ", @_), "\n";
-
-    return system(@_) == 0;
-}
-
-sub modtime {
-    my $ago = (-M shift);
-
-    if (defined $ago) {
-        return $NOW - $ago;
-    }
-    else {
-        return;
-    }
-}
-
-sub needs_build {
-    my ($target, @sources) = @_;
-
-    my $target_mod = modtime($target)
-      or return 1;
-    for my $source (@sources) {
-        return 1 if modtime($source) > $target_mod;
-    }
-
-    return 0;
-}
-
-sub generate_c {
-    my ($oplib) = @_;
-
-    foreach (keys %cores) {
-        if (needs_build($oplib . "_ops$cores{$_}.c", "$oplib.ops")) {
-            run("$OPS2C $_ --dynamic $oplib.ops")
-                or die "ops2c code generation failed ($?)\n";
-        }
-    }
-
-    return;
-}
-
-sub compile {
-    my ($src_stem, $dest_stem) = @_;
-
-    $dest_stem ||= $src_stem;
-    if (needs_build("$dest_stem$O", "$src_stem.c")) {
-        return run(compile_cmd("$dest_stem$O", "$src_stem.c"))
-          or die "compile $src_stem.c failed ($?)\n";
-    }
-    else {
-        return 1;
-    }
-}
-
-sub partial_link {
-    my ($libs, $stem, @objs) = @_;
-
-    if (needs_build("$stem$LOAD_EXT", "$stem$O", @objs)) {
-        return run(partial_link_cmd("$stem$LOAD_EXT", $libs, [ "$stem$O", @objs ]))
-          or die "partial link $stem$LOAD_EXT failed ($?)\n";
-    }
-    else {
-        return 1;
-    }
-}
-
-
-# Local Variables:
-#   mode: cperl
-#   cperl-indent-level: 4
-#   fill-column: 100
-# End:
-# vim: expandtab shiftwidth=4:

Modified: trunk/config/gen/makefiles/dynpmc.in
==============================================================================
--- trunk/config/gen/makefiles/dynpmc.in	Tue Jan 26 00:46:48 2010	(r43592)
+++ trunk/config/gen/makefiles/dynpmc.in	Tue Jan 26 02:39:50 2010	(r43593)
@@ -1,33 +1,33 @@
 # Copyright (C) 2003-2009, Parrot Foundation.
 # $Id$
 
-PERL          := @perl@
-RM_F          := @rm_f@
-CP            := @cp@
-CHMOD         := @chmod@
-LOAD_EXT      := @load_ext@
-BUILD_DIR     := @build_dir@
-RECONFIGURE   := $(PERL) $(BUILD_DIR)/tools/dev/reconfigure.pl
-INSTALL_DIR   := $(BUILD_DIR)@slash at runtime@slash at parrot@slash at dynext
-O             := @o@
-CC            := @cc@
-LD            := @ld@
-LDFLAGS       := @ldflags@ @ld_debug@ @rpath_blib@
-LD_LOAD_FLAGS := @ld_load_flags@
-CFLAGS        := @ccflags@ @cc_shared@ @cc_debug@ @ccwarn@ @cc_hasjit@ @cg_flag@ @gc_flag@
-LIBPARROT     := @libparrot_ldflags@
-
-BUILD_TOOLS_DIR := $(BUILD_DIR)@slash at tools@slash at build
-BUILD_LIB_DIR   := $(BUILD_DIR)@slash at blib@slash at lib
-PMC2C           := $(PERL) $(BUILD_TOOLS_DIR)@slash at pmc2c.pl
-INCLUDES        := -I$(BUILD_DIR)@slash at include -I at build_dir@@slash at include@slash at pmc
-LINKARGS        := $(LDFLAGS) $(LD_LOAD_FLAGS) $(LIBPARROT) @icu_shared@ @libs@
+PERL          = @perl@
+RM_F          = @rm_f@
+CP            = @cp@
+CHMOD         = @chmod@
+LOAD_EXT      = @load_ext@
+BUILD_DIR     = @build_dir@
+RECONFIGURE   = $(PERL) $(BUILD_DIR)/tools/dev/reconfigure.pl
+INSTALL_DIR   = $(BUILD_DIR)@slash at runtime@slash at parrot@slash at dynext
+O             = @o@
+CC            = @cc@
+LD            = @ld@
+LDFLAGS       = @ldflags@ @ld_debug@ @rpath_blib@
+LD_LOAD_FLAGS = @ld_load_flags@
+CFLAGS        = @ccflags@ @cc_shared@ @cc_debug@ @ccwarn@ @cc_hasjit@ @cg_flag@ @gc_flag@
+LIBPARROT     = @libparrot_ldflags@
+
+BUILD_TOOLS_DIR = $(BUILD_DIR)@slash at tools@slash at build
+BUILD_LIB_DIR   = $(BUILD_DIR)@slash at blib@slash at lib
+PMC2C           = $(PERL) $(BUILD_TOOLS_DIR)@slash at pmc2c.pl
+INCLUDES        = -I$(BUILD_DIR)@slash at include -I at build_dir@@slash at include@slash at pmc
+LINKARGS        = $(LDFLAGS) $(LD_LOAD_FLAGS) $(LIBPARROT) @icu_shared@ @libs@
 
-PMC2CD := $(PERL) $(BUILD_TOOLS_DIR)/pmc2c.pl --dump
-PMC2CC := $(PERL) $(BUILD_TOOLS_DIR)/pmc2c.pl --c
+PMC2CD = $(PERL) $(BUILD_TOOLS_DIR)/pmc2c.pl --dump
+PMC2CC = $(PERL) $(BUILD_TOOLS_DIR)/pmc2c.pl --c
 
 # add your dynamic pmcs here
-PMC_TARGETS := \
+PMC_TARGETS = \
   dynlexpad$(LOAD_EXT) \
   foo_group$(LOAD_EXT) \
   rotest$(LOAD_EXT) \
@@ -36,7 +36,7 @@
 #IF(has_crypto):  digest_group$(LOAD_EXT) \
   subproxy$(LOAD_EXT)
 
-PMCS_DIGEST := \
+PMCS_DIGEST = \
   md2.pmc \
   md4.pmc \
   md5.pmc \
@@ -46,7 +46,7 @@
   sha256.pmc \
   sha512.pmc
 
-OBJS_DIGEST := \
+OBJS_DIGEST = \
   md2$(O) \
   md4$(O) \
   md5$(O) \
@@ -56,23 +56,23 @@
   sha256$(O) \
   sha512$(O)
 
-PMCS_FOO := \
+PMCS_FOO = \
   foo.pmc \
   foo2.pmc
 
-OBJS_FOO := \
+OBJS_FOO = \
   foo$(O) \
   foo2$(O)
 
-#IF(win32 and cc==gcc):LIB_GDBM := -llibgdbm
-#ELSIF(win32):LIB_GDBM := libgdbm.lib
-#ELSE:LIB_GDBM := -lgdbm
-
-#IF(win32 and cc==gcc):LIB_CRYPTO := -lcrypto
-#ELSIF(win32):LIB_CRYPTO := libcrypto.lib
-#ELSE:LIB_CRYPTO := -lcrypto
+#IF(win32 and cc==gcc):LIB_GDBM = -llibgdbm
+#ELSIF(win32):LIB_GDBM = libgdbm.lib
+#ELSE:LIB_GDBM = -lgdbm
+
+#IF(win32 and cc==gcc):LIB_CRYPTO = -lcrypto
+#ELSIF(win32):LIB_CRYPTO = libcrypto.lib
+#ELSE:LIB_CRYPTO = -lcrypto
 
-CLEANUPS := \
+CLEANUPS = \
   "*.c" \
   "pmc_*.h" \
   "*_group.h" \

Deleted: trunk/config/gen/makefiles/dynpmc_pl.in
==============================================================================
--- trunk/config/gen/makefiles/dynpmc_pl.in	Tue Jan 26 02:39:50 2010	(r43592)
+++ /dev/null	00:00:00 1970	(deleted)
@@ -1,298 +0,0 @@
-# Copyright (C) 2001-2009, Parrot Foundation.
-# $Id$
-
-=head1 NAME
-
-tools/build/dynpmc.pl - Build script for dynamic PMCs
-
-=head1 DESCRIPTION
-
-This file is generated by F<config/gen/makefiles.pl> from
-F<config/gen/makefiles/dynpmc_pl.in>.  This script is used for building
-dynamic PMCs.
-
-=cut
-
-use strict;
-use warnings;
-use FindBin;
-use lib "$FindBin::Bin/../..";
-use lib "$FindBin::Bin/../../lib";
-
-use File::Copy qw(copy);
-use Storable;
-
-# Config stuff
-# q[] isn't guaranteed to work, but it's safer than "" as some platforms
-# (eg FreeBSD) have ""s embedded in their substitution values. q[] is used
-# as Win32 paths have \'s in, which qq treats as escape sequences.
-our $CC              = q[@cc@ -c];
-our $LD              = q[@ld@];
-our $LDFLAGS         = q[@ldflags@ @ld_debug@ @rpath_blib@];
-our $LD_LOAD_FLAGS   = q[@ld_load_flags@];
-our $PERL            = q[@perl@];
-our $LOAD_EXT        = q[@load_ext@];
-our $O               = q[@o@];
-our $CFLAGS          = q[@ccflags@ @cc_shared@ @cc_debug@ @ccwarn@ @cc_hasjit@ @cg_flag@ @gc_flag@];
-
-our $LIBPARROT = q[];
-#IF(parrot_is_shared):$LIBPARROT = q[@libparrot_ldflags@];
-
-# Here comes some stuff for Win32.
-our $PATHQUOTE = $^O eq 'MSWin32' ? q["] : q[];
-
-# PMC2C Config
-our $PMC2C = "$PERL $PATHQUOTE" . q[@build_dir@@slash at tools@slash at build@slash at pmc2c.pl] . $PATHQUOTE;
-
-# Actual commands
-sub compile_cmd {
-    my ($target, $source) = @_;
-
-    my $dynpmc_include = '';
-    if (defined $ENV{DYNPMC_INCLUDE} )
-    {
-        $dynpmc_include = $ENV{DYNPMC_INCLUDE};
-        $dynpmc_include =~ s/,/$PATHQUOTE -I$PATHQUOTE/g;
-        $dynpmc_include = "-I" . $PATHQUOTE . $dynpmc_include . $PATHQUOTE . " ";
-    }
-
-    return
-        "$CC " .
-        '@cc_o_out@' . $target . " " .
-        "-I" . $PATHQUOTE . '@build_dir@@slash at include' . $PATHQUOTE . " " .
-        "-I" . $PATHQUOTE . '@build_dir@@slash at src@slash at pmc' . $PATHQUOTE . " " .
-        $dynpmc_include . " " .
-        "$CFLAGS " .
-        $source;
-};
-
-sub partial_link_cmd {
-    my ($target, $libs, $sources) = @_;
-
-    my $liblist;
-    if ($^O =~ /mswin32/i) {
-        # Need to put various libraries in the link line.
-        if ($CC =~ /gcc/i) {
-            $liblist = join( ' ', map { "-l$_" } keys %$libs );
-            $liblist =~ s/-lgdbm/-llibgdbm/i;
-        }
-        else {
-            $liblist = join( ' ', map { "$_.lib" } keys %$libs );
-        }
-        my $extraLibs = '@libs@ @icu_shared@';
-        $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 );
-        my $extraLibs = '@libs@ @icu_shared@';
-        $liblist .= ' ' . $extraLibs;
-    }
-
-    if (defined $ENV{DYNPMC_LINK}) {
-        push @{$sources}, split /,/, $ENV{DYNPMC_LINK};
-    }
-
-    return
-        "$LD ".
-        '@ld_out@' . $target . " " .
-        join(" ", map {"$PATHQUOTE$_$PATHQUOTE"} @$sources) .
-        " $liblist $LDFLAGS $LD_LOAD_FLAGS $LIBPARROT";
-}
-
-our $NOW = time();
-
-################### MAIN PROGRAM ################
-
-my ($mode, @pmcs) = @ARGV;
-
-if ($mode eq 'generate') {
-    # Convert X.pmc -> X.dump and X.c and also create any lib-GROUP.c files
-
-    generate_dump($_) foreach (@pmcs);
-    generate_c($_) foreach (@pmcs);
-
-    my ($group_files, $group_libs, $pmc_group, $pmc_libs) =
-        gather_groups_and_libs(@pmcs);
-
-    while (my ($group, $pmcs) = each %$group_files) {
-        my @pmcfiles = map { "$_.pmc" } @$pmcs;
-        if (needs_build("$group.c", @pmcfiles)) {
-            run("$PMC2C --library $group --c " . join(" ", at pmcfiles))
-              or die "pmc2c library creation failed ($?)\n";
-        }
-    }
-}
-elsif ($mode eq 'compile') {
-    my ($group_files, $group_libs, $pmc_group, $pmc_libs) =
-        gather_groups_and_libs(@pmcs);
-
-    # Convert X.c -> X.o for all X.c
-    compile($_) foreach (@pmcs);
-
-    # lib-GROUP.c
-    for my $group (keys %$group_files) {
-        compile("$group", "lib-$group")
-          or die "compile $group.c failed ($?)\n";
-    }
-}
-elsif ($mode eq 'linklibs') {
-    my ($group_files, $group_libs, $pmc_group, $pmc_libs) =
-        gather_groups_and_libs(@pmcs);
-
-    # Convert lib-GROUP.so + A.so + B.so ... -> GROUP.so
-    while (my ($group, $pmcs) = each %$group_files) {
-        partial_link($group, $group_libs->{$group}, [ "lib-$group", @$pmcs ] )
-          or die "partial link of $group failed ($?)\n";
-    }
-
-    # Link non-grouped PMCs individually
-    my @ungrouped_pmcs = grep { ! exists $pmc_group->{$_} } @pmcs;
-    partial_link($_, $pmc_libs->{$_}, [ $_ ] ) foreach (@ungrouped_pmcs);
-}
-elsif ($mode eq 'copy') {
-    # Copy *.so -> destination, where destination is the first
-    # argument, given as --destination=DIRECTORY
-    shift(@pmcs) =~ /--destination=(.*)/
-      or die "copy command requires destination";
-    my $dest = $1;
-
-    my ($group_files, $group_libs, $pmc_group, $pmc_libs) =
-        gather_groups_and_libs(@pmcs);
-    my @ungrouped_pmcs = grep { ! exists $pmc_group->{$_} } @pmcs;
-
-    my (@list_to_process) = (@ungrouped_pmcs, keys %$group_files);
-
-    die "nothing found to copy" unless @list_to_process;
-
-    foreach (@list_to_process) {
-        copy("$_$LOAD_EXT", $dest) or die "Copy $_$LOAD_EXT failed ($?)\n";
-
-        # Execute permissions on libraries is especially important on
-        # some platforms
-        if ($^O eq 'hpux' or $^O eq 'cygwin') {
-            chmod 0755, "$dest at slash@$_$LOAD_EXT";
-        }
-
-    }
-}
-else {
-    die "invalid command '$mode'\nmust be one of generate, compile, linklibs, or copy\n";
-}
-
-sub run {
-    print join(" ", @_), "\n";
-
-    return system(@_) == 0;
-}
-
-sub gather_groups_and_libs {
-    my @pmcs = @_;
-
-    my ( %group_files, %group_libs, %pmc_group, %pmc_libs );
-    for my $pmc (@pmcs) {
-        our $class = retrieve("$pmc.dump");
-
-        # there can be many libs
-        my %libs = %{ $class->{flags}{lib} || {} };
-        $pmc_libs{$pmc} = \%libs;
-
-        # There should be at most a single group
-        my $group = $class->{flags}{group}
-          or next;
-        $pmc_group{$pmc} = $group;
-        push @{ $group_files{$group} }, $pmc;
-        $group_libs{$group} ||= {};
-        foreach my $lib ( keys %libs ) {
-            $group_libs{$group}->{$lib} = 1;
-        }
-    }
-
-    return (\%group_files, \%group_libs, \%pmc_group, \%pmc_libs);
-}
-
-sub modtime {
-    my $ago = (-M shift);
-
-    if (defined $ago) {
-        return $NOW - $ago;
-    }
-    else {
-        return;
-    }
-}
-
-sub needs_build {
-    my ($target, @sources) = @_;
-
-    my $target_mod = modtime($target)
-      or return 1;
-    for my $source (@sources) {
-        return 1 if modtime($source) > $target_mod;
-    }
-
-    return 0;
-}
-
-sub generate_dump {
-    my ($pmc) = @_;
-
-    if (needs_build("$pmc.dump", "$pmc.pmc")) {
-        run("$PMC2C --dump $pmc.pmc")
-          or die "pmc2c dump failed ($?)\n";
-    }
-
-    return;
-}
-
-sub generate_c {
-    my ($pmc) = @_;
-
-    if (needs_build("$pmc.c", "$pmc.pmc")) {
-        run("$PMC2C --c $pmc.pmc")
-          or die "pmc2c code generation failed ($?)\n";
-    }
-
-    return;
-}
-
-sub compile {
-    my ($src_stem, $dest_stem) = @_;
-
-    $dest_stem ||= $src_stem;
-    if (needs_build("$dest_stem$O", "$src_stem.c")) {
-        run(compile_cmd("$dest_stem$O", "$src_stem.c"))
-          or die "compile $src_stem.c failed ($?)\n";
-    }
-    return 1;
-}
-
-sub partial_link {
-    my ($group, $libs, $stems) = @_;
-
-    my @sources = map { "$_$O" } @$stems;
-    if (needs_build("$group$LOAD_EXT", @sources)) {
-        return run(partial_link_cmd("$group$LOAD_EXT", $libs, \@sources))
-          or die "partial link $group$LOAD_EXT failed ($?)\n";
-    }
-    else {
-        return 1;
-    }
-}
-
-
-# Local Variables:
-#   mode: cperl
-#   cperl-indent-level: 4
-#   fill-column: 100
-# End:
-# vim: expandtab shiftwidth=4:

Modified: trunk/config/gen/makefiles/editor.in
==============================================================================
--- trunk/config/gen/makefiles/editor.in	Tue Jan 26 00:46:48 2010	(r43592)
+++ trunk/config/gen/makefiles/editor.in	Tue Jan 26 02:39:50 2010	(r43593)
@@ -1,17 +1,16 @@
 # Copyright (C) 2005-2009, Parrot Foundation.
 # $Id$
 
-OPS_DIR     := ../src/ops
-#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
-
-PERL   := @perl@
-CP     := @cp@
-MKPATH := @mkpath@
-RM_F   := @rm_f@
+#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
+
+PERL   = @perl@
+CP     = @cp@
+MKPATH = @mkpath@
+RM_F   = @rm_f@
 
 default: all
 
@@ -33,9 +32,9 @@
 	@echo "  realclean:         clean up local files including Makefile"
 	@echo ""
 
-pir.vim: pir_vim.in $(OPS_DIR)//*.ops ops2vim.pl
+pir.vim: pir_vim.in ../src/ops/*.ops ops2vim.pl
 	$(CP) pir_vim.in pir.vim
-	$(PERL) ops2vim.pl $(OPS_DIR)/*.ops >> pir.vim
+	$(PERL) ops2vim.pl ../src/ops/*.ops >> pir.vim
 
 vim-install: pir.vim
 	$(MKPATH) "$(VIM_DIR)"

Modified: trunk/config/gen/makefiles/ext.in
==============================================================================
--- trunk/config/gen/makefiles/ext.in	Tue Jan 26 00:46:48 2010	(r43592)
+++ trunk/config/gen/makefiles/ext.in	Tue Jan 26 02:39:50 2010	(r43593)
@@ -3,13 +3,13 @@
 
 # setup of commands
 @make_set_make@
-MAKE      := @make@
-PERL      := @perl@
-RM_F      := @rm_f@
+MAKE      = @make@
+PERL      = @perl@
+RM_F      = @rm_f@
 
 # add new languages here
 # remove obsolete languages here
-EXT := \
+EXT = \
     Parrot-Embed
 
 # the default target

Deleted: trunk/config/gen/makefiles/json.in
==============================================================================
--- trunk/config/gen/makefiles/json.in	Tue Jan 26 02:39:50 2010	(r43592)
+++ /dev/null	00:00:00 1970	(deleted)
@@ -1,60 +0,0 @@
-# Copyright (C) 2006-2009, Parrot Foundation.
-# $Id$
-
-PERL     := @perl@
-RM_F     := @rm_f@
-PARROT   := ../../parrot at exe@
-
-TOOL_DIR := ../..
-PGE_DIR  := ../../compilers/pge
-TGE_DIR  := ../../compilers/tge
-
-# the default target
-all: JSON.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:               JSON.pbc"
-	@echo "                     This is the default."
-	@echo "Testing:"
-	@echo "  test:              Run the test suite."
-	@echo "  testclean:         Clean up test results and temporary files."
-	@echo ""
-	@echo "Cleaning:"
-	@echo "  clean:             Basic cleaning up."
-	@echo ""
-	@echo "Misc:"
-	@echo "  help:              Print this help message."
-	@echo ""
-
-test: all
-	cd $(TOOL_DIR) && prove -r t/compilers/json
-
-testclean:
-	$(RM_F) "../../t/compilers/json/*.pir"
-
-JSON.pbc : JSON/grammar.pbc JSON/pge2pir.pbc JSON.pir
-	$(PARROT) --output=JSON.pbc JSON.pir
-
-JSON/grammar.pbc : JSON/grammar.pir
-	$(PARROT) --output=JSON/grammar.pbc JSON/grammar.pir
-
-JSON/grammar.pir : JSON/grammar.pg
-	$(PARROT) $(TOOL_DIR)/runtime/parrot/library/PGE/Perl6Grammar.pbc --output=JSON/grammar.pir JSON/grammar.pg
-
-JSON/pge2pir.pbc : JSON/pge2pir.pir
-	$(PARROT) --output=JSON/pge2pir.pbc JSON/pge2pir.pir
-
-JSON/pge2pir.pir : JSON/pge2pir.tg
-	$(PARROT) $(TGE_DIR)/tgc.pir --output=JSON/pge2pir.pir JSON/pge2pir.tg
-
-clean : testclean
-	$(RM_F) "JSON/*.pbc" "JSON/*.pir" JSON.pbc
-
-# Local variables:
-#   mode: makefile
-# End:
-# vim: ft=make:

Deleted: trunk/config/gen/makefiles/nqp-rx.in
==============================================================================
--- trunk/config/gen/makefiles/nqp-rx.in	Tue Jan 26 02:39:50 2010	(r43592)
+++ /dev/null	00:00:00 1970	(deleted)
@@ -1,63 +0,0 @@
-# Copyright (C) 2009, Parrot Foundation.
-# $Id$
-
-# Setup some commands
-PERL     := @perl@
-CP       := @cp@
-RM_F     := @rm_f@
-PARROT   := ../../parrot at exe@
-
-PARROT_LIBRARY := @build_dir@/runtime/parrot/library
-
-NQP_LIB_PBCS := Regex.pbc HLL.pbc P6Regex.pbc nqp-rx.pbc
-
-all: $(NQP_LIB_PBCS)
-	$(CP) $(NQP_LIB_PBCS) $(PARROT_LIBRARY)
-
-Regex.pbc: src/stage0/Regex-s0.pir
-	$(PARROT) $(PARROT_ARGS) -o Regex.pbc src/stage0/Regex-s0.pir
-
-HLL.pbc: src/stage0/HLL-s0.pir
-	$(PARROT) $(PARROT_ARGS) -o HLL.pbc src/stage0/HLL-s0.pir
-
-P6Regex.pbc: src/stage0/P6Regex-s0.pir
-	$(PARROT) $(PARROT_ARGS) -o P6Regex.pbc src/stage0/P6Regex-s0.pir
-
-nqp-rx.pbc: src/stage0/NQP-s0.pir
-	$(PARROT) $(PARROT_ARGS) -o nqp-rx.pbc src/stage0/NQP-s0.pir
-
-# 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:               nqp.pbc"
-	@echo "                     This is the default."
-	@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 ""
-
-# this target has nothing to do
-testclean:
-
-CLEANUPS := \
-  $(NQP_LIB_PBCS)
-
-clean:
-	$(RM_F) $(CLEANUPS)
-
-realclean: clean
-	$(RM_F) Makefile
-
-distclean: realclean
-
-# Local variables:
-#   mode: makefile
-# End:
-# vim: ft=make:

Deleted: trunk/config/gen/makefiles/nqp.in
==============================================================================
--- trunk/config/gen/makefiles/nqp.in	Tue Jan 26 02:39:50 2010	(r43592)
+++ /dev/null	00:00:00 1970	(deleted)
@@ -1,81 +0,0 @@
-# Copyright (C) 2007-2009, Parrot Foundation.
-# $Id$
-
-# Setup some commands
-PERL     := @perl@
-RM_F     := @rm_f@
-PARROT   := ../../parrot at exe@
-
-PARROT_LIBRARY := @build_dir@/runtime/parrot/library
-PGE_LIBRARY    := @build_dir@/runtime/parrot/library/PGE
-
-all: nqp.pbc
-
-SOURCES := \
-  nqp.pir \
-  src/Grammar.pg \
-  src/Grammar/Actions.pir \
-  src/builtins.pir
-
-BOOTSRC := \
-  bootstrap/nqp.pir \
-  bootstrap/actions.pm
-
-# the default target
-nqp.pbc: $(PARROT) $(PGE_LIBRARY)/Perl6Grammar.pir $(SOURCES)
-	$(PARROT) $(PARROT_ARGS) $(PGE_LIBRARY)/Perl6Grammar.pir \
-	    --output=src/Grammar_gen.pir src/Grammar.pg
-	$(PARROT) -o nqp.pbc nqp.pir
-
-boot: $(BOOTSRC)
-	$(PARROT) nqp.pbc \
-	    --output=bootstrap/gen_actions.pir \
-	    --target=pir \
-	    bootstrap/actions.pm
-	$(PARROT) --output-pbc -o bootstrap/nqp.pbc bootstrap/nqp.pir
-
-# 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:               nqp.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
-
-# this target has nothing to do
-testclean:
-
-CLEANUPS := \
-  nqp.pbc \
-  src/Grammar_gen.pir \
-  bootstrap/gen_actions.pir \
-  bootstrap/nqp.pbc
-
-
-clean:
-	$(RM_F) $(CLEANUPS)
-
-realclean: clean
-	$(RM_F) Makefile
-
-distclean: realclean
-
-# Local variables:
-#   mode: makefile
-# End:
-# vim: ft=make:

Deleted: trunk/config/gen/makefiles/pct.in
==============================================================================
--- trunk/config/gen/makefiles/pct.in	Tue Jan 26 02:39:50 2010	(r43592)
+++ /dev/null	00:00:00 1970	(deleted)
@@ -1,83 +0,0 @@
-# Copyright (C) 2006-2009, Parrot Foundation.
-# $Id$
-
-# Setup some commands
-PERL     := @perl@
-CP       := @cp@
-RM_F     := @rm_f@
-PARROT   := ../../parrot at exe@
-
-TOOL_DIR := ../..
-PGE_DIR  := ../../compilers/pge
-TEST_DIR := ../../t/compilers/pct
-
-# Where to put things
-PARROT_LIBRARY := ../../runtime/parrot/library
-
-PCT_TARGETS := \
-  $(PARROT_LIBRARY)/PCT.pbc \
-  $(PARROT_LIBRARY)/PCT/PAST.pbc \
-  $(PARROT_LIBRARY)/PCT/Grammar.pbc \
-  $(PARROT_LIBRARY)/PCT/HLLCompiler.pbc \
-  $(PARROT_LIBRARY)/PCT/Dumper.pbc
-
-PCT_SOURCES := \
-  PCT.pir \
-  src/PCT/Dumper.pir \
-  src/PCT/Grammar.pir \
-  src/PCT/HLLCompiler.pir \
-  src/PCT/Node.pir \
-  src/PAST/Compiler.pir \
-  src/PAST/Node.pir \
-  src/POST/Compiler.pir \
-  src/POST/Node.pir
-
-# the default target
-all: $(PARROT_LIBRARY)/PCT.pbc
-
-$(PARROT_LIBRARY)/PCT.pbc: $(PARROT) $(PCT_SOURCES)
-	$(PARROT) -o $(PARROT_LIBRARY)/PCT.pbc --output-pbc PCT.pir
-	$(PARROT) -o $(PARROT_LIBRARY)/PCT/PAST.pbc --output-pbc src/PAST.pir
-	$(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
-	$(PARROT) -o $(PARROT_LIBRARY)/PCT/Dumper.pbc --output-pbc src/PCT/Dumper.pir
-
-# 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:               all PCT libraries"
-	@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
-	cd $(TOOL_DIR) && prove -r t/compilers/pct
-
-testclean:
-	$(RM_F) $(TEST_DIR)/*.pir \
-	    $(TEST_DIR)/*.pbc
-
-clean: testclean
-	$(RM_F) $(PCT_TARGETS)
-
-realclean: clean
-	$(RM_F) Makefile
-
-distclean: realclean
-
-# Local variables:
-#   mode: makefile
-# End:
-# vim: ft=make:

Deleted: trunk/config/gen/makefiles/pge.in
==============================================================================
--- trunk/config/gen/makefiles/pge.in	Tue Jan 26 02:39:50 2010	(r43592)
+++ /dev/null	00:00:00 1970	(deleted)
@@ -1,84 +0,0 @@
-# Copyright (C) 2004-2009, Parrot Foundation.
-# $Id$
-
-# Setup some commands
-PERL     := @perl@
-CP       := @cp@
-RM_F     := @rm_f@
-PARROT   := ../../parrot at exe@
-
-TOOL_DIR := ../..
-
-# Where to put things
-PARROT_LIBRARY := ../../runtime/parrot/library
-
-# the default target
-all: $(PARROT_LIBRARY)/PGE.pbc
-
-SOURCES := \
-  PGE.pir \
-  PGE/Exp.pir \
-  PGE/Match.pir \
-  PGE/Regex.pir \
-  PGE/Perl6Regex.pir \
-  PGE/OPTable.pir \
-  PGE/P5Regex.pir \
-  PGE/builtins.pg
-
-$(PARROT_LIBRARY)/PGE.pbc: PGE.pbc
-	$(CP) PGE.pbc $(PARROT_LIBRARY)
-
-PGE.pbc: $(PARROT) $(SOURCES)
-	$(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
-	$(RM_F) PGE.pbc
-	$(PARROT) -o PGE.pbc --output-pbc PGE.pir
-
-# 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:               PGE.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
-	cd $(TOOL_DIR) && prove -r t/compilers/pge
-
-testclean:
-	$(RM_F) "../../t/compilers/pge/*.pir" \
-	    "../../t/compilers/pge/p5regex/*.pir" \
-	    "../../t/compilers/pge/perl6regex/*.pir" \
-	    "../../t/compilers/pge/*.pbc" \
-	    "../../t/compilers/pge/p5regex/*.pbc" \
-	    "../../t/compilers/pge/perl6regex/*.pbc"
-
-clean: testclean
-	$(RM_F) \
-	    PGE.pbc \
-	    $(PARROT_LIBRARY)/PGE.pbc \
-	    PGE/builtins_gen.pir
-
-realclean: clean
-	$(RM_F) Makefile
-
-distclean: realclean
-
-# Local variables:
-#   mode: makefile
-# End:
-# vim: ft=make:

Deleted: trunk/config/gen/makefiles/pirc.in
==============================================================================
--- trunk/config/gen/makefiles/pirc.in	Tue Jan 26 02:39:50 2010	(r43592)
+++ /dev/null	00:00:00 1970	(deleted)
@@ -1,126 +0,0 @@
-# Copyright (C) 2007-2009, Parrot Foundation.
-# $Id$
-
-.SUFFIXES : .c @o@
-
-# Setup some commands
-PERL          := @perl@
-RM_F          := @rm_f@
-CP            := @cp@
-PARROT        := ../../parrot at exe@
-BUILD_DIR     := @build_dir@
-RECONFIGURE   := $(PERL) @build_dir@/tools/dev/reconfigure.pl
-
-CC            := @cc@
-O             := @o@
-EXE           := @exe@
-CC_INC        := -I../../include -I../../include/pmc
-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          := @link@
-LINKFLAGS     := @linkflags@ @link_debug@ @ld_debug@
-LD            := @ld@
-LDFLAGS       := @ldflags@ @ld_debug@
-TOUCH		  := @touch@
-LEX			  := @lex@
-YACC	      := @yacc@
-
-SOURCES       := \
-  src/main.c \
-  src/pirparser.c \
-  src/pirlexer.c \
-  src/pircompunit.c \
-  src/pircompiler.c \
-  src/pirsymbol.c \
-  src/piremit.c \
-  src/hdocprep.c \
-  src/pirmacro.c \
-  src/pirregalloc.c \
-  src/bcgen.c \
-  src/pirerr.c \
-  src/pircapi.c \
-  src/pirop.c
-
-OBJS          := \
-  src/main$(O) \
-  src/pirparser$(O) \
-  src/pirlexer$(O) \
-  src/pircompunit$(O) \
-  src/pircompiler$(O) \
-  src/pirsymbol$(O) \
-  src/piremit$(O) \
-  src/hdocprep$(O) \
-  src/pirmacro$(O) \
-  src/pirregalloc$(O) \
-  src/bcgen$(O) \
-  src/pirpcc$(O) \
-  src/pirerr$(O) \
-  src/pircapi$(O) \
-  src/pirop$(O)
-
-.c$(O) : # suffix rule (limited support)
-	@$(PERL) ../../tools/dev/cc_flags.pl -v ../../CFLAGS $(CC) "" $(CFLAGS) -I$(@D) @cc_o_out@$@ -c $<
-
-
-# the default target
-all: pirc$(EXE)
-
-
-pirc$(EXE): $(OBJS)
-	$(LINK) @ld_out@$@ \
-	    $(OBJS) \
-	    @rpath_blib@ @libparrot_linkflags@ $(C_LIBS) $(LINKFLAGS) $(LINK_DYNAMIC)
-#IF(win32):	if exist $@.manifest mt.exe -nologo -manifest $@.manifest -outputresource:$@;1
-
-src/pir.y.flag src/pirparser.c src/pirparser.h : src/pir.y
-	cd src && $(YACC) pir.y -d -o pirparser.c
-	#$(PERL) $(BUILD_TOOLS_DIR)/fixup_gen_file.pl -noheaderizer src/pirparser.c src/pir.y
-	#$(PERL) $(BUILD_TOOLS_DIR)/fixup_gen_file.pl -noheaderizer src/pirparser.h src/pir.y
-	$(TOUCH) src/pir.y.flag src/pirparser.c src/pirparser.h
-
-src/pir.l.flag src/pirlexer.c : src/pir.l
-	cd src && $(LEX) -opirlexer.c pir.l
-	$(TOUCH) src/pir.l.flag src/pirlexer.c
-
-
-src/pirparser$(O): src/pirparser.c src/pirparser.h
-src/pirlexer$(O): src/pirlexer.c src/pirlexer.h
-src/pircompunit$(O): src/pircompunit.c src/pircompunit.h
-src/pircompiler$(O): src/pircompiler.c src/pircompiler.h
-src/pirsymbol$(O): src/pirsymbol.c src/pirsymbol.h
-src/piremit$(O): src/piremit.c src/piremit.h
-src/hdocprep$(O): src/hdocprep.c src/hdocprep.l
-src/pirmacro$(O): src/pirmacro.c src/pirmacro.h
-src/pirregalloc$(O): src/pirregalloc.c src/pirregalloc.h
-src/bcgen$(O): src/bcgen.c src/bcgen.h
-src/pirpcc$(O): src/pirpcc.c src/pirpcc.h
-src/pirerr$(O): src/pirerr.c src/pirerr.h
-src/pircapi$(O): src/pircapi.c src/pircapi.h
-src/pirop$(O): src/pirop.c src/pirop.h
-
-test: all
-	perl t/harness
-
-# regenerate the Makefile
-Makefile: $(BUILD_DIR)/config/gen/makefiles/pirc.in
-	cd $(BUILD_DIR) && $(RECONFIGURE) --step=gen::makefiles --target=compilers/pirc/Makefile
-
-
-clean:
-	$(RM_F) *$(O)
-	$(RM_F) $(OBJS)
-	$(RM_F) pirc$(EXE)
-
-realclean: clean
-	$(RM_F) \
-	    Makefile \
-	    doc/*.html
-
-distclean: realclean
-
-# Local variables:
-#   mode: makefile
-# End:
-# vim: ft=make:

Modified: trunk/config/gen/makefiles/root.in
==============================================================================
--- trunk/config/gen/makefiles/root.in	Tue Jan 26 00:46:48 2010	(r43592)
+++ trunk/config/gen/makefiles/root.in	Tue Jan 26 02:39:50 2010	(r43593)
@@ -16,23 +16,23 @@
 #
 ###############################################################################
 
-DEVEL           := @DEVEL@
-VERSION         := @VERSION@$(DEVEL)
-SOVERSION       := @VERSION@
+DEVEL           = @DEVEL@
+VERSION         = @VERSION@$(DEVEL)
+SOVERSION       = @VERSION@
 
-CONFIG_ARGS     := @configure_args@
+CONFIG_ARGS     = @configure_args@
 
 # Override at least PREFIX with the install location if you're going
 # to be using this outside of your build area.
-BUILDPREFIX     :=
-PREFIX          := @prefix@
-EXEC_PREFIX     := @exec_prefix@
-DESTDIR         :=
-BIN_DIR         := @bindir@
-LIB_DIR         := @libdir@
-INCLUDE_DIR     := @includedir@
-DATA_DIR        := @datadir@
-DOC_DIR         := @docdir@
+BUILDPREFIX     =
+PREFIX          = @prefix@
+EXEC_PREFIX     = @exec_prefix@
+DESTDIR         =
+BIN_DIR         = @bindir@
+LIB_DIR         = @libdir@
+INCLUDE_DIR     = @includedir@
+DATA_DIR        = @datadir@
+DOC_DIR         = @docdir@
 VERSION_DIR     = @versiondir@
 
 
@@ -45,40 +45,16 @@
 ###############################################################################
 
 # where we're building parrot from (needed for pbc_to_exe)
-BUILD_DIR := @build_dir@
+BUILD_DIR = @build_dir@
 
 # directory for build tools
-BUILD_TOOLS_DIR := tools/build
-
-# current directory
-CUR_DIR         := .
-
-# directory for the intermediate code compiler
-IMCC_DIR        := compilers/imcc
-
-# directory for the (experimental) PIR code compiler
-PIRC_DIR        := compilers/pirc
+BUILD_TOOLS_DIR = tools/build
 
 # directory for header files
-INC_DIR         := @inc@
-
-# directory for PMC generated header files
-PMC_INC_DIR     := @pmc_inc@
-
-# directory for the IO subsystem
-IO_DIR          := src/io
+INC_DIR         = @inc@
 
 # directory with Parrot modules
-LIBRARY_DIR     := runtime/parrot/library
-
-# directory for *.ops file
-OPS_DIR         := src/ops
-
-# directory for packfile files
-PF_DIR          := src/packfile
-
-# source directory
-SRC_DIR         := src
+LIBRARY_DIR     = runtime/parrot/library
 
 ###############################################################################
 #
@@ -90,32 +66,33 @@
 #
 ###############################################################################
 
-PERL             := @perl@
-CP               := @cp@
-CHMOD            := @chmod@
-MKPATH           := @mkpath@
-RM_F             := @rm_f@
-RM_RF            := @rm_rf@
-TOUCH            := @touch@
-AR_CR            := @ar@ @ar_flags@
-RANLIB           := @ranlib@
-YACC             := @yacc@
-LEX              := @lex@
-AS               := @as@
-CC               := @cc@
-CC_INC           := @cc_inc@
-C_LIBS           := @libs@
-CC_SHARED        := @cc_shared@
-CFLAGS           := $(CC_INC) @ccflags@ @cc_build_call_frames@ @cc_debug@ @ccwarn@ @cg_flag@ @gc_flag@ @clock_best@ $(CC_SHARED)
-LINK_DYNAMIC     := @link_dynamic@
-LINK             := @link@
-LINKFLAGS        := @linkflags@ @link_debug@ @ld_debug@
-LD               := @ld@
-LDFLAGS          := @ldflags@ @ld_debug@
-RECONFIGURE      := $(PERL) tools/dev/reconfigure.pl
-INNO_SETUP       := iscc
-TEMPDIR          := @tempdir@
-#IF(darwin):export MACOSX_DEPLOYMENT_TARGET := @osx_version@
+PERL             = @perl@
+CP               = @cp@
+CHMOD            = @chmod@
+MKPATH           = @mkpath@
+RM_F             = @rm_f@
+RM_RF            = @rm_rf@
+TOUCH            = @touch@
+AR_CR            = @ar@ @ar_flags@
+RANLIB           = @ranlib@
+YACC             = @yacc@
+LEX              = @lex@
+AS               = @as@
+CC               = @cc@
+CC_INC           = @cc_inc@
+C_LIBS           = @libs@
+CC_SHARED        = @cc_shared@
+CFLAGS           = $(CC_INC) @ccflags@ @cc_build_call_frames@ @cc_debug@ @ccwarn@ @cg_flag@ @gc_flag@ @clock_best@ $(CC_SHARED)
+LINK_DYNAMIC     = @link_dynamic@
+LINK             = @link@
+LINKFLAGS        = @linkflags@ @link_debug@ @ld_debug@
+LD               = @ld@
+LD_OUT           = @ld_out@
+LDFLAGS          = @ldflags@ @ld_debug@
+INNO_SETUP       = iscc
+TEMPDIR          = @tempdir@
+RPATH_BLIB       = @rpath_blib@
+#IF(darwin):export MACOSX_DEPLOYMENT_TARGET = @osx_version@
 
 ###############################################################################
 #
@@ -123,16 +100,26 @@
 #
 ###############################################################################
 
-O                := @o@
-EXE              := @exe@
-SHARE_EXT        := @share_ext@
-LOAD_EXT         := @load_ext@
-A                := @a@
-LD_SHARE_FLAGS   := @ld_share_flags@
-LD_LOAD_FLAGS    := @ld_load_flags@
+O                = @o@
+EXE              = @exe@
+SHARE_EXT        = @share_ext@
+LOAD_EXT         = @load_ext@
+A                = @a@
+LD_SHARE_FLAGS   = @ld_share_flags@
+LD_LOAD_FLAGS    = @ld_load_flags@
 
 # generated by config/init/headers.pm
-NONGEN_HEADERS   := @TEMP_nongen_headers@
+NONGEN_HEADERS   = @TEMP_nongen_headers@
+
+include compilers/imcc/Defines.mak
+include compilers/pirc/Defines.mak
+include compilers/tge/Defines.mak
+include compilers/nqp/Defines.mak
+include compilers/pge/Defines.mak
+include compilers/pct/Defines.mak
+include ext/nqp-rx/Defines.mak
+include compilers/data_json/Defines.mak
+include compilers/json/Defines.mak
 
 ###############################################################################
 #
@@ -146,23 +133,16 @@
 #
 ###############################################################################
 
-GEN_MAKEFILES := \
+GEN_MAKEFILES = \
     Makefile \
     docs/Makefile \
-    compilers/data_json/Makefile \
-    compilers/json/Makefile \
     compilers/ncigen/Makefile \
-    compilers/nqp/Makefile \
-    compilers/pct/Makefile \
-    compilers/pge/Makefile \
-    compilers/tge/Makefile \
     editor/Makefile \
     ext/Makefile \
-    ext/nqp-rx/Makefile \
     src/dynoplibs/Makefile \
     src/dynpmc/Makefile
 
-GEN_CONFIGS := \
+GEN_CONFIGS = \
     $(INC_DIR)/config.h \
     $(INC_DIR)/platform.h \
     $(INC_DIR)/platform_interface.h \
@@ -170,25 +150,25 @@
     $(INC_DIR)/has_header.h \
     $(INC_DIR)/feature.h \
     $(INC_DIR)/core_pmcs.h \
-    $(SRC_DIR)/exec_dep.c \
-    $(SRC_DIR)/exec_dep.h \
+    src/exec_dep.c \
+    src/exec_dep.h \
     lib/Parrot/Config/Generated.pm \
     lib/Parrot/PMC.pm \
     runtime/parrot/include/config.fpmc \
-    runtime/parrot/library/config.pir \
-    $(SRC_DIR)/platform.c \
-#IF(platform_asm):    $(SRC_DIR)/platform_asm.s \
+    $(LIBRARY_DIR)/config.pir \
+    src/platform.c \
+#IF(platform_asm):    src/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 \
-#IF(has_crypto):    $(SRC_DIR)/dynpmc/md2.pmc \
-#IF(has_crypto):    $(SRC_DIR)/dynpmc/md4.pmc \
-#IF(has_crypto):    $(SRC_DIR)/dynpmc/md5.pmc \
-#IF(has_crypto):    $(SRC_DIR)/dynpmc/ripemd160.pmc \
-#IF(has_crypto):    $(SRC_DIR)/dynpmc/sha.pmc \
-#IF(has_crypto):    $(SRC_DIR)/dynpmc/sha1.pmc \
-#IF(has_crypto):    $(SRC_DIR)/dynpmc/sha256.pmc \
-#IF(has_crypto):    $(SRC_DIR)/dynpmc/sha512.pmc \
+#IF(has_glut):    src/glut_callbacks.c \
+    src/core_pmcs.c \
+#IF(has_crypto):    src/dynpmc/md2.pmc \
+#IF(has_crypto):    src/dynpmc/md4.pmc \
+#IF(has_crypto):    src/dynpmc/md5.pmc \
+#IF(has_crypto):    src/dynpmc/ripemd160.pmc \
+#IF(has_crypto):    src/dynpmc/sha.pmc \
+#IF(has_crypto):    src/dynpmc/sha1.pmc \
+#IF(has_crypto):    src/dynpmc/sha256.pmc \
+#IF(has_crypto):    src/dynpmc/sha512.pmc \
 #IF(has_crypto):    t/dynpmc/md2.t \
 #IF(has_crypto):    t/dynpmc/md4.t \
 #IF(has_crypto):    t/dynpmc/md5.t \
@@ -198,33 +178,59 @@
 #IF(has_crypto):    t/dynpmc/sha256.t \
 #IF(has_crypto):    t/dynpmc/sha512.t \
     CFLAGS \
-    $(IMCC_DIR)/CFLAGS \
+    compilers/imcc/CFLAGS \
     config_lib.pasm \
-    $(BUILD_TOOLS_DIR)/dynpmc.pl \
-    $(BUILD_TOOLS_DIR)/dynoplibs.pl \
     parrot.pc \
-    $(IMCC_DIR)/imcc.y.flag \
-    $(OPS_DIR)/core_ops.c \
-    $(OPS_DIR)/core_ops_switch.c
-
-# most of these are generated by config/gen/parrot_include.pm
-
-GEN_PASM_INCLUDES := \
-    runtime/parrot/include/signal.pasm \
-#IF(has_opengl):    runtime/parrot/include/opengl_defines.pasm \
-#IF(has_opengl):    runtime/parrot/library/OpenGL_funcs.pir \
-    @TEMP_gen_pasm_includes@
+    compilers/imcc/imcc.y.flag \
+    compilers/imcc/imcc.l.flag \
+    src/ops/core_ops.c \
+    src/ops/core_ops_switch.c
+
+GEN_PASM_INCLUDES = \
+	runtime/parrot/include/cclass.pasm \
+	runtime/parrot/include/datatypes.pasm \
+	runtime/parrot/include/iterator.pasm \
+	runtime/parrot/include/call_bits.pasm \
+	runtime/parrot/include/io_thr_msg.pasm \
+	runtime/parrot/include/timer.pasm \
+	runtime/parrot/include/except_types.pasm \
+	runtime/parrot/include/except_severity.pasm \
+	runtime/parrot/include/hash_key_type.pasm \
+	runtime/parrot/include/interpflags.pasm \
+	runtime/parrot/include/interpdebug.pasm \
+	runtime/parrot/include/interptrace.pasm \
+	runtime/parrot/include/interpcores.pasm \
+	runtime/parrot/include/cloneflags.pasm \
+	runtime/parrot/include/iglobals.pasm \
+	runtime/parrot/include/sysinfo.pasm \
+	runtime/parrot/include/stdio.pasm \
+	runtime/parrot/include/socket.pasm \
+	runtime/parrot/include/libpaths.pasm \
+	runtime/parrot/include/longopt.pasm \
+	runtime/parrot/include/packfile_segments.pasm \
+	runtime/parrot/include/packfile_constants.pasm \
+	runtime/parrot/include/packfile_annotation_key_type.pasm \
+	runtime/parrot/include/stat.pasm \
+	runtime/parrot/include/stringinfo.pasm \
+	runtime/parrot/include/warnings.pasm \
+	runtime/parrot/include/errors.pasm \
+	runtime/parrot/include/interpinfo.pasm \
+	runtime/parrot/include/tm.pasm \
+	runtime/parrot/include/pmctypes.pasm \
+
+GEN_PM_INCLUDES = \
+	lib/Parrot/Pmc2c/PCCMETHOD_BITS.pm
 
-CONFIGURE_GENERATED_FILES := \
+CONFIGURE_GENERATED_FILES = \
     $(GEN_CONFIGS) \
     $(GEN_MAKEFILES) \
     ext/Parrot-Embed/Makefile.PL \
     myconfig  \
-    $(GEN_PASM_INCLUDES) \
-    $(SRC_DIR)/call_list.txt \
+    src/call_list.txt \
     MANIFEST.configure.generated \
     .configure_trace.sto \
-    .parrot_current_rev
+    .parrot_current_rev \
+    runtime/parrot/include/signal.pasm
 
 
 ###############################################################################
@@ -237,9 +243,9 @@
 #
 ###############################################################################
 
-GEN_OPSFILES :=
+GEN_OPSFILES =
 
-GEN_HEADERS := \
+GEN_HEADERS = \
     $(INC_DIR)/vtable.h \
     $(INC_DIR)/oplib/core_ops.h \
     $(INC_DIR)/oplib/ops.h \
@@ -247,19 +253,19 @@
     $(INC_DIR)/extend_vtable.h \
     $(INC_DIR)/pbcversion.h
 
-GEN_SOURCES := \
-    $(SRC_DIR)/core_ops.c \
-    $(SRC_DIR)/nci.c \
-    $(SRC_DIR)/core_ops_switch.c \
-    $(SRC_DIR)/parrot_config.c \
-    $(SRC_DIR)/null_config.c \
-    $(SRC_DIR)/install_config.c \
-    $(SRC_DIR)/extend_vtable.c
+GEN_SOURCES = \
+    src/core_ops.c \
+    src/nci.c \
+    src/core_ops_switch.c \
+    src/parrot_config.c \
+    src/null_config.c \
+    src/install_config.c \
+    src/extend_vtable.c
 
-GEN_MODULES := \
+GEN_MODULES = \
     lib/Parrot/OpLib/core.pm
 
-GEN_LIBRARY := \
+GEN_LIBRARY = \
     $(LIBRARY_DIR)/CGI/QueryHash.pbc \
     $(LIBRARY_DIR)/Crow.pbc \
     $(LIBRARY_DIR)/config.pbc \
@@ -275,6 +281,7 @@
     $(LIBRARY_DIR)/Getopt/Obj.pbc \
     $(LIBRARY_DIR)/Iter.pbc \
     $(LIBRARY_DIR)/JSON.pbc \
+    $(LIBRARY_DIR)/data_json.pbc \
     $(LIBRARY_DIR)/Math/Random/mt19937ar.pbc \
     $(LIBRARY_DIR)/Math/Rand.pbc \
     $(LIBRARY_DIR)/MIME/Base64.pbc \
@@ -324,13 +331,13 @@
     $(LIBRARY_DIR)/libpcre.pbc \
     $(LIBRARY_DIR)/postgres.pbc
 
-FLUID_FILES_1 := \
+FLUID_FILES_1 = \
     $(GEN_OPSFILES) \
     $(GEN_HEADERS) \
     $(GEN_SOURCES) \
     $(GEN_MODULES) \
 
-FLUID_FILES_2 := \
+FLUID_FILES_2 = \
     $(GEN_LIBRARY) \
     runtime/parrot/include/parrotlib.pbc
 
@@ -341,32 +348,8 @@
 #
 ###############################################################################
 
-# these are private to the IMCC subsystem
-IMCC_O_FILES := \
-    $(IMCC_DIR)/imcparser$(O) \
-    $(IMCC_DIR)/imclexer$(O) \
-    $(IMCC_DIR)/imc$(O) \
-    $(IMCC_DIR)/main$(O) \
-    $(IMCC_DIR)/symreg$(O) \
-    $(IMCC_DIR)/instructions$(O) \
-    $(IMCC_DIR)/cfg$(O) \
-    $(IMCC_DIR)/reg_alloc$(O) \
-    $(IMCC_DIR)/sets$(O) \
-    $(IMCC_DIR)/debug$(O) \
-    $(IMCC_DIR)/optimizer$(O) \
-    $(IMCC_DIR)/pbc$(O) \
-    $(IMCC_DIR)/parser_util$(O) \
-    $(IMCC_DIR)/pcc$(O)
-
-# these are private to the PIRC subsystem
-PIRC_O_FILES := \
-    $(PIRC_DIR)/src/bcgen$(O) \
-    $(PIRC_DIR)/src/pircapi$(O) \
-    $(PIRC_DIR)/src/pirerr$(O) \
-    $(PIRC_DIR)/src/pirop$(O)
-
 # parrot.h and all the includes it causes to be included
-PARROT_H_HEADERS := \
+PARROT_H_HEADERS = \
         $(INC_DIR)/parrot.h \
         $(INC_DIR)/config.h \
         $(INC_DIR)/settings.h \
@@ -424,114 +407,105 @@
         $(INC_DIR)/core_pmcs.h \
         $(INC_DIR)/compiler.h \
         $(INC_DIR)/cclass.h \
-        $(PMC_INC_DIR)/pmc/pmc_callcontext.h
+        include/pmc/pmc_callcontext.h
 
 # generated list of header files
-GENERAL_H_FILES   := $(NONGEN_HEADERS) $(GEN_HEADERS) @TEMP_cg_h@
+GENERAL_H_FILES   = $(NONGEN_HEADERS) $(GEN_HEADERS) @TEMP_cg_h@
 
-CHARSET_O_FILES   := @TEMP_charset_o@
-CLASS_PMC_FILES   := @TEMP_pmc_classes_pmc@
-CLASS_O_FILES     := @TEMP_pmc_classes_o@
-CLASS_STR_FILES   := @TEMP_pmc_classes_str@
-ENCODING_O_FILES  := @TEMP_encoding_o@
-
-
-IO_O_FILES := \
-    $(IO_DIR)/core$(O) \
-    $(IO_DIR)/api$(O) \
-    $(IO_DIR)/utf8$(O) \
-    $(IO_DIR)/buffer$(O) \
-    $(IO_DIR)/unix$(O) \
-    $(IO_DIR)/win32$(O) \
-    $(IO_DIR)/portable$(O) \
-    $(IO_DIR)/filehandle$(O) \
-    $(IO_DIR)/socket_api$(O) \
-    $(IO_DIR)/socket_unix$(O) \
-    $(IO_DIR)/socket_win32$(O)
+CHARSET_O_FILES   = @TEMP_charset_o@
+CLASS_PMC_FILES   = @TEMP_pmc_classes_pmc@
+CLASS_O_FILES     = @TEMP_pmc_classes_o@
+CLASS_STR_FILES   = @TEMP_pmc_classes_str@
+ENCODING_O_FILES  = @TEMP_encoding_o@
+
+IO_O_FILES = \
+    src/io/core$(O) \
+    src/io/api$(O) \
+    src/io/utf8$(O) \
+    src/io/buffer$(O) \
+    src/io/unix$(O) \
+    src/io/win32$(O) \
+    src/io/portable$(O) \
+    src/io/filehandle$(O) \
+    src/io/socket_api$(O) \
+    src/io/socket_unix$(O) \
+    src/io/socket_win32$(O)
 
-INTERP_O_FILES := \
-    $(SRC_DIR)/string/api$(O) \
+INTERP_O_FILES = \
+    src/string/api$(O) \
     \
-    $(OPS_DIR)/core_ops$(O) \
-    $(OPS_DIR)/core_ops_switch$(O) \
+    src/ops/core_ops$(O) \
+    src/ops/core_ops_switch$(O) \
     \
-#IF(i386_has_gcc_cmpxchg):    $(SRC_DIR)/atomic/gcc_x86$(O) \
-    $(SRC_DIR)/byteorder$(O) \
-    $(SRC_DIR)/string/charset$(O) \
-    $(SRC_DIR)/core_pmcs$(O) \
-    $(SRC_DIR)/datatypes$(O) \
-    $(SRC_DIR)/debug$(O) \
-    $(SRC_DIR)/dynext$(O) \
-    $(SRC_DIR)/embed$(O) \
-    $(SRC_DIR)/string/encoding$(O) \
-    $(SRC_DIR)/events$(O) \
-    $(SRC_DIR)/exceptions$(O) \
-    $(SRC_DIR)/exit$(O) \
-    $(SRC_DIR)/extend$(O) \
-    $(SRC_DIR)/extend_vtable$(O) \
-    $(SRC_DIR)/gc/alloc_memory$(O) \
-    $(SRC_DIR)/gc/api$(O) \
-    $(SRC_DIR)/gc/gc_ms$(O) \
-    $(SRC_DIR)/gc/gc_inf$(O) \
-    $(SRC_DIR)/gc/mark_sweep$(O) \
-    $(SRC_DIR)/gc/system$(O) \
-    $(SRC_DIR)/global$(O) \
-    $(SRC_DIR)/global_setup$(O) \
-    $(SRC_DIR)/hash$(O) \
-    $(SRC_DIR)/hll$(O) \
-    $(SRC_DIR)/call/pcc$(O)  \
-    $(SRC_DIR)/call/args$(O)  \
-    $(SRC_DIR)/interp/inter_cb$(O)  \
-    $(SRC_DIR)/interp/inter_create$(O)  \
-    $(SRC_DIR)/interp/inter_misc$(O)  \
-    $(SRC_DIR)/call/ops$(O)  \
-    $(SRC_DIR)/call/context$(O) \
-    $(SRC_DIR)/call/context_accessors$(O) \
-    $(SRC_DIR)/key$(O) \
-    $(SRC_DIR)/library$(O) \
-    $(SRC_DIR)/list$(O) \
-    $(SRC_DIR)/longopt$(O) \
-    $(SRC_DIR)/misc$(O) \
-    $(SRC_DIR)/multidispatch$(O) \
-    $(SRC_DIR)/frame_builder$(O) \
-    $(SRC_DIR)/nci$(O) \
-    $(SRC_DIR)/oo$(O) \
-    $(SRC_DIR)/packfile$(O) \
-    $(SRC_DIR)/packout$(O) \
-    $(SRC_DIR)/platform$(O) \
-    $(SRC_DIR)/pmc_freeze$(O) \
-    $(SRC_DIR)/pmc$(O) \
-    $(SRC_DIR)/runcore/main$(O)  \
-    $(SRC_DIR)/runcore/cores$(O) \
-    $(SRC_DIR)/runcore/profiling$(O) \
-    $(SRC_DIR)/scheduler$(O) \
-    $(SRC_DIR)/spf_render$(O) \
-    $(SRC_DIR)/spf_vtable$(O) \
-    $(SRC_DIR)/string/primitives$(O) \
-    $(SRC_DIR)/sub$(O) \
-    $(SRC_DIR)/thread$(O) \
-    $(SRC_DIR)/runcore/trace$(O) \
-    $(SRC_DIR)/tsq$(O) \
-    $(SRC_DIR)/utils$(O) \
-    $(SRC_DIR)/vtables$(O) \
-    $(SRC_DIR)/warnings$(O) \
+#IF(i386_has_gcc_cmpxchg):    src/atomic/gcc_x86$(O) \
+    src/byteorder$(O) \
+    src/string/charset$(O) \
+    src/core_pmcs$(O) \
+    src/datatypes$(O) \
+    src/debug$(O) \
+    src/dynext$(O) \
+    src/embed$(O) \
+    src/string/encoding$(O) \
+    src/events$(O) \
+    src/exceptions$(O) \
+    src/exit$(O) \
+    src/extend$(O) \
+    src/extend_vtable$(O) \
+    src/gc/alloc_memory$(O) \
+    src/gc/api$(O) \
+    src/gc/gc_ms$(O) \
+    src/gc/gc_inf$(O) \
+    src/gc/mark_sweep$(O) \
+    src/gc/system$(O) \
+    src/global$(O) \
+    src/global_setup$(O) \
+    src/hash$(O) \
+    src/hll$(O) \
+    src/call/pcc$(O)  \
+    src/call/args$(O)  \
+    src/interp/inter_cb$(O)  \
+    src/interp/inter_create$(O)  \
+    src/interp/inter_misc$(O)  \
+    src/call/ops$(O)  \
+    src/call/context$(O) \
+    src/call/context_accessors$(O) \
+    src/key$(O) \
+    src/library$(O) \
+    src/list$(O) \
+    src/longopt$(O) \
+    src/misc$(O) \
+    src/multidispatch$(O) \
+    src/frame_builder$(O) \
+    src/nci$(O) \
+    src/oo$(O) \
+    src/packfile$(O) \
+    src/packout$(O) \
+    src/platform$(O) \
+    src/pmc_freeze$(O) \
+    src/pmc$(O) \
+    src/runcore/main$(O)  \
+    src/runcore/cores$(O) \
+    src/runcore/profiling$(O) \
+    src/scheduler$(O) \
+    src/spf_render$(O) \
+    src/spf_vtable$(O) \
+    src/string/primitives$(O) \
+    src/sub$(O) \
+    src/thread$(O) \
+    src/runcore/trace$(O) \
+    src/tsq$(O) \
+    src/utils$(O) \
+    src/vtables$(O) \
+    src/warnings$(O) \
     \
-    $(PF_DIR)/pf_items$(O) \
+    src/packfile/pf_items$(O) \
     \
     @TEMP_cg_o@ \
     @TEMP_atomic_o@ \
     @TEMP_gc_o@ \
-#IF(platform_asm):    $(SRC_DIR)/platform_asm$(O) \
+#IF(platform_asm):    src/platform_asm$(O) \
 
-O_FILES := \
-    $(INTERP_O_FILES) \
-    $(CHARSET_O_FILES) \
-    $(IO_O_FILES) \
-    $(CLASS_O_FILES) \
-    $(ENCODING_O_FILES) \
-    $(IMCC_O_FILES)
-
-OPS_FILES := @ops@ $(GEN_OPSFILES)
+OPS_FILES = @ops@ $(GEN_OPSFILES)
 
 ###############################################################################
 #
@@ -540,45 +514,45 @@
 ###############################################################################
 
 # Executables
-PARROT              := $(CUR_DIR)/@test_prog@$(EXE)
-MINIPARROT          := $(CUR_DIR)/miniparrot$(EXE)
-DIS                 := $(CUR_DIR)/pbc_disassemble$(EXE)
-PDUMP               := $(CUR_DIR)/pbc_dump$(EXE)
-PBCMERGE            := $(CUR_DIR)/pbc_merge$(EXE)
-PDB                 := $(CUR_DIR)/parrot_debugger$(EXE)
-PBC_TO_EXE          := $(CUR_DIR)/pbc_to_exe$(EXE)
-PARROT_CONFIG       := $(CUR_DIR)/parrot_config$(EXE)
-PIRC                := $(CUR_DIR)/pirc$(EXE)
-NQP                 := $(CUR_DIR)/parrot-nqp$(EXE)
+PARROT              = ./@test_prog@$(EXE)
+MINIPARROT          = ./miniparrot$(EXE)
+DIS                 = ./pbc_disassemble$(EXE)
+PDUMP               = ./pbc_dump$(EXE)
+PBCMERGE            = ./pbc_merge$(EXE)
+PDB                 = ./parrot_debugger$(EXE)
+PBC_TO_EXE          = ./pbc_to_exe$(EXE)
+PARROT_CONFIG       = ./parrot_config$(EXE)
+PIRC                = ./pirc$(EXE)
+NQP_RX              = ./parrot-nqp$(EXE)
 
 # Installable executables
-INSTALLABLEPARROT   := $(CUR_DIR)/installable_parrot$(EXE)
-INSTALLABLEDIS      := $(CUR_DIR)/installable_pbc_disassemble$(EXE)
-INSTALLABLEPDUMP    := $(CUR_DIR)/installable_pbc_dump$(EXE)
-INSTALLABLEPBCMERGE := $(CUR_DIR)/installable_pbc_merge$(EXE)
-INSTALLABLEPBCTOEXE := $(CUR_DIR)/installable_pbc_to_exe$(EXE)
-INSTALLABLEPDB      := $(CUR_DIR)/installable_parrot_debugger$(EXE)
-INSTALLABLECONFIG   := $(CUR_DIR)/installable_parrot_config$(EXE)
-INSTALLABLENQP      := $(CUR_DIR)/installable_parrot-nqp$(EXE)
+INSTALLABLEPARROT   = ./installable_parrot$(EXE)
+INSTALLABLEDIS      = ./installable_pbc_disassemble$(EXE)
+INSTALLABLEPDUMP    = ./installable_pbc_dump$(EXE)
+INSTALLABLEPBCMERGE = ./installable_pbc_merge$(EXE)
+INSTALLABLEPBCTOEXE = ./installable_pbc_to_exe$(EXE)
+INSTALLABLEPDB      = ./installable_parrot_debugger$(EXE)
+INSTALLABLECONFIG   = ./installable_parrot_config$(EXE)
+INSTALLABLENQP      = ./installable_parrot-nqp$(EXE)
 
 # Libraries
-LIBPARROT_STATIC    := @blib_dir@/@libparrot_static@
+LIBPARROT_STATIC    = @blib_dir@/@libparrot_static@
 #IF(darwin):export DYLD_LIBRARY_PATH := @blib_dir@:$(DYLD_LIBRARY_PATH)
-#IF(win32):LIBPARROT_SHARED  := @libparrot_shared@
-#ELSE:LIBPARROT_SHARED  := @blib_dir@/@libparrot_shared@
+#IF(win32):LIBPARROT_SHARED  = @libparrot_shared@
+#ELSE:LIBPARROT_SHARED  = @blib_dir@/@libparrot_shared@
 
 # This line controls whether a static or shared library is built
 # by Parrot's make.  It is not useful otherwise (e.g., in
 # lib/Parrot/Config/Generated.pm or config_lib.pasm).
-LIBPARROT           := @libparrot_for_makefile_only@
+LIBPARROT           = @libparrot_for_makefile_only@
 
-#IF(has_icu):ICU_SHARED  := @icu_shared@
-ALL_PARROT_LIBS     := @libparrot_linkflags@ $(ICU_SHARED) $(C_LIBS)
+#IF(has_icu):ICU_SHARED  = @icu_shared@
+ALL_PARROT_LIBS     = @libparrot_linkflags@ $(ICU_SHARED) $(C_LIBS)
 
 # dynamic extensions
-DYNEXT_DIR          := runtime/parrot/dynext
-LIBNCI_TEST_SO      := $(DYNEXT_DIR)/libnci_test$(LOAD_EXT)
-LIBGLUTCB_SO        := $(DYNEXT_DIR)/libglutcb$(LOAD_EXT)
+DYNEXT_DIR          = runtime/parrot/dynext
+LIBNCI_TEST_SO      = $(DYNEXT_DIR)/libnci_test$(LOAD_EXT)
+LIBGLUTCB_SO        = $(DYNEXT_DIR)/libglutcb$(LOAD_EXT)
 
 ###############################################################################
 #
@@ -589,7 +563,7 @@
 # This is set to MAKE=$make if your $make command doesn't
 # do it for you.
 @make_set_make@
-MAKE := @make_c@
+MAKE = @make_c@
 
 # These need to be above lines that define suffix rules to be portable
 # (certainly FreeBSD make doesn't grok the pir.pbc rule otherwise)
@@ -602,25 +576,18 @@
 # arguments (etc) injected in the middle.
 # There is probably a better way to do this, but I can't work it out right now.
 .c$(O) : # suffix rule (limited support)
-	@$(PERL) tools/dev/cc_flags.pl $(CUR_DIR)/CFLAGS $(CC) "" $(CFLAGS) -I$(@D) @cc_o_out@$@ -c $<
+	@$(PERL) tools/dev/cc_flags.pl ./CFLAGS $(CC) "" $(CFLAGS) -I$(@D) @cc_o_out@$@ -c $<
 
 # XXX probably should detect assembler, but right now this is only used on Sparc
 
 .s$(O) : # suffix rule (limited support)
-	@$(PERL) tools/dev/cc_flags.pl $(CUR_DIR)/CFLAGS $(CC) "" $(CFLAGS) -I$(@D) @cc_o_out@$@ -c $<
+	@$(PERL) tools/dev/cc_flags.pl ./CFLAGS $(CC) "" $(CFLAGS) -I$(@D) @cc_o_out@$@ -c $<
 #UNLESS(win32).S$(O) : # suffix rule (limited support)
-#UNLESS(win32)	@$(PERL) tools/dev/cc_flags.pl $(CUR_DIR)/CFLAGS $(CC) "" $(CFLAGS) -I$(@D) @cc_o_out@$@ -c $<
-
-# XXX These obviously require parrot: had trouble adding parrot as a dependency
-# here, though. Ignored on Mac OS X, at least.
+#UNLESS(win32)	@$(PERL) tools/dev/cc_flags.pl ./CFLAGS $(CC) "" $(CFLAGS) -I$(@D) @cc_o_out@$@ -c $<
 
 .pir.pbc : # suffix rule (limited support)
 	$(PARROT) -o $@ $<
 
-.pbc$(O) : # suffix rule (limited support)
-	$(PARROT) -o $@ $<
-
-
 ###############################################################################
 #
 # USER TARGETS:
@@ -633,17 +600,22 @@
     corevm \
     docs \
 #IF(has_glut):    $(LIBGLUTCB_SO) \
-    compilers \
     $(DIS) \
     $(PARROT_CONFIG) \
     $(PBC_TO_EXE) \
     $(PBCMERGE) \
     $(PDB) \
     $(PDUMP) \
-    $(NQP)
+    $(NQP_RX) \
+    $(TGE_LIB_PBCS) \
+    $(PGE_LIB_PBCS) \
+    $(PCT_LIB_PBCS) \
+    $(JSON_LIB_PBCS) \
+    $(NQP_LIB_PBCS)
 
 corevm : \
     flags_dummy \
+	$(GEN_PM_INCLUDES) \
     PARROT_LIBS \
     $(PARROT) \
     runtime/parrot/include/parrotlib.pbc \
@@ -651,55 +623,57 @@
     $(LIBNCI_TEST_SO) \
     $(GEN_LIBRARY) \
     dynpmc \
-    dynoplibs \
+    dynoplibs
 
-$(GEN_LIBRARY) : $(PARROT)
+$(GEN_LIBRARY) : $(PARROT) $(GEN_PASM_INCLUDES)
 
 # constant string support
 .c.str : # suffix rule (limited support)
 	$(PERL) $(BUILD_TOOLS_DIR)/c2str.pl $< > $@
 
-STR_FILES := \
-    $(SRC_DIR)/debug.str \
-    $(SRC_DIR)/dynext.str \
-    $(SRC_DIR)/events.str \
-    $(SRC_DIR)/exceptions.str \
-    $(SRC_DIR)/global.str \
-    $(SRC_DIR)/global_setup.str \
-    $(SRC_DIR)/hll.str \
-    $(SRC_DIR)/call/pcc.str \
-    $(SRC_DIR)/call/args.str \
-    $(SRC_DIR)/interp/inter_cb.str \
-    $(SRC_DIR)/interp/inter_create.str \
-    $(SRC_DIR)/interp/inter_misc.str \
-    $(SRC_DIR)/io/api.str \
-    $(SRC_DIR)/key.str \
-    $(SRC_DIR)/library.str \
-    $(SRC_DIR)/multidispatch.str \
-    $(SRC_DIR)/frame_builder.str \
-    $(SRC_DIR)/nci.str \
-    $(SRC_DIR)/packfile.str \
-    $(SRC_DIR)/pmc.str \
-    $(SRC_DIR)/pmc_freeze.str \
-    $(SRC_DIR)/oo.str \
-    $(SRC_DIR)/runcore/cores.str \
-    $(SRC_DIR)/runcore/main.str \
-    $(SRC_DIR)/runcore/profiling.str \
-    $(SRC_DIR)/scheduler.str \
-    $(SRC_DIR)/spf_render.str \
-    $(SRC_DIR)/spf_vtable.str \
-    $(SRC_DIR)/string/api.str \
-    $(SRC_DIR)/sub.str \
+STR_FILES = \
+    src/debug.str \
+    src/dynext.str \
+    src/events.str \
+    src/exceptions.str \
+    src/global.str \
+    src/global_setup.str \
+    src/hll.str \
+    src/call/pcc.str \
+    src/call/args.str \
+    src/interp/inter_cb.str \
+    src/interp/inter_create.str \
+    src/interp/inter_misc.str \
+    src/io/api.str \
+    src/key.str \
+    src/library.str \
+    src/multidispatch.str \
+    src/frame_builder.str \
+    src/nci.str \
+    src/packfile.str \
+    src/pmc.str \
+    src/pmc_freeze.str \
+    src/oo.str \
+    src/runcore/cores.str \
+    src/runcore/main.str \
+    src/runcore/profiling.str \
+    src/scheduler.str \
+    src/spf_render.str \
+    src/spf_vtable.str \
+    src/string/api.str \
+    src/sub.str \
     \
     $(CLASS_STR_FILES)
 
-$(SRC_DIR)/string/private_cstring.h : $(STR_FILES) $(BUILD_TOOLS_DIR)/c2str.pl
+src/string/private_cstring.h : $(STR_FILES) $(BUILD_TOOLS_DIR)/c2str.pl
 	$(PERL) $(BUILD_TOOLS_DIR)/c2str.pl --all
 
+H2INC = $(BUILD_TOOLS_DIR)/h2inc.pl
+
 # classes PMC build utils and rules
-PMC2CD := $(PERL) $(BUILD_TOOLS_DIR)/pmc2c.pl --dump @no_lines_flag@
-PMC2CC := $(PERL) $(BUILD_TOOLS_DIR)/pmc2c.pl --c @no_lines_flag@
-PMC2CV := $(PERL) $(BUILD_TOOLS_DIR)/pmc2c.pl --vtable @no_lines_flag@
+PMC2CD = $(PERL) $(BUILD_TOOLS_DIR)/pmc2c.pl --dump @no_lines_flag@
+PMC2CC = $(PERL) $(BUILD_TOOLS_DIR)/pmc2c.pl --c @no_lines_flag@
+PMC2CV = $(PERL) $(BUILD_TOOLS_DIR)/pmc2c.pl --vtable @no_lines_flag@
 
 .pmc.dump : # suffix rule (limited support)
 	$(PMC2CD) $<
@@ -707,10 +681,6 @@
 .pmc.c : # suffix rule (limited support)
 	$(PMC2CC) $<
 
-# not all makes might understand this, so the rules are generated
-#src/pmc/pmc_%.h : src/pmc/%.c
-#	$(PMC2CC) $<
-
 vtable.dump : src/vtable.tbl
 	$(PMC2CV)
 
@@ -799,13 +769,10 @@
 	@echo "  dynoplibs-test:    Proxy for target 'test' of src/dynoplibs/Makefile"
 	@echo "  dynoplibs-clean:   Proxy for target 'clean' of src/dynoplibs/Makefile"
 	@echo ""
-	@echo "Language implementations:"
-	@echo "  compilers:         Proxy for default target of pge and tge compilers"
-	@echo ""
 	@echo "Fetch from source repository:"
 	@echo "  update:            svn update."
 	@echo "  status:            svn status."
-	@echo "  patch:             Create a patch for sending to bugs-parrot."
+	@echo "  patch:             Create a patch to attach to https:////trac.parrot.org/"
 	@echo ""
 	@echo "Development:"
 	@echo "  lint:              An alias for sunlint."
@@ -838,19 +805,19 @@
 
 flags_dummy :
 	@echo "Compiling with:"
-	@$(PERL) tools/dev/cc_flags.pl $(CUR_DIR)/CFLAGS echo $(CC) $(CFLAGS) -I$(@D) @cc_o_out@ xx$(O) -c xx.c
+	@$(PERL) tools/dev/cc_flags.pl ./CFLAGS echo $(CC) $(CFLAGS) -I$(@D) @cc_o_out@ xx$(O) -c xx.c
 
-runtime/parrot/include/parrotlib.pbc: runtime/parrot/library/parrotlib.pir $(PARROT)
+runtime/parrot/include/parrotlib.pbc: runtime/parrot/library/parrotlib.pir $(PARROT) $(GEN_PASM_INCLUDES)
 	$(PARROT) -o $@ runtime/parrot/library/parrotlib.pir
 
 runtime/parrot/include/config.fpmc : myconfig config_lib.pasm $(MINIPARROT)
 	$(MINIPARROT) config_lib.pasm > $@
 
-$(PARROT) : $(SRC_DIR)/main$(O) $(GEN_HEADERS) $(LIBPARROT) CFLAGS \
-    lib/Parrot/OpLib/core.pm $(SRC_DIR)/parrot_config$(O) \
+$(PARROT) : src/main$(O) $(GEN_HEADERS) $(LIBPARROT) CFLAGS \
+    lib/Parrot/OpLib/core.pm src/parrot_config$(O) \
     $(MINIPARROT)
 	$(LINK) @ld_out@$@ \
-	$(SRC_DIR)/main$(O) $(SRC_DIR)/parrot_config$(O) \
+	src/main$(O) src/parrot_config$(O) \
 	@rpath_blib@ $(ALL_PARROT_LIBS) $(LINKFLAGS) $(LINK_DYNAMIC)
 #IF(win32):	if exist $@.manifest mt.exe -nologo -manifest $@.manifest -outputresource:$@;1
 
@@ -862,76 +829,73 @@
 	$(PARROT) -o parrot_config.pbc tools/util/parrot-config.pir
 	$(PARROT) pbc_to_exe.pbc parrot_config.pbc
 
-#IF(win32):pirc : $(PIRC)
-
-$(PIRC) : $(PARROT)
-	$(MAKE) compilers/pirc
-	$(CP) compilers/pirc/pirc$(EXE) $(PIRC)
-	$(CHMOD) 0755 $(PIRC)
-
-$(NQP) : $(PBC_TO_EXE) compilers.dummy
-	$(CP) runtime/parrot/library/nqp-rx.pbc parrot-nqp.pbc
-	$(PBC_TO_EXE) parrot-nqp.pbc
-
-$(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) \
+$(MINIPARROT) : src/main$(O) $(GEN_HEADERS) $(LIBPARROT) \
+    lib/Parrot/OpLib/core.pm src/null_config$(O)
+	$(LINK) @ld_out@$@ src/main$(O) src/null_config$(O) \
 	@rpath_blib@ $(ALL_PARROT_LIBS) $(LINKFLAGS)
 #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) \
+$(INSTALLABLEPARROT) : src/main$(O) $(GEN_HEADERS) $(LIBPARROT) \
+    lib/Parrot/OpLib/core.pm src/install_config$(O) \
     $(PARROT)
 	$(LINK) @ld_out@$@ \
-    $(SRC_DIR)/main$(O) $(SRC_DIR)/install_config$(O) \
+    src/main$(O) src/install_config$(O) \
     @rpath_lib@ $(ALL_PARROT_LIBS) $(LINKFLAGS)
 #IF(win32):	if exist $@.manifest mt.exe -nologo -manifest $@.manifest -outputresource:$@;1
 
-$(INC_DIR)/context.h : $(PMC_INC_DIR)/pmc/pmc_callcontext.h
+$(INC_DIR)/context.h : include/pmc/pmc_callcontext.h
 
 $(INC_DIR)/pbcversion.h :
 	$(PERL) $(BUILD_TOOLS_DIR)/pbcversion_h.pl > $(INC_DIR)/pbcversion.h
 
-$(SRC_DIR)/parrot_config.c :  runtime/parrot/include/config.fpmc \
+src/parrot_config.c :  runtime/parrot/include/config.fpmc \
     $(BUILD_TOOLS_DIR)/parrot_config_c.pl
 	$(PERL) $(BUILD_TOOLS_DIR)/parrot_config_c.pl > \
-    $(SRC_DIR)/parrot_config.c
+    src/parrot_config.c
 
-$(SRC_DIR)/install_config.c :  install_config.fpmc \
+src/install_config.c :  install_config.fpmc \
     $(BUILD_TOOLS_DIR)/parrot_config_c.pl
 	$(PERL) $(BUILD_TOOLS_DIR)/parrot_config_c.pl --install > \
-    $(SRC_DIR)/install_config.c
+    src/install_config.c
 
-$(SRC_DIR)/null_config.c : myconfig $(BUILD_TOOLS_DIR)/parrot_config_c.pl
+src/null_config.c : myconfig $(BUILD_TOOLS_DIR)/parrot_config_c.pl
 	$(PERL) $(BUILD_TOOLS_DIR)/parrot_config_c.pl --mini > \
-    $(SRC_DIR)/null_config.c
+    src/null_config.c
 
 install_config.fpmc : myconfig config_lib.pasm $(PARROT)
 	@echo "Invoking Parrot to generate install_config.fpmc"
 	$(PARROT) config_lib.pasm --install > $@
 
-$(SRC_DIR)/parrot_config$(O) : $(PARROT_H_HEADERS)
+src/parrot_config$(O) : $(PARROT_H_HEADERS)
 
-$(SRC_DIR)/install_config$(O) : $(PARROT_H_HEADERS)
+src/install_config$(O) : $(PARROT_H_HEADERS)
 
-$(SRC_DIR)/null_config$(O) : $(PARROT_H_HEADERS)
+src/null_config$(O) : $(PARROT_H_HEADERS)
 
-$(SRC_DIR)/oo$(O) : $(PARROT_H_HEADERS) $(PMC_INC_DIR)/pmc/pmc_class.h $(PMC_INC_DIR)/pmc/pmc_object.h $(SRC_DIR)/oo.str $(INC_DIR)/oo_private.h
+src/oo$(O) : $(PARROT_H_HEADERS) include/pmc/pmc_class.h include/pmc/pmc_object.h src/oo.str $(INC_DIR)/oo_private.h
 
-$(SRC_DIR)/scheduler$(O) : $(PARROT_H_HEADERS) $(SRC_DIR)/scheduler.str \
-        $(PMC_INC_DIR)/pmc/pmc_scheduler.h $(PMC_INC_DIR)/pmc/pmc_task.h \
-        $(PMC_INC_DIR)/pmc/pmc_timer.h \
+src/scheduler$(O) : $(PARROT_H_HEADERS) src/scheduler.str \
+        include/pmc/pmc_scheduler.h include/pmc/pmc_task.h \
+        include/pmc/pmc_timer.h \
         $(INC_DIR)/scheduler_private.h
 
-$(IO_DIR)/core$(O) : $(PARROT_H_HEADERS) $(IO_DIR)/io_private.h
+src/io/core$(O) : $(PARROT_H_HEADERS) src/io/io_private.h
 
-$(IO_DIR)/socket_api$(O) : $(PARROT_H_HEADERS) $(IO_DIR)/io_private.h $(IO_DIR)/api.str $(PMC_INC_DIR)/pmc/pmc_socket.h
+src/io/socket_api$(O) : $(PARROT_H_HEADERS) src/io/io_private.h src/io/api.str include/pmc/pmc_socket.h
 
-$(IO_DIR)/socket_unix$(O) : $(PARROT_H_HEADERS) $(PMC_INC_DIR)/pmc/pmc_socket.h $(IO_DIR)/io_private.h
+src/io/socket_unix$(O) : $(PARROT_H_HEADERS) include/pmc/pmc_socket.h src/io/io_private.h
 
-$(IO_DIR)/socket_win32$(O) : $(PARROT_H_HEADERS) \
-        $(IO_DIR)/io_private.h \
-        $(PMC_INC_DIR)/pmc/pmc_socket.h
+src/io/socket_win32$(O) : $(PARROT_H_HEADERS) \
+        src/io/io_private.h \
+        include/pmc/pmc_socket.h
+
+O_FILES = \
+    $(INTERP_O_FILES) \
+    $(CHARSET_O_FILES) \
+    $(IO_O_FILES) \
+    $(CLASS_O_FILES) \
+    $(ENCODING_O_FILES) \
+    $(IMCC_O_FILES)
 
 lib_deps_object : $(O_FILES)
 	$(PERL) tools/dev/lib_deps.pl object $(O_FILES)
@@ -966,22 +930,18 @@
 #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)
+$(INSTALLABLECONFIG) : src/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
 
-$(INSTALLABLEPBCTOEXE) : $(PBC_TO_EXE) $(SRC_DIR)/install_config$(O)
+$(INSTALLABLEPBCTOEXE) : $(PBC_TO_EXE) src/install_config$(O)
 	$(PBC_TO_EXE) pbc_to_exe.pbc --install
 
-$(INSTALLABLENQP) : runtime/parrot/library/nqp-rx.pbc $(SRC_DIR)/install_config$(O) $(PBC_TO_EXE)
-	$(CP) runtime/parrot/library/nqp-rx.pbc parrot-nqp.pbc
-	$(PBC_TO_EXE) parrot-nqp.pbc --install
-
 #
 # Parrot Debugger
 #
 
-$(SRC_DIR)/parrot_debugger$(O) : $(INC_DIR)/embed.h \
+src/parrot_debugger$(O) : $(INC_DIR)/embed.h \
         $(INC_DIR)/runcore_api.h \
         compilers/imcc/imc.h $(PARROT_H_HEADERS) compilers/imcc/parser.h \
         compilers/imcc/cfg.h \
@@ -993,17 +953,17 @@
         compilers/imcc/unit.h \
         $(INC_DIR)/oplib/ops.h
 
-$(PDB) : $(SRC_DIR)/parrot_debugger$(O) $(SRC_DIR)/parrot_config$(O) $(LIBPARROT)
+$(PDB) : src/parrot_debugger$(O) src/parrot_config$(O) $(LIBPARROT)
 	$(LINK) @ld_out@$@ \
-    $(SRC_DIR)/parrot_debugger$(O) \
-    $(SRC_DIR)/parrot_config$(O) \
+    src/parrot_debugger$(O) \
+    src/parrot_config$(O) \
     @rpath_blib@ $(ALL_PARROT_LIBS) $(LINKFLAGS)
 #IF(win32):	if exist $@.manifest mt.exe -nologo -manifest $@.manifest -outputresource:$@;1
 
-$(INSTALLABLEPDB) : $(SRC_DIR)/parrot_debugger$(O) $(LIBPARROT) $(SRC_DIR)/parrot_config$(O)
+$(INSTALLABLEPDB) : src/parrot_debugger$(O) $(LIBPARROT) src/parrot_config$(O)
 	$(LINK) @ld_out@$@ \
-    $(SRC_DIR)/parrot_debugger$(O) \
-    $(SRC_DIR)/parrot_config$(O) \
+    src/parrot_debugger$(O) \
+    src/parrot_config$(O) \
     @rpath_lib@ $(ALL_PARROT_LIBS) $(LINKFLAGS)
 #IF(win32):	if exist $@.manifest mt.exe -nologo -manifest $@.manifest -outputresource:$@;1
 
@@ -1011,40 +971,40 @@
 # Parrot Disassembler
 #
 
-$(SRC_DIR)/pbc_disassemble$(O) : $(INC_DIR)/embed.h $(PARROT_H_HEADERS)
+src/pbc_disassemble$(O) : $(INC_DIR)/embed.h $(PARROT_H_HEADERS)
 
-$(DIS) : $(SRC_DIR)/pbc_disassemble$(O) $(LIBPARROT)
+$(DIS) : src/pbc_disassemble$(O) $(LIBPARROT)
 	$(LINK) @ld_out@$@ \
-    $(SRC_DIR)/pbc_disassemble$(O) \
+    src/pbc_disassemble$(O) \
     @rpath_blib@ $(ALL_PARROT_LIBS) $(LINKFLAGS)
 #IF(win32):	if exist $@.manifest mt.exe -nologo -manifest $@.manifest -outputresource:$@;1
 
-$(INSTALLABLEDIS) : $(SRC_DIR)/pbc_disassemble$(O) \
-	$(SRC_DIR)/install_config$(O) $(LIBPARROT)
+$(INSTALLABLEDIS) : src/pbc_disassemble$(O) \
+	src/install_config$(O) $(LIBPARROT)
 	$(LINK) @ld_out@$@ \
-    $(SRC_DIR)/pbc_disassemble$(O) \
+    src/pbc_disassemble$(O) \
     @rpath_lib@ $(ALL_PARROT_LIBS) $(LINKFLAGS)
 #IF(win32):	if exist $@.manifest mt.exe -nologo -manifest $@.manifest -outputresource:$@;1
 
 #
 # Parrot Dump
 #
-$(SRC_DIR)/packdump$(O) : $(PARROT_H_HEADERS) $(PMC_INC_DIR)/pmc/pmc_sub.h $(PMC_INC_DIR)/pmc/pmc_key.h
+src/packdump$(O) : $(PARROT_H_HEADERS) include/pmc/pmc_sub.h include/pmc/pmc_key.h
 
-$(PDUMP) : $(SRC_DIR)/pbc_dump$(O) $(SRC_DIR)/packdump$(O) $(LIBPARROT)
+$(PDUMP) : src/pbc_dump$(O) src/packdump$(O) $(LIBPARROT)
 	$(LINK) @ld_out@$@ \
-    $(SRC_DIR)/pbc_dump$(O) \
-    $(SRC_DIR)/packdump$(O) @rpath_blib@ $(ALL_PARROT_LIBS) $(LINKFLAGS)
+    src/pbc_dump$(O) \
+    src/packdump$(O) @rpath_blib@ $(ALL_PARROT_LIBS) $(LINKFLAGS)
 #IF(win32):	if exist $@.manifest mt.exe -nologo -manifest $@.manifest -outputresource:$@;1
 
-$(SRC_DIR)/pbc_dump$(O) : $(INC_DIR)/embed.h  $(INC_DIR)/oplib/ops.h \
+src/pbc_dump$(O) : $(INC_DIR)/embed.h  $(INC_DIR)/oplib/ops.h \
         $(PARROT_H_HEADERS)
 
-$(INSTALLABLEPDUMP) : $(SRC_DIR)/pbc_dump$(O) $(SRC_DIR)/packdump$(O) \
-	$(SRC_DIR)/install_config$(O) $(LIBPARROT)
+$(INSTALLABLEPDUMP) : src/pbc_dump$(O) src/packdump$(O) \
+	src/install_config$(O) $(LIBPARROT)
 	$(LINK) @ld_out@$@ \
-    $(SRC_DIR)/pbc_dump$(O) \
-    $(SRC_DIR)/packdump$(O) \
+    src/pbc_dump$(O) \
+    src/packdump$(O) \
     @rpath_lib@ $(ALL_PARROT_LIBS) $(LINKFLAGS)
 #IF(win32):	if exist $@.manifest mt.exe -nologo -manifest $@.manifest -outputresource:$@;1
 
@@ -1054,17 +1014,17 @@
 # Parrot Bytecode File Merger
 #
 
-$(PBCMERGE) : $(SRC_DIR)/pbc_merge$(O) $(LIBPARROT) $(SRC_DIR)/parrot_config$(O)
+$(PBCMERGE) : src/pbc_merge$(O) $(LIBPARROT) src/parrot_config$(O)
 	$(LINK) @ld_out@$@ \
-    $(SRC_DIR)/pbc_merge$(O) \
-    $(SRC_DIR)/parrot_config$(O) \
+    src/pbc_merge$(O) \
+    src/parrot_config$(O) \
     @rpath_blib@ $(ALL_PARROT_LIBS) $(LINK_DYNAMIC) $(LINKFLAGS)
 #IF(win32):	if exist $@.manifest mt.exe -nologo -manifest $@.manifest -outputresource:$@;1
 
-$(INSTALLABLEPBCMERGE) : $(SRC_DIR)/pbc_merge$(O) $(LIBPARROT) $(INSTALLABLECONFIG)
+$(INSTALLABLEPBCMERGE) : src/pbc_merge$(O) $(LIBPARROT) $(INSTALLABLECONFIG)
 	$(LINK) @ld_out@$@ \
-    $(SRC_DIR)/pbc_merge$(O) \
-    $(SRC_DIR)/install_config$(O) \
+    src/pbc_merge$(O) \
+    src/install_config$(O) \
     @rpath_lib@ $(ALL_PARROT_LIBS) $(LINKFLAGS)
 #IF(win32):	if exist $@.manifest mt.exe -nologo -manifest $@.manifest -outputresource:$@;1
 
@@ -1075,8 +1035,90 @@
 #
 ###############################################################################
 
+
+runtime/parrot/include/interpflags.pasm : $(INC_DIR)/interpreter.h $(H2INC)
+	$(PERL) $(H2INC) $(INC_DIR)/interpreter.h $@
+runtime/parrot/include/interpdebug.pasm : $(INC_DIR)/interpreter.h $(H2INC)
+	$(PERL) $(H2INC) $(INC_DIR)/interpreter.h $@
+runtime/parrot/include/interptrace.pasm : $(INC_DIR)/interpreter.h $(H2INC)
+	$(PERL) $(H2INC) $(INC_DIR)/interpreter.h $@
+runtime/parrot/include/interpcores.pasm : $(INC_DIR)/interpreter.h $(H2INC)
+	$(PERL) $(H2INC) $(INC_DIR)/interpreter.h $@
+runtime/parrot/include/cloneflags.pasm  : $(INC_DIR)/interpreter.h $(H2INC)
+	$(PERL) $(H2INC) $(INC_DIR)/interpreter.h $@
+runtime/parrot/include/iglobals.pasm    : $(INC_DIR)/interpreter.h $(H2INC)
+	$(PERL) $(H2INC) $(INC_DIR)/interpreter.h $@
+runtime/parrot/include/sysinfo.pasm     : $(INC_DIR)/interpreter.h $(H2INC)
+	$(PERL) $(H2INC) $(INC_DIR)/interpreter.h $@
+
+runtime/parrot/include/interpinfo.pasm : $(INC_DIR)/gc_api.h $(H2INC)
+	$(PERL) $(H2INC) $(INC_DIR)/gc_api.h $@
+
+runtime/parrot/include/timer.pasm : $(INC_DIR)/scheduler.h $(H2INC)
+	$(PERL) $(H2INC) $(INC_DIR)/scheduler.h $@
+
+runtime/parrot/include/pmctypes.pasm : $(INC_DIR)/core_pmcs.h $(H2INC)
+	$(PERL) $(H2INC) $(INC_DIR)/core_pmcs.h $@
+
+runtime/parrot/include/stdio.pasm  : $(INC_DIR)/io.h $(H2INC)
+	$(PERL) $(H2INC) $(INC_DIR)/io.h $@
+runtime/parrot/include/socket.pasm : $(INC_DIR)/io.h $(H2INC)
+	$(PERL) $(H2INC) $(INC_DIR)/io.h $@
+
+runtime/parrot/include/io_thr_msg.pasm : $(INC_DIR)/events.h $(H2INC)
+	$(PERL) $(H2INC) $(INC_DIR)/events.h $@
+
+runtime/parrot/include/hash_key_type.pasm : $(INC_DIR)/hash.h $(H2INC)
+	$(PERL) $(H2INC) $(INC_DIR)/hash.h $@
+
+runtime/parrot/include/iterator.pasm : $(INC_DIR)/enums.h $(H2INC)
+	$(PERL) $(H2INC) $(INC_DIR)/enums.h $@
+runtime/parrot/include/call_bits.pasm : $(INC_DIR)/enums.h $(H2INC)
+	$(PERL) $(H2INC) $(INC_DIR)/enums.h $@
+lib/Parrot/Pmc2c/PCCMETHOD_BITS.pm : $(INC_DIR)/enums.h $(H2INC)
+	$(PERL) $(H2INC) $(INC_DIR)/enums.h $@
+
+runtime/parrot/include/libpaths.pasm : $(INC_DIR)/library.h $(H2INC)
+	$(PERL) $(H2INC) $(INC_DIR)/library.h $@
+
+runtime/parrot/include/datatypes.pasm : $(INC_DIR)/datatypes.h $(H2INC)
+	$(PERL) $(H2INC) $(INC_DIR)/datatypes.h $@
+
+runtime/parrot/include/stat.pasm : $(INC_DIR)/stat.h $(H2INC)
+	$(PERL) $(H2INC) $(INC_DIR)/stat.h $@
+
+runtime/parrot/include/stringinfo.pasm : $(INC_DIR)/string.h $(H2INC)
+	$(PERL) $(H2INC) $(INC_DIR)/string.h $@
+
+runtime/parrot/include/longopt.pasm : $(INC_DIR)/longopt.h $(H2INC)
+	$(PERL) $(H2INC) $(INC_DIR)/longopt.h $@
+
+runtime/parrot/include/cclass.pasm : $(INC_DIR)/cclass.h $(H2INC)
+	$(PERL) $(H2INC) $(INC_DIR)/cclass.h $@
+
+runtime/parrot/include/packfile_segments.pasm : $(INC_DIR)/packfile.h $(H2INC)
+	$(PERL) $(H2INC) $(INC_DIR)/packfile.h $@
+runtime/parrot/include/packfile_constants.pasm : $(INC_DIR)/packfile.h $(H2INC)
+	$(PERL) $(H2INC) $(INC_DIR)/packfile.h $@
+runtime/parrot/include/packfile_annotation_key_type.pasm : $(INC_DIR)/packfile.h $(H2INC)
+	$(PERL) $(H2INC) $(INC_DIR)/packfile.h $@
+
+runtime/parrot/include/except_types.pasm : $(INC_DIR)/exceptions.h $(H2INC)
+	$(PERL) $(H2INC) $(INC_DIR)/exceptions.h $@
+runtime/parrot/include/except_severity.pasm : $(INC_DIR)/exceptions.h $(H2INC)
+	$(PERL) $(H2INC) $(INC_DIR)/exceptions.h $@
+
+runtime/parrot/include/warnings.pasm : $(INC_DIR)/warnings.h $(H2INC)
+	$(PERL) $(H2INC) $(INC_DIR)/warnings.h $@
+runtime/parrot/include/errors.pasm : $(INC_DIR)/warnings.h $(H2INC)
+	$(PERL) $(H2INC) $(INC_DIR)/warnings.h $@
+
+runtime/parrot/include/tm.pasm : src/utils.c $(H2INC)
+	$(PERL) $(H2INC) src/utils.c $@
+
+
 $(INC_DIR)/oplib/ops.h lib/Parrot/OpLib/core.pm : $(OPS_FILES) $(BUILD_TOOLS_DIR)/ops2pm.pl \
-    lib/Parrot/OpsFile.pm lib/Parrot/Op.pm $(OPS_DIR)/ops.num $(OPS_DIR)/ops.skip
+    lib/Parrot/OpsFile.pm lib/Parrot/Op.pm src/ops/ops.num src/ops/ops.skip
 	$(PERL) $(BUILD_TOOLS_DIR)/ops2pm.pl @no_lines_flag@ $(OPS_FILES)
 
 ###############################################################################
@@ -1095,7 +1137,7 @@
 
 # hello
 hello: test_prep examples/pasm/hello$(EXE)
-	$(CUR_DIR)/examples/pasm/hello$(EXE) "from your friendly makefile"
+	./examples/pasm/hello$(EXE) "from your friendly makefile"
 
 examples/pasm/hello.pbc: examples/pasm/hello.pasm
 	$(PARROT) -o examples/pasm/hello.pbc examples/pasm/hello.pasm
@@ -1114,131 +1156,131 @@
 #
 ###############################################################################
 
-$(SRC_DIR)/byteorder$(O) : $(PARROT_H_HEADERS)
+src/byteorder$(O) : $(PARROT_H_HEADERS)
 
-$(SRC_DIR)/datatypes$(O) : $(PARROT_H_HEADERS)
+src/datatypes$(O) : $(PARROT_H_HEADERS)
 
-$(SRC_DIR)/extend_vtable$(O) : $(PARROT_H_HEADERS) \
+src/extend_vtable$(O) : $(PARROT_H_HEADERS) \
         $(INC_DIR)/extend.h $(INC_DIR)/extend_vtable.h
 
-$(SRC_DIR)/global_setup$(O) : $(PARROT_H_HEADERS) $(SRC_DIR)/global_setup.str
+src/global_setup$(O) : $(PARROT_H_HEADERS) src/global_setup.str
 
-$(SRC_DIR)/global$(O) : $(PARROT_H_HEADERS) $(SRC_DIR)/global.str \
-	$(PMC_INC_DIR)/pmc/pmc_sub.h
+src/global$(O) : $(PARROT_H_HEADERS) src/global.str \
+	include/pmc/pmc_sub.h
 
-$(SRC_DIR)/pmc$(O) : $(PMC_INC_DIR)/pmc/pmc_class.h \
-	$(SRC_DIR)/pmc.str $(PARROT_H_HEADERS)
+src/pmc$(O) : include/pmc/pmc_class.h \
+	src/pmc.str $(PARROT_H_HEADERS)
 
-$(SRC_DIR)/pmc_freeze$(O) : $(PARROT_H_HEADERS) $(SRC_DIR)/pmc_freeze.str
+src/pmc_freeze$(O) : $(PARROT_H_HEADERS) src/pmc_freeze.str
 
-$(SRC_DIR)/hash$(O) : $(PARROT_H_HEADERS) $(PMC_INC_DIR)/pmc/pmc_key.h
+src/hash$(O) : $(PARROT_H_HEADERS) include/pmc/pmc_key.h
 
-$(SRC_DIR)/list$(O) : $(PARROT_H_HEADERS)
+src/list$(O) : $(PARROT_H_HEADERS)
 
-$(SRC_DIR)/library$(O) : $(PARROT_H_HEADERS) $(SRC_DIR)/library.str \
+src/library$(O) : $(PARROT_H_HEADERS) src/library.str \
         $(INC_DIR)/dynext.h
 
-$(INC_DIR)/extend_vtable.h $(SRC_DIR)/extend_vtable.c $(SRC_DIR)/vtable.h : src/vtable.tbl $(BUILD_TOOLS_DIR)/vtable_extend.pl lib/Parrot/Vtable.pm
+$(INC_DIR)/extend_vtable.h src/extend_vtable.c src/vtable.h : src/vtable.tbl $(BUILD_TOOLS_DIR)/vtable_extend.pl lib/Parrot/Vtable.pm
 	$(PERL) $(BUILD_TOOLS_DIR)/vtable_extend.pl
 
-$(SRC_DIR)/key$(O) : $(PARROT_H_HEADERS) $(SRC_DIR)/key.str \
-        $(PMC_INC_DIR)/pmc/pmc_key.h
+src/key$(O) : $(PARROT_H_HEADERS) src/key.str \
+        include/pmc/pmc_key.h
 
-$(SRC_DIR)/gc/mark_sweep$(O) : $(PARROT_H_HEADERS) $(SRC_DIR)/gc/gc_private.h
+src/gc/mark_sweep$(O) : $(PARROT_H_HEADERS) src/gc/gc_private.h
 
-$(SRC_DIR)/gc/gc_ms$(O) : $(PARROT_H_HEADERS) $(SRC_DIR)/gc/gc_private.h
+src/gc/gc_ms$(O) : $(PARROT_H_HEADERS) src/gc/gc_private.h
 
-$(SRC_DIR)/gc/gc_inf$(O) : $(PARROT_H_HEADERS) $(SRC_DIR)/gc/gc_private.h
+src/gc/gc_inf$(O) : $(PARROT_H_HEADERS) src/gc/gc_private.h
 
-$(SRC_DIR)/gc/api$(O) : $(PARROT_H_HEADERS) $(SRC_DIR)/gc/gc_private.h
+src/gc/api$(O) : $(PARROT_H_HEADERS) src/gc/gc_private.h
 
-$(SRC_DIR)/gc/alloc_resources$(O) : $(PARROT_H_HEADERS) \
-        $(SRC_DIR)/gc/gc_private.h
+src/gc/alloc_resources$(O) : $(PARROT_H_HEADERS) \
+        src/gc/gc_private.h
 
-$(SRC_DIR)/hll$(O) : $(PARROT_H_HEADERS) $(SRC_DIR)/hll.str $(INC_DIR)/dynext.h
+src/hll$(O) : $(PARROT_H_HEADERS) src/hll.str $(INC_DIR)/dynext.h
 
-$(SRC_DIR)/platform$(O) : $(PARROT_H_HEADERS)
+src/platform$(O) : $(PARROT_H_HEADERS)
 
-#IF(platform_asm):$(SRC_DIR)/platform_asm$(O) : $(PARROT_H_HEADERS)
+#IF(platform_asm):src/platform_asm$(O) : $(PARROT_H_HEADERS)
 #IF(platform_asm):
-$(SRC_DIR)/core_pmcs$(O) : $(PARROT_H_HEADERS)
+src/core_pmcs$(O) : $(PARROT_H_HEADERS)
 
-$(SRC_DIR)/runcore/trace$(O) : $(PMC_INC_DIR)/pmc/pmc_sub.h \
+src/runcore/trace$(O) : include/pmc/pmc_sub.h \
         $(INC_DIR)/oplib/ops.h $(INC_DIR)/runcore_trace.h \
         $(PARROT_H_HEADERS)
 
-$(SRC_DIR)/debug$(O) : $(INC_DIR)/embed.h $(INC_DIR)/extend.h \
+src/debug$(O) : $(INC_DIR)/embed.h $(INC_DIR)/extend.h \
         $(PARROT_H_HEADERS) \
         $(INC_DIR)/oplib/ops.h \
         $(INC_DIR)/runcore_api.h $(INC_DIR)/runcore_trace.h \
-        $(SRC_DIR)/debug.str $(PMC_INC_DIR)/pmc/pmc_key.h \
-        $(PMC_INC_DIR)/pmc/pmc_continuation.h \
+        src/debug.str include/pmc/pmc_key.h \
+        include/pmc/pmc_continuation.h \
         $(INC_DIR)/extend_vtable.h
 
-$(SRC_DIR)/sub$(O) : $(PARROT_H_HEADERS) $(INC_DIR)/oplib/ops.h \
-        $(SRC_DIR)/sub.str \
-	$(PMC_INC_DIR)/pmc/pmc_sub.h $(PMC_INC_DIR)/pmc/pmc_continuation.h
+src/sub$(O) : $(PARROT_H_HEADERS) $(INC_DIR)/oplib/ops.h \
+        src/sub.str \
+	include/pmc/pmc_sub.h include/pmc/pmc_continuation.h
 
-$(SRC_DIR)/string/api$(O) : $(PARROT_H_HEADERS) $(SRC_DIR)/string/api.str \
-        $(SRC_DIR)/string/private_cstring.h
+src/string/api$(O) : $(PARROT_H_HEADERS) src/string/api.str \
+        src/string/private_cstring.h
 
-$(SRC_DIR)/string/primitives$(O) : $(PARROT_H_HEADERS)
+src/string/primitives$(O) : $(PARROT_H_HEADERS)
 
-$(SRC_DIR)/longopt$(O) : $(PARROT_H_HEADERS)
+src/longopt$(O) : $(PARROT_H_HEADERS)
 
-$(SRC_DIR)/dynext$(O) : $(PARROT_H_HEADERS) $(INC_DIR)/dynext.h \
-        $(SRC_DIR)/dynext.str $(PMC_INC_DIR)/pmc/pmc_parrotlibrary.h
+src/dynext$(O) : $(PARROT_H_HEADERS) $(INC_DIR)/dynext.h \
+        src/dynext.str include/pmc/pmc_parrotlibrary.h
 
-$(SRC_DIR)/exceptions$(O) : $(PARROT_H_HEADERS) \
-        $(SRC_DIR)/exceptions.str \
-	$(PMC_INC_DIR)/pmc/pmc_continuation.h
+src/exceptions$(O) : $(PARROT_H_HEADERS) \
+        src/exceptions.str \
+	include/pmc/pmc_continuation.h
 
-$(SRC_DIR)/events$(O) : $(PARROT_H_HEADERS) $(SRC_DIR)/events.str
+src/events$(O) : $(PARROT_H_HEADERS) src/events.str
 
-$(SRC_DIR)/thread$(O) : $(PARROT_H_HEADERS) $(INC_DIR)/atomic.h \
-        $(PMC_INC_DIR)/pmc/pmc_sub.h \
-	$(PMC_INC_DIR)/pmc/pmc_parrotinterpreter.h
+src/thread$(O) : $(PARROT_H_HEADERS) $(INC_DIR)/atomic.h \
+        include/pmc/pmc_sub.h \
+	include/pmc/pmc_parrotinterpreter.h
 
-$(SRC_DIR)/extend$(O) : $(PARROT_H_HEADERS) $(INC_DIR)/extend.h \
-	$(PMC_INC_DIR)/pmc/pmc_sub.h $(INC_DIR)/extend_vtable.h
+src/extend$(O) : $(PARROT_H_HEADERS) $(INC_DIR)/extend.h \
+	include/pmc/pmc_sub.h $(INC_DIR)/extend_vtable.h
 
-$(SRC_DIR)/runcore/main$(O) : \
-	$(SRC_DIR)/runcore/main.str \
-	$(PMC_INC_DIR)/pmc/pmc_parrotlibrary.h \
+src/runcore/main$(O) : \
+	src/runcore/main.str \
+	include/pmc/pmc_parrotlibrary.h \
         $(INC_DIR)/dynext.h $(INC_DIR)/oplib/core_ops.h \
         $(INC_DIR)/oplib/core_ops_switch.h $(INC_DIR)/oplib/ops.h \
         $(PARROT_H_HEADERS) $(INC_DIR)/runcore_api.h \
         $(INC_DIR)/runcore_profiling.h
 
-$(SRC_DIR)/runcore/profiling$(O) : $(SRC_DIR)/runcore/profiling.str \
-	$(PMC_INC_DIR)/pmc/pmc_sub.h \
-	$(PMC_INC_DIR)/pmc/pmc_namespace.h \
+src/runcore/profiling$(O) : src/runcore/profiling.str \
+	include/pmc/pmc_sub.h \
+	include/pmc/pmc_namespace.h \
         $(INC_DIR)/oplib/core_ops.h $(INC_DIR)/runcore_api.h \
         $(INC_DIR)/runcore_profiling.h $(INC_DIR)/embed.h \
         $(PARROT_H_HEADERS)
 
-$(SRC_DIR)/call/args$(O) : \
+src/call/args$(O) : \
         $(PARROT_H_HEADERS) $(INC_DIR)/oplib/ops.h \
-	$(SRC_DIR)/call/args.str \
-	$(PMC_INC_DIR)/pmc/pmc_key.h \
-	$(PMC_INC_DIR)/pmc/pmc_fixedintegerarray.h
+	src/call/args.str \
+	include/pmc/pmc_key.h \
+	include/pmc/pmc_fixedintegerarray.h
 
-$(SRC_DIR)/call/context_accessors$(O): $(PARROT_H_HEADERS)
+src/call/context_accessors$(O): $(PARROT_H_HEADERS)
 
-$(SRC_DIR)/call/pcc$(O) : $(INC_DIR)/oplib/ops.h \
+src/call/pcc$(O) : $(INC_DIR)/oplib/ops.h \
         $(PARROT_H_HEADERS) \
         $(INC_DIR)/runcore_api.h \
-	$(SRC_DIR)/call/pcc.str \
-	$(PMC_INC_DIR)/pmc/pmc_key.h $(PMC_INC_DIR)/pmc/pmc_continuation.h
+	src/call/pcc.str \
+	include/pmc/pmc_key.h include/pmc/pmc_continuation.h
 
-$(SRC_DIR)/call/context$(O) : $(PARROT_H_HEADERS) \
-	$(PMC_INC_DIR)/pmc/pmc_sub.h
+src/call/context$(O) : $(PARROT_H_HEADERS) \
+	include/pmc/pmc_sub.h
 
-$(SRC_DIR)/interp/inter_cb$(O) : $(PARROT_H_HEADERS) \
-	$(SRC_DIR)/interp/inter_cb.str
+src/interp/inter_cb$(O) : $(PARROT_H_HEADERS) \
+	src/interp/inter_cb.str
 
-$(SRC_DIR)/interp/inter_misc$(O) : $(PARROT_H_HEADERS) \
-        $(SRC_DIR)/interp/inter_misc.str \
+src/interp/inter_misc$(O) : $(PARROT_H_HEADERS) \
+        src/interp/inter_misc.str \
 	compilers/imcc/imc.h \
 	compilers/imcc/cfg.h \
 	compilers/imcc/debug.h \
@@ -1249,9 +1291,9 @@
         $(INC_DIR)/oplib/ops.h \
         $(INC_DIR)/runcore_api.h
 
-$(SRC_DIR)/interp/inter_create$(O) : $(PARROT_H_HEADERS) \
+src/interp/inter_create$(O) : $(PARROT_H_HEADERS) \
 	$(INC_DIR)/oplib/core_ops.h \
-        $(SRC_DIR)/interp/inter_create.str \
+        src/interp/inter_create.str \
 	compilers/imcc/imc.h \
 	compilers/imcc/cfg.h \
 	compilers/imcc/debug.h \
@@ -1262,35 +1304,35 @@
         $(INC_DIR)/oplib/ops.h \
         $(INC_DIR)/runcore_api.h
 
-$(SRC_DIR)/call/ops$(O) : $(INC_DIR)/oplib/ops.h \
-	$(PARROT_H_HEADERS) $(PMC_INC_DIR)/pmc/pmc_continuation.h
+src/call/ops$(O) : $(INC_DIR)/oplib/ops.h \
+	$(PARROT_H_HEADERS) include/pmc/pmc_continuation.h
 
-$(IO_DIR)/api$(O) : $(PARROT_H_HEADERS) $(IO_DIR)/io_private.h \
-        $(IO_DIR)/api.str $(PMC_INC_DIR)/pmc/pmc_filehandle.h \
-        $(PMC_INC_DIR)/pmc/pmc_stringhandle.h
+src/io/api$(O) : $(PARROT_H_HEADERS) src/io/io_private.h \
+        src/io/api.str include/pmc/pmc_filehandle.h \
+        include/pmc/pmc_stringhandle.h
 
-$(IO_DIR)/buffer$(O) : $(PARROT_H_HEADERS) $(IO_DIR)/io_private.h
+src/io/buffer$(O) : $(PARROT_H_HEADERS) src/io/io_private.h
 
-$(IO_DIR)/portable$(O) : $(PARROT_H_HEADERS) $(IO_DIR)/io_private.h
+src/io/portable$(O) : $(PARROT_H_HEADERS) src/io/io_private.h
 
-$(IO_DIR)/unix$(O) : $(PARROT_H_HEADERS) $(IO_DIR)/io_private.h $(PMC_INC_DIR)/pmc/pmc_filehandle.h
+src/io/unix$(O) : $(PARROT_H_HEADERS) src/io/io_private.h include/pmc/pmc_filehandle.h
 
-$(IO_DIR)/utf8$(O) : $(PARROT_H_HEADERS) $(IO_DIR)/io_private.h $(SRC_DIR)/string/unicode.h
+src/io/utf8$(O) : $(PARROT_H_HEADERS) src/io/io_private.h src/string/unicode.h
 
-$(IO_DIR)/win32$(O) : $(PARROT_H_HEADERS) $(IO_DIR)/io_private.h $(PMC_INC_DIR)/pmc/pmc_filehandle.h
+src/io/win32$(O) : $(PARROT_H_HEADERS) src/io/io_private.h include/pmc/pmc_filehandle.h
 
-$(SRC_DIR)/gc/alloc_memory$(O) : $(PARROT_H_HEADERS)
+src/gc/alloc_memory$(O) : $(PARROT_H_HEADERS)
 
-$(SRC_DIR)/main$(O) : $(INC_DIR)/imcc.h $(PARROT_H_HEADERS) \
+src/main$(O) : $(INC_DIR)/imcc.h $(PARROT_H_HEADERS) \
         $(INC_DIR)/embed.h
 
-$(SRC_DIR)/multidispatch$(O) : \
-        $(SRC_DIR)/multidispatch.str \
+src/multidispatch$(O) : \
+        src/multidispatch.str \
         $(INC_DIR)/oplib/ops.h $(PARROT_H_HEADERS) \
-	$(PMC_INC_DIR)/pmc/pmc_nci.h $(PMC_INC_DIR)/pmc/pmc_sub.h
+	include/pmc/pmc_nci.h include/pmc/pmc_sub.h
 
-$(SRC_DIR)/packfile$(O) : $(SRC_DIR)/packfile.str \
-	$(PMC_INC_DIR)/pmc/pmc_sub.h $(PMC_INC_DIR)/pmc/pmc_key.h \
+src/packfile$(O) : src/packfile.str \
+	include/pmc/pmc_sub.h include/pmc/pmc_key.h \
         compilers/imcc/imc.h \
 	compilers/imcc/cfg.h \
 	compilers/imcc/debug.h \
@@ -1302,22 +1344,22 @@
         $(INC_DIR)/embed.h $(INC_DIR)/extend.h $(INC_DIR)/extend_vtable.h \
         $(PARROT_H_HEADERS) $(INC_DIR)/runcore_api.h
 
-$(PF_DIR)/pf_items$(O) : $(PARROT_H_HEADERS)
+src/packfile/pf_items$(O) : $(PARROT_H_HEADERS)
 
-$(SRC_DIR)/packout$(O) : $(PARROT_H_HEADERS) $(PMC_INC_DIR)/pmc/pmc_key.h
+src/packout$(O) : $(PARROT_H_HEADERS) include/pmc/pmc_key.h
 
-$(SRC_DIR)/parrot$(O) : $(GENERAL_H_FILES)
+src/parrot$(O) : $(GENERAL_H_FILES)
 
-$(SRC_DIR)/runcore/cores$(O) : $(SRC_DIR)/runcore/cores.str \
-	$(PMC_INC_DIR)/pmc/pmc_sub.h \
+src/runcore/cores$(O) : src/runcore/cores.str \
+	include/pmc/pmc_sub.h \
         $(INC_DIR)/dynext.h $(INC_DIR)/embed.h $(INC_DIR)/oplib/core_ops.h \
         $(INC_DIR)/oplib/core_ops_switch.h $(INC_DIR)/oplib/ops.h \
         $(INC_DIR)/runcore_api.h $(INC_DIR)/runcore_trace.h \
         $(PARROT_H_HEADERS)
 
-$(SRC_DIR)/tsq$(O) : $(PARROT_H_HEADERS)
+src/tsq$(O) : $(PARROT_H_HEADERS)
 
-$(SRC_DIR)/embed$(O) : $(PARROT_H_HEADERS) $(INC_DIR)/embed.h \
+src/embed$(O) : $(PARROT_H_HEADERS) $(INC_DIR)/embed.h \
         $(INC_DIR)/oplib/ops.h $(INC_DIR)/runcore_api.h \
         compilers/imcc/imc.h \
         compilers/imcc/cfg.h \
@@ -1326,370 +1368,66 @@
         compilers/imcc/sets.h \
         compilers/imcc/symreg.h \
         compilers/imcc/unit.h \
-	$(PMC_INC_DIR)/pmc/pmc_sub.h
+	include/pmc/pmc_sub.h
 
-$(SRC_DIR)/dataypes$(O) : $(GENERAL_H_FILES) $(SRC_DIR)/dataypes.c
+src/dataypes$(O) : $(GENERAL_H_FILES) src/dataypes.c
 
-$(SRC_DIR)/exit$(O) : $(PARROT_H_HEADERS)
+src/exit$(O) : $(PARROT_H_HEADERS)
 
-$(SRC_DIR)/nci$(O) : $(SRC_DIR)/nci.str \
+src/nci$(O) : src/nci.str \
         $(INC_DIR)/oplib/ops.h $(PARROT_H_HEADERS) \
-        $(SRC_DIR)/frame_builder.h \
-        $(PMC_INC_DIR)/pmc/pmc_managedstruct.h \
-        $(PMC_INC_DIR)/pmc/pmc_nci.h \
-        $(PMC_INC_DIR)/pmc/pmc_pointer.h
-
-$(SRC_DIR)/frame_builder$(O) : $(PARROT_H_HEADERS) $(SRC_DIR)/frame_builder.h \
-        $(PMC_INC_DIR)/pmc/pmc_fixedintegerarray.h \
-        $(PMC_INC_DIR)/pmc/pmc_unmanagedstruct.h \
-        $(PMC_INC_DIR)/pmc/pmc_managedstruct.h \
+        src/frame_builder.h \
+        include/pmc/pmc_managedstruct.h \
+        include/pmc/pmc_nci.h \
+        include/pmc/pmc_pointer.h
+
+src/frame_builder$(O) : $(PARROT_H_HEADERS) src/frame_builder.h \
+        include/pmc/pmc_fixedintegerarray.h \
+        include/pmc/pmc_unmanagedstruct.h \
+        include/pmc/pmc_managedstruct.h \
         $(INC_DIR)/oplib/ops.h
 
-$(SRC_DIR)/vtables$(O) : $(PARROT_H_HEADERS)
+src/vtables$(O) : $(PARROT_H_HEADERS)
 
-$(SRC_DIR)/gc/system$(O) : $(PARROT_H_HEADERS)  $(SRC_DIR)/gc/gc_private.h
-$(SRC_DIR)/gc/gc_private.h : $(INC_DIR)/settings.h
+src/gc/system$(O) : $(PARROT_H_HEADERS)  src/gc/gc_private.h
+src/gc/gc_private.h : $(INC_DIR)/settings.h
 
-$(SRC_DIR)/nci.c : $(SRC_DIR)/call_list.txt $(BUILD_TOOLS_DIR)/nativecall.pl \
-	$(PMC_INC_DIR)/pmc/pmc_nci.h
-	$(PERL) $(BUILD_TOOLS_DIR)/nativecall.pl $(SRC_DIR)/call_list.txt
-
-$(SRC_DIR)/warnings$(O) : $(PARROT_H_HEADERS)
-
-$(SRC_DIR)/misc$(O) : $(PARROT_H_HEADERS)
-
-$(SRC_DIR)/utils$(O) : $(PARROT_H_HEADERS) $(PMC_INC_DIR)/pmc/pmc_nci.h
-
-$(SRC_DIR)/spf_render$(O) : $(PARROT_H_HEADERS) $(SRC_DIR)/spf_render.str
-
-$(SRC_DIR)/spf_vtable$(O) : $(PARROT_H_HEADERS) $(SRC_DIR)/spf_vtable.str
-
-$(SRC_DIR)/string/encoding$(O) : $(PARROT_H_HEADERS)
-
-$(SRC_DIR)/string/charset$(O) : $(PARROT_H_HEADERS) \
-        $(SRC_DIR)/string/encoding/fixed_8.h \
-        $(SRC_DIR)/string/encoding/utf8.h \
-        $(SRC_DIR)/string/encoding/utf16.h \
-        $(SRC_DIR)/string/encoding/ucs2.h \
-        $(SRC_DIR)/string/charset/ascii.h \
-        $(SRC_DIR)/string/charset/binary.h \
-        $(SRC_DIR)/string/charset/iso-8859-1.h \
-        $(SRC_DIR)/string/charset/unicode.h
-
-$(SRC_DIR)/pbc_merge$(O) : $(INC_DIR)/embed.h \
-	$(PMC_INC_DIR)/pmc/pmc_sub.h $(INC_DIR)/oplib/ops.h $(PARROT_H_HEADERS)
-
-$(IO_DIR)/filehandle$(O) : $(PARROT_H_HEADERS) $(PMC_INC_DIR)/pmc/pmc_filehandle.h $(SRC_DIR)/io/io_private.h
-
-compilers/pirc/src/piremit$(O) : $(PARROT_H_HEADERS) \
-        compilers/pirc/src/piremit.h \
-        compilers/pirc/src/pircompunit.h \
-        compilers/pirc/src/pircompiler.h \
-        compilers/pirc/src/pirerr.h \
-        compilers/pirc/src/bcgen.h \
-        compilers/pirc/src/pirdefines.h \
-        compilers/pirc/src/pirmacro.h \
-        compilers/pirc/src/pirregalloc.h \
-        compilers/pirc/src/pirsymbol.h \
-        compilers/pirc/src/piryy.h \
-        $(INC_DIR)/embed.h \
-        $(INC_DIR)/oplib/ops.h
+src/nci.c : src/call_list.txt $(BUILD_TOOLS_DIR)/nativecall.pl \
+	include/pmc/pmc_nci.h
+	$(PERL) $(BUILD_TOOLS_DIR)/nativecall.pl src/call_list.txt
 
-compilers/imcc/pcc$(O) : compilers/imcc/imc.h $(PARROT_H_HEADERS) compilers/imcc/parser.h \
-  compilers/imcc/cfg.h compilers/imcc/debug.h compilers/imcc/instructions.h \
-  compilers/imcc/sets.h compilers/imcc/symreg.h compilers/imcc/unit.h \
-  $(INC_DIR)/oplib/ops.h compilers/imcc/imcparser.h
-
-compilers/imcc/instructions$(O) : compilers/imcc/imc.h $(PARROT_H_HEADERS) compilers/imcc/pbc.h \
-  compilers/imcc/optimizer.h \
-  compilers/imcc/cfg.h compilers/imcc/debug.h compilers/imcc/instructions.h \
-  compilers/imcc/sets.h compilers/imcc/symreg.h compilers/imcc/unit.h \
-  $(INC_DIR)/oplib/ops.h
+src/warnings$(O) : $(PARROT_H_HEADERS)
 
-src/dynpmc/subproxy$(O) : $(PARROT_H_HEADERS) $(INC_DIR)/extend.h \
-  $(INC_DIR)/dynext.h $(PMC_INC_DIR)/pmc/pmc_subproxy.h \
-  $(PMC_INC_DIR)/pmc/pmc_sub.h $(PMC_INC_DIR)/pmc_default.h \
-  $(PMC_INC_DIR)/pmc/pmc_continuation.h $(PMC_INC_DIR)/pmc/pmc_callcontext.h \
-  $(PMC_INC_DIR)/pmc/pmc_default.h
-
-compilers/pirc/src/pirparser$(O) : $(PARROT_H_HEADERS) \
-        compilers/pirc/src/pircompiler.h \
-        compilers/pirc/src/pircompunit.h \
-        compilers/pirc/src/pirdefines.h \
-        compilers/pirc/src/pirparser.h \
-        compilers/pirc/src/piryy.h \
-        compilers/pirc/src/pirlexer.h \
-        compilers/pirc/src/pirerr.h \
-        compilers/pirc/src/pirop.h \
-        compilers/pirc/src/pirpcc.h \
-        compilers/pirc/src/pirmacro.h \
-        compilers/pirc/src/pirregalloc.h \
-        compilers/pirc/src/pirsymbol.h \
-        compilers/pirc/src/bcgen.h \
-        $(INC_DIR)/oplib/ops.h \
-        $(INC_DIR)/embed.h
+src/misc$(O) : $(PARROT_H_HEADERS)
 
-compilers/pirc/src/pirerr$(O) : $(PARROT_H_HEADERS) \
-        compilers/pirc/src/pircompiler.h \
-        compilers/pirc/src/pircompunit.h \
-        compilers/pirc/src/pirdefines.h \
-        compilers/pirc/src/pirparser.h \
-        compilers/pirc/src/piryy.h \
-        compilers/pirc/src/pirlexer.h \
-        compilers/pirc/src/pirerr.h \
-        compilers/pirc/src/pirmacro.h \
-        compilers/pirc/src/pirregalloc.h \
-        compilers/pirc/src/pirsymbol.h \
-        compilers/pirc/src/bcgen.h \
-        $(INC_DIR)/embed.h
+src/utils$(O) : $(PARROT_H_HEADERS) include/pmc/pmc_nci.h
 
-compilers/imcc/parser.h : compilers/imcc/imcparser.h
+src/spf_render$(O) : $(PARROT_H_HEADERS) src/spf_render.str
 
-compilers/imcc/pbc$(O) : $(PARROT_H_HEADERS) \
-  compilers/imcc/imc.h \
-  compilers/imcc/pbc.h \
-  $(PMC_INC_DIR)/pmc/pmc_sub.h \
-  compilers/imcc/cfg.h compilers/imcc/debug.h compilers/imcc/instructions.h \
-  compilers/imcc/sets.h compilers/imcc/symreg.h compilers/imcc/unit.h \
-  $(INC_DIR)/oplib/ops.h
-
-compilers/imcc/parser_util$(O) : compilers/imcc/imc.h $(PARROT_H_HEADERS) \
-        compilers/imcc/pbc.h \
-        compilers/imcc/parser.h \
-        compilers/imcc/optimizer.h \
-        $(INC_DIR)/dynext.h $(INC_DIR)/embed.h \
-        $(PMC_INC_DIR)/pmc/pmc_sub.h \
-  compilers/imcc/cfg.h compilers/imcc/debug.h compilers/imcc/instructions.h \
-  compilers/imcc/sets.h compilers/imcc/symreg.h compilers/imcc/unit.h \
-  $(INC_DIR)/oplib/ops.h compilers/imcc/imcparser.h
-
-compilers/pirc/src/bcgen$(O) :  \
-  compilers/pirc/src/pirsymbol.h \
-  compilers/pirc/src/pircompiler.h \
-  compilers/pirc/src/pirregalloc.h \
-  compilers/pirc/src/pircompunit.h \
-  compilers/pirc/src/pirdefines.h \
-  compilers/pirc/src/pirmacro.h \
-  compilers/pirc/src/bcgen.h \
-  $(PARROT_H_HEADERS) \
-  $(INC_DIR)/embed.h \
-  $(PMC_INC_DIR)/pmc/pmc_sub.h \
-  $(PMC_INC_DIR)/pmc/pmc_namespace.h
-
-compilers/imcc/imc$(O) :  \
-  compilers/imcc/imc.h $(PARROT_H_HEADERS) \
-  compilers/imcc/optimizer.h \
-  compilers/imcc/cfg.h compilers/imcc/debug.h compilers/imcc/instructions.h \
-  compilers/imcc/sets.h compilers/imcc/symreg.h compilers/imcc/unit.h \
-  $(INC_DIR)/oplib/ops.h
-
-compilers/pirc/src/pirregalloc$(O) : $(PARROT_H_HEADERS) \
-        compilers/pirc/src/pircompiler.h \
-        compilers/pirc/src/pircompunit.h \
-        compilers/pirc/src/pirdefines.h \
-        compilers/pirc/src/pirmacro.h \
-        compilers/pirc/src/pirregalloc.h \
-        compilers/pirc/src/pirsymbol.h \
-        compilers/pirc/src/bcgen.h \
-        $(INC_DIR)/embed.h
-
-compilers/imcc/cfg$(O) : \
-  compilers/imcc/imc.h $(PARROT_H_HEADERS) compilers/imcc/optimizer.h \
-  compilers/imcc/cfg.h compilers/imcc/debug.h compilers/imcc/instructions.h \
-  compilers/imcc/sets.h compilers/imcc/symreg.h compilers/imcc/unit.h \
-  $(INC_DIR)/oplib/ops.h
-
-compilers/imcc/debug$(O) : \
-  compilers/imcc/imc.h $(PARROT_H_HEADERS) \
-  compilers/imcc/cfg.h compilers/imcc/debug.h compilers/imcc/instructions.h  \
-  compilers/imcc/sets.h compilers/imcc/symreg.h compilers/imcc/unit.h \
-  $(INC_DIR)/oplib/ops.h
-
-compilers/imcc/imclexer$(O) : \
-  compilers/imcc/imc.h $(PARROT_H_HEADERS) compilers/imcc/parser.h \
-  compilers/imcc/cfg.h compilers/imcc/debug.h compilers/imcc/instructions.h \
-  compilers/imcc/sets.h compilers/imcc/symreg.h compilers/imcc/unit.h \
-  $(INC_DIR)/oplib/ops.h compilers/imcc/imcparser.h
-
-compilers/imcc/imcparser$(O) : \
-  compilers/imcc/imc.h $(PARROT_H_HEADERS) compilers/imcc/parser.h compilers/imcc/pbc.h \
-  compilers/imcc/optimizer.h \
-  $(INC_DIR)/dynext.h \
-  compilers/imcc/cfg.h compilers/imcc/debug.h compilers/imcc/imcparser.h \
-  compilers/imcc/instructions.h \
-  compilers/imcc/sets.h compilers/imcc/symreg.h compilers/imcc/unit.h \
-  $(INC_DIR)/oplib/ops.h
-
-compilers/imcc/main$(O) : \
-  compilers/imcc/imc.h $(PARROT_H_HEADERS) \
-  compilers/imcc/parser.h compilers/imcc/pbc.h \
-  $(INC_DIR)/embed.h  \
-  $(INC_DIR)/imcc.h $(INC_DIR)/runcore_api.h \
-  compilers/imcc/cfg.h compilers/imcc/debug.h compilers/imcc/instructions.h \
-  compilers/imcc/sets.h compilers/imcc/symreg.h compilers/imcc/unit.h \
-  $(INC_DIR)/oplib/ops.h compilers/imcc/imcparser.h
-
-compilers/imcc/optimizer$(O) : \
-  compilers/imcc/imc.h $(PARROT_H_HEADERS) \
-  compilers/imcc/pbc.h compilers/imcc/optimizer.h \
-  compilers/imcc/cfg.h compilers/imcc/debug.h compilers/imcc/instructions.h \
-  compilers/imcc/sets.h compilers/imcc/symreg.h compilers/imcc/unit.h \
-  $(INC_DIR)/oplib/ops.h
-
-compilers/imcc/reg_alloc$(O) : compilers/imcc/imc.h $(PARROT_H_HEADERS) compilers/imcc/optimizer.h \
-  compilers/imcc/cfg.h compilers/imcc/debug.h compilers/imcc/instructions.h \
-  compilers/imcc/sets.h compilers/imcc/symreg.h compilers/imcc/unit.h \
-  $(INC_DIR)/oplib/ops.h
-
-compilers/imcc/sets$(O) : compilers/imcc/imc.h $(PARROT_H_HEADERS) compilers/imcc/sets.h \
-  compilers/imcc/cfg.h compilers/imcc/debug.h compilers/imcc/instructions.h \
-  compilers/imcc/symreg.h compilers/imcc/unit.h \
-  $(INC_DIR)/oplib/ops.h
-
-compilers/imcc/symreg$(O) : compilers/imcc/imc.h $(PARROT_H_HEADERS) \
-  compilers/imcc/sets.h \
-  compilers/imcc/cfg.h compilers/imcc/debug.h compilers/imcc/instructions.h \
-  compilers/imcc/symreg.h compilers/imcc/unit.h \
-  $(INC_DIR)/oplib/ops.h
-compilers/pirc/heredoc/heredocmain$(O) : $(PARROT_H_HEADERS)
-
-compilers/pirc/macro/macrolexer$(O) : $(PARROT_H_HEADERS) \
-        compilers/pirc/macro/macro.h  \
-        compilers/pirc/macro/lexer.h  \
-        compilers/pirc/macro/macroparser.h
-
-compilers/pirc/macro/macroparser$(O) : $(PARROT_H_HEADERS) \
-        compilers/pirc/macro/macro.h  \
-        compilers/pirc/macro/lexer.h  \
-        compilers/pirc/macro/macroparser.h \
-        compilers/pirc/macro/macrolexer.h
+src/spf_vtable$(O) : $(PARROT_H_HEADERS) src/spf_vtable.str
 
-compilers/pirc/src/hdocprep$(O) : $(PARROT_H_HEADERS) \
-        $(INC_DIR)/embed.h compilers/pirc/src/pirheredoc.h
+src/string/encoding$(O) : $(PARROT_H_HEADERS)
 
-compilers/pirc/src/main$(O) : \
-        $(PARROT_H_HEADERS) \
-        $(INC_DIR)/embed.h \
-        compilers/pirc/src/bcgen.h \
-        compilers/pirc/src/pirparser.h \
-        compilers/pirc/src/pircompiler.h \
-        compilers/pirc/src/pircompunit.h \
-        compilers/pirc/src/pirmacro.h \
-        compilers/pirc/src/pirdefines.h \
-        compilers/pirc/src/piremit.h \
-        compilers/pirc/src/piryy.h \
-        compilers/pirc/src/pirlexer.h \
-        compilers/pirc/src/pirheredoc.h \
-        compilers/pirc/src/pirsymbol.h \
-        compilers/pirc/src/pirregalloc.h \
-        compilers/pirc/src/pircapi.h
+src/string/charset$(O) : $(PARROT_H_HEADERS) \
+        src/string/encoding/fixed_8.h \
+        src/string/encoding/utf8.h \
+        src/string/encoding/utf16.h \
+        src/string/encoding/ucs2.h \
+        src/string/charset/ascii.h \
+        src/string/charset/binary.h \
+        src/string/charset/iso-8859-1.h \
+        src/string/charset/unicode.h
 
-compilers/pirc/src/pircapi$(O) : \
-        $(PARROT_H_HEADERS) \
-        compilers/pirc/src/bcgen.h \
-        compilers/pirc/src/pircompiler.h \
-        compilers/pirc/src/pirparser.h \
-        compilers/pirc/src/pircompunit.h \
-        compilers/pirc/src/pirsymbol.h \
-        compilers/pirc/src/pirregalloc.h \
-        compilers/pirc/src/pirmacro.h \
-        compilers/pirc/src/pirdefines.h \
-        compilers/pirc/src/piremit.h \
-        compilers/pirc/src/piryy.h \
-        compilers/pirc/src/pirlexer.h \
-        compilers/pirc/src/pircapi.h \
-        $(INC_DIR)/embed.h
+src/pbc_merge$(O) : $(INC_DIR)/embed.h \
+	include/pmc/pmc_sub.h $(INC_DIR)/oplib/ops.h $(PARROT_H_HEADERS)
 
-compilers/pirc/src/pircompiler$(O) : \
-        compilers/pirc/src/pircompiler.h \
-        $(PARROT_H_HEADERS) \
-        compilers/pirc/src/piryy.h \
-        compilers/pirc/src/pirmacro.h \
-        compilers/pirc/src/pirregalloc.h \
-        compilers/pirc/src/pirerr.h \
-        compilers/pirc/src/bcgen.h \
-        compilers/pirc/src/pircompunit.h \
-        compilers/pirc/src/pirsymbol.h \
-        compilers/pirc/src/pirdefines.h \
-        $(INC_DIR)/embed.h
+src/io/filehandle$(O) : $(PARROT_H_HEADERS) include/pmc/pmc_filehandle.h src/io/io_private.h
 
-compilers/pirc/src/pircompunit$(O) : $(PARROT_H_HEADERS) \
-  compilers/pirc/src/pircompunit.h \
-  compilers/pirc/src/pircompiler.h \
-  compilers/pirc/src/pirsymbol.h \
-  compilers/pirc/src/piryy.h \
-  compilers/pirc/src/pirdefines.h \
-  compilers/pirc/src/pirregalloc.h \
-  compilers/pirc/src/pirpcc.h \
-  compilers/pirc/src/pirerr.h \
-  compilers/pirc/src/pirmacro.h \
-  compilers/pirc/src/pirop.h \
-  compilers/pirc/src/bcgen.h \
-  $(INC_DIR)/oplib/ops.h \
-  $(INC_DIR)/dynext.h \
-  $(INC_DIR)/embed.h
-
-compilers/pirc/src/pirlexer$(O) : $(PARROT_H_HEADERS) \
-  compilers/pirc/src/pirparser.h \
-  compilers/pirc/src/pirmacro.h \
-  compilers/pirc/src/pirerr.h \
-  compilers/pirc/src/pircompunit.h \
-  compilers/pirc/src/pircompiler.h \
-  compilers/pirc/src/pirsymbol.h \
-  compilers/pirc/src/piryy.h \
-  compilers/pirc/src/pirdefines.h \
-  compilers/pirc/src/pirregalloc.h \
-  compilers/pirc/src/bcgen.h \
-  $(INC_DIR)/embed.h
-
-compilers/pirc/src/pirmacro$(O) : $(PARROT_H_HEADERS) \
-  compilers/pirc/src/pirmacro.h \
-  compilers/pirc/src/pircompunit.h \
-  compilers/pirc/src/pircompiler.h \
-  compilers/pirc/src/pirsymbol.h \
-  compilers/pirc/src/pirdefines.h \
-  compilers/pirc/src/pirregalloc.h \
-  compilers/pirc/src/bcgen.h \
-  $(INC_DIR)/embed.h
-
-compilers/pirc/src/pirop$(O) : $(PARROT_H_HEADERS) \
-  compilers/pirc/src/pircompiler.h \
-  compilers/pirc/src/pircompunit.h \
-  compilers/pirc/src/pirop.h \
-  compilers/pirc/src/pirerr.h \
-  compilers/pirc/src/pirsymbol.h \
-  compilers/pirc/src/piryy.h \
-  compilers/pirc/src/pirdefines.h \
-  compilers/pirc/src/pirregalloc.h \
-  compilers/pirc/src/pirmacro.h \
-  compilers/pirc/src/bcgen.h \
-  $(INC_DIR)/embed.h
-
-compilers/pirc/src/pirpcc$(O) : $(PARROT_H_HEADERS) \
-  compilers/pirc/src/pirpcc.h \
-  compilers/pirc/src/pircompiler.h \
-  compilers/pirc/src/pirerr.h \
-  compilers/pirc/src/pircompunit.h \
-  compilers/pirc/src/pirsymbol.h \
-  compilers/pirc/src/piryy.h \
-  compilers/pirc/src/pirdefines.h \
-  compilers/pirc/src/pirregalloc.h \
-  compilers/pirc/src/pirmacro.h \
-  compilers/pirc/src/bcgen.h \
-  $(INC_DIR)/oplib/ops.h \
-  $(INC_DIR)/embed.h
-
-compilers/pirc/src/pirsymbol$(O) : $(PARROT_H_HEADERS) \
-  compilers/pirc/src/pircompiler.h \
-  compilers/pirc/src/pirsymbol.h \
-  compilers/pirc/src/piryy.h \
-  compilers/pirc/src/pirerr.h \
-  compilers/pirc/src/pircompunit.h \
-  compilers/pirc/src/pirdefines.h \
-  compilers/pirc/src/pirregalloc.h \
-  compilers/pirc/src/pirmacro.h \
-  compilers/pirc/src/bcgen.h \
-  $(INC_DIR)/embed.h
+src/dynpmc/subproxy$(O) : $(PARROT_H_HEADERS) $(INC_DIR)/extend.h \
+  $(INC_DIR)/dynext.h include/pmc/pmc_subproxy.h \
+  include/pmc/pmc_sub.h include/pmc_default.h \
+  include/pmc/pmc_continuation.h include/pmc/pmc_callcontext.h \
+  include/pmc/pmc_default.h
 
 src/gc/malloc_trace$(O) : src/gc/malloc.c
 
@@ -1697,10 +1435,10 @@
 
 src/atomic/gcc_x86$(O) : $(PARROT_H_HEADERS) $(INC_DIR)/atomic/gcc_x86.h
 
-$(OPS_DIR)/core_ops$(O) : $(OPS_DIR)/core_ops.c \
-	$(PMC_INC_DIR)/pmc/pmc_callcontext.h \
-	$(PMC_INC_DIR)/pmc/pmc_continuation.h \
-        $(PMC_INC_DIR)/pmc/pmc_parrotlibrary.h \
+src/ops/core_ops$(O) : src/ops/core_ops.c \
+	include/pmc/pmc_callcontext.h \
+	include/pmc/pmc_continuation.h \
+        include/pmc/pmc_parrotlibrary.h \
         src/io/io_private.h $(INC_DIR)/dynext.h $(INC_DIR)/embed.h \
         $(INC_DIR)/oplib/core_ops.h $(INC_DIR)/runcore_api.h
 
@@ -1708,20 +1446,20 @@
 # updates to config.h's version numbers
 
 # .h files are built along with .c
-$(INC_DIR)/oplib/core_ops.h: $(OPS_DIR)/core_ops.c
+$(INC_DIR)/oplib/core_ops.h: src/ops/core_ops.c
 
-$(OPS_DIR)/core_ops.c : $(OPS_FILES) $(BUILD_TOOLS_DIR)/ops2c.pl \
+src/ops/core_ops.c : $(OPS_FILES) $(BUILD_TOOLS_DIR)/ops2c.pl \
 	lib/Parrot/OpsFile.pm lib/Parrot/Op.pm $(INC_DIR)/config.h \
 	lib/Parrot/OpLib/core.pm lib/Parrot/OpTrans/C.pm \
-	$(PMC_INC_DIR)/pmc/pmc_continuation.h
+	include/pmc/pmc_continuation.h
 	$(PERL) $(BUILD_TOOLS_DIR)/ops2c.pl C --core @no_lines_flag@
 
-$(OPS_DIR)/core_ops_switch$(O) : $(GENERAL_H_FILES) $(OPS_DIR)/core_ops_switch.c \
-	$(PMC_INC_DIR)/pmc/pmc_parrotlibrary.h
+src/ops/core_ops_switch$(O) : $(GENERAL_H_FILES) src/ops/core_ops_switch.c \
+	include/pmc/pmc_parrotlibrary.h
 
-$(INC_DIR)/oplib/core_ops_switch.h : $(OPS_DIR)/core_ops_switch.c
+$(INC_DIR)/oplib/core_ops_switch.h : src/ops/core_ops_switch.c
 
-$(OPS_DIR)/core_ops_switch.c : $(OPS_FILES) $(BUILD_TOOLS_DIR)/ops2c.pl \
+src/ops/core_ops_switch.c : $(OPS_FILES) $(BUILD_TOOLS_DIR)/ops2c.pl \
 	lib/Parrot/OpsFile.pm lib/Parrot/Op.pm $(INC_DIR)/config.h \
 	lib/Parrot/OpLib/core.pm lib/Parrot/OpTrans/CSwitch.pm \
 	lib/Parrot/OpTrans/CPrederef.pm
@@ -1743,23 +1481,6 @@
 $(INC_DIR)/vtable.h : src/vtable.tbl $(BUILD_TOOLS_DIR)/vtable_h.pl lib/Parrot/Vtable.pm
 	$(PERL) $(BUILD_TOOLS_DIR)/vtable_h.pl
 
-# imcc file dependencies
-#
-# The .flag files are needed because we keep some derived files in SVN,
-# which does not keep accurate timestamps on the files, relative to each other.
-# Note that YACC or LEX may be null commands, so we must `touch` all the
-# target files, instead of just the .flag files.
-
-$(IMCC_DIR)/imcc.y.flag $(IMCC_DIR)/imcparser.c $(IMCC_DIR)/imcparser.h : $(IMCC_DIR)/imcc.y
-	$(YACC) $(IMCC_DIR)/imcc.y -d -o $(IMCC_DIR)/imcparser.c
-	$(PERL) $(BUILD_TOOLS_DIR)/fixup_gen_file.pl -noheaderizer $(IMCC_DIR)/imcparser.c $(IMCC_DIR)/imcc.y
-	$(PERL) $(BUILD_TOOLS_DIR)/fixup_gen_file.pl -noheaderizer $(IMCC_DIR)/imcparser.h $(IMCC_DIR)/imcc.y
-	$(TOUCH) $(IMCC_DIR)/imcc.y.flag $(IMCC_DIR)/imcparser.c $(IMCC_DIR)/imcparser.h
-
-$(IMCC_DIR)/imcc.l.flag $(IMCC_DIR)/imclexer.c : $(IMCC_DIR)/imcc.l
-	$(LEX) -o$(IMCC_DIR)/imclexer.c $(IMCC_DIR)/imcc.l
-	$(TOUCH) $(IMCC_DIR)/imcc.l.flag $(IMCC_DIR)/imclexer.c
-
 ###############################################################################
 #
 # Documentation targets:
@@ -1844,33 +1565,8 @@
 #
 ###############################################################################
 
-compilers : compilers.dummy
-
-compilers.dummy : $(PARROT) $(GEN_LIBRARY)
-	$(MAKE) compilers/pct
-	$(MAKE) compilers/pge
-	$(MAKE) compilers/tge
-	$(MAKE) compilers/nqp
-	$(MAKE) compilers/json
-	$(MAKE) compilers/data_json
-	$(MAKE) ext/nqp-rx
-
-compilers-clean :
-	$(MAKE) compilers/pct clean
-	$(MAKE) compilers/pge clean
-	$(MAKE) compilers/tge clean
-	$(MAKE) compilers/nqp clean
-	$(MAKE) compilers/json clean
-	$(MAKE) compilers/data_json clean
-	$(MAKE) compilers/pirc clean
-
 ext-clean:
-	$(MAKE) ext/nqp-rx clean
-	$(RM_RF) runtime/parrot/library/HLL.pbc \
-  runtime/parrot/library/P6Regex.pbc \
-  runtime/parrot/library/Regex.pbc \
-  runtime/parrot/library/nqp-rx.pbc \
-  parrot-nqp*
+	$(RM_RF) $(NQPRX_LIB_PBCS) parrot-nqp*
 
 ###############################################################################
 #
@@ -1887,43 +1583,45 @@
 #
 ###############################################################################
 
-EXTRA_TEST_ARGS := --gc-debug
-DISTRO_TEST_FILES := \
+# The --running-make-test argument is currently used by long-running tests
+# to disable GC_DEBUG.
+EXTRA_TEST_ARGS = --gc-debug
+DISTRO_TEST_FILES = \
     t/distro/*.t
-BENCHMARK_TEST_FILES := \
+BENCHMARK_TEST_FILES = \
     t/benchmark/*.t
-PERL_TEST_FILES := \
+PERL_TEST_FILES = \
     t/perl/*.t
-CODINGSTD_TEST_FILES := \
+CODINGSTD_TEST_FILES = \
     t/codingstd/*.t
-RUN_TEST_FILES := \
+RUN_TEST_FILES = \
     t/run/*.t
-RUNCORE_TEST_FILES := \
+RUNCORE_TEST_FILES = \
     --runcore-tests
-SRC_TEST_FILES := \
+SRC_TEST_FILES = \
     t/src/*.t
-TOOLS_TEST_FILES := \
+TOOLS_TEST_FILES = \
     t/tools/*.t
-LIBRARY_TEST_FILES := @library_tests@
-PMC2CUTILS_DIR := t/tools/pmc2cutils
-OPS2PMUTILS_DIR := t/tools/ops2pm
-OPS2CUTILS_DIR := t/tools/ops2cutils
-REVISIONUTILS_DIR := t/tools/revision
-HARNESS_DIR := t/pharness
-BUILDTOOLS_TEST_FILES := \
+LIBRARY_TEST_FILES = @library_tests@
+PMC2CUTILS_DIR = t/tools/pmc2cutils
+OPS2PMUTILS_DIR = t/tools/ops2pm
+OPS2CUTILS_DIR = t/tools/ops2cutils
+REVISIONUTILS_DIR = t/tools/revision
+HARNESS_DIR = t/pharness
+BUILDTOOLS_TEST_FILES = \
     $(PMC2CUTILS_DIR)/*.t \
     $(OPS2PMUTILS_DIR)/*.t \
     $(OPS2CUTILS_DIR)/*.t \
     $(REVISIONUTILS_DIR)/*.t \
     $(HARNESS_DIR)/*.t
-MANIFEST_DIR := t/manifest
-INSTALL_TOOLS_DIR := t/tools/install
-MANIFEST_TEST_FILES := \
+MANIFEST_DIR = t/manifest
+INSTALL_TOOLS_DIR = t/tools/install
+MANIFEST_TEST_FILES = \
     $(MANIFEST_DIR)/*.t \
     $(INSTALL_TOOLS_DIR)/*.t
-EXAMPLES_TEST_FILES := \
+EXAMPLES_TEST_FILES = \
     t/examples/*.t
-CONFIGURE_TEST_FILES := \
+CONFIGURE_TEST_FILES = \
     t/configure/*.t \
     t/steps/*.t
 
@@ -1944,8 +1642,8 @@
 	$(PERL) t/harness $(EXTRA_TEST_ARGS)
 
 # Test the NQP compiler
-nqp_test : test_prep
-	$(MAKE) compilers/nqp test
+nqp_test : test_prep compilers/nqp/nqp.pbc
+	$(PERL) compilers/nqp/t/harness
 
 # run the test suite, create a TAP archive and send it off to smolder
 smolder_test : test_prep
@@ -2051,7 +1749,7 @@
 warnings_tests:
 	$(PERL) t/harness $(EXTRA_TEST_ARGS) -w $(RUNCORE_TEST_FILES)
 
-buildtools_tests :
+buildtools_tests : corevm
 	$(PERL) t/harness $(BUILDTOOLS_TEST_FILES)
 
 manifest_tests :
@@ -2095,8 +1793,6 @@
     dynpmc-clean \
     dynoplibs-clean \
     examples-clean \
-    imcc-clean \
-    compilers-clean \
     ext-clean \
 #UNLESS(win32):    cover-clean \
     editor-clean
@@ -2105,6 +1801,9 @@
 	$(RM_F) $(FLUID_FILES_1)
 	$(RM_F) $(FLUID_FILES_2)
 	$(RM_RF) lib/Parrot/OpLib
+	$(RM_F) $(NQP_CLEANUPS) $(PGE_CLEANUPS) $(TGE_CLEANUPS) $(JSON_CLEANUPS)
+	$(RM_F) $(PIRC_CLEANUPS) $(PCT_CLEANUPS)
+	$(RM_F) $(GEN_PASM_INCLUDES) $(GEN_PM_INCLUDES)
 
 prog-clean :
 	$(RM_F) \
@@ -2122,25 +1821,25 @@
     $(INSTALLABLENQP) \
     pbc_to_exe.pbc pbc_to_exe.c pbc_to_exe$(O) pbc_to_exe$(EXE) \
     parrot_config$(EXE) parrot_config.c parrot_config$(O) parrot_config.pbc \
-    $(IMCC_DIR)/main$(O) \
-    $(PDUMP) $(SRC_DIR)/pbc_dump$(O) $(SRC_DIR)/packdump$(O) \
-    $(PDB) $(SRC_DIR)/parrot_debugger$(O) \
-    $(PBCMERGE) $(SRC_DIR)/pbc_merge$(O) \
-    $(DIS) $(SRC_DIR)/pbc_disassemble$(O)
+    compilers/imcc/main$(O) \
+    $(PDUMP) src/pbc_dump$(O) src/packdump$(O) \
+    $(PDB) src/parrot_debugger$(O) \
+    $(PBCMERGE) src/pbc_merge$(O) \
+    $(DIS) src/pbc_disassemble$(O)
 	$(RM_F) \
-    $(SRC_DIR)/main$(O) \
-    $(SRC_DIR)/null_config$(O) \
-    $(SRC_DIR)/parrot_config$(O) \
-    $(SRC_DIR)/install_config$(O) \
-    $(SRC_DIR)/nci_test$(O) \
+    src/main$(O) \
+    src/null_config$(O) \
+    src/parrot_config$(O) \
+    src/install_config$(O) \
+    src/nci_test$(O) \
     $(LIBNCI_TEST_SO) \
-    $(SRC_DIR)/glut_callbacks$(O) \
+    src/glut_callbacks$(O) \
     $(LIBGLUTCB_SO) \
     install_config.fpmc
 	$(PERL) $(BUILD_TOOLS_DIR)/c2str.pl --init
 	$(RM_F) \
     $(STR_FILES) \
-    $(SRC_DIR)/string/private_cstring.h "src/pmc/*.c" "include/pmc/pmc_*.h" \
+    src/string/private_cstring.h "src/pmc/*.c" "include/pmc/pmc_*.h" \
     "src/pmc/*.dump" vtable.dump "*.def" "*.lib" "*.exp"
 
 archclean: dynoplibs-clean dynpmc-clean dynext-clean
@@ -2157,21 +1856,21 @@
     $(INSTALLABLEPDB) \
     $(INSTALLABLECONFIG) \
     $(INSTALLABLENQP) \
-    $(IMCC_DIR)/main$(O) \
-    $(PDUMP) $(SRC_DIR)/pbc_dump$(O) $(SRC_DIR)/packdump$(O) \
-    $(PDB) $(SRC_DIR)/parrot_debugger$(O) \
-    $(PBCMERGE) $(SRC_DIR)/pbc_merge$(O) \
-    $(DIS) $(SRC_DIR)/pbc_disassemble$(O) \
+    compilers/imcc/main$(O) \
+    $(PDUMP) src/pbc_dump$(O) src/packdump$(O) \
+    $(PDB) src/parrot_debugger$(O) \
+    $(PBCMERGE) src/pbc_merge$(O) \
+    $(DIS) src/pbc_disassemble$(O) \
     $(PARROT_CONFIG) parrot_config$(O) parrot_config.c \
-    $(SRC_DIR)/parrot_config$(O) parrot_config.pbc \
+    src/parrot_config$(O) parrot_config.pbc \
     pbc_to_exe$(EXE) pbc_to_exe$(O) pbc_to_exe.pbc \
-    $(SRC_DIR)/null_config$(O) \
-    $(SRC_DIR)/parrot_config$(O) \
-    $(SRC_DIR)/install_config$(O) \
+    src/null_config$(O) \
+    src/parrot_config$(O) \
+    src/install_config$(O) \
     install_config.fpmc \
-    $(SRC_DIR)/nci_test$(O) \
+    src/nci_test$(O) \
     $(LIBNCI_TEST_SO) \
-    $(SRC_DIR)/glut_callbacks$(O) \
+    src/glut_callbacks$(O) \
     $(LIBGLUTCB_SO) \
     $(LIBPARROT_STATIC) \
     $(LIBPARROT_SHARED)
@@ -2242,15 +1941,8 @@
      "parrot_test_run.tar.gz" \
 	 ".pod_examinable*.sto"
 
-imcc-clean:
-	$(RM_F) \
-    $(IMCC_DIR)/core \
-    "$(IMCC_DIR)/*$(O)" \
-    $(IMCC_DIR)/imcparser.output
-
 # a failing step of cleaning, usually doesn't concern the following steps
 realclean : clean
-	-$(MAKE) compilers/pirc  realclean
 	$(RM_RF) \
     $(CONFIGURE_GENERATED_FILES) \
     blib \
@@ -2273,7 +1965,7 @@
 	$(PERL) tools/dev/opsrenumber.pl $(OPS_FILES)
 
 pmcrenumber :
-	$(PERL) tools/dev/pmcrenumber.pl $(SRC_DIR)/pmc/pmc.num
+	$(PERL) tools/dev/pmcrenumber.pl src/pmc/pmc.num
 
 ###############################################################################
 #
@@ -2290,16 +1982,16 @@
 patch :
 	svn diff
 
-LINTABLE_CFILES := `echo $(SRC_DIR)/main$(O) $(O_FILES) $(SRC_DIR)/parrot_config$(O) | $(PERL) -pe @PQ at s/\.o/\.c/g at PQ@`
+LINTABLE_CFILES = `echo src/main$(O) $(O_FILES) src/parrot_config$(O) | $(PERL) -pe @PQ at s/\.o/\.c/g at PQ@`
 
 lint : sunlint
 
-SUNLINT := lint
+SUNLINT = lint
 
 # This target does sneaky magic to get the $(NOTE) fields to work.  It's
 # doing replaces in $(NOTE), which is empty, of strings that will never match.
-NOTE :=
-SUNLINT_HUSH_OPTS := \
+NOTE =
+SUNLINT_HUSH_OPTS = \
     $(NOTE:% Errors that will never be silenced, and we must always hush =%)\
     -erroff=E_ARGUMENT_CONVERT          $(NOTE:% implicit integer-to-long conversion =%) \
     -erroff=E_BAD_PTR_CAST                    $(NOTE:% pointer casts may be troublesome =%) \
@@ -2320,10 +2012,10 @@
     -erroff=E_CASE_FALLTHRU                    $(NOTE:% case fallthru =%) \
     -erroff=E_STATIC_UNUSED                    $(NOTE:% Static function not used =%) \
 
-SUNLINT_OPTS_FOR_THE_FUTURE := -b -m -Xc
+SUNLINT_OPTS_FOR_THE_FUTURE = -b -m -Xc
 
 # Lint options at: http:////docs.sun.com//app//docs//doc//819-5265//6n7c29cli?a=view
-SUNLINTOPTS := \
+SUNLINTOPTS = \
     -b \
     -p \
     -fd \
@@ -2340,7 +2032,7 @@
 	rm -f *.ln
 	$(SUNLINT) $(CC_INC) "-Iinclude/pmc" $(SUNLINTOPTS) $(LINTABLE_CFILES)
 
-BSD_LINT_FLAGS := -a -aa -b -c -e -h -n -p -r -u -x -z -F -H -V
+BSD_LINT_FLAGS = -a -aa -b -c -e -h -n -p -r -u -x -z -F -H -V
 
 # 132: conversion from '...' may lose accuracy
 # 135: possible pointer alignment problem
@@ -2353,7 +2045,7 @@
 # 265: ANSI C does not support 'long long'
 # 277: initialisation of '...' with '...'
 # 278: combination of '...' and '...', arg #...
-BSD_LINT_EXCLUSIONS := -X132,135,236,241,247,249,259,265,277,278
+BSD_LINT_EXCLUSIONS = -X132,135,236,241,247,249,259,265,277,278
 
 bsdlint : $(PARROT)
 	rm -f *.ln
@@ -2361,11 +2053,11 @@
 
 # For checking with splint see also http:////www.perlfoundation.org//parrot//index.cgi?splint
 # Splint: http:////splint.org
-SPLINT := splint
+SPLINT = splint
 
 # Temp directory for splint.  Add +keep to splintflags if you want work files
 # kept in there after completion.
-SPLINT_TMP := $(TEMPDIR)/splint
+SPLINT_TMP = $(TEMPDIR)/splint
 
 # Splint flags: http://splint.org/manual/html/appB.html
 # The dashes in the names don't make any difference to Splint, but I've
@@ -2400,7 +2092,7 @@
     -include-nest 10
 
 # Memory safety checks
-SPLINTFLAGS := $(SPLINTFLAGS) \
+SPLINTFLAGS = $(SPLINTFLAGS) \
     +bufferoverflow \
     +bufferoverflowhigh \
     +read-only-strings \
@@ -2410,7 +2102,7 @@
     +use-released \
 
 # Macro safety checks
-SPLINTFLAGS := $(SPLINTFLAGS) \
+SPLINTFLAGS = $(SPLINTFLAGS) \
     +macro-assign \
     +macro-empty \
     +macro-parens \
@@ -2419,25 +2111,25 @@
     +macro-unrecog \
 
 # Watch for unsafe comparisons
-SPLINTFLAGS := $(SPLINTFLAGS) \
+SPLINTFLAGS = $(SPLINTFLAGS) \
     +bool-compare \
     +ptr-compare \
     +real-compare \
     +unsigned-compare
 
 # But allow us some slop in boolean comparisons
-SPLINTFLAGS := $(SPLINTFLAGS) \
+SPLINTFLAGS = $(SPLINTFLAGS) \
     -pred-bool-int \
     -pred-bool-ptr \
     -pred-bool-others \
     -boolops \
 
 # Report qualifier mismatches only if dangerous
-SPLINTFLAGS := $(SPLINTFLAGS) \
+SPLINTFLAGS = $(SPLINTFLAGS) \
     +relax-quals
 
 # Memory checking
-SPLINTFLAGS := $(SPLINTFLAGS) \
+SPLINTFLAGS = $(SPLINTFLAGS) \
     -must-free \
     -mustfreefresh \
     -mustfreeonly \
@@ -2449,33 +2141,33 @@
     -zero-ptr \
 
 # Transfer errors are too tough for us right now
-SPLINTFLAGS := $(SPLINTFLAGS) \
+SPLINTFLAGS = $(SPLINTFLAGS) \
     -mem-trans
 
 # Symbol definitions
-SPLINTFLAGS := $(SPLINTFLAGS) \
+SPLINTFLAGS = $(SPLINTFLAGS) \
     +decl-undef \
     +incon-defs \
     +incon-defs-lib \
 
 # Check for conflicts with C++ compilers
-SPLINTFLAGS := $(SPLINTFLAGS) \
+SPLINTFLAGS = $(SPLINTFLAGS) \
     +cpp-names \
 
 # Format codes
-SPLINTFLAGS := $(SPLINTFLAGS) \
+SPLINTFLAGS = $(SPLINTFLAGS) \
     +format-code \
     +format-type \
 
 # Problems with evaluation and control structions
-SPLINTFLAGS := $(SPLINTFLAGS) \
+SPLINTFLAGS = $(SPLINTFLAGS) \
     +controlnestdepth 15 \
     +duplicate-case \
     +eval-order \
     +eval-order-uncon \
 
 # Types and stuff
-SPLINTFLAGS := $(SPLINTFLAGS) \
+SPLINTFLAGS = $(SPLINTFLAGS) \
     +char-index \
     +char-int \
     +enum-members \
@@ -2494,13 +2186,13 @@
 # added to splint target to simplify experimentation,
 # ex: make SPLINTFLAGS_TEST='-posixstrictlib +posixlib' splint
 
-SPLINT_SOURCE := `echo $(O_FILES) | $(PERL) -pe @PQ at s/\.o/\.c/g at PQ@`
+SPLINT_SOURCE = `echo $(O_FILES) | $(PERL) -pe @PQ at s/\.o/\.c/g at PQ@`
 
 splint-all : $(PARROT)
 	$(MKPATH) $(SPLINT_TMP)
 	$(SPLINT) $(CC_INC) "-Iinclude/pmc" "-Icompilers/ast" $(SPLINTFLAGS) $(SPLINTFLAGS_TEST) \
 	$(SPLINT_SOURCE) \
-	$(SPLINT) $(CC_INC) $(SPLINTFLAGS) $(SPLINTFLAGS_TEST) $(IMCC_DIR)/main.c
+	$(SPLINT) $(CC_INC) $(SPLINTFLAGS) $(SPLINTFLAGS_TEST) compilers/imcc/main.c
 
 # "splint" is the less-thorough splint target.  For cage cleaning work,
 # you'll probably want to specify SPLINT_SOURCE rather than work on the
@@ -2514,25 +2206,25 @@
 	$(SPLINT_SOURCE) \
 		| grep -v 'Source code error generation point'
 
-COVER_FLAGS := -fprofile-arcs -ftest-coverage
-COVER_DIRS := \
-    $(SRC_DIR) \
-    $(SRC_DIR)/call \
-    $(SRC_DIR)/dynoplibs \
-    $(SRC_DIR)/dynpmc \
-    $(SRC_DIR)/gc \
-    $(SRC_DIR)/interp \
-    $(SRC_DIR)/ops \
-    $(SRC_DIR)/packfile \
-    $(SRC_DIR)/pmc \
-    $(SRC_DIR)/runcore \
-    $(SRC_DIR)/string \
-    $(SRC_DIR)/string/charset \
-    $(SRC_DIR)/string/encoding \
+COVER_FLAGS = -fprofile-arcs -ftest-coverage
+COVER_DIRS = \
+    src \
+    src/call \
+    src/dynoplibs \
+    src/dynpmc \
+    src/gc \
+    src/interp \
+    src/ops \
+    src/packfile \
+    src/pmc \
+    src/runcore \
+    src/string \
+    src/string/charset \
+    src/string/encoding \
     $(BUILD_DIR) \
     $(BUILD_DIR)/t/perl \
-    $(IO_DIR) \
-    $(IMCC_DIR)
+    src/io \
+    compilers/imcc
 
 cover: \
     cover.dummy \
@@ -2672,7 +2364,7 @@
 ###############################################################################
 
 release : MANIFEST MANIFEST.generated
-	[ -d parrot-$(VERSION) ] || ln -s $(CUR_DIR) parrot-$(VERSION)
+	[ -d parrot-$(VERSION) ] || ln -s . parrot-$(VERSION)
 	@$(RM_F) MANIFEST.real
 	mv MANIFEST MANIFEST.real
 	grep -v DEVELOPING MANIFEST.real > MANIFEST
@@ -2691,24 +2383,24 @@
 #
 ###############################################################################
 
-exec : $(SRC_DIR)/parrot_config$(O) $(LIBPARROT)
-	$(LINK) @ld_out@$(EXEC)$(EXE) $(EXEC)$(O) $(SRC_DIR)/parrot_config$(O) @rpath_blib@ $(ALL_PARROT_LIBS) $(LINKFLAGS)
+exec : src/parrot_config$(O) $(LIBPARROT)
+	$(LINK) @ld_out@$(EXEC)$(EXE) $(EXEC)$(O) src/parrot_config$(O) @rpath_blib@ $(ALL_PARROT_LIBS) $(LINKFLAGS)
 
 ###### OS depend targets ##########
 
 # for use by t/pmc/nci.t
-$(SRC_DIR)/nci_test$(O): $(PARROT_H_HEADERS)
+src/nci_test$(O): $(PARROT_H_HEADERS)
 
-$(LIBNCI_TEST_SO): $(SRC_DIR)/nci_test$(O) $(LIBPARROT)
+$(LIBNCI_TEST_SO): src/nci_test$(O) $(LIBPARROT)
 	$(LD) $(LD_LOAD_FLAGS) @ncilib_link_extra@ $(LDFLAGS) \
-    @ld_out@$@ $(SRC_DIR)/nci_test$(O) $(C_LIBS)
+    @ld_out@$@ src/nci_test$(O) $(C_LIBS)
 
 # for use by runtime/parrot/library/OpenGL.pir
-$(SRC_DIR)/glut_callbacks$(O): $(GENERAL_H_FILES)
+src/glut_callbacks$(O): $(GENERAL_H_FILES)
 
-$(LIBGLUTCB_SO): $(LIBPARROT) $(SRC_DIR)/glut_callbacks$(O)
+$(LIBGLUTCB_SO): $(LIBPARROT) src/glut_callbacks$(O)
 	$(LD) $(LD_LOAD_FLAGS) $(LDFLAGS) \
-    @ld_out@$@ $(SRC_DIR)/glut_callbacks$(O) \
+    @ld_out@$@ src/glut_callbacks$(O) \
     $(ALL_PARROT_LIBS) @opengl_lib@
 
 # emacs etags
@@ -2721,12 +2413,12 @@
         -R --exclude=blib --exclude=.svn  \
         --languages=c,perl --langmap=c:+.h,c:+.pmc,c:+.ops \
         -I NOTNULL,NULLOK,ARGIN,ARGMOD,ARGOUT,ARGINOUT,ARGIN_NULLOK,ARGOUT_NULLOK,ARGMOD_NULLOK \
-        $(CUR_DIR)
+        .
 
 # this works with an old etags (XEmacs 21.5*)
 tags-xemacs: tags.emacs.dummy
 	$(RM_F) TAGS
-	find $(CUR_DIR) \
+	find . \
         -name \*.c -o -name \*.h -o -name \*.pmc -o -name \*.ops | etags -l c - -o TAGS
 
 tags.emacs.dummy:
@@ -2741,12 +2433,12 @@
     -R --exclude=blib --exclude=.svn  \
     --languages=c,perl --langmap=c:+.h,c:+.pmc,c:+.ops \
     -I NOTNULL,NULLOK,ARGIN,ARGMOD,ARGOUT,ARGINOUT,ARGIN_NULLOK,ARGOUT_NULLOK,ARGMOD_NULLOK \
-    $(CUR_DIR)
+    .
 	$(PERL) $(BUILD_TOOLS_DIR)/addopstags.pl $(OPS_FILES)
 
 tags.vi.dummy:
 
-CRITIC_FILES := 'lib/Parrot'
+CRITIC_FILES = 'lib/Parrot'
 
 perlcritic:
 	perlcritic --profile tools/util/perlcritic.conf $(CRITIC_FILES)
@@ -2760,21 +2452,32 @@
 # is not PARROT_EXPORT but should be, then put PARROT_EXPORT in the C file and
 # run "make headerizer".  The .h file will get updated.
 
-HEADERIZER_O_FILES := \
+HEADERIZER_O_FILES = \
     $(O_FILES) \
     src/packdump$(O) \
     src/pbc_merge$(O) \
     $(PIRC_O_FILES)
 
-headerizer : $(SRC_DIR)/core_pmcs.c
-	$(PERL) $(BUILD_TOOLS_DIR)/headerizer.pl $(HEADERIZER_O_FILES) $(IMCC_DIR)/imcc.y
+headerizer : src/core_pmcs.c
+	$(PERL) $(BUILD_TOOLS_DIR)/headerizer.pl $(HEADERIZER_O_FILES) compilers/imcc/imcc.y
 
-apilist: $(SRC_DIR)/core_pmcs.c
+apilist: src/core_pmcs.c
 	$(PERL) $(BUILD_TOOLS_DIR)/headerizer.pl --macro=PARROT_EXPORT $(HEADERIZER_O_FILES)
 
-malloclist: $(SRC_DIR)/core_pmcs.c
+malloclist: src/core_pmcs.c
 	$(PERL) $(BUILD_TOOLS_DIR)/headerizer.pl --macro=PARROT_MALLOC $(HEADERIZER_O_FILES)
 
+include runtime/parrot/library/Rules.mak
+include compilers/imcc/Rules.mak
+include compilers/pirc/Rules.mak
+include compilers/nqp/Rules.mak
+include compilers/pge/Rules.mak
+include compilers/pct/Rules.mak
+include compilers/tge/Rules.mak
+include compilers/data_json/Rules.mak
+include compilers/json/Rules.mak
+include ext/nqp-rx/Rules.mak
+
 # Local variables:
 #   mode: makefile
 # End:

Deleted: trunk/config/gen/makefiles/tge.in
==============================================================================
--- trunk/config/gen/makefiles/tge.in	Tue Jan 26 02:39:50 2010	(r43592)
+++ /dev/null	00:00:00 1970	(deleted)
@@ -1,61 +0,0 @@
-# Copyright (C) 2005-2009, Parrot Foundation.
-# $Id$
-
-# Setup some commands
-PERL     := @perl@
-RM_F     := @rm_f@
-PARROT   := ../../parrot at exe@
-
-# Where to put things
-PARROT_LIBRARY    := ../../runtime/parrot/library
-PERL6GRAMMAR      := $(PARROT_LIBRARY)/PGE/Perl6Grammar.pbc
-
-# the default target
-all: $(PARROT_LIBRARY)/TGE.pbc
-
-$(PARROT_LIBRARY)/TGE.pbc: TGE.pir TGE/Rule.pir TGE/Parser.pir TGE/Grammar.pir TGE/Compiler.pir TGE/Tree.pir
-	$(PARROT) -o $(PARROT_LIBRARY)/TGE.pbc --output-pbc TGE.pir
-
-TGE/Parser.pir: TGE/Parser.pg
-	$(PARROT) $(PERL6GRAMMAR) --output=TGE/Parser.pir TGE/Parser.pg
-
-# 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:               TGE.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
-	prove -r ../../t/compilers/tge
-
-testclean:
-	$(RM_F) "../../t/compilers/tge/*.pir"
-
-clean: testclean
-	$(RM_F) \
-	    $(PARROT_LIBRARY)/TGE.pbc \
-	    TGE/Parser.pir
-
-realclean: clean
-	$(RM_F) Makefile
-
-distclean: realclean
-
-# Local variables:
-#   mode: makefile
-# End:
-# vim: ft=make:

Deleted: trunk/config/gen/parrot_include.pm
==============================================================================
--- trunk/config/gen/parrot_include.pm	Tue Jan 26 02:39:50 2010	(r43592)
+++ /dev/null	00:00:00 1970	(deleted)
@@ -1,241 +0,0 @@
-# Copyright (C) 2001-2007, Parrot Foundation.
-# $Id$
-
-=head1 NAME
-
-config/gen/parrot_include.pm - Runtime Includes
-
-=head1 DESCRIPTION
-
-Generates the F<runtime/parrot/include> files.
-
-=cut
-
-package gen::parrot_include;
-
-use strict;
-use warnings;
-
-use base qw(Parrot::Configure::Step);
-
-use Parrot::Configure::Utils ':gen';
-
-
-sub _init {
-    my $self = shift;
-    my %data;
-    $data{description} = q{Generate runtime/parrot/include};
-    $data{result} = q{};
-    $data{source_files} = [ qw(
-        include/parrot/cclass.h
-        include/parrot/datatypes.h
-        include/parrot/enums.h
-        include/parrot/events.h
-        include/parrot/scheduler.h
-        include/parrot/exceptions.h
-        include/parrot/hash.h
-        include/parrot/interpreter.h
-        include/parrot/io.h
-        include/parrot/library.h
-        include/parrot/longopt.h
-        include/parrot/multidispatch.h
-        include/parrot/packfile.h
-        include/parrot/stat.h
-        include/parrot/string.h
-        include/parrot/pmc.h
-        include/parrot/warnings.h
-        include/parrot/gc_api.h
-        src/pmc/timer.pmc
-        src/utils.c
-    ) ];
-    $data{generated_files} = [ qw(
-        include/parrot/vtable.h
-        include/parrot/core_pmcs.h
-    ) ];
-    $data{destdir} = 'runtime/parrot/include';
-    return \%data;
-}
-
-sub runstep {
-    my ( $self, $conf ) = @_;
-    my $verbose = $conf->options->get('verbose');
-
-    # need vtable.h now
-    system( $^X, "tools/build/vtable_h.pl" );
-
-    my @generated;
-    for my $file ( @{ $self->{source_files} }, @{ $self->{generated_files} } ) {
-        open my $fh, '<', $file or die "Can't open $file: $!\n";
-        my @directives = parse_file($file, $fh);
-        close $fh;
-        for my $d (@directives) {
-            my @defs = perform_directive($d);
-            for my $target ( @{ $d->{files} } ) {
-                $verbose and print "$target ";
-                my $gen;
-                if ( $target =~ /\.pm$/ ) {
-                    $gen = join "\n", &const_to_perl(@defs);
-                    $gen .= "\n1;";
-                }
-                else {
-                    $gen = join "\n", &const_to_parrot(@defs);
-                }
-                $conf->append_configure_log(qq{$self->{destdir}/$target});
-                my $target_tmp = "$target.tmp";
-                open my $out, '>', $target_tmp or die "Can't open $target_tmp: $!\n";
-
-                print $out <<"EOF";
-# DO NOT EDIT THIS FILE.
-#
-# This file is generated automatically from
-# $file by config/gen/parrot_include.pm
-#
-# Any changes made here will be lost.
-#
-$gen
-EOF
-                close $out or die "Can't write $target_tmp: $!\n";
-                $target =~ m[/] or $target = "$self->{destdir}/$target";
-                move_if_diff( $target_tmp, $target );
-                push @generated, $target;
-            }
-        }
-    }
-    $conf->data->set( TEMP_gen_pasm_includes => join( " \\\n    ", @generated ) );
-
-    return 1;
-}
-
-sub const_to_parrot {
-    map ".macro_const $_->[0]\t$_->[1]", @_;
-}
-
-sub const_to_perl {
-    map "use constant $_->[0] => $_->[1];", @_;
-}
-
-sub transform_name {
-    my $action = shift;
-
-    return map { [ $action->( $_->[0] ), $_->[1] ] } @_;
-}
-
-sub prepend_prefix {
-    my $prefix = shift;
-
-    transform_name( sub { $prefix . $_[0] }, @_ );
-}
-
-sub perform_directive {
-    my ($d) = @_;
-
-    my @defs = prepend_prefix $d->{prefix}, @{ $d->{defs} };
-    if ( my $subst = $d->{subst} ) {
-        @defs = transform_name( sub { local $_ = shift; eval $subst; $_ }, @defs );
-    }
-    @defs;
-}
-
-sub parse_file {
-    my ( $file, $fh ) = @_;
-
-    my ( @d, %values, $last_val, $cur, $or_continues );
-    while ( my $line = <$fh> ) {
-        if (
-            $line =~ m!
-            &gen_from_(enum|def) \( ( [^)]* ) \)
-            (?: \s+ prefix \( (\w+) \) )?
-            (?: \s+ subst \( (s/.*?/.*?/[eig]?) \) )?
-            !x
-            )
-        {
-            $cur and die "Missing '&end_gen' in $file\n";
-            $cur = {
-                type   => $1,
-                files  => [ split ' ', $2 ],
-                prefix => defined $3 ? $3 : '',
-                defined $4 ? ( subst => $4 ) : (),
-            };
-            $last_val = -1;
-        }
-        elsif ( $line =~ /&end_gen\b/ ) {
-            $cur or die "Missing &gen_from_(enum|def) in $file\n";
-            push @d, $cur;
-            $cur = undef;
-        }
-
-        $cur or next;
-
-        if ( $cur->{type} eq 'def' && $line =~ /^\s*#define\s+(\w+)\s+(-?\w+|"[^"]*")/ ) {
-            push @{ $cur->{defs} }, [ $1, $2 ];
-        }
-        elsif ( $cur->{type} eq 'enum' ) {
-            # Special case: enum value is or'd combination of other values
-            if ( $or_continues ) {
-                $or_continues = 0;
-                my $last_def = $cur->{defs}->[-1];
-                my ($k, $v) = @{$last_def};
-                my @or_values = grep {defined $_} $line =~ /^\s*(-?\w+)(?:\s*\|\s*(-?\w+))*/;
-                for my $or (@or_values) {
-                    if ( defined $values{$or} ) {
-                        $v |= $values{$or};
-                    }
-                    elsif ( $or =~ /^0/ ) {
-                        $v |= oct $or;
-                    }
-                }
-                if ($line =~ /\|\s*$/) {
-                    $or_continues = 1;
-                }
-                $values{$k} = $last_val = $v;
-                $cur->{defs}->[-1]->[1] = $v;
-            }
-            elsif ( $line =~ /^\s*(\w+)\s*=\s*(-?\w+)\s*\|/ ) {
-                my ( $k, $v ) = ( $1, $2 );
-                my @or_values = ($v, $line =~ /\|\s*(-?\w+)/g);
-                $v = 0;
-                for my $or (@or_values) {
-                    if ( defined $values{$or} ) {
-                        $v |= $values{$or};
-                    }
-                    elsif ( $or =~ /^0/ ) {
-                        $v |= oct $or;
-                    }
-                }
-                if ($line =~ /\|\s*$/) {
-                    $or_continues = 1;
-                }
-                $values{$k} = $last_val = $v;
-                push @{ $cur->{defs} }, [ $k, $v ];
-            }
-            elsif ( $line =~ /^\s*(\w+)\s*=\s*(-?\w+)/ ) {
-                my ( $k, $v ) = ( $1, $2 );
-                if ( defined $values{$v} ) {
-                    $v = $values{$v};
-                }
-                elsif ( $v =~ /^0/ ) {
-                    $v = oct $v;
-                }
-                $values{$k} = $last_val = $v;
-                push @{ $cur->{defs} }, [ $k, $v ];
-            }
-            elsif ( $line =~ m!^\s*(\w+)\s*(?:,\s*)?(?:/\*|$)! ) {
-                my $k = $1;
-                my $v = $values{$k} = ++$last_val;
-                push @{ $cur->{defs} }, [ $k, $v ];
-            }
-        }
-    }
-    $cur and die "Missing '&end_gen' in $file\n";
-
-    return @d;
-}
-
-1;
-
-# Local Variables:
-#   mode: cperl
-#   cperl-indent-level: 4
-#   fill-column: 100
-# End:
-# vim: expandtab shiftwidth=4:

Modified: trunk/examples/config/file/configcompiler
==============================================================================
--- trunk/examples/config/file/configcompiler	Tue Jan 26 00:46:48 2010	(r43592)
+++ trunk/examples/config/file/configcompiler	Tue Jan 26 02:39:50 2010	(r43593)
@@ -74,7 +74,6 @@
 gen::config_h
 gen::core_pmcs
 gen::crypto
-gen::parrot_include
 gen::opengl
 gen::call_list
 gen::languages

Modified: trunk/examples/config/file/configwithfatalstep
==============================================================================
--- trunk/examples/config/file/configwithfatalstep	Tue Jan 26 00:46:48 2010	(r43592)
+++ trunk/examples/config/file/configwithfatalstep	Tue Jan 26 02:39:50 2010	(r43593)
@@ -66,7 +66,6 @@
 gen::config_h
 gen::core_pmcs
 gen::crypto
-gen::parrot_include
 gen::opengl
 gen::call_list
 gen::languages

Copied: trunk/ext/nqp-rx/Defines.mak (from r43591, branches/one_make/ext/nqp-rx/Defines.mak)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ trunk/ext/nqp-rx/Defines.mak	Tue Jan 26 02:39:50 2010	(r43593, copy of r43591, branches/one_make/ext/nqp-rx/Defines.mak)
@@ -0,0 +1,8 @@
+NQPRX_LIB_PBCS = \
+    $(LIBRARY_DIR)/Regex.pbc \
+    $(LIBRARY_DIR)/HLL.pbc \
+    $(LIBRARY_DIR)/P6Regex.pbc \
+    $(LIBRARY_DIR)/nqp-rx.pbc \
+    $(LIBRARY_DIR)/P6object.pbc \
+    $(LIBRARY_DIR)/PCT/HLLCompiler.pbc \
+    $(LIBRARY_DIR)/PCT/PAST.pbc

Copied: trunk/ext/nqp-rx/Rules.mak (from r43591, branches/one_make/ext/nqp-rx/Rules.mak)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ trunk/ext/nqp-rx/Rules.mak	Tue Jan 26 02:39:50 2010	(r43593, copy of r43591, branches/one_make/ext/nqp-rx/Rules.mak)
@@ -0,0 +1,23 @@
+## XXX does not cover .includes of core .pasm files
+
+$(LIBRARY_DIR)/Regex.pbc: ext/nqp-rx/src/stage0/Regex-s0.pir $(PARROT)
+	$(PARROT) -o $@ ext/nqp-rx/src/stage0/Regex-s0.pir
+
+$(LIBRARY_DIR)/HLL.pbc: ext/nqp-rx/src/stage0/HLL-s0.pir $(PARROT)
+	$(PARROT) -o $@ ext/nqp-rx/src/stage0/HLL-s0.pir
+
+$(LIBRARY_DIR)/P6Regex.pbc: ext/nqp-rx/src/stage0/P6Regex-s0.pir $(PARROT)
+	$(PARROT) -o $@ ext/nqp-rx/src/stage0/P6Regex-s0.pir
+
+$(LIBRARY_DIR)/nqp-rx.pbc: ext/nqp-rx/src/stage0/NQP-s0.pir $(PARROT)
+	$(PARROT) -o $@ ext/nqp-rx/src/stage0/NQP-s0.pir
+
+## TT #1398 - pbc_to_exe cannot generate a specified target file
+parrot-nqp.pbc : $(LIBRARY_DIR)/nqp-rx.pbc
+	$(CP) $(LIBRARY_DIR)/nqp-rx.pbc $@
+
+$(NQP_RX) : $(NQPRX_LIB_PBCS) $(PBC_TO_EXE) parrot-nqp.pbc
+	$(PBC_TO_EXE) parrot-nqp.pbc
+
+$(INSTALLABLENQP) : $(NQPRX_LIB_PBCS) $(SRC_DIR)/install_config$(O) $(PBC_TO_EXE) parrot-nqp.pbc
+	$(PBC_TO_EXE) parrot-nqp.pbc --install

Modified: trunk/lib/Parrot/Configure/Compiler.pm
==============================================================================
--- trunk/lib/Parrot/Configure/Compiler.pm	Tue Jan 26 00:46:48 2010	(r43592)
+++ trunk/lib/Parrot/Configure/Compiler.pm	Tue Jan 26 02:39:50 2010	(r43593)
@@ -250,20 +250,20 @@
 
 For instance:
 
-  #IF(win32): $(SRC_DIR)/atomic/gcc_x86$(O)
+  #IF(win32): src/atomic/gcc_x86$(O)
 
 will be included if the platform is win32.
 
-  #IF(cpuarch==i386): $(SRC_DIR)/atomic/gcc_x86$(O)
+  #IF(cpuarch==i386): src/atomic/gcc_x86$(O)
 
 will be included if the value of the config key "cpuarch" is "i386".
 
-  #IF(cpuarch==i386): $(SRC_DIR)/atomic/gcc_x86$(O)
-  #ELSIF(cpuarch==sparcv9): $(SRC_DIR)/atomic/sparc_v9.s
+  #IF(cpuarch==i386): src/atomic/gcc_x86$(O)
+  #ELSIF(cpuarch==sparcv9): src/atomic/sparc_v9.s
   #ELSE:
 
-will include " $(SRC_DIR)/atomic/gcc_x86$(O)" if the config key "cpuarch" is
-ste to "i386", will include " $(SRC_DIR)/atomic/sparc_v9.s" instead if
+will include " src/atomic/gcc_x86$(O)" if the config key "cpuarch" is
+ste to "i386", will include " src/atomic/sparc_v9.s" instead if
 "cpuarch" is set to "sparcv9", and will include an empty line otherwise.
 
   #IF(win32 and glut and not cygwin):
@@ -380,7 +380,6 @@
         if ( $options{file_type} eq 'makefile' ) {
             $options{replace_slashes}   = 1;
             $options{conditioned_lines} = 1;
-            $options{no_simply_expanded_var} = ! $conf->data->get('gmake_version');
         }
     }
 
@@ -564,11 +563,6 @@
             $line =~ s{(\\\*)}{\\$1}g;
         }
 
-        if ( $options{no_simply_expanded_var} ) {
-            # replace := with =
-            $line =~ s{:=}{=};
-        }
-
         print $out $line;
     }
 

Modified: trunk/lib/Parrot/Configure/Options/Test/Prepare.pm
==============================================================================
--- trunk/lib/Parrot/Configure/Options/Test/Prepare.pm	Tue Jan 26 00:46:48 2010	(r43592)
+++ trunk/lib/Parrot/Configure/Options/Test/Prepare.pm	Tue Jan 26 02:39:50 2010	(r43593)
@@ -36,9 +36,6 @@
     my @postconfiguration_tests = (
         @steps_tests,
         glob("t/postconfigure/*.t"),
-        glob("t/tools/pmc2cutils/*.t"),
-        glob("t/tools/ops2cutils/*.t"),
-        glob("t/tools/ops2pm/*.t"),
         glob("t/pharness/*.t"),
     );
     return @postconfiguration_tests;

Modified: trunk/lib/Parrot/Configure/Step/List.pm
==============================================================================
--- trunk/lib/Parrot/Configure/Step/List.pm	Tue Jan 26 00:46:48 2010	(r43592)
+++ trunk/lib/Parrot/Configure/Step/List.pm	Tue Jan 26 02:39:50 2010	(r43593)
@@ -66,7 +66,6 @@
     gen::config_h
     gen::core_pmcs
     gen::crypto
-    gen::parrot_include
     gen::opengl
     gen::call_list
     gen::makefiles

Modified: trunk/lib/Parrot/Docs/Section/Tools.pm
==============================================================================
--- trunk/lib/Parrot/Docs/Section/Tools.pm	Tue Jan 26 00:46:48 2010	(r43592)
+++ trunk/lib/Parrot/Docs/Section/Tools.pm	Tue Jan 26 02:39:50 2010	(r43593)
@@ -55,7 +55,6 @@
             '',
             $self->new_item( '', 'docs/configuration.pod' ),
             $self->new_item( '', 'tools/build/c2str.pl' ),
-            $self->new_item( '', 'tools/build/dynoplibs.pl' ),
             $self->new_item( '', 'tools/build/dynpmc.pl' ),
             $self->new_item( '', 'tools/build/ops2c.pl' ),
             $self->new_item( '', 'tools/build/ops2pm.pl' ),

Copied: trunk/lib/Parrot/H2inc.pm (from r43591, branches/one_make/lib/Parrot/H2inc.pm)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ trunk/lib/Parrot/H2inc.pm	Tue Jan 26 02:39:50 2010	(r43593, copy of r43591, branches/one_make/lib/Parrot/H2inc.pm)
@@ -0,0 +1,357 @@
+package Parrot::H2inc;
+# Copyright (C) 2010, Parrot Foundation.
+# $Id$
+
+use strict;
+use warnings;
+use Exporter;
+our @ISA = qw( Exporter );
+our @EXPORT_OK = qw(
+    parse_file
+    perform_directive
+    generate_text
+    print_generated_file
+);
+
+=head1 NAME
+
+Parrot::H2inc - Subroutines used in F<tools/build/h2inc.pl>
+
+=head1 DESCRIPTION
+
+This package exports on demand only four subroutines used in
+F<tools/build/h2inc.pl>.
+
+=head1 SUBROUTINES
+
+=head2 C<parse_file()>
+
+=over 4
+
+=item * Arguments
+
+    $directive = parse_file($in_file, $out_file);
+
+List of 2 elements: string holding name of incoming file; string holding name of outgoing file.
+
+=item * Return Value
+
+If successful, returns a hash reference.
+
+=back
+
+=cut
+
+sub parse_file {
+    my ( $in_file, $out_file) = @_;
+
+    my ( @directives, %values, $last_val, $cur, $or_continues );
+    open my $fh, '<', $in_file or die "Can't open $in_file: $!\n";
+    while ( my $line = <$fh> ) {
+        if (
+            $line =~ m!
+            &gen_from_(enum|def) \( ( [^)]* ) \)
+            (?: \s+ prefix \( (\w+) \) )?
+            (?: \s+ subst \( (s/.*?/.*?/[eig]?) \) )?
+            !x
+            )
+        {
+            $cur and die "Missing '&end_gen' in $in_file\n";
+            my $file;
+            foreach (split ' ', $2) {
+                $file = $_ if $out_file =~ /$_$/;
+            }
+            $cur = {
+                type   => $1,
+                file   => $file,
+                prefix => defined $3 ? $3 : '',
+                defined $4 ? ( subst => $4 ) : (),
+            };
+            $last_val = -1;
+        }
+        elsif ( $line =~ /&end_gen\b/ ) {
+            $cur or die "Missing &gen_from_(enum|def) in $in_file\n";
+            return $cur if defined $cur->{file};
+            $cur = undef;
+        }
+
+        $cur or next;
+
+        if ( $cur->{type} eq 'def' && $line =~ /^\s*#define\s+(\w+)\s+(-?\w+|"[^"]*")/ ) {
+            push @{ $cur->{defs} }, [ $1, $2 ];
+        }
+        elsif ( $cur->{type} eq 'enum' ) {
+            # Special case: enum value is or'd combination of other values
+            if ( $or_continues ) {
+                $or_continues = 0;
+                my $last_def = $cur->{defs}->[-1];
+                my ($k, $v) = @{$last_def};
+                my @or_values = grep {defined $_} $line =~ /^\s*(-?\w+)(?:\s*\|\s*(-?\w+))*/;
+                for my $or (@or_values) {
+                    if ( defined $values{$or} ) {
+                        $v |= $values{$or};
+                    }
+                    elsif ( $or =~ /^0/ ) {
+                        $v |= oct $or;
+                    }
+                }
+                if ($line =~ /\|\s*$/) {
+                    $or_continues = 1;
+                }
+                $values{$k} = $last_val = $v;
+                $cur->{defs}->[-1]->[1] = $v;
+            }
+            elsif ( $line =~ /^\s*(\w+)\s*=\s*(-?\w+)\s*\|/ ) {
+                my ( $k, $v ) = ( $1, $2 );
+                my @or_values = ($v, $line =~ /\|\s*(-?\w+)/g);
+                $v = 0;
+                for my $or (@or_values) {
+                    if ( defined $values{$or} ) {
+                        $v |= $values{$or};
+                    }
+                    elsif ( $or =~ /^0/ ) {
+                        $v |= oct $or;
+                    }
+                }
+                if ($line =~ /\|\s*$/) {
+                    $or_continues = 1;
+                }
+                $values{$k} = $last_val = $v;
+                push @{ $cur->{defs} }, [ $k, $v ];
+            }
+            elsif ( $line =~ /^\s*(\w+)\s*=\s*(-?\w+)/ ) {
+                my ( $k, $v ) = ( $1, $2 );
+                if ( defined $values{$v} ) {
+                    $v = $values{$v};
+                }
+                elsif ( $v =~ /^0/ ) {
+                    $v = oct $v;
+                }
+                $values{$k} = $last_val = $v;
+                push @{ $cur->{defs} }, [ $k, $v ];
+            }
+            elsif ( $line =~ m!^\s*(\w+)\s*(?:,\s*)?(?:/\*|$)! ) {
+                my $k = $1;
+                my $v = $values{$k} = ++$last_val;
+                push @{ $cur->{defs} }, [ $k, $v ];
+            }
+        }
+    }
+    $cur and die "Missing '&end_gen' in $in_file\n";
+    close $fh or die "Could not close handle to $in_file after reading: $!";
+
+    return;
+}
+
+=head2 C<perform_directive()>
+
+=over 4
+
+=item * Arguments
+
+    $defs_ref = perform_directive($directive);
+
+Single hash reference (which is the return value from a successful run of
+C<parse_file()>.
+
+=item * Return Value
+
+Array reference.
+
+=back
+
+=cut
+
+sub perform_directive {
+    my ($d) = @_;
+
+    my @defs = prepend_prefix( $d->{prefix}, @{ $d->{defs} } );
+    if ( my $subst = $d->{subst} ) {
+        @defs = transform_name( sub { local $_ = shift; eval $subst; $_ }, @defs );
+    }
+    return \@defs;
+}
+
+=head2 C<const_to_parrot()>
+
+=over 4
+
+=item * Arguments
+
+    $gen = join "\n", const_to_parrot(@defs);
+
+List.
+
+=item * Return Value
+
+String.
+
+=back
+
+=cut
+
+sub const_to_parrot {
+
+    my $keylen = (sort { $a <=> $b } map { length($_->[0]) } @_ )[-1] ;
+    my $vallen = (sort { $a <=> $b } map { length($_->[1]) } @_ )[-1] ;
+
+    map {sprintf ".macro_const %-${keylen}s %${vallen}s", $_->[0], $_->[1]} @_;
+}
+
+=head2 C<const_to_perl()>
+
+=over 4
+
+=item * Arguments
+
+    $gen = join "\n", const_to_perl(@defs);
+
+List.
+
+=item * Return Value
+
+String.
+
+=back
+
+=cut
+
+sub const_to_perl {
+
+    my $keylen = (sort { $a <=> $b } map { length($_->[0]) } @_ )[-1] ;
+
+    map {sprintf "use constant %-${keylen}s => %s;", $_->[0], $_->[1]} @_;
+}
+
+=head2 C<transform_name()>
+
+=over 4
+
+=item * Arguments
+
+    transform_name( sub { $prefix . $_[0] }, @_ );
+
+List of two or more elements, the first element of which is a subroutine
+reference.
+
+=item * Return Value
+
+List which is a mapping of the transformations executed by the first argument
+upon the remaining arguments.
+
+=back
+
+=cut
+
+sub transform_name {
+    my $action = shift;
+
+    return map { [ $action->( $_->[0] ), $_->[1] ] } @_;
+}
+
+=head2 C<prepend_prefix()>
+
+=over 4
+
+=item * Arguments
+
+    @defs = prepend_prefix $d->{prefix}, @{ $d->{defs} };
+
+List of two or more elements, the first element of which is a string.
+
+=item * Return Value
+
+List.
+
+=back
+
+=cut
+
+sub prepend_prefix {
+    my $prefix = shift;
+
+    transform_name( sub { $prefix . $_[0] }, @_ );
+}
+
+=head2 C<generate_text()>
+
+=over 4
+
+=item * Argument
+
+    $generated_text = generate_text($directive, \@defs);
+
+List of two arguments: Directive hashref; reference to array of definitions.
+
+=item * Return Value
+
+String holding main text to be printed to new file.
+
+=back
+
+=cut
+
+sub generate_text {
+    my ($directive, $defs_ref) = @_;
+
+    my $target  = $directive->{file};
+    my $generated_text;
+    if ($target =~ /\.pm$/) {
+        $generated_text = join "\n", const_to_perl(@{ $defs_ref });
+        $generated_text .= "\n1;";
+    }
+    else {
+        $generated_text = join "\n", const_to_parrot(@{ $defs_ref });
+    }
+    return $generated_text;
+}
+
+=head2 C<print_generated_file()>
+
+=over 4
+
+=item * Argument
+
+    print_generated_file( {
+        in      => $in_file,
+        out     => $out_file,
+        script  => $0,
+        gen     => $generated_text,
+    } );
+
+Hash reference.  Elements pertain to file being read, file being created,
+calling program (typically, F<tools/build/h2inc.pl>) and string of text to be
+printed to file.
+
+=item * Return Value
+
+Implicitly returns true upon success.
+
+=back
+
+=cut
+
+sub print_generated_file {
+    my $args = shift;
+    open my $out_fh, '>', $args->{out} or die "Can't open $args->{out}: $!\n";
+    print $out_fh <<"EOF";
+# DO NOT EDIT THIS FILE.
+#
+# This file is generated automatically from
+# $args->{in} by $args->{script}
+#
+# Any changes made here will be lost.
+#
+$args->{gen}
+EOF
+    close $out_fh;
+}
+
+1;
+
+# Local Variables:
+#   mode: cperl
+#   cperl-indent-level: 4
+#   fill-column: 100
+# End:
+# vim: expandtab shiftwidth=4:

Copied: trunk/runtime/parrot/library/Rules.mak (from r43591, branches/one_make/runtime/parrot/library/Rules.mak)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ trunk/runtime/parrot/library/Rules.mak	Tue Jan 26 02:39:50 2010	(r43593, copy of r43591, branches/one_make/runtime/parrot/library/Rules.mak)
@@ -0,0 +1,23 @@
+# Track static dependencies 
+
+# XXX only a partial mapping.
+
+$(LIBRARY_DIR)/PGE/Hs.pbc : \
+    $(LIBRARY_DIR)/PGE.pbc
+
+$(LIBRARY_DIR)/PGE/Glob.pbc : \
+    $(LIBRARY_DIR)/PGE.pbc \
+    $(LIBRARY_DIR)/PGE/Dumper.pbc
+
+$(LIBRARY_DIR)/PGE/Perl6Grammar.pbc : \
+    $(LIBRARY_DIR)/PGE.pbc \
+    $(LIBRARY_DIR)/PGE/Text.pbc \
+    $(LIBRARY_DIR)/PGE/Util.pbc \
+    $(LIBRARY_DIR)/PCT/HLLCompiler.pbc
+
+$(LIBRARY_DIR)/Tcl/Glob.pbc : \
+    $(LIBRARY_DIR)/PGE.pbc \
+    $(LIBRARY_DIR)/PCT/HLLCompiler.pbc
+
+$(LIBRARY_DIR)/P6Object.pbc : \
+    $(LIBRARY_DIR)/dumper.pbc

Modified: trunk/t/configure/testlib/adefectivefoobar
==============================================================================
--- trunk/t/configure/testlib/adefectivefoobar	Tue Jan 26 00:46:48 2010	(r43592)
+++ trunk/t/configure/testlib/adefectivefoobar	Tue Jan 26 02:39:50 2010	(r43593)
@@ -62,7 +62,6 @@
 gen::config_h
 gen::core_pmcs
 gen::crypto
-gen::parrot_include
 gen::opengl
 gen::call_list
 gen::languages

Modified: trunk/t/configure/testlib/bdefectivefoobar
==============================================================================
--- trunk/t/configure/testlib/bdefectivefoobar	Tue Jan 26 00:46:48 2010	(r43592)
+++ trunk/t/configure/testlib/bdefectivefoobar	Tue Jan 26 02:39:50 2010	(r43593)
@@ -72,7 +72,6 @@
 gen::config_h
 gen::core_pmcs
 gen::crypto
-gen::parrot_include
 gen::opengl
 gen::call_list
 gen::languages

Modified: trunk/t/configure/testlib/cdefectivefoobar
==============================================================================
--- trunk/t/configure/testlib/cdefectivefoobar	Tue Jan 26 00:46:48 2010	(r43592)
+++ trunk/t/configure/testlib/cdefectivefoobar	Tue Jan 26 02:39:50 2010	(r43593)
@@ -73,7 +73,6 @@
 gen::config_h
 gen::core_pmcs
 gen::crypto
-gen::parrot_include
 gen::opengl
 gen::call_list
 gen::languages

Modified: trunk/t/configure/testlib/ddefectivefoobar
==============================================================================
--- trunk/t/configure/testlib/ddefectivefoobar	Tue Jan 26 00:46:48 2010	(r43592)
+++ trunk/t/configure/testlib/ddefectivefoobar	Tue Jan 26 02:39:50 2010	(r43593)
@@ -64,7 +64,6 @@
 gen::config_h
 gen::core_pmcs
 gen::crypto
-gen::parrot_include
 gen::opengl
 gen::call_list
 gen::languages

Modified: trunk/t/configure/testlib/verbosefoobar
==============================================================================
--- trunk/t/configure/testlib/verbosefoobar	Tue Jan 26 00:46:48 2010	(r43592)
+++ trunk/t/configure/testlib/verbosefoobar	Tue Jan 26 02:39:50 2010	(r43593)
@@ -66,7 +66,6 @@
 gen::config_h
 gen::core_pmcs
 gen::crypto
-gen::parrot_include
 gen::opengl
 gen::call_list
 gen::languages

Deleted: trunk/t/steps/gen/parrot_include-01.t
==============================================================================
--- trunk/t/steps/gen/parrot_include-01.t	Tue Jan 26 02:39:50 2010	(r43592)
+++ /dev/null	00:00:00 1970	(deleted)
@@ -1,74 +0,0 @@
-#! perl
-# Copyright (C) 2007, Parrot Foundation.
-# $Id$
-# gen/parrot_include-01.t
-
-use strict;
-use warnings;
-use Test::More tests =>  7;
-use Carp;
-use lib qw( lib );
-use_ok('config::gen::parrot_include');
-use Parrot::Configure::Options qw( process_options );
-use Parrot::Configure::Step::Test;
-use Parrot::Configure::Test qw(
-    test_step_constructor_and_description
-);
-
-########## regular ##########
-
-my ($args, $step_list_ref) = process_options(
-    {
-        argv => [ ],
-        mode => q{configure},
-    }
-);
-
-my $conf = Parrot::Configure::Step::Test->new;
-$conf->include_config_results( $args );
-
-my $pkg = q{gen::parrot_include};
-$conf->add_steps($pkg);
-$conf->options->set( %{$args} );
-my $step = test_step_constructor_and_description($conf);
-my %missing_files = ();
-foreach my $f ( @{ $step->{source_files} } ) {
-    $missing_files{$f}++ unless (-f $f);
-}
-is(keys %missing_files, 0, "No needed source files are missing");
-ok(-d $step->{destdir}, "Directory needed has been located");
-
-pass("Completed all tests in $0");
-
-################### DOCUMENTATION ###################
-
-=head1 NAME
-
-gen/parrot_include-01.t - test gen::parrot_include
-
-=head1 SYNOPSIS
-
-    % prove t/steps/gen/parrot_include-01.t
-
-=head1 DESCRIPTION
-
-The files in this directory test functionality used by F<Configure.pl>.
-
-The tests in this file test gen::parrot_include.
-
-=head1 AUTHOR
-
-James E Keenan
-
-=head1 SEE ALSO
-
-config::gen::parrot_include, F<Configure.pl>.
-
-=cut
-
-# Local Variables:
-#   mode: cperl
-#   cperl-indent-level: 4
-#   fill-column: 100
-# End:
-# vim: expandtab shiftwidth=4:

Modified: trunk/t/tools/ops2pm/00-qualify.t
==============================================================================
--- trunk/t/tools/ops2pm/00-qualify.t	Tue Jan 26 00:46:48 2010	(r43592)
+++ trunk/t/tools/ops2pm/00-qualify.t	Tue Jan 26 02:39:50 2010	(r43593)
@@ -5,7 +5,7 @@
 
 use strict;
 use warnings;
-use Test::More tests => 11;
+use Test::More tests =>  8;
 use FindBin;
 use lib ( "$FindBin::Bin/../../../lib", );
 use_ok('Parrot::Ops2pm');
@@ -16,37 +16,7 @@
 ok( -f "$FindBin::Bin/../../../src/ops/core.ops",      "src/ops/core.ops located" );
 ok( -f "$FindBin::Bin/../../../src/ops/ops.num",       "src/ops/ops.num located" );
 ok( -f "$FindBin::Bin/../../../src/ops/ops.skip",      "src/ops/ops.skip located" );
-ok(
-    !-e "$FindBin::Bin/../../../lib/Parrot/OpLib/core.pm",
-    "lib/Parrot/OpLib/core.pm correctly does not yet exist"
-);
-ok(
-    !-e "$FindBin::Bin/../../../include/parrot/oplib/ops.h",
-    "include/parrot/oplib/ops.h correctly does not yet exist"
-);
-
-my $message = <<END_OF_MESSAGE;
-
-
-The files in this directory test the publicly callable methods and
-subroutines of Parrot::Ops2pm and Parrot::Ops2pm::Auxiliary.
-By doing so, they test the functionality of the ops2pm.pl utility.
-
-Since ops2pm.pl is invoked only once during 'make' -- very near the
-beginning of the build process -- and since its purpose is to create files
-used later in that process, tests of its functionality can give meaningful
-results only if you run them when your file system under the top-level
-Parrot directory is in a 'pre-make' state, i.e., *before* you have run 'perl
-Configure.pl' but *after* you have run 'make'.  These tests should pass
-if run at that point in the build process, but if you have already
-executed 'make', some of these tests will necessarily fail. Hence, they
-should *not* be included in the set of tests run by 'make test'.
 
-In short, these are tests of Parrot::Ops2pm and
-Parrot::Ops2pm::Auxiliary but are *not* tests of Parrot itself.
-
-END_OF_MESSAGE
-pass($message);
 pass("Completed all tests in $0");
 
 ################### DOCUMENTATION ###################

Deleted: trunk/t/tools/pmc2cutils/00-qualify.t
==============================================================================
--- trunk/t/tools/pmc2cutils/00-qualify.t	Tue Jan 26 02:39:50 2010	(r43592)
+++ /dev/null	00:00:00 1970	(deleted)
@@ -1,128 +0,0 @@
-#! perl
-# Copyright (C) 2006-2007, Parrot Foundation.
-# $Id$
-# 00-qualify.t
-
-use strict;
-use warnings;
-use Test::More tests => 10;
-use FindBin;
-use lib ( "$FindBin::Bin/../..", "$FindBin::Bin/../../lib", "$FindBin::Bin/../../../lib", );
-use_ok('Parrot::Pmc2c::Pmc2cMain');
-
-ok( -f "$FindBin::Bin/../../../Makefile",          "Makefile located" );
-ok( -f "$FindBin::Bin/../../../myconfig",          "myconfig located" );
-ok( -f "$FindBin::Bin/../../../lib/Parrot/PMC.pm", "lib/Parrot/PMC.pm located" );
-
-my ( @files, %sfx );
- at files = glob("$FindBin::Bin/../../../src/pmc/*");
-for my $f (@files) {
-    if ( $f =~ m/.*\.(.*)$/ ) {
-        my $s = $1;
-        $sfx{$s}++;
-    }
-}
-
-# In src/pmc, we should have only .pmc files (81+ of them), 1 .num file,
-# and >= .h files none of whose names may begin 'pmc_' (lest they be left over
-# from a previous build).
-my $suffixqty = scalar( keys %sfx );
-ok( ( ( 2 <= $suffixqty ) and ( $suffixqty <= 3 ) ), "only 2 or 3 file suffixes in src/pmc" );
-
-ok( $sfx{'num'}, ".num suffix correctly located" );
-ok( $sfx{'pmc'}, ".pmc suffix correctly located" );
-if ( $sfx{'h'} ) {
-    my $pmc_leftovers = 0;
-    foreach my $f (@files) {
-        $pmc_leftovers++ if $f =~ m/^pmc_.*\.h$/;
-    }
-    is( $pmc_leftovers, 0, "No left-over 'pmc_*.h' files in src/pmc/" );
-}
-else {
-    pass("No .h files in src/pmc/");
-}
-
-my $message = <<END_OF_MESSAGE;
-
-
-The files in this directory test the publicly callable methods of
-Parrot::Pmc2c::Pmc2cMain.  By doing so, they test the functionality
-of the pmc2c.pl utility.
-
-Since pmc2c.pl is invoked many times during 'make', tests of its
-functionality can give meaningful results only if you run them
-when your file system under the top-level Parrot directory is in
-a 'pre-make' state, i.e., you have run 'perl Configure.pl' but
-have *not* yet run 'make'.  These tests should pass if run at
-that point in the build process, but some will necessarily fail
-if 'make' has already been executed.  Hence, they should not be
-included in the set of tests run by 'make test'.
-
-In short, these are tests of Parrot::Pmc2c::Pmc2cMain but are *not*
-tests of Parrot itself.
-
-END_OF_MESSAGE
-pass($message);
-pass("Completed all tests in $0");
-
-################### DOCUMENTATION ###################
-
-=head1 NAME
-
-00-qualify.t - Is this the right point to test Parrot build tools?
-
-=head1 SYNOPSIS
-
-    % prove t/tools/pmc2cutils/00-qualify.t
-
-=head1 DESCRIPTION
-
-The files in this directory test the publicly callable methods of
-F<lib/Parrot/Pmc2c/Pmc2cMain.pm>.  By doing so, they test the functionality
-of the F<pmc2c.pl> utility.  That functionality has largely been extracted
-into the methods of F<Pmc2cMain.pm>.
-
-Since F<pmc2c.pl> is invoked during C<make>, tests of its functionality can
-give meaningful results only if they take into consideration the status of the
-file structure at particular points in the build process:
-
-=over 4
-
-=item *
-
-after F<Configure.pl> has run but before F<make> has run;
-
-=item *
-
-at various points while F<make> is running; or
-
-=item *
-
-once F<make> has completed.
-
-=back
-
-The tests in F<00-qualify.t> attempt to confirm that you are at the first of
-these three stages.  It tests for the presence or absence of certain files to
-form a judgment as to whether F<Configure.pl> has been run (it should have
-been) and whether F<make> has been run (it should I<not> have been).  The
-tests make certain assumptions about what files should be present or not --
-assumptions which may be invalid if the Parrot build process changes in the
-future.
-
-=head1 AUTHOR
-
-James E Keenan
-
-=head1 SEE ALSO
-
-Parrot::Pmc2c, F<pmc2c.pl>.
-
-=cut
-
-# Local Variables:
-#   mode: cperl
-#   cperl-indent-level: 4
-#   fill-column: 100
-# End:
-# vim: expandtab shiftwidth=4:

Modified: trunk/t/tools/pmc2cutils/04-dump_pmc.t
==============================================================================
--- trunk/t/tools/pmc2cutils/04-dump_pmc.t	Tue Jan 26 00:46:48 2010	(r43592)
+++ trunk/t/tools/pmc2cutils/04-dump_pmc.t	Tue Jan 26 02:39:50 2010	(r43593)
@@ -19,7 +19,7 @@
     }
     unshift @INC, qq{$topdir/lib};
 }
-use Test::More tests => 106;
+use Test::More tests => 108;
 use File::Basename;
 use File::Copy;
 use FindBin;
@@ -311,12 +311,12 @@
         my $rv = copy( $pmcfile, qq{$temppmcdir/$basename} );
         $copycount++ if $rv;
     }
-    is( $copycount, $pmcfilecount, "all src/pmc/*.pmc files copied to tempdir" );
+    is( $copycount, $pmcfilecount,
+        "all src/pmc/*.pmc files copied to tempdir" );
     my @include = ( $tdir, $temppmcdir, @include_orig );
 
     @args = (
         qq{$temppmcdir/default.pmc},
-
         #    qq{$temppmcdir/scalar.pmc},
         qq{$temppmcdir/integer.pmc},
     );
@@ -332,12 +332,10 @@
     $dump_file = $self->dump_vtable("$main::topdir/src/vtable.tbl");
     ok( -e $dump_file, "dump_vtable created vtable.dump" );
 
-    eval { $self->dump_pmc(); };
-    like(
-        $@,
-        qr/^cannot find file 'scalar\.dump' in path/,
-        "ERROR WAS '$@', path is $temppmcdir"
-    );
+     $self->dump_pmc();
+    ok( -f qq{$temppmcdir/default.dump}, "default.dump created as expected" );
+    ok( ! -f qq{$temppmcdir/scalar.dump},  "scalar.dump not created as expected" );
+    ok( -f qq{$temppmcdir/integer.dump}, "integer.dump created as expected" );
 
     ok( chdir $cwd, "changed back to original directory" );
 }
@@ -587,10 +585,6 @@
 =head1 SEE ALSO
 
 Parrot::Pmc2c, F<pmc2c.pl>.
-        "array.dump correctly overwritten");
-
-    ok(chdir $cwd, "changed back to original directory");
-}
 
 pass("Completed all tests in $0");
 

Modified: trunk/t/tools/pmc2cutils/README
==============================================================================
--- trunk/t/tools/pmc2cutils/README	Tue Jan 26 00:46:48 2010	(r43592)
+++ trunk/t/tools/pmc2cutils/README	Tue Jan 26 02:39:50 2010	(r43593)
@@ -4,18 +4,17 @@
 
 This directory contains test code for Parrot::Pmc2c::Pmc2cMain, a Perl5
 module whose publicly callable methods and other subroutines supply
-functionality for Parrot build tool 'pmc2c.pl'.
-
-Since 'pmc2c.pl' is invoked many times during 'make', tests of its
-functionality can give meaningful results only if you run them
-when your file system beneath the top-level Parrot directory is in
-a 'pre-make' state, i.e., you have run 'perl Configure.pl' but
-have *not* yet run 'make'.  These tests should pass if run at
-that point in the build process, but some will necessarily fail
-if 'make' has already been executed.  Hence, they should not be
-included in the set of tests run by 'make test'.
-
-In short, these are tests of Parrot::Pmc2c::Pmc2cMain but are *not*
-tests of Parrot itself.
+functionality to Parrot build tool 'tools/build/pmc2c.pl'.
 
+'pmc2c.pl' is invoked many times during 'make', so it is important that
+Parrot developers be able to understand and, if necessary, refactor its
+component parts.  The tests in this directory serve to illustrate those
+parts.  They should be run by any developer refactoring 'pmc2c.pl' or
+the many modules underlying that program.
 
+However, since the processes they test precede the creation of the
+'parrot' executable, failures of these tests do not necessarily indicate
+problems with that executable.  For that reason, these tests are not
+included in the 'make test' or 'make fulltest' targets.  They can,
+however, be run as part of 'make buildtools_tests' and developers are
+encouraged to do so.

Copied: trunk/tools/build/dynpmc.pl (from r43591, branches/one_make/tools/build/dynpmc.pl)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ trunk/tools/build/dynpmc.pl	Tue Jan 26 02:39:50 2010	(r43593, copy of r43591, branches/one_make/tools/build/dynpmc.pl)
@@ -0,0 +1,292 @@
+# Copyright (C) 2001-2009, Parrot Foundation.
+# $Id$
+
+=head1 NAME
+
+tools/build/dynpmc.pl - Build script for dynamic PMCs
+
+=head1 DESCRIPTION
+
+This script is used for building dynamic PMCs.  It is deprecated,
+L<http://trac.parrot.org/parrot/ticket/338>.
+
+=cut
+
+use strict;
+use warnings;
+use FindBin;
+use lib "$FindBin::Bin/../..";
+use lib "$FindBin::Bin/../../lib";
+
+use File::Copy qw(copy);
+use Storable;
+
+use Parrot::Config qw/%PConfig/;
+
+# Config stuff
+our $CC            = $PConfig{cc} . ' -c';
+our $LD            = $PConfig{ld};
+our $LDFLAGS       = $PConfig{ldflags} . ' ' . $PConfig{ld_debug} . ' ' . $PConfig{rpath_blib};
+our $LD_LOAD_FLAGS = $PConfig{ld_load_flags};
+our $LOAD_EXT      = $PConfig{load_ext};
+our $O             = $PConfig{o};
+our $CFLAGS        = $PConfig{ccflags} . ' '. $PConfig{cc_shared} . ' ' . $PConfig{cc_debug} . ' ' . $PConfig{ccwarn} . ' ' . $PConfig{cc_hasjit} . ' ' . $PConfig{cg_flag} . ' ' . $PConfig{gc_flag};
+our $BUILD_DIR     = $PConfig{build_dir};
+
+our $LIBPARROT = q[];
+if ($PConfig{parrot_is_shared}) {
+    $LIBPARROT = $PConfig{libparrot_ldflags};
+}
+
+# PMC2C Config
+our $SLASH = $PConfig{slash};
+our $PMC2C = "$^X \"" . join($SLASH, qw/tools build pmc2c.pl/) . '"';
+
+# Actual commands
+sub compile_cmd {
+    my ($target, $source) = @_;
+
+    my $dynpmc_include = '';
+    if (defined $ENV{DYNPMC_INCLUDE} )
+    {
+        $dynpmc_include = $ENV{DYNPMC_INCLUDE};
+        $dynpmc_include =~ s/,/" -I"/g;
+        $dynpmc_include = '-I"' . $dynpmc_include . '" ';
+    }
+
+    return
+        $CC . ' ' .
+        $PConfig{cc_o_out} . $target . ' ' .
+        '-I"' . $BUILD_DIR . $SLASH . 'include' .
+        "$dynpmc_include $CFLAGS $source";
+};
+
+sub partial_link_cmd {
+    my ($target, $libs, $sources) = @_;
+
+    my $liblist;
+    if ($^O =~ /mswin32/i) {
+        # Need to put various libraries in the link line.
+        if ($CC =~ /gcc/i) {
+            $liblist = join( ' ', map { "-l$_" } keys %$libs );
+            $liblist =~ s/-lgdbm/-llibgdbm/i;
+        }
+        else {
+            $liblist = join( ' ', map { "$_.lib" } keys %$libs );
+        }
+        my $extraLibs = $PConfig{libs} . ' ' . $PConfig{icu_shared};
+        $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 );
+        $liblist .= ' ' . $PConfig{libs} . ' ' . $PConfig{icu_shared};
+    }
+
+    if (defined $ENV{DYNPMC_LINK}) {
+        push @{$sources}, split /,/, $ENV{DYNPMC_LINK};
+    }
+
+    return
+        $LD . ' ' . $PConfig{ld_out} .
+        $target . ' ' .
+        join(' ', map {"\"$_\""} @$sources) .
+        " $liblist $LDFLAGS $LD_LOAD_FLAGS $LIBPARROT";
+}
+
+our $NOW = time();
+
+################### MAIN PROGRAM ################
+
+my ($mode, @pmcs) = @ARGV;
+
+if ($mode eq 'generate') {
+    # Convert X.pmc -> X.dump and X.c and also create any lib-GROUP.c files
+
+    generate_dump($_) foreach (@pmcs);
+    generate_c($_) foreach (@pmcs);
+
+    my ($group_files, $group_libs, $pmc_group, $pmc_libs) =
+        gather_groups_and_libs(@pmcs);
+
+    while (my ($group, $pmcs) = each %$group_files) {
+        my @pmcfiles = map { "$_.pmc" } @$pmcs;
+        if (needs_build("$group.c", @pmcfiles)) {
+            run("$PMC2C --library $group --c " . join(" ", at pmcfiles))
+              or die "pmc2c library creation failed ($?)\n";
+        }
+    }
+}
+elsif ($mode eq 'compile') {
+    my ($group_files, $group_libs, $pmc_group, $pmc_libs) =
+        gather_groups_and_libs(@pmcs);
+
+    # Convert X.c -> X.o for all X.c
+    compile($_) foreach (@pmcs);
+
+    # lib-GROUP.c
+    for my $group (keys %$group_files) {
+        compile("$group", "lib-$group")
+          or die "compile $group.c failed ($?)\n";
+    }
+}
+elsif ($mode eq 'linklibs') {
+    my ($group_files, $group_libs, $pmc_group, $pmc_libs) =
+        gather_groups_and_libs(@pmcs);
+
+    # Convert lib-GROUP.so + A.so + B.so ... -> GROUP.so
+    while (my ($group, $pmcs) = each %$group_files) {
+        partial_link($group, $group_libs->{$group}, [ "lib-$group", @$pmcs ] )
+          or die "partial link of $group failed ($?)\n";
+    }
+
+    # Link non-grouped PMCs individually
+    my @ungrouped_pmcs = grep { ! exists $pmc_group->{$_} } @pmcs;
+    partial_link($_, $pmc_libs->{$_}, [ $_ ] ) foreach (@ungrouped_pmcs);
+}
+elsif ($mode eq 'copy') {
+    # Copy *.so -> destination, where destination is the first
+    # argument, given as --destination=DIRECTORY
+    shift(@pmcs) =~ /--destination=(.*)/
+      or die "copy command requires destination";
+    my $dest = $1;
+
+    my ($group_files, $group_libs, $pmc_group, $pmc_libs) =
+        gather_groups_and_libs(@pmcs);
+    my @ungrouped_pmcs = grep { ! exists $pmc_group->{$_} } @pmcs;
+
+    my (@list_to_process) = (@ungrouped_pmcs, keys %$group_files);
+
+    die "nothing found to copy" unless @list_to_process;
+
+    foreach (@list_to_process) {
+        copy("$_$LOAD_EXT", $dest) or die "Copy $_$LOAD_EXT failed ($?)\n";
+
+        # Execute permissions on libraries is especially important on
+        # some platforms
+        if ($^O eq 'hpux' or $^O eq 'cygwin') {
+            chmod 0755, "$dest at slash@$_$LOAD_EXT";
+        }
+
+    }
+}
+else {
+    die "invalid command '$mode'\nmust be one of generate, compile, linklibs, or copy\n";
+}
+
+sub run {
+    print join(" ", @_), "\n";
+
+    return system(@_) == 0;
+}
+
+sub gather_groups_and_libs {
+    my @pmcs = @_;
+
+    my ( %group_files, %group_libs, %pmc_group, %pmc_libs );
+    for my $pmc (@pmcs) {
+        our $class = retrieve("$pmc.dump");
+
+        # there can be many libs
+        my %libs = %{ $class->{flags}{lib} || {} };
+        $pmc_libs{$pmc} = \%libs;
+
+        # There should be at most a single group
+        my $group = $class->{flags}{group}
+          or next;
+        $pmc_group{$pmc} = $group;
+        push @{ $group_files{$group} }, $pmc;
+        $group_libs{$group} ||= {};
+        foreach my $lib ( keys %libs ) {
+            $group_libs{$group}->{$lib} = 1;
+        }
+    }
+
+    return (\%group_files, \%group_libs, \%pmc_group, \%pmc_libs);
+}
+
+sub modtime {
+    my $ago = (-M shift);
+
+    if (defined $ago) {
+        return $NOW - $ago;
+    }
+    else {
+        return;
+    }
+}
+
+sub needs_build {
+    my ($target, @sources) = @_;
+
+    my $target_mod = modtime($target)
+      or return 1;
+    for my $source (@sources) {
+        return 1 if modtime($source) > $target_mod;
+    }
+
+    return 0;
+}
+
+sub generate_dump {
+    my ($pmc) = @_;
+
+    if (needs_build("$pmc.dump", "$pmc.pmc")) {
+        run("$PMC2C --dump $pmc.pmc")
+          or die "pmc2c dump failed ($?)\n";
+    }
+
+    return;
+}
+
+sub generate_c {
+    my ($pmc) = @_;
+
+    if (needs_build("$pmc.c", "$pmc.pmc")) {
+        run("$PMC2C --c $pmc.pmc")
+          or die "pmc2c code generation failed ($?)\n";
+    }
+
+    return;
+}
+
+sub compile {
+    my ($src_stem, $dest_stem) = @_;
+
+    $dest_stem ||= $src_stem;
+    if (needs_build("$dest_stem$O", "$src_stem.c")) {
+        run(compile_cmd("$dest_stem$O", "$src_stem.c"))
+          or die "compile $src_stem.c failed ($?)\n";
+    }
+    return 1;
+}
+
+sub partial_link {
+    my ($group, $libs, $stems) = @_;
+
+    my @sources = map { "$_$O" } @$stems;
+    if (needs_build("$group$LOAD_EXT", @sources)) {
+        return run(partial_link_cmd("$group$LOAD_EXT", $libs, \@sources))
+          or die "partial link $group$LOAD_EXT failed ($?)\n";
+    }
+    else {
+        return 1;
+    }
+}
+
+
+# Local Variables:
+#   mode: cperl
+#   cperl-indent-level: 4
+#   fill-column: 100
+# End:
+# vim: expandtab shiftwidth=4:

Copied: trunk/tools/build/h2inc.pl (from r43591, branches/one_make/tools/build/h2inc.pl)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ trunk/tools/build/h2inc.pl	Tue Jan 26 02:39:50 2010	(r43593, copy of r43591, branches/one_make/tools/build/h2inc.pl)
@@ -0,0 +1,55 @@
+# Copyright (C) 2009, Parrot Foundation.
+# $Id$
+
+=head1 NAME
+
+tools/build/h2inc.pl
+
+=head1 DESCRIPTION
+
+Generate C<.pasm> and C<.pm> files with constants based on C<.h> files.
+
+Invoked by F<make>.  Imports functions from Parrot::H2inc.
+
+=head1 USAGE
+
+    perl tools/build/h2inc.pl <input_file> <output_file>
+
+=cut
+
+use strict;
+use warnings;
+use lib qw( lib );
+use Parrot::H2inc qw(
+    parse_file
+    perform_directive
+    generate_text
+    print_generated_file
+);
+
+my $usage = "Usage: $0 <input_file> <output_file>\n";
+
+die $usage unless @ARGV == 2;
+my ($in_file, $out_file) = @ARGV;
+
+my $directive = parse_file($in_file, $out_file);
+die "invalid output file: '$out_file' for input '$in_file'" unless $directive;
+
+my $defs_ref = perform_directive($directive);
+
+my $generated_text = generate_text($directive, $defs_ref);
+
+print_generated_file( {
+    in      => $in_file,
+    out     => $out_file,
+    script  => $0,
+    gen     => $generated_text,
+} );
+
+
+# Local Variables:
+#   mode: cperl
+#   cperl-indent-level: 4
+#   fill-column: 100
+# End:
+# vim: expandtab shiftwidth=4:

Modified: trunk/tools/dev/checkdepend.pl
==============================================================================
--- trunk/tools/dev/checkdepend.pl	Tue Jan 26 00:46:48 2010	(r43592)
+++ trunk/tools/dev/checkdepend.pl	Tue Jan 26 02:39:50 2010	(r43593)
@@ -18,25 +18,37 @@
 
 =head1 DESCRIPTION
 
-A braindead script to check that every F<.c> file has makefile deps
+A braindead script to check that every file has makefile deps
 on its includes.
 
+ checkdepend.pl [--dump]
+
+If called with C<--dump>, no tests are run, and the pre-processed makefile
+is dumped (in lieu of having C<cc>'s C<-E> for C<make>.
+
 =head1 REQUIREMENTS
 
 A built parrot (Configure and make) to generate all files so we can analyze
 them. Ack is used to find the files. We are not currently requiring ack
 for development, so this is an optional test.
 
+=head1 BUGS
+
+The pre-processing of the makefile doesn't follow make's behavior: variables
+should have no value until they are defined; in our pre-processing, their
+values are propagated throughout the makefile regardless of order; This could
+cause false positives in the test output.
+
 =cut
 
 die 'no Makefile found; This tool requires a full build for analysis.'
     unless -e 'Makefile';
 
-my $files = `ack -fa {src,compilers,include} | grep '\\.[ch]\$'`;
+my @incfiles = split /\n/, `ack -fa src compilers include  | ack '\\.(c|h|pir)\$'`;
 
 our %deps;
 
-foreach my $file (sort split /\n/, $files) {
+foreach my $file (sort grep /\.[hc]$/, @incfiles) {
     # For now, skip any files that have generated dependencies
     next if $file =~ m{src/(ops|dynoplibs|dynpmc|pmc)/};
     next if $file =~ m{src/string/(charset|encoding)/};
@@ -44,11 +56,11 @@
     open my $fh, '<', $file;
     my $guts;
     {
-        local undef $/;
+        local $/;
         $guts = <$fh>;
     }
 
-    # Ingore anything inside a c-style comment.
+    # Ignore anything inside a c-style comment.
     $guts =~ s{\Q/*\E.*?\Q*/}{}gm;
 
     my @includes = $guts =~ m/#include "(.*)"/g;
@@ -76,75 +88,191 @@
     }
 }
 
-plan('no_plan');
+foreach my $file (sort grep /\.pir$/, @incfiles) {
+    open my $fh, '<', $file;
+    my $guts;
+    {
+        local $/;
+        $guts = <$fh>;
+    }
+
+    # Ignore anything inside a # - comment.
+    $guts =~ s{^#.*$}{}gm;
+    # Ignore anything inside pod.
+    $guts =~ s{^=.*^=cut$}{}gsm;
+    # Ignore anything inside strings that are assigned to a variable.
+    # (Avoid clobbering the strings used in .include 'foo.pir', etc.)
+    $guts =~ s{=\s*'[^']*'\s*$}{}gm;
+    $guts =~ s{=\s*"(?:[^"\\]|\\.)*"\s*$}{}gm;
+    # XXX also, heredocs (wheeeee!)
+
+    my @includes;
+    while ($guts =~ m/(?:\.include|\bload_bytecode)\s+(["'])(.*)\1/g) {
+        push @includes, $2;
+    }
+
+    # Canonicalize each of these includes.
+
+    $deps{$file} = [ ];
+    foreach my $include (@includes) {
+        # same dir as file?
+        my $file_dir = (File::Spec->splitpath($file))[1];
+        my $make_dep = collapse_path(File::Spec->catfile($file_dir,$include));
+        if (defined($make_dep) && -f $make_dep) {
+            push @{$deps{$file}}, $make_dep;
+            next;
+        }
+
+        # global 'runtime' dir?
+        $make_dep = collapse_path(File::Spec->catfile('runtime/parrot/include',$include));
+        if (defined($make_dep) && -f $make_dep) {
+            push @{$deps{$file}}, $make_dep;
+            next;
+        }
+        $make_dep = collapse_path(File::Spec->catfile('runtime/parrot/library',$include));
+        if (defined($make_dep) && -f $make_dep) {
+            push @{$deps{$file}}, $make_dep;
+            next;
+        }
+
+        # relative to top level?
+        $make_dep = collapse_path(File::Spec->catfile($include));
+        if (defined($make_dep) && -f $make_dep) {
+            push @{$deps{$file}}, $make_dep;
+            next;
+        }
 
-open my $mf, '<', "Makefile";
-my $rules;
-{
-    local undef $/;
-    $rules = <$mf>;
+        diag "couldn't find $include, included from $file";
+    }
 }
 
-# convert all \-newline continuations into single lines for ease of processing.
-$rules =~ s/\\\n//g;
+sub get_rules {
 
-# replace all _DIR variables with their expansions.
-while ($rules =~ s/^([A-Z_]+_DIR)\s*:?=\s*(\S*)$//m) {
-    my ($var,$val) = ($1, $2);
-    $rules =~ s/\$\($var\)/$val/g;
+    my ($filename, $rules) = @_;
+
+    open my $mf, '<', "$filename";
+    my $global_line_num = @$rules;
+    my $file_line_num   = 1;
+    my $escape_start    = 1;
+
+    foreach (<$mf>) {
+        my $line = $_;
+        chomp $line;
+        if ($_ =~ /^include\s+(.*)$/m) {
+            get_rules($1, $rules);
+            $global_line_num = @$rules;
+            $file_line_num++;
+        }
+        else {
+            $rules->[$global_line_num] =
+            {
+                filename => $filename,
+                line     => $line,
+                line_num => $file_line_num,
+            };
+
+            # Convert all \-newline continuations into single lines for ease of
+            # processing.  Leave blank lines to keep line numbers accurate.
+            if (exists $rules->[$escape_start]{line} &&
+                $rules->[$escape_start]{line}    !~ /\\$/ &&
+                $rules->[$global_line_num]{line} =~ /\\$/) {
+
+                $escape_start = $global_line_num;
+            }
+
+            if ($rules->[$escape_start]{line} && $rules->[$escape_start]{line} =~ /\\$/ &&
+                $escape_start != $global_line_num) {
+
+                $rules->[$escape_start]{line} =~ s/\\$//;
+                $rules->[$escape_start]{line} .= $rules->[$global_line_num]{line};
+                $rules->[$global_line_num]{line} = '';
+            }
+
+            $file_line_num++;
+            $global_line_num++;
+        }
+    }
+    close $mf;
 }
 
-# expand PARROT_H_HEADERS
-$rules =~ m/^PARROT_H_HEADERS\s*:?=\s*(.*)$/m;
-my $phh = $1;
+our $rules = [];
+get_rules('Makefile', $rules);
 
-$rules =~ s/\Q$(PARROT_H_HEADERS)/$phh/g;
+#expand all variables
+our %vars;
+foreach (@$rules) {
+    #expand any known variables
+    while ($_->{line} =~ /\$\(([A-Z_]+)\)/) {
+        my $var_name = $1;
+        if (exists $vars{$var_name}) {
+            $_->{line} =~ s/\$\($var_name\)/$vars{$var_name}/g;
+        }
+        else {
+            $_->{line} =~ s/\$\($var_name\)//g;
+        }
+    }
 
-foreach my $header (sort grep {/\.h$/} (keys %deps)) {
-    # static headers shouldn't depend on anything else.
-    if ($rules =~ /^$header\s*:\s*(.*)\s*$/m) {
-        #is("", $1, "$header should have no dependencies");
+    #store any new definitions
+    if ($_->{line} =~ /^(\w+)\s+=\s+(.*)$/) {
+        $vars{$1} = $2;
     }
 }
 
+if (@ARGV && $ARGV[0] eq '--dump') {
+    print "$_->{line}\n" for (@$rules);
+    exit 0;
+}
+
+my $test_count = grep {/\.(c|pir)$/} (keys %deps);
+
+plan( tests => $test_count );
+
+#foreach my $header (sort grep {/\.h$/} (keys %deps)) {
+#    # static headers shouldn't depend on anything else.
+#    if ($rules =~ /^$header\s*:\s*(.*)\s*$/m) {
+#        #is("", $1, "$header should have no dependencies");
+#    }
+#}
+
 my @files = keys %deps;
 @files = @ARGV if @ARGV;
 
-foreach my $file (sort grep {/\.c$/} @files) {
-    my $rule = $file;
-    $rule =~ s/\.c$//;
-
-    $rules =~ /^$rule\Q$(O)\E\s*:\s*(.*)\s*$/m;
-    my $declared = $1;
-
-    my $failed = 0;
-    if (!defined($declared)) {
-        $failed = 1;
-        is("", join(' ', (get_deps($file))), "$file has no dependencies");
-        next;
-    }
-    else
-    {
-        $declared =~ s/\s+/ /g;
-        foreach my $inc (sort (get_deps($file))) {
-            next if $declared =~ s/\b\Q$inc\E\b//;
+check_files($rules, \@files, '.c',   $vars{O});
+check_files($rules, \@files, '.pir', '.pbc');
+
+sub check_files {
 
-            is($declared, $inc, "$file is missing a dependency.");
-            $failed = 1;
+    my ($rules, $possible_files, $src_ext, $obj_ext) = @_;
 
+    foreach my $file (sort grep {/$src_ext$/} @$possible_files) {
+        my ($active_makefile, $active_line_num);
+        my $rule = $file;
+        $rule =~ s/$src_ext$//;
+
+        #find the applicable rule for this file
+        my $rule_deps = '';
+        for (@$rules) {
+            if ($_->{line} =~ /^$rule$obj_ext\s*:\s*(.*)\s*$/) {
+                $rule_deps = $1;
+                $active_makefile = $_->{filename};
+                $active_line_num = $_->{line_num};
+            }
+            last if $rule_deps;
         }
-    }
-    $declared =~ s/^\s+//;
-    $declared =~ s/\s+$//;
-    $declared =~ s/\s+/ /g;
-    if ($declared ne "") {
-       is($declared, '', "$file has extra dependencies.");
-    }
-    elsif (!$failed) {
-        pass($file);
+
+        my $extra_info = "(no rule found for this file)";
+        if ($rule_deps) {
+            $extra_info = "($active_makefile: line $active_line_num)";
+        }
+
+        $rule_deps        = join ' ', sort split /\s+/, $rule_deps;
+        my $expected_deps = join ' ', sort (get_deps($file));
+
+        is($rule_deps, $expected_deps, "$file has correct dependencies $extra_info.");
     }
 }
 
+
 sub collapse_path {
     my $path = shift;
     return $path unless defined $path;


More information about the parrot-commits mailing list