aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Pall <mike>2009-12-08 22:27:14 +0100
committerMike Pall <mike>2009-12-08 22:27:14 +0100
commitec2442862fa684851ce38de5a837adee0725329e (patch)
treefd01217ab6b487fd087089d8c94675b4f1a416ed
parent6163a90d6d09e53e8a22079e95af5ecc8b97e9cc (diff)
downloadluajit-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/Makefile74
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
113CCOPTIONS= $(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
122CCOPTIONS= $(CCDEBUG) $(CCOPT) $(CCWARN) $(XCFLAGS) $(CFLAGS)
114LDOPTIONS= $(CCDEBUG) $(LDFLAGS) 123LDOPTIONS= $(CCDEBUG) $(LDFLAGS)
115 124
125TARGET_ARCH= $(patsubst %,-DLUAJIT_TARGET=LUAJIT_ARCH_%,$(TARGET))
126
116HOST_CC= $(CC) 127HOST_CC= $(CC)
117HOST_RM= rm -f 128HOST_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
124HOST_XCFLAGS= 135HOST_XCFLAGS=
125HOST_XLDFLAGS= 136HOST_XLDFLAGS=
126HOST_XLIBS= 137HOST_XLIBS=
127HOST_CFLAGS= $(CCOPTIONS) $(HOST_XCFLAGS) $(TARGET_ARCH) 138HOST_ACFLAGS= $(CCOPTIONS) $(HOST_XCFLAGS) $(TARGET_ARCH) $(HOST_CFLAGS)
128HOST_LDFLAGS= $(LDOPTIONS) $(HOST_XLDFLAGS) 139HOST_ALDFLAGS= $(LDOPTIONS) $(HOST_XLDFLAGS) $(HOST_LDFLAGS)
129HOST_LIBS= $(HOST_XLIBS) 140HOST_ALIBS= $(HOST_XLIBS) $(LIBS) $(HOST_LIBS)
130 141
131# Cross-compilation example: make CROSS=i586-mingw32msvc- TARGET_SYS=Windows
132CROSS=
133STATIC_CC = $(CROSS)$(CC) 142STATIC_CC = $(CROSS)$(CC)
134DYNAMIC_CC = $(CROSS)$(CC) -fPIC 143DYNAMIC_CC = $(CROSS)$(CC) -fPIC
135TARGET_CC= $(STATIC_CC) 144TARGET_CC= $(STATIC_CC)
@@ -145,21 +154,18 @@ TARGET_DLLNAME= lua$(NODOTABIVER).dll
145TARGET_XSHLDFLAGS= -shared -fPIC -Wl,-soname,$(TARGET_SONAME) 154TARGET_XSHLDFLAGS= -shared -fPIC -Wl,-soname,$(TARGET_SONAME)
146TARGET_DYNXLDOPTS= 155TARGET_DYNXLDOPTS=
147 156
148TARGET_ARCH= $(patsubst %,-DLUAJIT_TARGET=LUAJIT_ARCH_%,$(TARGET)) 157TARGET_XCFLAGS= -D_FILE_OFFSET_BITS=64 -U_FORTIFY_SOURCE
149TARGET_DISABLE= -U_FORTIFY_SOURCE 158TARGET_XLDFLAGS=
159TARGET_XLIBS= -lm
160TARGET_ACFLAGS= $(CCOPTIONS) $(TARGET_XCFLAGS) $(TARGET_ARCH) $(TARGET_CFLAGS)
161TARGET_ALDFLAGS= $(LDOPTIONS) $(TARGET_XLDFLAGS) $(TARGET_LDFLAGS)
162TARGET_ASHLDFLAGS= $(LDOPTIONS) $(TARGET_XSHLDFLAGS) $(TARGET_SHLDFLAGS)
163TARGET_ALIBS= $(TARGET_XLIBS) $(LIBS) $(TARGET_LIBS)
164
150ifneq (,$(findstring stack-protector,$(shell $(TARGET_CC) -dumpspecs))) 165ifneq (,$(findstring stack-protector,$(shell $(TARGET_CC) -dumpspecs)))
151 TARGET_DISABLE+= -fno-stack-protector 166 TARGET_XCFLAGS+= -fno-stack-protector
152endif 167endif
153 168
154TARGET_XCFLAGS= -D_FILE_OFFSET_BITS=64
155TARGET_XLDFLAGS=
156TARGET_XLDOPTS=
157TARGET_XLIBS=
158TARGET_CFLAGS= $(CCOPTIONS) $(TARGET_DISABLE) $(TARGET_XCFLAGS)
159TARGET_LDFLAGS= $(LDOPTIONS) $(TARGET_XLDFLAGS) $(TARGET_XLDOPTS)
160TARGET_SHLDFLAGS= $(LDOPTIONS) $(TARGET_XSHLDFLAGS)
161TARGET_LIBS= -lm $(TARGET_XLIBS)
162
163ifneq (,$(PREFIX)) 169ifneq (,$(PREFIX))
164ifneq (/usr/local,$(PREFIX)) 170ifneq (/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
203else 209else
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
208endif 214endif
209endif 215endif
@@ -278,7 +284,7 @@ ifeq (Windows,$(HOST_SYS))
278 LIB_VMDEFP= $(subst /,\\,$(LIB_VMDEF)) 284 LIB_VMDEFP= $(subst /,\\,$(LIB_VMDEF))
279endif 285endif
280ifeq (Windows,$(TARGET_SYS)) 286ifeq (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)
304else 310else
305ifeq (dynamic,$(BUILDMODE)) 311ifeq (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)
311else 319else
312ifeq (Darwin,$(TARGET_SYS)) 320ifeq (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
417include Makefile.dep 425include 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