xref: /freebsd/share/mk/bsd.nls.mk (revision d0b2dbfa0ecf2bbc9709efc5e20baf8e4b44bbbf)
164d48756SAlexey Zelkin#
264d48756SAlexey Zelkin# This include file <bsd.nls.mk> handles building and installing Native
364d48756SAlexey Zelkin# Language Support (NLS) catalogs
464d48756SAlexey Zelkin#
564d48756SAlexey Zelkin# +++ variables +++
664d48756SAlexey Zelkin#
764d48756SAlexey Zelkin# GENCAT	A program for converting .msg files into compiled NLS
8f07a48ddSAlexey Zelkin#		.cat files. [gencat]
964d48756SAlexey Zelkin#
1064d48756SAlexey Zelkin# NLS		Source or intermediate .msg files. [set in Makefile]
1164d48756SAlexey Zelkin#
1264d48756SAlexey Zelkin# NLSDIR	Base path for National Language Support files
1364d48756SAlexey Zelkin#		installation. [${SHAREDIR}/nls]
1464d48756SAlexey Zelkin#
1564d48756SAlexey Zelkin# NLSGRP	National Language Support files group. [${SHAREGRP}]
1664d48756SAlexey Zelkin#
1764d48756SAlexey Zelkin# NLSMODE	National Language Support files mode. [${NOBINMODE}]
1864d48756SAlexey Zelkin#
1964d48756SAlexey Zelkin# NLSOWN	National Language Support files owner. [${SHAREOWN}]
2064d48756SAlexey Zelkin
218479adc1SRuslan Ermilov.if !target(__<bsd.init.mk>__)
228479adc1SRuslan Ermilov.error bsd.nls.mk cannot be included directly.
238479adc1SRuslan Ermilov.endif
242bdaf7e8SRuslan Ermilov
258c4346e3SAlexey ZelkinGENCAT?=	gencat
2664d48756SAlexey Zelkin
2764d48756SAlexey Zelkin.SUFFIXES: .cat .msg
2864d48756SAlexey Zelkin
2964d48756SAlexey Zelkin.msg.cat:
3064d48756SAlexey Zelkin	${GENCAT} ${.TARGET} ${.IMPSRC}
3164d48756SAlexey Zelkin
32e1fe3dbaSRuslan Ermilov.if defined(NLS) && !empty(NLS) && ${MK_NLS} != "no"
338479adc1SRuslan Ermilov
3464d48756SAlexey Zelkin#
3564d48756SAlexey Zelkin# .msg file pre-build rules
3664d48756SAlexey Zelkin#
378479adc1SRuslan ErmilovNLSSRCDIR?=	${.CURDIR}
3864d48756SAlexey Zelkin.for file in ${NLS}
398479adc1SRuslan Ermilov.if defined(NLSSRCFILES)
408479adc1SRuslan ErmilovNLSSRCFILES_${file}?= ${NLSSRCFILES}
41cf355fd5SAlexey Zelkin.endif
4264d48756SAlexey Zelkin.if defined(NLSSRCFILES_${file})
438479adc1SRuslan ErmilovNLSSRCDIR_${file}?= ${NLSSRCDIR}
445852ae2dSBryan Drewery${file}.msg: ${NLSSRCFILES_${file}:S/^/${NLSSRCDIR_${file}}\//}
4564d48756SAlexey Zelkin	@rm -f ${.TARGET}
468479adc1SRuslan Ermilov	cat ${.ALLSRC} > ${.TARGET}
478479adc1SRuslan ErmilovCLEANFILES+= ${file}.msg
480aa35985SAlexey Zelkin.endif
4964d48756SAlexey Zelkin.endfor
5064d48756SAlexey Zelkin
5164d48756SAlexey Zelkin#
5264d48756SAlexey Zelkin# .cat file build rules
5364d48756SAlexey Zelkin#
548479adc1SRuslan ErmilovNLS:=		${NLS:=.cat}
558479adc1SRuslan ErmilovCLEANFILES+=	${NLS}
568479adc1SRuslan ErmilovFILESGROUPS?=	FILES
578479adc1SRuslan ErmilovFILESGROUPS+=	NLS
588479adc1SRuslan ErmilovNLSDIR?=	${SHAREDIR}/nls
5964d48756SAlexey Zelkin
6064d48756SAlexey Zelkin#
6164d48756SAlexey Zelkin# installation rules
6264d48756SAlexey Zelkin#
63c8c7a91dSSimon J. Gerraty.if ${MK_STAGING_PROG} == "yes"
64c8c7a91dSSimon J. Gerraty.if !defined(_SKIP_BUILD)
65eef72759SSimon J. GerratySTAGE_TARGETS+= stage_symlinks
66c8c7a91dSSimon J. Gerraty.endif
67c8c7a91dSSimon J. GerratySTAGE_SYMLINKS.NLS= ${NLSSYMLINKS}
68c8c7a91dSSimon J. GerratySTAGE_SYMLINKS_DIR.NLS= ${STAGE_OBJTOP}
69c8c7a91dSSimon J. Gerraty.else
70c8c7a91dSSimon J. GerratySYMLINKS+= ${NLSSYMLINKS}
71c8c7a91dSSimon J. Gerraty.endif
728479adc1SRuslan Ermilov.for file in ${NLS}
73*123ec1b8SBrad DavisNLSDIR_${file:T}=	${NLSDIR}/${file:T:R}
74*123ec1b8SBrad DavisNLSNAME_${file:T}=	${NLSNAME}.cat
758479adc1SRuslan Ermilov.if defined(NLSLINKS_${file:R}) && !empty(NLSLINKS_${file:R})
7691a44dfeSBryan Drewery.if !empty(NLSLINKS_${file:R}:M${file:R})
7791a44dfeSBryan Drewery.error NLSLINKS_${file:R} contains itself: ${file:R}
7891a44dfeSBryan Drewery.endif
798479adc1SRuslan Ermilov.endif
808479adc1SRuslan Ermilov.for dst in ${NLSLINKS_${file:R}}
81c8c7a91dSSimon J. GerratyNLSSYMLINKS+= ../${file:R}/${NLSNAME}.cat ${NLSDIR}/${dst}/${NLSNAME}.cat
820aa35985SAlexey Zelkin.endfor
830aa35985SAlexey Zelkin.endfor
840aa35985SAlexey Zelkin
85e1fe3dbaSRuslan Ermilov.endif # defined(NLS) && !empty(NLS) && ${MK_NLS} != "no"
86