1 # $NetBSD: djbware.mk,v 1.22 2008/05/20 19:39:48 tnn Exp $
3 # Makefile fragment for packages with djb-style build machinery
5 # Common functions provided:
6 # * a boilerplate RESTRICTED clause
7 # * typical defaults for BUILD_TARGET and INSTALL_TARGET
8 # * typical values for conf-* files
9 # * replace inline definitions of errno with "#include <errno.h>"
12 # * centralize handling of third-party manpages
13 # * centralize MASTER_SITES and SITES_foo
14 # * centralize compiler hack for arm{,32}
15 # * common install script for compatibility with default conf-home pathnames
16 # * PKG_OPTIONS (default):
17 # djbware-errno-hack (off)
18 # djbware-pathname-compat (on)
21 # * set RESTRICTED automatically iff patches or other mods are applied
22 # * be unrestricted by default for bulk builds
25 .if
!defined
(DJBWARE_MK
)
29 DJB_MAKE_TARGETS?
= YES
30 DJB_BUILD_TARGETS?
= # empty
31 DJB_INSTALL_TARGETS?
= # empty
33 .if
!empty
(DJB_SLASHPACKAGE
:M
[yY
][eE
][sS
])
34 DJB_CONFIG_DIR?
= ${WRKSRC}/src
35 DJB_BUILD_ARGS?
= # empty
37 DJB_CONFIG_DIR?
= ${WRKSRC}
39 DJB_CONFIG_PREFIX?
= ${PREFIX}
40 DJB_CONFIG_HOME?
= conf-home
41 DJB_CONFIG_CMDS?
= ${DO_NADA}
43 .if
!empty
(DJB_RESTRICTED
:M
[yY
][eE
][sS
])
44 LICENSE
= djb-nonlicense
46 RESTRICTED
= modified source and binaries may not be distributed
47 NO_BIN_ON_CDROM
= ${RESTRICTED}
48 NO_BIN_ON_FTP
= ${RESTRICTED}
51 .if
!empty
(DJB_MAKE_TARGETS
:M
[yY
][eE
][sS
])
52 BUILD_TARGET?
= it
${DJB_BUILD_TARGETS}
53 INSTALL_TARGET?
= setup
check ${DJB_INSTALL_TARGETS}
56 .if
!defined
(NO_CONFIGURE
) && !target
(do-configure
)
58 ${RUN}cd
${DJB_CONFIG_DIR}; \
59 for i in conf-
*; do
${CP} $${i} $${i}.orig_dist
; done
; \
60 ${ECHO} ${DESTDIR
:Q
}${DJB_CONFIG_PREFIX
:Q
} > conf-destdir
; \
61 [ -f
${DJB_CONFIG_HOME} ] && \
62 ${ECHO} ${DJB_CONFIG_PREFIX} > ${DJB_CONFIG_HOME}; \
64 ${ECHO} ${CC
:Q
} ${CFLAGS
:Q
} ${CPPFLAGS
:Q
} > conf-cc
; \
66 ${ECHO} ${CC
:Q
} ${_STRIPFLAG_CC} ${LDFLAGS
:Q
} > conf-ld
;\
68 ${ECHO} ${DJB_CONFIG_PREFIX}/bin
> conf-bin
; \
70 ${ECHO} ${DJB_CONFIG_PREFIX}/${PKGMANDIR} > conf-man
; \
71 [ -f conf-qmail
] && \
72 ${ECHO} ${QMAILDIR} > conf-qmail
; \
73 [ -f conf-bgincs
] && \
74 ${ECHO} ${LOCALBASE}/include/bglibs
> conf-bgincs
; \
75 [ -f conf-bglibs
] && \
76 ${ECHO} ${LOCALBASE}/lib
/bglibs
> conf-bglibs
; \
80 .if
!target
(do-build
) && !empty
(DJB_SLASHPACKAGE
:M
[yY
][eE
][sS
])
82 cd
${WRKSRC} && package
/compile
${DJB_BUILD_ARGS}
85 PKG_SUPPORTED_OPTIONS
+= djbware-errno-hack
86 PKG_SUGGESTED_OPTIONS
+= djbware-errno-hack
88 .
include "bsd.fast.prefs.mk"
90 .if exists
(${PKGDIR}/options.mk
)
91 .
include "${PKGDIR}/options.mk"
93 # Note: This expression is the same as ${PKGBASE}, but the latter is
94 # not defined yet, so we cannot use it here.
95 PKG_OPTIONS_VAR
= PKG_OPTIONS.
${PKGNAME
:C
/-[0-9].
*//}
96 .
include "bsd.options.mk"
99 .if
!empty
(PKG_OPTIONS
:Mdjbware-errno-hack
)
100 SUBST_CLASSES
+= djbware
101 SUBST_STAGE.djbware
= do-configure
102 SUBST_FILES.djbware
+= error.h
103 SUBST_SED.djbware
= -e
's|^extern\ int\ errno\;|\#include \<errno.h\>|'
104 SUBST_MESSAGE.djbware
= Correcting definition of errno.