]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - gnu/usr.bin/perl/perl/Makefile
$Id$ -> $FreeBSD$
[FreeBSD/FreeBSD.git] / gnu / usr.bin / perl / perl / Makefile
1 #
2 # $FreeBSD$
3 #
4
5 PROG=   perl
6 NOMAN=  true
7 CFLAGS+=-I${PERL5SRC} -I${.OBJDIR}
8 SRCS=   perlmain.c config.h
9 NOSHARED= no
10 DPADD=  lib/auto/DynaLoader/DynaLoader.a ${LIBPERL} ${LIBM} ${LIBCRYPT}
11 LDADD=  lib/auto/DynaLoader/DynaLoader.a -lperl -lm -lcrypt
12 LINKS=  ${BINDIR}/${PROG} ${BINDIR}/perl5 \
13         ${BINDIR}/${PROG} ${BINDIR}/perl5.00503
14
15 CLEANFILES=     config.h config.sh config_h.sh writemain writemain.sh \
16                 Config.pm cflags cflags.sh myconfig perlmain.c miniperlmain.c \
17                 autosplit regcomp.c regexec.c pod2man.PL pod2man ext.libs \
18                 man3pages
19
20 STATIC_EXT=     DynaLoader/DynaLoader
21
22 DYNAMIC_EXT=    B/B DB_File/DB_File Data/Dumper/Dumper Fcntl/Fcntl IO/IO \
23                 IPC/SysV/SysV NDBM_File/NDBM_File Opcode/Opcode POSIX/POSIX \
24                 SDBM_File/SDBM_File Socket/Socket attrs/attrs re/re
25
26 NONXS_EXT=      Errno/pm_to_blib
27
28 .include <bsd.prog.mk>
29
30 ${PROG}: linkfarm Config.pm autosplit lib/auto/DynaLoader/DynaLoader.a
31
32 config_h.sh config.sh cflags.sh writemain.sh: linkfarm
33
34 config.h: linkfarm config_h.sh config.sh
35         sh config_h.sh
36
37 cflags: linkfarm cflags.sh
38         sh cflags.sh
39
40 Config.pm: linkfarm ${PERL5SRC}/configpm myconfig config.sh
41         miniperl ${PERL5SRC}/configpm \
42                 Config.pm Porting/Glossary myconfig config.sh
43         cd lib ; ln -sf ../${.TARGET}
44
45 perlmain.c: linkfarm writemain config.h
46         sh writemain lib/auto/DynaLoader/DynaLoader.a > ${.TARGET}
47
48 writemain: linkfarm writemain.sh
49         sh writemain.sh
50
51 autosplit: linkfarm Config.pm lib/*.pm lib/*/*.pm
52         miniperl -I${.OBJDIR}/lib \
53                 -e 'use AutoSplit; autosplit_lib_modules(@ARGV)' \
54                 lib/*.pm lib/*/*.pm
55         touch ${.TARGET}
56
57 .for I in ${STATIC_EXT}
58 ext/${I:H}/Makefile: linkfarm ext/${I:H}/Makefile.PL cflags Config.pm config.h
59         cd ext/${I:H}; \
60         miniperl -I${.OBJDIR}/lib Makefile.PL \
61                 LINKTYPE=static INSTALLDIRS=perl PERL_SRC=${.OBJDIR} \
62                 LIBS="-lperl" INSTALLMAN3DIR=${DESTDIR}/usr/share/perl/man3; \
63         make -B config PERL_SRC=${.OBJDIR}
64
65 lib/auto/${I}.a: linkfarm ext/${I:H}/Makefile
66         cd ext/${I:H}; \
67         make -B all PERL_SRC=${.OBJDIR}
68
69 all:    lib/auto/${I}.a
70
71 STATICS+=       lib/auto/${I}.a
72 .endfor
73
74 .for I in ${DYNAMIC_EXT}
75 ext/${I:H}/Makefile: linkfarm ext/${I:H}/Makefile.PL cflags Config.pm pod2man config.h
76         cd ext/${I:H}; \
77         miniperl -I${.OBJDIR}/lib Makefile.PL \
78                 LINKTYPE=dynamic INSTALLDIRS=perl PERL_SRC=${.OBJDIR} \
79                 LIBS="-lperl" INSTALLMAN3DIR=${DESTDIR}/usr/share/perl/man3 \
80                 INST_LIB=${.OBJDIR}/build/${I:H} \
81                 INST_ARCHLIB=${.OBJDIR}/build/${I:H} ;\
82         make -B config PERL_SRC=${.OBJDIR}
83         
84
85 lib/auto/${I}.so: linkfarm ${PROG} ext/${I:H}/Makefile
86         cd ext/${I:H}; \
87         make -B all PERL_SRC=${.OBJDIR}
88
89 all:    lib/auto/${I}.so
90
91 DYNAMICS+=      lib/auto/${I}.so
92 .endfor
93
94 .for I in ${NONXS_EXT}
95 ext/${I:H}/Makefile: linkfarm ext/${I:H}/Makefile.PL cflags lib/Config.pm
96         mkdir -p ${.OBJDIR}/lib/auto/${I:H} ;\
97         cd ext/${I:H} ;\
98         miniperl -I${.OBJDIR}/lib Makefile.PL \
99                 INSTALLDIRS=perl PERL_SRC=${.OBJDIR} \
100                 INSTALLMAN3DIR=/usr/share/perl/man3 \
101                 INST_LIB=${.OBJDIR}/lib/auto/${I:H} \
102                 INST_ARCHLIB=${.OBJDIR}/lib/auto/${I:H} ;\
103         make -B config PERL_SRC=${.OBJDIR}
104
105 lib/auto/${I}: linkfarm ${PROG} ext/${I:H}/Makefile
106         cd ext/${I:H}; \
107         make -B all LINKTYPE=nonxs PERL_SRC=${.OBJDIR}
108
109 NONXSS+=        lib/auto/${I}
110 .endfor
111
112 pod2man: Config.pm autosplit ${PERL5SRC}/pod/pod2man.PL
113         ln -sf ${PERL5SRC}/pod/pod2man.PL 
114         miniperl -I${.OBJDIR}/lib pod2man.PL
115
116 man3pages: pod2man
117         cd ${.OBJDIR}/lib ;\
118         for i in `find . -name \*.pm | grep -v Functions.pm` ; do \
119                 j=`echo $$i | sed -e 's|./||' -e 's|/|::|g' -e 's|.pm|.3|'` ;\
120                 echo Manifying $$j ;\
121                 miniperl -I${.OBJDIR}/lib ${.OBJDIR}/pod2man $$i > $$j ;\
122                 gzip -fn $$j ;\
123         done
124         cd ${.OBJDIR}/ext ;\
125         for i in `find . -name \*.pm -o -name \*.pod | grep -v POSIX.pm` ; do \
126                 j=`echo $$i | sed -e 's|./||' -e 's|/SysV/|/IPC/|' \
127                         -e 's|/Dumper/|/Data/|' -e 's|/lib/|/|' \
128                         -e 's|^[^/]*/||' \
129                         -e 's|/|::|g' -e 's|.pm|.3|' -e 's|.pod|.3|'`;\
130                 i=`echo $$i | sed -e 's|./||'` ;\
131                 echo Manifying $$j ;\
132                 miniperl -I${.OBJDIR}/lib ${.OBJDIR}/pod2man $$i > ../lib/$$j ;\
133                 gzip -fn ../lib/$$j ;\
134         done
135         touch ${.TARGET}
136
137 all: man3pages
138
139 install:
140 .for I in ${DYNAMIC_EXT}
141         cd ${.OBJDIR}/ext/${I:H} ;\
142         make -B install \
143                 INSTALLPRIVLIB=${DESTDIR}/usr/libdata/perl/5.00503 \
144                 INSTALLARCHLIB=${DESTDIR}/usr/libdata/perl/5.00503/mach
145 .endfor
146         cd ${.OBJDIR}/lib ;\
147         for i in `find . \! -type d \! -name \*.3.gz` ; do \
148                 j=`echo $$i|sed -e 's|auto/DynaLoader|mach/auto/DynaLoader|'` ;\
149                 ${INSTALL} ${COPY} -o ${BINOWN} -g ${BINGRP} -m ${BINMODE} \
150                         $$i ${DESTDIR}/usr/libdata/perl/5.00503/$$j ;\
151         done
152         cd ${.OBJDIR}/lib ;\
153         ${INSTALL} ${COPY} -o ${MANOWN} -g ${MANGRP} -m ${MANMODE} \
154                 *.3.gz ${DESTDIR}/usr/share/perl/man/man3
155         cd ${.OBJDIR} ;\
156         ${INSTALL} ${COPY} -o ${SHAREOWN} -g ${SHAREGRP} -m ${SHAREMODE} \
157                 *.h ${DESTDIR}/usr/libdata/perl/5.00503/mach/CORE
158         cd ${.OBJDIR} ;\
159         ${INSTALL} ${COPY} -o ${BINOWN} -g ${BINGRP} -m ${BINMODE} \
160                 Config.pm ${DESTDIR}/usr/libdata/perl/5.00503/mach
161
162 .PATH:  ${PERL5SRC}