Fri Mar 20 19:40:39 2020 UTC ()
mk/djbware.mk: make the errno.h hack configurable

This hack is mostly needed for older software like sysutils/daemontools
that was created when errno was still a global variable. Newer packages
like devel/bglibs don't need that hack anymore. Therefore make it
configurable, to avoid build failures when subst.mk does not find any
error.h to patch.


(rillig)
diff -r1.26 -r1.27 pkgsrc/mk/djbware.mk

cvs diff -r1.26 -r1.27 pkgsrc/mk/djbware.mk (expand / switch to unified diff)

--- pkgsrc/mk/djbware.mk 2017/09/28 16:15:49 1.26
+++ pkgsrc/mk/djbware.mk 2020/03/20 19:40:39 1.27
@@ -1,14 +1,14 @@ @@ -1,14 +1,14 @@
1# $NetBSD: djbware.mk,v 1.26 2017/09/28 16:15:49 schmonz Exp $ 1# $NetBSD: djbware.mk,v 1.27 2020/03/20 19:40:39 rillig Exp $
2# 2#
3# Makefile fragment for packages with djb-style build machinery 3# Makefile fragment for packages with djb-style build machinery
4# 4#
5# Common functions provided: 5# Common functions provided:
6# * a boilerplate RESTRICTED clause 6# * a boilerplate RESTRICTED clause
7# * typical defaults for BUILD_TARGET and INSTALL_TARGET 7# * typical defaults for BUILD_TARGET and INSTALL_TARGET
8# * typical values for conf-* files 8# * typical values for conf-* files
9# * replace inline definitions of errno with "#include <errno.h>" 9# * replace inline definitions of errno with "#include <errno.h>"
10# 10#
11# TODO: 11# TODO:
12# * centralize handling of third-party manpages 12# * centralize handling of third-party manpages
13# * centralize MASTER_SITES and SITES_foo 13# * centralize MASTER_SITES and SITES_foo
14# * centralize compiler hack for arm{,32} 14# * centralize compiler hack for arm{,32}
@@ -19,26 +19,27 @@ @@ -19,26 +19,27 @@
19# inet6 (off) 19# inet6 (off)
20# pam (off) 20# pam (off)
21# * set RESTRICTED automatically iff patches or other mods are applied 21# * set RESTRICTED automatically iff patches or other mods are applied
22# * be unrestricted by default for bulk builds 22# * be unrestricted by default for bulk builds
23# 23#
24 24
25.if !defined(DJBWARE_MK) 25.if !defined(DJBWARE_MK)
26DJBWARE_MK= # defined 26DJBWARE_MK= # defined
27 27
28DJB_RESTRICTED?= YES 28DJB_RESTRICTED?= YES
29DJB_MAKE_TARGETS?= YES 29DJB_MAKE_TARGETS?= YES
30DJB_BUILD_TARGETS?= # empty 30DJB_BUILD_TARGETS?= # empty
31DJB_INSTALL_TARGETS?= # empty 31DJB_INSTALL_TARGETS?= # empty
 32DJB_ERRNO_HACK?= YES
32DJB_SLASHPACKAGE?= NO 33DJB_SLASHPACKAGE?= NO
33.if !empty(DJB_SLASHPACKAGE:M[yY][eE][sS]) 34.if !empty(DJB_SLASHPACKAGE:M[yY][eE][sS])
34DJB_CONFIG_DIR?= ${WRKSRC}/src 35DJB_CONFIG_DIR?= ${WRKSRC}/src
35DJB_BUILD_ARGS?= # empty 36DJB_BUILD_ARGS?= # empty
36.else 37.else
37DJB_CONFIG_DIR?= ${WRKSRC} 38DJB_CONFIG_DIR?= ${WRKSRC}
38.endif 39.endif
39DJB_CONFIG_PREFIX?= ${PREFIX} 40DJB_CONFIG_PREFIX?= ${PREFIX}
40DJB_CONFIG_HOME?= conf-home 41DJB_CONFIG_HOME?= conf-home
41DJB_CONFIG_CMDS?= ${DO_NADA} 42DJB_CONFIG_CMDS?= ${DO_NADA}
42 43
43.if !empty(DJB_RESTRICTED:M[yY][eE][sS]) 44.if !empty(DJB_RESTRICTED:M[yY][eE][sS])
44LICENSE= djb-nonlicense 45LICENSE= djb-nonlicense
@@ -72,36 +73,40 @@ do-configure: @@ -72,36 +73,40 @@ do-configure:
72 ${ECHO} ${QMAILDIR} > conf-qmail; \ 73 ${ECHO} ${QMAILDIR} > conf-qmail; \
73 [ -f conf-bgincs ] && \ 74 [ -f conf-bgincs ] && \
74 ${ECHO} ${PREFIX}/include > conf-bgincs; \ 75 ${ECHO} ${PREFIX}/include > conf-bgincs; \
75 [ -f conf-bglibs ] && \ 76 [ -f conf-bglibs ] && \
76 ${ECHO} ${PREFIX}/lib > conf-bglibs; \ 77 ${ECHO} ${PREFIX}/lib > conf-bglibs; \
77 ${DJB_CONFIG_CMDS} 78 ${DJB_CONFIG_CMDS}
78.endif 79.endif
79 80
80.if !target(do-build) && !empty(DJB_SLASHPACKAGE:M[yY][eE][sS]) 81.if !target(do-build) && !empty(DJB_SLASHPACKAGE:M[yY][eE][sS])
81do-build: 82do-build:
82 cd ${WRKSRC} && ${SETENV} ${MAKE_ENV} package/compile ${DJB_BUILD_ARGS} 83 cd ${WRKSRC} && ${SETENV} ${MAKE_ENV} package/compile ${DJB_BUILD_ARGS}
83.endif 84.endif
84 85
 86.if !empty(DJB_ERRNO_HACK:M[yY][eE][sS])
85PKG_SUPPORTED_OPTIONS+= djbware-errno-hack 87PKG_SUPPORTED_OPTIONS+= djbware-errno-hack
86PKG_SUGGESTED_OPTIONS+= djbware-errno-hack 88PKG_SUGGESTED_OPTIONS+= djbware-errno-hack
87 89
88.include "bsd.fast.prefs.mk" 90.include "bsd.fast.prefs.mk"
89 91
90.if exists(${PKGDIR}/options.mk) 92.if exists(${PKGDIR}/options.mk)
91. include "${PKGDIR}/options.mk" 93. include "${PKGDIR}/options.mk"
92.else 94.else
93# Note: This expression is the same as ${PKGBASE}, but the latter is 95# Note: This expression is the same as ${PKGBASE}, but the latter is
94# not defined yet, so we cannot use it here. 96# not defined yet, so we cannot use it here.
95PKG_OPTIONS_VAR= PKG_OPTIONS.${PKGNAME:C/-[0-9].*//} 97PKG_OPTIONS_VAR= PKG_OPTIONS.${PKGNAME:C/-[0-9].*//}
96.include "bsd.options.mk" 98.include "bsd.options.mk"
97.endif 99.endif
98 100
99.if !empty(PKG_OPTIONS:Mdjbware-errno-hack) 101.if !empty(PKG_OPTIONS:Mdjbware-errno-hack)
100SUBST_CLASSES+= djbware 102SUBST_CLASSES+= djbware
101SUBST_STAGE.djbware= do-configure 103SUBST_STAGE.djbware= do-configure
102SUBST_FILES.djbware+= error.h 104SUBST_FILES.djbware+= error.h
103SUBST_SED.djbware= -e 's|^extern\ int\ errno\;|\#include \<errno.h\>|' 105SUBST_SED.djbware= -e 's|^extern\ int\ errno\;|\#include \<errno.h\>|'
104SUBST_MESSAGE.djbware= Correcting definition of errno. 106SUBST_MESSAGE.djbware= Correcting definition of errno.
105.endif 107.endif
 108.else
 109.sinclude "${PKGDIR}/options.mk"
 110.endif
106 111
107.endif # DJBWARE_MK 112.endif # DJBWARE_MK