aboutsummaryrefslogtreecommitdiff
path: root/src/Makefile
diff options
context:
space:
mode:
Diffstat (limited to 'src/Makefile')
-rw-r--r--src/Makefile71
1 files changed, 44 insertions, 27 deletions
diff --git a/src/Makefile b/src/Makefile
index 1cddf188..3f25192b 100644
--- a/src/Makefile
+++ b/src/Makefile
@@ -11,8 +11,8 @@
11############################################################################## 11##############################################################################
12 12
13MAJVER= 2 13MAJVER= 2
14MINVER= 0 14MINVER= 1
15RELVER= 4 15RELVER= 0
16ABIVER= 5.1 16ABIVER= 5.1
17NODOTABIVER= 51 17NODOTABIVER= 51
18 18
@@ -44,17 +44,14 @@ CCOPT= -O2 -fomit-frame-pointer
44# 44#
45# Target-specific compiler options: 45# Target-specific compiler options:
46# 46#
47# x86 only: it's recommended to compile at least for i686. Better yet,
48# compile for an architecture that has SSE2, too (-msse -msse2).
49#
50# x86/x64 only: For GCC 4.2 or higher and if you don't intend to distribute 47# x86/x64 only: For GCC 4.2 or higher and if you don't intend to distribute
51# the binaries to a different machine you could also use: -march=native 48# the binaries to a different machine you could also use: -march=native
52# 49#
53CCOPT_x86= -march=i686 50CCOPT_x86= -march=i686 -msse -msse2 -mfpmath=sse
54CCOPT_x64= 51CCOPT_x64=
55CCOPT_arm= 52CCOPT_arm=
53CCOPT_arm64=
56CCOPT_ppc= 54CCOPT_ppc=
57CCOPT_ppcspe=
58CCOPT_mips= 55CCOPT_mips=
59# 56#
60CCDEBUG= 57CCDEBUG=
@@ -190,7 +187,8 @@ endif
190# make HOST_CC="gcc -m32" CROSS=i586-mingw32msvc- TARGET_SYS=Windows 187# make HOST_CC="gcc -m32" CROSS=i586-mingw32msvc- TARGET_SYS=Windows
191# make HOST_CC="gcc -m32" CROSS=powerpc-linux-gnu- 188# make HOST_CC="gcc -m32" CROSS=powerpc-linux-gnu-
192 189
193CCOPTIONS= $(CCDEBUG) $(CCOPT) $(CCWARN) $(XCFLAGS) $(CFLAGS) 190ASOPTIONS= $(CCOPT) $(CCWARN) $(XCFLAGS) $(CFLAGS)
191CCOPTIONS= $(CCDEBUG) $(ASOPTIONS)
194LDOPTIONS= $(CCDEBUG) $(LDFLAGS) 192LDOPTIONS= $(CCDEBUG) $(LDFLAGS)
195 193
196HOST_CC= $(CC) 194HOST_CC= $(CC)
@@ -229,6 +227,7 @@ TARGET_XLDFLAGS=
229TARGET_XLIBS= -lm 227TARGET_XLIBS= -lm
230TARGET_TCFLAGS= $(CCOPTIONS) $(TARGET_XCFLAGS) $(TARGET_FLAGS) $(TARGET_CFLAGS) 228TARGET_TCFLAGS= $(CCOPTIONS) $(TARGET_XCFLAGS) $(TARGET_FLAGS) $(TARGET_CFLAGS)
231TARGET_ACFLAGS= $(CCOPTIONS) $(TARGET_XCFLAGS) $(TARGET_FLAGS) $(TARGET_CFLAGS) 229TARGET_ACFLAGS= $(CCOPTIONS) $(TARGET_XCFLAGS) $(TARGET_FLAGS) $(TARGET_CFLAGS)
230TARGET_ASFLAGS= $(ASOPTIONS) $(TARGET_XCFLAGS) $(TARGET_FLAGS) $(TARGET_CFLAGS)
232TARGET_ALDFLAGS= $(LDOPTIONS) $(TARGET_XLDFLAGS) $(TARGET_FLAGS) $(TARGET_LDFLAGS) 231TARGET_ALDFLAGS= $(LDOPTIONS) $(TARGET_XLDFLAGS) $(TARGET_FLAGS) $(TARGET_LDFLAGS)
233TARGET_ASHLDFLAGS= $(LDOPTIONS) $(TARGET_XSHLDFLAGS) $(TARGET_FLAGS) $(TARGET_SHLDFLAGS) 232TARGET_ASHLDFLAGS= $(LDOPTIONS) $(TARGET_XSHLDFLAGS) $(TARGET_FLAGS) $(TARGET_SHLDFLAGS)
234TARGET_ALIBS= $(TARGET_XLIBS) $(LIBS) $(TARGET_LIBS) 233TARGET_ALIBS= $(TARGET_XLIBS) $(LIBS) $(TARGET_LIBS)
@@ -243,12 +242,17 @@ else
243ifneq (,$(findstring LJ_TARGET_ARM ,$(TARGET_TESTARCH))) 242ifneq (,$(findstring LJ_TARGET_ARM ,$(TARGET_TESTARCH)))
244 TARGET_LJARCH= arm 243 TARGET_LJARCH= arm
245else 244else
245ifneq (,$(findstring LJ_TARGET_ARM64 ,$(TARGET_TESTARCH)))
246 TARGET_LJARCH= arm64
247else
246ifneq (,$(findstring LJ_TARGET_PPC ,$(TARGET_TESTARCH))) 248ifneq (,$(findstring LJ_TARGET_PPC ,$(TARGET_TESTARCH)))
249 ifneq (,$(findstring LJ_LE 1,$(TARGET_TESTARCH)))
250 TARGET_ARCH= -DLJ_ARCH_ENDIAN=LUAJIT_LE
251 else
252 TARGET_ARCH= -DLJ_ARCH_ENDIAN=LUAJIT_BE
253 endif
247 TARGET_LJARCH= ppc 254 TARGET_LJARCH= ppc
248else 255else
249ifneq (,$(findstring LJ_TARGET_PPCSPE ,$(TARGET_TESTARCH)))
250 TARGET_LJARCH= ppcspe
251else
252ifneq (,$(findstring LJ_TARGET_MIPS ,$(TARGET_TESTARCH))) 256ifneq (,$(findstring LJ_TARGET_MIPS ,$(TARGET_TESTARCH)))
253 ifneq (,$(findstring MIPSEL ,$(TARGET_TESTARCH))) 257 ifneq (,$(findstring MIPSEL ,$(TARGET_TESTARCH)))
254 TARGET_ARCH= -D__MIPSEL__=1 258 TARGET_ARCH= -D__MIPSEL__=1
@@ -267,6 +271,7 @@ ifneq (,$(findstring LJ_TARGET_PS3 1,$(TARGET_TESTARCH)))
267 TARGET_SYS= PS3 271 TARGET_SYS= PS3
268 TARGET_ARCH+= -D__CELLOS_LV2__ 272 TARGET_ARCH+= -D__CELLOS_LV2__
269 TARGET_XCFLAGS+= -DLUAJIT_USE_SYSMALLOC 273 TARGET_XCFLAGS+= -DLUAJIT_USE_SYSMALLOC
274 TARGET_XLIBS+= -lpthread
270endif 275endif
271 276
272TARGET_XCFLAGS+= $(CCOPT_$(TARGET_LJARCH)) 277TARGET_XCFLAGS+= $(CCOPT_$(TARGET_LJARCH))
@@ -320,6 +325,9 @@ ifeq (iOS,$(TARGET_SYS))
320 TARGET_XSHLDFLAGS= -dynamiclib -single_module -undefined dynamic_lookup -fPIC 325 TARGET_XSHLDFLAGS= -dynamiclib -single_module -undefined dynamic_lookup -fPIC
321 TARGET_DYNXLDOPTS= 326 TARGET_DYNXLDOPTS=
322 TARGET_XSHLDFLAGS+= -install_name $(TARGET_DYLIBPATH) -compatibility_version $(MAJVER).$(MINVER) -current_version $(MAJVER).$(MINVER).$(RELVER) 327 TARGET_XSHLDFLAGS+= -install_name $(TARGET_DYLIBPATH) -compatibility_version $(MAJVER).$(MINVER) -current_version $(MAJVER).$(MINVER).$(RELVER)
328 ifeq (arm64,$(TARGET_LJARCH))
329 TARGET_XCFLAGS+= -fno-omit-frame-pointer
330 endif
323else 331else
324 ifneq (SunOS,$(TARGET_SYS)) 332 ifneq (SunOS,$(TARGET_SYS))
325 ifneq (PS3,$(TARGET_SYS)) 333 ifneq (PS3,$(TARGET_SYS))
@@ -380,6 +388,11 @@ DASM_XFLAGS=
380DASM_AFLAGS= 388DASM_AFLAGS=
381DASM_ARCH= $(TARGET_LJARCH) 389DASM_ARCH= $(TARGET_LJARCH)
382 390
391ifneq (,$(findstring LJ_LE 1,$(TARGET_TESTARCH)))
392 DASM_AFLAGS+= -D ENDIAN_LE
393else
394 DASM_AFLAGS+= -D ENDIAN_BE
395endif
383ifneq (,$(findstring LJ_ARCH_BITS 64,$(TARGET_TESTARCH))) 396ifneq (,$(findstring LJ_ARCH_BITS 64,$(TARGET_TESTARCH)))
384 DASM_AFLAGS+= -D P64 397 DASM_AFLAGS+= -D P64
385endif 398endif
@@ -412,13 +425,10 @@ DASM_AFLAGS+= -D VER=$(subst LJ_ARCH_VERSION_,,$(filter LJ_ARCH_VERSION_%,$(subs
412ifeq (Windows,$(TARGET_SYS)) 425ifeq (Windows,$(TARGET_SYS))
413 DASM_AFLAGS+= -D WIN 426 DASM_AFLAGS+= -D WIN
414endif 427endif
415ifeq (x86,$(TARGET_LJARCH))
416 ifneq (,$(findstring __SSE2__ 1,$(TARGET_TESTARCH)))
417 DASM_AFLAGS+= -D SSE
418 endif
419else
420ifeq (x64,$(TARGET_LJARCH)) 428ifeq (x64,$(TARGET_LJARCH))
421 DASM_ARCH= x86 429 ifeq (,$(findstring LJ_FR2 1,$(TARGET_TESTARCH)))
430 DASM_ARCH= x86
431 endif
422else 432else
423ifeq (arm,$(TARGET_LJARCH)) 433ifeq (arm,$(TARGET_LJARCH))
424 ifeq (iOS,$(TARGET_SYS)) 434 ifeq (iOS,$(TARGET_SYS))
@@ -432,13 +442,15 @@ ifeq (ppc,$(TARGET_LJARCH))
432 ifneq (,$(findstring LJ_ARCH_ROUND 1,$(TARGET_TESTARCH))) 442 ifneq (,$(findstring LJ_ARCH_ROUND 1,$(TARGET_TESTARCH)))
433 DASM_AFLAGS+= -D ROUND 443 DASM_AFLAGS+= -D ROUND
434 endif 444 endif
435 ifneq (,$(findstring LJ_ARCH_PPC64 1,$(TARGET_TESTARCH))) 445 ifneq (,$(findstring LJ_ARCH_PPC32ON64 1,$(TARGET_TESTARCH)))
436 DASM_AFLAGS+= -D GPR64 446 DASM_AFLAGS+= -D GPR64
437 endif 447 endif
438 ifeq (PS3,$(TARGET_SYS)) 448 ifeq (PS3,$(TARGET_SYS))
439 DASM_AFLAGS+= -D PPE -D TOC 449 DASM_AFLAGS+= -D PPE -D TOC
440 endif 450 endif
441endif 451 ifneq (,$(findstring LJ_ARCH_PPC64 ,$(TARGET_TESTARCH)))
452 DASM_ARCH= ppc64
453 endif
442endif 454endif
443endif 455endif
444endif 456endif
@@ -454,7 +466,7 @@ BUILDVM_X= $(BUILDVM_T)
454HOST_O= $(MINILUA_O) $(BUILDVM_O) 466HOST_O= $(MINILUA_O) $(BUILDVM_O)
455HOST_T= $(MINILUA_T) $(BUILDVM_T) 467HOST_T= $(MINILUA_T) $(BUILDVM_T)
456 468
457LJVM_S= lj_vm.s 469LJVM_S= lj_vm.S
458LJVM_O= lj_vm.o 470LJVM_O= lj_vm.o
459LJVM_BOUT= $(LJVM_S) 471LJVM_BOUT= $(LJVM_S)
460LJVM_MODE= elfasm 472LJVM_MODE= elfasm
@@ -463,10 +475,11 @@ LJLIB_O= lib_base.o lib_math.o lib_bit.o lib_string.o lib_table.o \
463 lib_io.o lib_os.o lib_package.o lib_debug.o lib_jit.o lib_ffi.o 475 lib_io.o lib_os.o lib_package.o lib_debug.o lib_jit.o lib_ffi.o
464LJLIB_C= $(LJLIB_O:.o=.c) 476LJLIB_C= $(LJLIB_O:.o=.c)
465 477
466LJCORE_O= lj_gc.o lj_err.o lj_char.o lj_bc.o lj_obj.o \ 478LJCORE_O= lj_gc.o lj_err.o lj_char.o lj_bc.o lj_obj.o lj_buf.o \
467 lj_str.o lj_tab.o lj_func.o lj_udata.o lj_meta.o lj_debug.o \ 479 lj_str.o lj_tab.o lj_func.o lj_udata.o lj_meta.o lj_debug.o \
468 lj_state.o lj_dispatch.o lj_vmevent.o lj_vmmath.o lj_strscan.o \ 480 lj_state.o lj_dispatch.o lj_vmevent.o lj_vmmath.o lj_strscan.o \
469 lj_api.o lj_lex.o lj_parse.o lj_bcread.o lj_bcwrite.o lj_load.o \ 481 lj_strfmt.o lj_strfmt_num.o lj_api.o lj_profile.o \
482 lj_lex.o lj_parse.o lj_bcread.o lj_bcwrite.o lj_load.o \
470 lj_ir.o lj_opt_mem.o lj_opt_fold.o lj_opt_narrow.o \ 483 lj_ir.o lj_opt_mem.o lj_opt_fold.o lj_opt_narrow.o \
471 lj_opt_dce.o lj_opt_loop.o lj_opt_split.o lj_opt_sink.o \ 484 lj_opt_dce.o lj_opt_loop.o lj_opt_split.o lj_opt_sink.o \
472 lj_mcode.o lj_snap.o lj_record.o lj_crecord.o lj_ffrecord.o \ 485 lj_mcode.o lj_snap.o lj_record.o lj_crecord.o lj_ffrecord.o \
@@ -586,6 +599,10 @@ amalg:
586clean: 599clean:
587 $(HOST_RM) $(ALL_RM) 600 $(HOST_RM) $(ALL_RM)
588 601
602libbc:
603 ./$(LUAJIT_T) host/genlibbc.lua -o host/buildvm_libbc.h $(LJLIB_C)
604 $(MAKE) all
605
589depend: 606depend:
590 @for file in $(ALL_HDRGEN); do \ 607 @for file in $(ALL_HDRGEN); do \
591 test -f $$file || touch $$file; \ 608 test -f $$file || touch $$file; \
@@ -600,7 +617,7 @@ depend:
600 test -s $$file || $(HOST_RM) $$file; \ 617 test -s $$file || $(HOST_RM) $$file; \
601 done 618 done
602 619
603.PHONY: default all amalg clean depend 620.PHONY: default all amalg clean libbc depend
604 621
605############################################################################## 622##############################################################################
606# Rules for generated files. 623# Rules for generated files.
@@ -610,7 +627,7 @@ $(MINILUA_T): $(MINILUA_O)
610 $(E) "HOSTLINK $@" 627 $(E) "HOSTLINK $@"
611 $(Q)$(HOST_CC) $(HOST_ALDFLAGS) -o $@ $(MINILUA_O) $(MINILUA_LIBS) $(HOST_ALIBS) 628 $(Q)$(HOST_CC) $(HOST_ALDFLAGS) -o $@ $(MINILUA_O) $(MINILUA_LIBS) $(HOST_ALIBS)
612 629
613host/buildvm_arch.h: $(DASM_DASC) $(DASM_DEP) 630host/buildvm_arch.h: $(DASM_DASC) $(DASM_DEP) $(DASM_DIR)/*.lua
614 $(E) "DYNASM $@" 631 $(E) "DYNASM $@"
615 $(Q)$(DASM) $(DASM_FLAGS) -o $@ $(DASM_DASC) 632 $(Q)$(DASM) $(DASM_FLAGS) -o $@ $(DASM_DASC)
616 633
@@ -657,10 +674,10 @@ lj_folddef.h: $(BUILDVM_T) lj_opt_fold.c
657 $(Q)$(TARGET_DYNCC) $(TARGET_ACFLAGS) -c -o $(@:.o=_dyn.o) $< 674 $(Q)$(TARGET_DYNCC) $(TARGET_ACFLAGS) -c -o $(@:.o=_dyn.o) $<
658 $(Q)$(TARGET_CC) $(TARGET_ACFLAGS) -c -o $@ $< 675 $(Q)$(TARGET_CC) $(TARGET_ACFLAGS) -c -o $@ $<
659 676
660%.o: %.s 677%.o: %.S
661 $(E) "ASM $@" 678 $(E) "ASM $@"
662 $(Q)$(TARGET_DYNCC) $(TARGET_ACFLAGS) -c -o $(@:.o=_dyn.o) $< 679 $(Q)$(TARGET_DYNCC) $(TARGET_ASFLAGS) -c -o $(@:.o=_dyn.o) $<
663 $(Q)$(TARGET_CC) $(TARGET_ACFLAGS) -c -o $@ $< 680 $(Q)$(TARGET_CC) $(TARGET_ASFLAGS) -c -o $@ $<
664 681
665$(LUAJIT_O): 682$(LUAJIT_O):
666 $(E) "CC $@" 683 $(E) "CC $@"