diff options
author | Mike Pall <mike> | 2009-12-08 22:27:14 +0100 |
---|---|---|
committer | Mike Pall <mike> | 2009-12-08 22:27:14 +0100 |
commit | ec2442862fa684851ce38de5a837adee0725329e (patch) | |
tree | fd01217ab6b487fd087089d8c94675b4f1a416ed | |
parent | 6163a90d6d09e53e8a22079e95af5ecc8b97e9cc (diff) | |
download | luajit-ec2442862fa684851ce38de5a837adee0725329e.tar.gz luajit-ec2442862fa684851ce38de5a837adee0725329e.tar.bz2 luajit-ec2442862fa684851ce38de5a837adee0725329e.zip |
Reorg Makefile to allow more overrides on the make command line.
-rw-r--r-- | src/Makefile | 74 |
1 files changed, 41 insertions, 33 deletions
diff --git a/src/Makefile b/src/Makefile index a4a8152b..cd246af8 100644 --- a/src/Makefile +++ b/src/Makefile | |||
@@ -110,9 +110,20 @@ BUILDMODE= mixed | |||
110 | # Flags and options for host and target. | 110 | # Flags and options for host and target. |
111 | ############################################################################## | 111 | ############################################################################## |
112 | 112 | ||
113 | CCOPTIONS= $(CCDEBUG) $(CCOPT) $(CCWARN) $(CFLAGS) $(XCFLAGS) | 113 | # You may also override the following variables at the make command line: |
114 | # CC HOST_CC STATIC_CC DYNAMIC_CC | ||
115 | # CFLAGS HOST_CFLAGS TARGET_CFLAGS | ||
116 | # LDFLAGS HOST_LDFLAGS TARGET_LDFLAGS TARGET_SHLDFLAGS | ||
117 | # LIBS HOST_LIBS TARGET_LIBS | ||
118 | # CROSS HOST_SYS TARGET_SYS | ||
119 | # | ||
120 | # Cross-compilation example: make CROSS=i586-mingw32msvc- TARGET_SYS=Windows | ||
121 | |||
122 | CCOPTIONS= $(CCDEBUG) $(CCOPT) $(CCWARN) $(XCFLAGS) $(CFLAGS) | ||
114 | LDOPTIONS= $(CCDEBUG) $(LDFLAGS) | 123 | LDOPTIONS= $(CCDEBUG) $(LDFLAGS) |
115 | 124 | ||
125 | TARGET_ARCH= $(patsubst %,-DLUAJIT_TARGET=LUAJIT_ARCH_%,$(TARGET)) | ||
126 | |||
116 | HOST_CC= $(CC) | 127 | HOST_CC= $(CC) |
117 | HOST_RM= rm -f | 128 | HOST_RM= rm -f |
118 | # NOTE: The LuaJIT distribution comes with a pre-generated buildvm_*.h. | 129 | # NOTE: The LuaJIT distribution comes with a pre-generated buildvm_*.h. |
@@ -124,12 +135,10 @@ HOST_LUA= lua | |||
124 | HOST_XCFLAGS= | 135 | HOST_XCFLAGS= |
125 | HOST_XLDFLAGS= | 136 | HOST_XLDFLAGS= |
126 | HOST_XLIBS= | 137 | HOST_XLIBS= |
127 | HOST_CFLAGS= $(CCOPTIONS) $(HOST_XCFLAGS) $(TARGET_ARCH) | 138 | HOST_ACFLAGS= $(CCOPTIONS) $(HOST_XCFLAGS) $(TARGET_ARCH) $(HOST_CFLAGS) |
128 | HOST_LDFLAGS= $(LDOPTIONS) $(HOST_XLDFLAGS) | 139 | HOST_ALDFLAGS= $(LDOPTIONS) $(HOST_XLDFLAGS) $(HOST_LDFLAGS) |
129 | HOST_LIBS= $(HOST_XLIBS) | 140 | HOST_ALIBS= $(HOST_XLIBS) $(LIBS) $(HOST_LIBS) |
130 | 141 | ||
131 | # Cross-compilation example: make CROSS=i586-mingw32msvc- TARGET_SYS=Windows | ||
132 | CROSS= | ||
133 | STATIC_CC = $(CROSS)$(CC) | 142 | STATIC_CC = $(CROSS)$(CC) |
134 | DYNAMIC_CC = $(CROSS)$(CC) -fPIC | 143 | DYNAMIC_CC = $(CROSS)$(CC) -fPIC |
135 | TARGET_CC= $(STATIC_CC) | 144 | TARGET_CC= $(STATIC_CC) |
@@ -145,21 +154,18 @@ TARGET_DLLNAME= lua$(NODOTABIVER).dll | |||
145 | TARGET_XSHLDFLAGS= -shared -fPIC -Wl,-soname,$(TARGET_SONAME) | 154 | TARGET_XSHLDFLAGS= -shared -fPIC -Wl,-soname,$(TARGET_SONAME) |
146 | TARGET_DYNXLDOPTS= | 155 | TARGET_DYNXLDOPTS= |
147 | 156 | ||
148 | TARGET_ARCH= $(patsubst %,-DLUAJIT_TARGET=LUAJIT_ARCH_%,$(TARGET)) | 157 | TARGET_XCFLAGS= -D_FILE_OFFSET_BITS=64 -U_FORTIFY_SOURCE |
149 | TARGET_DISABLE= -U_FORTIFY_SOURCE | 158 | TARGET_XLDFLAGS= |
159 | TARGET_XLIBS= -lm | ||
160 | TARGET_ACFLAGS= $(CCOPTIONS) $(TARGET_XCFLAGS) $(TARGET_ARCH) $(TARGET_CFLAGS) | ||
161 | TARGET_ALDFLAGS= $(LDOPTIONS) $(TARGET_XLDFLAGS) $(TARGET_LDFLAGS) | ||
162 | TARGET_ASHLDFLAGS= $(LDOPTIONS) $(TARGET_XSHLDFLAGS) $(TARGET_SHLDFLAGS) | ||
163 | TARGET_ALIBS= $(TARGET_XLIBS) $(LIBS) $(TARGET_LIBS) | ||
164 | |||
150 | ifneq (,$(findstring stack-protector,$(shell $(TARGET_CC) -dumpspecs))) | 165 | ifneq (,$(findstring stack-protector,$(shell $(TARGET_CC) -dumpspecs))) |
151 | TARGET_DISABLE+= -fno-stack-protector | 166 | TARGET_XCFLAGS+= -fno-stack-protector |
152 | endif | 167 | endif |
153 | 168 | ||
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)) | 169 | ifneq (,$(PREFIX)) |
164 | ifneq (/usr/local,$(PREFIX)) | 170 | ifneq (/usr/local,$(PREFIX)) |
165 | TARGET_XCFLAGS+= -DLUA_XROOT=\"$(PREFIX)/\" | 171 | TARGET_XCFLAGS+= -DLUA_XROOT=\"$(PREFIX)/\" |
@@ -201,9 +207,9 @@ ifeq (Darwin,$(TARGET_SYS)) | |||
201 | TARGET_XSHLDFLAGS+= -install_name $(PREFIX)/lib/$(TARGET_DYLIBNAME) | 207 | TARGET_XSHLDFLAGS+= -install_name $(PREFIX)/lib/$(TARGET_DYLIBNAME) |
202 | endif | 208 | endif |
203 | else | 209 | else |
204 | TARGET_XLDFLAGS= -Wl,-E | 210 | TARGET_XLDFLAGS+= -Wl,-E |
205 | ifeq (Linux,$(TARGET_SYS)) | 211 | ifeq (Linux,$(TARGET_SYS)) |
206 | TARGET_XLIBS= -ldl | 212 | TARGET_XLIBS+= -ldl |
207 | endif | 213 | endif |
208 | endif | 214 | endif |
209 | endif | 215 | endif |
@@ -278,7 +284,7 @@ ifeq (Windows,$(HOST_SYS)) | |||
278 | LIB_VMDEFP= $(subst /,\\,$(LIB_VMDEF)) | 284 | LIB_VMDEFP= $(subst /,\\,$(LIB_VMDEF)) |
279 | endif | 285 | endif |
280 | ifeq (Windows,$(TARGET_SYS)) | 286 | ifeq (Windows,$(TARGET_SYS)) |
281 | DYNAMIC_CC= $(STATIC_CC) | 287 | TARGET_DYNCC= $(STATIC_CC) |
282 | LJVM_BOUT= $(LJVM_O) | 288 | LJVM_BOUT= $(LJVM_O) |
283 | LJVM_MODE= peobj | 289 | LJVM_MODE= peobj |
284 | LUAJIT_SO= $(TARGET_DLLNAME) | 290 | LUAJIT_SO= $(TARGET_DLLNAME) |
@@ -303,11 +309,13 @@ ifeq (static,$(BUILDMODE)) | |||
303 | TARGET_DEP= $(LIB_VMDEF) | 309 | TARGET_DEP= $(LIB_VMDEF) |
304 | else | 310 | else |
305 | ifeq (dynamic,$(BUILDMODE)) | 311 | ifeq (dynamic,$(BUILDMODE)) |
306 | TARGET_CC= $(DYNAMIC_CC) | 312 | ifneq (Windows,$(TARGET_SYS)) |
313 | TARGET_CC= $(DYNAMIC_CC) | ||
314 | endif | ||
307 | TARGET_DYNCC= @: | 315 | TARGET_DYNCC= @: |
308 | LJVMCORE_DYNO= $(LJVMCORE_O) | 316 | LJVMCORE_DYNO= $(LJVMCORE_O) |
309 | TARGET_O= $(LUAJIT_SO) | 317 | TARGET_O= $(LUAJIT_SO) |
310 | TARGET_XLDOPTS= $(TARGET_DYNXLDOPTS) | 318 | TARGET_XLDFLAGS+= $(TARGET_DYNXLDOPTS) |
311 | else | 319 | else |
312 | ifeq (Darwin,$(TARGET_SYS)) | 320 | ifeq (Darwin,$(TARGET_SYS)) |
313 | TARGET_DYNCC= @: | 321 | TARGET_DYNCC= @: |
@@ -347,7 +355,7 @@ depend: | |||
347 | @test -f lj_recdef.h || touch lj_recdef.h | 355 | @test -f lj_recdef.h || touch lj_recdef.h |
348 | @test -f lj_folddef.h || touch lj_folddef.h | 356 | @test -f lj_folddef.h || touch lj_folddef.h |
349 | @test -f buildvm_x86.h || touch buildvm_x86.h | 357 | @test -f buildvm_x86.h || touch buildvm_x86.h |
350 | @$(HOST_CC) $(HOST_CFLAGS) -MM *.c | sed "s|$(DASM_DIR)|\$$(DASM_DIR)|g" >Makefile.dep | 358 | @$(HOST_CC) $(HOST_ACFLAGS) -MM *.c | sed "s|$(DASM_DIR)|\$$(DASM_DIR)|g" >Makefile.dep |
351 | @test -s lj_ffdef.h || $(HOST_RM) lj_ffdef.h | 359 | @test -s lj_ffdef.h || $(HOST_RM) lj_ffdef.h |
352 | @test -s lj_libdef.h || $(HOST_RM) lj_libdef.h | 360 | @test -s lj_libdef.h || $(HOST_RM) lj_libdef.h |
353 | @test -s lj_recdef.h || $(HOST_RM) lj_recdef.h | 361 | @test -s lj_recdef.h || $(HOST_RM) lj_recdef.h |
@@ -366,7 +374,7 @@ buildvm_x86.h: buildvm_x86.dasc | |||
366 | 374 | ||
367 | $(BUILDVM_T): $(BUILDVM_O) | 375 | $(BUILDVM_T): $(BUILDVM_O) |
368 | $(E) "HOSTLINK $@" | 376 | $(E) "HOSTLINK $@" |
369 | $(Q)$(HOST_CC) $(HOST_LDFLAGS) -o $@ $(BUILDVM_O) $(HOST_LIBS) | 377 | $(Q)$(HOST_CC) $(HOST_ALDFLAGS) -o $@ $(BUILDVM_O) $(HOST_ALIBS) |
370 | 378 | ||
371 | $(LJVM_BOUT): $(BUILDVM_T) | 379 | $(LJVM_BOUT): $(BUILDVM_T) |
372 | $(E) "BUILDVM $@" | 380 | $(E) "BUILDVM $@" |
@@ -398,21 +406,21 @@ lj_folddef.h: $(BUILDVM_T) lj_opt_fold.c | |||
398 | 406 | ||
399 | %.o: %.c | 407 | %.o: %.c |
400 | $(E) "CC $@" | 408 | $(E) "CC $@" |
401 | $(Q)$(TARGET_DYNCC) $(TARGET_CFLAGS) -c -o $(@:.o=_dyn.o) $< | 409 | $(Q)$(TARGET_DYNCC) $(TARGET_ACFLAGS) -c -o $(@:.o=_dyn.o) $< |
402 | $(Q)$(TARGET_CC) $(TARGET_CFLAGS) -c -o $@ $< | 410 | $(Q)$(TARGET_CC) $(TARGET_ACFLAGS) -c -o $@ $< |
403 | 411 | ||
404 | %.o: %.s | 412 | %.o: %.s |
405 | $(E) "ASM $@" | 413 | $(E) "ASM $@" |
406 | $(Q)$(TARGET_DYNCC) $(TARGET_CFLAGS) -c -o $(@:.o=_dyn.o) $< | 414 | $(Q)$(TARGET_DYNCC) $(TARGET_ACFLAGS) -c -o $(@:.o=_dyn.o) $< |
407 | $(Q)$(TARGET_CC) $(TARGET_CFLAGS) -c -o $@ $< | 415 | $(Q)$(TARGET_CC) $(TARGET_ACFLAGS) -c -o $@ $< |
408 | 416 | ||
409 | $(LUAJIT_O): | 417 | $(LUAJIT_O): |
410 | $(E) "CC $@" | 418 | $(E) "CC $@" |
411 | $(Q)$(TARGET_STCC) $(TARGET_CFLAGS) -c -o $@ $< | 419 | $(Q)$(TARGET_STCC) $(TARGET_ACFLAGS) -c -o $@ $< |
412 | 420 | ||
413 | $(HOST_O): %.o: %.c | 421 | $(HOST_O): %.o: %.c |
414 | $(E) "HOSTCC $@" | 422 | $(E) "HOSTCC $@" |
415 | $(Q)$(HOST_CC) $(HOST_CFLAGS) -c -o $@ $< | 423 | $(Q)$(HOST_CC) $(HOST_ACFLAGS) -c -o $@ $< |
416 | 424 | ||
417 | include Makefile.dep | 425 | include Makefile.dep |
418 | 426 | ||
@@ -427,12 +435,12 @@ $(LUAJIT_A): $(LJVMCORE_O) | |||
427 | # The dependency on _O, but linking with _DYNO is intentional. | 435 | # The dependency on _O, but linking with _DYNO is intentional. |
428 | $(LUAJIT_SO): $(LJVMCORE_O) | 436 | $(LUAJIT_SO): $(LJVMCORE_O) |
429 | $(E) "DYNLINK $@" | 437 | $(E) "DYNLINK $@" |
430 | $(Q)$(TARGET_LD) $(TARGET_SHLDFLAGS) -o $@ $(LJVMCORE_DYNO) $(TARGET_LIBS) | 438 | $(Q)$(TARGET_LD) $(TARGET_ASHLDFLAGS) -o $@ $(LJVMCORE_DYNO) $(TARGET_ALIBS) |
431 | $(Q)$(TARGET_STRIP) $@ | 439 | $(Q)$(TARGET_STRIP) $@ |
432 | 440 | ||
433 | $(LUAJIT_T): $(TARGET_O) $(LUAJIT_O) $(TARGET_DEP) | 441 | $(LUAJIT_T): $(TARGET_O) $(LUAJIT_O) $(TARGET_DEP) |
434 | $(E) "LINK $@" | 442 | $(E) "LINK $@" |
435 | $(Q)$(TARGET_LD) $(TARGET_LDFLAGS) -o $@ $(LUAJIT_O) $(TARGET_O) $(TARGET_LIBS) | 443 | $(Q)$(TARGET_LD) $(TARGET_ALDFLAGS) -o $@ $(LUAJIT_O) $(TARGET_O) $(TARGET_ALIBS) |
436 | $(Q)$(TARGET_STRIP) $@ | 444 | $(Q)$(TARGET_STRIP) $@ |
437 | $(E) "OK Successfully built LuaJIT" | 445 | $(E) "OK Successfully built LuaJIT" |
438 | 446 | ||