source: pyromaths/trunk/fuentes/Makefile @ 423

Last change on this file since 423 was 423, checked in by mabarracus, 4 years ago

add sources from pyromaths 15.10

File size: 6.6 KB
Line 
1# Pyromaths Makefile.
2#
3# See 'make help' for available targets and usage details.
4
5### CONFIG
6#
7# Pyromaths version
8VERSION ?= 15.10
9# Archive format(s) produced by 'make src' (bztar,gztar,zip...)
10FORMATS ?= bztar,zip
11# Verbosity and logging
12OUT     ?= > /dev/null       # uncomment: quieter output
13#OUT     ?= >> log            # uncomment: log output to file
14
15### ENVIRONMENT VARIABLES
16#
17# Path
18PYRO    := $(PWD)
19DIST    := $(PYRO)/dist
20BUILD   := $(PYRO)/build
21ARCHIVE := $(PYRO)/..
22# Target-specific build dir (if needed)
23BUILDIR  = $(BUILD)/$@
24# Mac app folder
25APP     := $(DIST)/Pyromaths.app/Contents
26# Project files
27FILES   := AUTHORS COPYING NEWS pyromaths README setup.py MANIFEST.in src data
28
29### MANIFESTS
30#
31# Base manifest (README, src/ and test/ auto-included):
32MANIFEST :=                                      \
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):
39MANIFEST-min := $(MANIFEST)                     \
40    graft data                                  \n\
41    prune test                                  \n
42# Full project sources:
43MANIFEST-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:
51MANIFEST-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:
56MANIFEST-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:
61MANIFEST-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#
68ifeq ($(OS),Windows_NT)
69        # Windows
70        PYTHON ?= c:/Python27/python.exe
71else
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
81endif
82setup := $(PYTHON) setup.py
83
84### MACROS
85#
86# Remove manifest file, egg-info dir and target build dir, clean-up sources.
87clean = 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).
93all: egg rpm deb src
94
95help:
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
121clean:
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
129version:
130        # Apply target version ($(VERSION)) to sources
131        $(sed-i) "s/VERSION\s*=\s*'.*'/VERSION = '$(VERSION)'/" src/pyromaths/Values.py
132
133src: 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
139egg: version
140        # Make python egg
141        $(clean)
142        echo "$(MANIFEST-unix)" > MANIFEST.in
143        $(setup) bdist_egg -d $(DIST) $(OUT)
144
145rpm: 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
152min: 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
158deb: 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
170repo: deb
171        # update apt repository
172        $(clean)
173        cd $(BUILD)
174        dput -l $(BUILD)/pyromaths_$(VERSION)-1_amd64.changes
175
176data/%.qm: data/%.ts
177        # Translate new/updated language files
178        lrelease $< -qm $@
179
180app: 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
200exe:
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)
Note: See TracBrowser for help on using the repository browser.