sdk tarball/Windows: Fixed build by removing call to escspaces
[sdk] / compiler / ecc / Makefile
1 .PHONY: all objdir clean realclean distclean
2
3 # CORE VARIABLES
4
5 MODULE := ecc
6 CONFIG := release
7 ifndef COMPILER
8 COMPILER := default
9 endif
10
11 TARGET_TYPE = executable
12
13 # FLAGS
14
15 ECFLAGS =
16 ifndef DEBIAN_PACKAGE
17 CFLAGS =
18 endif
19 CECFLAGS =
20 OFLAGS =
21 LDFLAGS =
22 LIBS =
23
24 ifdef DEBUG
25 NOSTRIP := y
26 endif
27
28 ifdef EXECUTABLE_TARGET
29 CONSOLE = -mconsole
30 endif
31
32 # INCLUDES
33
34 _CF_DIR = ../../
35
36 include $(_CF_DIR)crossplatform.mk
37 include $(_CF_DIR)include.mk
38
39 # CUSTOM TOOLCHAIN / COMPILER CONFIG
40
41 export LD_LIBRARY_PATH = ../../obj/$(PLATFORM)/lib/
42 export DYLD_LIBRARY_PATH = ../../obj/$(PLATFORM)/lib/
43 ECP := $(call psep,../bootstrap/obj/bin.$(PLATFORM)/ecp)
44 ECC := $(call psep,../bootstrap/obj/bin.$(PLATFORM)/ecc)
45 ECS := $(call psep,../bootstrap/obj/bin.$(PLATFORM)/ecs)
46 EAR := $(call psep,../../obj/$(PLATFORM)/bin/ear)
47
48 # END OF CUSTOM TOOLCHAIN / COMPILER CONFIG
49
50 # POST-INCLUDES VARIABLES
51
52 OBJ = obj/$(CONFIG).$(PLATFORM)/
53
54 RES = 
55
56 TARGET = obj/$(CONFIG).$(PLATFORM)/ecc$(E)
57
58 _ECSOURCES = \
59         ecc.ec
60
61 ECSOURCES = $(call shwspace,$(_ECSOURCES))
62
63 COBJECTS = $(call shwspace,$(addprefix $(OBJ),$(patsubst %.ec,%$(C),$(notdir $(_ECSOURCES)))))
64
65 SYMBOLS = $(call shwspace,$(addprefix $(OBJ),$(patsubst %.ec,%$(S),$(notdir $(_ECSOURCES)))))
66
67 IMPORTS = $(call shwspace,$(addprefix $(OBJ),$(patsubst %.ec,%$(I),$(notdir $(_ECSOURCES)))))
68
69 ECOBJECTS = $(call shwspace,$(addprefix $(OBJ),$(patsubst %.ec,%$(O),$(notdir $(_ECSOURCES)))))
70
71 BOWLS = $(call shwspace,$(addprefix $(OBJ),$(patsubst %.ec,%$(B),$(notdir $(_ECSOURCES)))))
72
73 OBJECTS = $(ECOBJECTS) $(OBJ)$(MODULE).main$(O)
74
75 SOURCES = $(ECSOURCES)
76
77 RESOURCES = \
78         locale/zh_CN/LC_MESSAGES/ecc.mo \
79         locale/es_ES/LC_MESSAGES/ecc.mo
80
81 LIBS += $(SHAREDLIB) $(EXECUTABLE) $(LINKOPT)
82
83 ifndef STATIC_LIBRARY_TARGET
84 LIBS += \
85         $(call _L,ecere)
86 endif
87
88 CFLAGS += \
89          $(if $(DEBIAN_PACKAGE),$(CPPFLAGS),) $(if $(DEBUG), -D_DEBUG,) \
90          $(if $(DEBUG), -g, -O2 -ffast-math) $(FORCE_32_BIT) $(FPIC) -w
91
92
93 ECFLAGS += \
94          -nolinenumbers
95
96
97
98
99 CECFLAGS += -cpp $(CPP)
100
101 ifndef STATIC_LIBRARY_TARGET
102 OFLAGS += $(FORCE_32_BIT) \
103          -L../../obj/$(PLATFORM)/bin \
104          -L../../obj/$(PLATFORM)/lib
105 OFLAGS += $(LDFLAGS)
106 endif
107
108 # TARGETS
109
110 all: objdir $(TARGET)
111
112 objdir:
113         $(if $(wildcard $(OBJ)),,$(call mkdirq,$(OBJ)))
114
115 $(OBJ)$(MODULE).main.ec: $(SYMBOLS) $(COBJECTS)
116         $(ECS) -console $(ECSLIBOPT) $(SYMBOLS) $(IMPORTS) -symbols obj/$(CONFIG).$(PLATFORM) -o $(OBJ)$(MODULE).main.ec
117
118 $(OBJ)$(MODULE).main.c: $(OBJ)$(MODULE).main.ec
119         $(ECP) $(CECFLAGS) $(ECFLAGS) $(CFLAGS) -c $(OBJ)$(MODULE).main.ec -o $(OBJ)$(MODULE).main.sym -symbols $(OBJ)
120         $(ECC) $(CECFLAGS) $(ECFLAGS) $(CFLAGS) $(FVISIBILITY) -c $(OBJ)$(MODULE).main.ec -o $(OBJ)$(MODULE).main.c -symbols $(OBJ)
121
122 $(SYMBOLS): | objdir
123 $(OBJECTS): | objdir
124 $(TARGET): $(SOURCES) $(RESOURCES) $(SYMBOLS) $(OBJECTS) | objdir
125 ifndef STATIC_LIBRARY_TARGET
126         $(CC) $(OFLAGS) $(OBJECTS) $(LIBS) -o $(TARGET) $(INSTALLNAME)
127 ifndef NOSTRIP
128         $(STRIP) $(STRIPOPT) $(TARGET)
129 endif
130         $(EAR) $(EARFLAGS) $(TARGET) locale/zh_CN/LC_MESSAGES/ecc.mo "locale/zh_CN/LC_MESSAGES"
131         $(EAR) $(EARFLAGS) $(TARGET) locale/es_ES/LC_MESSAGES/ecc.mo "locale/es_ES/LC_MESSAGES"
132 else
133         $(AR) rcs $(TARGET) $(OBJECTS) $(LIBS)
134 endif
135         $(call cpq,$(TARGET),../../obj/$(PLATFORM)/bin/)
136
137 # SYMBOL RULES
138
139 $(OBJ)ecc.sym: ecc.ec
140         $(ECP) $(CECFLAGS) $(ECFLAGS) $(CFLAGS) -c ecc.ec -o $(OBJ)ecc.sym
141
142 # C OBJECT RULES
143
144 $(OBJ)ecc.c: ecc.ec $(OBJ)ecc.sym | $(SYMBOLS)
145         $(ECC) $(CECFLAGS) $(ECFLAGS) $(CFLAGS) $(FVISIBILITY) -c ecc.ec -o $(OBJ)ecc.c -symbols $(OBJ)
146
147 # OBJECT RULES
148
149 $(OBJ)ecc.o: $(OBJ)ecc.c
150         $(CC) $(CFLAGS) $(FVISIBILITY) -c $(OBJ)ecc.c -o $(OBJ)ecc.o
151
152 $(OBJ)$(MODULE).main$(O): $(OBJ)$(MODULE).main.c
153         $(CC) $(CFLAGS) $(FVISIBILITY) -c $(OBJ)$(MODULE).main.c -o $(OBJ)$(MODULE).main$(O)
154
155 clean: objdir
156         $(call rmq,$(OBJ)$(MODULE).main.o $(OBJ)$(MODULE).main.c $(OBJ)$(MODULE).main.ec $(OBJ)$(MODULE).main$(I) $(OBJ)$(MODULE).main$(S) $(TARGET))
157         $(call rmq,$(_OBJECTS))
158         $(call rmq,$(ECOBJECTS))
159         $(call rmq,$(COBJECTS))
160         $(call rmq,$(BOWLS))
161         $(call rmq,$(IMPORTS))
162         $(call rmq,$(SYMBOLS))
163
164 realclean: clean
165         $(call rmrq,$(OBJ))
166
167 distclean:
168         $(call rmrq,obj/)