diff options
Diffstat (limited to 'lib/Makefile')
| -rw-r--r-- | lib/Makefile | 78 |
1 files changed, 31 insertions, 47 deletions
diff --git a/lib/Makefile b/lib/Makefile index 1fb37af..0c32c52 100644 --- a/lib/Makefile +++ b/lib/Makefile @@ -6,34 +6,15 @@ TOP = .. include $(TOP)/Makefile VPATH = $(TOPSRC)/lib $(TOPSRC)/win32/lib -ifndef TARGET - # we're building the native libtcc1.a - ifdef CONFIG_WIN32 - ifeq ($(ARCH),x86_64) - TARGET = x86_64-win32 - else - TARGET = i386-win32 - endif - else ifeq ($(ARCH),i386) - TARGET = i386 - else ifeq ($(ARCH),x86_64) - TARGET = x86_64 - else ifeq ($(ARCH),arm) - TARGET = arm - else ifeq ($(ARCH),arm64) - TARGET = arm64 - endif +ifneq ($(CROSS),yes) + TCC = $(TOP)/tcc$(EXESUF) + OUT = ../libtcc1.a BCHECK_O = bcheck.o +else + TCC = $(TOP)/$(TARGET)-tcc$(EXESUF) + OUT = libtcc1-$(TARGET).a endif -DIR = $(TARGET) - -native : ../libtcc1.a -cross : $(DIR)/libtcc1.a - -native : TCC = $(TOP)/tcc$(EXESUF) -cross : TCC = $(TOP)/$(TARGET)-tcc$(EXESUF) - XCC = $(TCC) -B$(TOPSRC) XAR = $(TCC) -ar @@ -41,33 +22,39 @@ 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) ARM_O = libtcc1.o armeabi.o alloca-arm.o ARM64_O = lib-arm64.o -WIN32_O = crt1.o crt1w.o wincrt1.o wincrt1w.o dllcrt1.o dllmain.o chkstk.o +WIN_O = crt1.o crt1w.o wincrt1.o wincrt1w.o dllcrt1.o dllmain.o ifeq "$(TARGET)" "i386-win32" - OBJ = $(addprefix $(DIR)/,$(I386_O) $(WIN32_O)) + 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 = $(addprefix $(DIR)/,$(X86_64_O) $(WIN32_O)) + 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 = $(addprefix $(DIR)/,$(I386_O)) + OBJ = $(I386_O) TGT = -DTCC_TARGET_I386 else ifeq "$(TARGET)" "x86_64" - OBJ = $(addprefix $(DIR)/,$(X86_64_O)) + OBJ = $(X86_64_O) TGT = -DTCC_TARGET_X86_64 -else ifeq "$(TARGET)" "arm" - OBJ = $(addprefix $(DIR)/,$(ARM_O)) +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 = $(addprefix $(DIR)/,$(ARM64_O)) + OBJ = $(ARM64_O) TGT = -DTCC_TARGET_ARM64 -else +else ifneq "$(TARGET)" "" $(error libtcc1.a not supported on target '$(TARGET)') endif @@ -76,21 +63,18 @@ ifeq ($(TARGETOS),Darwin) BCHECK_O = endif -$(DIR)/libtcc1.a ../libtcc1.a : $(OBJ) - $(XAR) rcs $@ $(OBJ) -$(DIR)/%.o : %.c +all : $(OUT) + +$(OUT) : $(patsubst %.o,%-$(TARGET).o,$(OBJ)) + $(XAR) rcs $@ $^ +%-$(TARGET).o : %.c $(XCC) -c $< -o $@ $(TGT) $(XFLAGS) -$(DIR)/%.o : %.S +%-$(TARGET).o : %.S $(XCC) -c $< -o $@ $(TGT) $(XFLAGS) -$(DIR)/crt1w.o : crt1.c -$(DIR)/wincrt1w.o : wincrt1.c - -$(OBJ) : $(DIR)/exists - -%/exists : - mkdir -p $(DIR) - @echo $@ > $@ +crt1w-$(TARGET).o : crt1.c +wincrt1w-$(TARGET).o : wincrt1.c +bcheck-$(TARGET).o : XFLAGS += -w clean : - rm -rf i386-win32 x86_64-win32 i386 x86_64 arm arm64 + rm -f *.a *.o $(OUT) |
