4 archname = plan9_$objtype
5 privroot = /sys/lib/perl
6 privlib = $privroot/$p9pvers
7 archroot = /$objtype/lib/perl
8 archlib = $archroot/$p9pvers
9 sitelib = $privlib/site_perl
10 sitearch = $archlib/site_perl
11 corelib = $archlib/CORE
12 arpalib = $corelib/arpa
15 cpanlib=`{cd cpan; ls -ld * | grep '^d' | awk '{ print $10 }' | grep -v '^\.'}
16 icpanlib=`{echo $pwd^/cpan/^$cpanlib^/lib}
17 distlib=`{cd dist; ls -ld * | grep '^d' | awk '{ print $10 }' | grep -v '^\.'}
18 idistlib=`{echo $pwd^/dist/^$distlib $pwd^/dist/^$distlib^/lib }
19 extlib=`{cd ext; ls -ld * | grep '^d' | awk '{ print $10 }' | grep -v '^\.'}
20 iextlib=`{echo $pwd^/ext/^$extlib $pwd^/ext/^$extlib/lib }
22 buildlibs=`{echo -I$pwd^/^(lib archlib privlib) -I^$icpanlib -I^$idistlib -I^$iextlib }
23 miniperl=`{echo $pwd/miniperl $buildlibs }
24 perl=`{echo $pwd/perl $buildlibs }
25 xscmd=`{echo $pwd/dist/ExtUtils-ParseXS/lib/ExtUtils/xsubpp -noprototypes -typemap $pwd/dist/ExtUtils-ParseXS/t/typemap}
26 miniperlxs=`{echo $miniperl $xscmd}
27 perlxs=`{echo $perl $xscmd}
29 BASECFLAGS=-B -D_SUSV2_SOURCE -D_POSIX_SOURCE -D_BSD_EXTENSION
30 PERLCFLAGS =-DPERL_CORE $BASECFLAGS
31 CFLAGS=-DPERL_IS_MINIPERL $PERLCFLAGS
33 CCCMD = $CC -c $CFLAGS
34 PERLCCCMD= $CC -c $PERLCFLAGS
35 XSCCCMD= $CC -c $BASECFLAGS
37 perllib = archlib/CORE/libperl.a
39 perlshr = archlib/CORE/libperlshr.a
41 installman1dir = /sys/man/1
42 installman3dir = /sys/man/2
44 podnames = 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
45 faqpodnames = perlfaq perlfaq1 perlfaq2 perlfaq3 perlfaq4 perlfaq5 perlfaq6 perlfaq7 perlfaq8 perlfaq9
46 advpodnames = 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
47 archpodnames = perlaix perlamiga perlbeos perlbs2000 perlce perlcygwin perldgux perldos perlfreebsd perlhpux perlhurd perlirix perlmacos perlmpeix perlnetware perlos2 perlos390 perlos400 perlplan9 perlqnx perlsolaris perltru64 perlvms perlvos perlwin32
48 histpodnames = perl5004delta perl5005delta perl561delta perl56delta perl570delta perl571delta perl572delta perl573delta perl58delta perlhist
50 libpods = ${podnames:%=pod/%.pod}
54 extensions = File::Glob IO Opcode DynaLoader Fcntl POSIX Cwd re B Devel::Peek attributes Hash::Util Hash::Util::FieldHash mro Storable Time::HiRes Unicode::Normalize List::Util
55 ext_xs = Glob.xs IO.xs Opcode.xs dl_none.xs Fcntl.xs POSIX.xs Cwd.xs re.xs B.xs Peek.xs attributes.xs Util.xs FieldHash.xs mro.xs Storable.xs HiRes.xs Normalize.xs ListUtil.xs
56 ext_c = ${ext_xs:%.xs=%.c}
57 ext_obj = ${ext_xs:%.xs=%.$O} bsd_glob.$O poll.$O re_comp.$O re_exec.$O
59 # Socket requires a full version of Perl (one with IO to build).
60 more_extensions = Socket Data::Dumper
61 more_ext_xs = Socket.xs Dumper.xs
62 more_ext_c = ${more_ext_xs:%.xs=%.c}
63 more_ext_obj = ${more_ext_xs:%.xs=%.$O}
65 obj = av.$O caretx.$O deb.$O doio.$O doop.$O dquote.$O dump.$O globals.$O gv.$O hv.$O keywords.$O locale.$O malloc.$O mathoms.$O mg.$O mro_core.$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
67 OBJS = perl.$O plan9.$O $obj
69 # TODO: what's this used for?
70 testlist = `{cd t; echo base/*.t comp/*.t cmd/*.t run/*.t io/*.t re/*.t opbasic/*.t op/*.t uni/*.t perf/*.t}
72 install:V: perl preplibrary
73 cp perl /$objtype/bin/perl-$p9pvers
74 cp plan9/aperl /rc/bin/Perl-$p9pvers
76 if (test ! -d $privroot) mkdir $privroot
77 if (test ! -d $privlib) mkdir $privlib
78 if (test ! -d $privlib/auto) mkdir $privlib/auto
79 if (test ! -d $sitelib) mkdir $sitelib
80 if (test ! -d $archroot) mkdir $archroot
81 if (test ! -d $archlib) mkdir $archlib
82 if (test ! -d $sitearch) mkdir $sitearch
83 if (test ! -d $corelib) mkdir $corelib
84 if (test ! -d $arpalib) mkdir $arpalib
85 cp *.h plan9/*.h $corelib
86 cp plan9/arpa/*.h $arpalib
88 # Populate library directories
89 {cd privlib ; tar c . } | {cd $privlib ; tar x }
90 {cd lib ; tar c . } | {cd $privlib ; tar x }
91 {cd archlib ; tar c . } | {cd $archlib ; tar x }
92 # mk man # don't make man pages now--resolve multiversion
94 perl: perlnosocket more_extensions
95 $LD $PERLCFLAGS -o perl perlmain.$O perl.$O $perllib $perlshr $more_ext_obj
97 perlnosocket: config.h miniperlmain.$O miniperl archlib/Config.pm perlmain.$O $perlshr
98 $LD $PERLCFLAGS -o perl perlmain.$O perl.$O $perllib $perlshr
100 miniperl: config.h $perllib miniperlmain.$O
101 $LD $CFLAGS -o miniperl miniperlmain.$O $perllib
103 preplibrary:V: miniperl archlib/Config.pm
104 mkdir -p privlib/auto
105 for (file in lib/*.pm lib/*/*.pm archlib/Config.pm) $miniperl -e 'use AutoSplit; autosplit(@ARGV)' $file privlib/auto
108 $perllib: ${OBJS:%=$perllib(%)}
109 mkdir -p archlib/CORE
113 miniperlmain.$O: config.h uudmap.h
114 $CCCMD miniperlmain.c
116 perlmain.$O: config.h perlmain.c
118 $PERLCCCMD perlmain.c
121 # Does the PTRDIFF_MAX need to be set per architecture?
122 $CCCMD -DPTRDIFF_MAX^'='^9223372036854775807L malloc.c
124 perlmain.c: miniperl extensions archlib/Config.pm
125 $miniperl -MExtUtils::Miniperl -e 'writemain(\q{perlmain.c}, @ARGV)' $extensions
127 config.h: plan9/fndvers
129 mkdir -p archlib/CORE
130 cp config.h archlib/CORE
133 $perlshr: ${ext_obj:%=$perlshr(%)}
134 ar rv $perlshr $ext_obj
137 uudmap.h: generate_uudmap.c
138 $CCCMD generate_uudmap.c
139 # This is currently a show-stopper for cross-compilation: find the true $objtype by looking at kernel?
140 $LD $CFLAGS -o generate_uudmap generate_uudmap.$O
141 chmod +x generate_uudmap
142 ./generate_uudmap uudmap.h bitcount.h mg_data.h
144 extensions:V: miniperl archlib/Config.pm $ext_c dist/XSLoader/XSLoader.pm
146 more_extensions:V: perlnosocket $more_ext_c $more_ext_obj
147 ext_obj=`{echo $ext_obj $more_ext_obj}
150 $XSCCCMD -I plan9 Socket.c
152 attributes.$O: attributes.c
153 $XSCCCMD -I plan9 attributes.c
156 $XSCCCMD -I plan9 mro.c
159 $XSCCCMD -I plan9 B.c
162 $XSCCCMD -I plan9 Peek.c
165 $XSCCCMD -I plan9 Util.c
167 FieldHash.$O: FieldHash.c
168 $XSCCCMD -I plan9 FieldHash.c
171 $XSCCCMD -DPERL_EXT_RE_BUILD -DPERL_EXT_RE_DEBUG -DPERL_EXT -I plan9 re.c
173 re_comp.$O: re_comp.c
174 $XSCCCMD -DPERL_EXT_RE_BUILD -DPERL_EXT_RE_DEBUG -DPERL_EXT -I plan9 re_comp.c
176 re_exec.$O: re_exec.c
177 $XSCCCMD -DPERL_EXT_RE_BUILD -DPERL_EXT_RE_DEBUG -DPERL_EXT -I plan9 re_exec.c
180 cp dist/IO/ppport.h dist/PathTools
181 $XSCCCMD -DDOUBLE_SLASHES_SPECIAL^'='^0 -I plan9 Cwd.c
184 $XSCCCMD -I plan9 IO.c
187 $XSCCCMD -I plan9 poll.c
190 $XSCCCMD -I plan9 POSIX.c
193 $XSCCCMD -I plan9 Glob.c
195 bsd_glob.$O: extensions
196 $XSCCCMD -I plan9 -I. bsd_glob.c
198 Normalize.$O: extensions
199 $XSCCCMD -I plan9 -I. Normalize.c
202 $XSCCCMD -I plan9 -I. Dumper.c
205 $XSCCCMD -I plan9 -I. HiRes.c
207 Storable.$O: extensions
208 $XSCCCMD -I plan9 -I. Storable.c
210 ListUtil.$O: extensions
211 $XSCCCMD -I plan9 -I. ListUtil.c
213 Opcode.$O: extensions
214 $XSCCCMD -I plan9 Opcode.c
217 $XSCCCMD -I plan9 Fcntl.c
219 dl_none.$O: extensions
220 $XSCCCMD -I plan9 dl_none.c
222 Glob.c: archlib/Config.pm ext/File-Glob/Glob.xs
224 $miniperl Makefile.PL # to write constants
226 $miniperlxs ext/File-Glob/Glob.xs > $target
227 cp ext/File-Glob/bsd_glob.^(c h) $pwd
228 mkdir -p archlib/File
229 cp ext/File-Glob/Glob.pm archlib/File/Glob.pm
231 ppport.h: archlib/Config.pm
232 if (test ! -f /bin/sh) bind -a /386/bin/ape /bin
233 # specify the list, otherwise suicide
234 $miniperl mkppport --list mkppport.lst
236 Cwd.c: archlib/Config.pm dist/PathTools/Cwd.xs
237 $miniperlxs dist/PathTools/Cwd.xs > $target
238 cp dist/PathTools/Cwd.pm archlib
239 { cd dist/PathTools/lib; tar c . } | { mkdir -p archlib; cd archlib; tar x }
241 IO.c: archlib/Config.pm dist/IO/IO.xs ppport.h
242 $miniperlxs dist/IO/IO.xs > $target
243 cp dist/IO/poll.^(c h) $pwd
244 cp dist/IO/IO.pm archlib
245 { cd dist/IO/lib; tar c . } | { mkdir -p archlib; cd archlib; tar x }
247 dist/XSLoader/XSLoader.pm: archlib/Config.pm
249 $miniperl XSLoader_pm.PL
250 cp XSLoader.pm $pwd/archlib
252 ext/Errno/Errno.pm: perlnosocket
255 $perl Errno_pm.PL arch.txt
256 cp Errno.pm $pwd/archlib
258 Socket.c: perlnosocket cpan/Socket/Socket.xs ext/Errno/Errno.pm
260 $perl Makefile.PL # to write const-xs.inc
262 $perlxs cpan/Socket/Socket.xs > $target
263 cp cpan/Socket/Socket.pm archlib
265 uni.data: archlib/Config.pm lib/unicore/mktables
266 $miniperl lib/unicore/mktables -C lib/unicore -makelist -p
268 Normalize.c: archlib/Config.pm dist/Unicode-Normalize/Normalize.xs uni.data
269 $miniperl dist/Unicode-Normalize/mkheader
270 $miniperlxs dist/Unicode-Normalize/Normalize.xs > $target
271 mkdir -p archlib/Unicode
272 cp dist/Unicode-Normalize/Normalize.pm archlib/Unicode
274 Dumper.c: perlnosocket dist/Data-Dumper/Dumper.xs
275 $perlxs dist/Data-Dumper/Dumper.xs > $target
276 mkdir -p archlib/Data
277 cp dist/Data-Dumper/Dumper.pm archlib/Data
279 HiRes.c: archlib/Config.pm dist/Time-HiRes/HiRes.xs
281 $miniperl Makefile.PL # to write const-xs.inc
283 $miniperlxs dist/Time-HiRes/HiRes.xs > $target
284 mkdir -p archlib/Time
285 cp dist/Time-HiRes/HiRes.pm archlib/Time
287 ListUtil.c: archlib/Config.pm cpan/Scalar-List-Utils/ListUtil.xs
288 cp cpan/Scalar-List-Utils/multicall.h $pwd
289 $miniperlxs cpan/Scalar-List-Utils/ListUtil.xs > $target
290 { cd cpan/Scalar-List-Utils/lib; tar c . } | { mkdir -p archlib; cd archlib; tar x }
292 Storable.c: archlib/Config.pm dist/Storable/Storable.xs
293 $miniperlxs dist/Storable/Storable.xs > $target
294 cp dist/Storable/Storable.pm archlib
296 Opcode.c: archlib/Config.pm ext/Opcode/Opcode.xs
297 $miniperlxs ext/Opcode/Opcode.xs > $target
298 cp ext/Opcode/^(Opcode ops)^.pm archlib
300 Fcntl.c: archlib/Config.pm ext/Fcntl/Fcntl.xs
302 $miniperl Makefile.PL # to write const-xs.inc
304 $miniperlxs ext/Fcntl/Fcntl.xs > $target
305 cp ext/Fcntl/Fcntl.pm archlib
307 POSIX.c: archlib/Config.pm ext/POSIX/POSIX.xs
309 $miniperl Makefile.PL # to write const-xs.inc
311 $miniperlxs ext/POSIX/POSIX.xs > $target
312 cp ext/POSIX/lib/POSIX.pm archlib
314 B.c: archlib/Config.pm ext/B/B.xs
316 $miniperl Makefile.PL PERL_CORE^'='^1 # to write const-xs.inc
318 $miniperlxs ext/B/B.xs > $target
319 cp ext/B/^(B O)^.pm archlib
321 Peek.c: archlib/Config.pm ext/Devel-Peek/Peek.xs
322 $miniperlxs ext/Devel-Peek/Peek.xs > $target
323 cp ext/Devel-Peek/Peek.pm archlib
325 attributes.c: archlib/Config.pm ext/attributes/attributes.xs
326 $miniperlxs ext/attributes/attributes.xs > $target
327 cp ext/attributes/attributes.pm archlib
329 mro.c: archlib/Config.pm ext/mro/mro.xs
330 $miniperlxs ext/mro/mro.xs > $target
331 cp ext/mro/mro.pm archlib
333 Util.c: archlib/Config.pm ext/Hash-Util/Util.xs
334 $miniperlxs ext/Hash-Util/Util.xs > $target
335 { cd ext/Hash-Util/lib; tar c . } | { cd archlib; tar x }
337 FieldHash.c: archlib/Config.pm ext/Hash-Util-FieldHash/FieldHash.xs
338 $miniperlxs ext/Hash-Util-FieldHash/FieldHash.xs > $target
339 { cd ext/Hash-Util-FieldHash/lib; tar c . } | { cd archlib; tar x }
341 re.c: archlib/Config.pm ext/re/re.xs
342 $miniperlxs ext/re/re.xs > $target
343 cp ext/re/re_^(comp top)^.h $pwd
344 cp ext/re/re.pm archlib
346 re_comp.c: miniperl re.c regcomp.c
349 re_exec.c: miniperl re.c regexec.c
352 dl_none.c: archlib/Config.pm ext/DynaLoader/dl_none.xs
354 $miniperl DynaLoader_pm.PL
356 $miniperlxs ext/DynaLoader/dl_none.xs > $target
357 cp ext/DynaLoader/DynaLoader.pm archlib
360 # Bind the crap out of everything, as different tests expect different INCs
363 mntpt=/$objtype/lib/perl
364 if (test ! -d $mntpt ) {
369 mkdir -p $mntpt/5.32.0/site_perl
370 echo -n Binding directories
371 for (l in $pwd/lib $pwd/archlib $icpanlib $idistlib $iextlib ) {
373 if (! ~ `{grep $l <{ns} >[1]/dev/null; echo $status} '') bind -a $l $mntpt/5.32.0/site_perl
377 bind $mntpt/5.32.0/site_perl $pwd/lib
380 if (! ~ `{grep /$objtype/bin/ape <{ns} >[1]/dev/null; echo $status} '') bind -a /$objtype/bin/ape /bin
387 if (~ $rmdir 1) rm $mntpt
392 perl TEST `{ ls */*.t | comm -23 - ../plan9/exclude }
395 if (~ $rmdir 1) rm $mntpt
398 plan9.$O: config.h plan9/plan9.c
399 cp plan9/plan9.c plan9.c
405 archlib/Config.pm: config.sh
406 $miniperl make_patchnum.pl
408 cp lib/Config.pm archlib/Config.pm
409 cp lib/Config_heavy.pl archlib/Config_heavy.pl
410 cp lib/Config_git.pl archlib/Config_git.pl
414 miniperl plan9/genconfig.pl $extensions $more_extensions
417 for (386 68000 68020 arm arm amd64 mips power power64 sparc sparc64 spim) mk install
419 man:V: $perlpods pod/pod2man.PL perl
421 for (i in $podnames) pod/pod2man pod/$i.pod > $installman3dir/$i
422 for (i in $faqpodnames) pod/pod2man pod/$i.pod > $installman3dir/$i
423 for (i in $advpodnames) pod/pod2man pod/$i.pod > $installman3dir/$i
424 for (i in $archpodnames) pod/pod2man pod/$i.pod > $installman3dir/$i
425 for (i in $histpodnames) pod/pod2man pod/$i.pod > $installman3dir/$i
428 rm -f *.$O config.sh $perllib config.h $perlshr perlmain.c perl miniperl git_version.h $ext_c $more_ext_c generate_uudmap uudmap.h bitcount.h mg_data.h plan9.c plan9ish.h math.h bsd_glob.^(c h) poll.^(c h) re_*.^(c h) uni.data multicall.h
429 rm -rf privlib archlib
432 rm -f $installman1dir/perl* $installman3dir/perl*