History

lib/Makefile: use CC, add bcheck to libtcc1.a

grischka committed 13 years ago

Commit 7a477d71 parent 92024ab7 files · +41 −61Browse files

Unified · Split

7 files
  1. Makefile +7 −30
  2. lib/Makefile +23 −19
  3. lib/bcheck.c +3 −2
  4. libtcc.c +4 −0
  5. tcc.h +3 −5
  6. tccelf.c +0 −4
  7. tests/Makefile +1 −1
Makefile+7−30
@@ -20,17 +20,6 @@ ifneq ($(GCC_MAJOR),3) · 19 unmodified lines
2020 CFLAGS+=-Wno-pointer-sign -Wno-sign-compare
2121 endif
2222 endif
23−
24−ifneq ($(TARGETOS),Darwin)
25−ifeq ($(ARCH),i386)
26−CFLAGS+=-mpreferred-stack-boundary=2
27−ifeq ($(GCC_MAJOR),2)
28−CFLAGS+=-m386 -malign-functions=0
29−else
30−CFLAGS+=-march=i386 -falign-functions=0
31−endif
32−endif
33−endif
3423 endif
3524
3625 ifdef CONFIG_WIN64
@@ -50,10 +39,8 @@ NATIVE_DEFINES+=\ · 13 unmodified lines
5039 $(if $(wildcard /lib/i386-linux-gnu),-DCONFIG_MULTIARCHDIR=\"i386-linux-gnu\",\
5140 $(if $(wildcard /lib/i386-kfreebsd-gnu),-DCONFIG_MULTIARCHDIR=\"i386-kfreebsd-gnu\",\
5241 $(if $(wildcard /lib/i386-gnu),-DCONFIG_MULTIARCHDIR=\"i386-gnu\")))
53−CFLAGS+=-m32
5442 else ifeq ($(ARCH),x86-64)
5543 NATIVE_DEFINES=-DTCC_TARGET_X86_64
56−CFLAGS+=-m64
5744 NATIVE_DEFINES+=\
5845 $(if $(wildcard /usr/lib64),-DCONFIG_LDDIR=\"lib64\",\
5946 $(if $(wildcard /lib/x86_64-linux-gnu),-DCONFIG_MULTIARCHDIR=\"x86_64-linux-gnu\",\
@@ -79,7 +66,6 @@ endif · 19 unmodified lines
7966
8067 ifneq ($(wildcard /lib/ld-uClibc.so.0),)
8168 NATIVE_DEFINES+=-DTCC_UCLIBC
82−CONFIG_UCLIBC = 1
8369 endif
8470
8571 # make libtcc as static or dynamic library?
@@ -136,7 +122,6 @@ NATIVE_FILES=$(I386_FILES) · 50 unmodified lines
136122 PROGS_CROSS=$(X64_CROSS) $(WIN32_CROSS) $(WIN64_CROSS) $(ARM_CROSS) $(C67_CROSS)
137123 LIBTCC1_CROSS=lib/i386-win32/libtcc1.a lib/x86_64-win32/libtcc1.a
138124 LIBTCC1=libtcc1.a
139−BCHECK_O=bcheck.o
140125 else ifeq ($(ARCH),x86-64)
141126 NATIVE_FILES=$(X86_64_FILES)
142127 PROGS_CROSS=$(I386_CROSS) $(WIN32_CROSS) $(WIN64_CROSS) $(ARM_CROSS) $(C67_CROSS)
@@ -147,11 +132,7 @@ NATIVE_FILES=$(ARM_FILES) · 4 unmodified lines
147132 PROGS_CROSS=$(I386_CROSS) $(X64_CROSS) $(WIN32_CROSS) $(WIN64_CROSS) $(C67_CROSS)
148133 endif
149134
150−ifdef CONFIG_UCLIBC
151−BCHECK_O=
152−endif
153135 ifeq ($(TARGETOS),Darwin)
154−BCHECK_O=
155136 PROGS+=tiny_libmaker$(EXESUF)
156137 endif
157138
@@ -159,7 +140,7 @@ ifdef CONFIG_USE_LIBGCC · 1 unmodified line
159140 LIBTCC1=
160141 endif
161142
162−TCCLIBS = $(LIBTCC1) $(LIBTCC) $(BCHECK_O)
143+TCCLIBS = $(LIBTCC1) $(LIBTCC)
163144 TCCDOCS = tcc.1 tcc-doc.html tcc-doc.info
164145
165146 ifdef CONFIG_CROSS
@@ -177,6 +158,10 @@ tcc$(EXESUF): tcc.o $(LIBTCC) · 11 unmodified lines
177158 %-tcc$(EXESUF): tcc.c
178159 $(CC) -o $@ $< -DONE_SOURCE $(DEFINES) $(CPPFLAGS) $(CFLAGS) $(LIBS) $(LDFLAGS)
179160
161+# profiling version
162+tcc_p$(EXESUF): $(NATIVE_FILES)
163+ $(CC) -o $@ $< -DONE_SOURCE $(NATIVE_DEFINES) $(CPPFLAGS_P) $(CFLAGS_P) $(LIBS_P) $(LDFLAGS_P)
164+
180165 $(I386_CROSS): DEFINES = -DTCC_TARGET_I386 \
181166 -DCONFIG_TCCDIR="\"$(tccdir)/i386\""
182167 $(X64_CROSS): DEFINES = -DTCC_TARGET_X86_64
@@ -222,10 +207,6 @@ libtcc.so.1.0: $(LIBTCC_OBJ) · 39 unmodified lines
222207
223208 libtcc.so.1.0: CFLAGS+=-fPIC
224209
225−# profiling version
226−tcc_p$(EXESUF): $(NATIVE_FILES)
227− $(CC) -o $@ $< $(NATIVE_DEFINES) $(CPPFLAGS_P) $(CFLAGS_P) $(LIBS_P) $(LDFLAGS_P)
228−
229210 # windows utilities
230211 tiny_impdef$(EXESUF): win32/tools/tiny_impdef.c
231212 $(CC) -o $@ $< $(CPPFLAGS) $(CFLAGS) $(LDFLAGS)
@@ -237,8 +218,7 @@ libtcc1.a : FORCE · 5 unmodified lines
237218 @$(MAKE) -C lib native
238219 lib/%/libtcc1.a : FORCE $(PROGS_CROSS)
239220 @$(MAKE) -C lib cross TARGET=$*
240−bcheck.o : lib/bcheck.c
241− $(CC) -c $< -o $@ $(CPPFLAGS) $(CFLAGS)
221+
242222 FORCE:
243223
244224 # install
@@ -266,9 +246,6 @@ endif · 21 unmodified lines
266246 mkdir -p "$(tccdir)/include"
267247 ifneq ($(LIBTCC1),)
268248 $(INSTALL) -m644 $(LIBTCC1) "$(tccdir)"
269−endif
270−ifneq ($(BCHECK_O),)
271− $(INSTALL) -m644 $(BCHECK_O) "$(tccdir)"
272249 endif
273250 $(INSTALL) -m644 $(addprefix $(top_srcdir)/include/,$(TCC_INCLUDES)) "$(tccdir)/include"
274251 mkdir -p "$(libdir)"
@@ -298,7 +275,7 @@ endif · 23 unmodified lines
298275
299276 uninstall:
300277 rm -fv $(foreach P,$(PROGS),"$(bindir)/$P")
301− rm -fv $(foreach P,$(LIBTCC1) $(BCHECK_O),"$(tccdir)/$P")
278+ rm -fv $(foreach P,$(LIBTCC1),"$(tccdir)/$P")
302279 rm -fv $(foreach P,$(TCC_INCLUDES),"$(tccdir)/include/$P")
303280 rm -fv "$(docdir)/tcc-doc.html" "$(mandir)/man1/tcc.1" "$(infodir)/tcc-doc.info"
304281 rm -fv "$(libdir)/$(LIBTCC)" "$(includedir)/libtcc.h"
lib/Makefile+23−19
@@ -15,15 +15,15 @@ ifndef TARGET · 14 unmodified lines
1515 else
1616 ifeq ($(ARCH),i386)
1717 TARGET = i386
18− ifneq ($(TARGETOS),Darwin)
19− XCC = gcc -O2 -m32
20− endif
18+ ifneq ($(TARGETOS),Darwin)
19+ XCC = $(CC)
20+ endif
2121 else
2222 ifeq ($(ARCH),x86-64)
2323 TARGET = x86_64
24− ifneq ($(TARGETOS),Darwin)
25− XCC = gcc -O2 -m64
26− endif
24+ ifneq ($(TARGETOS),Darwin)
25+ XCC = $(CC)
26+ endif
2727 endif
2828 endif
2929 endif
@@ -38,9 +38,11 @@ cross : $(DIR)/libtcc1.a · 8 unmodified lines
3838 native : TCC = $(TOP)/tcc$(EXESUF)
3939 cross : TCC = $(TOP)/$(TARGET)-tcc$(EXESUF)
4040
41−I386_O = libtcc1.o alloca86.o alloca86-bt.o
41+BCHECK_O = bcheck.o
42+
43+I386_O = libtcc1.o alloca86.o alloca86-bt.o $(BCHECK_O)
4244 X86_64_O = libtcc1.o alloca86_64.o
43−WIN32_O = $(I386_O) crt1.o wincrt1.o dllcrt1.o dllmain.o chkstk.o bcheck.o
45+WIN32_O = $(I386_O) crt1.o wincrt1.o dllcrt1.o dllmain.o chkstk.o
4446 WIN64_O = $(X86_64_O) crt1.o wincrt1.o dllcrt1.o dllmain.o chkstk.o
4547
4648 ifeq "$(TARGET)" "i386-win32"
@@ -58,18 +60,12 @@ else · 11 unmodified lines
5860 ifeq "$(TARGET)" "i386"
5961 OBJ = $(addprefix $(DIR)/,$(I386_O))
6062 TGT = -DTCC_TARGET_I386
61− XCC ?= $(TCC) -B$(TOP) -m32 -D_ANSI_SOURCE
62− ifeq ($(TARGETOS),Darwin)
63− XAR = $(DIR)/tiny_libmaker$(EXESUF)
64− endif
63+ XCC ?= $(TCC) -B$(TOP)
6564 else
6665 ifeq "$(TARGET)" "x86_64"
6766 OBJ = $(addprefix $(DIR)/,$(X86_64_O))
6867 TGT = -DTCC_TARGET_X86_64
69− XCC ?= $(TCC) -B$(TOP) -m64 -D_ANSI_SOURCE
70− ifeq ($(TARGETOS),Darwin)
71− XAR = $(DIR)/tiny_libmaker$(EXESUF)
72− endif
68+ XCC ?= $(TCC) -B$(TOP)
7369 else
7470 $(error libtcc1.a not supported on target '$(TARGET)')
7571 endif
@@ -77,6 +73,14 @@ endif · 1 unmodified line
7773 endif
7874 endif
7975
76+XFLAGS = $(CPPFLAGS) $(CFLAGS) $(TGT)
77+
78+ifeq ($(TARGETOS),Darwin)
79+ XAR = $(DIR)/tiny_libmaker$(EXESUF)
80+ XFLAGS += -D_ANSI_SOURCE
81+ BCHECK_O =
82+endif
83+
8084 ifdef XAR
8185 AR = $(XAR)
8286 endif
@@ -84,11 +88,11 @@ endif · 1 unmodified line
8488 $(DIR)/libtcc1.a ../libtcc1.a : $(OBJ) $(XAR)
8589 $(AR) rcs $@ $(OBJ)
8690 $(DIR)/%.o : %.c
87− $(XCC) -c $< -o $@ $(CPPFLAGS) $(TGT) $(CFLAGS)
91+ $(XCC) -c $< -o $@ $(XFLAGS)
8892 $(DIR)/%.o : %.S
89− $(XCC) -c $< -o $@ $(CPPFLAGS) $(TGT) $(CFLAGS)
93+ $(XCC) -c $< -o $@ $(XFLAGS)
9094 $(DIR)/%$(EXESUF) : $(TOP)/win32/tools/%.c
91− $(CC) -Os -s -w -o $@ $< $(CPPFLAGS) $(TGT) $(CFLAGS) $(LDFLAGS)
95+ $(CC) -Os -s -w -o $@ $< $(XFLAGS) $(LDFLAGS)
9296
9397 $(OBJ) $(XAR) : $(DIR)/exists
9498 $(DIR)/exists :
lib/bcheck.c+3−2
@@ -41,7 +41,8 @@ · 40 unmodified lines
4141
4242 #if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) \
4343 || defined(__DragonFly__) || defined(__dietlibc__) \
44− || defined(__UCLIBC__) || defined(__OpenBSD__) || defined(_WIN32)
44+ || defined(__UCLIBC__) || defined(__OpenBSD__) \
45+ || defined(_WIN32) || defined(TCC_UCLIBC)
4546 #warning Bound checking does not support malloc (etc.) in this environment.
4647 #undef CONFIG_TCC_MALLOC_HOOKS
4748 #undef HAVE_MEMALIGN
@@ -377,7 +378,7 @@ void __bound_init(void) · 329 unmodified lines
377378 size = BOUND_T23_SIZE;
378379 mark_invalid(start, size);
379380
380−#if !defined(__TINYC__) && defined(CONFIG_TCC_MALLOC_HOOKS)
381+#if defined(CONFIG_TCC_MALLOC_HOOKS)
381382 /* malloc zone is also marked invalid. can only use that with
382383 * hooks because all libs should use the same malloc. The solution
383384 * would be to build a new malloc for tcc.
libtcc.c+4−0
@@ -105,12 +105,14 @@ static void tcc_set_lib_path_w32(TCCState *s) · 104 unmodified lines
105105 tcc_set_lib_path(s, path);
106106 }
107107
108+#ifdef TCC_TARGET_PE
108109 static void tcc_add_systemdir(TCCState *s)
109110 {
110111 char buf[1000];
111112 GetSystemDirectory(buf, sizeof buf);
112113 tcc_add_library_path(s, normalize_slashes(buf));
113114 }
115+#endif
114116
115117 #ifndef CONFIG_TCC_STATIC
116118 void dlclose(void *p)
@@ -1169,9 +1171,11 @@ ST_FUNC int tcc_add_file_internal(TCCState *s1, const char *filename, int flags) · 1052 unmodified lines
11691171 #ifndef TCC_TARGET_PE
11701172 if (ehdr.e_type == ET_DYN) {
11711173 if (s1->output_type == TCC_OUTPUT_MEMORY) {
1174+#ifdef TCC_IS_NATIVE
11721175 void *h;
11731176 h = dlopen(filename, RTLD_GLOBAL | RTLD_LAZY);
11741177 if (h)
1178+#endif
11751179 ret = 0;
11761180 } else {
11771181 ret = tcc_load_dll(s1, fd, filename,
tcc.h+3−5
@@ -47,7 +47,9 @@ · 46 unmodified lines
4747 # include <sys/time.h>
4848 # include <sys/ucontext.h>
4949 # include <sys/mman.h>
50−# include <dlfcn.h>
50+# ifndef CONFIG_TCC_STATIC
51+# include <dlfcn.h>
52+# endif
5153 #else
5254 # include <windows.h>
5355 # include <sys/timeb.h>
@@ -134,10 +136,6 @@ · 80 unmodified lines
134136 #define CONFIG_TCC_BCHECK /* enable bound checking code */
135137 #endif
136138
137−#if defined(_WIN32) && !defined(TCC_TARGET_PE)
138−#define CONFIG_TCC_STATIC
139−#endif
140−
141139 /* define it to include assembler support */
142140 #if !defined(TCC_TARGET_ARM) && !defined(TCC_TARGET_C67)
143141 #define CONFIG_TCC_ASM
tccelf.c+0−4
@@ -1338,10 +1338,6 @@ ST_FUNC void tcc_add_bcheck(TCCState *s1) · 1337 unmodified lines
13381338 add_elf_sym(symtab_section, 0, 0,
13391339 ELFW(ST_INFO)(STB_GLOBAL, STT_NOTYPE), 0,
13401340 bounds_section->sh_num, "__bounds_start");
1341− /* add bound check code */
1342−#ifndef TCC_TARGET_PE
1343− tcc_add_support(s1, "bcheck.o");
1344−#endif
13451341 #ifdef TCC_TARGET_I386
13461342 if (s1->output_type != TCC_OUTPUT_MEMORY) {
13471343 /* add 'call __bound_init()' in .init section */
tests/Makefile+1−1
@@ -26,7 +26,7 @@ ifdef CONFIG_WIN32 · 25 unmodified lines
2626 TESTS := $(filter-out test3,$(TESTS))
2727 endif
2828 ifeq ($(TARGETOS),Darwin)
29− TESTS := $(filter-out test3 btest,$(TESTS))
29+ TESTS := $(filter-out hello test3 btest,$(TESTS))
3030 endif
3131
3232 ifdef DISABLE_STATIC

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