Subversion Repositories Kolibri OS

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
6429 siemargl 1
#
2
# Tiny C Compiler Makefile for libtcc1.a
3
#
4
 
5
TOP = ..
6
include $(TOP)/Makefile
7
VPATH = $(top_srcdir)/lib $(top_srcdir)/win32/lib
8
 
9
ifndef TARGET # native library
10
 ifdef CONFIG_WIN64
11
  TARGET = x86_64-win
12
 else
13
 ifdef CONFIG_WIN32
14
  TARGET = i386-win
15
 else
16
 ifeq ($(ARCH),i386)
17
  TARGET = i386
18
 else
19
 ifeq ($(ARCH),x86-64)
20
  TARGET = x86_64
21
 else
22
 ifeq ($(ARCH),arm)
23
  TARGET = arm
24
  XCC = $(CC)
25
 else
26
 ifeq ($(ARCH),arm64)
27
  TARGET = arm64
28
 else
29
 endif
30
 endif
31
 endif
32
 endif
33
 endif
34
 endif
35
endif
36
 
37
BCHECK_O = bcheck.o
38
DIR = $(TARGET)
39
 
40
native : ../libtcc1.a
41
cross : $(DIR)/libtcc1.a
42
 
43
native : TCC = $(TOP)/tcc$(EXESUF)
44
cross : TCC = $(TOP)/$(TARGET)-tcc$(EXESUF)
45
 
46
I386_O = libtcc1.o alloca86.o alloca86-bt.o $(BCHECK_O)
47
X86_64_O = libtcc1.o alloca86_64.o alloca86_64-bt.o $(BCHECK_O)
48
ARM_O = libtcc1.o armeabi.o alloca-arm.o
49
WIN32_O = $(I386_O) crt1.o wincrt1.o dllcrt1.o dllmain.o chkstk.o
50
WIN64_O = $(X86_64_O) crt1.o wincrt1.o dllcrt1.o dllmain.o chkstk.o
51
ARM64_O = lib-arm64.o
52
 
53
# build TCC runtime library to contain PIC code, so it can be linked
54
# into shared libraries
55
PICFLAGS = -fPIC
56
 
57
# don't compile with -fstack-protector-strong, TCC doesn't handle it
58
# correctly
59
CFLAGS := $(filter-out -fstack-protector-strong,$(CFLAGS))
60
 
61
ifeq "$(TARGET)" "i386-win"
62
 OBJ = $(addprefix $(DIR)/,$(WIN32_O))
63
 TGT = -DTCC_TARGET_I386 -DTCC_TARGET_PE
64
 XCC ?= $(TCC) -B$(top_srcdir)/win32 -I$(top_srcdir)/include
65
 XAR ?= $(DIR)/tiny_libmaker$(EXESUF)
66
 PICFLAGS =
67
else
68
ifeq "$(TARGET)" "x86_64-win"
69
 OBJ = $(addprefix $(DIR)/,$(WIN64_O))
70
 TGT = -DTCC_TARGET_X86_64 -DTCC_TARGET_PE
71
 XCC = $(TCC) -B$(top_srcdir)/win32 -I$(top_srcdir)/include
72
 XAR ?= $(DIR)/tiny_libmaker$(EXESUF)
73
 PICFLAGS =
74
else
75
ifeq "$(TARGET)" "i386"
76
 OBJ = $(addprefix $(DIR)/,$(I386_O))
77
 TGT = -DTCC_TARGET_I386
78
 XCC ?= $(TCC) -B$(TOP)
79
else
80
ifeq "$(TARGET)" "x86_64"
81
 OBJ = $(addprefix $(DIR)/,$(X86_64_O))
82
 TGT = -DTCC_TARGET_X86_64
83
 XCC ?= $(TCC) -B$(TOP)
84
else
85
ifeq "$(TARGET)" "arm"
86
 OBJ = $(addprefix $(DIR)/,$(ARM_O))
87
 TGT = -DTCC_TARGET_ARM
88
 XCC ?= $(TCC) -B$(TOP)
89
else
90
ifeq "$(TARGET)" "arm64"
91
 OBJ = $(addprefix $(DIR)/,$(ARM64_O))
92
 TGT = -DTCC_TARGET_ARM64
93
 XCC ?= $(TCC) -B$(TOP)
94
else
95
 $(error libtcc1.a not supported on target '$(TARGET)')
96
endif
97
endif
98
endif
99
endif
100
endif
101
endif
102
 
103
XFLAGS = $(filter-out -b,$(CPPFLAGS) $(CFLAGS) $(PICFLAGS) $(TGT))
104
 
105
ifeq ($(TARGETOS),Darwin)
106
 XAR = $(DIR)/tiny_libmaker$(EXESUF)
107
 XFLAGS += -D_ANSI_SOURCE
108
 BCHECK_O =
109
endif
110
 
111
XAR ?= $(AR)
112
 
113
$(DIR)/libtcc1.a ../libtcc1.a : $(OBJ) $(XAR)
114
	$(XAR) rcs $@ $(OBJ)
115
$(DIR)/%.o : %.c
116
	$(XCC) -c $< -o $@ $(XFLAGS)
117
$(DIR)/%.o : %.S
118
	$(XCC) -c $< -o $@ $(XFLAGS)
119
$(DIR)/%$(EXESUF) : $(TOP)/win32/tools/%.c
120
	$(CC) -o $@ $< $(XFLAGS) $(LDFLAGS)
121
 
122
$(OBJ) $(XAR) : $(DIR)/exists
123
$(DIR)/exists :
124
	mkdir -p $(DIR)
125
	@echo $@ > $@
126
 
127
clean :
128
	rm -rfv i386-win x86_64-win i386 x86_64 arm64