1# $OpenBSD: Makefile.bsd-wrapper,v 1.79 2009/10/12 18:24:20 millert Exp $
2#
3# Build wrapper for Perl 5.10.0
4#
5
6# For ``NOMAN'' and ``USE_GCC3''
7.include <bsd.own.mk>
8
9# There is no point in building a profiled libperl that is never used.
10NOPROFILE=
11
12TARGET_MACHINE_ARCH?=	$(MACHINE_ARCH)
13# To build a threaded perl, uncomment this.  Not stable on all platforms...
14#THREADED_PERL=true
15
16# Perl builds with -fno-strict-aliasing, we want libperl to do the same
17CFLAGS+= -fno-strict-aliasing
18.if ${USE_GCC3:L} == "yes"
19CFLAGS+= -fno-delete-null-pointer-checks
20.endif
21
22CONFIGURE_ARGS= -dsE -Dopenbsd_distribution=defined
23.if defined(THREADED_PERL) && ($(THREADED_PERL) == true)
24CONFIGURE_ARGS+= -Dusethreads
25CFLAGS+= -pthread
26.endif
27.if !exists(${.OBJDIR}/config.over)
28CONFIGURE_ARGS+= -Dmksymlinks
29.endif
30
31H2PH=		/usr/bin/h2ph
32
33LIB=	perl
34
35SRCS1=	gv.c toke.c perly.c pad.c regcomp.c dump.c util.c mg.c reentr.c \
36	mro.c hv.c av.c run.c pp_hot.c sv.c pp.c scope.c pp_ctl.c \
37	pp_sys.c doop.c doio.c regexec.c utf8.c taint.c deb.c universal.c \
38	xsutils.c globals.c perlio.c perlapi.c numeric.c mathoms.c locale.c \
39	pp_pack.c pp_sort.c
40SRCS=	${SRCS1} op.c perl.c
41
42# We must not try to mkdep DynaLoader.c as it requires miniperl
43OBJS+=	DynaLoader.o
44
45# For generating DynaLoader.c
46.if defined(NOPIC)
47DYNALOADER=ext/DynaLoader/dl_none.xs
48.else
49DYNALOADER=ext/DynaLoader/dl_dlopen.xs
50.endif
51
52# Arguments passed to Configure...
53
54CPPFLAGS+= -DPERL_CORE -DPERL_RANDOM_DEVICE=\"/dev/arandom\" -I.
55
56.if defined (INSTALL_STRIP) && ${INSTALL_STRIP} == "-s"
57STRIPFLAGS='-s'
58.endif
59
60GEN_AFTER= 	config.h uudmap.h cflags makeaperl makedepend makedir \
61		myconfig writemain Makefile Policy.sh pod/Makefile \
62		x2p/Makefile x2p/cflags
63
64GENERATED=	config.sh ${GEN_AFTER}
65
66${GEN_AFTER}: config.sh
67
68CLEANFILES=	config.sh Policy.sh ${MANALL} ${PSALL} ${MANSRCALL} stamp-mansrc.build
69
70all:	perl.build man.build
71
72
73man.build: perl.build
74	cd ${.CURDIR} && exec ${MAKE} -f Makefile.bsd-wrapper1 $@
75
76beforedepend: config.sh config.h uudmap.h Makefile makedepend x2p/Makefile writemain
77	cd ${.OBJDIR} && exec ${MAKE} depend
78
79perl.build:	perl.lib
80	cd ${.OBJDIR} && exec ${MAKE}
81
82config.sh:	${.CURDIR}/config.over
83	cd ${.OBJDIR} && PATH="/bin:/usr/bin:/sbin:/usr/sbin" \
84	    exec /bin/sh ${.CURDIR}/Configure ${CONFIGURE_ARGS}
85
86Makefile cflags makeaperl makedepend makedir myconfig writemain:
87	cd ${.OBJDIR} && exec /bin/sh $@.SH
88
89Policy.sh:
90	cd ${.OBJDIR} && exec /bin/sh Policy_sh.SH
91
92config.h:
93	cd ${.OBJDIR} && exec /bin/sh config_h.SH
94
95uudmap.h: generate_uudmap
96	./generate_uudmap > uudmap.h
97
98generate_uudmap: generate_uudmap.o
99	${CC} -o generate_uudmap generate_uudmap.o
100
101pod/Makefile:
102	cd ${.OBJDIR}/pod && exec /bin/sh Makefile.SH
103
104x2p/Makefile:
105	cd ${.OBJDIR}/x2p && exec /bin/sh Makefile.SH
106
107x2p/cflags:
108	cd ${.OBJDIR}/x2p && exec /bin/sh cflags.SH
109
110# Never try to regenerate perly.c or perly.h
111perly.c perly.h: perly.y
112	-@true
113
114install: install.lib install.perl maninstall
115	-mkdir -p ${DESTDIR}/usr/libdata/perl5/site_perl/${MACHINE_ARCH}-openbsd
116	(cd ${DESTDIR}/usr/include; ${H2PH} \
117		-d ${DESTDIR}/usr/libdata/perl5/site_perl/${MACHINE_ARCH}-openbsd \
118		`find . -name '*.h'`; \
119		pax -rw `find . -type l \! -name '*.h' | sed 's/^..//'` \
120		${DESTDIR}/usr/libdata/perl5/site_perl/${MACHINE_ARCH}-openbsd)
121	-chmod -R a+rX ${DESTDIR}/usr/libdata/perl5
122
123install.perl:
124	cd ${.OBJDIR}; INSTALL=${INSTALL} INSTALL_COPY=${INSTALL_COPY} \
125	 STRIPFLAGS=${STRIPFLAGS} INSTALLFLAGS=-o NOLIBINSTALL=1 \
126	 LD_LIBRARY_PATH=${.OBJDIR} exec ./perl installperl --destdir=${DESTDIR} -o STRIPFLAGS=${STRIPFLAGS}
127
128test:
129	-@if [ -e Makefile ]; then ${MAKE} test; fi
130
131clean:
132	-@if [ -e Makefile ]; then ${MAKE} realclean; fi
133
134cleandir:
135	-@if [ ${.CURDIR} != ${.OBJDIR} ]; then \
136	    rm -rf *; \
137	else \
138	    test -e Makefile && ${MAKE} distclean; \
139	    rm -f ${CLEANFILES}; \
140	fi
141	@cd ${.CURDIR} && ${MAKE} -f Makefile.bsd-wrapper1 cleandir
142
143maninstall:
144.ifdef NOMAN
145	@echo NOMAN is set
146.else
147	@cd ${.CURDIR} && exec ${MAKE} -f Makefile.bsd-wrapper1 maninstall
148.endif
149
150.include <bsd.lib.mk>
151
152# These have to come after the inclusion of <bsd.lib.mk>
153
154# Need -fPIC, not -fpic on sparc
155.if ($(TARGET_MACHINE_ARCH) == sparc)
156PICFLAG=-fPIC
157.endif
158
159# The DynaLoader extension is now compiled statically into libperl
160miniperl: ${GENERATED} ${SRCS1:S/.c/.o/g} opmini.o miniperl.o miniperlmain.o
161	${CC} -o miniperl ${SRCS1:S/.c/.o/g} opmini.o miniperl.o miniperlmain.o -lm
162
163opmini.c: op.c
164	rm -f opmini.c
165	cp op.c opmini.c
166
167opmini.o: opmini.c
168	${CC} ${CPPFLAGS} ${CFLAGS} -DPERL_EXTERNAL_GLOB -c  $> -o $@
169
170miniperl.o: perl.c
171	${CC} ${CPPFLAGS} ${CFLAGS} -DPERL_EXTERNAL_GLOB -DPERL_IS_MINIPERL -c  $> -o $@
172
173lib/Config.pm: miniperl config.sh
174	cd ${.OBJDIR} && exec ${MAKE} preplibrary
175
176DynaLoader.c: miniperl ${DYNALOADER} lib/Config.pm
177	./miniperl -Ilib lib/ExtUtils/xsubpp -noprototypes -typemap \
178	    ../../lib/ExtUtils/typemap ${DYNALOADER} | \
179	    sed -f ${.CURDIR}/DynaLoader.sed > $@
180
181perl.lib:	${GENERATED} ${_LIBS}
182
183install.lib:
184	${INSTALL} ${INSTALL_COPY} -o ${LIBOWN} -g ${LIBGRP} -m 600 lib${LIB}.a \
185	    ${DESTDIR}${LIBDIR}
186.if (${INSTALL_COPY} != "-p")
187	${RANLIB} -t ${DESTDIR}${LIBDIR}/lib${LIB}.a
188.endif
189	chmod ${LIBMODE} ${DESTDIR}${LIBDIR}/lib${LIB}.a
190.if !defined(NOPROFILE)
191	${INSTALL} ${INSTALL_COPY} -o ${LIBOWN} -g ${LIBGRP} -m 600 \
192	    lib${LIB}_p.a ${DESTDIR}${LIBDIR}
193.if (${INSTALL_COPY} != "-p")
194	${RANLIB} -t ${DESTDIR}${LIBDIR}/lib${LIB}_p.a
195.endif
196	chmod ${LIBMODE} ${DESTDIR}${LIBDIR}/lib${LIB}_p.a
197.endif
198.if !defined(NOPIC) && (${MACHINE_ARCH} != "mips64")
199	${INSTALL} ${INSTALL_COPY} -o ${LIBOWN} -g ${LIBGRP} -m 600 \
200	    lib${LIB}_pic.a ${DESTDIR}${LIBDIR}
201.if (${INSTALL_COPY} != "-p")
202	${RANLIB} -t ${DESTDIR}${LIBDIR}/lib${LIB}_pic.a
203.endif
204	chmod ${LIBMODE} ${DESTDIR}${LIBDIR}/lib${LIB}_pic.a
205.endif
206.if !defined(NOPIC) && defined(major) && defined(minor)
207	${INSTALL} ${INSTALL_COPY} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \
208	    lib${LIB}.so.${major}.${minor} ${DESTDIR}${LIBDIR}
209.endif
210.PHONY: perl.lib install.lib perl.build install.perl man.build mansrc.build
211