leak in change#4694 spotted by Larry
[p5sagit/p5-mst-13.2.git] / plan9 / mkfile
1 APE=/sys/src/ape
2 < $APE/config
3 <plan9/buildinfo
4 sourcedir = /sys/src/cmd/perl/$p9pvers
5 archname = plan9_$objtype
6 privlib=/sys/lib/perl
7 archlib = /$objtype/lib/perl/$p9pvers
8 sitelib = $privlib/site_perl
9 sitearch = $archlib/site_perl
10
11 CFLAGS =  -B  -D_POSIX_SOURCE -D_BSD_EXTENSION -DMY_UV_MAX=0x7fffffffUL
12 LDFLAGS = -B 
13
14 CCCMD = $CC  -c $CFLAGS 
15
16 perllib = $archlib/CORE/libperl.a
17
18 perlshr = $archlib/CORE/libperlshr.a
19
20 installman1dir = /sys/man/1
21 installman3dir = /sys/man/2
22
23 podnames = perl perlbook perlbot perlcall perldata perldebug perldiag perldsc perlembed perlform perlfunc perlguts perlipc perllol perlmod perlobj perlop perlpod perlre perlref perlrun perlsec perlstyle perlsub perlsyn perltie perltoc perltrap perlvar perlxs perlxstut
24
25 libpods = ${podnames:%=pod/%.pod}
26
27 perlpods = $libpods
28
29 extensions = IO Socket Opcode DynaLoader Fcntl POSIX
30 ext_xs = IO.xs Socket.xs Opcode.xs  dl_none.xs Fcntl.xs POSIX.xs
31 ext_c = ${ext_xs:%.xs=%.c}
32 ext_obj = ${ext_xs:%.xs=%.$O}
33
34 obj = gv.$O toke.$O perly.$O op.$O regcomp.$O dump.$O util.$O mg.$O  hv.$O av.$O run.$O pp_hot.$O sv.$O pp.$O scope.$O pp_ctl.$O pp_sys.$O doop.$O doio.$O regexec.$O taint.$O deb.$O globals.$O plan9.$O universal.$O perlio.$O
35
36 OBJS = perl.$O $obj
37
38 testlist = base/*.t comp/*.t cmd/*.t io/*.t op/*.t
39
40 install:V:      perl preplibrary 
41                 cp perl /$objtype/bin/perl
42                 cp plan9/aperl /rc/bin/Perl
43                 mk man
44                 
45 perl:           config.h miniperlmain.$O miniperl $archlib/Config.pm perlmain.$O $perlshr 
46                 $LD $CFLAGS -o perl perlmain.$O $perllib $perlshr
47                 
48 miniperl:       config.h $perllib miniperlmain.$O 
49                 $LD  $CFLAGS -o miniperl miniperlmain.$O  $perllib 
50
51 preplibrary:V:  miniperl $archlib/Config.pm
52                         cd $privlib
53                         for (file in *.pm */*.pm $archlib/Config.pm) $sourcedir/miniperl  -e 'use AutoSplit; autosplit(@ARGV)' $file $privlib/auto
54         
55 $perllib(%):N:  %
56 $perllib: ${OBJS:%=$perllib(%)}
57                 ar rv $perllib $OBJS
58                 $RANLIB $perllib
59                         
60 miniperlmain.$O:        config.h 
61                                 $CCCMD miniperlmain.c
62
63 perlmain.$O:    config.h perlmain.c
64                         $CCCMD perlmain.c
65
66 perlmain.c:     miniperl vms/writemain.pl
67                         ./miniperl vms/writemain.pl $extensions
68
69 config.h:               plan9/fndvers
70                         plan9/fndvers 
71                         cp config.h $archlib/CORE
72
73 $perlshr(%):N:  %
74 $perlshr:  ${ext_obj:%=$perlshr(%)}
75                 ar rv $perlshr $ext_obj
76                 $RANLIB $perlshr
77
78 IO.c:           miniperl ext/IO/IO.xs
79                         ./miniperl $privlib/ExtUtils/xsubpp -noprototypes -typemap $privlib/ExtUtils/typemap ext/IO/IO.xs > $target
80                         cp ext/IO/*.pm $privlib
81                         if (test !-d $privlib/IO) { 
82                         mkdir $privlib/IO
83                         cp ext/IO/lib/IO/*.pm $privlib/IO
84                          }
85
86 Socket.$O:      config.h Socket.c
87                         $CCCMD -I plan9 Socket.c
88
89 Socket.c:               miniperl ext/Socket/Socket.xs
90                         ./miniperl $privlib/ExtUtils/xsubpp -noprototypes -typemap $privlib/ExtUtils/typemap ext/Socket/Socket.xs > $target
91                         cp ext/Socket/Socket.pm $privlib
92
93 Opcode.c:               miniperl ext/Opcode/Opcode.xs
94                         ./miniperl $privlib/ExtUtils/xsubpp -noprototypes -typemap $privlib/ExtUtils/typemap ext/Opcode/Opcode.xs > $target
95                         cp ext/Opcode/*.pm $privlib
96
97 Fcntl.c:                miniperl ext/Fcntl/Fcntl.xs
98                         ./miniperl $privlib/ExtUtils/xsubpp -noprototypes -typemap $privlib/ExtUtils/typemap ext/Fcntl/Fcntl.xs > $target
99                         cp ext/Fcntl/Fcntl.pm $privlib
100
101 POSIX.c:                miniperl ext/POSIX/POSIX.xs
102                         ./miniperl $privlib/ExtUtils/xsubpp -noprototypes -typemap $privlib/ExtUtils/typemap ext/POSIX/POSIX.xs > $target
103                         cp ext/POSIX/POSIX.pm $privlib
104
105 dl_none.c:      miniperl ext/DynaLoader/dl_none.xs
106                         ./miniperl $privlib/ExtUtils/xsubpp -noprototypes -typemap $privlib/ExtUtils/typemap ext/DynaLoader/dl_none.xs > $target
107                         cp ext/DynaLoader/DynaLoader.pm $privlib
108
109 test:V:         
110                         bind -b $privlib $sourcedir/lib
111                         bind -b $archlib $sourcedir/lib
112                         cd $sourcedir/t
113                         rm -f perl
114                         cp /$objtype/bin/perl $sourcedir/t
115                         perl TEST `{ ls */*.t | comm -23 - ../plan9/exclude }
116
117 plan9.$O:       config.h ./plan9/plan9.c
118                         cp ./plan9/plan9.c ./plan9.c
119                         $CCCMD plan9.c
120
121 %.$O:   config.h %.c
122                 $CCCMD $stem.c
123
124 $archlib/Config.pm:             miniperl config.sh
125                                 ./miniperl configpm $archlib/Config.pm
126
127 config.sh:      miniperl config.h
128                 ./miniperl ./plan9/genconfig.pl
129
130 installall:V:   
131                         for (objtype in 386 mips 68020 sparc) mk install
132
133 man:V:          $perlpods pod/pod2man.PL perl
134                         perl pod/pod2man.PL
135                         for (i in $podnames) pod/pod2man pod/$i.pod > $installman3dir/$i
136                         pod/pod2man plan9/perlplan9.pod > $installman3dir/perlplan9
137                         
138 nuke clean:V:   
139                 rm -f *.$O   $extensions^.pm config.sh $perllib config.h $perlshr perlmain.c perl miniperl $archlib/Config.pm $ext_c
140                 rm -rf $privlib/IO
141
142 deleteman:V:
143                         rm -f $installman1dir/perl* $installman3dir/perl*