diff options
Diffstat (limited to '')
-rw-r--r-- | src/Makefile | 322 | ||||
-rw-r--r-- | src/Makefile.dep | 4 |
2 files changed, 218 insertions, 108 deletions
diff --git a/src/Makefile b/src/Makefile index bb1839d1..c0deb774 100644 --- a/src/Makefile +++ b/src/Makefile | |||
@@ -8,10 +8,17 @@ | |||
8 | # Copyright (C) 2005-2009 Mike Pall. See Copyright Notice in luajit.h | 8 | # Copyright (C) 2005-2009 Mike Pall. See Copyright Notice in luajit.h |
9 | ############################################################################## | 9 | ############################################################################## |
10 | 10 | ||
11 | MAJVER= 2 | ||
12 | MINVER= 0 | ||
13 | RELVER= 0 | ||
14 | ABIVER= 5.1 | ||
15 | NODOTABIVER= 51 | ||
16 | |||
11 | ############################################################################## | 17 | ############################################################################## |
12 | # Compiler options: change them as needed. This mainly affects the speed of | 18 | # Compiler options: change them as needed. This mainly affects the speed of |
13 | # the JIT compiler itself, not the speed of the JIT compiled code. | 19 | # the JIT compiler itself, not the speed of the JIT compiled code. |
14 | # Turn any of the optional settings on by removing the '#' in front of them. | 20 | # Turn any of the optional settings on by removing the '#' in front of them. |
21 | # You need to 'make clean' and 'make' again, if you change any options. | ||
15 | # | 22 | # |
16 | # Note: LuaJIT can only be compiled for x86, and not for x64 (yet)! | 23 | # Note: LuaJIT can only be compiled for x86, and not for x64 (yet)! |
17 | # In the meantime, the x86 binary runs fine under a x64 OS. | 24 | # In the meantime, the x86 binary runs fine under a x64 OS. |
@@ -81,89 +88,142 @@ XCFLAGS= | |||
81 | #XCFLAGS+= -DLUA_USE_ASSERT | 88 | #XCFLAGS+= -DLUA_USE_ASSERT |
82 | # | 89 | # |
83 | ############################################################################## | 90 | ############################################################################## |
91 | |||
92 | ############################################################################## | ||
93 | # Build mode: override the mode as needed. Default is mixed mode on POSIX. | ||
94 | # On Windows this is the same as dynamic mode. | ||
95 | # | ||
96 | # Mixed mode creates a static + dynamic library and a statically linked luajit. | ||
97 | BUILDMODE= mixed | ||
98 | # | ||
99 | # Static mode creates a static library and a statically linked luajit. | ||
100 | #BUILDMODE= static | ||
101 | # | ||
102 | # Dynamic mode creates a dynamic library and a dynamically linked luajit. | ||
103 | # Note: this executable will only run when the library is installed! | ||
104 | #BUILDMODE= dynamic | ||
105 | ############################################################################## | ||
84 | # You probably don't need to change anything below this line. | 106 | # You probably don't need to change anything below this line. |
85 | ############################################################################## | 107 | ############################################################################## |
86 | 108 | ||
109 | ############################################################################## | ||
110 | # Flags and options for host and target. | ||
111 | ############################################################################## | ||
112 | |||
87 | CCOPTIONS= $(CCDEBUG) $(CCOPT) $(CCWARN) $(CFLAGS) $(XCFLAGS) | 113 | CCOPTIONS= $(CCDEBUG) $(CCOPT) $(CCWARN) $(CFLAGS) $(XCFLAGS) |
88 | LDOPTIONS= $(CCDEBUG) $(LDFLAGS) | 114 | LDOPTIONS= $(CCDEBUG) $(LDFLAGS) |
89 | 115 | ||
90 | HOST_CC= $(CC) | 116 | HOST_CC= $(CC) |
91 | HOST_RM= rm -f | 117 | HOST_RM= rm -f |
118 | # NOTE: The LuaJIT distribution comes with a pre-generated buildvm_*.h. | ||
119 | # You DO NOT NEED an installed copy of (plain) Lua 5.1 to run DynASM unless | ||
120 | # you want to MODIFY the corresponding *.dasc file. You can also use LuaJIT | ||
121 | # itself (bootstrapped from the pre-generated file) to run DynASM of course. | ||
122 | HOST_LUA= lua | ||
123 | |||
92 | HOST_XCFLAGS= | 124 | HOST_XCFLAGS= |
93 | HOST_XLDFLAGS= | 125 | HOST_XLDFLAGS= |
94 | HOST_XLIBS= | 126 | HOST_XLIBS= |
127 | HOST_CFLAGS= $(CCOPTIONS) $(HOST_XCFLAGS) $(TARGET_ARCH) | ||
128 | HOST_LDFLAGS= $(LDOPTIONS) $(HOST_XLDFLAGS) | ||
129 | HOST_LIBS= $(HOST_XLIBS) | ||
130 | |||
131 | # Cross-compilation example: make CROSS=i586-mingw32msvc- TARGET_SYS=Windows | ||
132 | CROSS= | ||
133 | STATIC_CC = $(CROSS)$(CC) | ||
134 | DYNAMIC_CC = $(CROSS)$(CC) -fPIC | ||
135 | TARGET_CC= $(STATIC_CC) | ||
136 | TARGET_STCC= $(STATIC_CC) | ||
137 | TARGET_DYNCC= $(DYNAMIC_CC) | ||
138 | TARGET_LD= $(CROSS)$(CC) | ||
139 | TARGET_AR= $(CROSS)ar rcus | ||
140 | TARGET_STRIP= $(CROSS)strip | ||
141 | |||
142 | TARGET_SONAME= libluajit-$(ABIVER).so.$(MAJVER) | ||
143 | TARGET_DYLIBNAME= libluajit-$(NODOTABIVER).$(MAJVER).$(MINVER).$(RELVER).dylib | ||
144 | TARGET_DLLNAME= lua$(NODOTABIVER).dll | ||
145 | TARGET_XSHLDFLAGS= -shared -fPIC -Wl,-soname,$(TARGET_SONAME) | ||
146 | TARGET_DYNXLDOPTS= | ||
95 | 147 | ||
96 | TARGET_CC= $(CC) | ||
97 | TARGET_STRIP= strip | ||
98 | TARGET_XCFLAGS= -D_FILE_OFFSET_BITS=64 | ||
99 | TARGET_XLDFLAGS= | ||
100 | TARGET_XSHLDFLAGS= -shared | ||
101 | TARGET_XLIBS= | ||
102 | TARGET_ARCH= $(patsubst %,-DLUAJIT_TARGET=LUAJIT_ARCH_%,$(TARGET)) | 148 | TARGET_ARCH= $(patsubst %,-DLUAJIT_TARGET=LUAJIT_ARCH_%,$(TARGET)) |
103 | TARGET_DISABLE= -U_FORTIFY_SOURCE | 149 | TARGET_DISABLE= -U_FORTIFY_SOURCE |
104 | ifneq (,$(findstring stack-protector,$(shell $(CC) -dumpspecs))) | 150 | ifneq (,$(findstring stack-protector,$(shell $(TARGET_CC) -dumpspecs))) |
105 | TARGET_DISABLE+= -fno-stack-protector | 151 | TARGET_DISABLE+= -fno-stack-protector |
106 | endif | 152 | endif |
107 | 153 | ||
154 | TARGET_XCFLAGS= -D_FILE_OFFSET_BITS=64 | ||
155 | TARGET_XLDFLAGS= | ||
156 | TARGET_XLDOPTS= | ||
157 | TARGET_XLIBS= | ||
158 | TARGET_CFLAGS= $(CCOPTIONS) $(TARGET_DISABLE) $(TARGET_XCFLAGS) | ||
159 | TARGET_LDFLAGS= $(LDOPTIONS) $(TARGET_XLDFLAGS) $(TARGET_XLDOPTS) | ||
160 | TARGET_SHLDFLAGS= $(LDOPTIONS) $(TARGET_XSHLDFLAGS) | ||
161 | TARGET_LIBS= -lm $(TARGET_XLIBS) | ||
162 | |||
163 | ifneq (,$(PREFIX)) | ||
164 | ifneq (/usr/local,$(PREFIX)) | ||
165 | TARGET_XCFLAGS+= -DLUA_XROOT=\"$(PREFIX)/\" | ||
166 | ifneq (/usr,$(PREFIX)) | ||
167 | TARGET_DYNXLDOPTS= -Wl,-rpath,$(PREFIX)/lib | ||
168 | endif | ||
169 | endif | ||
170 | endif | ||
171 | |||
172 | ############################################################################## | ||
173 | # System detection. | ||
174 | ############################################################################## | ||
175 | |||
108 | ifneq (,$(findstring Windows,$(OS))) | 176 | ifneq (,$(findstring Windows,$(OS))) |
109 | TARGET_SYS= Windows | 177 | HOST_SYS= Windows |
110 | else | 178 | else |
111 | TARGET_SYS:= $(shell uname -s) | 179 | HOST_SYS:= $(shell uname -s) |
112 | ifneq (,$(findstring CYGWIN,$(TARGET_SYS))) | 180 | ifneq (,$(findstring CYGWIN,$(TARGET_SYS))) |
113 | TARGET_SYS= Windows | 181 | HOST_SYS= Windows |
114 | endif | 182 | endif |
115 | endif | 183 | endif |
184 | ifeq (Windows,$(HOST_SYS)) | ||
185 | HOST_RM= del | ||
186 | endif | ||
116 | 187 | ||
117 | ifeq (Linux,$(TARGET_SYS)) | 188 | TARGET_SYS= $(HOST_SYS) |
118 | TARGET_XLIBS= -ldl | ||
119 | TARGET_XLDFLAGS= -Wl,-E | ||
120 | else | ||
121 | ifeq (Windows,$(TARGET_SYS)) | 189 | ifeq (Windows,$(TARGET_SYS)) |
122 | HOST_RM= del | 190 | TARGET_STRIP+= --strip-unneeded |
123 | TARGET_STRIP= strip --strip-unneeded | 191 | TARGET_XSHLDFLAGS= -shared |
192 | TARGET_DYNXLDOPTS= | ||
124 | else | 193 | else |
125 | ifeq (Darwin,$(TARGET_SYS)) | 194 | ifeq (Darwin,$(TARGET_SYS)) |
126 | TARGET_XSHLDFLAGS= -dynamiclib -single_module -undefined dynamic_lookup | 195 | export MACOSX_DEPLOYMENT_TARGET=10.4 |
127 | TARGET_STRIP= strip -x | 196 | TARGET_STRIP+= -x |
128 | export MACOSX_DEPLOYMENT_TARGET=10.3 | 197 | TARGET_AR+= 2>/dev/null |
198 | TARGET_XSHLDFLAGS= -dynamiclib -single_module -undefined dynamic_lookup -fPIC | ||
199 | ifneq (,$(TARGET_DYNXLDOPTS)) | ||
200 | TARGET_DYNXLDOPTS= | ||
201 | TARGET_XSHLDFLAGS+= -install_name $(PREFIX)/lib/$(TARGET_DYLIBNAME) | ||
202 | endif | ||
129 | else | 203 | else |
130 | TARGET_XLDFLAGS= -Wl,-E | 204 | TARGET_XLDFLAGS= -Wl,-E |
205 | ifeq (Linux,$(TARGET_SYS)) | ||
206 | TARGET_XLIBS= -ldl | ||
207 | endif | ||
131 | endif | 208 | endif |
132 | endif | 209 | endif |
133 | endif | ||
134 | |||
135 | # NOTE: The LuaJIT distribution comes with a pre-generated buildvm_*.h. | ||
136 | # You DO NOT NEED an installed copy of (plain) Lua 5.1 to run DynASM unless | ||
137 | # you want to MODIFY the corresponding *.dasc file. You can also use LuaJIT | ||
138 | # itself (bootstrapped from the pre-generated file) to run DynASM of course. | ||
139 | DASM_LUA= lua | ||
140 | |||
141 | Q= @ | ||
142 | E= @echo | ||
143 | #Q= | ||
144 | #E= @: | ||
145 | |||
146 | ############################################################################## | ||
147 | 210 | ||
148 | TARGET_CFLAGS= $(CCOPTIONS) $(TARGET_DISABLE) $(TARGET_XCFLAGS) | ||
149 | TARGET_LDFLAGS= $(LDOPTIONS) $(TARGET_XLDFLAGS) | ||
150 | TARGET_SHLDFLAGS= $(LDOPTIONS) $(TARGET_XSHLDFLAGS) | ||
151 | TARGET_LIBS= -lm $(TARGET_XLIBS) | ||
152 | ifneq (,$(CCDEBUG)) | 211 | ifneq (,$(CCDEBUG)) |
153 | TARGET_STRIP= @: | 212 | TARGET_STRIP= @: |
154 | endif | 213 | endif |
155 | 214 | ||
156 | HOST_CFLAGS= $(CCOPTIONS) $(HOST_XCFLAGS) $(TARGET_ARCH) | 215 | ############################################################################## |
157 | HOST_LDFLAGS= $(LDOPTIONS) $(HOST_XLDFLAGS) | 216 | # Files and pathnames. |
158 | HOST_LIBS= $(HOST_XLIBS) | 217 | ############################################################################## |
159 | 218 | ||
160 | DASM_DIR= ../dynasm | 219 | DASM_DIR= ../dynasm |
161 | DASM= $(DASM_LUA) $(DASM_DIR)/dynasm.lua | 220 | DASM= $(HOST_LUA) $(DASM_DIR)/dynasm.lua |
162 | DASM_FLAGS= | 221 | DASM_FLAGS= |
163 | DASM_DISTFLAGS= -LN | 222 | DASM_DISTFLAGS= -LN |
164 | 223 | ||
165 | BUILDVM_O= buildvm.o buildvm_asm.o buildvm_peobj.o buildvm_lib.o buildvm_fold.o | 224 | BUILDVM_O= buildvm.o buildvm_asm.o buildvm_peobj.o buildvm_lib.o buildvm_fold.o |
166 | BUILDVM_T= buildvm | 225 | BUILDVM_T= buildvm |
226 | BUILDVM_X= ./$(BUILDVM_T) | ||
167 | 227 | ||
168 | HOST_O= $(BUILDVM_O) | 228 | HOST_O= $(BUILDVM_O) |
169 | HOST_T= $(BUILDVM_T) | 229 | HOST_T= $(BUILDVM_T) |
@@ -188,54 +248,114 @@ LJCORE_O= lj_gc.o lj_err.o lj_ctype.o lj_bc.o lj_obj.o \ | |||
188 | $(LJLIB_O) lib_init.o | 248 | $(LJLIB_O) lib_init.o |
189 | 249 | ||
190 | LJVMCORE_O= $(LJVM_O) $(LJCORE_O) | 250 | LJVMCORE_O= $(LJVM_O) $(LJCORE_O) |
251 | LJVMCORE_DYNO= $(LJVMCORE_O:.o=_dyn.o) | ||
252 | |||
253 | LIB_VMDEF= ../lib/vmdef.lua | ||
254 | LIB_VMDEFP= $(LIB_VMDEF) | ||
191 | 255 | ||
192 | # NYI: Need complete support for building as a shared library on POSIX. | ||
193 | # This is currently *only* suitable for MinGW and Cygwin, see below. | ||
194 | LUAJIT_O= luajit.o | 256 | LUAJIT_O= luajit.o |
195 | LUAJIT_SO= luajit.so | 257 | LUAJIT_A= libluajit.a |
258 | LUAJIT_SO= libluajit.so | ||
196 | LUAJIT_T= luajit | 259 | LUAJIT_T= luajit |
197 | 260 | ||
198 | LIB_VMDEF= ../lib/vmdef.lua | 261 | ALL_T= $(LUAJIT_T) $(LUAJIT_A) $(LUAJIT_SO) $(BUILDVM_T) |
262 | ALL_GEN= $(LJVM_S) lj_ffdef.h lj_libdef.h lj_recdef.h $(LIB_VMDEFP) lj_folddef.h | ||
263 | ALL_DYNGEN= buildvm_x86.h | ||
264 | WIN_RM= *.obj *.lib *.exp *.dll *.exe *.manifest *.pdb *.ilk | ||
265 | ALL_RM= $(ALL_T) $(ALL_GEN) *.o $(WIN_RM) | ||
199 | 266 | ||
200 | TARGET_DEP= $(LIB_VMDEF) | 267 | ############################################################################## |
201 | TARGET_O= $(LJVMCORE_O) $(LUAJIT_O) | 268 | # Build mode handling. |
202 | TARGET_T= $(LUAJIT_T) | 269 | ############################################################################## |
203 | 270 | ||
204 | ALL_GEN= $(LJVM_S) lj_ffdef.h lj_libdef.h lj_recdef.h $(LIB_VMDEF) lj_folddef.h | 271 | # Mixed mode defaults. |
205 | ALL_DYNGEN= buildvm_x86.h | 272 | TARGET_O= $(LUAJIT_A) |
206 | WIN_RM= *.obj *.lib *.exp *.dll *.exe *.manifest | 273 | TARGET_T= $(LUAJIT_T) $(LUAJIT_SO) |
207 | ALL_RM= $(LUAJIT_T) $(LUAJIT_SO) $(HOST_T) $(ALL_GEN) *.o $(WIN_RM) | 274 | TARGET_DEP= $(LIB_VMDEF) $(LUAJIT_SO) |
208 | 275 | ||
276 | ifeq (Windows,$(HOST_SYS)) | ||
277 | BUILDVM_T= buildvm.exe | ||
278 | LIB_VMDEFP= $(subst /,\\,$(LIB_VMDEF)) | ||
279 | endif | ||
209 | ifeq (Windows,$(TARGET_SYS)) | 280 | ifeq (Windows,$(TARGET_SYS)) |
281 | DYNAMIC_CC= $(STATIC_CC) | ||
210 | LJVM_BOUT= $(LJVM_O) | 282 | LJVM_BOUT= $(LJVM_O) |
211 | LJVM_MODE= peobj | 283 | LJVM_MODE= peobj |
212 | LIB_VMDEF= ..\lib\vmdef.lua | 284 | LUAJIT_SO= $(TARGET_DLLNAME) |
213 | # Imported symbols are bound to a specific DLL name under Windows. | ||
214 | LUAJIT_SO= lua51.dll | ||
215 | LUAJIT_T= luajit.exe | 285 | LUAJIT_T= luajit.exe |
216 | BUILDVM_T= buildvm.exe | 286 | ifneq ($(HOST_SYS),$(TARGET_SYS)) |
217 | # | 287 | HOST_XCFLAGS+= -malign-double |
218 | # You can comment out the following two lines to build a static executable. | 288 | endif |
219 | # But then you won't be able to dynamically load any C modules, because | 289 | # Mixed mode is not supported on Windows. And static mode doesn't work well. |
220 | # they bind to lua51.dll. | 290 | # C modules cannot be loaded, because they bind to lua51.dll. |
221 | # | 291 | ifneq (static,$(BUILDMODE)) |
222 | TARGET_XCFLAGS+= -DLUA_BUILD_AS_DLL | 292 | BUILDMODE= dynamic |
223 | TARGET_O= $(LUAJIT_SO) $(LUAJIT_O) | 293 | TARGET_XCFLAGS+= -DLUA_BUILD_AS_DLL |
294 | endif | ||
224 | endif | 295 | endif |
225 | 296 | ||
226 | ############################################################################## | 297 | ifeq (static,$(BUILDMODE)) |
298 | TARGET_DYNCC= @: | ||
299 | TARGET_T= $(LUAJIT_T) | ||
300 | TARGET_DEP= $(LIB_VMDEF) | ||
301 | else | ||
302 | ifeq (dynamic,$(BUILDMODE)) | ||
303 | TARGET_CC= $(DYNAMIC_CC) | ||
304 | TARGET_DYNCC= @: | ||
305 | LJVMCORE_DYNO= $(LJVMCORE_O) | ||
306 | TARGET_O= $(LUAJIT_SO) | ||
307 | TARGET_XLDOPTS= $(TARGET_DYNXLDOPTS) | ||
308 | else | ||
309 | ifeq (Darwin,$(TARGET_SYS)) | ||
310 | TARGET_DYNCC= @: | ||
311 | LJVMCORE_DYNO= $(LJVMCORE_O) | ||
312 | endif | ||
313 | endif | ||
314 | endif | ||
227 | 315 | ||
228 | default: $(TARGET_T) | 316 | Q= @ |
317 | E= @echo | ||
318 | #Q= | ||
319 | #E= @: | ||
229 | 320 | ||
230 | all: $(TARGET_T) | 321 | ############################################################################## |
322 | # Make targets. | ||
323 | ############################################################################## | ||
324 | |||
325 | default all: $(TARGET_T) | ||
231 | 326 | ||
232 | amalg: | 327 | amalg: |
233 | @grep "^[+|]" ljamalg.c | 328 | @grep "^[+|]" ljamalg.c |
234 | $(MAKE) all "LJCORE_O=ljamalg.o" | 329 | $(MAKE) all "LJCORE_O=ljamalg.o" |
235 | 330 | ||
236 | MAKE_TARGETS= amalg | 331 | clean: |
332 | $(HOST_RM) $(ALL_RM) | ||
333 | |||
334 | cleaner: | ||
335 | $(HOST_RM) $(ALL_RM) $(ALL_DYNGEN) | ||
336 | |||
337 | distclean: clean | ||
338 | $(E) "DYNASM $@" | ||
339 | $(Q)$(DASM) $(DASM_DISTFLAGS) -o buildvm_x86.h buildvm_x86.dasc | ||
340 | |||
341 | depend: | ||
342 | @test -f lj_ffdef.h || touch lj_ffdef.h | ||
343 | @test -f lj_libdef.h || touch lj_libdef.h | ||
344 | @test -f lj_recdef.h || touch lj_recdef.h | ||
345 | @test -f lj_folddef.h || touch lj_folddef.h | ||
346 | @test -f buildvm_x86.h || touch buildvm_x86.h | ||
347 | @$(HOST_CC) $(HOST_CFLAGS) -MM *.c | sed "s|$(DASM_DIR)|\$$(DASM_DIR)|g" >Makefile.dep | ||
348 | @test -s lj_ffdef.h || $(HOST_RM) lj_ffdef.h | ||
349 | @test -s lj_libdef.h || $(HOST_RM) lj_libdef.h | ||
350 | @test -s lj_recdef.h || $(HOST_RM) lj_recdef.h | ||
351 | @test -s lj_folddef.h || $(HOST_RM) lj_folddef.h | ||
352 | @test -s buildvm_x86.h || $(HOST_RM) buildvm_x86.h | ||
353 | |||
354 | .PHONY: default all amalg clean cleaner distclean depend | ||
237 | 355 | ||
238 | ############################################################################## | 356 | ############################################################################## |
357 | # Rules for generated files. | ||
358 | ############################################################################## | ||
239 | 359 | ||
240 | buildvm_x86.h: buildvm_x86.dasc | 360 | buildvm_x86.h: buildvm_x86.dasc |
241 | $(E) "DYNASM $@" | 361 | $(E) "DYNASM $@" |
@@ -247,49 +367,46 @@ $(BUILDVM_T): $(BUILDVM_O) | |||
247 | 367 | ||
248 | $(LJVM_BOUT): $(BUILDVM_T) | 368 | $(LJVM_BOUT): $(BUILDVM_T) |
249 | $(E) "BUILDVM $@" | 369 | $(E) "BUILDVM $@" |
250 | $(Q)./$(BUILDVM_T) -m $(LJVM_MODE) -o $@ | 370 | $(Q)$(BUILDVM_X) -m $(LJVM_MODE) -o $@ |
251 | 371 | ||
252 | lj_ffdef.h: $(BUILDVM_T) $(LJLIB_C) | 372 | lj_ffdef.h: $(BUILDVM_T) $(LJLIB_C) |
253 | $(E) "BUILDVM $@" | 373 | $(E) "BUILDVM $@" |
254 | $(Q)./$(BUILDVM_T) -m ffdef -o $@ $(LJLIB_C) | 374 | $(Q)$(BUILDVM_X) -m ffdef -o $@ $(LJLIB_C) |
255 | 375 | ||
256 | lj_libdef.h: $(BUILDVM_T) $(LJLIB_C) | 376 | lj_libdef.h: $(BUILDVM_T) $(LJLIB_C) |
257 | $(E) "BUILDVM $@" | 377 | $(E) "BUILDVM $@" |
258 | $(Q)./$(BUILDVM_T) -m libdef -o $@ $(LJLIB_C) | 378 | $(Q)$(BUILDVM_X) -m libdef -o $@ $(LJLIB_C) |
259 | 379 | ||
260 | lj_recdef.h: $(BUILDVM_T) $(LJLIB_C) | 380 | lj_recdef.h: $(BUILDVM_T) $(LJLIB_C) |
261 | $(E) "BUILDVM $@" | 381 | $(E) "BUILDVM $@" |
262 | $(Q)./$(BUILDVM_T) -m recdef -o $@ $(LJLIB_C) | 382 | $(Q)$(BUILDVM_X) -m recdef -o $@ $(LJLIB_C) |
263 | 383 | ||
264 | $(LIB_VMDEF): $(BUILDVM_T) $(LJLIB_C) | 384 | $(LIB_VMDEF): $(BUILDVM_T) $(LJLIB_C) |
265 | $(E) "BUILDVM $@" | 385 | $(E) "BUILDVM $@" |
266 | $(Q)./$(BUILDVM_T) -m vmdef -o $@ $(LJLIB_C) | 386 | $(Q)$(BUILDVM_X) -m vmdef -o $(LIB_VMDEFP) $(LJLIB_C) |
267 | 387 | ||
268 | lj_folddef.h: $(BUILDVM_T) lj_opt_fold.c | 388 | lj_folddef.h: $(BUILDVM_T) lj_opt_fold.c |
269 | $(E) "BUILDVM $@" | 389 | $(E) "BUILDVM $@" |
270 | $(Q)./$(BUILDVM_T) -m folddef -o $@ lj_opt_fold.c | 390 | $(Q)$(BUILDVM_X) -m folddef -o $@ lj_opt_fold.c |
271 | |||
272 | $(LUAJIT_SO): $(LJVMCORE_O) | ||
273 | $(E) "LINK $@" | ||
274 | $(Q)$(TARGET_CC) $(TARGET_SHLDFLAGS) -o $@ $(LJVMCORE_O) $(TARGET_LIBS) | ||
275 | $(Q)$(TARGET_STRIP) $@ | ||
276 | |||
277 | $(LUAJIT_T): $(TARGET_O) $(TARGET_DEP) | ||
278 | $(E) "LINK $@" | ||
279 | $(Q)$(TARGET_CC) $(TARGET_LDFLAGS) -o $@ $(TARGET_O) $(TARGET_LIBS) | ||
280 | $(Q)$(TARGET_STRIP) $@ | ||
281 | $(E) "OK Successfully built LuaJIT" | ||
282 | 391 | ||
283 | ############################################################################## | 392 | ############################################################################## |
393 | # Object file rules. | ||
394 | ############################################################################## | ||
284 | 395 | ||
285 | %.o: %.c | 396 | %.o: %.c |
286 | $(E) "CC $@" | 397 | $(E) "CC $@" |
398 | $(Q)$(TARGET_DYNCC) $(TARGET_CFLAGS) -c -o $(@:.o=_dyn.o) $< | ||
287 | $(Q)$(TARGET_CC) $(TARGET_CFLAGS) -c -o $@ $< | 399 | $(Q)$(TARGET_CC) $(TARGET_CFLAGS) -c -o $@ $< |
288 | 400 | ||
289 | %.o: %.s | 401 | %.o: %.s |
290 | $(E) "ASM $@" | 402 | $(E) "ASM $@" |
403 | $(Q)$(TARGET_DYNCC) $(TARGET_CFLAGS) -c -o $(@:.o=_dyn.o) $< | ||
291 | $(Q)$(TARGET_CC) $(TARGET_CFLAGS) -c -o $@ $< | 404 | $(Q)$(TARGET_CC) $(TARGET_CFLAGS) -c -o $@ $< |
292 | 405 | ||
406 | $(LUAJIT_O): | ||
407 | $(E) "CC $@" | ||
408 | $(Q)$(TARGET_STCC) $(TARGET_CFLAGS) -c -o $@ $< | ||
409 | |||
293 | $(HOST_O): %.o: %.c | 410 | $(HOST_O): %.o: %.c |
294 | $(E) "HOSTCC $@" | 411 | $(E) "HOSTCC $@" |
295 | $(Q)$(HOST_CC) $(HOST_CFLAGS) -c -o $@ $< | 412 | $(Q)$(HOST_CC) $(HOST_CFLAGS) -c -o $@ $< |
@@ -297,30 +414,23 @@ $(HOST_O): %.o: %.c | |||
297 | include Makefile.dep | 414 | include Makefile.dep |
298 | 415 | ||
299 | ############################################################################## | 416 | ############################################################################## |
417 | # Target file rules. | ||
418 | ############################################################################## | ||
300 | 419 | ||
301 | clean: | 420 | $(LUAJIT_A): $(LJVMCORE_O) |
302 | $(HOST_RM) $(ALL_RM) | 421 | $(E) "AR $@" |
303 | 422 | $(Q)$(TARGET_AR) $@ $(LJVMCORE_O) | |
304 | cleaner: clean | ||
305 | $(HOST_RM) $(ALL_DYNGEN) | ||
306 | 423 | ||
307 | distclean: clean | 424 | # The dependency on _O, but linking with _DYNO is intentional. |
308 | $(E) "DYNASM $@" | 425 | $(LUAJIT_SO): $(LJVMCORE_O) |
309 | $(Q)$(DASM) $(DASM_DISTFLAGS) -o buildvm_x86.h buildvm_x86.dasc | 426 | $(E) "DYNLINK $@" |
310 | 427 | $(Q)$(TARGET_LD) $(TARGET_SHLDFLAGS) -o $@ $(LJVMCORE_DYNO) $(TARGET_LIBS) | |
311 | depend: | 428 | $(Q)$(TARGET_STRIP) $@ |
312 | @test -f lj_ffdef.h || touch lj_ffdef.h | ||
313 | @test -f lj_libdef.h || touch lj_libdef.h | ||
314 | @test -f lj_recdef.h || touch lj_recdef.h | ||
315 | @test -f lj_folddef.h || touch lj_folddef.h | ||
316 | @test -f buildvm_x86.h || touch buildvm_x86.h | ||
317 | @$(HOST_CC) $(HOST_CFLAGS) -MM *.c | sed "s|$(DASM_DIR)|\$$(DASM_DIR)|g" >Makefile.dep | ||
318 | @test -s lj_ffdef.h || $(HOST_RM) lj_ffdef.h | ||
319 | @test -s lj_libdef.h || $(HOST_RM) lj_libdef.h | ||
320 | @test -s lj_recdef.h || $(HOST_RM) lj_recdef.h | ||
321 | @test -s lj_folddef.h || $(HOST_RM) lj_folddef.h | ||
322 | @test -s buildvm_x86.h || $(HOST_RM) buildvm_x86.h | ||
323 | 429 | ||
324 | .PHONY: default all $(MAKE_TARGETS) clean cleaner distclean depend | 430 | $(LUAJIT_T): $(TARGET_O) $(LUAJIT_O) $(TARGET_DEP) |
431 | $(E) "LINK $@" | ||
432 | $(Q)$(TARGET_LD) $(TARGET_LDFLAGS) -o $@ $(LUAJIT_O) $(TARGET_O) $(TARGET_LIBS) | ||
433 | $(Q)$(TARGET_STRIP) $@ | ||
434 | $(E) "OK Successfully built LuaJIT" | ||
325 | 435 | ||
326 | ############################################################################## | 436 | ############################################################################## |
diff --git a/src/Makefile.dep b/src/Makefile.dep index b1cdd93b..1fb81e27 100644 --- a/src/Makefile.dep +++ b/src/Makefile.dep | |||
@@ -34,8 +34,8 @@ lib_os.o: lib_os.c lua.h luaconf.h lauxlib.h lualib.h lj_obj.h lj_def.h \ | |||
34 | lib_package.o: lib_package.c lua.h luaconf.h lauxlib.h lualib.h lj_obj.h \ | 34 | lib_package.o: lib_package.c lua.h luaconf.h lauxlib.h lualib.h lj_obj.h \ |
35 | lj_def.h lj_arch.h lj_err.h lj_errmsg.h lj_lib.h | 35 | lj_def.h lj_arch.h lj_err.h lj_errmsg.h lj_lib.h |
36 | lib_string.o: lib_string.c lua.h luaconf.h lauxlib.h lualib.h lj_obj.h \ | 36 | lib_string.o: lib_string.c lua.h luaconf.h lauxlib.h lualib.h lj_obj.h \ |
37 | lj_def.h lj_arch.h lj_err.h lj_errmsg.h lj_str.h lj_tab.h lj_state.h \ | 37 | lj_def.h lj_arch.h lj_gc.h lj_err.h lj_errmsg.h lj_str.h lj_tab.h \ |
38 | lj_ff.h lj_ffdef.h lj_ctype.h lj_lib.h lj_libdef.h | 38 | lj_state.h lj_ff.h lj_ffdef.h lj_ctype.h lj_lib.h lj_libdef.h |
39 | lib_table.o: lib_table.c lua.h luaconf.h lauxlib.h lualib.h lj_obj.h \ | 39 | lib_table.o: lib_table.c lua.h luaconf.h lauxlib.h lualib.h lj_obj.h \ |
40 | lj_def.h lj_arch.h lj_gc.h lj_err.h lj_errmsg.h lj_tab.h lj_lib.h \ | 40 | lj_def.h lj_arch.h lj_gc.h lj_err.h lj_errmsg.h lj_tab.h lj_lib.h \ |
41 | lj_libdef.h | 41 | lj_libdef.h |