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