cvs commit: ponie/perl Makefile.SH
[email protected] (Nicholas Clark) 14 Oct 2004 11:44:39 -0000
| Newsgroups | perl.ponie.changes |
|---|---|
| Message-ID | <[email protected]> |
cvsuser 04/10/14 04:44:39
Modified: . Configure.pl Makefile
perl Makefile.SH
Added: . fake_pmcs.pl write_makefile.pl
Log:
Build the Perl5 PMCs in the src/pmc directory, making a libponie.a from them
Revision Changes Path
1.39 +7 -41 ponie/Configure.pl
Index: Configure.pl
===================================================================
RCS file: /cvs/public/ponie/Configure.pl,v
retrieving revision 1.38
retrieving revision 1.39
diff -u -w -r1.38 -r1.39
--- Configure.pl 11 Oct 2004 16:24:39 -0000 1.38
+++ Configure.pl 14 Oct 2004 11:44:38 -0000 1.39
@@ -1,5 +1,5 @@
#!/usr/bin/perl -w
-# $Id: Configure.pl,v 1.38 2004/10/11 16:24:39 nicholas Exp $
+# $Id: Configure.pl,v 1.39 2004/10/14 11:44:38 nicholas Exp $
use strict;
use Config;
@@ -58,41 +58,6 @@
delete($ENV{'PERL5LIB'});
-# Copy some things
-open F, "src/pmc/perl5cargo_cult.pmc" or die $!;
-my $template = do {local $/; <F>};
-close F or die $!;
-foreach (qw(null iv nv rv pv pviv pvnv pvmg pvbm pvgv pvlv pvav pvhv pvcv pvfm
- pvio)) {
- my $leaf = "perl5$_.pmc";
- my $file = File::Spec->catfile('src', 'pmc', $leaf);
- my $real = File::Spec->catfile ($dir, 'src', 'pmc', $leaf);
- if (-e $file) {
- # So the target exists.
- if (-l $file && !-e $real) {
- # It's a symlink, and the real thing does not exist - no need
- next;
- }
- if (-e $real && -M $file >= -M $real) {
- # It's a real file, but it's newer
- next;
- }
- unlink $file or die "unlink '$file' failed: $!";
- }
-
- if (-f $real) {
- symlink $real, $file or die "symlink $real, $file failed: $!";
- } else {
- my $code = $template;
- my $uc = uc $_;
- $code =~ s/QQQ/$uc/gm;
- $code =~ s/qqq/$_/gm;
- open F, ">$file" or die "Can't open $file: $!";
- print F $code or die $!;
- close F or die "Can't close $file: $!";
- }
-}
-
chdir('parrot') || die "You need to checkout parrot inside ponie";
system($^X,'Configure.pl',
@ARGV)
@@ -124,8 +89,8 @@
system('sh','Configure',@config_args) && die "error";;
my $inc_path = "$dir/parrot/include";
- my $inc_path_pmc = "$dir/parrot/classes";
- my $lib_path = "$dir/parrot/blib/lib";
+ my $inc_path_pmc = "$dir/src/pmc";
+ my @lib_path = ("$dir/parrot/blib/lib", "$dir/src/pmc");
open (FH, "config.sh") or die $!;
undef $/; $_ = <FH>;
@@ -136,14 +101,15 @@
if ($^O eq 'solaris') {
$bonus_libs = '-lrt ';
}
- $bonus_libs .= "-lparrot -licuuc -licudata ";
+ $bonus_libs .= "-lparrot -licuuc -licudata -lponie";
if (" $Parrot::Config::PConfig{libs} " =~ / -lgmp /) {
$bonus_libs .= "-lgmp ";
}
$munge{cppflags} = $munge{ccflags} = " -I${inc_path} -I${inc_path_pmc}";
- $munge{ldflags} = $munge{lddlflags} = " -L${lib_path}";
+ $munge{ldflags} = $munge{lddlflags}
+ = join '', map " -L$_", @lib_path;
$munge{libs} = $munge{perllibs} = "$bonus_libs ";
- $munge{libpth} = $lib_path;
+ $munge{libpth} = join " ", @lib_path;
# Put new text that the front. This gives our things priority. For example,
# it ensures that our copy of ICU is found ahead of the system's.
1.6 +8 -2 ponie/Makefile
Index: Makefile
===================================================================
RCS file: /cvs/public/ponie/Makefile,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -w -r1.5 -r1.6
--- Makefile 2 Oct 2004 15:04:22 -0000 1.5
+++ Makefile 14 Oct 2004 11:44:38 -0000 1.6
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.5 2004/10/02 15:04:22 nicholas Exp $
+# $Id: Makefile,v 1.6 2004/10/14 11:44:38 nicholas Exp $
GEN_PMC = src/pmc/perl5null.pmc src/pmc/perl5nv.pmc src/pmc/perl5pv.pmc \
src/pmc/perl5pvbm.pmc src/pmc/perl5pvcv.pmc src/pmc/perl5pvav.pmc \
@@ -20,9 +20,15 @@
parrot/parrot:
cd parrot && $(MAKE)
-perl/perl: parrot/parrot
+perl/perl: parrot/parrot src/pmc/libponie.a src/pmc/perl5pmcs.h
cd perl && $(MAKE)
+src/pmc/libponie.a: src/pmc/Makefile
+ cd src/pmc && $(MAKE)
+
+src/pmc/Makefile: write_makefile.pl
+ perl $< >$@
+
clean:
cd parrot && $(MAKE) clean
cd perl && $(MAKE) clean
1.1 ponie/fake_pmcs.pl
Index: fake_pmcs.pl
===================================================================
#!/usr/bin/perl -w
# $Id: fake_pmcs.pl,v 1.1 2004/10/14 11:44:38 nicholas Exp $
use strict;
use File::Spec;
# Fake up PMCs as needed.
my $template_file = shift;
die "$0: template PMC_names..." unless defined $template_file;
open F, $template_file or die "Can't open $template_file: $!";
my $template = do {local $/; <F>};
my ($volume, $path) = File::Spec->splitpath($template_file);
my ($atime, $mtime) = (stat $template_file)[8,9];
close F or die $!;
foreach (@ARGV) {
my $leaf = "perl5$_.pmc";
my $target = File::Spec->catpath($volume, $path, $leaf);
my $code = $template;
my $uc = uc $_;
$code =~ s/QQQ/$uc/gm;
$code =~ s/qqq/$_/gm;
# Remember, -M is age, not timestamp. Older is bigger.
if (-e $target and -M $target < -M $template_file) {
# Target exists and is newer
open F, $target or die "Can't open $target: $!";
my $orig = do {local $/; <F>};
warn "$target newer than $template_file and not the same, skipping"
unless $orig eq $code;
next;
}
open F, ">$target" or die "Can't open $target: $!";
print F $code or die $!;
close F or die "Can't close $target: $!";
utime $atime, $mtime, $target
or die "utime $atime, $mtime, $target failed: $!";
}
1.1 ponie/write_makefile.pl
Index: write_makefile.pl
===================================================================
#!/usr/bin/perl -w
# $Id: write_makefile.pl,v 1.1 2004/10/14 11:44:38 nicholas Exp $
# A script to write (and therefore to re-write) the ponie specific makefiles.
use strict;
use Config;
use FindBin;
my $top = $FindBin::Bin;
my @allPMCs
= qw(null iv nv rv pv pviv pvnv pvmg pvbm pvgv pvlv pvav pvhv pvcv pvfm pvio);
my @real = ();
my %fakes;
@fakes{@allPMCs} = ();
delete $fakes{$_} foreach @real;
system $^X, 'fake_pmcs.pl', "src/pmc/perl5cargo_cult.pmc", keys %fakes
and die "Error";
my $parrotdir = "$top/parrot";
sub all {
my $ext = shift;
join ' ', map "perl5$_$ext", @_;
}
my $allobjs = join ' ', all ($Config{_o}, @allPMCs), "perl5pmcs$Config{_o}";
my $alldumps = all (".dump", @allPMCs);
my $allpmcs = all (".pmc", @allPMCs);
print <<"EOM";
# This Makefile was generated by $0
PERL=$^X -I$parrotdir/lib
CC=$Config{cc}
CFLAGS=$Config{ccflags} $Config{optimize} -I$parrotdir/classes -I$parrotdir/include -I$top/perl
libponie$Config{_a}: $allobjs
ar -r \$\@ \$\?
$Config{ranlib} \$\@
perl5pmcs.c: $alldumps;
\$(PERL) $parrotdir/classes/pmc2c2.pl --no-lines --library perl5pmcs --c $allpmcs
perl5pmcs$Config{_o}: perl5pmcs.c
perl5pmcs.h: perl5pmcs.c
EOM
foreach (@allPMCs) {
if (exists $fakes{$_}) {
print <<"EOSNIP";
perl5$_.pmc: perl5cargo_cult.pmc
\$(PERL) $top/fake_pmcs.pl perl5cargo_cult.pmc $_
EOSNIP
}
print <<"EOSNIP";
perl5$_.dump: perl5$_.pmc
\$(PERL) $parrotdir/classes/pmc2c2.pl --no-lines --include=../src/pmc --dump perl5$_.pmc
perl5$_.c: $alldumps
\$(PERL) $parrotdir/classes/pmc2c2.pl --no-lines --c perl5$_.pmc
perl5$_$Config{_o}: perl5$_.c
EOSNIP
}
1.4 +2 -38 ponie/perl/Makefile.SH
Index: Makefile.SH
===================================================================
RCS file: /cvs/public/ponie/perl/Makefile.SH,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -w -r1.3 -r1.4
--- Makefile.SH 30 Aug 2004 14:37:45 -0000 1.3
+++ Makefile.SH 14 Oct 2004 11:44:38 -0000 1.4
@@ -326,23 +326,20 @@
h3 = pad.h patchlevel.h perl.h perlapi.h perly.h pp.h proto.h regcomp.h
h4 = regexp.h scope.h sv.h unixish.h util.h iperlsys.h thread.h
h5 = utf8.h warnings.h
-hpmc = pmc_perl5null.h pmc_perl5iv.h pmc_perl5nv.h pmc_perl5rv.h pmc_perl5pv.h pmc_perl5pviv.h pmc_perl5pvnv.h pmc_perl5pvmg.h pmc_perl5pvbm.h pmc_perl5pvgv.h pmc_perl5pvlv.h pmc_perl5pvav.h pmc_perl5pvhv.h pmc_perl5pvcv.h pmc_perl5pvfm.h pmc_perl5pvio.h pmc_perl5pvio.h perl5pmcs.h
h = $(h1) $(h2) $(h3) $(h4) $(h5)
c1 = $(mallocsrc) av.c scope.c op.c doop.c doio.c dump.c hv.c mg.c reentr.c
c2 = perl.c perly.c pp.c pp_hot.c pp_ctl.c pp_sys.c regcomp.c regexec.c utf8.c
c3 = gv.c sv.c taint.c toke.c util.c deb.c run.c universal.c xsutils.c pad.c
c4 = globals.c perlio.c perlapi.c numeric.c locale.c pp_pack.c pp_sort.c
-cpmc = perl5null.c perl5iv.c perl5nv.c perl5rv.c perl5pv.c perl5pviv.c perl5pvnv.c perl5pvmg.c perl5pvbm.c perl5pvgv.c perl5pvlv.c perl5pvav.c perl5pvhv.c perl5pvcv.c perl5pvfm.c perl5pvio.c perl5pmcs.c
c = $(c1) $(c2) $(c3) $(c4) miniperlmain.c perlmain.c
obj1 = $(mallocobj) gv$(OBJ_EXT) toke$(OBJ_EXT) perly$(OBJ_EXT) op$(OBJ_EXT) pad$(OBJ_EXT) regcomp$(OBJ_EXT) dump$(OBJ_EXT) util$(OBJ_EXT) mg$(OBJ_EXT) reentr$(OBJ_EXT)
obj2 = hv$(OBJ_EXT) av$(OBJ_EXT) run$(OBJ_EXT) pp_hot$(OBJ_EXT) sv$(OBJ_EXT) pp$(OBJ_EXT) scope$(OBJ_EXT) pp_ctl$(OBJ_EXT) pp_sys$(OBJ_EXT)
obj3 = doop$(OBJ_EXT) doio$(OBJ_EXT) regexec$(OBJ_EXT) utf8$(OBJ_EXT) taint$(OBJ_EXT) deb$(OBJ_EXT) universal$(OBJ_EXT) xsutils$(OBJ_EXT) globals$(OBJ_EXT) perlio$(OBJ_EXT) perlapi$(OBJ_EXT) numeric$(OBJ_EXT) locale$(OBJ_EXT) pp_pack$(OBJ_EXT) pp_sort$(OBJ_EXT)
-obj4 = perl5null$(OBJ_EXT) perl5iv$(OBJ_EXT) perl5nv$(OBJ_EXT) perl5rv$(OBJ_EXT) perl5pv$(OBJ_EXT) perl5pviv$(OBJ_EXT) perl5pvnv$(OBJ_EXT) perl5pvmg$(OBJ_EXT) perl5pvbm$(OBJ_EXT) perl5pvgv$(OBJ_EXT) perl5pvlv$(OBJ_EXT) perl5pvav$(OBJ_EXT) perl5pvhv$(OBJ_EXT) perl5pvcv$(OBJ_EXT) perl5pvfm$(OBJ_EXT) perl5pvio$(OBJ_EXT) perl5pmcs$(OBJ_EXT)
-obj = $(obj1) $(obj2) $(obj3) $(obj4) $(ARCHOBJS)
+obj = $(obj1) $(obj2) $(obj3) $(ARCHOBJS)
lintflags = -hbvxac
@@ -709,39 +706,6 @@
fi
-for p in null iv nv rv pv pviv pvnv pvmg pvbm pvgv pvlv pvav pvhv pvcv pvfm pvio ; do
- pmcdumps="$pmcdumps ../src/pmc/perl5$p.dump"
- pmcs="$pmcs ../src/pmc/perl5$p.pmc"
-done
-
-for p in null iv nv rv pv pviv pvnv pvmg pvbm pvgv pvlv pvav pvhv pvcv pvfm pvio ; do
- $spitshell >>Makefile <<!GROK!THIS!
-
-../src/pmc/perl5$p.dump : ../src/pmc/perl5$p.pmc
- perl ../parrot/classes/pmc2c2.pl --no-lines --include=../src/pmc --dump ../src/pmc/perl5$p.pmc
-
-perl5$p.c : $pmcdumps
- perl ../parrot/classes/pmc2c2.pl --no-lines --include=../src/pmc --c ../src/pmc/perl5$p.pmc
- sh mv-if-diff ../src/pmc/perl5$p.c perl5$p.c
- sh mv-if-diff ../src/pmc/pmc_perl5$p.h pmc_perl5$p.h
-
-perl5$p\$(OBJ_EXT) : perl5$p.c
-
-!GROK!THIS!
-done
-
-$spitshell >>Makefile <<!GROK!THIS!
-perl5pmcs\$(OBJ_EXT) : perl5pmcs.c
-
-perl5pmcs.c : $pmcdumps
- perl ../parrot/classes/pmc2c2.pl --no-lines --include=../src/pmc --library perl5pmcs --c $pmcs
-
-perl\$(OBJ_EXT) : perl5pmcs.h
-
-perl5pmcs.h : perl5pmcs.c
-
-!GROK!THIS!
-
$spitshell >>Makefile <<'!NO!SUBS!'
sperl$(OBJ_EXT): perl.c $(h)
@@ -984,7 +948,7 @@
# Do not 'make _mopup' directly.
_mopup:
- rm -f *$(OBJ_EXT) *$(LIB_EXT) all perlmain.c $(cpmc) $(hpmc)
+ rm -f *$(OBJ_EXT) *$(LIB_EXT) all perlmain.c
-rmdir .depending
-@test -f extra.pods && rm -f `cat extra.pods`
-@test -f vms/README_vms.pod && rm -f vms/README_vms.pod