1APE=/sys/src/ape
2< $APE/config
3<plan9/buildinfo
4sourcedir = /sys/src/cmd/perl/$p9pvers
5archname = plan9_$objtype
6privlib=/sys/lib/perl
7archlib = /$objtype/lib/perl/$p9pvers
8sitelib = $privlib/site_perl
9sitearch = $archlib/site_perl
10
11CFLAGS =  -B  -D_POSIX_SOURCE -D_BSD_EXTENSION -DMY_UV_MAX=0x7fffffffUL
12LDFLAGS = -B
13
14CCCMD = $CC  -c $CFLAGS
15
16perllib = $archlib/CORE/libperl.a
17
18perlshr = $archlib/CORE/libperlshr.a
19
20installman1dir = /sys/man/1
21installman3dir = /sys/man/2
22
23podnames = perl perlbook perldata perldebtut perldiag perldsc perlform perlfunc perlipc perllexwarn perllol perlmod perlmodlib perlmodinstall perlnewmod perlop perlootut perlopentut perlpacktut perlpod perlport perlrequick perlretut perlref perlreftut perlrequick perlrun perlsec perlstyle perlsub perlsyn perltie perltrap perlutil perlunifaq perluniintro perlvar
24faqpodnames = perlfaq perlfaq1 perlfaq2 perlfaq3 perlfaq4 perlfaq5 perlfaq6 perlfaq7 perlfaq8 perlfaq9
25advpodnames = perlapi perlapio perlcall perlclib perlcompile perldebguts perldbmfilter perldebug perldelta perldiag perlebcdic perlembed perlfilter perlfork perlguts perlhack perlintern perliol perllocale perlnumber perlobj perlpodspec perlre perlthrtut perltodo perlunicode perlunicook perlxs perlxs perlxstut
26archpodnames = perlaix perlamiga perlbeos perlbs2000 perlcygwin perldgux perldos perlfreebsd perlhpux perlhurd perlirix perlmacos perlnetware perlos2 perlos390 perlos400 perlplan9 perlqnx perlsolaris perltru64 perlvms perlvos perlwin32
27histpods = perl5004delta perl5005delta perl561delta perl56delta perl570delta perl571delta perl572delta perl573delta perl58delta perlhist
28
29libpods = ${podnames:%=pod/%.pod}
30
31perlpods = $libpods
32
33extensions = IO Socket Opcode DynaLoader Fcntl POSIX
34ext_xs = IO.xs Socket.xs Opcode.xs  dl_none.xs Fcntl.xs POSIX.xs
35ext_c = ${ext_xs:%.xs=%.c}
36ext_obj = ${ext_xs:%.xs=%.$O}
37
38obj = av.$O deb.$O doio.$O doop.$O dquote.$O dump.$O globals.$O gv.$O hv.$O locale.$O malloc.$O mathoms.$O mg.$O numeric.$O op.$O pad.$O perlapi.$O perlio.$O perly.$O pp.$O pp_ctl.$O pp_hot.$O pp_pack.$O pp_sort.$O pp_sys.$O reentr.$O regcomp.$O regexec.$O run.$O scope.$O sv.$O taint.$O time64.$O toke.$O universal.$O utf8.$O util.$O
39
40OBJS = perl.$O plan9.$O $obj
41
42testlist = base/*.t comp/*.t cmd/*.t io/*.t op/*.t
43
44install:V:	perl preplibrary
45		cp perl /$objtype/bin/perl
46		cp plan9/aperl /rc/bin/Perl
47		mk man
48
49perl:		config.h miniperlmain.$O miniperl $archlib/Config.pm perlmain.$O $perlshr
50		$LD $CFLAGS -o perl perlmain.$O $perllib $perlshr
51
52miniperl:	config.h $perllib miniperlmain.$O
53		$LD  $CFLAGS -o miniperl miniperlmain.$O  $perllib
54
55preplibrary:V:	miniperl $archlib/Config.pm
56			cd $privlib
57			for (file in *.pm */*.pm $archlib/Config.pm) $sourcedir/miniperl  -e 'use AutoSplit; autosplit(@ARGV)' $file $privlib/auto
58
59$perllib(%):N:	%
60$perllib: ${OBJS:%=$perllib(%)}
61		ar rv $perllib $OBJS
62		$RANLIB $perllib
63
64miniperlmain.$O:	config.h
65				$CCCMD miniperlmain.c
66
67perlmain.$O:	config.h perlmain.c
68			$CCCMD perlmain.c
69
70perlmain.c:	miniperl vms/writemain.pl
71			./miniperl vms/writemain.pl $extensions
72
73config.h:		plan9/fndvers
74			plan9/fndvers
75			cp config.h $archlib/CORE
76
77$perlshr(%):N:	%
78$perlshr:  ${ext_obj:%=$perlshr(%)}
79		ar rv $perlshr $ext_obj
80		$RANLIB $perlshr
81
82IO.c:		miniperl ext/IO/IO.xs
83			./miniperl $privlib/ExtUtils/xsubpp -noprototypes -typemap $privlib/ExtUtils/typemap ext/IO/IO.xs > $target
84			cp ext/IO/*.pm $privlib
85			if (test !-d $privlib/IO) {
86			mkdir $privlib/IO
87			cp ext/IO/lib/IO/*.pm $privlib/IO
88			 }
89
90Socket.$O:	config.h Socket.c
91			$CCCMD -I plan9 Socket.c
92
93Socket.c:		miniperl ext/Socket/Socket.xs
94			./miniperl $privlib/ExtUtils/xsubpp -noprototypes -typemap $privlib/ExtUtils/typemap ext/Socket/Socket.xs > $target
95			cp ext/Socket/Socket.pm $privlib
96
97Opcode.c:		miniperl ext/Opcode/Opcode.xs
98			./miniperl $privlib/ExtUtils/xsubpp -noprototypes -typemap $privlib/ExtUtils/typemap ext/Opcode/Opcode.xs > $target
99			cp ext/Opcode/*.pm $privlib
100
101Fcntl.c:		miniperl ext/Fcntl/Fcntl.xs
102			./miniperl $privlib/ExtUtils/xsubpp -noprototypes -typemap $privlib/ExtUtils/typemap ext/Fcntl/Fcntl.xs > $target
103			cp ext/Fcntl/Fcntl.pm $privlib
104
105POSIX.c:		miniperl ext/POSIX/POSIX.xs
106			./miniperl $privlib/ExtUtils/xsubpp -noprototypes -typemap $privlib/ExtUtils/typemap ext/POSIX/POSIX.xs > $target
107			cp ext/POSIX/POSIX.pm $privlib
108
109dl_none.c:	miniperl ext/DynaLoader/dl_none.xs
110			./miniperl $privlib/ExtUtils/xsubpp -noprototypes -typemap $privlib/ExtUtils/typemap ext/DynaLoader/dl_none.xs > $target
111			cp ext/DynaLoader/DynaLoader.pm $privlib
112
113test:V:
114			bind -b $privlib $sourcedir/lib
115			bind -b $archlib $sourcedir/lib
116			cd $sourcedir/t
117			rm -f perl
118			cp /$objtype/bin/perl $sourcedir/t
119			perl TEST `{ ls */*.t | comm -23 - ../plan9/exclude }
120
121plan9.$O:	config.h ./plan9/plan9.c
122			cp ./plan9/plan9.c ./plan9.c
123			$CCCMD plan9.c
124
125%.$O:	config.h %.c
126		$CCCMD $stem.c
127
128$archlib/Config.pm:		miniperl config.sh
129				./miniperl configpm $archlib/Config.pm
130
131config.sh:	miniperl config.h
132		./miniperl ./plan9/genconfig.pl
133
134installall:V:
135			for (objtype in 386 mips 68020 sparc) mk install
136
137man:V:		$perlpods pod/pod2man.PL perl
138			perl pod/pod2man.PL
139			for (i in $podnames) pod/pod2man pod/$i.pod > $installman3dir/$i
140			for (i in $faqpodnames) pod/pod2man pod/$i.pod > $installman3dir/$i
141			for (i in $advpodnames) pod/pod2man pod/$i.pod > $installman3dir/$i
142			for (i in $archpodnames) pod/pod2man pod/$i.pod > $installman3dir/$i
143			for (i in $histpodnames) pod/pod2man pod/$i.pod > $installman3dir/$i
144
145nuke clean:V:
146		rm -f *.$O   $extensions^.pm config.sh $perllib config.h $perlshr perlmain.c perl miniperl $archlib/Config.pm $ext_c
147		rm -rf $privlib/IO
148
149deleteman:V:
150			rm -f $installman1dir/perl* $installman3dir/perl*
151