83705d3ed8b2528fcbb910357a0a33d020c4a6fc
[sdk] / ecere / Makefile.ecereCOM
1 .PHONY: all objdir cleantarget clean realclean distclean
2
3 # CORE VARIABLES
4
5 MODULE := ecereCOM
6 CONFIG := release
7 ifndef COMPILER
8 COMPILER := default
9 endif
10
11 TARGET_TYPE = sharedlib
12
13 # FLAGS
14
15 ECFLAGS =
16 ifndef DEBIAN_PACKAGE
17 CFLAGS =
18 LDFLAGS =
19 endif
20 PRJ_CFLAGS =
21 CECFLAGS =
22 OFLAGS =
23 LIBS =
24
25 ifdef DEBUG
26 NOSTRIP := y
27 endif
28
29 CONSOLE = -mwindows
30
31 # INCLUDES
32
33 _CF_DIR = ../
34 USE_BOOTSTRAP := defined
35
36 include $(_CF_DIR)crossplatform.mk
37 include $(_CF_DIR)default.cf
38
39 # POST-INCLUDES VARIABLES
40
41 OBJ = obj/$(MODULE).$(CONFIG).$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/
42
43 RES = 
44
45 ifdef LINUX_TARGET
46 TARGET = obj/$(MODULE).$(CONFIG).$(PLATFORM)/$(LP)ecereCOM$(SO).0.44
47 SONAME = -Wl,-soname,libecereCOM.so.0
48 else
49 TARGET = obj/$(MODULE).$(CONFIG).$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)ecereCOM$(SO)
50 SONAME =
51 endif
52
53 _ECSOURCES = \
54         src/sys/Mutex.ec \
55         src/sys/i18n.ec \
56         src/com/containers/Array.ec \
57         src/com/containers/AVLTree.ec \
58         src/com/containers/BuiltInContainer.ec \
59         src/com/containers/Container.ec \
60         src/com/containers/CustomAVLTree.ec \
61         src/com/containers/LinkList.ec \
62         src/com/containers/List.ec \
63         src/com/containers/Map.ec \
64         src/com/BinaryTree.ec \
65         src/com/BTNode.ec \
66         src/com/dataTypes.ec \
67         src/com/instance.ec \
68         src/com/String.ec \
69         src/com/OldList.ec
70
71 ECSOURCES = $(call shwspace,$(_ECSOURCES))
72
73 COBJECTS = $(call shwspace,$(addprefix $(OBJ),$(patsubst %.ec,%$(C),$(notdir $(_ECSOURCES)))))
74
75 SYMBOLS = $(call shwspace,$(addprefix $(OBJ),$(patsubst %.ec,%$(S),$(notdir $(_ECSOURCES)))))
76
77 IMPORTS = $(call shwspace,$(addprefix $(OBJ),$(patsubst %.ec,%$(I),$(notdir $(_ECSOURCES)))))
78
79 ECOBJECTS = $(call shwspace,$(addprefix $(OBJ),$(patsubst %.ec,%$(O),$(notdir $(_ECSOURCES)))))
80
81 BOWLS = $(call shwspace,$(addprefix $(OBJ),$(patsubst %.ec,%$(B),$(notdir $(_ECSOURCES)))))
82
83 _OBJECTS = \
84         $(OBJ)instance.c.o
85
86 OBJECTS = $(_OBJECTS) $(ECOBJECTS) $(OBJ)$(MODULE).main$(O)
87
88 SOURCES = $(ECSOURCES) \
89         src/com/instance.c
90
91 RESOURCES =
92
93 LIBS += $(SHAREDLIB) $(EXECUTABLE) $(LINKOPT)
94
95 ifndef STATIC_LIBRARY_TARGET
96 LIBS +=
97 endif
98
99 PRJ_CFLAGS += \
100          $(if $(DEBUG), -g, -O2 -ffast-math) $(FORCE_32_BIT) $(FPIC) -w \
101                          -DBUILDING_ECERE_COM \
102                          -DECERE_COM_MODULE \
103                          -DECERE_NOFILE
104
105
106 ECFLAGS += \
107          -nolinenumbers -defaultns ecere
108
109
110 # PLATFORM-SPECIFIC OPTIONS
111
112 ifdef LINUX_TARGET
113
114 ifndef STATIC_LIBRARY_TARGET
115 LIBS += \
116         $(call _L,dl) \
117         $(call _L,m) \
118         $(call _L,pthread)
119 endif
120
121 endif
122
123
124
125 CECFLAGS += -cpp $(_CPP)
126
127 OFLAGS += $(FORCE_32_BIT)
128
129 # TARGETS
130
131 all: objdir $(TARGET)
132
133 objdir:
134         $(if $(wildcard $(OBJ)),,$(call mkdirq,$(OBJ)))
135
136 $(OBJ)$(MODULE).main.ec: $(SYMBOLS) $(COBJECTS)
137         $(ECS) $(ECSLIBOPT) $(SYMBOLS) $(IMPORTS) -symbols obj/$(MODULE).$(CONFIG).$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX) -o $(OBJ)$(MODULE).main.ec
138
139 $(OBJ)$(MODULE).main.c: $(OBJ)$(MODULE).main.ec
140         $(ECP) $(CFLAGS) $(CECFLAGS) $(ECFLAGS) $(PRJ_CFLAGS) -c $(OBJ)$(MODULE).main.ec -o $(OBJ)$(MODULE).main.sym -symbols $(OBJ)
141         $(ECC) $(CFLAGS) $(CECFLAGS) $(ECFLAGS) $(PRJ_CFLAGS) $(FVISIBILITY) -c $(OBJ)$(MODULE).main.ec -o $(OBJ)$(MODULE).main.c -symbols $(OBJ)
142
143 $(SYMBOLS): | objdir
144 $(OBJECTS): | objdir
145 $(TARGET): $(SOURCES) $(RESOURCES) $(SYMBOLS) $(OBJECTS) | objdir
146 ifndef STATIC_LIBRARY_TARGET
147         $(CC) $(OFLAGS) $(OBJECTS) $(LIBS) -o $(TARGET) $(INSTALLNAME) $(SONAME)
148 ifndef NOSTRIP
149         $(STRIP) $(STRIPOPT) $(TARGET)
150 endif
151 else
152         $(AR) rcs $(TARGET) $(OBJECTS) $(LIBS)
153 endif
154         $(call cpq,$(TARGET),../$(SODESTDIR))
155 ifdef LINUX_TARGET
156         ln -sf $(LP)$(MODULE)$(SO).0.44 ../$(SODESTDIR)$(LP)$(MODULE)$(SO).0
157         ln -sf $(LP)$(MODULE)$(SO).0.44 ../$(SODESTDIR)$(LP)$(MODULE)$(SO)
158 endif
159
160 # SYMBOL RULES
161
162 $(OBJ)Mutex.sym: src/sys/Mutex.ec
163         $(ECP) $(CFLAGS) $(CECFLAGS) $(ECFLAGS) $(PRJ_CFLAGS) -c src/sys/Mutex.ec -o $(OBJ)Mutex.sym
164
165 $(OBJ)i18n.sym: src/sys/i18n.ec
166         $(ECP) $(CFLAGS) $(CECFLAGS) $(ECFLAGS) $(PRJ_CFLAGS) -c src/sys/i18n.ec -o $(OBJ)i18n.sym
167
168 $(OBJ)Array.sym: src/com/containers/Array.ec
169         $(ECP) $(CFLAGS) $(CECFLAGS) $(ECFLAGS) $(PRJ_CFLAGS) -c src/com/containers/Array.ec -o $(OBJ)Array.sym
170
171 $(OBJ)AVLTree.sym: src/com/containers/AVLTree.ec
172         $(ECP) $(CFLAGS) $(CECFLAGS) $(ECFLAGS) $(PRJ_CFLAGS) -c src/com/containers/AVLTree.ec -o $(OBJ)AVLTree.sym
173
174 $(OBJ)BuiltInContainer.sym: src/com/containers/BuiltInContainer.ec
175         $(ECP) $(CFLAGS) $(CECFLAGS) $(ECFLAGS) $(PRJ_CFLAGS) -c src/com/containers/BuiltInContainer.ec -o $(OBJ)BuiltInContainer.sym
176
177 $(OBJ)Container.sym: src/com/containers/Container.ec
178         $(ECP) $(CFLAGS) $(CECFLAGS) $(ECFLAGS) $(PRJ_CFLAGS) -c src/com/containers/Container.ec -o $(OBJ)Container.sym
179
180 $(OBJ)CustomAVLTree.sym: src/com/containers/CustomAVLTree.ec
181         $(ECP) $(CFLAGS) $(CECFLAGS) $(ECFLAGS) $(PRJ_CFLAGS) -c src/com/containers/CustomAVLTree.ec -o $(OBJ)CustomAVLTree.sym
182
183 $(OBJ)LinkList.sym: src/com/containers/LinkList.ec
184         $(ECP) $(CFLAGS) $(CECFLAGS) $(ECFLAGS) $(PRJ_CFLAGS) -c src/com/containers/LinkList.ec -o $(OBJ)LinkList.sym
185
186 $(OBJ)List.sym: src/com/containers/List.ec
187         $(ECP) $(CFLAGS) $(CECFLAGS) $(ECFLAGS) $(PRJ_CFLAGS) -c src/com/containers/List.ec -o $(OBJ)List.sym
188
189 $(OBJ)Map.sym: src/com/containers/Map.ec
190         $(ECP) $(CFLAGS) $(CECFLAGS) $(ECFLAGS) $(PRJ_CFLAGS) -c src/com/containers/Map.ec -o $(OBJ)Map.sym
191
192 $(OBJ)BinaryTree.sym: src/com/BinaryTree.ec
193         $(ECP) $(CFLAGS) $(CECFLAGS) $(ECFLAGS) $(PRJ_CFLAGS) -c src/com/BinaryTree.ec -o $(OBJ)BinaryTree.sym
194
195 $(OBJ)BTNode.sym: src/com/BTNode.ec
196         $(ECP) $(CFLAGS) $(CECFLAGS) $(ECFLAGS) $(PRJ_CFLAGS) -c src/com/BTNode.ec -o $(OBJ)BTNode.sym
197
198 $(OBJ)dataTypes.sym: src/com/dataTypes.ec
199         $(ECP) $(CFLAGS) $(CECFLAGS) $(ECFLAGS) $(PRJ_CFLAGS) -c src/com/dataTypes.ec -o $(OBJ)dataTypes.sym
200
201 $(OBJ)instance.sym: src/com/instance.ec
202         $(ECP) $(CFLAGS) $(CECFLAGS) $(ECFLAGS) $(PRJ_CFLAGS) -c src/com/instance.ec -o $(OBJ)instance.sym
203
204 $(OBJ)String.sym: src/com/String.ec
205         $(ECP) $(CFLAGS) $(CECFLAGS) $(ECFLAGS) $(PRJ_CFLAGS) -c src/com/String.ec -o $(OBJ)String.sym
206
207 $(OBJ)OldList.sym: src/com/OldList.ec
208         $(ECP) $(CFLAGS) $(CECFLAGS) $(ECFLAGS) $(PRJ_CFLAGS) -c src/com/OldList.ec -o $(OBJ)OldList.sym
209
210 # C OBJECT RULES
211
212 $(OBJ)Mutex.c: src/sys/Mutex.ec $(OBJ)Mutex.sym | $(SYMBOLS)
213         $(ECC) $(CFLAGS) $(CECFLAGS) $(ECFLAGS) $(PRJ_CFLAGS) $(FVISIBILITY) -c src/sys/Mutex.ec -o $(OBJ)Mutex.c -symbols $(OBJ)
214
215 $(OBJ)i18n.c: src/sys/i18n.ec $(OBJ)i18n.sym | $(SYMBOLS)
216         $(ECC) $(CFLAGS) $(CECFLAGS) $(ECFLAGS) $(PRJ_CFLAGS) $(FVISIBILITY) -c src/sys/i18n.ec -o $(OBJ)i18n.c -symbols $(OBJ)
217
218 $(OBJ)Array.c: src/com/containers/Array.ec $(OBJ)Array.sym | $(SYMBOLS)
219         $(ECC) $(CFLAGS) $(CECFLAGS) $(ECFLAGS) $(PRJ_CFLAGS) $(FVISIBILITY) -c src/com/containers/Array.ec -o $(OBJ)Array.c -symbols $(OBJ)
220
221 $(OBJ)AVLTree.c: src/com/containers/AVLTree.ec $(OBJ)AVLTree.sym | $(SYMBOLS)
222         $(ECC) $(CFLAGS) $(CECFLAGS) $(ECFLAGS) $(PRJ_CFLAGS) $(FVISIBILITY) -c src/com/containers/AVLTree.ec -o $(OBJ)AVLTree.c -symbols $(OBJ)
223
224 $(OBJ)BuiltInContainer.c: src/com/containers/BuiltInContainer.ec $(OBJ)BuiltInContainer.sym | $(SYMBOLS)
225         $(ECC) $(CFLAGS) $(CECFLAGS) $(ECFLAGS) $(PRJ_CFLAGS) $(FVISIBILITY) -c src/com/containers/BuiltInContainer.ec -o $(OBJ)BuiltInContainer.c -symbols $(OBJ)
226
227 $(OBJ)Container.c: src/com/containers/Container.ec $(OBJ)Container.sym | $(SYMBOLS)
228         $(ECC) $(CFLAGS) $(CECFLAGS) $(ECFLAGS) $(PRJ_CFLAGS) $(FVISIBILITY) -c src/com/containers/Container.ec -o $(OBJ)Container.c -symbols $(OBJ)
229
230 $(OBJ)CustomAVLTree.c: src/com/containers/CustomAVLTree.ec $(OBJ)CustomAVLTree.sym | $(SYMBOLS)
231         $(ECC) $(CFLAGS) $(CECFLAGS) $(ECFLAGS) $(PRJ_CFLAGS) $(FVISIBILITY) -c src/com/containers/CustomAVLTree.ec -o $(OBJ)CustomAVLTree.c -symbols $(OBJ)
232
233 $(OBJ)LinkList.c: src/com/containers/LinkList.ec $(OBJ)LinkList.sym | $(SYMBOLS)
234         $(ECC) $(CFLAGS) $(CECFLAGS) $(ECFLAGS) $(PRJ_CFLAGS) $(FVISIBILITY) -c src/com/containers/LinkList.ec -o $(OBJ)LinkList.c -symbols $(OBJ)
235
236 $(OBJ)List.c: src/com/containers/List.ec $(OBJ)List.sym | $(SYMBOLS)
237         $(ECC) $(CFLAGS) $(CECFLAGS) $(ECFLAGS) $(PRJ_CFLAGS) $(FVISIBILITY) -c src/com/containers/List.ec -o $(OBJ)List.c -symbols $(OBJ)
238
239 $(OBJ)Map.c: src/com/containers/Map.ec $(OBJ)Map.sym | $(SYMBOLS)
240         $(ECC) $(CFLAGS) $(CECFLAGS) $(ECFLAGS) $(PRJ_CFLAGS) $(FVISIBILITY) -c src/com/containers/Map.ec -o $(OBJ)Map.c -symbols $(OBJ)
241
242 $(OBJ)BinaryTree.c: src/com/BinaryTree.ec $(OBJ)BinaryTree.sym | $(SYMBOLS)
243         $(ECC) $(CFLAGS) $(CECFLAGS) $(ECFLAGS) $(PRJ_CFLAGS) $(FVISIBILITY) -c src/com/BinaryTree.ec -o $(OBJ)BinaryTree.c -symbols $(OBJ)
244
245 $(OBJ)BTNode.c: src/com/BTNode.ec $(OBJ)BTNode.sym | $(SYMBOLS)
246         $(ECC) $(CFLAGS) $(CECFLAGS) $(ECFLAGS) $(PRJ_CFLAGS) $(FVISIBILITY) -c src/com/BTNode.ec -o $(OBJ)BTNode.c -symbols $(OBJ)
247
248 $(OBJ)dataTypes.c: src/com/dataTypes.ec $(OBJ)dataTypes.sym | $(SYMBOLS)
249         $(ECC) $(CFLAGS) $(CECFLAGS) $(ECFLAGS) $(PRJ_CFLAGS) $(FVISIBILITY) -c src/com/dataTypes.ec -o $(OBJ)dataTypes.c -symbols $(OBJ)
250
251 $(OBJ)instance.c: src/com/instance.ec $(OBJ)instance.sym | $(SYMBOLS)
252         $(ECC) $(CFLAGS) $(CECFLAGS) $(ECFLAGS) $(PRJ_CFLAGS) $(FVISIBILITY) -c src/com/instance.ec -o $(OBJ)instance.c -symbols $(OBJ)
253
254 $(OBJ)String.c: src/com/String.ec $(OBJ)String.sym | $(SYMBOLS)
255         $(ECC) $(CFLAGS) $(CECFLAGS) $(ECFLAGS) $(PRJ_CFLAGS) $(FVISIBILITY) -c src/com/String.ec -o $(OBJ)String.c -symbols $(OBJ)
256
257 $(OBJ)OldList.c: src/com/OldList.ec $(OBJ)OldList.sym | $(SYMBOLS)
258         $(ECC) $(CFLAGS) $(CECFLAGS) $(ECFLAGS) $(PRJ_CFLAGS) $(FVISIBILITY) -c src/com/OldList.ec -o $(OBJ)OldList.c -symbols $(OBJ)
259
260 # OBJECT RULES
261
262 $(OBJ)Mutex.o: $(OBJ)Mutex.c
263         $(CC) $(CFLAGS) $(PRJ_CFLAGS) $(FVISIBILITY) -c $(OBJ)Mutex.c -o $(OBJ)Mutex.o
264
265 $(OBJ)i18n.o: $(OBJ)i18n.c
266         $(CC) $(CFLAGS) $(PRJ_CFLAGS) $(FVISIBILITY) -c $(OBJ)i18n.c -o $(OBJ)i18n.o
267
268 $(OBJ)Array.o: $(OBJ)Array.c
269         $(CC) $(CFLAGS) $(PRJ_CFLAGS) $(FVISIBILITY) -c $(OBJ)Array.c -o $(OBJ)Array.o
270
271 $(OBJ)AVLTree.o: $(OBJ)AVLTree.c
272         $(CC) $(CFLAGS) $(PRJ_CFLAGS) $(FVISIBILITY) -c $(OBJ)AVLTree.c -o $(OBJ)AVLTree.o
273
274 $(OBJ)BuiltInContainer.o: $(OBJ)BuiltInContainer.c
275         $(CC) $(CFLAGS) $(PRJ_CFLAGS) $(FVISIBILITY) -c $(OBJ)BuiltInContainer.c -o $(OBJ)BuiltInContainer.o
276
277 $(OBJ)Container.o: $(OBJ)Container.c
278         $(CC) $(CFLAGS) $(PRJ_CFLAGS) $(FVISIBILITY) -c $(OBJ)Container.c -o $(OBJ)Container.o
279
280 $(OBJ)CustomAVLTree.o: $(OBJ)CustomAVLTree.c
281         $(CC) $(CFLAGS) $(PRJ_CFLAGS) $(FVISIBILITY) -c $(OBJ)CustomAVLTree.c -o $(OBJ)CustomAVLTree.o
282
283 $(OBJ)LinkList.o: $(OBJ)LinkList.c
284         $(CC) $(CFLAGS) $(PRJ_CFLAGS) $(FVISIBILITY) -c $(OBJ)LinkList.c -o $(OBJ)LinkList.o
285
286 $(OBJ)List.o: $(OBJ)List.c
287         $(CC) $(CFLAGS) $(PRJ_CFLAGS) $(FVISIBILITY) -c $(OBJ)List.c -o $(OBJ)List.o
288
289 $(OBJ)Map.o: $(OBJ)Map.c
290         $(CC) $(CFLAGS) $(PRJ_CFLAGS) $(FVISIBILITY) -c $(OBJ)Map.c -o $(OBJ)Map.o
291
292 $(OBJ)BinaryTree.o: $(OBJ)BinaryTree.c
293         $(CC) $(CFLAGS) $(PRJ_CFLAGS) $(FVISIBILITY) -c $(OBJ)BinaryTree.c -o $(OBJ)BinaryTree.o
294
295 $(OBJ)BTNode.o: $(OBJ)BTNode.c
296         $(CC) $(CFLAGS) $(PRJ_CFLAGS) $(FVISIBILITY) -c $(OBJ)BTNode.c -o $(OBJ)BTNode.o
297
298 $(OBJ)dataTypes.o: $(OBJ)dataTypes.c
299         $(CC) $(CFLAGS) $(PRJ_CFLAGS) $(FVISIBILITY) -c $(OBJ)dataTypes.c -o $(OBJ)dataTypes.o
300
301 $(OBJ)instance.o: $(OBJ)instance.c
302         $(CC) $(CFLAGS) $(PRJ_CFLAGS) $(FVISIBILITY) -c $(OBJ)instance.c -o $(OBJ)instance.o
303
304 $(OBJ)String.o: $(OBJ)String.c
305         $(CC) $(CFLAGS) $(PRJ_CFLAGS) $(FVISIBILITY) -c $(OBJ)String.c -o $(OBJ)String.o
306
307 $(OBJ)OldList.o: $(OBJ)OldList.c
308         $(CC) $(CFLAGS) $(PRJ_CFLAGS) $(FVISIBILITY) -c $(OBJ)OldList.c -o $(OBJ)OldList.o
309
310 $(OBJ)instance.c.o: src/com/instance.c
311         $(CC) $(CFLAGS) $(PRJ_CFLAGS) -c src/com/instance.c -o $(OBJ)instance.c.o
312
313 $(OBJ)$(MODULE).main$(O): $(OBJ)$(MODULE).main.c
314         $(CC) $(CFLAGS) $(PRJ_CFLAGS) $(FVISIBILITY) -c $(OBJ)$(MODULE).main.c -o $(OBJ)$(MODULE).main$(O)
315
316 cleantarget: objdir
317         $(call rmq,$(TARGET))
318
319 clean: cleantarget
320         $(call rmq,$(_OBJECTS))
321         $(call rmq,$(OBJ)$(MODULE).main.o $(OBJ)$(MODULE).main.c $(OBJ)$(MODULE).main.ec $(OBJ)$(MODULE).main$(I) $(OBJ)$(MODULE).main$(S))
322         $(call rmq,$(ECOBJECTS))
323         $(call rmq,$(COBJECTS))
324         $(call rmq,$(BOWLS))
325         $(call rmq,$(IMPORTS))
326         $(call rmq,$(SYMBOLS))
327
328 realclean: cleantarget
329         $(call rmrq,$(OBJ))
330
331 distclean: cleantarget
332         $(call rmrq,obj/)