forked from ChordPro/chordpro
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathGNUmakefile
139 lines (102 loc) · 3.04 KB
/
GNUmakefile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
#! /bin/make -f
################ Pass-through ################
.PHONY : all
all : Makefile cleanup
mv Makefile.old Makefile
$(MAKE) -f Makefile all
.PHONY : test
test : Makefile
env PERL5LIB=$(shell pwd)/CPAN $(MAKE) -f Makefile test
.PHONY : tests
tests : test
prove -b xt
.PHONY : clean
clean : cleanup
rm -f *~
.PHONY : cleanup
cleanup : Makefile
$(MAKE) -f Makefile clean
.PHONY : dist
dist : Makefile resources
$(MAKE) -f Makefile dist
.PHONY : install
install : Makefile
$(MAKE) -f Makefile install
Makefile : Makefile.PL lib/ChordPro/Version.pm resources
perl Makefile.PL
################ Extensions ################
PERL := perl
PROJECT := ChordPro
TMP_DST := ${HOME}/tmp/${PROJECT}
RSYNC_ARGS := -rptgoDvHL
W10DIR := /Users/Johan/${PROJECT}
MACDST := macky:ChordPro
to_tmp : resources
rsync ${RSYNC_ARGS} --files-from=MANIFEST ./ ${TMP_DST}/
rsync ${RSYNC_ARGS} --files-from=MANIFEST.WX ./ ${TMP_DST}/
to_tmp_cpan :
rsync ${RSYNC_ARGS} --files-from=MANIFEST.CPAN ./ ${TMP_DST}/
to_c :
test -d /mnt/c/Users || mount /mnt/c
${MAKE} to_tmp to_tmp_cpan TMP_DST=/mnt/c${W10DIR}
to_mac : resources
rsync ${RSYNC_ARGS} --files-from=MANIFEST ./ ${MACDST}/
rsync ${RSYNC_ARGS} --files-from=MANIFEST.WX ./ ${MACDST}/
rsync ${RSYNC_ARGS} --files-from=MANIFEST.CPAN ./ ${MACDST}/
ssh macky rm -fr ${MACDST}/pp/windows
release :
${PERL} Makefile.PL
${MAKE} -f Makefile all test dist
# Actualize resources.
LIB := lib/ChordPro
RES := ${LIB}/res
PODSELECT := podselect
resources : ${RES}/config/chordpro.json ${RES}/pod/ChordPro.pod ${RES}/pod/Config.pod ${RES}/pod/A2Crd.pod docs/assets/pub/config60.schema
${RES}/config/chordpro.json : ${LIB}/Config.pm
$(PERL) -Ilib $< > $@
${RES}/pod/ChordPro.pod : ${LIB}.pm
${PODSELECT} $< > $@
${RES}/pod/Config.pod : ${LIB}/Config.pm
${PODSELECT} $< > $@
${PERL} -pe 's/^/ /' ${RES}/config/chordpro.json >> $@
${RES}/pod/A2Crd.pod : ${LIB}/A2Crd.pm
${PODSELECT} $< > $@
docs/assets/pub/config61.schema : ${RES}/config/config.schema
cp -p $< $@
# Verify JSON data
CFGLIB := ${LIB}/res/config
JSONVALIDATOR = java -jar lib/jar/json-schema-validator-*-lib.jar
JSONOPTS := --brief
checkjson :
rm -fr .json
mkdir .json
for i in ${CFGLIB}/*.json ; \
do \
json_pp -json_opt relaxed < $$i > .json/`basename $$i`; \
done
cd .json; rm keyboard.json dark.json resetchords.json
${JSONVALIDATOR} ${JSONOPTS} \
${CFGLIB}/config.schema .json/*.json
rm -fr .json
# Experimental
VM := Win10Pro
WW := w10
wkit : _wkit1 _wkit _wkit2
_wkit :
${MAKE} to_c
ssh ${WW} gmake -C Chordpro/pp/windows
scp ${WW}:Chordpro/pp/windows/ChordPro-Installer\*.exe ${HOME}/tmp/
_wkit1 :
-VBoxManage startvm ${VM} --type headless
_wkit2 :
sudo umount /misc/c
VBoxManage controlvm ${VM} poweroff
VBoxManage snapshot ${VM} restorecurrent
.PHONY: TAGS
TAGS:
etags.emacs `grep '\.p[lm]' MANIFEST`
.PHONY: svg
svg :
cp -p ${HOME}/src/SVGPDF/lib/SVGPDF.pm lib/ChordPro/lib
cp -p ${HOME}/src/SVGPDF/lib/SVGPDF/*.pm lib/ChordPro/lib/SVGPDF/
cp -p ${HOME}/src/SVGPDF/lib/SVGPDF/Contrib/*.pm lib/ChordPro/lib/SVGPDF/Contrib/