This one is quite useful to anyone who's fiddling around with additional
oplibs.  It adds a prompt to Configure asking for a list of opcode files
to use.  The default is everything available except for obscure.ops.

In addition, it makes it so that if your answer to a question starts
with '+', it will concatenate it to the default.  For example:

What C compiler do you want to use? [cl] +HAHAHA!!!

will result in $PConfig{cc} eq "cl HAHAHA!!!".  While that example is
not terribly useful, it is quite useful with things like command-line
flags and the like.

Finally, it contains a couple tweaks so that my syntax-highlighting
editor recognizes some heredocs correctly.  :^)

--Brent Dax
[EMAIL PROTECTED]
Configure pumpking for Perl 6

"Nothing important happened today."
    --George III of England's diary entry for 4-Jul-1776


--- ..\..\parrot-cvs\parrot\Configure.pl        Sat Jan  5 03:58:50 2002
+++ Configure.pl        Sat Jan  5 03:16:18 2002
@@ -178,6 +178,8 @@
     MAJOR   =>    $parrot_version[0],
     MINOR   =>    $parrot_version[1],
     PATCH   =>    $parrot_version[2],
+
+    ops                =>    "",
 );

 # What's the platform shell quote character?
@@ -239,6 +241,40 @@
 prompt("And your floats?", 'nv');
 prompt("What is your native opcode type?", 'opcode_t');

+
+{
+       my(@ops)=glob("*.ops");
+
+       $c{ops}=join ' ', sort {
+               if   ($a eq 'core.ops') { -1 }
+               elsif($b eq 'core.ops') {  1 }
+               else             { $a cmp $b }
+       } grep {!/obscure\.ops/} @ops;
+
+       my $msg;
+
+       chomp($msg=<<"END");
+
+Now I have to find out what opcode files you would like to compile into
your
+Parrot.
+
+The following opcode files are available:
+@ops
+
+WARNING: Bad Things may happen if the first file on the list isn't
core.ops.
+
+WARNING: These file names will not be checked for spelling, and typing
them
+         wrong will force you to run Configure again.
+
+WARNING: I worry way too much about Configure users.
+
+Which opcode files would you like?
+END
+
+       prompt($msg, 'ops');
+}
+
+
 print <<"END";

 Determining if your C compiler is actually gcc (this could take a
while):
@@ -253,7 +289,7 @@
     unlink("test_siz$c{exe}", "test$c{o}");

     unless (exists $gnuc{__GNUC__}) {
-        print << 'END';
+        print <<'END';

 The test program didn't give the expected result - assuming your
compiler is
 not gcc.
@@ -264,7 +300,7 @@
        my $major = $gnuc{__GNUC__};
         my $minor = $gnuc{__GNUC_MINOR__};
         unless (defined $major) {
-            print << 'END';
+            print <<'END';

 Your C compiler is not gcc.

@@ -593,7 +629,12 @@
     my($input);
     print "$message [$c{$field}] ";
     chomp($input=<STDIN>);
-    $c{$field}=$input||$c{$field};
+
+    if($input =~ /^\+/) {
+               $input="$c{$field} $input";
+       }
+
+       $c{$field}=$input||$c{$field};
 }


@@ -684,9 +725,11 @@
     else {
                 print <<"END";
 Okay, we found everything.  Next you'll need to answer
-a few questions about your system.  Rules are the same
-as Perl 5's Configure--defaults are in square brackets,
-and you can hit enter to accept them.
+a few questions about your system.  Defaults are in square
+brackets, and you can hit enter to accept them.  If you
+don't want the default, type a new value in.  If that new
+value starts with a '+', it will be concatenated to the
+default value.

 END
     }
--- ..\..\parrot-cvs\parrot\Makefile.in Sat Jan  5 03:58:50 2002
+++ Makefile.in Sat Jan  5 03:05:00 2002
@@ -63,7 +63,7 @@
 $(INC)/global_setup.h $(INC)/vtable.h $(INC)/oplib/core_ops.h
$(INC)/oplib/core_ops_prederef.h \
 $(INC)/runops_cores.h $(INC)/trace.h \
 $(INC)/pmc.h $(INC)/key.h $(INC)/resources.h $(INC)/platform.h \
-$(INC)/interp_guts.h ${jit_h} ${jit_struct_h}
+$(INC)/interp_guts.h ${jit_h} ${jit_struct_h} $(INC)/rx.h

 CLASS_O_FILES = classes/default$(O) classes/perlint$(O)
classes/perlstring$(O) \
 classes/perlnum$(O) classes/perlarray$(O) classes/perlundef$(O) \
@@ -83,6 +83,7 @@

 O_FILES = $(INTERP_O_FILES) $(IO_O_FILES) $(CLASS_O_FILES)
$(ENCODING_O_FILES) $(CHARTYPE_O_FILES)

+OPS_FILES = ${ops}


########################################################################
#######
 #
@@ -295,13 +296,13 @@

 core_ops$(O): $(H_FILES) core_ops.c

-core_ops.c $(INC)/oplib/core_ops.h: core.ops vtable.ops ops2c.pl
Parrot/OpsFile.pm Parrot/Op.pm
-       $(PERL) ops2c.pl C core.ops vtable.ops
+core_ops.c $(INC)/oplib/core_ops.h: $(OPS_FILES) ops2c.pl
Parrot/OpsFile.pm Parrot/Op.pm
+       $(PERL) ops2c.pl C $(OPS_FILES)

 core_ops_prederef$(O): $(H_FILES) core_ops_prederef.c

-core_ops_prederef.c $(INC)/oplib/core_ops_prederef.h: core.ops
vtable.ops ops2c.pl Parrot/OpsFile.pm Parrot/Op.pm
-       $(PERL) ops2c.pl CPrederef core.ops vtable.ops
+core_ops_prederef.c $(INC)/oplib/core_ops_prederef.h: $(OPS_FILES)
ops2c.pl Parrot/OpsFile.pm Parrot/Op.pm
+       $(PERL) ops2c.pl CPrederef $(OPS_FILES)

 vtable.ops: make_vtable_ops.pl
        $(PERL) make_vtable_ops.pl > vtable.ops

Reply via email to