blob: 20f39df1714713647bc045b2dfa0eada7b069305 (
plain)
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
|
CC=g++
#---------------------------------
# Package versions for pkg-config
# QT=QtCore # Qt4
QT=Qt5Core # Qt5
LUA=lua
RUBY=ruby-2.6
#---------------------------------
# Flags
QTFLAGS := $(shell pkg-config $(QT) --cflags)
QTLIBS := $(shell pkg-config $(QT) --libs)
PYTHON2FLAGS := $(shell pkg-config python2 --cflags)
PYTHON3FLAGS := $(shell pkg-config python3 --cflags)
PHPFLAGS := $(shell php-config --includes)
PHPLIBS := $(shell php-config --libs)
LUAFLAGS := $(shell pkg-config $(LUA) --cflags)
RUBYFLAGS := $(shell pkg-config $(RUBY) --cflags)
INCLUDES=-I..
QUACKLELIBS=../lib/release/libquackle.a ../quackleio/lib/release/libquackleio.a
#---------------------------------
# PHP
php/quackle_wrap.cxx:
@test -d php || mkdir php
swig -c++ -o $@ $(INCLUDES) $(QTFLAGS) -php quackle.i
php/quackle_wrap.o: php/quackle_wrap.cxx
$(CC) -std=c++14 -fPIC $(QTFLAGS) $(PHPFLAGS) $(PHPLIBS) $(INCLUDES) -c $< -o $@
php: php/quackle_wrap.o
$(CC) -std=c++14 -shared -Wl,--whole-archive $(QUACKLELIBS) -Wl,--no-whole-archive $(QTLIBS) $< -o php/quackle.so
#---------------------------------
# Python2
python2/quackle_wrap.cxx:
@test -d python2 || mkdir python2
swig -c++ -o $@ $(INCLUDES) $(QTFLAGS) -python quackle.i
python2/quackle_wrap.o: python2/quackle_wrap.cxx
$(CC) -std=c++14 -fPIC $(QTFLAGS) $(PYTHON2FLAGS) $(INCLUDES) -c $< -o $@
python2: python2/quackle_wrap.o
$(CC) -std=c++14 -shared -Wl,--whole-archive $(QUACKLELIBS) -Wl,--no-whole-archive $(QTLIBS) $< -o python2/_quackle.so
#---------------------------------
# Python3
python3/quackle_wrap.cxx:
@test -d python3 || mkdir python3
swig -c++ -o $@ $(INCLUDES) $(QTFLAGS) -python -py3 quackle.i
python3/quackle_wrap.o: python3/quackle_wrap.cxx
$(CC) -std=c++14 -fPIC $(QTFLAGS) $(PYTHON3FLAGS) $(INCLUDES) -c $< -o $@
python3: python3/quackle_wrap.o
$(CC) -std=c++14 -shared -Wl,--whole-archive $(QUACKLELIBS) -Wl,--no-whole-archive $(QTLIBS) $< -o python3/_quackle.so
#---------------------------------
# Go
go:
ln -sf ../quackle.i go/quackle.swigcxx
go build ./go/...
#---------------------------------
# Lua
lua/quackle_wrap.cxx:
@test -d lua || mkdir lua
swig -c++ -o $@ $(INCLUDES) $(QTFLAGS) -lua quackle.i
lua/quackle_wrap.o: lua/quackle_wrap.cxx
$(CC) -std=c++14 -fPIC $(LUAFLAGS) $(QTFLAGS) $(INCLUDES) -c $< -o $@
lua: lua/quackle_wrap.o
$(CC) -std=c++14 -shared $(LUAFLAGS) -Wl,--whole-archive $(QUACKLELIBS) -Wl,--no-whole-archive $(QTLIBS) $< -o lua/quackle.so
#---------------------------------
# Ruby
ruby/quackle_wrap.cxx:
@test -d ruby || mkdir ruby
swig -c++ -o $@ $(INCLUDES) $(QTFLAGS) -ruby ruby_quackle.i
ruby/quackle_wrap.o: ruby/quackle_wrap.cxx
$(CC) -std=c++14 -fPIC $(QTFLAGS) $(RUBYFLAGS) $(INCLUDES) -c $< -o $@
ruby: ruby/quackle_wrap.o
$(CC) -std=c++14 -shared -Wl,--whole-archive $(QUACKLELIBS) -Wl,--no-whole-archive $(QTLIBS) $< -o ruby/quackle.so
#---------------------------------
.PHONY: clean go
clean:
-rm -rf python2/quackle.py
-rm -rf python3/quackle.py
-rm -rf python3/__pycache__
-rm -rf php/*php*
-rm -rf */*_wrap.cxx
-rm -rf */*.o
-rm -rf */*.so
-rm -rf */*.pyc
-rm -rf go/quackle.swigcxx
|