1 # Autogenerated -- Do not edit!
2 # Copyright (C) 2017-2021 John R. Marino
3 # This file is covered by the Internet Software Consortium (ISC) License
5 # This is the master makefile logic for the Ravenports system.
6 # Use 8-column hard tabs
10 WRKDIRPREFIX?= /usr/obj/raven
11 DISTDIR?= ${RAVENBASE}/distfiles
12 PACKAGES?= ${RAVENBASE}/packages
16 .include "/xports/Mk/raven.commands.mk"
18 NAMEBASE?= undefined # dummy, must be defined by port makefile
19 VARIANT?= standard # must be defined by ravenadm
20 SUBPACKAGES?= single # must be defined by ravenadm; list
21 TWO_PART_ID= ${NAMEBASE}-${VARIANT}
22 PKGNAMEBASE= ${NAMEBASE}__${VARIANT}
23 DISTNAME?= ${NAMEBASE}-${VERSION}
24 WRKDIR= ${WRKDIRPREFIX}/${NAMEBASE}
25 STD_DOCDIR= ${PREFIX}/share/doc/${NAMEBASE}
26 STD_EXAMPLESDIR= ${PREFIX}/share/examples/${NAMEBASE}
27 STD_ETCDIR= ${PREFIX}/etc/${NAMEBASE}
28 ETCDIR?= ${STD_ETCDIR}
29 DESKTOPDIR?= ${PREFIX}/share/applications
30 MK_SCRIPTS= /xports/Mk/Scripts
31 MK_TEMPLATES= /xports/Mk/Templates
32 MK_KEYWORDS= /xports/Mk/Keywords
33 MK_STOCK_LICENSES= /xports/Mk/Stock_licenses
34 USESDIR= /xports/Mk/Uses
35 SCRIPTDIR= ${.CURDIR}/scripts
36 PATCHDIR= ${.CURDIR}/patches
37 FILESDIR= ${.CURDIR}/files
38 OPSYSDIR= ${.CURDIR}/opsys
39 MANIFESTDIR= ${.CURDIR}/manifests
40 _DISTINFO_FILE= ${.CURDIR}/distinfo
43 . if defined(DIRTY_EXTRACT_${N})
44 EXTRACT_WRKDIR_${N}= ${WRKDIR}/${NAMEBASE}_${N}
46 EXTRACT_WRKDIR_${N}= ${WRKDIR}
50 .if defined(DIRTY_EXTRACT_1)
51 WRKSRC= ${WRKDIR}/${NAMEBASE}_1
53 WRKSRC= ${WRKDIR}/${DISTNAME}
56 # --------------------------------------------------------------------------
57 # -- Common Definitions
58 # --------------------------------------------------------------------------
60 # These require modification to bmake (which Ravenports have)
61 # Some systems have different names for same architecture
62 # FreeBSD ARCH=amd64 ARCH_STANDARD=x86_64
63 # DragonFly ARCH=x86_64 ARCH_STANDARD=x86_64
65 OPSYS?= ${.MAKE.OS.NAME}
66 OSVERSION?= ${.MAKE.OS.VERSION}
67 OSREL?= ${.MAKE.OS.RELEASE}
68 MAJOR?= ${.MAKE.OS.MAJOR}
69 ARCH?= ${.MAKE.OS.ARCHITECTURE}
70 ARCH_STANDARD?= ${.MAKE.OS.ARCH.STANDARD}
72 .if exists(${.CURDIR}/files/special.mk)
73 .include "${.CURDIR}/files/special.mk"
75 .if exists(${.CURDIR}/opsys/special.mk)
76 .include "${.CURDIR}/opsys/special.mk"
79 # --------------------------------------------------------------------------
80 # -- Set up environment
81 # --------------------------------------------------------------------------
91 .if defined(WITH_DEBUG)
95 MAKE_ENV+= DONTSTRIP=yes
96 CFLAGS:= -pipe -O${OPTIMIZER_LEVEL} ${DEBUG_FLAGS} \
97 ${CFLAGS} -I${LOCALBASE}/include
98 CXXFLAGS:= -pipe -O${OPTIMIZER_LEVEL} ${DEBUG_FLAGS} \
99 ${CXXFLAGS} -I${LOCALBASE}/include
101 . if defined(INSTALL_TARGET)
102 INSTALL_TARGET:= ${INSTALL_TARGET:S/^install-strip$/install/g}
105 CFLAGS:= -pipe -O${OPTIMIZER_LEVEL} \
106 ${CFLAGS} -I${LOCALBASE}/include
107 CXXFLAGS:= -pipe -O${OPTIMIZER_LEVEL} \
108 ${CXXFLAGS} -I${LOCALBASE}/include
109 . if "${OPSYS}" == "Darwin"
113 # gcc inserts $LOCALBASE/lib runpath along with path to gcc libraries
114 # gcc also looks in $LOCALBASE/lib by default for linking libraries
115 # Probably gcc needs to look in $LOCALBASE/include by default as well
116 CPPFLAGS+= -I${LOCALBASE}/include
119 INSTALL_TARGET?= install
121 INSTALL_PROGRAM= ${INSTALL} ${STRIP} -m ${BINMODE}
122 INSTALL_LIB= ${INSTALL} ${STRIP} -m ${SHAREMODE}
123 INSTALL_SCRIPT= ${INSTALL} -m ${BINMODE}
124 INSTALL_DATA= ${INSTALL} -m ${_SHAREMODE}
125 INSTALL_MAN= ${INSTALL} -m ${MANMODE}
127 INSTALL_MACROS= BSD_INSTALL_PROGRAM="${INSTALL_PROGRAM}" \
128 BSD_INSTALL_LIB="${INSTALL_LIB}" \
129 BSD_INSTALL_SCRIPT="${INSTALL_SCRIPT}" \
130 BSD_INSTALL_DATA="${INSTALL_DATA}" \
131 BSD_INSTALL_MAN="${INSTALL_MAN}"
133 MAKE_ENV+= ${INSTALL_MACROS}
134 SCRIPTS_ENV+= ${INSTALL_MACROS} \
139 PATCHDIR=${PATCHDIR} \
140 SCRIPTDIR=${SCRIPTDIR} \
141 FILESDIR=${FILESDIR} \
143 LOCALBASE=${LOCALBASE}
145 # --------------------------------------------------------------------------
147 # --------------------------------------------------------------------------
149 # setup empty variables for USES targets
150 .for target in fetch extract patch configure build install stage test
154 .include "/xports/Mk/raven.versions.mk"
159 . if !defined(${_f}_ARGS)
160 ${_f}_ARGS:= ${f:C/^[^\:]*(\:|\$)//:S/,/ /g}
164 .include "${USESDIR}/${f:C/\:.*//}.mk"
167 # --------------------------------------------------------------------------
169 # --------------------------------------------------------------------------
171 # makesum guards break "ravenadm dev distinfo" because root_ca_nss is
172 # not installed in the slave jail
174 FETCH_ENV= SSL_NO_VERIFY_PEER=1 SSL_NO_VERIFY_HOSTNAME=1
178 _OFFICIAL_BACKUP= http://www.ravenports.com/cache-distfiles/
179 DL_SITE_BACKUP?= ${_OFFICIAL_BACKUP}
181 .if defined(DL_SITE_DISABLE)
182 _DL_SITE_OVERRIDE:= ${_OFFICIAL_BACKUP}
183 _DL_SITE_BACKUP= # disabled
185 _DL_SITE_OVERRIDE= ${DL_SITE_OVERRIDE}
186 _DL_SITE_BACKUP= ${DL_SITE_BACKUP}
189 # Sort the master site list according to the patterns in MASTER_SORT
191 MASTER_SORT_AWK= BEGIN { RS = " "; ORS = " "; IGNORECASE = 1 ; gl = "${MSR:S|\\|\\\\|g}"; } \
192 /${MSR:S|/|\\/|g}/ { good["${MSR:S|\\|\\\\|g}"] = good["${MSR:S|\\|\\\\|g}"] " " $$0 ; next; } \
193 { rest = rest " " $$0; } END { n=split(gl, gla); for(i=1;i<=n;i++) { print good[gla[i]]; } print rest; }
204 .for N in ${MAKESUM_INDEX}
206 _F_TEMP= ${_F:S/^${_F:C/:[^:]+$//}//:S/^://}
207 _MAKESUMFILES:= ${_MAKESUMFILES} ${_F}
208 _MSCKSUMFILES:= ${_MSCKSUMFILES} ${_F:C/:.*//}
209 . for _group in ${_F_TEMP:S/,/ /g}
210 . if defined(DL_SITES_${_group})
211 _MS_SITES_ENV+= _DOWNLOAD_SITES_${_group}=${DL_SITES_${_group}:Q}
216 .for N in ${DF_INDEX}
218 _F_TEMP= ${_F:S/^${_F:C/:[^:]+$//}//:S/^://}
219 _DISTFILES:= ${_DISTFILES} ${_F}
220 _CKSUMFILES:= ${_CKSUMFILES} ${_F:C/:.*//}
221 . for _group in ${_F_TEMP:S/,/ /g}
222 . if defined(DL_SITES_${_group})
223 _DL_SITES_ENV+= _DOWNLOAD_SITES_${_group}=${DL_SITES_${_group}:Q}
228 .for N in ${PF_INDEX}
230 _F_TEMP= ${_F:S/^${_F:C/:[^-:][^:]*$//}//:S/^://}
231 _PATCHFILES:= ${_PATCHFILES} ${_F}
232 _CKSUMFILES:= ${_CKSUMFILES} ${_F:C/:.*//}
234 . for _group in ${_F_TEMP:S/,/ /g}
235 . if defined(DL_SITES_${_group})
236 _PATCH_SITES_ENV+= _DOWNLOAD_SITES_${_group}=${DL_SITES_${_group}:Q}
242 .if defined(DIST_SUBDIR)
243 _CKSUMFILES:= ${_CKSUMFILES:S/^/${DIST_SUBDIR}\//}
244 _MSCKSUMFILES:= ${_MSCKSUMFILES:S/^/${DIST_SUBDIR}\//}
247 _DO_FETCH_ENV= dp_DISTDIR='${DISTDIR}' \
248 dp_DISTINFO_FILE='${_DISTINFO_FILE}' \
249 dp_DIST_SUBDIR='${DIST_SUBDIR}' \
250 dp_ECHO_MSG='${ECHO_MSG}' \
251 dp_FETCH_CMD='${FETCH_CMD}' \
252 dp_FETCH_ENV=${FETCH_ENV:Q} \
253 dp_FORCE_FETCH_ALL= \
254 dp_FORCE_FETCH_LIST='${FORCE_FETCH_LIST}' \
255 dp_MASTER_SITE_BACKUP='${_DL_SITE_BACKUP}' \
256 dp_MASTER_SITE_OVERRIDE='${_DL_SITE_OVERRIDE}' \
257 dp_MASTER_SORT_AWK='${MASTER_SORT_AWK}' \
258 dp_DISABLE_CHECKSUM='${SKIP_CHECKSUM}' \
260 dp_SCRIPTSDIR='${MK_SCRIPTS}' \
261 dp_TARGET='${.TARGET}' \
262 dp_OPSYS='${OPSYS}' \
265 .if !target(do-fetch)
267 . if !empty(_DISTFILES)
269 ${_DO_FETCH_ENV} ${_DL_SITES_ENV} \
270 ${SH} ${MK_SCRIPTS}/do-fetch.sh ${_DISTFILES:C/.*/'&'/}
272 . if !empty(_PATCHFILES)
274 ${_DO_FETCH_ENV} ${_PATCH_SITES_ENV} \
275 ${SH} ${MK_SCRIPTS}/do-fetch.sh ${_PATCHFILES:C/:-p[0-9]//:C/.*/'&'/}
280 @${ECHO_MSG} "===> Fetching for ${TWO_PART_ID}"
282 # --------------------------------------------------------------------------
284 # --------------------------------------------------------------------------
286 # List all algorithms here (which is exactly one)
287 _CHECKSUM_INIT_ENV= dp_SHA256=${SHA256}
289 .if !target(checksum)
291 . if !empty(_CKSUMFILES)
293 ${_CHECKSUM_INIT_ENV} \
294 dp_CHECKSUM_ALGORITHMS='SHA256' \
295 dp_CURDIR='${.CURDIR}' \
296 dp_DISTDIR='${DISTDIR}' \
297 dp_DISTINFO_FILE='${_DISTINFO_FILE}' \
298 dp_DIST_SUBDIR='${DIST_SUBDIR}' \
299 dp_ECHO_MSG='${ECHO_MSG}' \
300 dp_FETCH_REGET='${FETCH_REGET}' \
302 dp_MAKEFLAGS='${.MAKEFLAGS}' \
303 dp_SCRIPTSDIR='${MK_SCRIPTS}' \
305 dp_DISABLE_CHECKSUM= \
306 ${SH} ${MK_SCRIPTS}/checksum.sh ${_CKSUMFILES:C/.*/'&'/}
310 # --------------------------------------------------------------------------
311 # -- Makesum (developer)
312 # --------------------------------------------------------------------------
316 . if !empty(_MAKESUMFILES)
318 ${_DO_FETCH_ENV} ${_MS_SITES_ENV} \
319 dp_DISABLE_CHECKSUM=yes \
320 dp_DISABLE_SIZE=yes \
321 dp_OPSYS='${OPSYS}' \
322 ${SH} ${MK_SCRIPTS}/do-fetch.sh ${_MAKESUMFILES:C/.*/'&'/}
325 ${_CHECKSUM_INIT_ENV} \
326 dp_CHECKSUM_ALGORITHMS='SHA256' \
327 dp_CKSUMFILES='${_MSCKSUMFILES}' \
328 dp_DISTDIR='${DISTDIR}' \
329 dp_DISTINFO_FILE='${_DISTINFO_FILE}' \
330 dp_ECHO_MSG='${ECHO_MSG}' \
331 dp_SCRIPTSDIR='${MK_SCRIPTS}' \
332 dp_OPSYS='${OPSYS}' \
333 ${SH} ${MK_SCRIPTS}/makesum.sh ${_MAKESUMFILES:C/.*/'&'/}
336 # --------------------------------------------------------------------------
338 # --------------------------------------------------------------------------
340 # This is what is actually going to be extracted, and is overridable by user.
341 EXTRACT_ONLY?= ${DF_INDEX}
343 .for N in ${EXTRACT_ONLY}
344 EXTRACT_HEAD_${N}?= env LANG=en_US.UTF-8 ${TAR} -xf
345 EXTRACT_TAIL_${N}?= --no-same-owner --no-same-permissions
353 .for N in ${EXTRACT_ONLY}
354 . if defined (DIRTY_EXTRACT_${N})
355 @${MKDIR} ${WRKDIR}/${NAMEBASE}_${N}
360 @${ECHO_MSG} "===> Extracting for ${TWO_PART_ID}"
363 @if [ -f "/etc/resolv.conf" ]; then \
364 mv /etc/resolv.conf /etc/resolv.conf.orig; \
365 echo "nameserver 127.0.0.1" > /etc/resolv.conf; \
369 @${CHMOD} -R u+w,a+rX ${WRKDIR}
372 .if !target(compile-package-desc)
373 _PKGMESSAGE= ${.CURDIR}/files/pkg-message-xxx
374 _PKGMESSAGEOPSYS= ${.CURDIR}/files/pkg-message-xxx-opsys
375 _PKGMESSAGEOPSYSARCH= ${.CURDIR}/files/pkg-message-xxx-opsys-arch
376 _PKGMESSAGEARCH= ${.CURDIR}/files/pkg-message-xxx-arch
377 _PKGINSTALL= ${.CURDIR}/files/pkg-zzzinstall-xxx
378 _PKGUPGRADE= ${.CURDIR}/files/pkg-zzzupgrade-xxx
379 _PKGDEINSTALL= ${.CURDIR}/files/pkg-zzzdeinstall-xxx
380 _IN_PKGMESSAGE= ${WRKDIR}/pkg-message-xxx
381 _IN_PKGMESSAGEOPSYS= ${WRKDIR}/pkg-message-xxx-opsys
382 _IN_PKGMESSAGEOPSYSARCH=${WRKDIR}/pkg-message-xxx-opsys-arch
383 _IN_PKGMESSAGEARCH= ${WRKDIR}/pkg-message-xxx-arch
384 _IN_PKGINSTALL= ${WRKDIR}/pkg-zzzinstall-xxx
385 _IN_PKGUPGRADE= ${WRKDIR}/pkg-zzzupgrade-xxx
386 _IN_PKGDEINSTALL= ${WRKDIR}/pkg-zzzdeinstall-xxx
388 _MESSAGE_FILE= ${WRKDIR}/.PKG_DISPLAY
389 _DESC_FILE= ${WRKDIR}/.PKG_DESC
391 _CPDLIST= AGE AGEOPSYS AGEOPSYSARCH AGEARCH
392 _MSGLIST= install upgrade deinstall
394 compile-package-desc:
395 . for sp in ${SUBPACKAGES}
396 @${RM} ${_MESSAGE_FILE}.${sp}
397 @${RM} ${_DESC_FILE}.${sp}
398 @${ECHO_MSG} "===> Creating package metadata (${sp})"
399 . for suffix in ${_CPDLIST}
400 @if [ -f "${_IN_PKGMESS${suffix}:S/-xxx/-${sp}/}" ]; then \
401 ${CAT} ${_IN_PKGMESS${suffix}:S/-xxx/-${sp}/} >> ${_MESSAGE_FILE}.${sp}; \
402 elif [ -f "${_PKGMESS${suffix}:S/-xxx/-${sp}/}" ]; then \
403 ${CAT} ${_PKGMESS${suffix}:S/-xxx/-${sp}/} >> ${_MESSAGE_FILE}.${sp}; \
406 . for suffix in ${_MSGLIST}
407 . for psp in pre- x post-
408 @if [ -f "${_IN_PKG${suffix:tu}:S/-zzz/-${psp:Nx}/:S/-xxx/-${sp}/}" ]; then \
409 ${CP} ${_IN_PKG${suffix:tu}:S/-zzz/-${psp:Nx}/:S/-xxx/-${sp}/} ${WRKDIR}/pkg-${psp:Nx}${suffix}.${sp}; \
410 elif [ -f "${_PKG${suffix:tu}:S/-zzz/-${psp:Nx}/:S/-xxx/-${sp}/}" ]; then \
411 ${CP} ${_PKG${suffix:tu}:S/-zzz/-${psp:Nx}/:S/-xxx/-${sp}/} ${WRKDIR}/pkg-${psp:Nx}${suffix}.${sp}; \
415 . if exists(${.CURDIR}/descriptions/desc.${sp}.${VARIANT})
416 @${CP} ${.CURDIR}/descriptions/desc.${sp}.${VARIANT} ${_DESC_FILE}.${sp}
417 . elif exists(${.CURDIR}/descriptions/desc.${sp})
418 @${CP} ${.CURDIR}/descriptions/desc.${sp} ${_DESC_FILE}.${sp}
420 @${ECHO} "This is the documents subpackage of the ${TWO_PART_ID} port." > ${_DESC_FILE}.${sp}
421 . elif ${sp:Mexamples}
422 @${ECHO} "This is the examples subpackage of the ${TWO_PART_ID} port." > ${_DESC_FILE}.${sp}
424 @${ECHO} "This is the Native Language Support (NLS) subpackage" > ${_DESC_FILE}.${sp}
425 @${ECHO} "of the ${TWO_PART_ID} port." >> ${_DESC_FILE}.${sp}
427 @${ECHO} "This is developer subpackage of the ${TWO_PART_ID} port." > ${_DESC_FILE}.${sp}
428 @${ECHO} "It may contain headers, pc files, static and PIC libraries and SO links." >> ${_DESC_FILE}.${sp}
430 @${ECHO} "This is man page subpackage of the ${TWO_PART_ID} port." > ${_DESC_FILE}.${sp}
432 @${ECHO} "This is language subpackage of the ${TWO_PART_ID} port." > ${_DESC_FILE}.${sp}
433 . elif ${sp:Mcomplete}
434 @${ECHO} "This is the ${TWO_PART_ID} metapackage." > ${_DESC_FILE}.${sp}
435 @${ECHO} "It pulls in all subpackages of ${TWO_PART_ID}." >> ${_DESC_FILE}.${sp}
440 .if !target(do-extract)
442 . for N in ${EXTRACT_ONLY}
443 @if ! (cd ${EXTRACT_WRKDIR_${N}} && ${EXTRACT_HEAD_${N}} ${DISTDIR}/${DIST_SUBDIR}/${DISTFILE_${N}:C/:.*//} ${EXTRACT_TAIL_${N}}); \
446 @${CHMOD} -R ug-s ${WRKDIR}
447 @${CHOWN} -R 0:0 ${WRKDIR}
450 .if !target(extract-licenses)
452 . for sp in ${SUBPACKAGES}
454 # Extract licences from source files
455 . if defined(LICENSE_${sp})
456 . for lic in ${LICENSE_${sp}}
457 . if defined(LICENSE_AWK_${lic}) && defined(LICENSE_SOURCE_${lic}) && defined(LICENSE_FILE_${lic})
458 @${ECHO_MSG} "===> Extracting ${lic} license from ${LICENSE_SOURCE_${lic}}"
459 @${AWK} '/${LICENSE_AWK_${lic}}/ {exit}; {print}' ${LICENSE_SOURCE_${lic}} > ${LICENSE_FILE_${lic}}
464 # Extract license terms from source file
465 . if defined(LICENSE_AWK_TERMS) && defined(LICENSE_SOURCE_TERMS) && defined(LICENSE_TERMS_${sp})
466 @${ECHO_MSG} "===> Extracting license terms from ${LICENSE_SOURCE_TERMS}"
467 @${AWK} '/${LICENSE_AWK_TERMS}/ {exit}; {print}' ${LICENSE_SOURCE_TERMS} > ${LICENSE_TERMS_${sp}}
470 # Install stock licenses as requested
471 . if defined(LICENSE_${sp})
472 . for lic in ${LICENSE_${sp}}
473 . if defined(LICENSE_FILE_${lic})
474 . if "${LICENSE_FILE_${lic}}" == "stock"
475 @if [ -e "${MK_STOCK_LICENSES}/${lic:S/+//}" ]; then \
476 echo "===> Positioning stock ${lic} license for ${sp} subpackage";\
477 cp ${MK_STOCK_LICENSES}/${lic:S/+//} ${WRKDIR}/LICENSE_${lic}; \
479 echo "===> Error: Requested stock ${lic} license does not exist (${sp} subpackage).";\
490 # --------------------------------------------------------------------------
492 # --------------------------------------------------------------------------
494 PATCH_WRKSRC?= ${WRKSRC}
496 PATCH_DIST_STRIP?= -p0
497 .if defined(PATCH_DEBUG)
498 PATCH_ARGS= --backup --forward -E ${PATCH_STRIP} --batch
499 PATCH_DIST_ARGS= --backup --forward -E ${PATCH_DIST_STRIP} --batch
501 PATCH_ARGS= --backup --forward --quiet -E ${PATCH_STRIP} --batch
502 PATCH_DIST_ARGS= --backup --forward --quiet -E ${PATCH_DIST_STRIP} --batch
506 @${ECHO_MSG} "===> Patching for ${TWO_PART_ID}"
508 .if !target(do-patch)
511 dp_BZCAT="${BZCAT}" \
513 dp_DISTDIR="${DISTDIR}" \
514 dp_DIST_SUBDIR='${DIST_SUBDIR}' \
515 dp_ECHO_MSG="${ECHO_MSG}" \
516 dp_GZCAT="${GZCAT}" \
517 dp_OPSYS="${OPSYS}" \
518 dp_PATCH="${PATCH}" \
519 dp_PATCHDIR="${PATCHDIR}" \
520 dp_OPSYS_PATCHDIR="${.CURDIR}/opsys" \
521 dp_PATCHFILES="${_PATCHFILES:C/:.*//}" \
522 dp_PATCH_ARGS=${PATCH_ARGS:Q} \
523 dp_PATCH_DEBUG_TMP="${PATCH_DEBUG:Dyes}" \
524 dp_PATCH_DIST_ARGS="${PATCH_DIST_ARGS}" \
525 dp_PATCH_SILENT="yes" \
526 dp_PATCH_WRKSRC=${PATCH_WRKSRC} \
527 dp_PORTID="${TWO_PART_ID}" \
528 dp_SCRIPTSDIR="${MK_SCRIPTS}" \
529 dp_UNZIP_CMD="${UNZIP_CMD}" \
530 dp_XZCAT="${XZCAT}" \
531 ${SH} ${MK_SCRIPTS}/do-patch.sh
534 # --------------------------------------------------------------------------
536 # --------------------------------------------------------------------------
539 @${ECHO_MSG} "===> Cleaning for ${TWO_PART_ID}"
541 .for T in pre-clean post-clean
548 .if !target(do-clean)
550 @if [ -d ${WRKDIR} ]; then \
551 if [ -w ${WRKDIR} ]; then \
552 ${RM} -r ${WRKDIR}; \
553 ${FIND} ${WRKDIR:H} -depth -maxdepth 1 -type d -empty -delete; \
555 ${ECHO_MSG} "===> ${WRKDIR} not writable, skipping"; \
561 .ORDER: clean-msg pre-clean do-clean post-clean
562 clean: clean-msg pre-clean do-clean post-clean
565 # --------------------------------------------------------------------------
566 # -- Phase: Configure
567 # --------------------------------------------------------------------------
569 INFO_PATH?= share/info
570 MANPREFIX?= ${PREFIX}/share
571 .if defined(CONFIGURE_OUTSOURCE)
572 CONFIGURE_CMD?= ${WRKSRC}/${CONFIGURE_SCRIPT}
573 CONFIGURE_WRKSRC?= ${WRKDIR}/.build
575 CONFIGURE_CMD?= ./${CONFIGURE_SCRIPT}
576 CONFIGURE_WRKSRC?= ${WRKSRC}
578 CONFIGURE_SCRIPT?= configure
580 CONFIGURE_TARGET?= ${ARCH_STANDARD}-pc-solaris2.10
582 CONFIGURE_TARGET?= ${ARCH_STANDARD}-raven-${OPSYS:tl}${MAJOR}
584 CONFIGURE_TARGET:= ${CONFIGURE_TARGET:S/--build=//}
585 CONFIGURE_LOG= config.log
586 .if defined(GNU_CONFIGURE)
587 CONFIGURE_FAIL_MESSAGE= "Please report the problem and attach the\
588 \"${CONFIGURE_WRKSRC}/${CONFIGURE_LOG}\" and this log."
590 CONFIGURE_FAIL_MESSAGE= "Please report the problem and provide all pertinent logs"
593 .if defined(GNU_CONFIGURE)
595 GNU_CONFIGURE_PREFIX?= ${PREFIX}
596 GNU_CONFIGURE_MANPREFIX?= ${MANPREFIX}
597 CONFIG_SITE= ${MK_TEMPLATES}/config.site
598 CONFIGURE_ARGS+= --prefix=${GNU_CONFIGURE_PREFIX} \
599 --disable-dependency-tracking \
600 $${_LATE_CONFIGURE_ARGS}
601 CONFIGURE_ENV+= CONFIG_SITE=${CONFIG_SITE}
602 SET_LATE_CONFIGURE_ARGS= \
603 _LATE_CONFIGURE_ARGS="" ; \
604 if [ -z "${CONFIGURE_ARGS:M--localstatedir=*:Q}" ] && \
605 ${CONFIGURE_CMD} --help 2>&1 | ${GREP} -- --localstatedir > /dev/null; then \
606 _LATE_CONFIGURE_ARGS="$${_LATE_CONFIGURE_ARGS} --localstatedir=/var" ; \
608 if [ ! -z "`${CONFIGURE_CMD} --help 2>&1 | ${GREP} -- '--mandir'`" ]; then \
609 _LATE_CONFIGURE_ARGS="$${_LATE_CONFIGURE_ARGS} --mandir=${GNU_CONFIGURE_MANPREFIX}/man" ; \
611 if [ ! -z "`${CONFIGURE_CMD} --help 2>&1 | ${GREP} -- '--disable-silent-rules'`" ]; then \
612 _LATE_CONFIGURE_ARGS="$${_LATE_CONFIGURE_ARGS} --disable-silent-rules" ; \
614 if [ ! -z "`${CONFIGURE_CMD} --help 2>&1 | ${GREP} -- '--infodir'`" ]; then \
615 _LATE_CONFIGURE_ARGS="$${_LATE_CONFIGURE_ARGS} --infodir=${GNU_CONFIGURE_PREFIX}/${INFO_PATH}/${INFO_SUBDIR}" ; \
617 if [ -z "`${CONFIGURE_CMD} --version 2>&1 | ${EGREP} -i '(autoconf.*2\.13|Unrecognized option)'`" ]; then \
618 _LATE_CONFIGURE_ARGS="$${_LATE_CONFIGURE_ARGS} --build=${CONFIGURE_TARGET}" ; \
620 _LATE_CONFIGURE_ARGS="$${_LATE_CONFIGURE_ARGS} ${CONFIGURE_TARGET}" ; \
625 @${ECHO_MSG} "===> Configuring for ${TWO_PART_ID}"
627 .if !target(do-configure)
629 @if [ -f ${SCRIPTDIR}/configure ]; then \
630 ${ECHO_MSG} "==> cd ${.CURDIR} && ${SETENV} ${SCRIPTS_ENV} ${SH} ${SCRIPTDIR}/configure";\
631 cd ${.CURDIR} && ${SETENV} ${SCRIPTS_ENV} ${SH} \
632 ${SCRIPTDIR}/configure; \
634 . if defined(GNU_CONFIGURE)
635 # NetBSD uses the old sunv4 soname format. Force NetBSD to generate library
636 # names that match linux and the other BSDs.
637 @if [ "${OPSYS}" = "NetBSD" ]; then \
638 ${FIND} ${WRKSRC} -name configure | ${XARGS} \
639 ${SED} -i.netbsd -e 's|version_type=sunos|version_type=freebsd-elf|'; \
641 @CONFIG_GUESS_DIRS=$$(${FIND} ${WRKDIR} -name config.guess -o -name config.sub \
642 | ${XARGS} -n 1 ${DIRNAME} 2>/dev/null); \
643 for _D in $${CONFIG_GUESS_DIRS}; do \
644 ${RM} $${_D}/config.guess; \
645 ${CP} ${MK_TEMPLATES}/config.guess $${_D}/config.guess; \
646 ${CHMOD} a+rx $${_D}/config.guess; \
647 ${RM} $${_D}/config.sub; \
648 ${CP} ${MK_TEMPLATES}/config.sub $${_D}/config.sub; \
649 ${CHMOD} a+rx $${_D}/config.sub; \
652 . if defined(HAS_CONFIGURE)
653 @${MKDIR} ${CONFIGURE_WRKSRC}
654 @LCA=$$(${SET_LATE_CONFIGURE_ARGS}) && echo "==> cd ${CONFIGURE_WRKSRC} && $$LCA"
655 @${ECHO_MSG} " ${SETENV} CC=\"${CC}\" CPP=\"${CPP}\" CXX=\"${CXX}\""
656 @${ECHO_MSG} " CFLAGS=\"${CFLAGS}\""
657 @${ECHO_MSG} " CPPFLAGS=\"${CPPFLAGS}\""
658 @${ECHO_MSG} " CXXFLAGS=\"${CXXFLAGS}\""
659 @${ECHO_MSG} " LDFLAGS=\"${LDFLAGS}\""
660 @${ECHO_MSG} " LIBS=\"${LIBS}\""
661 @${ECHO_MSG} " INSTALL=\"/usr/bin/install -c\""
662 @${ECHO_MSG} " INSTALL_DATA=\"${INSTALL_DATA}\""
663 @${ECHO_MSG} " INSTALL_LIB=\"${INSTALL_LIB}\""
664 @${ECHO_MSG} " INSTALL_PROGRAM=\"${INSTALL_PROGRAM}\""
665 @${ECHO_MSG} " INSTALL_SCRIPT=\"${INSTALL_SCRIPT}\""
666 @${ECHO_MSG} " ${CONFIGURE_ENV}"
667 @${ECHO_MSG} " ${CONFIGURE_CMD} ${CONFIGURE_ARGS}"
668 @(cd ${CONFIGURE_WRKSRC} && \
669 ${SET_LATE_CONFIGURE_ARGS} \
670 if ! ${SETENV} CC="${CC}" CPP="${CPP}" CXX="${CXX}" \
671 CFLAGS="${CFLAGS}" CPPFLAGS="${CPPFLAGS}" CXXFLAGS="${CXXFLAGS}" \
672 LDFLAGS="${LDFLAGS}" LIBS="${LIBS}" \
673 INSTALL="/usr/bin/install -c" \
674 INSTALL_DATA="${INSTALL_DATA}" \
675 INSTALL_LIB="${INSTALL_LIB}" \
676 INSTALL_PROGRAM="${INSTALL_PROGRAM}" \
677 INSTALL_SCRIPT="${INSTALL_SCRIPT}" \
678 ${CONFIGURE_ENV} ${CONFIGURE_CMD} ${CONFIGURE_ARGS}; then \
679 ${ECHO_MSG} "===> Script \"${CONFIGURE_SCRIPT}\" failed unexpectedly."; \
680 (${ECHO_CMD} ${CONFIGURE_FAIL_MESSAGE}); \
686 # --------------------------------------------------------------------------
688 # --------------------------------------------------------------------------
690 MAKE_CMD?= ${BSDMAKE}
693 MAKE_ENV+= PREFIX=${PREFIX} \
694 LOCALBASE=${LOCALBASE} \
696 CC="${CC}" CFLAGS="${CFLAGS}" \
697 CPP="${CPP}" CPPFLAGS="${CPPFLAGS}" \
698 LDFLAGS="${LDFLAGS}" LIBS="${LIBS}" \
699 CXX="${CXX}" CXXFLAGS="${CXXFLAGS}" \
700 STD_DOCDIR="${STD_DOCDIR}" \
701 STD_EXAMPLESDIR="${STD_EXAMPLESDIR}" \
702 MANPREFIX="${MANPREFIX}"
703 DESTDIRNAME?= DESTDIR
704 STAGEDIR= ${WRKDIR}/stage
705 .if defined(CONFIGURE_OUTSOURCE)
706 BUILD_WRKSRC?= ${CONFIGURE_WRKSRC}
708 BUILD_WRKSRC?= ${WRKSRC}
711 .if defined(DESTDIR_VIA_ENV)
712 MAKE_ENV+= ${DESTDIRNAME}=${STAGEDIR}
714 MAKE_ARGS+= ${DESTDIRNAME}=${STAGEDIR}
718 . if defined(USE_${lang}STD)
719 ${lang}FLAGS:= ${${lang}FLAGS:N-std=*} -std=${USE_${lang}STD}
722 . if defined(${lang}FLAGS_${ARCH})
723 ${lang}FLAGS+= ${${lang}FLAGS_${ARCH}}
727 # Multiple make jobs support
728 .if defined(DISABLE_MAKE_JOBS) || defined(SINGLE_JOB)
732 . if defined(MAKE_JOBS_NUMBER)
733 _MAKE_JOBS_NUMBER:= ${MAKE_JOBS_NUMBER}
735 . if !defined(NUMBER_CPUS)
736 .error 'NUMBER_CPUS' must be defined in toplevel make.conf
738 _MAKE_JOBS_NUMBER= ${NUMBER_CPUS}
740 . if defined(MAKE_JOBS_NUMBER_LIMIT)
741 MAKE_JOBS_NUMBER= ${MAKE_JOBS_NUMBER_LIMIT}
743 MAKE_JOBS_NUMBER= ${_MAKE_JOBS_NUMBER}
745 _MAKE_JOBS?= -j${MAKE_JOBS_NUMBER}
748 DO_MAKE_BUILD?= ${SETENV} ${MAKE_ENV} ${MAKE_CMD} ${MAKE_FLAGS} \
749 ${MAKEFILE} ${_MAKE_JOBS} ${MAKE_ARGS:C,^${DESTDIRNAME}=.*,,g}
752 @${ECHO_MSG} "===> Building for ${TWO_PART_ID}"
754 .if !target(do-build)
756 @${ECHO_MSG} "==> Set environment:"
757 .for pair in ${MAKE_ENV}
758 @${ECHO_MSG} " ${pair}"
760 @${ECHO_MSG} "==> cd ${BUILD_WRKSRC};"
761 @${ECHO_MSG} " ${MAKE_CMD} ${MAKE_FLAGS} ${MAKEFILE}"
762 @${ECHO_MSG} " ${_MAKE_JOBS} ${MAKE_ARGS:C,^${DESTDIRNAME}=.*,,g} ${BUILD_TARGET}"
763 @(cd ${BUILD_WRKSRC}; if ! ${DO_MAKE_BUILD} ${BUILD_TARGET}; then \
764 ${ECHO_MSG} "===> Compilation failed unexpectedly."; \
769 # --------------------------------------------------------------------------
771 # --------------------------------------------------------------------------
773 MANDIRS+= ${MANPREFIX}/man
774 .for sect in 1 2 3 4 5 6 7 8 9 L N
775 MAN${sect}PREFIX?= ${MANPREFIX}
778 .if defined(CONFIGURE_OUTSOURCE)
779 INSTALL_WRKSRC?= ${CONFIGURE_WRKSRC}
781 INSTALL_WRKSRC?= ${WRKSRC}
785 @${ECHO_MSG} "===> Staging for ${TWO_PART_ID}"
787 .if !target(stage-dir)
790 ${STAGEDIR}${PREFIX}/bin \
791 ${STAGEDIR}${PREFIX}/etc/rc.d \
792 ${STAGEDIR}${PREFIX}/include \
793 ${STAGEDIR}${PREFIX}/lib/pkgconfig \
794 ${STAGEDIR}${PREFIX}/libdata \
795 ${STAGEDIR}${PREFIX}/libexec \
796 ${STAGEDIR}${PREFIX}/sbin \
797 ${STAGEDIR}${PREFIX}/share/doc \
798 ${STAGEDIR}${PREFIX}/share/examples \
799 ${STAGEDIR}${PREFIX}/share/info \
800 ${STAGEDIR}${PREFIX}/share/locale \
801 ${STAGEDIR}${PREFIX}/share/man/man1 \
802 ${STAGEDIR}${PREFIX}/share/man/man2 \
803 ${STAGEDIR}${PREFIX}/share/man/man3 \
804 ${STAGEDIR}${PREFIX}/share/man/man4 \
805 ${STAGEDIR}${PREFIX}/share/man/man5 \
806 ${STAGEDIR}${PREFIX}/share/man/man6 \
807 ${STAGEDIR}${PREFIX}/share/man/man7 \
808 ${STAGEDIR}${PREFIX}/share/man/man8 \
809 ${STAGEDIR}${PREFIX}/share/man/man9 \
810 ${STAGEDIR}${PREFIX}/share/man/mann \
811 ${STAGEDIR}${PREFIX}/share/man/manl \
812 ${STAGEDIR}${PREFIX}/share/nls \
813 ${STAGEDIR}${PREFIX}/www \
817 .if !target(do-install) && !defined(NO_INSTALL)
819 @(cd ${INSTALL_WRKSRC} && ${SETENV} ${MAKE_ENV} \
820 ${MAKE_CMD} ${MAKE_FLAGS} ${MAKEFILE} ${MAKE_ARGS} \
824 # Compress all manpage not already compressed and also not hardlinks
825 # Find all manpages which are not compressed and are hadlinks, and only
826 # get the list of inodes concerned, for each of them compress the first
827 # one found and recreate the hardlinks for the others.
828 # Fixes all dead symlinks left by the previous round.
830 .if !target(compress-man)
832 .if "${OPSYS}" == "Linux" || "${OPSYS}" == "SunOS"
833 _GET_INODE= ${STAT} -c '%i' {}
835 _GET_INODE= ${STAT} -f '%i' {}
839 @${ECHO_MSG} "====> Start compressing man pages"
841 for dir in ${MANDIRS:S/^/${STAGEDIR}/} ; do \
842 [ -d $$dir ] && mdirs="$$mdirs $$dir" ;\
844 for dir in $$mdirs; do \
845 ${FIND} $$dir -type f \! -name "*.gz" -links 1 -exec ${GZIP_CMD} {} \; ; \
846 ${FIND} $$dir -type f \! -name "*.gz" \! -links 1 -exec ${_GET_INODE} \; | \
847 ${SORT} -u | while read inode ; do \
849 for f in $$(${FIND} $$dir -type f -inum $${inode} -print); do \
850 if [ -z $$ref ]; then \
852 ${GZIP_CMD} $${f} ; \
856 (cd $${f%/*}; ${LN} -f $${ref##*/} $${f##*/}.gz) ; \
859 ${FIND} $$dir -type l \! -name "*.gz" | while read link ; do \
860 ${LN} -sf $$(readlink $$link).gz $$link.gz ;\
864 @${ECHO_MSG} "====> Man page compression complete"
867 .if !target(install-rc-script)
869 . for sp in ${SUBPACKAGES}
870 . if defined(RC_SUBR_${sp}) && !empty(RC_SUBR_${sp})
874 . if defined(RC_SUBR_USED)
876 . for sp in ${SUBPACKAGES}
877 . if defined(RC_SUBR_${sp}) && !empty(RC_SUBR_${sp})
878 @${ECHO_MSG} "====> Staging rc.d startup scripts (${sp})"
879 @for i in ${RC_SUBR_${sp}}; do \
881 [ "${PREFIX}" = "/usr" ] && _prefix="" ; \
882 ${MKDIR} ${STAGEDIR}$${_prefix}/etc/rc.d; \
883 ${INSTALL_SCRIPT} ${WRKDIR}/$${i} ${STAGEDIR}$${_prefix}/etc/rc.d/$${i%.sh}; \
884 ${ECHO_CMD} "$${_prefix}/etc/rc.d/$${i%.sh}" \
885 >> ${WRKDIR}/.manifest.${sp}.mktmp; \
892 _LICENSE_DIR= share/licenses/${NAMEBASE}
894 .if !target(install-license)
896 . if defined(LICENSE_SET)
897 . for sp in ${SUBPACKAGES}
898 . if defined(LICENSE_${sp})
899 @${MKDIR} ${STAGEDIR}${PREFIX}/${_LICENSE_DIR}
900 @${ECHO} "This package is ${LICENSE_SCHEME}-licensed:" > ${STAGEDIR}${PREFIX}/${_LICENSE_DIR}/summary.${sp}.${VARIANT}
901 . if defined(LICENSE_TERMS_${sp})
902 @${ECHO_MSG} "====> Install license terms (${sp})"
903 @${ECHO} " * Described by Terms.${sp}.${VARIANT}" >> ${STAGEDIR}${PREFIX}/${_LICENSE_DIR}/summary.${sp}.${VARIANT}
904 @${INSTALL_DATA} ${LICENSE_TERMS_${sp}} ${STAGEDIR}${PREFIX}/${_LICENSE_DIR}/Terms.${sp}.${VARIANT}
906 . for lic in ${LICENSE_${sp}}
907 . if defined(LICENSE_FILE_${lic})
908 . if "${LICENSE_FILE_${lic}}" == "stock"
909 @${ECHO_MSG} "====> Install stock ${lic} license (${sp})"
910 @if [ -e "${WRKDIR}/LICENSE_${lic}" ]; then \
911 ${INSTALL_DATA} ${WRKDIR}/LICENSE_${lic} ${STAGEDIR}${PREFIX}/${_LICENSE_DIR}/${lic}.${VARIANT};\
912 echo " * ${lic} (${LICENSE_NAME_${lic}})" >> ${STAGEDIR}${PREFIX}/${_LICENSE_DIR}/summary.${sp}.${VARIANT};\
914 echo "====> Failed to locate stock ${lic} license";\
915 echo "Failed to locate stock ${lic} license." >> ${WRKDIR}/.license_fail;\
918 @if [ -e "${LICENSE_FILE_${lic}}" ]; then \
919 echo "====> Install ${lic} license (${sp})"; \
920 ${INSTALL_DATA} ${LICENSE_FILE_${lic}} ${STAGEDIR}${PREFIX}/${_LICENSE_DIR}/${lic}.${VARIANT};\
921 echo " * ${lic} (${LICENSE_NAME_${lic}})" >> ${STAGEDIR}${PREFIX}/${_LICENSE_DIR}/summary.${sp}.${VARIANT};\
923 echo "====> Failed to locate ${lic} license (${LICENSE_FILE_${lic}})";\
924 echo "Failed to locate ${lic} license (${LICENSE_FILE_${lic}})." >> ${WRKDIR}/.license_fail;\
930 . if defined(LICENSE_TERMS_${sp})
931 @${ECHO_MSG} "====> Install license terms (${sp})"
932 @${MKDIR} ${STAGEDIR}${PREFIX}/${_LICENSE_DIR}
933 @${ECHO} "This package's licensing is described by Terms.${sp}.${VARIANT}" > ${STAGEDIR}${PREFIX}/${_LICENSE_DIR}/summary.${sp}.${VARIANT}
934 @${ECHO} "There are no other applicable licenses." >> ${STAGEDIR}${PREFIX}/${_LICENSE_DIR}/summary.${sp}.${VARIANT}
935 @${INSTALL_DATA} ${LICENSE_TERMS_${sp}} ${STAGEDIR}${PREFIX}/${_LICENSE_DIR}/Terms.${sp}.${VARIANT}
942 .if !target(stage-qa)
943 . if defined(DEVELOPER)
946 . for sp in ${SUBPACKAGES}
947 _PLIST_LIST+= ${WRKDIR}/.manifest.${sp}.mktmp
950 QA_ENV+= STAGEDIR=${STAGEDIR} \
952 LOCALBASE=${LOCALBASE} \
955 NAMEBASE="${NAMEBASE}" \
956 VARIANT="${VARIANT}" \
957 TMPPLIST="${_PLIST_LIST}" \
958 BUNDLE_LIBS="${BUNDLE_LIBS}"
960 . if !empty(USES:Mssl)
963 . if !empty(USES:Mdesktop-utils\:*)
964 QA_ENV+= USESDESKTOPUTILS=yes
966 . if !empty(USES:Mlibtool*)
967 QA_ENV+= USESLIBTOOL=yes
969 . if !empty(USES:Mmime-info\:*)
970 QA_ENV+= USESMIMEINFO=yes
972 . if !empty(USES:Mterminfo\:*)
973 QA_ENV+= USESTERMINFO=yes
977 @${ECHO_MSG} "====> Running Q/A tests (stage-qa)"
978 @${SETENV} ${QA_ENV} ${SH} ${MK_SCRIPTS}/qa.sh
983 # --------------------------------------------------------------------------
984 # -- Manifest handling
985 # --------------------------------------------------------------------------
987 TMP_MANIFESTS= ${SUBPACKAGES:C|(.*)|${WRKDIR}/.manifest.\1.mktmp|}
988 TMP_MANIFESTS_SORT= ${TMP_MANIFESTS:.mktmp=.mktmp.sorted}
989 AWK_DYLIB_SUPPORT= '/.*\.so[0123456789.]?*$$/ { \
990 if (substr ($$0, length($$0) - 2) == ".so") { \
991 print substr($$0, 1, length($$0) - 3) ".dylib"; \
993 match ($$0, /\.so[0123456789.]*$$/); \
994 print substr($$0, 1, RSTART) substr($$0, RSTART + 4) ".dylib"; \
1000 .for plist in ${TMP_MANIFESTS}
1001 ${plist}.sorted: ${plist}
1002 @${SORT} -u ${.ALLSRC} > ${.TARGET}
1005 generate-plist: ${TMP_MANIFESTS}
1008 @${ECHO_MSG} "===> Generating temporary packing list (${.TARGET:R:E})"
1009 @${MKDIR} ${.TARGET:H}
1010 @${TOUCH} ${.TARGET}
1011 @alpha=${.CURDIR}/manifests/plist.${.TARGET:R:E}.${VARIANT} ;\
1012 bravo=${.CURDIR}/manifests/plist.${.TARGET:R:E} ;\
1013 if [ -f $$alpha ]; then manifest=$$alpha ;\
1014 elif [ -f $$bravo ]; then manifest=$$bravo ;\
1016 if [ -n "$$manifest" ]; then \
1017 if [ "${OPSYS}" = "Darwin" ]; then \
1018 ${SED} ${PLIST_SUB:NSHARED_OBJECT=*:S/$/!g/:S/^/ -e s!%%/:S/=/%%!/} \
1019 $$manifest | ${AWK} ${AWK_DYLIB_SUPPORT} | \
1020 ${SED} ${PLIST_SUB:MSHARED_OBJECT=*:S/$/!g/:S/^/ -e s!%%/:S/=/%%!/} \
1023 ${SED} ${PLIST_SUB:S/$/!g/:S/^/ -e s!%%/:S/=/%%!/} \
1024 $$manifest >> ${.TARGET} ;\
1029 # -----------------------------------------------
1030 # Incorporated in ravenadm
1031 # -----------------------------------------------
1032 # 1) .if defined(INFO)
1033 # BUILD_DEPENDS+= indexinfo:single:standard
1035 # 2) validation of a single unique INFO_SUBDIR
1036 # 3) definition of INFO_SUBDIR (default = ".")
1037 # -----------------------------------------------
1040 .if !target(add-plist-info)
1042 . for sp in ${SUBPACKAGES}
1043 . for i in ${INFO_${sp}}
1044 @${LS} ${STAGEDIR}${PREFIX}/${INFO_PATH}/$i.info* | \
1045 ${SED} -e s:${STAGEDIR}:@info\ :g >> ${WRKDIR}/.manifest.${sp}.mktmp
1050 # If we're installing into a non-standard PREFIX, we need to remove that
1051 # directory at deinstall-time. At this time, PREFIX should be prohibited
1052 # from being "/usr" or "/" but leave the check in anyway.
1054 .if !target(add-plist-post)
1055 . if (${PREFIX} != ${LOCALBASE} && ${PREFIX} != "/usr" && ${PREFIX} != "/")
1057 . for sp in ${SUBPACKAGES}
1058 @${ECHO_CMD} "@dir ${PREFIX}" >> ${WRKDIR}/.manifest.${sp}.mktmp
1063 # "docs" is a standard subpackage name.
1064 # All port docs must be located at ${PREFIX}/share/doc/${NAMEBASE}
1065 # If manifests/docs.${VARIANT} does not exist (which is handled by
1066 # generate-plist target already), autogeneration is assumed.
1068 .if !target(add-plist-docs)
1069 . if ${SUBPACKAGES:Mdocs}
1070 . if !exists(${.CURDIR}/manifests/plist.docs) && !exists(${.CURDIR}/manifests/plist.docs.${VARIANT})
1072 @(cd ${STAGEDIR}${PREFIX} && ${FIND} share/doc \
1073 \( -type f -o -type l \) 2>/dev/null | ${SORT}) >> ${WRKDIR}/.manifest.docs.mktmp
1078 # "examples" is a standard subpackage name.
1079 # All port examples must be located at ${PREFIX}/share/examples/${NAMEBASE}
1080 # If manifests/examples.${VARIANT} does not exist (which is handled by
1081 # generate-plist target already), autogeneration is assumed.
1083 .if !target(add-plist-examples)
1084 . if ${SUBPACKAGES:Mexamples}
1085 . if !exists(${.CURDIR}/manifests/plist.examples) && !exists(${.CURDIR}/manifests/plist.examples.${VARIANT})
1087 @(cd ${STAGEDIR}${PREFIX} && ${FIND} share/examples \
1088 \( -type f -o -type l \) 2>/dev/null | ${SORT}) >> ${WRKDIR}/.manifest.examples.mktmp
1093 # "nls" is a standard subpackage name.
1094 # All port NLS files must be located at ${PREFIX}/share/locale
1095 # If manifests/nls.${VARIANT} does not exist (which is handled by
1096 # generate-plist target already), autogeneration is assumed.
1098 .if !target(add-plist-nls)
1099 . if ${SUBPACKAGES:Mnls}
1100 . if !exists(${.CURDIR}/manifests/plist.nls) && !exists(${.CURDIR}/manifests/plist.nls.${VARIANT})
1102 @(cd ${STAGEDIR}${PREFIX} && ${FIND} share/locale \
1103 \( -type f -o -type l \) 2>/dev/null | ${SORT}) >> ${WRKDIR}/.manifest.nls.mktmp
1108 # add licenses to package manifest
1109 .if !target(add-plist-licenses)
1111 . if defined(LICENSE_SET)
1112 . for sp in ${SUBPACKAGES}
1113 . if defined(LICENSE_${sp}) || defined(LICENSE_TERMS_${sp})
1114 @echo "${_LICENSE_DIR}/summary.${sp}.${VARIANT}" >> ${WRKDIR}/.manifest.${sp}.mktmp
1116 . if defined(LICENSE_${sp})
1117 . for lic in ${LICENSE_${sp}}
1118 . if exists(${LICENSE_FILE_${lic}}) || "${LICENSE_FILE_${lic}}" == "stock"
1119 @echo "${_LICENSE_DIR}/${lic}.${VARIANT}" >> ${WRKDIR}/.manifest.${sp}.mktmp
1123 . if defined(LICENSE_TERMS_${sp})
1124 @echo "${_LICENSE_DIR}/Terms.${sp}.${VARIANT}" >> ${WRKDIR}/.manifest.${sp}.mktmp
1130 # --------------------------------------------------------------------------
1131 # -- Phase: Test (optional)
1132 # --------------------------------------------------------------------------
1134 .if defined(CONFIGURE_OUTSOURCE)
1135 TEST_WRKSRC?= ${CONFIGURE_WRKSRC}
1137 TEST_WRKSRC?= ${WRKSRC}
1141 @${ECHO_MSG} "===> Testing for ${TWO_PART_ID}"
1143 .if !target(do-test)
1144 . if defined(TEST_TARGET)
1145 DO_MAKE_TEST?= ${SETENV} ${TEST_ENV} ${MAKE_CMD} ${MAKE_FLAGS} \
1146 ${MAKEFILE} ${TEST_ARGS:C,^${DESTDIRNAME}=.*,,g}
1148 @(cd ${TEST_WRKSRC}; \
1149 if ! ${DO_MAKE_TEST} ${TEST_TARGET}; then \
1150 if [ -n "${TEST_FAIL_MESSAGE}" ] ; then \
1151 ${ECHO_MSG} "===> Tests failed unexpectedly."; \
1152 (${ECHO_CMD} "${TEST_FAIL_MESSAGE}"); \
1162 # --------------------------------------------------------------------------
1164 # --------------------------------------------------------------------------
1166 # Macro for doing in-place file editing using regexps
1167 REINPLACE_ARGS?= -i.bak
1168 REINPLACE_CMD?= ${SED} ${REINPLACE_ARGS}
1170 # ensure PLIST_SUB has at least one value
1171 PLIST_SUB+= OPSYS=${OPSYS}
1173 # ONLY-[OPSYS] is "@comment " for inactive platform and blank for active
1174 PLIST_SUB+= ONLY-${OPSYS:tu}=""
1176 .if "${OPSYS}" == "Linux" # only x86_64 supported right now
1177 MULTILIB= lib/x86_64-linux-gnu
1179 .elif "${OPSYS}" == "SunOS"
1186 PLIST_SUB+= ASLIB="${ASLIB}"
1188 .if "${OPSYS}" == "Darwin"
1190 PLIST_SUB+= EXCLUDE-DARWIN="@comment "
1193 PLIST_SUB+= EXCLUDE-DARWIN=""
1195 PLIST_SUB+= LIBEXT="${LIBEXT}"
1196 PLIST_SUB+= SHARED_OBJECT="so"
1198 # Define ONLY-<OPSYS:tu> for all supported systems
1199 .for supp in dragonfly freebsd netbsd linux sunos darwin midnightbsd
1200 . if empty(PLIST_SUB:MONLY-${supp:tu}=*)
1201 PLIST_SUB+= ONLY-${supp:tu}="@comment "
1205 # support for optional SOVERSION keyword
1206 # If present, add to PLIST substitutions along with SOMAJOR
1208 .if defined(SOVERSION)
1209 PLIST_SUB+= SOVERSION=${SOVERSION} SOMAJOR=${SOVERSION:R:R}
1212 # Macro for copying entire directory tree with correct permissions
1213 # Arguments are: (1) source directory (usually ".")
1214 # (2) target directory
1215 # (3) optional, find command modifiers
1217 COPYTREE_BIN= ${SH} ${MK_SCRIPTS}/copytree.sh ${BINMODE}
1218 COPYTREE_SHARE= ${SH} ${MK_SCRIPTS}/copytree.sh ${_SHAREMODE}
1220 MAKE_ENV+= ADA_PROJECT_PATH="${LOCALBASE}/share/gpr"\
1221 F77="gfortran" FC="gfortran"
1222 CONFIGURE_ENV+= ADA_PROJECT_PATH="${LOCALBASE}/share/gpr"\
1223 F77="gfortran" FC="gfortran"
1225 # --------------------------------------------------------------------------
1227 # --------------------------------------------------------------------------
1229 # How to do nothing. Override to make it do nothing differently
1232 # --------------------------------------------------------------------------
1233 # -- Prepend PATH (used for bootstrapping normally)
1234 # --------------------------------------------------------------------------
1236 .if defined(PREPEND_PATH)
1237 PATH:= ${PREPEND_PATH}:${PATH}
1240 # --------------------------------------------------------------------------
1241 # -- CCACHE handling
1242 # --------------------------------------------------------------------------
1244 .if defined(BUILD_WITH_CCACHE)
1245 CCACHE_DIR?= /root/.ccache
1247 . if !defined(NO_CCACHE) && !defined(NO_BUILD)
1249 _CCACHE_PATH= /usr/libexec
1251 # Prepend the ccache dir into the PATH and setup ccache env
1252 PATH:= ${_CCACHE_PATH}:${PATH}
1254 MAKE_ENV:= ${MAKE_ENV:NPATH=*}
1255 CONFIGURE_ENV:= ${CONFIGURE_ENV:NPATH=*}
1257 MAKE_ENV+= CCACHE_DIR="${CCACHE_DIR}"
1258 CONFIGURE_ENV+= CCACHE_DIR="${CCACHE_DIR}"
1262 # Always override PATH in configure and build environments, not just
1263 # when ccache is used. Otherwise PREPEND_PATH won't work correctly
1264 # when ccache is disabled.
1265 MAKE_ENV+= PATH=${PATH}
1266 CONFIGURE_ENV+= PATH=${PATH}
1269 # --------------------------------------------------------------------------
1270 # -- USERS/GROUPS handling
1271 # --------------------------------------------------------------------------
1273 .if "${OPSYS}" == "SunOS"
1274 # Solaris reserves 60001-60003 for nobody, noaccess, and aiuser
1275 # So shift all the UIDs and GIDs to start at 50001 instead on SunOS
1282 UID_FILES?= ${MK_TEMPLATES}/UID.ravenports
1283 GID_FILES?= ${MK_TEMPLATES}/GID.ravenports
1284 _SYSTEM_UID= ${MK_TEMPLATES}/UID.${OPSYS:tl}
1285 _SYSTEM_GID= ${MK_TEMPLATES}/GID.${OPSYS:tl}
1287 .if exists(${WRKDIRPREFIX}/.UID.custom)
1288 UID_FILES+= ${WRKDIRPREFIX}/.UID.custom
1290 .if exists(${WRKDIRPREFIX}/.GID.custom)
1291 GID_FILES+= ${WRKDIRPREFIX}/.GID.custom
1294 # Owner and group of the WWW user (overridable)
1298 .if !target(create-users-groups)
1299 . if defined(GROUPS) || defined(USERS)
1300 _UG_INSTALL= ${WRKDIR}/users-groups-install.sh
1301 _UG_DEINSTALL= ${WRKDIR}/users-groups-deinstall.sh
1302 PW= /usr/sbin/pw # FreeBSD/DragonFly
1304 create-users-groups:
1306 dp_ECHO_MSG="${ECHO_MSG}" \
1307 dp_UID_FILES="${UID_FILES}" \
1308 dp_GID_FILES="${GID_FILES}" \
1309 dp_UID_OFFSET="${UID_OFFSET}" \
1310 dp_GID_OFFSET="${GID_OFFSET}" \
1311 dp_SYSTEM_UID="${_SYSTEM_UID}" \
1312 dp_SYSTEM_GID="${_SYSTEM_GID}" \
1313 dp_INSTALL="${INSTALL}" \
1314 dp_OPSYS="${OPSYS}" \
1315 dp_OSVERSION="${OSVERSION}" \
1316 dp_PREFIX="${PREFIX}" \
1318 dp_SCRIPTSDIR='${MK_SCRIPTS}' \
1319 dp_UG_DEINSTALL="${_UG_DEINSTALL}" \
1320 dp_UG_INSTALL="${_UG_INSTALL}" \
1321 ${SH} ${MK_SCRIPTS}/do-users-groups.sh "${USERS}" "${GROUPS}"
1325 # --------------------------------------------------------------------------
1326 # -- Post-USES handling
1327 # --------------------------------------------------------------------------
1329 .if !target(apply-slist)
1331 SUB_LIST+= LOCALBASE=${LOCALBASE:Q} \
1332 PREFIX=${PREFIX:Q} \
1334 _SUB_LIST_TEMP= ${SUB_LIST:S/$/!g/:S/^/ -e s!%%/:S/=/%%!/}
1336 . for sp in ${SUBPACKAGES}
1337 . if defined(RC_SUBR_${sp}) && !empty(RC_SUBR_${sp})
1338 SUB_FILES+= ${RC_SUBR_${sp}}
1342 # transform files like pkg-message-primary-freebsd.in to
1343 # pkg-message-primary-opsys.in
1345 SUB_FILES:= ${SUB_FILES:S/-${OPSYS:tl}/-opsys/}
1348 . for file in ${SUB_FILES}
1349 . if exists(${FILESDIR}/${file}.in)
1350 @${SED} ${_SUB_LIST_TEMP} -e '/^@comment /d' ${FILESDIR}/${file}.in > ${WRKDIR}/${file}
1352 @${ECHO_MSG} "** Checked ${FILESDIR}:"
1353 @${ECHO_MSG} "** Missing ${file}.in for ${TWO_PART_ID}."
1359 .include "/xports/Mk/raven.sequence.mk"