xref: /aosp_15_r20/external/selinux/python/po/Makefile (revision 2d543d20722ada2425b5bdab9d0d1d29470e7bba)
1*2d543d20SAndroid Build Coastguard Worker#
2*2d543d20SAndroid Build Coastguard Worker# Makefile for the PO files (translation) catalog
3*2d543d20SAndroid Build Coastguard Worker#
4*2d543d20SAndroid Build Coastguard Worker
5*2d543d20SAndroid Build Coastguard WorkerPREFIX ?= /usr
6*2d543d20SAndroid Build Coastguard Worker
7*2d543d20SAndroid Build Coastguard Worker# What is this package?
8*2d543d20SAndroid Build Coastguard WorkerNLSPACKAGE	= python
9*2d543d20SAndroid Build Coastguard WorkerPOTFILE		= $(NLSPACKAGE).pot
10*2d543d20SAndroid Build Coastguard WorkerINSTALL		= /usr/bin/install -c -p
11*2d543d20SAndroid Build Coastguard WorkerINSTALL_DATA	= $(INSTALL) -m 644
12*2d543d20SAndroid Build Coastguard WorkerINSTALL_DIR	= /usr/bin/install -d
13*2d543d20SAndroid Build Coastguard Worker
14*2d543d20SAndroid Build Coastguard Worker# destination directory
15*2d543d20SAndroid Build Coastguard WorkerINSTALL_NLS_DIR = $(PREFIX)/share/locale
16*2d543d20SAndroid Build Coastguard Worker
17*2d543d20SAndroid Build Coastguard Worker# PO catalog handling
18*2d543d20SAndroid Build Coastguard WorkerMSGMERGE	= msgmerge
19*2d543d20SAndroid Build Coastguard WorkerMSGMERGE_FLAGS	= -q
20*2d543d20SAndroid Build Coastguard WorkerXGETTEXT	= xgettext --default-domain=$(NLSPACKAGE)
21*2d543d20SAndroid Build Coastguard WorkerMSGFMT		= msgfmt
22*2d543d20SAndroid Build Coastguard Worker
23*2d543d20SAndroid Build Coastguard Worker# All possible linguas
24*2d543d20SAndroid Build Coastguard WorkerPO_LINGUAS := $(sort $(patsubst %.po,%,$(wildcard *.po)))
25*2d543d20SAndroid Build Coastguard Worker
26*2d543d20SAndroid Build Coastguard Worker# Only the files matching what the user has set in LINGUAS
27*2d543d20SAndroid Build Coastguard WorkerUSER_LINGUAS := $(filter $(patsubst %,%%,$(LINGUAS)),$(PO_LINGUAS))
28*2d543d20SAndroid Build Coastguard Worker
29*2d543d20SAndroid Build Coastguard Worker# if no valid LINGUAS, build all languages
30*2d543d20SAndroid Build Coastguard WorkerUSE_LINGUAS := $(if $(USER_LINGUAS),$(USER_LINGUAS),$(PO_LINGUAS))
31*2d543d20SAndroid Build Coastguard Worker
32*2d543d20SAndroid Build Coastguard WorkerPOFILES		= $(patsubst %,%.po,$(USE_LINGUAS))
33*2d543d20SAndroid Build Coastguard WorkerMOFILES		= $(patsubst %.po,%.mo,$(POFILES))
34*2d543d20SAndroid Build Coastguard WorkerPOTFILES  = $(shell cat POTFILES)
35*2d543d20SAndroid Build Coastguard Worker
36*2d543d20SAndroid Build Coastguard Worker#default:: clean
37*2d543d20SAndroid Build Coastguard Worker
38*2d543d20SAndroid Build Coastguard Workerall::  $(MOFILES)
39*2d543d20SAndroid Build Coastguard Worker
40*2d543d20SAndroid Build Coastguard Worker$(POTFILE): $(POTFILES)
41*2d543d20SAndroid Build Coastguard Worker	$(XGETTEXT) -L Python --keyword=_ --keyword=N_ $(POTFILES)
42*2d543d20SAndroid Build Coastguard Worker	$(XGETTEXT) -j --keyword=_ --keyword=N_ ../sepolicy/sepolicy/sepolicy.glade
43*2d543d20SAndroid Build Coastguard Worker	@if cmp -s $(NLSPACKAGE).po $(POTFILE); then \
44*2d543d20SAndroid Build Coastguard Worker	    rm -f $(NLSPACKAGE).po; \
45*2d543d20SAndroid Build Coastguard Worker	else \
46*2d543d20SAndroid Build Coastguard Worker	    mv -f $(NLSPACKAGE).po $(POTFILE); \
47*2d543d20SAndroid Build Coastguard Worker	fi; \
48*2d543d20SAndroid Build Coastguard Worker
49*2d543d20SAndroid Build Coastguard Worker
50*2d543d20SAndroid Build Coastguard Workerrefresh-po: Makefile
51*2d543d20SAndroid Build Coastguard Worker	for cat in $(POFILES); do \
52*2d543d20SAndroid Build Coastguard Worker		lang=`basename $$cat .po`; \
53*2d543d20SAndroid Build Coastguard Worker		if $(MSGMERGE) $(MSGMERGE_FLAGS) $$lang.po $(POTFILE) > $$lang.pot ; then \
54*2d543d20SAndroid Build Coastguard Worker			mv -f $$lang.pot $$lang.po ; \
55*2d543d20SAndroid Build Coastguard Worker			echo "$(MSGMERGE) of $$lang succeeded" ; \
56*2d543d20SAndroid Build Coastguard Worker		else \
57*2d543d20SAndroid Build Coastguard Worker			echo "$(MSGMERGE) of $$lang failed" ; \
58*2d543d20SAndroid Build Coastguard Worker			rm -f $$lang.pot ; \
59*2d543d20SAndroid Build Coastguard Worker		fi \
60*2d543d20SAndroid Build Coastguard Worker	done
61*2d543d20SAndroid Build Coastguard Worker
62*2d543d20SAndroid Build Coastguard Workerclean:
63*2d543d20SAndroid Build Coastguard Worker	@rm -fv *mo *~ .depend
64*2d543d20SAndroid Build Coastguard Worker	@rm -rf tmp
65*2d543d20SAndroid Build Coastguard Worker
66*2d543d20SAndroid Build Coastguard Workerinstall: $(MOFILES)
67*2d543d20SAndroid Build Coastguard Worker	@for n in $(MOFILES); do \
68*2d543d20SAndroid Build Coastguard Worker	    l=`basename $$n .mo`; \
69*2d543d20SAndroid Build Coastguard Worker	    $(INSTALL_DIR) $(DESTDIR)$(INSTALL_NLS_DIR)/$$l/LC_MESSAGES; \
70*2d543d20SAndroid Build Coastguard Worker	    $(INSTALL_DATA) --verbose $$n $(DESTDIR)$(INSTALL_NLS_DIR)/$$l/LC_MESSAGES/selinux-$(NLSPACKAGE).mo; \
71*2d543d20SAndroid Build Coastguard Worker	done
72*2d543d20SAndroid Build Coastguard Worker
73*2d543d20SAndroid Build Coastguard Worker%.mo: %.po
74*2d543d20SAndroid Build Coastguard Worker	$(MSGFMT) -o $@ $<
75*2d543d20SAndroid Build Coastguard Workerreport:
76*2d543d20SAndroid Build Coastguard Worker	@for cat in $(wildcard *.po); do \
77*2d543d20SAndroid Build Coastguard Worker                echo -n "$$cat: "; \
78*2d543d20SAndroid Build Coastguard Worker                msgfmt -v --statistics -o /dev/null $$cat; \
79*2d543d20SAndroid Build Coastguard Worker        done
80*2d543d20SAndroid Build Coastguard Worker
81*2d543d20SAndroid Build Coastguard Worker.PHONY: missing depend
82*2d543d20SAndroid Build Coastguard Worker
83*2d543d20SAndroid Build Coastguard Workerrelabel:
84*2d543d20SAndroid Build Coastguard Worker
85*2d543d20SAndroid Build Coastguard Workertest:
86