1# $MirOS: src/gnu/usr.bin/perl/Makefile.bsd-wrapper,v 1.35 2014/03/13 03:03:18 tg Exp $
2# $OpenBSD: Makefile.bsd-wrapper,v 1.75 2007/11/26 11:12:29 espie Exp $
3#
4# Build wrapper for Perl 5.8.8
5#
6
7.include <bsd.own.mk>
8
9TARGET_MACHINE_ARCH?=	$(MACHINE_ARCH)
10
11# To build a threaded perl, uncomment this.  Not stable on all platforms...
12#THREADED_PERL=	Yes
13THREADED_PERL?=	No
14
15# Perl builds with -fno-strict-aliasing, we want libperl to do the same
16COPTS+=		-fno-strict-aliasing
17COPTS+=		-fno-delete-null-pointer-checks
18
19# Arguments passed to Configure...
20.if ${THREADED_PERL:L} == "yes"
21CONFIGURE_ARGS+=-Dusethreads
22CFLAGS+=	-pthread
23.endif
24
25XFLAGS=		${CFLAGS} -Werror-maybe-reset
26CONFIGURE_ARGS+=-dsE -D${OSname}_distribution=defined \
27		-Doptimize=${XFLAGS:N-g*:M*:Q}
28
29.if ${NOPIC:L} != "no"
30FLAGS_TO_PASS=	USEDL=n
31.else
32FLAGS_TO_PASS=	USEDL=y
33.endif
34FLAGS_TO_PASS+=	CC=${CC:Q} CPP=${CPP:Q} CFLAGS=${XFLAGS:M*:Q} SHELL=${SHELL:Q}
35FLAGS_TO_PASS+=	PATH=/bin:/usr/bin:/sbin:/usr/sbin
36
37# Our lndir is hacked; specify a full path to avoid potential conflicts
38# with the one installed with X11.
39LNDIR=		/usr/bin/lndir
40
41H2PH=		/usr/bin/h2ph
42
43LIB=		perl
44DPADD+=		${LIBM} ${LIBUTIL}
45LDADD+=		-lm -lutil
46
47SRCS=	perl.c gv.c toke.c perly.c op.c pad.c regcomp.c dump.c util.c mg.c \
48	reentr.c hv.c av.c run.c pp_hot.c sv.c pp.c scope.c pp_ctl.c pp_sys.c \
49	doop.c doio.c regexec.c utf8.c taint.c deb.c universal.c xsutils.c \
50	globals.c perlio.c perlapi.c numeric.c locale.c pp_pack.c pp_sort.c
51
52CPPFLAGS+=	-DPERL_CORE -DPERL_RANDOM_DEVICE=\"/dev/arandom\" -I.
53
54# MirPorts Framework support
55CPPFLAGS+=	-DAPPLLIB_EXP=\"/usr/mpkg/libdata/perl5:/usr/mpkg/libdata/perl5/site_perl\"
56
57.if defined(INSTALL_STRIP) && ${INSTALL_STRIP} == "-s"
58STRIPFLAGS=	-s
59.endif
60
61GEN_AFTER= 	config.h cflags makeaperl makedepend makedir \
62		myconfig writemain Makefile Policy.sh pod/Makefile \
63		x2p/Makefile x2p/cflags
64
65GENERATED=	config.sh ${GEN_AFTER}
66
67${GEN_AFTER}: config.sh
68
69CLEANFILES=	config.sh Policy.sh ${MANALL} ${PSALL} ${MANSRCALL} stamp-mansrc.build
70
71.if !exists(${.OBJDIR}/config.over)
72${.OBJDIR}/config.over: ${.CURDIR}/config.over
73	${LNDIR} -s -e obj -e obj.${MACHINE_ARCH} -e Makefile.bsd-wrapper -e Makefile.bsd-wrapper1 ${.CURDIR}
74.endif
75
76all:	perl.build man.build
77
78
79man.build: perl.build
80	cd ${.CURDIR} && exec ${MAKE} -f Makefile.bsd-wrapper1 $@
81
82beforedepend:	config.sh config.h Makefile makedepend x2p/Makefile writemain
83	cd ${.OBJDIR} && exec ${MAKE} depend
84
85perl.build:	perl.lib
86	cd ${.OBJDIR} && ${FLAGS_TO_PASS} exec ${MAKE}
87
88config.sh:	${.OBJDIR}/config.over
89	cd ${.OBJDIR} && GCC_NO_WERROR=1 ${FLAGS_TO_PASS} \
90	    exec ${SHELL} Configure ${CONFIGURE_ARGS}
91
92Makefile cflags makeaperl makedepend makedir myconfig writemain:
93	cd ${.OBJDIR} && ${FLAGS_TO_PASS} exec ${SHELL} $@.SH
94
95Policy.sh:
96	cd ${.OBJDIR} && ${FLAGS_TO_PASS} exec ${SHELL} Policy_sh.SH
97
98config.h:
99	cd ${.OBJDIR} && ${FLAGS_TO_PASS} exec ${SHELL} config_h.SH
100
101pod/Makefile:
102	cd ${.OBJDIR}/pod && ${FLAGS_TO_PASS} exec ${SHELL} Makefile.SH
103
104x2p/Makefile:
105	cd ${.OBJDIR}/x2p && ${FLAGS_TO_PASS} exec ${SHELL} Makefile.SH
106
107x2p/cflags:
108	cd ${.OBJDIR}/x2p && ${FLAGS_TO_PASS} exec ${SHELL} 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	-chmod -R a+rX ${DESTDIR}/usr/libdata/perl5
116
117install.perl:
118	cd ${.OBJDIR}; INSTALL=${INSTALL} INSTALL_COPY=${INSTALL_COPY} \
119	    STRIPFLAGS=${STRIPFLAGS} INSTALLFLAGS=-o NOLIBINSTALL=1 \
120	    LD_LIBRARY_PATH=${.OBJDIR} exec ./perl installperl \
121	    --destdir=${DESTDIR} -o STRIPFLAGS=${STRIPFLAGS}
122	printf '%s\n%s\n%s\nwq\n' '/^optimize=/g/-Werror-maybe-reset/s///' \
123	    '/^optimize=/g/-Werror/s///' "/^optimize=/g/  *'/s//'/" | \
124	    ed -s ${DESTDIR}$$(perl -e 'use Config; print \
125	    $$Config{installarchlib};')/Config_heavy.pl
126
127.if exists(/usr/lib/libposixtz.so)
128TEST_ENV+=		LD_PRELOAD=/usr/lib/libposixtz.so
129.endif
130
131test:
132	-@cd "$$(realpath .)"; \
133	    if [ -e Makefile ]; then ${TEST_ENV} ${MAKE} test; fi
134
135clean:
136	-@if [ -e Makefile ]; then ${MAKE} realclean; fi
137
138cleandir:
139	-@if [ ${.CURDIR} != ${.OBJDIR} ]; then \
140	    rm -rf *; \
141	else \
142	    test -e Makefile && ${MAKE} distclean; \
143	    rm -f ${CLEANFILES}; \
144	fi
145	@cd ${.CURDIR} && ${MAKE} -f Makefile.bsd-wrapper1 cleandir
146
147maninstall:
148.if defined(NOMAN) && ${NOMAN:L} != "no"
149	@echo NOMAN is set
150.else
151	@cd ${.CURDIR} && exec ${MAKE} -f Makefile.bsd-wrapper1 maninstall
152.endif
153
154.include <bsd.lib.mk>
155
156# These have to come after the inclusion of <bsd.lib.mk>
157
158# Need -fPIC, not -fpic on sparc
159.if ($(TARGET_MACHINE_ARCH) == sparc)
160PICFLAG=	-fPIC
161.endif
162
163perl.lib:	${GENERATED} .WAIT ${_LIBS}
164
165install.lib:
166	${INSTALL} ${INSTALL_COPY} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \
167	    lib${LIB}.a ${DESTDIR}${LIBDIR}/
168.if ${NOPIC:L} == "no"
169.  ifdef SHLIB_SONAME
170	${INSTALL} ${INSTALL_COPY} -o ${LIBOWN} -g ${LIBGRP} -m 600 \
171	    ${SHLIB_SONAME} ${DESTDIR}${LIBDIR}/${SHLIB_SONAME}~
172.    if !defined(MKC_DEBG) || ${MKC_DEBG:L} == "no"
173	${STRIP} ${_SODISCARD} ${DESTDIR}${LIBDIR}/${SHLIB_SONAME}~
174.    endif
175	cd ${DESTDIR}${LIBDIR} && \
176	    chmod ${LIBMODE} ${SHLIB_SONAME}~ && \
177	    mv -f ${SHLIB_SONAME}~ ${SHLIB_SONAME}
178.  endif
179	${INSTALL} ${INSTALL_COPY} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \
180	    lib${LIB}_pic.a ${DESTDIR}${LIBDIR}/
181.endif
182
183.PHONY: perl.lib install.lib perl.build install.perl man.build mansrc.build
184