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