History

build: restore out-of-tree support

grischka committed 10 years ago

Commit afdbc5b1 parent 0a624786 files · +58 −48Browse files

Unified · Split

6 files
  1. Makefile +15 −14
  2. configure +8 −4
  3. lib/Makefile +8 −8
  4. tests/Makefile +8 −8
  5. tests/pp/Makefile +8 −3
  6. tests/tests2/Makefile +11 −11
Makefile+15−14
@@ -4,7 +4,8 @@ · 3 unmodified lines
4 4
5TOP ?= .5TOP ?= .
6include $(TOP)/config.mak6include $(TOP)/config.mak
7VPATH = $(TOP)7VPATH = $(TOPSRC)
8CFLAGS += -I$(TOP)
8 9
9ifeq (-$(findstring gcc,$(CC))-,-gcc-)10ifeq (-$(findstring gcc,$(CC))-,-gcc-)
10 ifeq (-$(GCC_MAJOR)-$(findstring $(GCC_MINOR),56789)-,-4--)11 ifeq (-$(GCC_MAJOR)-$(findstring $(GCC_MINOR),56789)-,-4--)
@@ -206,7 +207,7 @@ libtcc.dll : $(LIBTCC_OBJ) tiny_impdef$(EXESUF) · 195 unmodified lines
206libtcc.dll : NATIVE_DEFINES += -DLIBTCC_AS_DLL207libtcc.dll : NATIVE_DEFINES += -DLIBTCC_AS_DLL
207 208
208# windows : utilities209# windows : utilities
209tiny_%$(EXESUF): $(SRCTOP)/win32/tools/tiny_%.c210tiny_%$(EXESUF): $(TOPSRC)/win32/tools/tiny_%.c
210 $(CC) -o $@ $< $(CFLAGS) $(LDFLAGS) $(NATIVE_DEFINES)211 $(CC) -o $@ $< $(CFLAGS) $(LDFLAGS) $(NATIVE_DEFINES)
211 212
212ifneq ($(LIBTCC1),)213ifneq ($(LIBTCC1),)
@@ -246,21 +247,21 @@ install: $(PROGS) $(TCCLIBS) $(TCCDOCS) · 33 unmodified lines
246ifneq ($(LIBTCC1),)247ifneq ($(LIBTCC1),)
247 $(INSTALL) -m644 $(LIBTCC1) "$(tccdir)"248 $(INSTALL) -m644 $(LIBTCC1) "$(tccdir)"
248endif249endif
249 $(INSTALL) -m644 $(addprefix include/,$(TCC_INCLUDES)) tcclib.h "$(tccdir)/include"250 $(INSTALL) -m644 $(addprefix $(TOPSRC)/include/,$(TCC_INCLUDES)) $(TOPSRC)/tcclib.h "$(tccdir)/include"
250 mkdir -p "$(libdir)"251 mkdir -p "$(libdir)"
251 $(INSTALL) -m644 $(LIBTCC) "$(libdir)"252 $(INSTALL) -m644 $(LIBTCC) "$(libdir)"
252 mkdir -p "$(includedir)"253 mkdir -p "$(includedir)"
253 $(INSTALL) -m644 libtcc.h "$(includedir)"254 $(INSTALL) -m644 $(TOPSRC)/libtcc.h "$(includedir)"
254 mkdir -p "$(docdir)"255 mkdir -p "$(docdir)"
255 -$(INSTALL) -m644 tcc-doc.html "$(docdir)"256 -$(INSTALL) -m644 tcc-doc.html "$(docdir)"
256ifdef CONFIG_CROSS257ifdef CONFIG_CROSS
257 mkdir -p "$(tccdir)/win32/lib/32"258 mkdir -p "$(tccdir)/win32/lib/32"
258 mkdir -p "$(tccdir)/win32/lib/64"259 mkdir -p "$(tccdir)/win32/lib/64"
259 $(INSTALL) -m644 win32/lib/*.def "$(tccdir)/win32/lib"260 $(INSTALL) -m644 $(TOPSRC)/win32/lib/*.def "$(tccdir)/win32/lib"
260 -$(INSTALL) -m644 lib/i386-win32/libtcc1.a "$(tccdir)/win32/lib/32"261 -$(INSTALL) -m644 lib/i386-win32/libtcc1.a "$(tccdir)/win32/lib/32"
261 -$(INSTALL) -m644 lib/x86_64-win32/libtcc1.a "$(tccdir)/win32/lib/64"262 -$(INSTALL) -m644 lib/x86_64-win32/libtcc1.a "$(tccdir)/win32/lib/64"
262 cp -r win32/include/. "$(tccdir)/win32/include"263 cp -r $(TOPSRC)/include/. "$(tccdir)/win32/include"
263 cp -r "$(tccdir)/include" "$(tccdir)/win32"264 cp -r $(TOPSRC)/win32/include/. "$(tccdir)/win32/include"
264endif265endif
265 266
266uninstall:267uninstall:
@@ -282,13 +283,13 @@ install: $(PROGS) $(TCCLIBS) $(TCCDOCS) · 15 unmodified lines
282 mkdir -p "$(tccdir)/doc"283 mkdir -p "$(tccdir)/doc"
283 mkdir -p "$(tccdir)/libtcc"284 mkdir -p "$(tccdir)/libtcc"
284 $(INSTALLBIN) -m755 $(PROGS) $(LIBTCC) "$(tccdir)"285 $(INSTALLBIN) -m755 $(PROGS) $(LIBTCC) "$(tccdir)"
285 $(INSTALL) -m644 libtcc1.a win32/lib/*.def "$(tccdir)/lib"286 $(INSTALL) -m644 libtcc1.a $(TOPSRC)/win32/lib/*.def "$(tccdir)/lib"
286 cp -r win32/include/. "$(tccdir)/include"287 cp -r $(TOPSRC)/win32/include/. "$(tccdir)/include"
287 cp -r win32/examples/. "$(tccdir)/examples"288 cp -r $(TOPSRC)/win32/examples/. "$(tccdir)/examples"
288 cp tests/libtcc_test.c "$(tccdir)/examples"289 cp $(TOPSRC)/tests/libtcc_test.c "$(tccdir)/examples"
289 $(INSTALL) -m644 $(addprefix include/,$(TCC_INCLUDES)) tcclib.h "$(tccdir)/include"290 $(INSTALL) -m644 $(addprefix $(TOPSRC)/include/,$(TCC_INCLUDES)) $(TOPSRC)/tcclib.h "$(tccdir)/include"
290 $(INSTALL) -m644 tcc-doc.html win32/tcc-win32.txt "$(tccdir)/doc"291 $(INSTALL) -m644 tcc-doc.html $(TOPSRC)/win32/tcc-win32.txt "$(tccdir)/doc"
291 $(INSTALL) -m644 libtcc.h libtcc.def "$(tccdir)/libtcc"292 $(INSTALL) -m644 $(TOPSRC)/libtcc.h libtcc.def "$(tccdir)/libtcc"
292ifdef CONFIG_CROSS293ifdef CONFIG_CROSS
293 mkdir -p "$(tccdir)/lib/32"294 mkdir -p "$(tccdir)/lib/32"
294 mkdir -p "$(tccdir)/lib/64"295 mkdir -p "$(tccdir)/lib/64"
configure+8−4
@@ -519,11 +519,11 @@ echo "@set VERSION $version" > config.texi · 518 unmodified lines
519 519
520if test "$source_path_used" = "yes" ; then520if test "$source_path_used" = "yes" ; then
521 case $source_path in521 case $source_path in
522 /*) echo "SRCTOP=$source_path";;522 /*) echo "TOPSRC=$source_path";;
523 *) echo "SRCTOP=\$(TOP)/$source_path";;523 *) echo "TOPSRC=\$(TOP)/$source_path";;
524 esac >>config.mak524 esac >>config.mak
525else525else
526 echo 'SRCTOP=$(TOP)' >>config.mak526 echo 'TOPSRC=$(TOP)' >>config.mak
527fi527fi
528 528
529diff $TMPH config.h >/dev/null 2>&1529diff $TMPH config.h >/dev/null 2>&1
@@ -553,7 +553,11 @@ fn_makelink() · 23 unmodified lines
553 esac553 esac
554 ;;554 ;;
555 esac555 esac
556 ln -sfn $tgt $2556 if test "$mingw32" = "yes" ; then
557 cmd //c mklink `echo "$2 $tgt" | sed 's,/,\\\\,g'`
558 else
559 ln -sfn $tgt $2
560 fi
557}561}
558 562
559if test "$source_path_used" = "yes" ; then563if test "$source_path_used" = "yes" ; then
lib/Makefile+8−8
@@ -4,7 +4,7 @@ · 3 unmodified lines
4 4
5TOP = ..5TOP = ..
6include $(TOP)/Makefile6include $(TOP)/Makefile
7VPATH = $(TOP)/lib $(TOP)/win32/lib7VPATH = $(TOPSRC)/lib $(TOPSRC)/win32/lib
8 8
9ifndef TARGET9ifndef TARGET
10 # we're building the native libtcc1.a10 # we're building the native libtcc1.a
@@ -51,31 +51,31 @@ PICFLAGS = -fPIC · 40 unmodified lines
51ifeq "$(TARGET)" "i386-win32"51ifeq "$(TARGET)" "i386-win32"
52 OBJ = $(addprefix $(DIR)/,$(WIN32_O))52 OBJ = $(addprefix $(DIR)/,$(WIN32_O))
53 TGT = -DTCC_TARGET_I386 -DTCC_TARGET_PE53 TGT = -DTCC_TARGET_I386 -DTCC_TARGET_PE
54 XCC = $(TCC) -B$(TOP)/win32 -I$(TOP)/include54 XCC = $(TCC) -B$(TOPSRC)/win32 -I$(TOPSRC)/include
55 XAR = $(DIR)/tiny_libmaker$(EXESUF)55 XAR = $(DIR)/tiny_libmaker$(EXESUF)
56 XFLAGS = $(TGT)56 XFLAGS = $(TGT)
57else ifeq "$(TARGET)" "x86_64-win32"57else ifeq "$(TARGET)" "x86_64-win32"
58 OBJ = $(addprefix $(DIR)/,$(WIN64_O))58 OBJ = $(addprefix $(DIR)/,$(WIN64_O))
59 TGT = -DTCC_TARGET_X86_64 -DTCC_TARGET_PE59 TGT = -DTCC_TARGET_X86_64 -DTCC_TARGET_PE
60 XCC = $(TCC) -B$(TOP)/win32 -I$(TOP)/include60 XCC = $(TCC) -B$(TOPSRC)/win32 -I$(TOPSRC)/include
61 XAR = $(DIR)/tiny_libmaker$(EXESUF)61 XAR = $(DIR)/tiny_libmaker$(EXESUF)
62 XFLAGS = $(TGT)62 XFLAGS = $(TGT)
63else ifeq "$(TARGET)" "i386"63else ifeq "$(TARGET)" "i386"
64 OBJ = $(addprefix $(DIR)/,$(I386_O))64 OBJ = $(addprefix $(DIR)/,$(I386_O))
65 TGT = -DTCC_TARGET_I38665 TGT = -DTCC_TARGET_I386
66 XCC ?= $(TCC) -B$(TOP)66 XCC ?= $(TCC) -B$(TOPSRC)
67else ifeq "$(TARGET)" "x86_64"67else ifeq "$(TARGET)" "x86_64"
68 OBJ = $(addprefix $(DIR)/,$(X86_64_O))68 OBJ = $(addprefix $(DIR)/,$(X86_64_O))
69 TGT = -DTCC_TARGET_X86_6469 TGT = -DTCC_TARGET_X86_64
70 XCC ?= $(TCC) -B$(TOP)70 XCC ?= $(TCC) -B$(TOPSRC)
71else ifeq "$(TARGET)" "arm"71else ifeq "$(TARGET)" "arm"
72 OBJ = $(addprefix $(DIR)/,$(ARM_O))72 OBJ = $(addprefix $(DIR)/,$(ARM_O))
73 TGT = -DTCC_TARGET_ARM73 TGT = -DTCC_TARGET_ARM
74 XCC ?= $(TCC) -B$(TOP)74 XCC ?= $(TCC) -B$(TOPSRC)
75else ifeq "$(TARGET)" "arm64"75else ifeq "$(TARGET)" "arm64"
76 OBJ = $(addprefix $(DIR)/,$(ARM64_O))76 OBJ = $(addprefix $(DIR)/,$(ARM64_O))
77 TGT = -DTCC_TARGET_ARM6477 TGT = -DTCC_TARGET_ARM64
78 XCC ?= $(TCC) -B$(top_srcdir)78 XCC ?= $(TCC) -B$(TOPSRC)
79else79else
80 $(error libtcc1.a not supported on target '$(TARGET)')80 $(error libtcc1.a not supported on target '$(TARGET)')
81endif81endif
@@ -99,7 +99,7 @@ $(DIR)/%.o : %.c · 17 unmodified lines
99$(DIR)/%.o : %.S99$(DIR)/%.o : %.S
100 $(XCC) -c $< -o $@ $(XFLAGS)100 $(XCC) -c $< -o $@ $(XFLAGS)
101# windows : utilities101# windows : utilities
102$(DIR)/tiny_%$(EXESUF) : $(TOP)/win32/tools/tiny_%.c102$(DIR)/tiny_%$(EXESUF) : $(TOPSRC)/win32/tools/tiny_%.c
103 $(CC) -o $@ $< $(CFLAGS) $(LDFLAGS) $(TGT)103 $(CC) -o $@ $< $(CFLAGS) $(LDFLAGS) $(TGT)
104 104
105$(OBJ) $(XAR) : $(DIR)/exists105$(OBJ) $(XAR) : $(DIR)/exists
tests/Makefile+8−8
@@ -4,8 +4,8 @@ · 3 unmodified lines
4 4
5TOP = ..5TOP = ..
6include $(TOP)/Makefile6include $(TOP)/Makefile
7VPATH = $(TOP)/tests $(TOP)7VPATH = $(TOPSRC)/tests $(TOPSRC) $(TOP)
8CFLAGS = -I$(TOP)8CFLAGS = -I$(TOPSRC) -I$(TOP)
9 9
10# what tests to run10# what tests to run
11TESTS = \11TESTS = \
@@ -42,14 +42,14 @@ ifeq ($(CONFIG_arm_eabi),yes) · 30 unmodified lines
42endif42endif
43 43
44# run local version of tcc with local libraries and includes44# run local version of tcc with local libraries and includes
45TCCFLAGS = -B$(TOP) -I$(TOP)45TCCFLAGS = -B$(TOP) -I$(TOPSRC)/include -I$(TOPSRC) -I$(TOP)
46ifdef CONFIG_WIN3246ifdef CONFIG_WIN32
47 TCCFLAGS = -B$(TOP)/win32 -I$(TOP)/include -I$(TOP) -L$(TOP)47 TCCFLAGS = -B$(TOPSRC)/win32 -I$(TOPSRC)/include -I$(TOPSRC) -I$(TOP) -L$(TOP)
48 PATH := $(CURDIR)/$(TOP):$(PATH) # for libtcc_test to find libtcc.dll48 PATH := $(CURDIR)/$(TOP):$(PATH) # for libtcc_test to find libtcc.dll
49endif49endif
50 50
51TCC = $(TOP)/tcc $(TCCFLAGS)51TCC = $(TOP)/tcc $(TCCFLAGS)
52RUN_TCC = $(NATIVE_DEFINES) -DONE_SOURCE -run $(TOP)/tcc.c $(TCCFLAGS)52RUN_TCC = $(NATIVE_DEFINES) -DONE_SOURCE -run $(TOPSRC)/tcc.c $(TCCFLAGS)
53 53
54ifeq ($(TARGETOS),Darwin)54ifeq ($(TARGETOS),Darwin)
55 CFLAGS += -Wl,-flat_namespace,-undefined,warning55 CFLAGS += -Wl,-flat_namespace,-undefined,warning
@@ -154,9 +154,9 @@ btest: boundtest.c · 98 unmodified lines
154speedtest: ex2 ex3154speedtest: ex2 ex3
155 @echo ------------ $@ ------------155 @echo ------------ $@ ------------
156 time ./ex2 1238 2 3 4 10 13 4156 time ./ex2 1238 2 3 4 10 13 4
157 time $(TCC) -run $(TOP)/examples/ex2.c 1238 2 3 4 10 13 4157 time $(TCC) -run $(TOPSRC)/examples/ex2.c 1238 2 3 4 10 13 4
158 time ./ex3 35158 time ./ex3 35
159 time $(TCC) -run $(TOP)/examples/ex3.c 35159 time $(TCC) -run $(TOPSRC)/examples/ex3.c 35
160 160
161weaktest: tcctest.c test.ref161weaktest: tcctest.c test.ref
162 $(TCC) -c $< -o weaktest.tcc.o162 $(TCC) -c $< -o weaktest.tcc.o
@@ -165,7 +165,7 @@ weaktest: tcctest.c test.ref · 2 unmodified lines
165 objdump -t weaktest.gcc.o | grep ' w ' | sed -e 's/.* \([a-zA-Z0-9_]*\)$$/\1/' | LC_ALL=C sort > weaktest.gcc.o.txt165 objdump -t weaktest.gcc.o | grep ' w ' | sed -e 's/.* \([a-zA-Z0-9_]*\)$$/\1/' | LC_ALL=C sort > weaktest.gcc.o.txt
166 diff weaktest.gcc.o.txt weaktest.tcc.o.txt && echo "Weak Auto Test OK"166 diff weaktest.gcc.o.txt weaktest.tcc.o.txt && echo "Weak Auto Test OK"
167 167
168ex%: $(TOP)/examples/ex%.c168ex%: $(TOPSRC)/examples/ex%.c
169 $(CC) -o $@ $< $(CFLAGS)169 $(CC) -o $@ $< $(CFLAGS)
170 170
171# tiny assembler testing171# tiny assembler testing
tests/pp/Makefile+8−3
@@ -2,8 +2,13 @@ · 1 unmodified line
2# credits: 01..13.c from the pcc cpp-tests suite2# credits: 01..13.c from the pcc cpp-tests suite
3#3#
4 4
5TOP = ../..
6include $(TOP)/config.mak
7SRC = $(TOPSRC)/tests/pp
8VPATH = $(SRC)
9
5TCC = ../../tcc10TCC = ../../tcc
6files = $(patsubst %.$1,%.test,$(wildcard *.$1))11files = $(patsubst %.$1,%.test,$(notdir $(wildcard $(SRC)/*.$1)))
7TESTS = $(call files,c) $(call files,S)12TESTS = $(call files,c) $(call files,S)
8 13
9all test : $(sort $(TESTS))14all test : $(sort $(TESTS))
@@ -13,13 +18,13 @@ DIFF_OPTS = -Nu -b -B -I "^\#" · 3 unmodified lines
13%.test: %.c %.expect18%.test: %.c %.expect
14 @echo PPTest $* ...19 @echo PPTest $* ...
15 -@$(TCC) -E -P $< >$*.output 2>&1 ; \20 -@$(TCC) -E -P $< >$*.output 2>&1 ; \
16 diff $(DIFF_OPTS) $*.expect $*.output \21 diff $(DIFF_OPTS) $(SRC)/$*.expect $*.output \
17 && rm -f $*.output22 && rm -f $*.output
18 23
19%.test: %.S %.expect24%.test: %.S %.expect
20 @echo PPTest $* ...25 @echo PPTest $* ...
21 -@$(TCC) -E -P $< >$*.output 2>&1 ; \26 -@$(TCC) -E -P $< >$*.output 2>&1 ; \
22 diff $(DIFF_OPTS) $*.expect $*.output \27 diff $(DIFF_OPTS) $(SRC)/$*.expect $*.output \
23 && rm -f $*.output28 && rm -f $*.output
24 29
25# automatically generate .expect files with gcc:30# automatically generate .expect files with gcc:
tests/tests2/Makefile+11−11
@@ -1,14 +1,16 @@
1TOP = ../..1TOP = ../..
2include $(TOP)/Makefile2include $(TOP)/config.mak
3SRC = $(TOPSRC)/tests/tests2
4VPATH = $(SRC)
3 5
4# run local version of tcc with local libraries and includes6# run local version of tcc with local libraries and includes
5TCCFLAGS = -B$(TOP) -I$(TOP)7TCCFLAGS = -B$(TOP) -I$(TOPSRC)/include
6ifdef CONFIG_WIN328ifdef CONFIG_WIN32
7 TCCFLAGS = -B$(TOP)/win32 -I$(TOP)/include -I$(TOP) -L$(TOP)9 TCCFLAGS = -B$(TOPSRC)/win32 -I$(TOPSRC)/include -L$(TOP)
8endif10endif
9TCC = $(TOP)/tcc $(TCCFLAGS)11TCC = $(TOP)/tcc $(TCCFLAGS)
10 12
11TESTS = $(patsubst %.c,%.test,$(sort $(wildcard *.c)))13TESTS = $(patsubst %.c,%.test,$(sort $(notdir $(wildcard $(SRC)/*.c))))
12 14
13# 34_array_assignment.test -- array assignment is not in C standard15# 34_array_assignment.test -- array assignment is not in C standard
14SKIP = 34_array_assignment.test16SKIP = 34_array_assignment.test
@@ -34,15 +36,16 @@ endif · 19 unmodified lines
34# Some tests might need arguments36# Some tests might need arguments
35ARGS =37ARGS =
3631_args.test : ARGS = arg1 arg2 arg3 arg4 arg53831_args.test : ARGS = arg1 arg2 arg3 arg4 arg5
3746_grep.test : ARGS = '[^* ]*[:a:d: ]+\:\*-/: $$' 46_grep.c3946_grep.test : ARGS = '[^* ]*[:a:d: ]+\:\*-/: $$' $(SRC)/46_grep.c
38 40
39# Some tests might need different flags41# Some tests might need different flags
4076_dollars_in_identifiers.test : TCCFLAGS += -fdollars-in-identifiers4276_dollars_in_identifiers.test : TCCFLAGS += -fdollars-in-identifiers
41 43
44# Filter source directory in warnings/errors (out-of-tree builds)
45FILTER = 2>&1 | sed 's,$(SRC)/,,g'
42# Filter some always-warning46# Filter some always-warning
43FILTER =
44ifeq (-$(findstring arm,$(ARCH))-,-arm-)47ifeq (-$(findstring arm,$(ARCH))-,-arm-)
45FILTER = 2>&1 | grep -v 'warning: soft float ABI currently not supported'48FILTER += 2>&1 | grep -v 'warning: soft float ABI currently not supported'
46endif49endif
47 50
48all test: $(filter-out $(SKIP),$(TESTS))51all test: $(filter-out $(SKIP),$(TESTS))
@@ -51,10 +54,7 @@ all test: $(filter-out $(SKIP),$(TESTS)) · 2 unmodified lines
51 @echo Test: $*...54 @echo Test: $*...
52# test -run55# test -run
53 @$(TCC) -run $< $(ARGS) $(FILTER) >$*.output 2>&1 || true56 @$(TCC) -run $< $(ARGS) $(FILTER) >$*.output 2>&1 || true
54 @diff -Nbu $*.expect $*.output && rm -f $*.output57 @diff -Nbu $(SRC)/$*.expect $*.output && rm -f $*.output
55# test exe (disabled for speed)
56# @($(TCC) $(FLAGS) $< -o $*.exe && ./$*.exe $(ARGS)) $(FiLTER) >$*.output2 2>&1 ; \
57# diff -Nbu $*.expect $*.output2 && rm -f $*.output2 $*.exe
58 58
59# automatically generate .expect files with gcc:59# automatically generate .expect files with gcc:
60%.expect :60%.expect :

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t