diff options
Diffstat (limited to 'src/Makefile')
-rw-r--r-- | src/Makefile | 167 |
1 files changed, 75 insertions, 92 deletions
diff --git a/src/Makefile b/src/Makefile index 5977c373..86b8b4fa 100644 --- a/src/Makefile +++ b/src/Makefile | |||
@@ -49,12 +49,12 @@ CCOPT= -O2 -fomit-frame-pointer | |||
49 | # x86/x64 only: For GCC 4.2 or higher and if you don't intend to distribute | 49 | # x86/x64 only: For GCC 4.2 or higher and if you don't intend to distribute |
50 | # the binaries to a different machine you could also use: -march=native | 50 | # the binaries to a different machine you could also use: -march=native |
51 | # | 51 | # |
52 | CCOPT_X86= -march=i686 | 52 | CCOPT_x86= -march=i686 |
53 | CCOPT_X64= | 53 | CCOPT_x64= |
54 | CCOPT_ARM= | 54 | CCOPT_arm= |
55 | CCOPT_PPC= | 55 | CCOPT_ppc= |
56 | CCOPT_PPCSPE= | 56 | CCOPT_ppcspe= |
57 | CCOPT_MIPS= | 57 | CCOPT_mips= |
58 | # | 58 | # |
59 | CCDEBUG= | 59 | CCDEBUG= |
60 | # Uncomment the next line to generate debug information: | 60 | # Uncomment the next line to generate debug information: |
@@ -182,13 +182,11 @@ LDOPTIONS= $(CCDEBUG) $(LDFLAGS) | |||
182 | 182 | ||
183 | HOST_CC= $(CC) | 183 | HOST_CC= $(CC) |
184 | HOST_RM= rm -f | 184 | HOST_RM= rm -f |
185 | # NOTE: The LuaJIT distribution comes with pre-generated buildvm_*.h files. | 185 | # If left blank, minilua is built and used. You can supply an installed |
186 | # You DO NOT NEED an installed copy of (plain) Lua 5.1 to run DynASM unless | 186 | # copy of (plain) Lua 5.1 or 5.2, e.g. with: HOST_LUA=lua |
187 | # you want to MODIFY the corresponding *.dasc file. You can also use LuaJIT | 187 | HOST_LUA= |
188 | # itself (bootstrapped from a pre-generated file) to run DynASM of course. | ||
189 | HOST_LUA= lua | ||
190 | 188 | ||
191 | HOST_XCFLAGS= | 189 | HOST_XCFLAGS= -I. |
192 | HOST_XLDFLAGS= | 190 | HOST_XLDFLAGS= |
193 | HOST_XLIBS= | 191 | HOST_XLIBS= |
194 | HOST_ACFLAGS= $(CCOPTIONS) $(HOST_XCFLAGS) $(TARGET_ARCH) $(HOST_CFLAGS) | 192 | HOST_ACFLAGS= $(CCOPTIONS) $(HOST_XCFLAGS) $(TARGET_ARCH) $(HOST_CFLAGS) |
@@ -223,31 +221,25 @@ TARGET_ALIBS= $(TARGET_XLIBS) $(LIBS) $(TARGET_LIBS) | |||
223 | 221 | ||
224 | TARGET_TESTARCH=$(shell $(TARGET_CC) $(TARGET_TCFLAGS) -E lj_arch.h -dM) | 222 | TARGET_TESTARCH=$(shell $(TARGET_CC) $(TARGET_TCFLAGS) -E lj_arch.h -dM) |
225 | ifneq (,$(findstring LJ_TARGET_X64 ,$(TARGET_TESTARCH))) | 223 | ifneq (,$(findstring LJ_TARGET_X64 ,$(TARGET_TESTARCH))) |
226 | TARGET_CCARCH= x64 | 224 | TARGET_LJARCH= x64 |
227 | TARGET_XCFLAGS+= $(CCOPT_X64) | ||
228 | else | 225 | else |
229 | ifneq (,$(findstring LJ_TARGET_X86 ,$(TARGET_TESTARCH))) | 226 | ifneq (,$(findstring LJ_TARGET_X86 ,$(TARGET_TESTARCH))) |
230 | TARGET_CCARCH= x86 | 227 | TARGET_LJARCH= x86 |
231 | TARGET_XCFLAGS+= $(CCOPT_X86) | ||
232 | else | 228 | else |
233 | ifneq (,$(findstring LJ_TARGET_ARM ,$(TARGET_TESTARCH))) | 229 | ifneq (,$(findstring LJ_TARGET_ARM ,$(TARGET_TESTARCH))) |
234 | TARGET_CCARCH= arm | 230 | TARGET_LJARCH= arm |
235 | TARGET_XCFLAGS+= $(CCOPT_ARM) | ||
236 | else | 231 | else |
237 | ifneq (,$(findstring LJ_TARGET_PPC ,$(TARGET_TESTARCH))) | 232 | ifneq (,$(findstring LJ_TARGET_PPC ,$(TARGET_TESTARCH))) |
238 | TARGET_CCARCH= ppc | 233 | TARGET_LJARCH= ppc |
239 | TARGET_XCFLAGS+= $(CCOPT_PPC) | ||
240 | else | 234 | else |
241 | ifneq (,$(findstring LJ_TARGET_PPCSPE ,$(TARGET_TESTARCH))) | 235 | ifneq (,$(findstring LJ_TARGET_PPCSPE ,$(TARGET_TESTARCH))) |
242 | TARGET_CCARCH= ppcspe | 236 | TARGET_LJARCH= ppcspe |
243 | TARGET_XCFLAGS+= $(CCOPT_PPCSPE) | ||
244 | else | 237 | else |
245 | ifneq (,$(findstring LJ_TARGET_MIPS ,$(TARGET_TESTARCH))) | 238 | ifneq (,$(findstring LJ_TARGET_MIPS ,$(TARGET_TESTARCH))) |
246 | ifneq (,$(findstring MIPSEL ,$(TARGET_TESTARCH))) | 239 | ifneq (,$(findstring MIPSEL ,$(TARGET_TESTARCH))) |
247 | TARGET_ARCH= -D__MIPSEL__=1 | 240 | TARGET_ARCH= -D__MIPSEL__=1 |
248 | endif | 241 | endif |
249 | TARGET_CCARCH= mips | 242 | TARGET_LJARCH= mips |
250 | TARGET_XCFLAGS+= $(CCOPT_MIPS) | ||
251 | else | 243 | else |
252 | $(error Unsupported target architecture) | 244 | $(error Unsupported target architecture) |
253 | endif | 245 | endif |
@@ -257,7 +249,8 @@ endif | |||
257 | endif | 249 | endif |
258 | endif | 250 | endif |
259 | 251 | ||
260 | TARGET_ARCH+= $(patsubst %,-DLUAJIT_TARGET=LUAJIT_ARCH_%,$(TARGET_CCARCH)) | 252 | TARGET_XCFLAGS+= $(CCOPT_$(TARGET_LJARCH)) |
253 | TARGET_ARCH+= $(patsubst %,-DLUAJIT_TARGET=LUAJIT_ARCH_%,$(TARGET_LJARCH)) | ||
261 | 254 | ||
262 | ifneq (,$(PREFIX)) | 255 | ifneq (,$(PREFIX)) |
263 | ifneq (/usr/local,$(PREFIX)) | 256 | ifneq (/usr/local,$(PREFIX)) |
@@ -300,7 +293,7 @@ ifeq (Darwin,$(TARGET_SYS)) | |||
300 | TARGET_XSHLDFLAGS= -dynamiclib -single_module -undefined dynamic_lookup -fPIC | 293 | TARGET_XSHLDFLAGS= -dynamiclib -single_module -undefined dynamic_lookup -fPIC |
301 | TARGET_DYNXLDOPTS= | 294 | TARGET_DYNXLDOPTS= |
302 | TARGET_XSHLDFLAGS+= -install_name $(TARGET_DYLIBPATH) -compatibility_version $(MAJVER).$(MINVER) -current_version $(MAJVER).$(MINVER).$(RELVER) | 295 | TARGET_XSHLDFLAGS+= -install_name $(TARGET_DYLIBPATH) -compatibility_version $(MAJVER).$(MINVER) -current_version $(MAJVER).$(MINVER).$(RELVER) |
303 | ifeq (x64,$(TARGET_CCARCH)) | 296 | ifeq (x64,$(TARGET_LJARCH)) |
304 | TARGET_XLDFLAGS+= -pagezero_size 10000 -image_base 100000000 | 297 | TARGET_XLDFLAGS+= -pagezero_size 10000 -image_base 100000000 |
305 | TARGET_XSHLDFLAGS+= -image_base 7fff04c4a000 | 298 | TARGET_XSHLDFLAGS+= -image_base 7fff04c4a000 |
306 | endif | 299 | endif |
@@ -357,24 +350,41 @@ endif | |||
357 | # Files and pathnames. | 350 | # Files and pathnames. |
358 | ############################################################################## | 351 | ############################################################################## |
359 | 352 | ||
353 | MINILUA_O= host/minilua.o | ||
354 | MINILUA_LIBS= -lm | ||
355 | MINILUA_T= host/minilua | ||
356 | MINILUA_X= $(MINILUA_T) | ||
357 | |||
358 | ifeq (,$(HOST_LUA)) | ||
359 | HOST_LUA= $(MINILUA_X) | ||
360 | DASM_DEP= $(MINILUA_T) | ||
361 | endif | ||
362 | |||
360 | DASM_DIR= ../dynasm | 363 | DASM_DIR= ../dynasm |
361 | DASM= $(HOST_LUA) $(DASM_DIR)/dynasm.lua | 364 | DASM= $(HOST_LUA) $(DASM_DIR)/dynasm.lua |
362 | DASM_FLAGS= | 365 | DASM_XFLAGS= |
363 | DASM_DISTFLAGS= -LN | 366 | DASM_AFLAGS= |
364 | DASM_FLAGS_X86= | 367 | DASM_ARCH= $(TARGET_LJARCH) |
365 | DASM_FLAGS_X64= -D X64 | 368 | |
366 | DASM_FLAGS_X64WIN= -D X64 -D X64WIN | 369 | ifeq (x64,$(TARGET_LJARCH)) |
367 | DASM_FLAGS_ARM= | 370 | DASM_ARCH= x86 |
368 | DASM_FLAGS_PPC= | 371 | ifeq (Windows,$(TARGET_SYS)) |
369 | DASM_FLAGS_PPCSPE= | 372 | DASM_AFLAGS+= -D X64 -D X64WIN |
370 | DASM_FLAGS_MIPS= | 373 | else |
371 | 374 | DASM_AFLAGS+= -D X64 | |
372 | BUILDVM_O= buildvm.o buildvm_asm.o buildvm_peobj.o buildvm_lib.o buildvm_fold.o | 375 | endif |
373 | BUILDVM_T= buildvm | 376 | endif |
374 | BUILDVM_X= ./$(BUILDVM_T) | 377 | |
375 | 378 | DASM_FLAGS= $(DASM_XFLAGS) $(DASM_AFLAGS) | |
376 | HOST_O= $(BUILDVM_O) | 379 | DASM_DASC= vm_$(DASM_ARCH).dasc |
377 | HOST_T= $(BUILDVM_T) | 380 | |
381 | BUILDVM_O= host/buildvm.o host/buildvm_asm.o host/buildvm_peobj.o \ | ||
382 | host/buildvm_lib.o host/buildvm_fold.o | ||
383 | BUILDVM_T= host/buildvm | ||
384 | BUILDVM_X= $(BUILDVM_T) | ||
385 | |||
386 | HOST_O= $(MINILUA_O) $(BUILDVM_O) | ||
387 | HOST_T= $(MINILUA_T) $(BUILDVM_T) | ||
378 | 388 | ||
379 | LJVM_S= lj_vm.s | 389 | LJVM_S= lj_vm.s |
380 | LJVM_O= lj_vm.o | 390 | LJVM_O= lj_vm.o |
@@ -409,13 +419,12 @@ LUAJIT_A= libluajit.a | |||
409 | LUAJIT_SO= libluajit.so | 419 | LUAJIT_SO= libluajit.so |
410 | LUAJIT_T= luajit | 420 | LUAJIT_T= luajit |
411 | 421 | ||
412 | ALL_T= $(LUAJIT_T) $(LUAJIT_A) $(LUAJIT_SO) $(BUILDVM_T) | 422 | ALL_T= $(LUAJIT_T) $(LUAJIT_A) $(LUAJIT_SO) $(HOST_T) |
413 | ALL_HDRGEN= lj_bcdef.h lj_ffdef.h lj_libdef.h lj_recdef.h lj_folddef.h | 423 | ALL_HDRGEN= lj_bcdef.h lj_ffdef.h lj_libdef.h lj_recdef.h lj_folddef.h \ |
424 | host/buildvm_arch.h | ||
414 | ALL_GEN= $(LJVM_S) $(ALL_HDRGEN) $(LIB_VMDEFP) | 425 | ALL_GEN= $(LJVM_S) $(ALL_HDRGEN) $(LIB_VMDEFP) |
415 | ALL_DYNGEN= buildvm_x86.h buildvm_x64.h buildvm_x64win.h buildvm_arm.h \ | ||
416 | buildvm_ppc.h buildvm_ppcspe.h buildvm_mips.h | ||
417 | WIN_RM= *.obj *.lib *.exp *.dll *.exe *.manifest *.pdb *.ilk | 426 | WIN_RM= *.obj *.lib *.exp *.dll *.exe *.manifest *.pdb *.ilk |
418 | ALL_RM= $(ALL_T) $(ALL_GEN) *.o $(WIN_RM) | 427 | ALL_RM= $(ALL_T) $(ALL_GEN) *.o host/*.o $(WIN_RM) |
419 | 428 | ||
420 | ############################################################################## | 429 | ############################################################################## |
421 | # Build mode handling. | 430 | # Build mode handling. |
@@ -427,8 +436,11 @@ TARGET_T= $(LUAJIT_T) $(LUAJIT_SO) | |||
427 | TARGET_DEP= $(LIB_VMDEF) $(LUAJIT_SO) | 436 | TARGET_DEP= $(LIB_VMDEF) $(LUAJIT_SO) |
428 | 437 | ||
429 | ifeq (Windows,$(HOST_SYS)) | 438 | ifeq (Windows,$(HOST_SYS)) |
430 | BUILDVM_T= buildvm.exe | 439 | MINILUA_T= host/minilua.exe |
431 | LIB_VMDEFP= $(subst /,\\,$(LIB_VMDEF)) | 440 | MINILUA_X= host\minilua |
441 | BUILDVM_T= host/buildvm.exe | ||
442 | BUILDVM_X= host\buildvm | ||
443 | ALL_RM:= $(subst /,\,$(ALL_RM)) | ||
432 | endif | 444 | endif |
433 | ifeq (Windows,$(TARGET_SYS)) | 445 | ifeq (Windows,$(TARGET_SYS)) |
434 | TARGET_DYNCC= $(STATIC_CC) | 446 | TARGET_DYNCC= $(STATIC_CC) |
@@ -495,68 +507,39 @@ amalg: | |||
495 | clean: | 507 | clean: |
496 | $(HOST_RM) $(ALL_RM) | 508 | $(HOST_RM) $(ALL_RM) |
497 | 509 | ||
498 | cleaner: | 510 | # Temporary rule for migration from old file layout. |
499 | $(HOST_RM) $(ALL_RM) $(ALL_DYNGEN) | 511 | cleaner: clean |
500 | 512 | $(HOST_RM) buildvm* | |
501 | distclean: clean | ||
502 | $(E) "DYNASM $@" | ||
503 | $(Q)$(DASM) $(DASM_DISTFLAGS) $(DASM_FLAGS_X86) -o buildvm_x86.h buildvm_x86.dasc | ||
504 | $(Q)$(DASM) $(DASM_DISTFLAGS) $(DASM_FLAGS_X64) -o buildvm_x64.h buildvm_x86.dasc | ||
505 | $(Q)$(DASM) $(DASM_DISTFLAGS) $(DASM_FLAGS_X64WIN) -o buildvm_x64win.h buildvm_x86.dasc | ||
506 | $(Q)$(DASM) $(DASM_DISTFLAGS) $(DASM_FLAGS_ARM) -o buildvm_arm.h buildvm_arm.dasc | ||
507 | $(Q)$(DASM) $(DASM_DISTFLAGS) $(DASM_FLAGS_PPC) -o buildvm_ppc.h buildvm_ppc.dasc | ||
508 | $(Q)$(DASM) $(DASM_DISTFLAGS) $(DASM_FLAGS_PPCSPE) -o buildvm_ppcspe.h buildvm_ppcspe.dasc | ||
509 | $(Q)$(DASM) $(DASM_DISTFLAGS) $(DASM_FLAGS_MIPS) -o buildvm_mips.h buildvm_mips.dasc | ||
510 | 513 | ||
511 | depend: | 514 | depend: |
512 | @for file in $(ALL_HDRGEN) $(ALL_DYNGEN); do \ | 515 | @for file in $(ALL_HDRGEN); do \ |
513 | test -f $$file || touch $$file; \ | 516 | test -f $$file || touch $$file; \ |
514 | done | 517 | done |
515 | @$(HOST_CC) $(HOST_ACFLAGS) -MM *.c | \ | 518 | @$(HOST_CC) $(HOST_ACFLAGS) -MM *.c host/*.c | \ |
516 | sed -e "s| [^ ]*/dasm_\S*\.h||g" \ | 519 | sed -e "s| [^ ]*/dasm_\S*\.h||g" \ |
517 | -e "s| buildvm_\S*\.h||g" \ | 520 | -e "s|^\([^l ]\)|host/\1|" \ |
518 | -e "s| lj_target_\S*\.h| lj_target_*.h|g" \ | 521 | -e "s| lj_target_\S*\.h| lj_target_*.h|g" \ |
519 | -e "s| lj_emit_\S*\.h| lj_emit_*.h|g" \ | 522 | -e "s| lj_emit_\S*\.h| lj_emit_*.h|g" \ |
520 | -e "s| lj_asm_\S*\.h| lj_asm_*.h|g" >Makefile.dep | 523 | -e "s| lj_asm_\S*\.h| lj_asm_*.h|g" >Makefile.dep |
521 | @for file in $(ALL_HDRGEN) $(ALL_DYNGEN); do \ | 524 | @for file in $(ALL_HDRGEN); do \ |
522 | test -s $$file || $(HOST_RM) $$file; \ | 525 | test -s $$file || $(HOST_RM) $$file; \ |
523 | done | 526 | done |
524 | 527 | ||
525 | .PHONY: default all amalg clean cleaner distclean depend | 528 | .PHONY: default all amalg clean cleaner depend |
526 | 529 | ||
527 | ############################################################################## | 530 | ############################################################################## |
528 | # Rules for generated files. | 531 | # Rules for generated files. |
529 | ############################################################################## | 532 | ############################################################################## |
530 | 533 | ||
531 | buildvm_x86.h: buildvm_x86.dasc | 534 | $(MINILUA_T): $(MINILUA_O) |
532 | $(E) "DYNASM $@" | 535 | $(E) "HOSTLINK $@" |
533 | $(Q)$(DASM) $(DASM_FLAGS) $(DASM_FLAGS_X86) -o $@ buildvm_x86.dasc | 536 | $(Q)$(HOST_CC) $(HOST_ALDFLAGS) -o $@ $(MINILUA_O) $(MINILUA_LIBS) $(HOST_ALIBS) |
534 | |||
535 | buildvm_x64.h: buildvm_x86.dasc | ||
536 | $(E) "DYNASM $@" | ||
537 | $(Q)$(DASM) $(DASM_FLAGS) $(DASM_FLAGS_X64) -o $@ buildvm_x86.dasc | ||
538 | |||
539 | buildvm_x64win.h: buildvm_x86.dasc | ||
540 | $(E) "DYNASM $@" | ||
541 | $(Q)$(DASM) $(DASM_FLAGS) $(DASM_FLAGS_X64WIN) -o $@ buildvm_x86.dasc | ||
542 | |||
543 | buildvm_arm.h: buildvm_arm.dasc | ||
544 | $(E) "DYNASM $@" | ||
545 | $(Q)$(DASM) $(DASM_FLAGS) $(DASM_FLAGS_ARM) -o $@ buildvm_arm.dasc | ||
546 | |||
547 | buildvm_ppc.h: buildvm_ppc.dasc | ||
548 | $(E) "DYNASM $@" | ||
549 | $(Q)$(DASM) $(DASM_FLAGS) $(DASM_FLAGS_PPC) -o $@ buildvm_ppc.dasc | ||
550 | |||
551 | buildvm_ppcspe.h: buildvm_ppcspe.dasc | ||
552 | $(E) "DYNASM $@" | ||
553 | $(Q)$(DASM) $(DASM_FLAGS) $(DASM_FLAGS_PPCSPE) -o $@ buildvm_ppcspe.dasc | ||
554 | 537 | ||
555 | buildvm_mips.h: buildvm_mips.dasc | 538 | host/buildvm_arch.h: $(DASM_DASC) $(DASM_DEP) |
556 | $(E) "DYNASM $@" | 539 | $(E) "DYNASM $@" |
557 | $(Q)$(DASM) $(DASM_FLAGS) $(DASM_FLAGS_MIPS) -o $@ buildvm_mips.dasc | 540 | $(Q)$(DASM) $(DASM_FLAGS) -o $@ $(DASM_DASC) |
558 | 541 | ||
559 | buildvm.o: $(ALL_DYNGEN) $(DASM_DIR)/dasm_*.h | 542 | host/buildvm.o: $(DASM_DIR)/dasm_*.h |
560 | 543 | ||
561 | $(BUILDVM_T): $(BUILDVM_O) | 544 | $(BUILDVM_T): $(BUILDVM_O) |
562 | $(E) "HOSTLINK $@" | 545 | $(E) "HOSTLINK $@" |