setup.py: use custom build_ext instead of 'generate' command, define HAVE_AUBIO_DOUBL...
[aubio.git] / Makefile
1 WAFCMD=python waf
2 WAFURL=https://waf.io/waf-1.8.22
3
4 SOX=sox
5
6 ENABLE_DOUBLE := $(shell [ -z $(HAVE_DOUBLE) ] || echo --enable-double )
7 TESTSOUNDS := python/tests/sounds
8
9 all: build
10
11 checkwaf:
12         @[ -f waf ] || make getwaf
13
14 getwaf:
15         @./scripts/get_waf.sh
16
17 expandwaf:
18         @[ -d wafilb ] || rm -fr waflib
19         @$(WAFCMD) --help > /dev/null
20         @mv .waf*/waflib . && rm -fr .waf*
21         @sed '/^#==>$$/,$$d' waf > waf2 && mv waf2 waf
22         @chmod +x waf
23
24 configure: checkwaf
25         $(WAFCMD) configure $(WAFOPTS) $(ENABLE_DOUBLE)
26
27 build: configure
28         $(WAFCMD) build $(WAFOPTS)
29
30 build_python:
31         python ./setup.py build_ext $(ENABLE_DOUBLE)
32
33 test_python: export LD_LIBRARY_PATH=$(PWD)/build/src
34 test_python:
35         pip install -v -r requirements.txt
36         pip install -v .
37         nose2 --verbose
38         pip uninstall -y -v aubio
39
40 test_python_osx:
41         # create links from ~/lib/lib* to build/src/lib*
42         [ -f build/src/libaubio.[0-9].dylib ] && ( mkdir -p ~/lib && cp -prv build/src/libaubio.[0-9].dylib ~/lib ) || true
43         # then run the tests
44         pip install --user -v -r requirements.txt
45         pip install --user -v .
46         nose2 --verbose
47         pip uninstall -y -v aubio
48
49 clean_python:
50         ./setup.py clean
51
52 test_pure_python:
53         -pip uninstall -v -y aubio
54         -rm -rf build/ python/gen/
55         -rm -f dist/*.egg
56         -pip install -v -r requirements.txt
57         CFLAGS=-Os python setup.py bdist_egg
58         [ "$(TRAVIS_OS_NAME)" == "osx" ] && easy_install --user dist/*.egg || \
59                 easy_install dist/*.egg
60         nose2 -N 4
61         pip uninstall -v -y aubio
62
63 test_pure_python_wheel:
64         -pip uninstall -v -y aubio
65         -rm -rf build/ python/gen/
66         -rm -f dist/*.whl
67         -pip install -v -r requirements.txt
68         -pip install -v wheel
69         CFLAGS=-Os python setup.py bdist_wheel --universal
70         wheel install dist/*.whl
71         nose2 -N 4
72         pip uninstall -v -y aubio
73
74 build_python3:
75         python3 ./setup.py build_ext $(ENABLE_DOUBLE)
76
77 clean_python3:
78         python3 ./setup.py clean
79
80 clean:
81         $(WAFCMD) clean
82
83 distcheck: checkwaf
84         $(WAFCMD) distcheck $(WAFOPTS) $(ENABLE_DOUBLE)
85
86 help:
87         $(WAFCMD) --help
88
89 create_test_sounds:
90         -[ -z `which $(SOX)` ] && ( echo $(SOX) could not be found) || true
91         -mkdir -p $(TESTSOUNDS)
92         -$(SOX) -r 44100 -b 16 -n "$(TESTSOUNDS)/44100Hz_1f_silence.wav"      synth 1s   silence 0
93         -$(SOX) -r 22050 -b 16 -n "$(TESTSOUNDS)/22050Hz_5s_brownnoise.wav"   synth 5    brownnoise      vol 0.9
94         -$(SOX) -r 32000 -b 16 -n "$(TESTSOUNDS)/32000Hz_127f_sine440.wav"    synth 127s sine 440        vol 0.9
95         -$(SOX) -r  8000 -b 16 -n "$(TESTSOUNDS)/8000Hz_30s_silence.wav"      synth 30   silence 0       vol 0.9
96         -$(SOX) -r 48000 -b 32 -n "$(TESTSOUNDS)/48000Hz_60s_sweep.wav"       synth 60   sine 100-20000  vol 0.9