sdk/Build System: Improved the bootstrap Makefiles
[sdk] / compiler / ecs / Strapfile
1 .PHONY: objdir targetdir
2
3 # CONTENT
4
5 MODULE = ecs
6
7 OBJ = obj/bootstrap/
8
9 RES = 
10
11 TARGET_TYPE = executable
12
13 CONSOLE = -mconsole
14
15 TARGET = $(OBJ)$(MODULE).main.c
16
17 # CROSS-PLATFORM MAGIC
18
19 include ../../default.cf
20
21 SYMBOLS = $(OBJ)ecs.sym
22
23 IMPORTS = $(OBJ)ecs.imp
24
25 SOURCES = ecs.ec
26
27 # TOOLCHAIN
28
29 CPP := cpp
30 CC := gcc
31 ECP := ecp
32 ECC := ecc
33 ECS := ecs
34 EAR := ear
35 LD := gcc
36 AR := ar
37 STRIP := strip
38 UPX := upx
39
40 # FLAGS
41
42 CFLAGS = -fmessage-length=0 -O2 -ffast-math -m32 $(FVISIBILITY) $(FPIC) -w \
43          -DECERE_STATIC
44
45 CECFLAGS =
46
47 ECFLAGS = -nolinenumbers
48
49 OFLAGS = -m32 \
50          -LC:/Program\ Files/ECERE\ SDK/bin \
51          -L../libec/obj/bootstrap \
52          -L../../ecere/obj/bootstrap
53
54 LIBS = -lecBootstrap -lecereBootstrap $(SHAREDLIB) $(EXECUTABLE) $(LINKOPT)
55
56 UPXFLAGS = -9
57
58 # PLATFORM-SPECIFIC OPTIONS
59
60 ifdef LINUX
61
62 LIBS += -lm -ldl
63
64 endif
65
66 # TARGETS
67
68 all: objdir targetdir $(TARGET)
69
70 objdir:
71         $(if $(wildcard $(OBJ)),,$(call mkdirq,$(OBJ)))
72
73 $(OBJ)$(MODULE).main.ec: $(SYMBOLS) $(COBJECTS)
74         $(ECS) -console $(ECSLIBOPT) $(SYMBOLS) $(IMPORTS) -symbols obj/bootstrap -o $(OBJ)$(MODULE).main.ec
75
76 $(OBJ)$(MODULE).main.c: $(OBJ)$(MODULE).main.ec
77         $(ECP) $(CECFLAGS) $(ECFLAGS) $(CFLAGS) -c $(OBJ)$(MODULE).main.ec -o $(OBJ)$(MODULE).main.sym -symbols $(OBJ)
78         $(ECC) $(CECFLAGS) $(ECFLAGS) $(CFLAGS) -c $(OBJ)$(MODULE).main.ec -o $(OBJ)$(MODULE).main.c -symbols $(OBJ)
79
80 $(TARGET): $(SOURCES) $(SYMBOLS) $(OBJ)$(MODULE).main.ec $(OBJ)$(MODULE).main.c
81
82 # SYMBOL RULES
83
84 $(OBJ)ecs.sym: ecs.ec
85         $(ECP) $(CECFLAGS) $(ECFLAGS) $(CFLAGS) -c ecs.ec -o $(OBJ)ecs.sym
86
87 # C OBJECT RULES
88
89 $(OBJ)ecs.c: ecs.ec $(OBJ)ecs.sym | $(SYMBOLS)
90         $(ECC) $(CECFLAGS) $(ECFLAGS) $(CFLAGS) -c ecs.ec -o $(OBJ)ecs.c -symbols $(OBJ)
91
92 update:
93         $(call cpq,$(COBJECTS) $(TARGET),../bootstrap/ecs/bootstrap)
94
95 clean: objdir targetdir
96         $(call rmq,$(OBJ)$(MODULE).main.c $(OBJ)$(MODULE).main.ec $(OBJ)$(MODULE).main$(I) $(OBJ)$(MODULE).main$(S) $(TARGET))
97         $(call rmq,$(OBJECTS))
98         $(call rmq,$(COBJECTS))
99         $(call rmq,$(IMPORTS))
100         $(call rmq,$(SYMBOLS))
101
102 distclean: clean
103         $(call rmdirq,$(OBJ))
104