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
44
55 TOP ?= .
66 include $(TOP)/config.mak
7−VPATH = $(TOP)
7+VPATH = $(TOPSRC)
8+CFLAGS += -I$(TOP)
89
910 ifeq (-$(findstring gcc,$(CC))-,-gcc-)
1011 ifeq (-$(GCC_MAJOR)-$(findstring $(GCC_MINOR),56789)-,-4--)
@@ -206,7 +207,7 @@ libtcc.dll : $(LIBTCC_OBJ) tiny_impdef$(EXESUF) · 195 unmodified lines
206207 libtcc.dll : NATIVE_DEFINES += -DLIBTCC_AS_DLL
207208
208209 # windows : utilities
209−tiny_%$(EXESUF): $(SRCTOP)/win32/tools/tiny_%.c
210+tiny_%$(EXESUF): $(TOPSRC)/win32/tools/tiny_%.c
210211 $(CC) -o $@ $< $(CFLAGS) $(LDFLAGS) $(NATIVE_DEFINES)
211212
212213 ifneq ($(LIBTCC1),)
@@ -246,21 +247,21 @@ install: $(PROGS) $(TCCLIBS) $(TCCDOCS) · 33 unmodified lines
246247 ifneq ($(LIBTCC1),)
247248 $(INSTALL) -m644 $(LIBTCC1) "$(tccdir)"
248249 endif
249− $(INSTALL) -m644 $(addprefix include/,$(TCC_INCLUDES)) tcclib.h "$(tccdir)/include"
250+ $(INSTALL) -m644 $(addprefix $(TOPSRC)/include/,$(TCC_INCLUDES)) $(TOPSRC)/tcclib.h "$(tccdir)/include"
250251 mkdir -p "$(libdir)"
251252 $(INSTALL) -m644 $(LIBTCC) "$(libdir)"
252253 mkdir -p "$(includedir)"
253− $(INSTALL) -m644 libtcc.h "$(includedir)"
254+ $(INSTALL) -m644 $(TOPSRC)/libtcc.h "$(includedir)"
254255 mkdir -p "$(docdir)"
255256 -$(INSTALL) -m644 tcc-doc.html "$(docdir)"
256257 ifdef CONFIG_CROSS
257258 mkdir -p "$(tccdir)/win32/lib/32"
258259 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"
260261 -$(INSTALL) -m644 lib/i386-win32/libtcc1.a "$(tccdir)/win32/lib/32"
261262 -$(INSTALL) -m644 lib/x86_64-win32/libtcc1.a "$(tccdir)/win32/lib/64"
262− cp -r win32/include/. "$(tccdir)/win32/include"
263− cp -r "$(tccdir)/include" "$(tccdir)/win32"
263+ cp -r $(TOPSRC)/include/. "$(tccdir)/win32/include"
264+ cp -r $(TOPSRC)/win32/include/. "$(tccdir)/win32/include"
264265 endif
265266
266267 uninstall:
@@ -282,13 +283,13 @@ install: $(PROGS) $(TCCLIBS) $(TCCDOCS) · 15 unmodified lines
282283 mkdir -p "$(tccdir)/doc"
283284 mkdir -p "$(tccdir)/libtcc"
284285 $(INSTALLBIN) -m755 $(PROGS) $(LIBTCC) "$(tccdir)"
285− $(INSTALL) -m644 libtcc1.a win32/lib/*.def "$(tccdir)/lib"
286− cp -r win32/include/. "$(tccdir)/include"
287− cp -r win32/examples/. "$(tccdir)/examples"
288− cp tests/libtcc_test.c "$(tccdir)/examples"
289− $(INSTALL) -m644 $(addprefix include/,$(TCC_INCLUDES)) tcclib.h "$(tccdir)/include"
290− $(INSTALL) -m644 tcc-doc.html win32/tcc-win32.txt "$(tccdir)/doc"
291− $(INSTALL) -m644 libtcc.h libtcc.def "$(tccdir)/libtcc"
286+ $(INSTALL) -m644 libtcc1.a $(TOPSRC)/win32/lib/*.def "$(tccdir)/lib"
287+ cp -r $(TOPSRC)/win32/include/. "$(tccdir)/include"
288+ cp -r $(TOPSRC)/win32/examples/. "$(tccdir)/examples"
289+ cp $(TOPSRC)/tests/libtcc_test.c "$(tccdir)/examples"
290+ $(INSTALL) -m644 $(addprefix $(TOPSRC)/include/,$(TCC_INCLUDES)) $(TOPSRC)/tcclib.h "$(tccdir)/include"
291+ $(INSTALL) -m644 tcc-doc.html $(TOPSRC)/win32/tcc-win32.txt "$(tccdir)/doc"
292+ $(INSTALL) -m644 $(TOPSRC)/libtcc.h libtcc.def "$(tccdir)/libtcc"
292293 ifdef CONFIG_CROSS
293294 mkdir -p "$(tccdir)/lib/32"
294295 mkdir -p "$(tccdir)/lib/64"
configure+8−4
@@ -519,11 +519,11 @@ echo "@set VERSION $version" > config.texi · 518 unmodified lines
519519
520520 if test "$source_path_used" = "yes" ; then
521521 case $source_path in
522− /*) echo "SRCTOP=$source_path";;
523− *) echo "SRCTOP=\$(TOP)/$source_path";;
522+ /*) echo "TOPSRC=$source_path";;
523+ *) echo "TOPSRC=\$(TOP)/$source_path";;
524524 esac >>config.mak
525525 else
526− echo 'SRCTOP=$(TOP)' >>config.mak
526+ echo 'TOPSRC=$(TOP)' >>config.mak
527527 fi
528528
529529 diff $TMPH config.h >/dev/null 2>&1
@@ -553,7 +553,11 @@ fn_makelink() · 23 unmodified lines
553553 esac
554554 ;;
555555 esac
556− ln -sfn $tgt $2
556+ if test "$mingw32" = "yes" ; then
557+ cmd //c mklink `echo "$2 $tgt" | sed 's,/,\\\\,g'`
558+ else
559+ ln -sfn $tgt $2
560+ fi
557561 }
558562
559563 if test "$source_path_used" = "yes" ; then
lib/Makefile+8−8
@@ -4,7 +4,7 @@ · 3 unmodified lines
44
55 TOP = ..
66 include $(TOP)/Makefile
7−VPATH = $(TOP)/lib $(TOP)/win32/lib
7+VPATH = $(TOPSRC)/lib $(TOPSRC)/win32/lib
88
99 ifndef TARGET
1010 # we're building the native libtcc1.a
@@ -51,31 +51,31 @@ PICFLAGS = -fPIC · 40 unmodified lines
5151 ifeq "$(TARGET)" "i386-win32"
5252 OBJ = $(addprefix $(DIR)/,$(WIN32_O))
5353 TGT = -DTCC_TARGET_I386 -DTCC_TARGET_PE
54− XCC = $(TCC) -B$(TOP)/win32 -I$(TOP)/include
54+ XCC = $(TCC) -B$(TOPSRC)/win32 -I$(TOPSRC)/include
5555 XAR = $(DIR)/tiny_libmaker$(EXESUF)
5656 XFLAGS = $(TGT)
5757 else ifeq "$(TARGET)" "x86_64-win32"
5858 OBJ = $(addprefix $(DIR)/,$(WIN64_O))
5959 TGT = -DTCC_TARGET_X86_64 -DTCC_TARGET_PE
60− XCC = $(TCC) -B$(TOP)/win32 -I$(TOP)/include
60+ XCC = $(TCC) -B$(TOPSRC)/win32 -I$(TOPSRC)/include
6161 XAR = $(DIR)/tiny_libmaker$(EXESUF)
6262 XFLAGS = $(TGT)
6363 else ifeq "$(TARGET)" "i386"
6464 OBJ = $(addprefix $(DIR)/,$(I386_O))
6565 TGT = -DTCC_TARGET_I386
66− XCC ?= $(TCC) -B$(TOP)
66+ XCC ?= $(TCC) -B$(TOPSRC)
6767 else ifeq "$(TARGET)" "x86_64"
6868 OBJ = $(addprefix $(DIR)/,$(X86_64_O))
6969 TGT = -DTCC_TARGET_X86_64
70− XCC ?= $(TCC) -B$(TOP)
70+ XCC ?= $(TCC) -B$(TOPSRC)
7171 else ifeq "$(TARGET)" "arm"
7272 OBJ = $(addprefix $(DIR)/,$(ARM_O))
7373 TGT = -DTCC_TARGET_ARM
74− XCC ?= $(TCC) -B$(TOP)
74+ XCC ?= $(TCC) -B$(TOPSRC)
7575 else ifeq "$(TARGET)" "arm64"
7676 OBJ = $(addprefix $(DIR)/,$(ARM64_O))
7777 TGT = -DTCC_TARGET_ARM64
78− XCC ?= $(TCC) -B$(top_srcdir)
78+ XCC ?= $(TCC) -B$(TOPSRC)
7979 else
8080 $(error libtcc1.a not supported on target '$(TARGET)')
8181 endif
@@ -99,7 +99,7 @@ $(DIR)/%.o : %.c · 17 unmodified lines
9999 $(DIR)/%.o : %.S
100100 $(XCC) -c $< -o $@ $(XFLAGS)
101101 # windows : utilities
102−$(DIR)/tiny_%$(EXESUF) : $(TOP)/win32/tools/tiny_%.c
102+$(DIR)/tiny_%$(EXESUF) : $(TOPSRC)/win32/tools/tiny_%.c
103103 $(CC) -o $@ $< $(CFLAGS) $(LDFLAGS) $(TGT)
104104
105105 $(OBJ) $(XAR) : $(DIR)/exists
tests/Makefile+8−8
@@ -4,8 +4,8 @@ · 3 unmodified lines
44
55 TOP = ..
66 include $(TOP)/Makefile
7−VPATH = $(TOP)/tests $(TOP)
8−CFLAGS = -I$(TOP)
7+VPATH = $(TOPSRC)/tests $(TOPSRC) $(TOP)
8+CFLAGS = -I$(TOPSRC) -I$(TOP)
99
1010 # what tests to run
1111 TESTS = \
@@ -42,14 +42,14 @@ ifeq ($(CONFIG_arm_eabi),yes) · 30 unmodified lines
4242 endif
4343
4444 # run local version of tcc with local libraries and includes
45−TCCFLAGS = -B$(TOP) -I$(TOP)
45+TCCFLAGS = -B$(TOP) -I$(TOPSRC)/include -I$(TOPSRC) -I$(TOP)
4646 ifdef 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)
4848 PATH := $(CURDIR)/$(TOP):$(PATH) # for libtcc_test to find libtcc.dll
4949 endif
5050
5151 TCC = $(TOP)/tcc $(TCCFLAGS)
52−RUN_TCC = $(NATIVE_DEFINES) -DONE_SOURCE -run $(TOP)/tcc.c $(TCCFLAGS)
52+RUN_TCC = $(NATIVE_DEFINES) -DONE_SOURCE -run $(TOPSRC)/tcc.c $(TCCFLAGS)
5353
5454 ifeq ($(TARGETOS),Darwin)
5555 CFLAGS += -Wl,-flat_namespace,-undefined,warning
@@ -154,9 +154,9 @@ btest: boundtest.c · 98 unmodified lines
154154 speedtest: ex2 ex3
155155 @echo ------------ $@ ------------
156156 time ./ex2 1238 2 3 4 10 13 4
157− time $(TCC) -run $(TOP)/examples/ex2.c 1238 2 3 4 10 13 4
157+ time $(TCC) -run $(TOPSRC)/examples/ex2.c 1238 2 3 4 10 13 4
158158 time ./ex3 35
159− time $(TCC) -run $(TOP)/examples/ex3.c 35
159+ time $(TCC) -run $(TOPSRC)/examples/ex3.c 35
160160
161161 weaktest: tcctest.c test.ref
162162 $(TCC) -c $< -o weaktest.tcc.o
@@ -165,7 +165,7 @@ weaktest: tcctest.c test.ref · 2 unmodified lines
165165 objdump -t weaktest.gcc.o | grep ' w ' | sed -e 's/.* \([a-zA-Z0-9_]*\)$$/\1/' | LC_ALL=C sort > weaktest.gcc.o.txt
166166 diff weaktest.gcc.o.txt weaktest.tcc.o.txt && echo "Weak Auto Test OK"
167167
168−ex%: $(TOP)/examples/ex%.c
168+ex%: $(TOPSRC)/examples/ex%.c
169169 $(CC) -o $@ $< $(CFLAGS)
170170
171171 # tiny assembler testing
tests/pp/Makefile+8−3
@@ -2,8 +2,13 @@ · 1 unmodified line
22 # credits: 01..13.c from the pcc cpp-tests suite
33 #
44
5+TOP = ../..
6+include $(TOP)/config.mak
7+SRC = $(TOPSRC)/tests/pp
8+VPATH = $(SRC)
9+
510 TCC = ../../tcc
6−files = $(patsubst %.$1,%.test,$(wildcard *.$1))
11+files = $(patsubst %.$1,%.test,$(notdir $(wildcard $(SRC)/*.$1)))
712 TESTS = $(call files,c) $(call files,S)
813
914 all test : $(sort $(TESTS))
@@ -13,13 +18,13 @@ DIFF_OPTS = -Nu -b -B -I "^\#" · 3 unmodified lines
1318 %.test: %.c %.expect
1419 @echo PPTest $* ...
1520 -@$(TCC) -E -P $< >$*.output 2>&1 ; \
16− diff $(DIFF_OPTS) $*.expect $*.output \
21+ diff $(DIFF_OPTS) $(SRC)/$*.expect $*.output \
1722 && rm -f $*.output
1823
1924 %.test: %.S %.expect
2025 @echo PPTest $* ...
2126 -@$(TCC) -E -P $< >$*.output 2>&1 ; \
22− diff $(DIFF_OPTS) $*.expect $*.output \
27+ diff $(DIFF_OPTS) $(SRC)/$*.expect $*.output \
2328 && rm -f $*.output
2429
2530 # automatically generate .expect files with gcc:
tests/tests2/Makefile+11−11
@@ -1,14 +1,16 @@
11 TOP = ../..
2−include $(TOP)/Makefile
2+include $(TOP)/config.mak
3+SRC = $(TOPSRC)/tests/tests2
4+VPATH = $(SRC)
35
46 # run local version of tcc with local libraries and includes
5−TCCFLAGS = -B$(TOP) -I$(TOP)
7+TCCFLAGS = -B$(TOP) -I$(TOPSRC)/include
68 ifdef CONFIG_WIN32
7− TCCFLAGS = -B$(TOP)/win32 -I$(TOP)/include -I$(TOP) -L$(TOP)
9+ TCCFLAGS = -B$(TOPSRC)/win32 -I$(TOPSRC)/include -L$(TOP)
810 endif
911 TCC = $(TOP)/tcc $(TCCFLAGS)
1012
11−TESTS = $(patsubst %.c,%.test,$(sort $(wildcard *.c)))
13+TESTS = $(patsubst %.c,%.test,$(sort $(notdir $(wildcard $(SRC)/*.c))))
1214
1315 # 34_array_assignment.test -- array assignment is not in C standard
1416 SKIP = 34_array_assignment.test
@@ -34,15 +36,16 @@ endif · 19 unmodified lines
3436 # Some tests might need arguments
3537 ARGS =
3638 31_args.test : ARGS = arg1 arg2 arg3 arg4 arg5
37−46_grep.test : ARGS = '[^* ]*[:a:d: ]+\:\*-/: $$' 46_grep.c
39+46_grep.test : ARGS = '[^* ]*[:a:d: ]+\:\*-/: $$' $(SRC)/46_grep.c
3840
3941 # Some tests might need different flags
4042 76_dollars_in_identifiers.test : TCCFLAGS += -fdollars-in-identifiers
4143
44+# Filter source directory in warnings/errors (out-of-tree builds)
45+FILTER = 2>&1 | sed 's,$(SRC)/,,g'
4246 # Filter some always-warning
43−FILTER =
4447 ifeq (-$(findstring arm,$(ARCH))-,-arm-)
45−FILTER = 2>&1 | grep -v 'warning: soft float ABI currently not supported'
48+FILTER += 2>&1 | grep -v 'warning: soft float ABI currently not supported'
4649 endif
4750
4851 all test: $(filter-out $(SKIP),$(TESTS))
@@ -51,10 +54,7 @@ all test: $(filter-out $(SKIP),$(TESTS)) · 2 unmodified lines
5154 @echo Test: $*...
5255 # test -run
5356 @$(TCC) -run $< $(ARGS) $(FILTER) >$*.output 2>&1 || true
54− @diff -Nbu $*.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
57+ @diff -Nbu $(SRC)/$*.expect $*.output && rm -f $*.output
5858
5959 # automatically generate .expect files with gcc:
6060 %.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