e1186ccb2c03174bfe9d6c8594a424a2c954bb8d
[sdk] / eda / libeda / Makefile
1 .PHONY: all objdir clean realclean distclean
2
3 # CORE VARIABLES
4
5 MODULE := EDA
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 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 = -mwindows
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,../../obj/$(PLATFORM)/bin/ecp)
44 ECC := $(call psep,../../obj/$(PLATFORM)/bin/ecc)
45 ECS := $(call psep,../../obj/$(PLATFORM)/bin/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 ifdef LINUX_TARGET
57 TARGET = obj/$(CONFIG).$(PLATFORM)/$(LP)EDA$(SO).0.44
58 SONAME = -Wl,-soname,$(LP)EDA$(SO).0
59 else
60 TARGET = obj/$(CONFIG).$(PLATFORM)/$(LP)EDA$(SO)
61 SONAME =
62 endif
63
64 _ECSOURCES = \
65         src/EDB.ec \
66         src/MemoryEDB.ec \
67         src/gui/controls/FieldBox.ec \
68         src/gui/TableEditor.ec \
69         src/EDA.ec \
70         src/ers.ec \
71         src/gui.ec \
72         src/idList.ec
73
74 ECSOURCES = $(call shwspace,$(_ECSOURCES))
75
76 COBJECTS = $(call shwspace,$(addprefix $(OBJ),$(patsubst %.ec,%$(C),$(notdir $(_ECSOURCES)))))
77
78 SYMBOLS = $(call shwspace,$(addprefix $(OBJ),$(patsubst %.ec,%$(S),$(notdir $(_ECSOURCES)))))
79
80 IMPORTS = $(call shwspace,$(addprefix $(OBJ),$(patsubst %.ec,%$(I),$(notdir $(_ECSOURCES)))))
81
82 ECOBJECTS = $(call shwspace,$(addprefix $(OBJ),$(patsubst %.ec,%$(O),$(notdir $(_ECSOURCES)))))
83
84 BOWLS = $(call shwspace,$(addprefix $(OBJ),$(patsubst %.ec,%$(B),$(notdir $(_ECSOURCES)))))
85
86 OBJECTS = $(ECOBJECTS) $(OBJ)$(MODULE).main$(O)
87
88 SOURCES = $(ECSOURCES)
89
90 RESOURCES = \
91         locale/zh_CN/LC_MESSAGES/EDA.mo \
92         locale/es_ES/LC_MESSAGES/EDA.mo
93
94 LIBS += $(SHAREDLIB) $(EXECUTABLE) $(LINKOPT)
95
96 ifndef STATIC_LIBRARY_TARGET
97 LIBS += \
98         $(call _L,ecere)
99 endif
100
101 CFLAGS += \
102          $(if $(DEBIAN_PACKAGE),$(CPPFLAGS),) $(if $(DEBUG), -D_DEBUG,) \
103          $(if $(WINDOWS_TARGET), \
104                          -I../../deps/libffi-3.0.11/i686-pc-mingw32/include,) \
105          $(if $(DEBUG), -g, -O2 -ffast-math) $(FORCE_32_BIT) $(FPIC) -w
106
107
108 ECFLAGS += \
109          -nolinenumbers -defaultns eda
110
111
112 # PLATFORM-SPECIFIC OPTIONS
113
114 ifdef WINDOWS_TARGET
115
116 endif
117
118
119
120 CECFLAGS += -cpp $(call escspace,$(CPP))
121
122 ifndef STATIC_LIBRARY_TARGET
123 OFLAGS += $(FORCE_32_BIT) \
124          -L../../obj/$(PLATFORM)/bin \
125          -L../../obj/$(PLATFORM)/lib
126 OFLAGS += $(LDFLAGS)
127 endif
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/$(CONFIG).$(PLATFORM) -o $(OBJ)$(MODULE).main.ec
138
139 $(OBJ)$(MODULE).main.c: $(OBJ)$(MODULE).main.ec
140         $(ECP) $(CECFLAGS) $(ECFLAGS) $(CFLAGS) -c $(OBJ)$(MODULE).main.ec -o $(OBJ)$(MODULE).main.sym -symbols $(OBJ)
141         $(ECC) $(CECFLAGS) $(ECFLAGS) $(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         $(EAR) $(EARFLAGS) $(TARGET) locale/zh_CN/LC_MESSAGES/EDA.mo "locale/zh_CN/LC_MESSAGES"
152         $(EAR) $(EARFLAGS) $(TARGET) locale/es_ES/LC_MESSAGES/EDA.mo "locale/es_ES/LC_MESSAGES"
153 else
154         $(AR) rcs $(TARGET) $(OBJECTS) $(LIBS)
155 endif
156         $(call cpq,$(TARGET),../../$(SODESTDIR))
157 ifdef LINUX_TARGET
158         ln -sf $(LP)$(MODULE)$(SO).0.44 ../../$(SODESTDIR)$(LP)$(MODULE)$(SO).0
159         ln -sf $(LP)$(MODULE)$(SO).0.44 ../../$(SODESTDIR)$(LP)$(MODULE)$(SO)
160 endif
161
162 # SYMBOL RULES
163
164 $(OBJ)EDB.sym: src/EDB.ec
165         $(ECP) $(CECFLAGS) $(ECFLAGS) $(CFLAGS) -c src/EDB.ec -o $(OBJ)EDB.sym
166
167 $(OBJ)MemoryEDB.sym: src/MemoryEDB.ec
168         $(ECP) $(CECFLAGS) $(ECFLAGS) $(CFLAGS) -c src/MemoryEDB.ec -o $(OBJ)MemoryEDB.sym
169
170 $(OBJ)FieldBox.sym: src/gui/controls/FieldBox.ec
171         $(ECP) $(CECFLAGS) $(ECFLAGS) $(CFLAGS) -c src/gui/controls/FieldBox.ec -o $(OBJ)FieldBox.sym
172
173 $(OBJ)TableEditor.sym: src/gui/TableEditor.ec
174         $(ECP) $(CECFLAGS) $(ECFLAGS) $(CFLAGS) -c src/gui/TableEditor.ec -o $(OBJ)TableEditor.sym
175
176 $(OBJ)EDA.sym: src/EDA.ec
177         $(ECP) $(CECFLAGS) $(ECFLAGS) $(CFLAGS) -c src/EDA.ec -o $(OBJ)EDA.sym
178
179 $(OBJ)ers.sym: src/ers.ec
180         $(ECP) $(CECFLAGS) $(ECFLAGS) $(CFLAGS) -c src/ers.ec -o $(OBJ)ers.sym
181
182 $(OBJ)gui.sym: src/gui.ec
183         $(ECP) $(CECFLAGS) $(ECFLAGS) $(CFLAGS) -c src/gui.ec -o $(OBJ)gui.sym
184
185 $(OBJ)idList.sym: src/idList.ec
186         $(ECP) $(CECFLAGS) $(ECFLAGS) $(CFLAGS) -c src/idList.ec -o $(OBJ)idList.sym
187
188 # C OBJECT RULES
189
190 $(OBJ)EDB.c: src/EDB.ec $(OBJ)EDB.sym | $(SYMBOLS)
191         $(ECC) $(CECFLAGS) $(ECFLAGS) $(CFLAGS) $(FVISIBILITY) -c src/EDB.ec -o $(OBJ)EDB.c -symbols $(OBJ)
192
193 $(OBJ)MemoryEDB.c: src/MemoryEDB.ec $(OBJ)MemoryEDB.sym | $(SYMBOLS)
194         $(ECC) $(CECFLAGS) $(ECFLAGS) $(CFLAGS) $(FVISIBILITY) -c src/MemoryEDB.ec -o $(OBJ)MemoryEDB.c -symbols $(OBJ)
195
196 $(OBJ)FieldBox.c: src/gui/controls/FieldBox.ec $(OBJ)FieldBox.sym | $(SYMBOLS)
197         $(ECC) $(CECFLAGS) $(ECFLAGS) $(CFLAGS) $(FVISIBILITY) -c src/gui/controls/FieldBox.ec -o $(OBJ)FieldBox.c -symbols $(OBJ)
198
199 $(OBJ)TableEditor.c: src/gui/TableEditor.ec $(OBJ)TableEditor.sym | $(SYMBOLS)
200         $(ECC) $(CECFLAGS) $(ECFLAGS) $(CFLAGS) $(FVISIBILITY) -c src/gui/TableEditor.ec -o $(OBJ)TableEditor.c -symbols $(OBJ)
201
202 $(OBJ)EDA.c: src/EDA.ec $(OBJ)EDA.sym | $(SYMBOLS)
203         $(ECC) $(CECFLAGS) $(ECFLAGS) $(CFLAGS) $(FVISIBILITY) -c src/EDA.ec -o $(OBJ)EDA.c -symbols $(OBJ)
204
205 $(OBJ)ers.c: src/ers.ec $(OBJ)ers.sym | $(SYMBOLS)
206         $(ECC) $(CECFLAGS) $(ECFLAGS) $(CFLAGS) $(FVISIBILITY) -c src/ers.ec -o $(OBJ)ers.c -symbols $(OBJ)
207
208 $(OBJ)gui.c: src/gui.ec $(OBJ)gui.sym | $(SYMBOLS)
209         $(ECC) $(CECFLAGS) $(ECFLAGS) $(CFLAGS) $(FVISIBILITY) -c src/gui.ec -o $(OBJ)gui.c -symbols $(OBJ)
210
211 $(OBJ)idList.c: src/idList.ec $(OBJ)idList.sym | $(SYMBOLS)
212         $(ECC) $(CECFLAGS) $(ECFLAGS) $(CFLAGS) $(FVISIBILITY) -c src/idList.ec -o $(OBJ)idList.c -symbols $(OBJ)
213
214 # OBJECT RULES
215
216 $(OBJ)EDB.o: $(OBJ)EDB.c
217         $(CC) $(CFLAGS) $(FVISIBILITY) -c $(OBJ)EDB.c -o $(OBJ)EDB.o
218
219 $(OBJ)MemoryEDB.o: $(OBJ)MemoryEDB.c
220         $(CC) $(CFLAGS) $(FVISIBILITY) -c $(OBJ)MemoryEDB.c -o $(OBJ)MemoryEDB.o
221
222 $(OBJ)FieldBox.o: $(OBJ)FieldBox.c
223         $(CC) $(CFLAGS) $(FVISIBILITY) -c $(OBJ)FieldBox.c -o $(OBJ)FieldBox.o
224
225 $(OBJ)TableEditor.o: $(OBJ)TableEditor.c
226         $(CC) $(CFLAGS) $(FVISIBILITY) -c $(OBJ)TableEditor.c -o $(OBJ)TableEditor.o
227
228 $(OBJ)EDA.o: $(OBJ)EDA.c
229         $(CC) $(CFLAGS) $(FVISIBILITY) -c $(OBJ)EDA.c -o $(OBJ)EDA.o
230
231 $(OBJ)ers.o: $(OBJ)ers.c
232         $(CC) $(CFLAGS) $(FVISIBILITY) -c $(OBJ)ers.c -o $(OBJ)ers.o
233
234 $(OBJ)gui.o: $(OBJ)gui.c
235         $(CC) $(CFLAGS) $(FVISIBILITY) -c $(OBJ)gui.c -o $(OBJ)gui.o
236
237 $(OBJ)idList.o: $(OBJ)idList.c
238         $(CC) $(CFLAGS) $(FVISIBILITY) -c $(OBJ)idList.c -o $(OBJ)idList.o
239
240 $(OBJ)$(MODULE).main$(O): $(OBJ)$(MODULE).main.c
241         $(CC) $(CFLAGS) $(FVISIBILITY) -c $(OBJ)$(MODULE).main.c -o $(OBJ)$(MODULE).main$(O)
242
243 clean: objdir
244         $(call rmq,$(OBJ)$(MODULE).main.o $(OBJ)$(MODULE).main.c $(OBJ)$(MODULE).main.ec $(OBJ)$(MODULE).main$(I) $(OBJ)$(MODULE).main$(S) $(TARGET))
245         $(call rmq,$(_OBJECTS))
246         $(call rmq,$(ECOBJECTS))
247         $(call rmq,$(COBJECTS))
248         $(call rmq,$(BOWLS))
249         $(call rmq,$(IMPORTS))
250         $(call rmq,$(SYMBOLS))
251
252 realclean: clean
253         $(call rmrq,$(OBJ))
254
255 distclean:
256         $(call rmrq,obj/)