aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/Makefile105
-rw-r--r--lib/bcheck.c2
2 files changed, 51 insertions, 56 deletions
diff --git a/lib/Makefile b/lib/Makefile
index 0c32c52..3c5b988 100644
--- a/lib/Makefile
+++ b/lib/Makefile
@@ -5,18 +5,30 @@
TOP = ..
include $(TOP)/Makefile
VPATH = $(TOPSRC)/lib $(TOPSRC)/win32/lib
+T = $(or $(CROSS_TARGET),$(NATIVE_TARGET),unknown)
+X = $(if $(CROSS_TARGET),$(CROSS_TARGET)-)
-ifneq ($(CROSS),yes)
- TCC = $(TOP)/tcc$(EXESUF)
- OUT = ../libtcc1.a
+TCC = $(TOP)/$(X)tcc$(EXESUF)
+XCC = $(TCC)
+XAR = $(TCC) -ar
+XFLAGS-unx = -B$(TOPSRC)
+XFLAGS-win = -B$(TOPSRC)/win32 -I$(TOPSRC)/include
+XFLAGS = $(XFLAGS$(XCFG))
+XCFG = $(or $(findstring -win,$T),-unx)
+
+ifeq ($(X),)
BCHECK_O = bcheck.o
-else
- TCC = $(TOP)/$(TARGET)-tcc$(EXESUF)
- OUT = libtcc1-$(TARGET).a
+ ifeq "$T" "arm"
+ XCC = $(CC)
+ XAR = $(AR)
+ XFLAGS = $(CFLAGS) -fPIC
+ endif
endif
-XCC = $(TCC) -B$(TOPSRC)
-XAR = $(TCC) -ar
+ifeq ($(TARGETOS),Darwin)
+ XFLAGS += -D_ANSI_SOURCE
+ BCHECK_O =
+endif
I386_O = libtcc1.o alloca86.o alloca86-bt.o $(BCHECK_O)
X86_64_O = libtcc1.o alloca86_64.o alloca86_64-bt.o $(BCHECK_O)
@@ -24,57 +36,40 @@ ARM_O = libtcc1.o armeabi.o alloca-arm.o
ARM64_O = lib-arm64.o
WIN_O = crt1.o crt1w.o wincrt1.o wincrt1w.o dllcrt1.o dllmain.o
-ifeq "$(TARGET)" "i386-win32"
- OBJ = $(I386_O) chkstk.o $(WIN_O)
- TGT = -DTCC_TARGET_I386 -DTCC_TARGET_PE
- XCC = $(TCC) -B$(TOPSRC)/win32 -I$(TOPSRC)/include
-else ifeq "$(TARGET)" "x86_64-win32"
- OBJ = $(X86_64_O) chkstk.o $(WIN_O)
- TGT = -DTCC_TARGET_X86_64 -DTCC_TARGET_PE
- XCC = $(TCC) -B$(TOPSRC)/win32 -I$(TOPSRC)/include
-else ifeq "$(TARGET)" "arm-wince"
- OBJ = $(ARM_O) $(WIN_O)
- TGT = -DTCC_TARGET_ARM -DTCC_TARGET_PE
- XCC = $(TCC) -B$(TOPSRC)/win32 -I$(TOPSRC)/include
-else ifeq "$(TARGET)" "i386"
- OBJ = $(I386_O)
- TGT = -DTCC_TARGET_I386
-else ifeq "$(TARGET)" "x86_64"
- OBJ = $(X86_64_O)
- TGT = -DTCC_TARGET_X86_64
-else ifeq "$(TARGET)" "arm-eabihf"
- OBJ = $(ARM_O)
- TGT = -DTCC_TARGET_ARM
- ifneq ($(CROSS),yes)
- # using gcc, need asm
- XCC = $(CC)
- XFLAGS = $(CFLAGS) -fPIC
- XAR = $(AR)
- endif
-else ifeq "$(TARGET)" "arm64"
- OBJ = $(ARM64_O)
- TGT = -DTCC_TARGET_ARM64
-else ifneq "$(TARGET)" ""
- $(error libtcc1.a not supported on target '$(TARGET)')
-endif
+OBJ-i386 = $(I386_O)
+TGT-i386 = -DTCC_TARGET_I386
-ifeq ($(TARGETOS),Darwin)
- XFLAGS += -D_ANSI_SOURCE
- BCHECK_O =
-endif
+OBJ-x86_64 = $(X86_64_O)
+TGT-x86_64 = -DTCC_TARGET_X86_64
+
+OBJ-arm = $(ARM_O)
+TGT-arm = -DTCC_TARGET_ARM
+
+OBJ-arm64 = $(ARM64_O)
+TGT-arm64 = -DTCC_TARGET_ARM64
-all : $(OUT)
+OBJ-i386-win32 = $(I386_O) chkstk.o $(WIN_O)
+TGT-i386-win32 = -DTCC_TARGET_I386 -DTCC_TARGET_PE
-$(OUT) : $(patsubst %.o,%-$(TARGET).o,$(OBJ))
+OBJ-x86_64-win32 = $(X86_64_O) chkstk.o $(WIN_O)
+TGT-x86_64-win32 = -DTCC_TARGET_X86_64 -DTCC_TARGET_PE
+
+OBJ-arm-wince = $(ARM_O) $(WIN_O)
+TGT-arm-wince = -DTCC_TARGET_ARM -DTCC_TARGET_PE
+
+all : $(BIN)
+
+$(BIN) : $(patsubst %.o,$(X)%.o,$(OBJ-$T))
$(XAR) rcs $@ $^
-%-$(TARGET).o : %.c
- $(XCC) -c $< -o $@ $(TGT) $(XFLAGS)
-%-$(TARGET).o : %.S
- $(XCC) -c $< -o $@ $(TGT) $(XFLAGS)
-crt1w-$(TARGET).o : crt1.c
-wincrt1w-$(TARGET).o : wincrt1.c
-bcheck-$(TARGET).o : XFLAGS += -w
+$(X)%.o : %.c
+ $(XCC) -c $< -o $@ $(TGT-$T) $(XFLAGS)
+
+$(X)%.o : %.S
+ $(XCC) -c $< -o $@ $(TGT-$T) $(XFLAGS)
+
+$(X)crt1w.o : crt1.c
+$(X)wincrt1w.o : wincrt1.c
clean :
- rm -f *.a *.o $(OUT)
+ rm -f *.a *.o $(BIN)
diff --git a/lib/bcheck.c b/lib/bcheck.c
index d3b9955..9eb012f 100644
--- a/lib/bcheck.c
+++ b/lib/bcheck.c
@@ -49,7 +49,7 @@
|| defined(__DragonFly__) || defined(__dietlibc__) \
|| defined(__UCLIBC__) || defined(__OpenBSD__) || defined(__NetBSD__) \
|| defined(_WIN32) || defined(TCC_UCLIBC)
-#warning Bound checking does not support malloc (etc.) in this environment.
+//#warning Bound checking does not support malloc (etc.) in this environment.
#undef CONFIG_TCC_MALLOC_HOOKS
#undef HAVE_MEMALIGN
#endif