Here's a patch to include a 'myconfig' script in the parrot distribution,
similar to the one in perl5's distribution. The output looks something
like:
Summary of my parrot configuration:
Platform where perl 5.007002 was built:
osname=linux, osvers=2.2.17, archname=sparc64-linux-64int
uname=linux dendrite 2.2.17 #1 tue jul 4 14:22:29 edt 2000 sparc64 unknown
byteorder=87654321
Compiler:
cc=cc, ccflags=-fno-strict-aliasing -I/usr/local/include -D_LARGEFILE_SOURCE
-D_FILE_OFFSET_BITS=64 -I./include
debugging=0
intvalsize=8, packtype_i=q, intval=long long
numvalsize=8, packtype_n=d, numval=double
opcode_t_size=8, packtype_op=q, opcode_t=long long
Linker and Libraries:
ld=cc
libs=-lnsl -lndbm -lgdbm -ldbm -ldb -ldl -lm -lc -lposix -lcrypt -lutil
Here's the patch. Note that I changed Configure.pl and test_c.in to use
the new names 'intval' and 'numval' so that they are reported correctly in
the myconfig output.
The strange structure is so that it works as perl5's myconfig works. It's
a script, so running ./myconfig works. It's also a plain text file that
can be mailed and contains the same information.
diff -r -N -u parrot/Configure.pl parrot-andy/Configure.pl
--- parrot/Configure.pl Tue Oct 2 10:01:30 2001
+++ parrot-andy/Configure.pl Wed Oct 3 16:54:43 2001
@@ -61,10 +61,10 @@
#defaults for them.
#XXX Figure out better defaults
my(%c)=(
- iv => ($Config{ivtype} ||'long'),
+ intval => ($Config{ivtype} ||'long'),
intvalsize => undef,
- nv => ($Config{nvtype} ||'double'),
+ numval => ($Config{nvtype} ||'double'),
numvalsize => undef,
opcode_t => ($Config{ivtype} ||'long'),
@@ -105,8 +105,8 @@
prompt("How about your linker?", 'ld');
prompt("What flags would you like passed to your C compiler?", 'ccflags');
prompt("Which libraries would you like your C compiler to include?", 'libs');
-prompt("How big would you like integers to be?", 'iv');
-prompt("And your floats?", 'nv');
+prompt("How big would you like integers to be?", 'intval');
+prompt("And your floats?", 'numval');
prompt("What is your native opcode type?", 'opcode_t');
unless( $c{debugging} ) {
@@ -182,6 +182,11 @@
buildconfigpm();
# and the types file
buildfile("Types_pm", "Parrot");
+# and ./myconfig
+# This should perhaps be changed into some sort of myconfig_in file to fit in
+# with the rest of the Configure.pl scheme.
+do 'myconfig.PL' or warn("Error generating myconfig.");
+
print <<"END";
diff -r -N -u parrot/MANIFEST parrot-andy/MANIFEST
--- parrot/MANIFEST Sun Sep 30 16:25:22 2001
+++ parrot-andy/MANIFEST Wed Oct 3 16:54:43 2001
@@ -49,6 +49,7 @@
little_languages/jakoc
make_op_header.pl
memory.c
+myconfig.PL
opcheck.pl
opcode_table
packfile.c
diff -r -N -u parrot/Makefile.in parrot-andy/Makefile.in
--- parrot/Makefile.in Mon Oct 1 18:00:23 2001
+++ parrot-andy/Makefile.in Wed Oct 3 16:56:07 2001
@@ -69,6 +69,7 @@
clean:
$(RM_F) *$(O) *.s basic_opcodes.c $(INC)/interp_guts.h $(INC)/op.h $(TEST_PROG)
+ $(RM_F) myconfig
test:
$(PERL) t/harness
diff -r -N -u parrot/config_h.in parrot-andy/config_h.in
--- parrot/config_h.in Tue Oct 2 10:01:30 2001
+++ parrot-andy/config_h.in Wed Oct 3 16:54:43 2001
@@ -6,8 +6,8 @@
#if !defined(PARROT_CONFIG_H_GUARD)
#define PARROT_CONFIG_H_GUARD
-typedef ${iv} INTVAL;
-typedef ${nv} FLOATVAL;
+typedef ${intval} INTVAL;
+typedef ${numval} FLOATVAL;
typedef ${opcode_t} opcode_t;
diff -r -N -u parrot/myconfig.PL parrot-andy/myconfig.PL
--- parrot/myconfig.PL Wed Dec 31 19:00:00 1969
+++ parrot-andy/myconfig.PL Wed Oct 3 16:55:04 2001
@@ -0,0 +1,55 @@
+#!/usr/local/bin/perl -w
+use strict;
+use Parrot::Config;
+use Config;
+
+my $file = "myconfig";
+open OUT,">$file" or die "Can't create $file: $!";
+print "Extracting $file (with variable substitutions)\n";
+
+print OUT <<"!GROK!THIS!";
+$Config{'startperl'} -w
+ eval 'exec perl -S \$0 "\$@"'
+ if 0;
+!GROK!THIS!
+print OUT <<'NO_SUBS';
+# This script is designed to provide a handy summary of the configuration
+# information being used to build parrot.
+
+# XXX System ID stuff we grab from perl's Configure. (Note this describes
+# where this perl was built. It might well have been built on a different
+# system. Better eventually to determine this sort of stuff during
+# parrot's configuration.)
+
+# XXX Note that the text lines /^Summary of/ .. /^\s*\$/ should perhaps
+# be copied into Parrot::Config.pm, analagously to the way it's done
+# in perl5.
+
+use strict;
+use Parrot::Config;
+use Config; # Perl5's Config.
+
+NO_SUBS
+
+print OUT <<"!GROK!THIS!";
+print <<'NO_SUBS';
+Summary of my parrot configuration:
+ Platform where perl $] was built:
+ osname=$Config{osname}, osvers=$Config{osvers}, archname=$Config{archname}
+ uname=$Config{myuname}
+ byteorder=$Config{byteorder}
+ Compiler:
+ cc=$PConfig{cc}, ccflags=$PConfig{ccflags}
+ debugging=$PConfig{debugging}
+ intvalsize=$PConfig{intvalsize}, packtype_i=$PConfig{packtype_i},
+intval=$PConfig{intval}
+ numvalsize=$PConfig{numvalsize}, packtype_n=$PConfig{packtype_n},
+numval=$PConfig{numval}
+ opcode_t_size=$PConfig{opcode_t_size}, packtype_op=$PConfig{packtype_op},
+opcode_t=$PConfig{opcode_t}
+ Linker and Libraries:
+ ld=$PConfig{ld}
+ libs=$PConfig{libs}
+
+NO_SUBS
+!GROK!THIS!
+
+close OUT or die "Can't close $file: $!";
+chmod 0755, $file or die "Can't reset permissions for $file: $!\n";
diff -r -N -u parrot/test_c.in parrot-andy/test_c.in
--- parrot/test_c.in Mon Oct 1 17:50:59 2001
+++ parrot-andy/test_c.in Wed Oct 3 16:54:43 2001
@@ -9,7 +9,7 @@
int main(int argc, char **argv) {
printf("%d/%d/%d/%d",
- sizeof(${iv}), sizeof(long), sizeof(${nv}), sizeof(${opcode_t}));
+ sizeof(${intval}), sizeof(long), sizeof(${numval}), sizeof(${opcode_t}));
return 0;
}
--
Andy Dougherty [EMAIL PROTECTED]
Dept. of Physics
Lafayette College, Easton PA 18042