aboutsummaryrefslogtreecommitdiff
path: root/Makefile
diff options
context:
space:
mode:
Diffstat (limited to 'Makefile')
-rw-r--r--Makefile157
1 files changed, 89 insertions, 68 deletions
diff --git a/Makefile b/Makefile
index df56dcd..7d6b2ce 100644
--- a/Makefile
+++ b/Makefile
@@ -15,56 +15,77 @@
15 15
16MODULE = lanes 16MODULE = lanes
17 17
18N=1000 18N = 1000
19 19
20_TARGET_DIR=src/lanes 20TIME = time
21TIME=time
22 21
23ifeq "$(findstring MINGW,$(shell uname -s))" "MINGW" 22ifeq "$(findstring MINGW,$(shell uname -s))" "MINGW"
24 # MinGW MSYS on Windows 23 # MinGW MSYS on Windows
25 # 24 #
26 _SO=dll 25 _SO := dll
27 _LUAEXT=.exe 26 _LUAEXT := .exe
28 TIME=timeit.exe 27 TIME := timeit.exe
29else 28else
30 _SO=so 29 _SO := so
31 _LUAEXT= 30 _LUAEXT :=
32endif 31endif
33 32
34# Autodetect LUA 33# Autodetect LUA
35# 34#
36LUA:=$(word 1,$(shell which lua5.1$(_LUAEXT) 2>/dev/null) $(shell which lua51$(_LUAEXT) 2>/dev/null) $(shell which lua$(_LUAEXT) 2>/dev/null) $(shell which luajit$(_LUAEXT) 2>/dev/null)) 35LUA := $(word 1,$(shell which lua5.1$(_LUAEXT) 2>/dev/null) $(shell which lua51$(_LUAEXT) 2>/dev/null) $(shell which lua$(_LUAEXT) 2>/dev/null) $(shell which luajit$(_LUAEXT) 2>/dev/null))
37LUA_VERSION:=$(shell $(LUA) -e "print(string.sub(_VERSION,5,7))") 36LUA_VERSION := $(shell $(LUA) -e "print(string.sub(_VERSION,5,7))")
38 37
39$(info LUA is $(LUA)) 38$(info LUA: $(LUA))
40$(info LUA_VERSION is $(LUA_VERSION)) 39$(info LUA_VERSION: $(LUA_VERSION))
41 40
42_TARGET_SO:=$(_TARGET_DIR)/core.$(_SO) 41_LANES_TARGET := src/lanes/core.$(_SO)
42$(info _LANES_TARGET: $(_LANES_TARGET))
43 43
44_UNITTEST_TARGET:=$(_TARGET_DIR)/UnitTests$(_LUAEXT) 44_UNITTEST_TARGET := unit_tests/UnitTests$(_LUAEXT)
45$(info _UNITTEST_TARGET: $(_UNITTEST_TARGET))
45 46
46_PREFIX:=LUA_CPATH="./src/?.$(_SO)" LUA_PATH="./src/?.lua;./tests/?.lua" 47_DUE_TARGET := deep_userdata_example/deep_userdata_example.$(_SO)
48$(info _DUE_TARGET: $(_DUE_TARGET))
49
50_PREFIX := LUA_CPATH="./src/?.$(_SO)" LUA_PATH="./src/?.lua;./tests/?.lua"
51
52.PHONY: all unit_tests
53
54# only build lanes itself by default
55all: $(_LANES_TARGET)
56
57# build the unit_tests and the side deep_userdata_example module
58unit_tests: $(_UNITTEST_TARGET) $(_DUE_TARGET)
59 cd deep_userdata_example && $(MAKE) -f DUE.makefile LUA_LIBDIR=$(LUA_LIBDIR) install
47 60
48#--- 61#---
49all: $(_TARGET_SO) $(_UNITTEST_TARGET)
50 62
51$(_TARGET_SO): src/*.lua src/*.cpp src/*.h src/*.hpp 63$(_LANES_TARGET): src/*.lua src/*.cpp src/*.h src/*.hpp
52 @echo ========================================================================================= 64 @echo =========================================================================================
53 cd src && $(MAKE) LUA=$(LUA) 65 cd src && $(MAKE) -f Lanes.makefile LUA=$(LUA)
54 @echo ========== $(_TARGET_SO): DONE! 66 @echo ==================== $(_LANES_TARGET): DONE!
67 @echo
55 68
56$(_UNITTEST_TARGET): $(_TARGET_SO) 69$(_UNITTEST_TARGET): $(_LANES_TARGET)
57 @echo ========================================================================================= 70 @echo =========================================================================================
58 cd unit_tests && $(MAKE) 71 cd unit_tests && $(MAKE) -f UnitTests.makefile
59 @echo ========== $(_UNITTEST_TARGET): DONE! 72 @echo ==================== $(_UNITTEST_TARGET): DONE!
73 @echo
74
75$(_DUE_TARGET):
76 @echo =========================================================================================
77 cd deep_userdata_example && $(MAKE) -f DUE.makefile
78 @echo ==================== $(_DUE_TARGET): DONE!
79 @echo
60 80
61clean: 81clean:
62 cd src && $(MAKE) clean 82 cd src && $(MAKE) -f Lanes.makefile clean
63 cd unit_tests && $(MAKE) clean 83 cd unit_tests && $(MAKE) -f UnitTests.makefile clean
84 cd deep_userdata_example && $(MAKE) -f DUE.makefile clean
64 85
65debug: 86debug:
66 $(MAKE) clean 87 $(MAKE) clean
67 cd src && $(MAKE) LUA=$(LUA) OPT_FLAGS="-O0 -g" 88 cd src && $(MAKE) -f Lanes.makefile LUA=$(LUA) OPT_FLAGS="-O0 -g"
68 @echo "" 89 @echo ""
69 @echo "** Now, try 'make repetitive' or something and if it crashes, 'gdb $(LUA) ...core file...'" 90 @echo "** Now, try 'make repetitive' or something and if it crashes, 'gdb $(LUA) ...core file...'"
70 @echo " Then 'bt' for a backtrace." 91 @echo " Then 'bt' for a backtrace."
@@ -80,7 +101,7 @@ gdb:
80#--- LuaRocks automated build --- 101#--- LuaRocks automated build ---
81# 102#
82rock: 103rock:
83 cd src && $(MAKE) LUAROCKS=1 CFLAGS="$(CFLAGS)" LIBFLAG="$(LIBFLAG)" LUA=$(LUA) 104 cd src && $(MAKE) -f Lanes.makefile LUAROCKS=1 CFLAGS="$(CFLAGS)" LIBFLAG="$(LIBFLAG)" LUA=$(LUA)
84 105
85 106
86#--- Testing --- 107#--- Testing ---
@@ -114,117 +135,117 @@ test:
114 $(MAKE) timer 135 $(MAKE) timer
115 $(MAKE) track_lanes 136 $(MAKE) track_lanes
116 137
117appendud: tests/appendud.lua $(_TARGET_SO) 138appendud: tests/appendud.lua $(_LANES_TARGET)
118 $(_PREFIX) $(LUA) $< 139 $(_PREFIX) $(LUA) $<
119 140
120atexit: tests/atexit.lua $(_TARGET_SO) 141atexit: tests/atexit.lua $(_LANES_TARGET)
121 $(_PREFIX) $(LUA) $< 142 $(_PREFIX) $(LUA) $<
122 143
123atomic: tests/atomic.lua $(_TARGET_SO) 144atomic: tests/atomic.lua $(_LANES_TARGET)
124 $(_PREFIX) $(LUA) $< 145 $(_PREFIX) $(LUA) $<
125 146
126basic: tests/basic.lua $(_TARGET_SO) 147basic: tests/basic.lua $(_LANES_TARGET)
127 $(_PREFIX) $(LUA) $< 148 $(_PREFIX) $(LUA) $<
128 149
129cancel: tests/cancel.lua $(_TARGET_SO) 150cancel: tests/cancel.lua $(_LANES_TARGET)
130 $(_PREFIX) $(LUA) $< 151 $(_PREFIX) $(LUA) $<
131 152
132cyclic: tests/cyclic.lua $(_TARGET_SO) 153cyclic: tests/cyclic.lua $(_LANES_TARGET)
133 $(_PREFIX) $(LUA) $< 154 $(_PREFIX) $(LUA) $<
134 155
135deadlock: tests/deadlock.lua $(_TARGET_SO) 156deadlock: tests/deadlock.lua $(_LANES_TARGET)
136 $(_PREFIX) $(LUA) $< 157 $(_PREFIX) $(LUA) $<
137 158
138ehynes: tests/ehynes.lua $(_TARGET_SO) 159ehynes: tests/ehynes.lua $(_LANES_TARGET)
139 $(_PREFIX) $(LUA) $< 160 $(_PREFIX) $(LUA) $<
140 161
141errhangtest: tests/errhangtest.lua $(_TARGET_SO) 162errhangtest: tests/errhangtest.lua $(_LANES_TARGET)
142 $(_PREFIX) $(LUA) $< 163 $(_PREFIX) $(LUA) $<
143 164
144error: tests/error.lua $(_TARGET_SO) 165error: tests/error.lua $(_LANES_TARGET)
145 $(_PREFIX) $(LUA) $< 166 $(_PREFIX) $(LUA) $<
146 167
147fibonacci: tests/fibonacci.lua $(_TARGET_SO) 168fibonacci: tests/fibonacci.lua $(_LANES_TARGET)
148 $(_PREFIX) $(LUA) $< 169 $(_PREFIX) $(LUA) $<
149 170
150fifo: tests/fifo.lua $(_TARGET_SO) 171fifo: tests/fifo.lua $(_LANES_TARGET)
151 $(_PREFIX) $(LUA) $< 172 $(_PREFIX) $(LUA) $<
152 173
153finalizer: tests/finalizer.lua $(_TARGET_SO) 174finalizer: tests/finalizer.lua $(_LANES_TARGET)
154 $(_PREFIX) $(LUA) $< 175 $(_PREFIX) $(LUA) $<
155 176
156func_is_string: tests/func_is_string.lua $(_TARGET_SO) 177func_is_string: tests/func_is_string.lua $(_LANES_TARGET)
157 $(_PREFIX) $(LUA) $< 178 $(_PREFIX) $(LUA) $<
158 179
159hangtest: tests/hangtest.lua $(_TARGET_SO) 180hangtest: tests/hangtest.lua $(_LANES_TARGET)
160 $(_PREFIX) $(LUA) $< 181 $(_PREFIX) $(LUA) $<
161 182
162irayo_closure: tests/irayo_closure.lua $(_TARGET_SO) 183irayo_closure: tests/irayo_closure.lua $(_LANES_TARGET)
163 $(_PREFIX) $(LUA) $< 184 $(_PREFIX) $(LUA) $<
164 185
165irayo_recursive: tests/irayo_recursive.lua $(_TARGET_SO) 186irayo_recursive: tests/irayo_recursive.lua $(_LANES_TARGET)
166 $(_PREFIX) $(LUA) $< 187 $(_PREFIX) $(LUA) $<
167 188
168keeper: tests/keeper.lua $(_TARGET_SO) 189keeper: tests/keeper.lua $(_LANES_TARGET)
169 $(_PREFIX) $(LUA) $< 190 $(_PREFIX) $(LUA) $<
170 191
171launchtest: tests/launchtest.lua $(_TARGET_SO) 192launchtest: tests/launchtest.lua $(_LANES_TARGET)
172 $(MAKE) _perftest ARGS="$< $(N)" 193 $(MAKE) _perftest ARGS="$< $(N)"
173 194
174linda_perf: tests/linda_perf.lua $(_TARGET_SO) 195linda_perf: tests/linda_perf.lua $(_LANES_TARGET)
175 $(_PREFIX) $(LUA) $< 196 $(_PREFIX) $(LUA) $<
176 197
177manual_register: tests/manual_register.lua $(_TARGET_SO) 198manual_register: tests/manual_register.lua $(_LANES_TARGET)
178 $(_PREFIX) $(LUA) $< 199 $(_PREFIX) $(LUA) $<
179 200
180nameof: tests/nameof.lua $(_TARGET_SO) 201nameof: tests/nameof.lua $(_LANES_TARGET)
181 $(_PREFIX) $(LUA) $< 202 $(_PREFIX) $(LUA) $<
182 203
183objects: tests/objects.lua $(_TARGET_SO) 204objects: tests/objects.lua $(_LANES_TARGET)
184 $(_PREFIX) $(LUA) $< 205 $(_PREFIX) $(LUA) $<
185 206
186package: tests/package.lua $(_TARGET_SO) 207package: tests/package.lua $(_LANES_TARGET)
187 $(_PREFIX) $(LUA) $< 208 $(_PREFIX) $(LUA) $<
188 209
189perftest: tests/perftest.lua $(_TARGET_SO) 210perftest: tests/perftest.lua $(_LANES_TARGET)
190 $(MAKE) _perftest ARGS="$< $(N)" 211 $(MAKE) _perftest ARGS="$< $(N)"
191 212
192perftest-even: tests/perftest.lua $(_TARGET_SO) 213perftest-even: tests/perftest.lua $(_LANES_TARGET)
193 $(MAKE) _perftest ARGS="$< $(N) -prio=-2" 214 $(MAKE) _perftest ARGS="$< $(N) -prio=-2"
194 215
195perftest-odd: tests/perftest.lua $(_TARGET_SO) 216perftest-odd: tests/perftest.lua $(_LANES_TARGET)
196 $(MAKE) _perftest ARGS="$< $(N) -prio=+2" 217 $(MAKE) _perftest ARGS="$< $(N) -prio=+2"
197 218
198perftest-plain: tests/perftest.lua $(_TARGET_SO) 219perftest-plain: tests/perftest.lua $(_LANES_TARGET)
199 $(MAKE) _perftest ARGS="$< $(N) -plain" 220 $(MAKE) _perftest ARGS="$< $(N) -plain"
200 221
201pingpong: tests/pingpong.lua $(_TARGET_SO) 222pingpong: tests/pingpong.lua $(_LANES_TARGET)
202 $(_PREFIX) $(LUA) $< 223 $(_PREFIX) $(LUA) $<
203 224
204recursive: tests/recursive.lua $(_TARGET_SO) 225recursive: tests/recursive.lua $(_LANES_TARGET)
205 $(_PREFIX) $(LUA) $< 226 $(_PREFIX) $(LUA) $<
206 227
207require: tests/require.lua $(_TARGET_SO) 228require: tests/require.lua $(_LANES_TARGET)
208 $(_PREFIX) $(LUA) $< 229 $(_PREFIX) $(LUA) $<
209 230
210rupval: tests/rupval.lua $(_TARGET_SO) 231rupval: tests/rupval.lua $(_LANES_TARGET)
211 $(_PREFIX) $(LUA) $< 232 $(_PREFIX) $(LUA) $<
212 233
213timer: tests/timer.lua $(_TARGET_SO) 234timer: tests/timer.lua $(_LANES_TARGET)
214 $(_PREFIX) $(LUA) $< 235 $(_PREFIX) $(LUA) $<
215 236
216track_lanes: tests/track_lanes.lua $(_TARGET_SO) 237track_lanes: tests/track_lanes.lua $(_LANES_TARGET)
217 $(_PREFIX) $(LUA) $< 238 $(_PREFIX) $(LUA) $<
218# 239#
219# This tries to show out a bug which happens in lane cleanup (multicore CPU's only) 240# This tries to show out a bug which happens in lane cleanup (multicore CPU's only)
220# 241#
221REP_ARGS=-llanes -e "print'say aaa'; for i=1,10 do print(i) end" 242REP_ARGS=-llanes -e "print'say aaa'; for i=1,10 do print(i) end"
222repetitive: $(_TARGET_SO) 243repetitive: $(_LANES_TARGET)
223 for i in 1 2 3 4 5 6 7 8 9 10 a b c d e f g h i j k l m n o p q r s t u v w x y z; \ 244 for i in 1 2 3 4 5 6 7 8 9 10 a b c d e f g h i j k l m n o p q r s t u v w x y z; \
224 do $(_PREFIX) $(LUA) $(REP_ARGS); \ 245 do $(_PREFIX) $(LUA) $(REP_ARGS); \
225 done 246 done
226 247
227repetitive1: $(_TARGET_SO) 248repetitive1: $(_LANES_TARGET)
228 $(_PREFIX) $(LUA) $(REP_ARGS) 249 $(_PREFIX) $(LUA) $(REP_ARGS)
229 250
230#--- 251#---
@@ -246,15 +267,15 @@ LUA_SHAREDIR:=$(DESTDIR)/share/lua/$(LUA_VERSION)
246# 267#
247# AKa 17-Oct: changed to use 'install -m 644' and 'cp -p' 268# AKa 17-Oct: changed to use 'install -m 644' and 'cp -p'
248# 269#
249install: $(_TARGET_SO) src/lanes.lua 270install: $(_LANES_TARGET) src/lanes.lua
250 mkdir -p $(LUA_LIBDIR) $(LUA_LIBDIR)/lanes $(LUA_SHAREDIR) 271 mkdir -p $(LUA_LIBDIR) $(LUA_LIBDIR)/lanes $(LUA_SHAREDIR)
251 install -m 644 $(_TARGET_SO) $(LUA_LIBDIR)/lanes 272 install -m 644 $(_LANES_TARGET) $(LUA_LIBDIR)/lanes
252 cp -p src/lanes.lua $(LUA_SHAREDIR) 273 cp -p src/lanes.lua $(LUA_SHAREDIR)
253 274
254uninstall: 275uninstall:
255 rm $(LUA_LIBDIR)/lanes/core.$(_SO) 276 rm $(LUA_LIBDIR)/lanes/core.$(_SO)
256 rm $(LUA_SHAREDIR)/lanes.lua 277 rm $(LUA_SHAREDIR)/lanes.lua
257 278 rm $(LUA_LIBDIR)/deep_userdata_example.$(_SO)
258 279
259#--- Packaging --- 280#--- Packaging ---
260# 281#
@@ -289,14 +310,14 @@ endif
289# 2.0.1: Running this (instant exit of the main Lua state) occasionally 310# 2.0.1: Running this (instant exit of the main Lua state) occasionally
290# segfaults (1:15 or so on OS X PowerPC G4). 311# segfaults (1:15 or so on OS X PowerPC G4).
291# 312#
292require_module: $(_TARGET_SO) 313require_module: $(_LANES_TARGET)
293 $(_PREFIX) $(LUA) -e "require '$(MODULE)'" 314 $(_PREFIX) $(LUA) -e "require '$(MODULE)'"
294 315
295run: $(_TARGET_SO) 316run: $(_LANES_TARGET)
296 $(_PREFIX) $(LUA) -e "require '$(MODULE)'" -i 317 $(_PREFIX) $(LUA) -e "require '$(MODULE)'" -i
297 318
298echo: 319echo:
299 @echo $(PROGRAMFILES:C=X) 320 @echo $(PROGRAMFILES:C=X)
300 321
301.PHONY: all clean debug gdb rock test require install uninstall _nodemo _notest 322.PHONY: clean debug gdb rock test require install uninstall _nodemo _notest
302 323