diff options
| author | Mike Pall <mike> | 2012-06-09 15:04:03 +0200 |
|---|---|---|
| committer | Mike Pall <mike> | 2012-06-09 15:12:44 +0200 |
| commit | 9a9509c66a98d0bf42003ad5d06e8f275c5ff1f5 (patch) | |
| tree | f5ca35d9ed7cc66f644828233f511f6db4634849 /src/Makefile | |
| parent | 0a6c8338d240dd318db2f5269414dcf7ddc9ed35 (diff) | |
| download | luajit-9a9509c66a98d0bf42003ad5d06e8f275c5ff1f5.tar.gz luajit-9a9509c66a98d0bf42003ad5d06e8f275c5ff1f5.tar.bz2 luajit-9a9509c66a98d0bf42003ad5d06e8f275c5ff1f5.zip | |
Reorganize build process.
Drop pre-translated buildvm_*.h.
Rename buildvm_*.dasc to vm_*.dasc.
Move buildvm* to host directory.
Build minilua, unless HOST_LUA is set.
Use HOST_LUA to run DynASM.
Translate only vm_*.dasc for target architecture.
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 $@" |
