[svn:parrot] r38288 - in branches/pmc_pct: compilers/pmc compilers/pmc/src compilers/pmc/src/parser compilers/pmc/t compilers/pmc/t/data config/gen config/gen/makefiles

bacek at svn.parrot.org bacek at svn.parrot.org
Fri Apr 24 10:46:26 UTC 2009


Author: bacek
Date: Fri Apr 24 10:46:24 2009
New Revision: 38288
URL: https://trac.parrot.org/parrot/changeset/38288

Log:
Initial drop for PMC parsing.

Added:
   branches/pmc_pct/compilers/pmc/
   branches/pmc_pct/compilers/pmc/README.pod
   branches/pmc_pct/compilers/pmc/TODO
   branches/pmc_pct/compilers/pmc/pmc.pir
   branches/pmc_pct/compilers/pmc/src/
   branches/pmc_pct/compilers/pmc/src/builtins.pir
   branches/pmc_pct/compilers/pmc/src/parser/
   branches/pmc_pct/compilers/pmc/src/parser/actions.pm
   branches/pmc_pct/compilers/pmc/src/parser/grammar.pg
   branches/pmc_pct/compilers/pmc/t/
   branches/pmc_pct/compilers/pmc/t/01-parse.t
   branches/pmc_pct/compilers/pmc/t/data/
   branches/pmc_pct/compilers/pmc/t/data/class.pmc
   branches/pmc_pct/compilers/pmc/t/data/class00.pmc
   branches/pmc_pct/compilers/pmc/t/data/class01.pmc
   branches/pmc_pct/compilers/pmc/t/data/class02.pmc
   branches/pmc_pct/compilers/pmc/t/data/class03.pmc
   branches/pmc_pct/compilers/pmc/t/data/class04.pmc
   branches/pmc_pct/compilers/pmc/t/data/class05.pmc
   branches/pmc_pct/compilers/pmc/t/data/class06.pmc
   branches/pmc_pct/compilers/pmc/t/data/class07.pmc
   branches/pmc_pct/compilers/pmc/t/data/class08.pmc
   branches/pmc_pct/compilers/pmc/t/data/class09.pmc
   branches/pmc_pct/compilers/pmc/t/data/class10.pmc
   branches/pmc_pct/compilers/pmc/t/data/class11.pmc
   branches/pmc_pct/compilers/pmc/t/data/class12.pmc
   branches/pmc_pct/config/gen/makefiles/pmc.in
Modified:
   branches/pmc_pct/config/gen/makefiles.pm
   branches/pmc_pct/config/gen/makefiles/root.in

Added: branches/pmc_pct/compilers/pmc/README.pod
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ branches/pmc_pct/compilers/pmc/README.pod	Fri Apr 24 10:46:24 2009	(r38288)
@@ -0,0 +1,6 @@
+## $Id$
+
+=head1 PMC - experimental PMC compiler written in PCT
+
+=cut
+

Added: branches/pmc_pct/compilers/pmc/TODO
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ branches/pmc_pct/compilers/pmc/TODO	Fri Apr 24 10:46:24 2009	(r38288)
@@ -0,0 +1,6 @@
+Simple todo list for PMC compiler.
+
+1. Implement parsing PMC.
+2. Implement emiting C code.
+3. ...
+4. Profit!

Added: branches/pmc_pct/compilers/pmc/pmc.pir
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ branches/pmc_pct/compilers/pmc/pmc.pir	Fri Apr 24 10:46:24 2009	(r38288)
@@ -0,0 +1,32 @@
+# Copyright (C) 2009, Parrot Foundation.
+# $Id$
+
+.namespace [ 'PMC';'Compiler' ]
+
+.sub '__onload' :load :init
+    load_bytecode 'PGE.pbc'
+    load_bytecode 'PCT.pbc'
+    load_bytecode 'compilers/nqp/nqp.pbc'
+
+    $P0 = new [ 'PCT';'HLLCompiler' ]
+    $P0.'language'('PMC')
+    $P0.'parsegrammar'('PMC::Grammar')
+    $P0.'parseactions'('PMC::Grammar::Actions')
+
+.end
+
+.sub 'main' :main
+    .param pmc args
+    $P0 = compreg 'PMC'
+    .tailcall $P0.'command_line'(args, 'encoding'=>'utf8', 'transcode'=>'ascii')
+.end
+
+.include 'src/parser/gen_grammar.pir'
+.include 'src/parser/gen_actions.pir'
+.include 'src/builtins.pir'
+
+# Local Variables:
+#   mode: pir
+#   fill-column: 100
+# End:
+# vim: expandtab shiftwidth=4 ft=pir:

Added: branches/pmc_pct/compilers/pmc/src/builtins.pir
==============================================================================

Added: branches/pmc_pct/compilers/pmc/src/parser/actions.pm
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ branches/pmc_pct/compilers/pmc/src/parser/actions.pm	Fri Apr 24 10:46:24 2009	(r38288)
@@ -0,0 +1,63 @@
+# Copyright (C) 2009, Parrot Foundation.
+# $Id$
+
+class PMC::Grammar::Actions;
+
+method TOP($/) {
+    #say("TOP");
+    make $( $<pmc> );
+}
+
+method pmc($/) {
+    #say("pmc");
+    my $pmc := PAST::Block.new( :blocktype('declaration'), :node($/) );
+    make $pmc;
+}
+
+method c_header($/) {
+    say("c_header");
+    say(~$/);
+    my $past := PAST::Block.new( :blocktype('declaration'), :node($/) );
+    make $past;
+}
+
+method pmc_class($/) {
+    my $past := PAST::Block.new( :blocktype('declaration'), :node($/) );
+    make $past;
+}
+
+method vtable($/) {
+    #say('VABLE ' ~$<c_signature>);
+    my $past := PAST::Block.new( :blocktype('declaration'), :node($/) );
+    make $past;
+}
+
+method method($/) {
+    #say('METHOD ' ~$<identifier>);
+    my $past := PAST::Block.new( :blocktype('declaration'), :node($/) );
+    make $past;
+}
+
+method multi($/) {
+    #say('MULTI ' ~$<identifier>);
+    my $past := PAST::Block.new( :blocktype('declaration'), :node($/) );
+    make $past;
+}
+
+method body($/) {
+    #say("body");
+    my $past := PAST::Block.new( :blocktype('declaration'), :node($/) );
+    make $past;
+}
+
+method c_body($/) {
+    #say("c_body: " ~ $/);
+    my $past := PAST::Block.new( :blocktype('declaration'), :node($/) );
+    make $past;
+}
+
+# Local Variables:
+#   mode: pir
+#   fill-column: 100
+# End:
+# vim: expandtab shiftwidth=4:

Added: branches/pmc_pct/compilers/pmc/src/parser/grammar.pg
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ branches/pmc_pct/compilers/pmc/src/parser/grammar.pg	Fri Apr 24 10:46:24 2009	(r38288)
@@ -0,0 +1,111 @@
+# Copyright (C) 2009, Parrot Foundation.
+# $Id$
+
+
+=begin overview
+
+This is PMC grammar.
+
+(ATM) PMC consists of
+1. Some pure C header.
+2. PMC class definition.
+3. Optional ATTRibutes.
+4. Mix of VTABLE and METHODS.
+
+=end overview
+
+grammar PMC::Grammar is PCT::Grammar;
+
+token TOP {
+    #<c_header>
+    <pmc>
+    [ $ || <panic: 'Syntax error'> ]
+    {*}
+}
+
+rule c_header {
+#  .* way too gready...
+#    [.*] [<!before 'pmclass'> ]
+    {*}
+}
+
+# pmc action will store "header" and "footer"
+rule pmc {
+    'pmclass' <identifier> <traits>* '{'
+        <attribute>*
+        <body>
+    '}'
+    {*}
+}
+
+rule traits {
+    [
+    | 'extends' <identifier>
+    | 'provides' <identifier>
+    ]
+}
+
+rule attribute {
+    'ATTR' <c_type> <identifier> ';'
+}
+
+# Body of PMC class. 
+rule body {
+    [ <vtable> | <method> | <multi> ]* 
+    {*}
+}
+
+rule vtable {
+    'VTABLE' <c_signature> <c_body>
+    {*}
+}
+
+rule method {
+    'METHOD' <identifier> '(' <c_arguments> ')' <c_body>
+    {*}
+}
+
+rule multi {
+    'MULTI' <c_signature> <c_body>
+    {*}
+}
+
+# Nested list of something
+rule c_body {
+    '{' [ <-[{}]> | <c_body> ]* '}'
+    {*}
+}
+
+# It's really bad signature
+rule c_signature {
+    <c_type> <identifier> '(' <c_arguments> ')'
+}
+
+# Very-very simplified C type. E.g. "void", "PMC *", etc
+rule c_type {
+    <identifier> '*'?
+}
+
+# Very-very simplified named? function param.
+rule c_argument {
+    <c_type> <identifier>?
+}
+
+rule c_arguments {
+    [ <c_argument> [ ',' <c_argument> ]* ]*
+}
+
+token identifier {
+    <.ident>
+}
+
+## ws token handles whitespaces and C /* */ comments
+token ws {
+  [
+  | '//' \N* \n
+  | '/*' .*? '*/'
+  | \s+
+  ]*
+}
+
+

Added: branches/pmc_pct/compilers/pmc/t/01-parse.t
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ branches/pmc_pct/compilers/pmc/t/01-parse.t	Fri Apr 24 10:46:24 2009	(r38288)
@@ -0,0 +1,59 @@
+#!parrot
+
+
+.sub 'main' :main
+.include 'test_more.pir'
+load_bytecode 'compilers/pmc/pmc.pbc'
+    .local int total
+    total = 13
+
+    plan(total)
+    test_parse(total)
+.end
+
+.sub 'test_parse'
+    .param int total
+    .local int i
+    i = 0
+  loop:
+    $P0 = new 'ResizablePMCArray'
+    push $P0, i
+    $S0 = sprintf "./compilers/pmc/t/data/class%02d.pmc", $P0
+    test_parse_one($S0)
+    inc i
+    unless i >= total goto loop
+
+.end
+
+.sub 'test_parse_one'
+    .param string file
+    $S0 = _slurp(file)
+    .local pmc compiler
+    compiler = compreg 'PMC'
+    push_eh fail
+    compiler.'parse'($S0)
+    pop_eh
+    ok(1, file)
+    .return ()
+  fail:
+    pop_eh
+    ok(0, file)
+.end
+
+.sub '_slurp'
+    .param string file
+    .local pmc pio
+    pio  = open file
+    $S0  = pio.'readall'()
+    close pio
+    .return ($S0)
+.end
+
+# Don't forget to update plan!
+
+# Local Variables:
+#   mode: cperl
+#   cperl-indent-level: 4
+#   fill-column: 100
+# End:
+# vim: expandtab shiftwidth=4 ft=pir:

Added: branches/pmc_pct/compilers/pmc/t/data/class.pmc
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ branches/pmc_pct/compilers/pmc/t/data/class.pmc	Fri Apr 24 10:46:24 2009	(r38288)
@@ -0,0 +1,2 @@
+pmclass Foo {
+}

Added: branches/pmc_pct/compilers/pmc/t/data/class00.pmc
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ branches/pmc_pct/compilers/pmc/t/data/class00.pmc	Fri Apr 24 10:46:24 2009	(r38288)
@@ -0,0 +1,2 @@
+pmclass Foo {
+}

Added: branches/pmc_pct/compilers/pmc/t/data/class01.pmc
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ branches/pmc_pct/compilers/pmc/t/data/class01.pmc	Fri Apr 24 10:46:24 2009	(r38288)
@@ -0,0 +1,2 @@
+pmclass Foo extends scalar {
+}

Added: branches/pmc_pct/compilers/pmc/t/data/class02.pmc
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ branches/pmc_pct/compilers/pmc/t/data/class02.pmc	Fri Apr 24 10:46:24 2009	(r38288)
@@ -0,0 +1,2 @@
+pmclass Foo provides scalar {
+}

Added: branches/pmc_pct/compilers/pmc/t/data/class03.pmc
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ branches/pmc_pct/compilers/pmc/t/data/class03.pmc	Fri Apr 24 10:46:24 2009	(r38288)
@@ -0,0 +1,4 @@
+/*
+*/
+pmclass Foo extends scalar provides scalar {
+}

Added: branches/pmc_pct/compilers/pmc/t/data/class04.pmc
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ branches/pmc_pct/compilers/pmc/t/data/class04.pmc	Fri Apr 24 10:46:24 2009	(r38288)
@@ -0,0 +1,4 @@
+pmclass Foo extends scalar provides scalar {
+    METHOD foo (void) {
+    }
+}

Added: branches/pmc_pct/compilers/pmc/t/data/class05.pmc
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ branches/pmc_pct/compilers/pmc/t/data/class05.pmc	Fri Apr 24 10:46:24 2009	(r38288)
@@ -0,0 +1,6 @@
+pmclass Foo extends scalar provides scalar {
+    METHOD foo (void) {
+        if  {
+        }
+    }
+}

Added: branches/pmc_pct/compilers/pmc/t/data/class06.pmc
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ branches/pmc_pct/compilers/pmc/t/data/class06.pmc	Fri Apr 24 10:46:24 2009	(r38288)
@@ -0,0 +1,12 @@
+pmclass Foo extends scalar provides scalar {
+/*
+=item C<foo>
+
+=cut
+
+*/
+    METHOD foo (void) {
+        if {
+        }
+    }
+}

Added: branches/pmc_pct/compilers/pmc/t/data/class07.pmc
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ branches/pmc_pct/compilers/pmc/t/data/class07.pmc	Fri Apr 24 10:46:24 2009	(r38288)
@@ -0,0 +1,7 @@
+pmclass Integer extends scalar provides integer provides scalar {
+
+    VTABLE PMC *instantiate(PMC *sig) {
+    }
+
+}
+

Added: branches/pmc_pct/compilers/pmc/t/data/class08.pmc
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ branches/pmc_pct/compilers/pmc/t/data/class08.pmc	Fri Apr 24 10:46:24 2009	(r38288)
@@ -0,0 +1,93 @@
+/*
+Copyright (C) 2003-2008, Parrot Foundation.
+$Id$
+
+=head1 NAME
+
+src/pmc/integer.pmc - Integer PMC class
+
+=head1 DESCRIPTION
+
+C<Integer> provides an integer for languages that want a value-restricted
+integer type without going to an I register.
+
+=head2 Functions
+
+=over 4
+
+=cut
+
+*/
+
+#include "parrot/parrot.h"
+
+#include "pmc_bigint.h"
+
+static void
+maybe_throw_overflow_error(PARROT_INTERP)
+{
+    /* check to see what the behavior is. If the interpreter is set
+       to throw an exception on overflow. If so, throw the exception,
+       otherwise, chill out it's no big deal. */
+    if (PARROT_ERRORS_test(interp, PARROT_ERRORS_OVERFLOW_FLAG))
+        Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_ERR_OVERFLOW,
+            "Integer overflow");
+}
+
+static PMC*
+upgrade_self_to_bignum(PARROT_INTERP, PMC *self)
+{
+    /* Do an in-place upgrade to a Bignum of SELF and return a pointer
+       to it (which is probably redundant, but whatever). */
+    const INTVAL a = VTABLE_get_integer(interp, self);
+    pmc_reuse(interp, self, enum_class_BigInt, 0);
+    VTABLE_set_integer_native(interp, self, a);
+    return self;
+}
+
+pmclass Integer extends scalar provides integer provides scalar {
+
+/*
+=item C<PMC instantiate(PMC *sig)>
+
+Create a new Integer with arguments passed according to pdd03.
+
+=item C<void init()>
+
+Initializes the integer with a default value of C<0>.
+
+=item C<void destroy()>
+
+Destroys this PMC.
+
+=cut
+
+*/
+
+    VTABLE PMC *instantiate(PMC *sig) {
+        PMC            * const ret    = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        const opcode_t * const arg_op = interp->current_args;
+        INTVAL                 init   = 0;
+
+        if (VTABLE_elements(interp, sig) == 2) {
+            switch (VTABLE_get_integer_keyed_int(INTERP, sig, 1)) {
+                case PARROT_ARG_I:
+                    init = REG_INT(interp, arg_op[3]);
+                    break;
+                case PARROT_ARG_IC:
+                    init = arg_op[3];
+                    break;
+                default:
+                    Parrot_ex_throw_from_c_args(INTERP, NULL,
+                            EXCEPTION_SYNTAX_ERROR,
+                            "Integer.instantiate: unhandled initializer");
+                    break;
+            }
+        }
+
+        VTABLE_set_integer_native(INTERP, ret, init);
+        return ret;
+    }
+
+}
+

Added: branches/pmc_pct/compilers/pmc/t/data/class09.pmc
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ branches/pmc_pct/compilers/pmc/t/data/class09.pmc	Fri Apr 24 10:46:24 2009	(r38288)
@@ -0,0 +1,3 @@
+pmclass foo {
+    ATTR int int_attribute;
+}

Added: branches/pmc_pct/compilers/pmc/t/data/class10.pmc
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ branches/pmc_pct/compilers/pmc/t/data/class10.pmc	Fri Apr 24 10:46:24 2009	(r38288)
@@ -0,0 +1,4 @@
+pmclass foo {
+    ATTR int    int_attribute;
+    ATTR PMC*   pmc_attribute;
+}

Added: branches/pmc_pct/compilers/pmc/t/data/class11.pmc
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ branches/pmc_pct/compilers/pmc/t/data/class11.pmc	Fri Apr 24 10:46:24 2009	(r38288)
@@ -0,0 +1,16 @@
+pmclass foo {
+    ATTR int    int_attribute;
+    ATTR PMC*   pmc_attribute;
+
+/*
+=item foo
+
+=cut
+*/
+    VTABLE void foo() {
+        /* some foo */
+        if (1) {
+            fprintf(stdout, "Hello");
+        }
+    }
+}

Added: branches/pmc_pct/compilers/pmc/t/data/class12.pmc
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ branches/pmc_pct/compilers/pmc/t/data/class12.pmc	Fri Apr 24 10:46:24 2009	(r38288)
@@ -0,0 +1,22 @@
+pmclass Foo {
+
+    MULTI PMC *add(Integer value, PMC *dest) {
+        const INTVAL a = SELF.get_integer();
+        const INTVAL b = VTABLE_get_integer(INTERP, value);
+        const INTVAL c = a + b;
+
+        if ((c^a) >= 0 || (c^b) >= 0) {
+            dest = pmc_new(INTERP, VTABLE_type(interp, SELF));
+
+            /* need this for e.g. Undef PMC */
+            VTABLE_set_integer_native(INTERP, dest, c);
+            return dest;
+        }
+        else {
+            PMC * temp;
+            maybe_throw_overflow_error(interp);
+            temp = VTABLE_get_bignum(interp, SELF);
+            return VTABLE_add(interp, temp, value, dest);
+        }
+    }
+}

Modified: branches/pmc_pct/config/gen/makefiles.pm
==============================================================================
--- branches/pmc_pct/config/gen/makefiles.pm	Fri Apr 24 10:21:38 2009	(r38287)
+++ branches/pmc_pct/config/gen/makefiles.pm	Fri Apr 24 10:46:24 2009	(r38288)
@@ -48,6 +48,8 @@
             { SOURCE => 'config/gen/makefiles/tge.in' },
         'compilers/json/Makefile'    =>
             { SOURCE => 'config/gen/makefiles/json.in' },
+        'compilers/pmc/Makefile'     =>
+            { SOURCE => 'config/gen/makefiles/pmc.in' },
         'compilers/pirc/Makefile'    =>
             { SOURCE => 'config/gen/makefiles/pirc.in' },
         'src/dynpmc/Makefile'        =>

Added: branches/pmc_pct/config/gen/makefiles/pmc.in
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ branches/pmc_pct/config/gen/makefiles/pmc.in	Fri Apr 24 10:46:24 2009	(r38288)
@@ -0,0 +1,81 @@
+# Copyright (C) 2007-2009, Parrot Foundation.
+# $Id$
+
+# Setup some commands
+PERL     := @perl@
+RM_F     := @rm_f@
+PARROT   := ../../parrot at exe@
+
+BUILD_DIR   	:= @build_dir@
+NQP      		:= $(BUILD_DIR)/compilers/nqp/nqp.pbc
+PCT      		:= $(BUILD_DIR)/runtime/parrot/library/PCT.pbc
+PARROT_LIBRARY 	:= @build_dir@/runtime/parrot/library
+PGE_LIBRARY    	:= @build_dir@/runtime/parrot/library/PGE
+
+all: pmc.pbc
+
+SOURCES := \
+  pmc.pir \
+  src/parser/gen_grammar.pir \
+  src/parser/gen_actions.pir \
+  src/builtins.pir
+
+# the default target
+pmc.pbc: $(PARROT) $(PGE_LIBRARY)/Perl6Grammar.pir $(SOURCES)
+	$(PARROT) $(PARROT_ARGS) $(PGE_LIBRARY)/Perl6Grammar.pir \
+	    --output=src/parser/gen_grammar.pir src/parser/grammar.pg
+	$(PARROT) -o pmc.pbc pmc.pir
+
+src/parser/gen_grammar.pir: $(PERL6GRAMMAR) src/parser/grammar.pg
+	$(PARROT) $(PARROT_ARGS) $(PERL6GRAMMAR) \
+	    --output=src/parser/gen_grammar.pir \
+	    src/parser/grammar.pg
+
+src/parser/gen_actions.pir: $(NQP) $(PCT) src/parser/actions.pm
+	$(PARROT) $(PARROT_ARGS) $(NQP) --output=src/parser/gen_actions.pir \
+	    --target=pir src/parser/actions.pm
+
+
+# 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 := \
+  pmc.pbc \
+  src/parser/grammar.pir
+
+
+clean:
+	$(RM_F) $(CLEANUPS)
+
+realclean: clean
+	$(RM_F) Makefile
+
+distclean: realclean
+
+# Local variables:
+#   mode: makefile
+# End:
+# vim: ft=make:

Modified: branches/pmc_pct/config/gen/makefiles/root.in
==============================================================================
--- branches/pmc_pct/config/gen/makefiles/root.in	Fri Apr 24 10:21:38 2009	(r38287)
+++ branches/pmc_pct/config/gen/makefiles/root.in	Fri Apr 24 10:46:24 2009	(r38288)
@@ -152,6 +152,7 @@
     compilers/pct/Makefile \
     compilers/pge/Makefile \
     compilers/tge/Makefile \
+    compilers/pmc/Makefile \
     editor/Makefile \
     ext/Makefile \
     src/dynoplibs/Makefile
@@ -1392,6 +1393,7 @@
 	$(MAKE) compilers/tge
 	$(MAKE) compilers/nqp
 	$(MAKE) compilers/json
+	$(MAKE) compilers/pmc
 
 compilers-clean :
 	$(MAKE) compilers/pct clean
@@ -1400,6 +1402,7 @@
 	$(MAKE) compilers/nqp clean
 	$(MAKE) compilers/json clean
 	$(MAKE) compilers/pirc clean
+	$(MAKE) compilers/pmc clean
 
 ###############################################################################
 #


More information about the parrot-commits mailing list