Skip to content

Commit 729918e

Browse files
author
grischka
committed
make: make shorter command lines
Put former NATIVE_DEFINES into config.h. Such tcc can be run and tested directly from source more easily, like for example: tcc -run tcc.c -B. -run test.c Also: - tccelf.c: cleanup - tccpp.c: avoid stupid clang warning - configure: reduce -Wno- switches - tcc.h: inline wait/post_sem() - tccpe.c: simplify import (assume STT_NOTYPE is function)
1 parent 4b04028 commit 729918e

21 files changed

+375
-468
lines changed

.gitignore

+3
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,9 @@ win32/include/stddef.h
4848
win32/include/stdnoreturn.h
4949
win32/include/varargs.h
5050
win32/include/tcclib.h
51+
win32/include/tccdefs.h
52+
win32/include/stdatomic.h
53+
win32/include/tgmath.h
5154

5255
tests/tcctest[1234]
5356
tests/tcctest.gcc

Makefile

+23-51
Original file line numberDiff line numberDiff line change
@@ -20,18 +20,15 @@ LIBTCC = libtcc.a
2020
LIBTCC1 = libtcc1.a
2121
LINK_LIBTCC =
2222
LIBS =
23-
CFLAGS += -I$(TOP)
2423
CFLAGS += $(CPPFLAGS)
2524
VPATH = $(TOPSRC)
25+
-LTCC = $(TOP)/$(LIBTCC)
2626

2727
ifdef CONFIG_WIN32
2828
CFG = -win
2929
ifneq ($(CONFIG_static),yes)
3030
LIBTCC = libtcc$(DLLSUF)
3131
LIBTCCDEF = libtcc.def
32-
-LTCC = $(bindir)/libtcc.dll
33-
else
34-
-LTCC = -ltcc -L$(libdir)
3532
endif
3633
ifneq ($(CONFIG_debug),yes)
3734
LDFLAGS += -s
@@ -76,7 +73,6 @@ else
7673
endif
7774
export MACOSX_DEPLOYMENT_TARGET := 10.6
7875
endif
79-
-LTCC = -ltcc
8076
endif
8177

8278
# run local version of tcc with local libraries and includes
@@ -89,42 +85,15 @@ TCC = $(TCC_LOCAL) $(TCCFLAGS)
8985
# run tests with the installed tcc instead
9086
ifdef TESTINSTALL
9187
TCC_LOCAL = $(bindir)/tcc
92-
TCCFLAGS-unx = -I..
93-
TCCFLAGS-win = -I.. -B$(bindir)
94-
LIBTCC =
95-
LIBS += $(-LTCC)
88+
TCCFLAGS-unx = -I$(TOP)
89+
TCCFLAGS-win = -B$(bindir) -I$(TOP)
90+
-LTCC = $(libdir)/$(LIBTCC) $(LINK_LIBTCC)
9691
endif
9792

9893
CFLAGS_P = $(CFLAGS) -pg -static -DCONFIG_TCC_STATIC -DTCC_PROFILE
9994
LIBS_P = $(LIBS)
10095
LDFLAGS_P = $(LDFLAGS)
10196

102-
CONFIG_$(ARCH) = yes
103-
NATIVE_DEFINES_$(CONFIG_i386) += -DTCC_TARGET_I386
104-
NATIVE_DEFINES_$(CONFIG_x86_64) += -DTCC_TARGET_X86_64
105-
NATIVE_DEFINES_$(CONFIG_WIN32) += -DTCC_TARGET_PE
106-
NATIVE_DEFINES_$(CONFIG_OSX) += -DTCC_TARGET_MACHO
107-
NATIVE_DEFINES_$(CONFIG_uClibc) += -DTCC_UCLIBC
108-
NATIVE_DEFINES_$(CONFIG_musl) += -DTCC_MUSL
109-
NATIVE_DEFINES_$(CONFIG_libgcc) += -DCONFIG_USE_LIBGCC
110-
NATIVE_DEFINES_$(CONFIG_selinux) += -DHAVE_SELINUX
111-
NATIVE_DEFINES_$(CONFIG_arm) += -DTCC_TARGET_ARM
112-
NATIVE_DEFINES_$(CONFIG_arm_eabihf) += -DTCC_ARM_EABI -DTCC_ARM_HARDFLOAT
113-
NATIVE_DEFINES_$(CONFIG_arm_eabi) += -DTCC_ARM_EABI
114-
NATIVE_DEFINES_$(CONFIG_arm_vfp) += -DTCC_ARM_VFP
115-
NATIVE_DEFINES_$(CONFIG_arm64) += -DTCC_TARGET_ARM64
116-
NATIVE_DEFINES_$(CONFIG_riscv64) += -DTCC_TARGET_RISCV64
117-
NATIVE_DEFINES_$(CONFIG_BSD) += -DTARGETOS_$(TARGETOS)
118-
NATIVE_DEFINES_$(CONFIG_Android) += -DTARGETOS_ANDROID
119-
NATIVE_DEFINES_$(CONFIG_pie) += -DCONFIG_TCC_PIE
120-
NATIVE_DEFINES_$(CONFIG_pic) += -DCONFIG_TCC_PIC
121-
NATIVE_DEFINES_no_$(CONFIG_new_macho) += -DCONFIG_NEW_MACHO=0
122-
NATIVE_DEFINES_$(CONFIG_codesign) += -DCONFIG_CODESIGN
123-
NATIVE_DEFINES_$(CONFIG_new-dtags) += -DCONFIG_NEW_DTAGS
124-
NATIVE_DEFINES_no_$(CONFIG_bcheck) += -DCONFIG_TCC_BCHECK=0
125-
NATIVE_DEFINES_no_$(CONFIG_backtrace) += -DCONFIG_TCC_BACKTRACE=0
126-
NATIVE_DEFINES += $(NATIVE_DEFINES_yes) $(NATIVE_DEFINES_no_no)
127-
12897
DEF-i386 = -DTCC_TARGET_I386
12998
DEF-i386-win32 = -DTCC_TARGET_I386 -DTCC_TARGET_PE
13099
DEF-i386-OpenBSD = $(DEF-i386) -DTARGETOS_OpenBSD
@@ -150,8 +119,6 @@ DEF-x86_64-FreeBSD = $(DEF-x86_64) -DTARGETOS_FreeBSD
150119
DEF-x86_64-NetBSD = $(DEF-x86_64) -DTARGETOS_NetBSD
151120
DEF-x86_64-OpenBSD = $(DEF-x86_64) -DTARGETOS_OpenBSD
152121

153-
DEF-$(NATIVE_TARGET) = $(NATIVE_DEFINES)
154-
155122
ifeq ($(INCLUDED),no)
156123
# --------------------------------------------------------------------------
157124
# running top Makefile
@@ -192,7 +159,7 @@ endif
192159
T = $(or $(CROSS_TARGET),$(NATIVE_TARGET),unknown)
193160
X = $(if $(CROSS_TARGET),$(CROSS_TARGET)-)
194161

195-
DEFINES += $(DEF-$T) $(DEF-all)
162+
DEFINES += $(DEF-$T)
196163
DEFINES += $(if $(ROOT-$T),-DCONFIG_SYSROOT="\"$(ROOT-$T)\"")
197164
DEFINES += $(if $(CRT-$T),-DCONFIG_TCC_CRTPREFIX="\"$(CRT-$T)\"")
198165
DEFINES += $(if $(LIB-$T),-DCONFIG_TCC_LIBPATHS="\"$(LIB-$T)\"")
@@ -202,10 +169,15 @@ DEFINES += $(DEF-$(or $(findstring win,$T),unx))
202169

203170
ifneq ($(X),)
204171
$(if $(DEF-$T),,$(error error: unknown target: '$T'))
205-
DEF-all += -DCONFIG_TCC_CROSSPREFIX="\"$X\""
172+
DEF-$T += -DCONFIG_TCC_CROSS
173+
DEF-$(NATIVE_TARGET) =
174+
DEF-$T += -DCONFIG_TCC_CROSSPREFIX="\"$X\""
206175
ifneq ($(CONFIG_WIN32),yes)
207176
DEF-win += -DCONFIG_TCCDIR="\"$(tccdir)/win32\""
208177
endif
178+
else
179+
# using values from config.h
180+
DEF-$(NATIVE_TARGET) =
209181
endif
210182

211183
# include custom configuration (see make help)
@@ -255,15 +227,16 @@ ifeq ($(ONE_SOURCE),yes)
255227
LIBTCC_OBJ = $(X)libtcc.o
256228
LIBTCC_INC = $($T_FILES)
257229
TCC_FILES = $(X)tcc.o
258-
tcc.o : DEFINES += -DONE_SOURCE=0
259-
$(X)tcc.o $(X)libtcc.o : $(TCCDEFS_H)
230+
$(X)tcc.o $(X)libtcc.o : $(TCCDEFS_H)
260231
else
261232
LIBTCC_OBJ = $(patsubst %.c,$(X)%.o,$(LIBTCC_SRC))
262233
LIBTCC_INC = $(filter %.h %-gen.c %-link.c,$($T_FILES))
263234
TCC_FILES = $(X)tcc.o $(LIBTCC_OBJ)
264-
$(TCC_FILES) : DEFINES += -DONE_SOURCE=0
265235
$(X)tccpp.o : $(TCCDEFS_H)
236+
$(X)libtcc.o : DEFINES += -DONE_SOURCE=0
266237
endif
238+
tcc.o : DEFINES += -DONE_SOURCE=0
239+
DEFINES += -I$(TOP)
267240

268241
GITHASH:=$(shell git rev-parse --abbrev-ref HEAD 2>/dev/null || echo no)
269242
ifneq ($(GITHASH),no)
@@ -283,15 +256,15 @@ endif
283256

284257
# target specific object rule
285258
$(X)%.o : %.c $(LIBTCC_INC)
286-
$S$(CC) -o $@ -c $< $(DEFINES) $(CFLAGS)
259+
$S$(CC) -o $@ -c $< $(addsuffix ,$(DEFINES) $(CFLAGS))
287260

288261
# additional dependencies
289262
$(X)tcc.o : tcctools.c
290263
$(X)tcc.o : DEFINES += $(DEF_GITHASH)
291264

292265
# Host Tiny C Compiler
293266
tcc$(EXESUF): tcc.o $(LIBTCC)
294-
$S$(CC) -o $@ $^ $(LIBS) $(LDFLAGS) $(LINK_LIBTCC)
267+
$S$(CC) -o $@ $^ $(addsuffix ,$(LIBS) $(LDFLAGS) $(LINK_LIBTCC))
295268

296269
# Cross Tiny C Compilers
297270
# (the TCCDEFS_H dependency is only necessary for parallel makes,
@@ -318,8 +291,8 @@ libtcc.a: $(LIBTCC_OBJ)
318291
libtcc.so: $(LIBTCC_OBJ)
319292
$S$(CC) -shared -Wl,-soname,$@ -o $@ $^ $(LIBS) $(LDFLAGS)
320293

321-
libtcc.so: CFLAGS+=-fPIC
322-
libtcc.so: LDFLAGS+=-fPIC
294+
libtcc.so: override CFLAGS += -fPIC
295+
libtcc.so: override LDFLAGS += -fPIC
323296

324297
# OSX dynamic libtcc library
325298
libtcc.dylib: $(LIBTCC_OBJ)
@@ -529,13 +502,12 @@ help:
529502
@echo "make test-install"
530503
@echo " run tests with the installed tcc"
531504
@echo "Other supported make targets:"
532-
@echo " install install-strip doc clean tags ETAGS tar distclean help"
505+
@echo " install install-strip uninstall doc [dist]clean tags ETAGS tar help"
533506
@echo "Custom configuration:"
534507
@echo " The makefile includes a file 'config-extra.mak' if it is present."
535-
@echo " This file may contain some custom configuration. For example:"
536-
@echo " NATIVE_DEFINES += -D..."
537-
@echo " Or for example to configure the search paths for a cross-compiler"
538-
@echo " assuming the support files in /usr/i686-linux-gnu:"
508+
@echo " This file may contain some custom configuration. For example to"
509+
@echo " configure the search paths for a cross-compiler, assuming the"
510+
@echo " support files in /usr/i686-linux-gnu:"
539511
@echo " ROOT-i386 = /usr/i686-linux-gnu"
540512
@echo " CRT-i386 = {R}/lib"
541513
@echo " LIB-i386 = {B}:{R}/lib"

arm-gen.c

+2-2
Original file line numberDiff line numberDiff line change
@@ -34,8 +34,8 @@
3434
#define NB_REGS 9
3535
#endif
3636

37-
#ifndef TCC_CPU_VERSION
38-
# define TCC_CPU_VERSION 5
37+
#ifndef CONFIG_TCC_CPUVER
38+
# define CONFIG_TCC_CPUVER 5
3939
#endif
4040

4141
/* a register can belong to several classes. The classes must be

arm-link.c

+1-1
Original file line numberDiff line numberDiff line change
@@ -202,7 +202,7 @@ ST_FUNC void relocate(TCCState *s1, ElfW_Rel *rel, int type, unsigned char *ptr,
202202
if (x & 0x800000)
203203
x -= 0x1000000;
204204
x <<= 2;
205-
blx_avail = (TCC_CPU_VERSION >= 5);
205+
blx_avail = (CONFIG_TCC_CPUVER >= 5);
206206
is_thumb = val & 1;
207207
is_bl = (*(unsigned *) ptr) >> 24 == 0xeb;
208208
is_call = (type == R_ARM_CALL || (type == R_ARM_PC24 && is_bl));

0 commit comments

Comments
 (0)