1 | # Pyromaths Makefile. |
---|
2 | # |
---|
3 | # See 'make help' for available targets and usage details. |
---|
4 | |
---|
5 | ### CONFIG |
---|
6 | # |
---|
7 | # Pyromaths version |
---|
8 | VERSION ?= 15.10 |
---|
9 | # Archive format(s) produced by 'make src' (bztar,gztar,zip...) |
---|
10 | FORMATS ?= bztar,zip |
---|
11 | # Verbosity and logging |
---|
12 | OUT ?= > /dev/null # uncomment: quieter output |
---|
13 | #OUT ?= >> log # uncomment: log output to file |
---|
14 | |
---|
15 | ### ENVIRONMENT VARIABLES |
---|
16 | # |
---|
17 | # Path |
---|
18 | PYRO := $(PWD) |
---|
19 | DIST := $(PYRO)/dist |
---|
20 | BUILD := $(PYRO)/build |
---|
21 | ARCHIVE := $(PYRO)/.. |
---|
22 | # Target-specific build dir (if needed) |
---|
23 | BUILDIR = $(BUILD)/$@ |
---|
24 | # Mac app folder |
---|
25 | APP := $(DIST)/Pyromaths.app/Contents |
---|
26 | # Project files |
---|
27 | FILES := AUTHORS COPYING NEWS pyromaths README setup.py MANIFEST.in src data |
---|
28 | |
---|
29 | ### MANIFESTS |
---|
30 | # |
---|
31 | # Base manifest (README, src/ and test/ auto-included): |
---|
32 | MANIFEST := \ |
---|
33 | include AUTHORS COPYING NEWS \n\ |
---|
34 | exclude MANIFEST.in \n\ |
---|
35 | prune test \n\ |
---|
36 | prune utils \n\ |
---|
37 | graft data \n |
---|
38 | # Minimal install (i.e. without test/ dir): |
---|
39 | MANIFEST-min := $(MANIFEST) \ |
---|
40 | graft data \n\ |
---|
41 | prune test \n |
---|
42 | # Full project sources: |
---|
43 | MANIFEST-all := $(MANIFEST) \ |
---|
44 | graft debian \n\ |
---|
45 | graft utils \n\ |
---|
46 | graft data \n\ |
---|
47 | graft Doc \n\ |
---|
48 | graft Doc/source \n\ |
---|
49 | include Makefile \n |
---|
50 | # Unix: |
---|
51 | MANIFEST-unix := $(MANIFEST-min) \ |
---|
52 | exclude data/qtmac_fr.qm \n\ |
---|
53 | exclude data/images/pyromaths.icns \n\ |
---|
54 | exclude data/images/pyromaths.ico \n |
---|
55 | # Mac app: |
---|
56 | MANIFEST-mac := $(MANIFEST-min) \ |
---|
57 | prune data/linux \n\ |
---|
58 | exclude data/images/pyromaths.ico \n\ |
---|
59 | exclude data/images/pyromaths-banniere.png \n |
---|
60 | # Win app: |
---|
61 | MANIFEST-win := $(MANIFEST-min) \ |
---|
62 | prune data/linux \n\ |
---|
63 | exclude data/qtmac_fr.qm \n\ |
---|
64 | exclude data/images/pyromaths.icns \n |
---|
65 | |
---|
66 | ### SHORTCUTS & COMPATIBILITY |
---|
67 | # |
---|
68 | ifeq ($(OS),Windows_NT) |
---|
69 | # Windows |
---|
70 | PYTHON ?= c:/Python27/python.exe |
---|
71 | else |
---|
72 | # Unix |
---|
73 | PYTHON ?= python |
---|
74 | ifeq ($(shell uname -s),Darwin) |
---|
75 | # Mac/BSD |
---|
76 | sed-i := sed -i '' |
---|
77 | else |
---|
78 | # GNU |
---|
79 | sed-i := sed -i |
---|
80 | endif |
---|
81 | endif |
---|
82 | setup := $(PYTHON) setup.py |
---|
83 | |
---|
84 | ### MACROS |
---|
85 | # |
---|
86 | # Remove manifest file, egg-info dir and target build dir, clean-up sources. |
---|
87 | clean = rm -f MANIFEST.in && rm -rf src/*.egg-info && rm -rf $(BUILDIR) &&\ |
---|
88 | find . -name '*~' | xargs rm -f && find . -iname '*.pyc' | xargs rm -f |
---|
89 | |
---|
90 | |
---|
91 | # src must be after rpm, otherwise rpm produces a .tar.gz file that replaces the |
---|
92 | # .tar.gz source file (should $$FORMATS include gztar). |
---|
93 | all: egg rpm deb src |
---|
94 | |
---|
95 | help: |
---|
96 | # |
---|
97 | # Build pyromaths packages in several formats. |
---|
98 | # |
---|
99 | # Usage (Unix): |
---|
100 | # $$ make src # Make full-source archive(s) |
---|
101 | # $$ make egg # Make python egg |
---|
102 | # $$ make rpm # Make RPM package |
---|
103 | # $$ make deb # Make DEB package |
---|
104 | # $$ make [all] # Make all previous archives/packages |
---|
105 | # |
---|
106 | # Usage (Mac): |
---|
107 | # $$ make app # Make standalone application |
---|
108 | # |
---|
109 | # Usage (Windows): |
---|
110 | # $$ make exe # Make standalone executable (experimental) |
---|
111 | # |
---|
112 | # And also: |
---|
113 | # $$ make version # Apply target $$VERSION [$(VERSION)] to sources |
---|
114 | # $$ make clean # Clean-up build/dist folders and source tree |
---|
115 | # $$ make repo # Make debian repository |
---|
116 | # |
---|
117 | # Notes: |
---|
118 | # - Notice the source achive $$FORMATS produced [$(FORMATS)]. |
---|
119 | # - Mangle with $$OUT to make it quieter/verbose/log to output file. |
---|
120 | |
---|
121 | clean: |
---|
122 | # Clean |
---|
123 | rm -r $(BUILD)/* || mkdir -p $(BUILD) |
---|
124 | rm -r $(DIST)/* || mkdir -p $(DIST) |
---|
125 | rmdir $(BUILD) |
---|
126 | rmdir $(DIST) |
---|
127 | $(clean) |
---|
128 | |
---|
129 | version: |
---|
130 | # Apply target version ($(VERSION)) to sources |
---|
131 | $(sed-i) "s/VERSION\s*=\s*'.*'/VERSION = '$(VERSION)'/" src/pyromaths/Values.py |
---|
132 | |
---|
133 | src: version |
---|
134 | # Make full-source archive(s) (formats=$(FORMATS)) |
---|
135 | $(clean) |
---|
136 | echo "$(MANIFEST-all)" > MANIFEST.in |
---|
137 | $(setup) sdist --formats=$(FORMATS) -d $(DIST) $(OUT) |
---|
138 | |
---|
139 | egg: version |
---|
140 | # Make python egg |
---|
141 | $(clean) |
---|
142 | echo "$(MANIFEST-unix)" > MANIFEST.in |
---|
143 | $(setup) bdist_egg -d $(DIST) $(OUT) |
---|
144 | |
---|
145 | rpm: version |
---|
146 | # Make RPM package |
---|
147 | $(clean) |
---|
148 | echo "$(MANIFEST-unix)" > MANIFEST.in |
---|
149 | $(setup) bdist --formats=rpm -b $(BUILD) -d $(DIST) $(OUT) |
---|
150 | rm $(DIST)/pyromaths-$(VERSION).tar.gz |
---|
151 | |
---|
152 | min: version |
---|
153 | # Make minimalist .tar.bz source archive in $(BUILD) |
---|
154 | $(clean) |
---|
155 | echo "$(MANIFEST-unix)" > MANIFEST.in |
---|
156 | $(setup) sdist --formats=bztar -d $(BUILD) $(OUT) |
---|
157 | |
---|
158 | deb: min |
---|
159 | # Make DEB archive |
---|
160 | $(clean) |
---|
161 | cd $(BUILD) && tar -xjf pyromaths-$(VERSION).tar.bz2 &&\ |
---|
162 | mv pyromaths-$(VERSION) $(BUILDIR) &&\ |
---|
163 | mv pyromaths-$(VERSION).tar.bz2 pyromaths_$(VERSION).orig.tar.bz2 |
---|
164 | cp -r debian $(BUILDIR) |
---|
165 | cd $(BUILDIR) && debuild clean $(OUT) |
---|
166 | cd $(BUILDIR) && debuild -kB39EE5B6 $(OUT) || exit 0 |
---|
167 | mkdir -p $(DIST) |
---|
168 | cp $(BUILD)/pyromaths_$(VERSION)-*_all.deb $(DIST) |
---|
169 | |
---|
170 | repo: deb |
---|
171 | # update apt repository |
---|
172 | $(clean) |
---|
173 | cd $(BUILD) |
---|
174 | dput -l $(BUILD)/pyromaths_$(VERSION)-1_amd64.changes |
---|
175 | |
---|
176 | data/%.qm: data/%.ts |
---|
177 | # Translate new/updated language files |
---|
178 | lrelease $< -qm $@ |
---|
179 | |
---|
180 | app: version data/qtmac_fr.qm |
---|
181 | # ..Remove previous build |
---|
182 | rm -rf $(BUILD) $(DIST) |
---|
183 | # Make standalone Mac application |
---|
184 | $(setup) py2app -O2 -b $(BUILD) -d $(DIST) $(OUT) |
---|
185 | # ..Clean-up unnecessary files/folders |
---|
186 | rm -f $(APP)/PkgInfo |
---|
187 | cd $(APP)/Resources && rm -rf site.pyc include lib/python2.*/config lib/python2.*/site.pyc |
---|
188 | cd $(APP)/Frameworks &&\ |
---|
189 | rm -rf *.framework/Contents *.framework/Versions/4.0 \ |
---|
190 | *.framework/Versions/Current *.framework/*.prl \ |
---|
191 | QtCore.framework/QtCore QtGui.framework/QtGui |
---|
192 | cd $(APP)/Frameworks/Python.framework/Versions/2.* &&\ |
---|
193 | rm -rf include lib Resources |
---|
194 | rm -rf $(APP)/Resources/lib/python2.7/pyromaths.ex/examples |
---|
195 | find $(APP)/Resources/lib/python2.7/pyromaths.ex \( -name '*.pyc' \) -delete |
---|
196 | rm -rf $(APP)/Frameworks/pyromaths |
---|
197 | # ..Remove all architectures but x86_64..." |
---|
198 | ditto --rsrc --arch x86_64 --hfsCompression $(DIST)/Pyromaths.app $(DIST)/Pyromaths-x86_64.app |
---|
199 | |
---|
200 | exe: |
---|
201 | # Make standalone Windows executable |
---|
202 | # ..Remove previous builds |
---|
203 | rmdir /s /q $(BUILDIR) |
---|
204 | rm $(DIST)/Pyromaths-*-win32.exe |
---|
205 | # ..Create stripped-down sources |
---|
206 | md $(BUILDIR) |
---|
207 | xcopy data $(BUILDIR)/data /i /s |
---|
208 | xcopy src $(BUILDIR)/src /i /s |
---|
209 | copy $(FILES) $(BUILDIR) |
---|
210 | move $(BUILDIR)/pyromaths $(BUILDIR)/Pyromaths.py |
---|
211 | # ..Create standalone exe |
---|
212 | cd $(BUILDIR) && $(setup) innosetup -b $(BUILD) -d $(DIST) |
---|