2ad4dc678bd7b3ab86a759eb2c609adb0cbb3cc8
[sdk] / compiler / bootstrap / ecs / Makefile
1 .PHONY: all objdir clean realclean distclean
2
3 # CONTENT
4
5 MODULE := ecs
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)/ecs$(E)
17
18 OBJECTS = $(OBJ)ecs.o $(OBJ)$(MODULE).main$(O)
19
20 SOURCES = bootstrap/ecs.c bootstrap/ecs.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 $(OBJ)ecs.o: bootstrap/ecs.c
93         $(CC) $(CFLAGS) -c bootstrap/ecs.c -o $(OBJ)ecs.o
94
95 $(OBJ)ecs.main.o: bootstrap/ecs.main.c
96         $(CC) $(CFLAGS) -c bootstrap/ecs.main.c -o $(OBJ)ecs.main.o
97
98 clean: objdir
99         $(call rmq,$(TARGET))
100         $(call rmq,$(OBJECTS))
101
102 realclean:
103         $(call rmrq,$(OBJ))
104
105 distclean:
106         $(call rmrq,obj/)