51e3ee8b91c98cd20875eb28478348ed22ba8deb
[sdk] / compiler / bootstrap / ecc / Makefile
1 .PHONY: all objdir clean realclean distclean
2
3 # CONTENT
4
5 MODULE := ecc
6 CONFIG := bootstrap
7 COMPILER := default
8 TARGET_TYPE = executable
9
10 OBJ = obj/$(CONFIG).$(PLATFORM)/
11
12 RES = 
13
14 CONSOLE = 
15
16 TARGET = obj/$(CONFIG).$(PLATFORM)/ecc$(E)
17
18 OBJECTS = $(OBJ)ecc.o $(OBJ)$(MODULE).main$(O)
19
20 SOURCES = bootstrap/ecc.c bootstrap/ecc.main.c
21
22 # CROSS-PLATFORM MAGIC
23
24 include ../../../include.mk
25
26 # TOOLCHAIN
27
28 CPP := cpp
29 CC := gcc
30 ECP := ecp
31 ECC := ecc
32 ECS := ecs
33 EAR := ear
34 LD := gcc
35 AR := ar
36 STRIP := strip
37 UPX := upx
38
39 # FLAGS
40
41 CFLAGS = -fmessage-length=0 -O2 -ffast-math -m32 $(FPIC) -w \
42          -DECERE_STATIC
43
44 CECFLAGS =
45
46 ECFLAGS = -nolinenumbers
47
48 OFLAGS = -m32 \
49          -L../ecere/obj/bootstrap.$(PLATFORM) \
50          -L../libec/obj/bootstrap.$(PLATFORM)
51
52 LIBS = -lecereBootstrap -lecBootstrap $(SHAREDLIB) $(EXECUTABLE) $(LINKOPT)
53
54 UPXFLAGS = -9 -q
55
56 # HARD CODED PLATFORM-SPECIFIC OPTIONS
57 ifdef LINUX
58 OFLAGS += -Wl,--no-undefined
59 endif
60
61 # PLATFORM-SPECIFIC OPTIONS
62
63 ifdef WINDOWS
64
65 LIBS += -Wl,--enable-stdcall-fixup
66
67 else
68 ifdef LINUX
69
70 LIBS += -lm -ldl
71
72 else
73 ifdef OSX
74
75 LIBS += -lm -ldl
76
77 endif
78 endif
79 endif
80
81 # TARGETS
82
83 all: objdir $(TARGET)
84
85 objdir:
86         $(if $(wildcard $(OBJ)),,$(call mkdirq,$(OBJ)))
87
88 $(TARGET): $(SOURCES) $(RESOURCES) | objdir $(SYMBOLS) $(OBJECTS)
89         $(CC) $(OFLAGS) $(OBJECTS) $(LIBS) -o $(TARGET) $(INSTALLNAME)
90         $(STRIP) $(STRIPOPT) $(TARGET)
91
92 # OBJECT RULES
93
94 $(OBJ)ecc.o: bootstrap/ecc.c
95         $(CC) $(CFLAGS) $(FVISIBILITY) -c bootstrap/ecc.c -o $(OBJ)ecc.o
96
97 $(OBJ)ecc.main.o: bootstrap/ecc.main.c
98         $(CC) $(CFLAGS) $(FVISIBILITY) -c bootstrap/ecc.main.c -o $(OBJ)ecc.main.o
99
100 clean: objdir
101         $(call rmq,$(TARGET))
102         $(call rmq,$(OBJECTS))
103
104 realclean:
105         $(call rmrq,$(OBJ))
106
107 distclean:
108         $(call rmrq,obj/)