Unified · Split
| @@ -20,17 +20,6 @@ ifneq ($(GCC_MAJOR),3) · 19 unmodified lines | ||
| 20 | 20 | CFLAGS+=-Wno-pointer-sign -Wno-sign-compare |
| 21 | 21 | endif |
| 22 | 22 | 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 | |
| 34 | 23 | endif |
| 35 | 24 | |
| 36 | 25 | ifdef CONFIG_WIN64 |
| @@ -50,10 +39,8 @@ NATIVE_DEFINES+=\ · 13 unmodified lines | ||
| 50 | 39 | $(if $(wildcard /lib/i386-linux-gnu),-DCONFIG_MULTIARCHDIR=\"i386-linux-gnu\",\ |
| 51 | 40 | $(if $(wildcard /lib/i386-kfreebsd-gnu),-DCONFIG_MULTIARCHDIR=\"i386-kfreebsd-gnu\",\ |
| 52 | 41 | $(if $(wildcard /lib/i386-gnu),-DCONFIG_MULTIARCHDIR=\"i386-gnu\"))) |
| 53 | −CFLAGS+=-m32 | |
| 54 | 42 | else ifeq ($(ARCH),x86-64) |
| 55 | 43 | NATIVE_DEFINES=-DTCC_TARGET_X86_64 |
| 56 | −CFLAGS+=-m64 | |
| 57 | 44 | NATIVE_DEFINES+=\ |
| 58 | 45 | $(if $(wildcard /usr/lib64),-DCONFIG_LDDIR=\"lib64\",\ |
| 59 | 46 | $(if $(wildcard /lib/x86_64-linux-gnu),-DCONFIG_MULTIARCHDIR=\"x86_64-linux-gnu\",\ |
| @@ -79,7 +66,6 @@ endif · 19 unmodified lines | ||
| 79 | 66 | |
| 80 | 67 | ifneq ($(wildcard /lib/ld-uClibc.so.0),) |
| 81 | 68 | NATIVE_DEFINES+=-DTCC_UCLIBC |
| 82 | −CONFIG_UCLIBC = 1 | |
| 83 | 69 | endif |
| 84 | 70 | |
| 85 | 71 | # make libtcc as static or dynamic library? |
| @@ -136,7 +122,6 @@ NATIVE_FILES=$(I386_FILES) · 50 unmodified lines | ||
| 136 | 122 | PROGS_CROSS=$(X64_CROSS) $(WIN32_CROSS) $(WIN64_CROSS) $(ARM_CROSS) $(C67_CROSS) |
| 137 | 123 | LIBTCC1_CROSS=lib/i386-win32/libtcc1.a lib/x86_64-win32/libtcc1.a |
| 138 | 124 | LIBTCC1=libtcc1.a |
| 139 | −BCHECK_O=bcheck.o | |
| 140 | 125 | else ifeq ($(ARCH),x86-64) |
| 141 | 126 | NATIVE_FILES=$(X86_64_FILES) |
| 142 | 127 | PROGS_CROSS=$(I386_CROSS) $(WIN32_CROSS) $(WIN64_CROSS) $(ARM_CROSS) $(C67_CROSS) |
| @@ -147,11 +132,7 @@ NATIVE_FILES=$(ARM_FILES) · 4 unmodified lines | ||
| 147 | 132 | PROGS_CROSS=$(I386_CROSS) $(X64_CROSS) $(WIN32_CROSS) $(WIN64_CROSS) $(C67_CROSS) |
| 148 | 133 | endif |
| 149 | 134 | |
| 150 | −ifdef CONFIG_UCLIBC | |
| 151 | −BCHECK_O= | |
| 152 | −endif | |
| 153 | 135 | ifeq ($(TARGETOS),Darwin) |
| 154 | −BCHECK_O= | |
| 155 | 136 | PROGS+=tiny_libmaker$(EXESUF) |
| 156 | 137 | endif |
| 157 | 138 | |
| @@ -159,7 +140,7 @@ ifdef CONFIG_USE_LIBGCC · 1 unmodified line | ||
| 159 | 140 | LIBTCC1= |
| 160 | 141 | endif |
| 161 | 142 | |
| 162 | −TCCLIBS = $(LIBTCC1) $(LIBTCC) $(BCHECK_O) | |
| 143 | +TCCLIBS = $(LIBTCC1) $(LIBTCC) | |
| 163 | 144 | TCCDOCS = tcc.1 tcc-doc.html tcc-doc.info |
| 164 | 145 | |
| 165 | 146 | ifdef CONFIG_CROSS |
| @@ -177,6 +158,10 @@ tcc$(EXESUF): tcc.o $(LIBTCC) · 11 unmodified lines | ||
| 177 | 158 | %-tcc$(EXESUF): tcc.c |
| 178 | 159 | $(CC) -o $@ $< -DONE_SOURCE $(DEFINES) $(CPPFLAGS) $(CFLAGS) $(LIBS) $(LDFLAGS) |
| 179 | 160 | |
| 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 | + | |
| 180 | 165 | $(I386_CROSS): DEFINES = -DTCC_TARGET_I386 \ |
| 181 | 166 | -DCONFIG_TCCDIR="\"$(tccdir)/i386\"" |
| 182 | 167 | $(X64_CROSS): DEFINES = -DTCC_TARGET_X86_64 |
| @@ -222,10 +207,6 @@ libtcc.so.1.0: $(LIBTCC_OBJ) · 39 unmodified lines | ||
| 222 | 207 | |
| 223 | 208 | libtcc.so.1.0: CFLAGS+=-fPIC |
| 224 | 209 | |
| 225 | −# profiling version | |
| 226 | −tcc_p$(EXESUF): $(NATIVE_FILES) | |
| 227 | − $(CC) -o $@ $< $(NATIVE_DEFINES) $(CPPFLAGS_P) $(CFLAGS_P) $(LIBS_P) $(LDFLAGS_P) | |
| 228 | − | |
| 229 | 210 | # windows utilities |
| 230 | 211 | tiny_impdef$(EXESUF): win32/tools/tiny_impdef.c |
| 231 | 212 | $(CC) -o $@ $< $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) |
| @@ -237,8 +218,7 @@ libtcc1.a : FORCE · 5 unmodified lines | ||
| 237 | 218 | @$(MAKE) -C lib native |
| 238 | 219 | lib/%/libtcc1.a : FORCE $(PROGS_CROSS) |
| 239 | 220 | @$(MAKE) -C lib cross TARGET=$* |
| 240 | −bcheck.o : lib/bcheck.c | |
| 241 | − $(CC) -c $< -o $@ $(CPPFLAGS) $(CFLAGS) | |
| 221 | + | |
| 242 | 222 | FORCE: |
| 243 | 223 | |
| 244 | 224 | # install |
| @@ -266,9 +246,6 @@ endif · 21 unmodified lines | ||
| 266 | 246 | mkdir -p "$(tccdir)/include" |
| 267 | 247 | ifneq ($(LIBTCC1),) |
| 268 | 248 | $(INSTALL) -m644 $(LIBTCC1) "$(tccdir)" |
| 269 | −endif | |
| 270 | −ifneq ($(BCHECK_O),) | |
| 271 | − $(INSTALL) -m644 $(BCHECK_O) "$(tccdir)" | |
| 272 | 249 | endif |
| 273 | 250 | $(INSTALL) -m644 $(addprefix $(top_srcdir)/include/,$(TCC_INCLUDES)) "$(tccdir)/include" |
| 274 | 251 | mkdir -p "$(libdir)" |
| @@ -298,7 +275,7 @@ endif · 23 unmodified lines | ||
| 298 | 275 | |
| 299 | 276 | uninstall: |
| 300 | 277 | 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") | |
| 302 | 279 | rm -fv $(foreach P,$(TCC_INCLUDES),"$(tccdir)/include/$P") |
| 303 | 280 | rm -fv "$(docdir)/tcc-doc.html" "$(mandir)/man1/tcc.1" "$(infodir)/tcc-doc.info" |
| 304 | 281 | rm -fv "$(libdir)/$(LIBTCC)" "$(includedir)/libtcc.h" |
| @@ -15,15 +15,15 @@ ifndef TARGET · 14 unmodified lines | ||
| 15 | 15 | else |
| 16 | 16 | ifeq ($(ARCH),i386) |
| 17 | 17 | TARGET = i386 |
| 18 | − ifneq ($(TARGETOS),Darwin) | |
| 19 | − XCC = gcc -O2 -m32 | |
| 20 | − endif | |
| 18 | + ifneq ($(TARGETOS),Darwin) | |
| 19 | + XCC = $(CC) | |
| 20 | + endif | |
| 21 | 21 | else |
| 22 | 22 | ifeq ($(ARCH),x86-64) |
| 23 | 23 | TARGET = x86_64 |
| 24 | − ifneq ($(TARGETOS),Darwin) | |
| 25 | − XCC = gcc -O2 -m64 | |
| 26 | − endif | |
| 24 | + ifneq ($(TARGETOS),Darwin) | |
| 25 | + XCC = $(CC) | |
| 26 | + endif | |
| 27 | 27 | endif |
| 28 | 28 | endif |
| 29 | 29 | endif |
| @@ -38,9 +38,11 @@ cross : $(DIR)/libtcc1.a · 8 unmodified lines | ||
| 38 | 38 | native : TCC = $(TOP)/tcc$(EXESUF) |
| 39 | 39 | cross : TCC = $(TOP)/$(TARGET)-tcc$(EXESUF) |
| 40 | 40 | |
| 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) | |
| 42 | 44 | 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 | |
| 44 | 46 | WIN64_O = $(X86_64_O) crt1.o wincrt1.o dllcrt1.o dllmain.o chkstk.o |
| 45 | 47 | |
| 46 | 48 | ifeq "$(TARGET)" "i386-win32" |
| @@ -58,18 +60,12 @@ else · 11 unmodified lines | ||
| 58 | 60 | ifeq "$(TARGET)" "i386" |
| 59 | 61 | OBJ = $(addprefix $(DIR)/,$(I386_O)) |
| 60 | 62 | 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) | |
| 65 | 64 | else |
| 66 | 65 | ifeq "$(TARGET)" "x86_64" |
| 67 | 66 | OBJ = $(addprefix $(DIR)/,$(X86_64_O)) |
| 68 | 67 | 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) | |
| 73 | 69 | else |
| 74 | 70 | $(error libtcc1.a not supported on target '$(TARGET)') |
| 75 | 71 | endif |
| @@ -77,6 +73,14 @@ endif · 1 unmodified line | ||
| 77 | 73 | endif |
| 78 | 74 | endif |
| 79 | 75 | |
| 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 | + | |
| 80 | 84 | ifdef XAR |
| 81 | 85 | AR = $(XAR) |
| 82 | 86 | endif |
| @@ -84,11 +88,11 @@ endif · 1 unmodified line | ||
| 84 | 88 | $(DIR)/libtcc1.a ../libtcc1.a : $(OBJ) $(XAR) |
| 85 | 89 | $(AR) rcs $@ $(OBJ) |
| 86 | 90 | $(DIR)/%.o : %.c |
| 87 | − $(XCC) -c $< -o $@ $(CPPFLAGS) $(TGT) $(CFLAGS) | |
| 91 | + $(XCC) -c $< -o $@ $(XFLAGS) | |
| 88 | 92 | $(DIR)/%.o : %.S |
| 89 | − $(XCC) -c $< -o $@ $(CPPFLAGS) $(TGT) $(CFLAGS) | |
| 93 | + $(XCC) -c $< -o $@ $(XFLAGS) | |
| 90 | 94 | $(DIR)/%$(EXESUF) : $(TOP)/win32/tools/%.c |
| 91 | − $(CC) -Os -s -w -o $@ $< $(CPPFLAGS) $(TGT) $(CFLAGS) $(LDFLAGS) | |
| 95 | + $(CC) -Os -s -w -o $@ $< $(XFLAGS) $(LDFLAGS) | |
| 92 | 96 | |
| 93 | 97 | $(OBJ) $(XAR) : $(DIR)/exists |
| 94 | 98 | $(DIR)/exists : |
| @@ -41,7 +41,8 @@ · 40 unmodified lines | ||
| 41 | 41 | |
| 42 | 42 | #if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) \ |
| 43 | 43 | || defined(__DragonFly__) || defined(__dietlibc__) \ |
| 44 | − || defined(__UCLIBC__) || defined(__OpenBSD__) || defined(_WIN32) | |
| 44 | + || defined(__UCLIBC__) || defined(__OpenBSD__) \ | |
| 45 | + || defined(_WIN32) || defined(TCC_UCLIBC) | |
| 45 | 46 | #warning Bound checking does not support malloc (etc.) in this environment. |
| 46 | 47 | #undef CONFIG_TCC_MALLOC_HOOKS |
| 47 | 48 | #undef HAVE_MEMALIGN |
| @@ -377,7 +378,7 @@ void __bound_init(void) · 329 unmodified lines | ||
| 377 | 378 | size = BOUND_T23_SIZE; |
| 378 | 379 | mark_invalid(start, size); |
| 379 | 380 | |
| 380 | −#if !defined(__TINYC__) && defined(CONFIG_TCC_MALLOC_HOOKS) | |
| 381 | +#if defined(CONFIG_TCC_MALLOC_HOOKS) | |
| 381 | 382 | /* malloc zone is also marked invalid. can only use that with |
| 382 | 383 | * hooks because all libs should use the same malloc. The solution |
| 383 | 384 | * would be to build a new malloc for tcc. |
| @@ -105,12 +105,14 @@ static void tcc_set_lib_path_w32(TCCState *s) · 104 unmodified lines | ||
| 105 | 105 | tcc_set_lib_path(s, path); |
| 106 | 106 | } |
| 107 | 107 | |
| 108 | +#ifdef TCC_TARGET_PE | |
| 108 | 109 | static void tcc_add_systemdir(TCCState *s) |
| 109 | 110 | { |
| 110 | 111 | char buf[1000]; |
| 111 | 112 | GetSystemDirectory(buf, sizeof buf); |
| 112 | 113 | tcc_add_library_path(s, normalize_slashes(buf)); |
| 113 | 114 | } |
| 115 | +#endif | |
| 114 | 116 | |
| 115 | 117 | #ifndef CONFIG_TCC_STATIC |
| 116 | 118 | 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 | ||
| 1169 | 1171 | #ifndef TCC_TARGET_PE |
| 1170 | 1172 | if (ehdr.e_type == ET_DYN) { |
| 1171 | 1173 | if (s1->output_type == TCC_OUTPUT_MEMORY) { |
| 1174 | +#ifdef TCC_IS_NATIVE | |
| 1172 | 1175 | void *h; |
| 1173 | 1176 | h = dlopen(filename, RTLD_GLOBAL | RTLD_LAZY); |
| 1174 | 1177 | if (h) |
| 1178 | +#endif | |
| 1175 | 1179 | ret = 0; |
| 1176 | 1180 | } else { |
| 1177 | 1181 | ret = tcc_load_dll(s1, fd, filename, |
| @@ -47,7 +47,9 @@ · 46 unmodified lines | ||
| 47 | 47 | # include <sys/time.h> |
| 48 | 48 | # include <sys/ucontext.h> |
| 49 | 49 | # include <sys/mman.h> |
| 50 | −# include <dlfcn.h> | |
| 50 | +# ifndef CONFIG_TCC_STATIC | |
| 51 | +# include <dlfcn.h> | |
| 52 | +# endif | |
| 51 | 53 | #else |
| 52 | 54 | # include <windows.h> |
| 53 | 55 | # include <sys/timeb.h> |
| @@ -134,10 +136,6 @@ · 80 unmodified lines | ||
| 134 | 136 | #define CONFIG_TCC_BCHECK /* enable bound checking code */ |
| 135 | 137 | #endif |
| 136 | 138 | |
| 137 | −#if defined(_WIN32) && !defined(TCC_TARGET_PE) | |
| 138 | −#define CONFIG_TCC_STATIC | |
| 139 | −#endif | |
| 140 | − | |
| 141 | 139 | /* define it to include assembler support */ |
| 142 | 140 | #if !defined(TCC_TARGET_ARM) && !defined(TCC_TARGET_C67) |
| 143 | 141 | #define CONFIG_TCC_ASM |
| @@ -1338,10 +1338,6 @@ ST_FUNC void tcc_add_bcheck(TCCState *s1) · 1337 unmodified lines | ||
| 1338 | 1338 | add_elf_sym(symtab_section, 0, 0, |
| 1339 | 1339 | ELFW(ST_INFO)(STB_GLOBAL, STT_NOTYPE), 0, |
| 1340 | 1340 | 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 | |
| 1345 | 1341 | #ifdef TCC_TARGET_I386 |
| 1346 | 1342 | if (s1->output_type != TCC_OUTPUT_MEMORY) { |
| 1347 | 1343 | /* add 'call __bound_init()' in .init section */ |
| @@ -26,7 +26,7 @@ ifdef CONFIG_WIN32 · 25 unmodified lines | ||
| 26 | 26 | TESTS := $(filter-out test3,$(TESTS)) |
| 27 | 27 | endif |
| 28 | 28 | ifeq ($(TARGETOS),Darwin) |
| 29 | − TESTS := $(filter-out test3 btest,$(TESTS)) | |
| 29 | + TESTS := $(filter-out hello test3 btest,$(TESTS)) | |
| 30 | 30 | endif |
| 31 | 31 | |
| 32 | 32 | ifdef DISABLE_STATIC |