4d90cb38d6810bff8172fc69d21a0d7b49d16a0d
[sdk] / eda / drivers / sqlite / Makefile
1 .PHONY: all objdir clean realclean distclean
2
3 # CORE VARIABLES
4
5 MODULE := EDASQLite
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)EDASQLite$(SO).0.44
58 SONAME = -Wl,-soname,$(LP)EDASQLite$(SO).0
59 else
60 TARGET = obj/$(CONFIG).$(PLATFORM)/$(LP)EDASQLite$(SO)
61 SONAME =
62 endif
63
64 _ECSOURCES = \
65         EDASQLite.ec
66
67 ECSOURCES = $(call shwspace,$(_ECSOURCES))
68
69 COBJECTS = $(call shwspace,$(addprefix $(OBJ),$(patsubst %.ec,%$(C),$(notdir $(_ECSOURCES)))))
70
71 SYMBOLS = $(call shwspace,$(addprefix $(OBJ),$(patsubst %.ec,%$(S),$(notdir $(_ECSOURCES)))))
72
73 IMPORTS = $(call shwspace,$(addprefix $(OBJ),$(patsubst %.ec,%$(I),$(notdir $(_ECSOURCES)))))
74
75 ECOBJECTS = $(call shwspace,$(addprefix $(OBJ),$(patsubst %.ec,%$(O),$(notdir $(_ECSOURCES)))))
76
77 BOWLS = $(call shwspace,$(addprefix $(OBJ),$(patsubst %.ec,%$(B),$(notdir $(_ECSOURCES)))))
78
79 _OBJECTS = \
80         $(if $(LINUX_TARGET),,$(OBJ)sqlite3.o)
81
82 OBJECTS = $(_OBJECTS) $(ECOBJECTS) $(OBJ)$(MODULE).main$(O)
83
84 SOURCES = $(ECSOURCES) \
85         $(if $(LINUX_TARGET),,sqlite3.c)
86
87 RESOURCES = \
88         locale/zh_CN/LC_MESSAGES/EDASQLite.mo \
89         locale/es_ES/LC_MESSAGES/EDASQLite.mo
90
91 LIBS += $(SHAREDLIB) $(EXECUTABLE) $(LINKOPT)
92
93 ifndef STATIC_LIBRARY_TARGET
94 LIBS += \
95         $(call _L,ecere) \
96         $(call _L,ffi)
97 endif
98
99 CFLAGS += \
100          $(if $(DEBIAN_PACKAGE),$(CPPFLAGS),) $(if $(DEBUG), -D_DEBUG,) \
101          $(if $(WINDOWS_TARGET), \
102                          -I../../../deps/libffi-3.0.11/i686-pc-mingw32/include,) \
103          $(if $(DEBUG), -g, -O2 -ffast-math) $(FORCE_32_BIT) $(FPIC) -w
104
105 CUSTOM1_CFLAGS = \
106          $(if $(DEBIAN_PACKAGE),$(CPPFLAGS),) $(if $(DEBUG), -D_DEBUG,) \
107          $(if $(WINDOWS_TARGET), \
108                          -I../../../deps/libffi-3.0.11/i686-pc-mingw32/include,) \
109          $(if $(DEBUG), -g, -O2) $(FORCE_32_BIT) $(FPIC) -w
110
111
112 ECFLAGS += \
113          -nolinenumbers
114
115
116 # PLATFORM-SPECIFIC OPTIONS
117
118 ifdef WINDOWS_TARGET
119
120 ifndef STATIC_LIBRARY_TARGET
121 OFLAGS += \
122          -L../../../deps/libffi-3.0.11/obj/release.$(PLATFORM)
123 endif
124
125 else
126 ifdef LINUX_TARGET
127
128 ifndef STATIC_LIBRARY_TARGET
129 LIBS += \
130         $(call _L,pthread) \
131         $(call _L,dl) \
132         $(call _L,sqlite3)
133 endif
134
135 else
136 ifdef OSX_TARGET
137
138 ifndef STATIC_LIBRARY_TARGET
139 LIBS += \
140         $(call _L,pthread) \
141         $(call _L,dl)
142 endif
143
144 endif
145 endif
146 endif
147
148
149
150 CECFLAGS += -cpp $(call escspace,$(CPP))
151
152 ifndef STATIC_LIBRARY_TARGET
153 OFLAGS += $(FORCE_32_BIT) \
154          -L../../../obj/$(PLATFORM)/bin \
155          -L../../../obj/$(PLATFORM)/lib
156 OFLAGS += $(LDFLAGS)
157 endif
158
159 # TARGETS
160
161 all: objdir $(TARGET)
162
163 objdir:
164         $(if $(wildcard $(OBJ)),,$(call mkdirq,$(OBJ)))
165
166 $(OBJ)$(MODULE).main.ec: $(SYMBOLS) $(COBJECTS)
167         $(ECS) $(ECSLIBOPT) $(SYMBOLS) $(IMPORTS) -symbols obj/$(CONFIG).$(PLATFORM) -o $(OBJ)$(MODULE).main.ec
168
169 $(OBJ)$(MODULE).main.c: $(OBJ)$(MODULE).main.ec
170         $(ECP) $(CECFLAGS) $(ECFLAGS) $(CFLAGS) -c $(OBJ)$(MODULE).main.ec -o $(OBJ)$(MODULE).main.sym -symbols $(OBJ)
171         $(ECC) $(CECFLAGS) $(ECFLAGS) $(CFLAGS) $(FVISIBILITY) -c $(OBJ)$(MODULE).main.ec -o $(OBJ)$(MODULE).main.c -symbols $(OBJ)
172
173 $(SYMBOLS): | objdir
174 $(OBJECTS): | objdir
175 $(TARGET): $(SOURCES) $(RESOURCES) $(SYMBOLS) $(OBJECTS) | objdir
176 ifndef STATIC_LIBRARY_TARGET
177         $(CC) $(OFLAGS) $(OBJECTS) $(LIBS) -o $(TARGET) $(INSTALLNAME) $(SONAME)
178 ifndef NOSTRIP
179         $(STRIP) $(STRIPOPT) $(TARGET)
180 endif
181         $(EAR) $(EARFLAGS) $(TARGET) locale/zh_CN/LC_MESSAGES/EDASQLite.mo "locale/zh_CN/LC_MESSAGES"
182         $(EAR) $(EARFLAGS) $(TARGET) locale/es_ES/LC_MESSAGES/EDASQLite.mo "locale/es_ES/LC_MESSAGES"
183 else
184         $(AR) rcs $(TARGET) $(OBJECTS) $(LIBS)
185 endif
186         $(call cpq,$(TARGET),../../../$(SODESTDIR))
187 ifdef LINUX_TARGET
188         ln -sf $(LP)$(MODULE)$(SO).0.44 ../../../$(SODESTDIR)$(LP)$(MODULE)$(SO).0
189         ln -sf $(LP)$(MODULE)$(SO).0.44 ../../../$(SODESTDIR)$(LP)$(MODULE)$(SO)
190 endif   
191
192 # SYMBOL RULES
193
194 $(OBJ)EDASQLite.sym: EDASQLite.ec
195         $(ECP) $(CECFLAGS) $(ECFLAGS) $(CFLAGS) -c EDASQLite.ec -o $(OBJ)EDASQLite.sym
196
197 # C OBJECT RULES
198
199 $(OBJ)EDASQLite.c: EDASQLite.ec $(OBJ)EDASQLite.sym | $(SYMBOLS)
200         $(ECC) $(CECFLAGS) $(ECFLAGS) $(CFLAGS) $(FVISIBILITY) -c EDASQLite.ec -o $(OBJ)EDASQLite.c -symbols $(OBJ)
201
202 # OBJECT RULES
203
204 $(OBJ)sqlite3.o: sqlite3.c
205         $(CC) $(CUSTOM1_CFLAGS) -c sqlite3.c -o $(OBJ)sqlite3.o
206
207 $(OBJ)EDASQLite.o: $(OBJ)EDASQLite.c
208         $(CC) $(CFLAGS) $(FVISIBILITY) -c $(OBJ)EDASQLite.c -o $(OBJ)EDASQLite.o
209
210 $(OBJ)$(MODULE).main$(O): $(OBJ)$(MODULE).main.c
211         $(CC) $(CFLAGS) $(FVISIBILITY) -c $(OBJ)$(MODULE).main.c -o $(OBJ)$(MODULE).main$(O)
212
213 clean: objdir
214         $(call rmq,$(OBJ)$(MODULE).main.o $(OBJ)$(MODULE).main.c $(OBJ)$(MODULE).main.ec $(OBJ)$(MODULE).main$(I) $(OBJ)$(MODULE).main$(S) $(TARGET))
215         $(call rmq,$(_OBJECTS))
216         $(call rmq,$(ECOBJECTS))
217         $(call rmq,$(COBJECTS))
218         $(call rmq,$(BOWLS))
219         $(call rmq,$(IMPORTS))
220         $(call rmq,$(SYMBOLS))
221
222 realclean: clean
223         $(call rmrq,$(OBJ))
224
225 distclean:
226         $(call rmrq,obj/)