OSDN Git Service

(split) LDP: Change Makefile to stamp-based compilation
[linuxjm/LDP_man-pages.git] / Makefile
1 PERKAMON_DIR = perkamon
2 LANGS = ja
3 THRESH = 80
4 THRESH_REL = 80
5 FLAGS ?=
6 PO4AFLAGS ?= -k $(THRESH) $(FLAGS)
7
8 PO4A_SUBDIRS = $(notdir $(wildcard po4a/*))
9
10 all: translate update-stats
11
12 translate:      $(patsubst %, stamp/%, $(PO4A_SUBDIRS))
13 stamp/%:        stamp-jm-setup po4a/%/po/ja.po
14         @echo "*************** translate: $* ***************"
15         mkdir -p stamp
16         LC_ALL=C $(MAKE) process-$* \
17           PO4AFLAGS="$(PO4AFLAGS)" LANGS="$(LANGS)" -C $(PERKAMON_DIR)
18         touch $@
19
20 translate-all:  $(patsubst %, _translate-%, $(PO4A_SUBDIRS))
21 _translate-%: jm-setup
22         LC_ALL=C $(MAKE) process-$* \
23           PO4AFLAGS="$(PO4AFLAGS)" LANGS="$(LANGS)" -C $(PERKAMON_DIR)
24
25 release:        $(patsubst %, _release-%, $(PO4A_SUBDIRS))
26
27 _release-%:     jm-setup
28         rm -f $(PERKAMON_DIR)/build/ja
29         ln -s ../../release $(PERKAMON_DIR)/build/ja
30         LC_ALL=C $(MAKE) process-$* \
31           PO4AFLAGS="-k $(THRESH_REL) $(FLAGS)" LANGS="$(LANGS)" -C $(PERKAMON_DIR)
32         $(RM) $(PERKAMON_DIR)/build/ja
33         ln -s ../../draft $(PERKAMON_DIR)/build/ja
34         @# Do not remove unreleased pages
35         @sleep 1
36         set -e; if git status release | grep deleted >/dev/null; then \
37           git status release | grep deleted | awk '{print $$3;}' | xargs -n1 echo; \
38           git status release | grep deleted | awk '{print $$3;}' | xargs -n1 git checkout; \
39         fi
40
41 update-stats:   untrans.html
42
43 untrans.html:   $(patsubst %, stats/%, $(PO4A_SUBDIRS))
44         @echo "*************** Updating translation statistics ***************"
45         ./tools/generate-list.pl $^ > $@
46
47 stats/%:        stamp-jm-setup po4a/%/po/ja.po
48         @echo "*************** stats: $* ***************"
49         mkdir -p stats
50         mkdir -p _transtmp
51         $(RM) $(PERKAMON_DIR)/build/ja
52         ln -s ../../_transtmp $(PERKAMON_DIR)/build/ja
53         LC_ALL=C $(MAKE) process-$* \
54           PO4AFLAGS="-k 100 $(FLAGS)" LANGS="$(LANGS)" -C $(PERKAMON_DIR) \
55           | tee _log.txt
56         ./tools/extract-untrans.pl < _log.txt > $@
57         $(RM) $(PERKAMON_DIR)/build/ja
58         ln -s ../../draft $(PERKAMON_DIR)/build/ja
59         $(RM) -r _transtmp
60         $(RM) _log.txt
61
62 clean-stats:
63         $(RM) -r stats
64
65 release-tl:
66         set -e; if git status release | grep modified >/dev/null; then \
67           git status release | grep modified | awk '{print $$3;}' | cut -d / -f 3 | xargs -n1 -IXXXXX ../../admin/JM-tl-modify.pl -U translation_list XXXXX RO; \
68         fi
69
70 format:
71         set -e; for d in po4a/*; do \
72           echo "----- $$d -----"; cur=`pwd`; cd $$d/po; \
73           f=`/bin/mktemp`; \
74           LC_ALL=C msgmerge --verbose -o $$f ja.po $$(basename $$d) \
75             && mv -f $$f ja.po; \
76           cd $$cur; \
77         done
78
79 format-%:
80         set -e; for d in po4a/$*; do \
81           cd $$d/po; \
82           f=`/bin/mktemp`; \
83           msgmerge --verbose -o $$f ja.po $$(basename $$d) \
84             && mv -f $$f ja.po; \
85           cd $$cur; \
86         done
87
88 postats:        jm-setup
89         @LC_ALL=C $(MAKE) stats \
90           PO4AFLAGS="$(PO4AFLAGS)" LANGS="$(LANGS)" -C $(PERKAMON_DIR)
91
92 untrans-postats:        jm-setup
93         @LC_ALL=C $(MAKE) stats \
94           PO4AFLAGS="$(PO4AFLAGS)" LANGS="$(LANGS)" -C $(PERKAMON_DIR) \
95           2>&1 | grep -vE ' translated messages\.$$'
96
97 jm-setup:       stamp-jm-setup
98 stamp-jm-setup:
99         @# Create symlink to po4a/*/po in the top dir.
100         set -e; for d in $(PERKAMON_DIR)/po4a/*; do \
101           if [ ! -e $$d/po ]; then \
102             t=$$(echo $$d | sed -e "s|$(PERKAMON_DIR)/||"); \
103             ln -s ../../../$$t/po $$d/po; \
104           fi; \
105         done
106         cd $(PERKAMON_DIR) && make setup
107         @set -e; if [ ! -e $(PERKAMON_DIR)/build/ja ]; then \
108           ln -s ../../draft $(PERKAMON_DIR)/build/ja; \
109         fi
110         touch $@
111
112 clean-setup:
113         $(RM) stamp-jm-setup
114         $(RM) $(PERKAMON_DIR)/man-pages || true
115         $(RM) $(PERKAMON_DIR)/stamp-*
116         $(RM) -rf $(PERKAMON_DIR)/build
117         find $(PERKAMON_DIR) -type l | xargs $(RM)
118
119 help:
120         @echo "Available targets:"
121         @echo "   translate       Generate draft from po files"
122         @echo "   translate-<SEC> Generate draft from the specified po file"
123         @echo "   release         Generate release from po files"
124         @echo ""
125         @echo "   update-stats    Update per-page trans stats"
126         @echo "   clean-stats     Remove all caches of per-page trans stats"
127         @echo "   postats         Display per-po trans stats"
128         @echo "   untrans-postats Display per-po trans stats (untrans only)"
129         @echo ""
130         @echo "   jm-setup        Setup perkamon environment"
131         @echo "   clean-setup     Clean perkamon environment"