1*48950c12Ssthen# $OpenBSD: Makefile.bsd-wrapper,v 1.88 2013/03/25 20:40:43 sthen Exp $
24a4f25f9Sdownsj#
3*48950c12Ssthen# Build wrapper for Perl 5.16.2
44a4f25f9Sdownsj#
54a4f25f9Sdownsj
624b66d92Sdrahn# For ``NOMAN'' and ``COMPILER_VERSION''
74aec319cSmillert.include <bsd.own.mk>
84aec319cSmillert
97639e918Smillert# There is no point in building a profiled libperl that is never used.
107639e918SmillertNOPROFILE=
117639e918Smillert
123a4101a9SespieTARGET_MACHINE_ARCH?=	$(MACHINE_ARCH)
13f64b279aSmillert
14f64b279aSmillert# Perl builds with -fno-strict-aliasing, we want libperl to do the same
15f64b279aSmillertCFLAGS+= -fno-strict-aliasing
1624b66d92Sdrahn.if ${COMPILER_VERSION:L} == "gcc3" || ${COMPILER_VERSION:L} == "gcc4"
174aec319cSmillertCFLAGS+= -fno-delete-null-pointer-checks
184aec319cSmillert.endif
19f64b279aSmillert
207b014bbfSmillertCONFIGURE_ARGS= -dsE -Dopenbsd_distribution=defined -Dccflags='-DNO_LOCALE_NUMERIC -DNO_LOCALE_COLLATE'
21*48950c12Ssthen
227bfa9f44Smillert.if !exists(${.OBJDIR}/config.over)
237bfa9f44SmillertCONFIGURE_ARGS+= -Dmksymlinks
247bfa9f44Smillert.endif
255028b98cSdownsj
26e2e5c5d3SmillertH2PH=		/usr/bin/h2ph
274a4f25f9Sdownsj
28dfa561d1SmillertLIB=	perl
29dfa561d1Smillert
307bfa9f44SmillertSRCS1=	gv.c toke.c perly.c pad.c regcomp.c dump.c util.c mg.c reentr.c \
31*48950c12Ssthen	mro.c keywords.c hv.c av.c run.c pp_hot.c sv.c pp.c scope.c pp_ctl.c \
327bfa9f44Smillert	pp_sys.c doop.c doio.c regexec.c utf8.c taint.c deb.c universal.c \
330dc2eaceSmillert	globals.c perlio.c perlapi.c numeric.c mathoms.c locale.c \
347bfa9f44Smillert	pp_pack.c pp_sort.c
35df042708SmillertSRCS=	${SRCS1} op.c perl.c
365fb4fd6cSmillert
375fb4fd6cSmillert# We must not try to mkdep DynaLoader.c as it requires miniperl
385fb4fd6cSmillertOBJS+= DynaLoader.o
397bfa9f44Smillert
407bfa9f44Smillert# For generating DynaLoader.c
417bfa9f44Smillert.if defined(NOPIC)
427bfa9f44SmillertDYNALOADER=ext/DynaLoader/dl_none.xs
437bfa9f44Smillert.else
447bfa9f44SmillertDYNALOADER=ext/DynaLoader/dl_dlopen.xs
457bfa9f44Smillert.endif
467bfa9f44Smillert
477bfa9f44Smillert# Arguments passed to Configure...
48dfa561d1Smillert
497b014bbfSmillertCPPFLAGS+= -DPERL_CORE -DNO_LOCALE_NUMERIC -DNO_LOCALE_COLLATE -DPERL_RANDOM_DEVICE=\"/dev/arandom\" -I.
50dfa561d1Smillert
518e90cb18Skstailey.if defined (INSTALL_STRIP) && ${INSTALL_STRIP} == "-s"
52f64b279aSmillertSTRIPFLAGS='-s'
538e90cb18Skstailey.endif
548e90cb18Skstailey
55*48950c12SsthenGEN_AFTER= 	bitcount.h config.h uudmap.h cflags makedepend \
56*48950c12Ssthen		myconfig Makefile Policy.sh pod/Makefile \
57bfe329a6Smillert		x2p/Makefile x2p/cflags
584a4f25f9Sdownsj
593a4101a9SespieGENERATED=	config.sh ${GEN_AFTER}
603a4101a9Sespie
613a4101a9Sespie${GEN_AFTER}: config.sh
623a4101a9Sespie
63d9fb19d2SschwarzeCLEANFILES=	config.sh Policy.sh DynaLoader.c
644a4f25f9Sdownsj
653a4101a9Sespieall:	perl.build man.build
66d174550eSespie
673a4101a9Sespieman.build: perl.build
68d9fb19d2Sschwarze	cd ${.CURDIR} && exec ${MAKE} -f Makefile.bsd-wrapper1 mansrc.build
69ca15c2caSmillert
70*48950c12Ssthenbeforedepend: config.sh config.h bitcount.h uudmap.h Makefile makedepend x2p/Makefile
713a4101a9Sespie	cd ${.OBJDIR} && exec ${MAKE} depend
727f397bf6Smillert
73dfa561d1Smillertperl.build:	perl.lib
74935efb38Sespie	cd ${.OBJDIR} && exec ${MAKE}
754a4f25f9Sdownsj
767bfa9f44Smillertconfig.sh:	${.CURDIR}/config.over
77935efb38Sespie	cd ${.OBJDIR} && PATH="/bin:/usr/bin:/sbin:/usr/sbin" \
787bfa9f44Smillert	    exec /bin/sh ${.CURDIR}/Configure ${CONFIGURE_ARGS}
79e2e5c5d3Smillert
80*48950c12SsthenMakefile cflags makedepend makedir myconfig:
813a4101a9Sespie	cd ${.OBJDIR} && exec /bin/sh $@.SH
823a4101a9Sespie
83e2e5c5d3SmillertPolicy.sh:
84935efb38Sespie	cd ${.OBJDIR} && exec /bin/sh Policy_sh.SH
854a4f25f9Sdownsj
864a4f25f9Sdownsjconfig.h:
87935efb38Sespie	cd ${.OBJDIR} && exec /bin/sh config_h.SH
884a4f25f9Sdownsj
890dc2eaceSmillertuudmap.h: bitcount.h
900dc2eaceSmillert
910dc2eaceSmillertbitcount.h: generate_uudmap
92*48950c12Ssthen	./generate_uudmap uudmap.h bitcount.h mg_data.h
937bfa9f44Smillert
947bfa9f44Smillertgenerate_uudmap: generate_uudmap.o
957bfa9f44Smillert	${CC} -o generate_uudmap generate_uudmap.o
967bfa9f44Smillert
97bfe329a6Smillertpod/Makefile:
98bfe329a6Smillert	cd ${.OBJDIR}/pod && exec /bin/sh Makefile.SH
99bfe329a6Smillert
1004a4f25f9Sdownsjx2p/Makefile:
101935efb38Sespie	cd ${.OBJDIR}/x2p && exec /bin/sh Makefile.SH
1024a4f25f9Sdownsj
1034a4f25f9Sdownsjx2p/cflags:
104935efb38Sespie	cd ${.OBJDIR}/x2p && exec /bin/sh cflags.SH
1054a4f25f9Sdownsj
106e2e5c5d3Smillert# Never try to regenerate perly.c or perly.h
107e2e5c5d3Smillertperly.c perly.h: perly.y
108e2e5c5d3Smillert	-@true
109e2e5c5d3Smillert
110dfa561d1Smillertinstall: install.lib install.perl maninstall
111ca15c2caSmillert	-mkdir -p ${DESTDIR}/usr/libdata/perl5/site_perl/${MACHINE_ARCH}-openbsd
1121cec80fdSmillert	(cd ${DESTDIR}/usr/include; ${H2PH} \
113ca15c2caSmillert		-d ${DESTDIR}/usr/libdata/perl5/site_perl/${MACHINE_ARCH}-openbsd \
1142ac6f607Smillert		`find . -name '*.h'`; \
1152ac6f607Smillert		pax -rw `find . -type l \! -name '*.h' | sed 's/^..//'` \
1162ac6f607Smillert		${DESTDIR}/usr/libdata/perl5/site_perl/${MACHINE_ARCH}-openbsd)
117ca15c2caSmillert	-chmod -R a+rX ${DESTDIR}/usr/libdata/perl5
1184a4f25f9Sdownsj
1196f311859Sniklasinstall.perl:
120d174550eSespie	cd ${.OBJDIR}; INSTALL=${INSTALL} INSTALL_COPY=${INSTALL_COPY} \
121f64b279aSmillert	 STRIPFLAGS=${STRIPFLAGS} INSTALLFLAGS=-o NOLIBINSTALL=1 \
122d174550eSespie	 LD_LIBRARY_PATH=${.OBJDIR} exec ./perl installperl --destdir=${DESTDIR} -o STRIPFLAGS=${STRIPFLAGS}
1236f311859Sniklas
12448d8cbe1Smillerttest:
12548d8cbe1Smillert	-@if [ -e Makefile ]; then ${MAKE} test; fi
12648d8cbe1Smillert
1274a4f25f9Sdownsjclean:
1284a4f25f9Sdownsj	-@if [ -e Makefile ]; then ${MAKE} realclean; fi
1294a4f25f9Sdownsj
1304a4f25f9Sdownsjcleandir:
131dfa561d1Smillert	-@if [ ${.CURDIR} != ${.OBJDIR} ]; then \
132dfa561d1Smillert	    rm -rf *; \
133dfa561d1Smillert	else \
134dfa561d1Smillert	    test -e Makefile && ${MAKE} distclean; \
135dfa561d1Smillert	    rm -f ${CLEANFILES}; \
136dfa561d1Smillert	fi
1373a4101a9Sespie	@cd ${.CURDIR} && ${MAKE} -f Makefile.bsd-wrapper1 cleandir
1383a4101a9Sespie
1393a4101a9Sespiemaninstall:
1403a4101a9Sespie.ifdef NOMAN
1413a4101a9Sespie	@echo NOMAN is set
1423a4101a9Sespie.else
1433a4101a9Sespie	@cd ${.CURDIR} && exec ${MAKE} -f Makefile.bsd-wrapper1 maninstall
1443a4101a9Sespie.endif
1454a4f25f9Sdownsj
146dfa561d1Smillert.include <bsd.lib.mk>
1474a4f25f9Sdownsj
148dfa561d1Smillert# These have to come after the inclusion of <bsd.lib.mk>
149e5cf0e49Spvalchev
150e5cf0e49Spvalchev# Need -fPIC, not -fpic on sparc
151e5cf0e49Spvalchev.if ($(TARGET_MACHINE_ARCH) == sparc)
152e5cf0e49SpvalchevPICFLAG=-fPIC
153e5cf0e49Spvalchev.endif
154e5cf0e49Spvalchev
1557bfa9f44Smillert# The DynaLoader extension is now compiled statically into libperl
156df042708Smillertminiperl: ${GENERATED} ${SRCS1:S/.c/.o/g} opmini.o miniperl.o miniperlmain.o
157*48950c12Ssthen	${CC} -o miniperl ${SRCS1:S/.c/.o/g} opmini.o miniperl.o miniperlmain.o ${LDFLAGS} -lm -lpthread
1587bfa9f44Smillert
1597bfa9f44Smillertopmini.c: op.c
1607bfa9f44Smillert	rm -f opmini.c
1617bfa9f44Smillert	cp op.c opmini.c
1627bfa9f44Smillert
1637bfa9f44Smillertopmini.o: opmini.c
164df042708Smillert	${CC} ${CPPFLAGS} ${CFLAGS} -DPERL_EXTERNAL_GLOB -c  $> -o $@
165df042708Smillert
166df042708Smillertminiperl.o: perl.c
167df042708Smillert	${CC} ${CPPFLAGS} ${CFLAGS} -DPERL_EXTERNAL_GLOB -DPERL_IS_MINIPERL -c  $> -o $@
1687bfa9f44Smillert
1697bfa9f44Smillertlib/Config.pm: miniperl config.sh
1707bfa9f44Smillert	cd ${.OBJDIR} && exec ${MAKE} preplibrary
1717bfa9f44Smillert
172df042708SmillertDynaLoader.c: miniperl ${DYNALOADER} lib/Config.pm
173*48950c12Ssthen	./miniperl -Ilib -Idist/Cwd -Idist/Cwd/lib -Idist/ExtUtils-ParseXS/lib \
174*48950c12Ssthen	    -Icpan/Getopt-Long/lib -Idist/constant/lib -Iext/re \
175*48950c12Ssthen	    -mExtUtils::Typemaps dist/ExtUtils-ParseXS/lib/ExtUtils/xsubpp \
176*48950c12Ssthen	    -noprototypes -typemap ../../lib/ExtUtils/typemap ${DYNALOADER} | \
177*48950c12Ssthen	    sed -f ${.CURDIR}/DynaLoader.sed > $@; test -s $@ || rm -f $@
1787bfa9f44Smillert
179dfa561d1Smillertperl.lib:	${GENERATED} ${_LIBS}
1804a4f25f9Sdownsj
181dfa561d1Smillertinstall.lib:
182dfa561d1Smillert	${INSTALL} ${INSTALL_COPY} -o ${LIBOWN} -g ${LIBGRP} -m 600 lib${LIB}.a \
183dfa561d1Smillert	    ${DESTDIR}${LIBDIR}
184dfa561d1Smillert.if (${INSTALL_COPY} != "-p")
185dfa561d1Smillert	${RANLIB} -t ${DESTDIR}${LIBDIR}/lib${LIB}.a
186dfa561d1Smillert.endif
187dfa561d1Smillert	chmod ${LIBMODE} ${DESTDIR}${LIBDIR}/lib${LIB}.a
188dfa561d1Smillert.if !defined(NOPROFILE)
189dfa561d1Smillert	${INSTALL} ${INSTALL_COPY} -o ${LIBOWN} -g ${LIBGRP} -m 600 \
190dfa561d1Smillert	    lib${LIB}_p.a ${DESTDIR}${LIBDIR}
191dfa561d1Smillert.if (${INSTALL_COPY} != "-p")
192dfa561d1Smillert	${RANLIB} -t ${DESTDIR}${LIBDIR}/lib${LIB}_p.a
193dfa561d1Smillert.endif
194dfa561d1Smillert	chmod ${LIBMODE} ${DESTDIR}${LIBDIR}/lib${LIB}_p.a
195dfa561d1Smillert.endif
19601ff24c4Skrw.if !defined(NOPIC) && defined(major) && defined(minor)
197dfa561d1Smillert	${INSTALL} ${INSTALL_COPY} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \
19801ff24c4Skrw	    lib${LIB}.so.${major}.${minor} ${DESTDIR}${LIBDIR}
199408dd954Skstailey.endif
200d9fb19d2Sschwarze.PHONY: perl.lib install.lib perl.build install.perl man.build
201