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
|
---|
10 | ifdef CONFIG_WIN64
|
---|
11 | TARGET = x86_64-win32
|
---|
12 | else
|
---|
13 | ifdef CONFIG_WIN32
|
---|
14 | TARGET = i386-win32
|
---|
15 | else
|
---|
16 | ifeq ($(ARCH),i386)
|
---|
17 | TARGET = i386
|
---|
18 | ifneq ($(TARGETOS),Darwin)
|
---|
19 | XCC = $(CC)
|
---|
20 | endif
|
---|
21 | else
|
---|
22 | ifeq ($(ARCH),x86-64)
|
---|
23 | TARGET = x86_64
|
---|
24 | ifneq ($(TARGETOS),Darwin)
|
---|
25 | XCC = $(CC)
|
---|
26 | endif
|
---|
27 | endif
|
---|
28 | endif
|
---|
29 | endif
|
---|
30 | endif
|
---|
31 | BCHECK_O = bcheck.o
|
---|
32 | endif
|
---|
33 |
|
---|
34 | DIR = $(TARGET)
|
---|
35 |
|
---|
36 | native : ../libtcc1.a
|
---|
37 | cross : $(DIR)/libtcc1.a
|
---|
38 |
|
---|
39 | native : TCC = $(TOP)/tcc$(EXESUF)
|
---|
40 | cross : TCC = $(TOP)/$(TARGET)-tcc$(EXESUF)
|
---|
41 |
|
---|
42 | I386_O = libtcc1.o alloca86.o alloca86-bt.o $(BCHECK_O)
|
---|
43 | X86_64_O = libtcc1.o alloca86_64.o
|
---|
44 | WIN32_O = $(I386_O) crt1.o wincrt1.o dllcrt1.o dllmain.o chkstk.o
|
---|
45 | WIN64_O = $(X86_64_O) crt1.o wincrt1.o dllcrt1.o dllmain.o chkstk.o
|
---|
46 |
|
---|
47 | ifeq "$(TARGET)" "i386-win32"
|
---|
48 | OBJ = $(addprefix $(DIR)/,$(WIN32_O))
|
---|
49 | TGT = -DTCC_TARGET_I386 -DTCC_TARGET_PE
|
---|
50 | XCC = $(TCC) -B$(top_srcdir)/win32 -I$(top_srcdir)/include
|
---|
51 | XAR = $(DIR)/tiny_libmaker$(EXESUF)
|
---|
52 | else
|
---|
53 | ifeq "$(TARGET)" "x86_64-win32"
|
---|
54 | OBJ = $(addprefix $(DIR)/,$(WIN64_O))
|
---|
55 | TGT = -DTCC_TARGET_X86_64 -DTCC_TARGET_PE
|
---|
56 | XCC = $(TCC) -B$(top_srcdir)/win32 -I$(top_srcdir)/include
|
---|
57 | XAR = $(DIR)/tiny_libmaker$(EXESUF)
|
---|
58 | else
|
---|
59 | ifeq "$(TARGET)" "i386"
|
---|
60 | OBJ = $(addprefix $(DIR)/,$(I386_O))
|
---|
61 | TGT = -DTCC_TARGET_I386
|
---|
62 | XCC ?= $(TCC) -B$(TOP)
|
---|
63 | else
|
---|
64 | ifeq "$(TARGET)" "x86_64"
|
---|
65 | OBJ = $(addprefix $(DIR)/,$(X86_64_O))
|
---|
66 | TGT = -DTCC_TARGET_X86_64
|
---|
67 | XCC ?= $(TCC) -B$(TOP)
|
---|
68 | else
|
---|
69 | $(error libtcc1.a not supported on target '$(TARGET)')
|
---|
70 | endif
|
---|
71 | endif
|
---|
72 | endif
|
---|
73 | endif
|
---|
74 |
|
---|
75 | XFLAGS = $(CPPFLAGS) $(CFLAGS) $(TGT)
|
---|
76 |
|
---|
77 | ifeq ($(TARGETOS),Darwin)
|
---|
78 | XAR = $(DIR)/tiny_libmaker$(EXESUF)
|
---|
79 | XFLAGS += -D_ANSI_SOURCE
|
---|
80 | BCHECK_O =
|
---|
81 | endif
|
---|
82 |
|
---|
83 | ifdef XAR
|
---|
84 | AR = $(XAR)
|
---|
85 | endif
|
---|
86 |
|
---|
87 | $(DIR)/libtcc1.a ../libtcc1.a : $(OBJ) $(XAR)
|
---|
88 | $(AR) rcs $@ $(OBJ)
|
---|
89 | $(DIR)/%.o : %.c
|
---|
90 | $(XCC) -c $< -o $@ $(XFLAGS)
|
---|
91 | $(DIR)/%.o : %.S
|
---|
92 | $(XCC) -c $< -o $@ $(XFLAGS)
|
---|
93 | $(DIR)/%$(EXESUF) : $(TOP)/win32/tools/%.c
|
---|
94 | $(CC) -o $@ $< $(XFLAGS) $(LDFLAGS)
|
---|
95 |
|
---|
96 | $(OBJ) $(XAR) : $(DIR)/exists
|
---|
97 | $(DIR)/exists :
|
---|
98 | mkdir -p $(DIR)
|
---|
99 | @echo $@ > $@
|
---|
100 |
|
---|
101 | clean :
|
---|
102 | rm -rfv i386-win32 x86_64-win32 i386 x86_64
|
---|