xref: /aoo41x/main/mysqlc/source/makefile.mk (revision 7871dc3e)
1*7871dc3eSAndrew Rist#**************************************************************
2*7871dc3eSAndrew Rist#
3*7871dc3eSAndrew Rist#  Licensed to the Apache Software Foundation (ASF) under one
4*7871dc3eSAndrew Rist#  or more contributor license agreements.  See the NOTICE file
5*7871dc3eSAndrew Rist#  distributed with this work for additional information
6*7871dc3eSAndrew Rist#  regarding copyright ownership.  The ASF licenses this file
7*7871dc3eSAndrew Rist#  to you under the Apache License, Version 2.0 (the
8*7871dc3eSAndrew Rist#  "License"); you may not use this file except in compliance
9*7871dc3eSAndrew Rist#  with the License.  You may obtain a copy of the License at
10*7871dc3eSAndrew Rist#
11*7871dc3eSAndrew Rist#    http://www.apache.org/licenses/LICENSE-2.0
12*7871dc3eSAndrew Rist#
13*7871dc3eSAndrew Rist#  Unless required by applicable law or agreed to in writing,
14*7871dc3eSAndrew Rist#  software distributed under the License is distributed on an
15*7871dc3eSAndrew Rist#  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*7871dc3eSAndrew Rist#  KIND, either express or implied.  See the License for the
17*7871dc3eSAndrew Rist#  specific language governing permissions and limitations
18*7871dc3eSAndrew Rist#  under the License.
19*7871dc3eSAndrew Rist#
20*7871dc3eSAndrew Rist#**************************************************************
21*7871dc3eSAndrew Rist
22*7871dc3eSAndrew Rist
23cdf0e10cSrcweir
24cdf0e10cSrcweirPRJ=..
25cdf0e10cSrcweirPRJNAME=mysqlc
26cdf0e10cSrcweir
27cdf0e10cSrcweir.INCLUDE : $(PRJ)$/version.mk
28cdf0e10cSrcweir
29cdf0e10cSrcweirTARGET=mysqlc
30cdf0e10cSrcweirENABLE_EXCEPTIONS=TRUE
31cdf0e10cSrcweirLIBTARGET=NO
32cdf0e10cSrcweirEXTENSIONNAME:=mysql-connector-ooo
33cdf0e10cSrcweir
34cdf0e10cSrcweir.IF "$(SYSTEM_MYSQL)" == "YES"
35cdf0e10cSrcweirEXTERNAL_WARNINGS_NOT_ERRORS = TRUE
36cdf0e10cSrcweir.ENDIF
37cdf0e10cSrcweir
38cdf0e10cSrcweir# --- Settings -----------------------------------------------------
39cdf0e10cSrcweir
40cdf0e10cSrcweir.INCLUDE :  settings.mk
41cdf0e10cSrcweir
42cdf0e10cSrcweir#-------------------------------------------------------------------
43cdf0e10cSrcweir
44cdf0e10cSrcweir#---- extension version
45cdf0e10cSrcweirEXTENSION_VERSION_BASE=$(MYSQLC_VERSION_MAJOR).$(MYSQLC_VERSION_MINOR).$(MYSQLC_VERSION_MICRO)
46cdf0e10cSrcweir.IF ( "$(CWS_WORK_STAMP)" == "" ) || ( "$(UPDATER)" == "YES" )
47cdf0e10cSrcweir    EXTENSION_VERSION=$(EXTENSION_VERSION_BASE)
48cdf0e10cSrcweir.ELSE
49cdf0e10cSrcweir    EXTENSION_VERSION=$(EXTENSION_VERSION_BASE).cws.$(CWS_WORK_STAMP)
50cdf0e10cSrcweir.ENDIF
51cdf0e10cSrcweir
52cdf0e10cSrcweir#---- extension title package name
53cdf0e10cSrcweir.IF "$(MYSQLC_STATUS)" == "final"
54cdf0e10cSrcweir    EXTENSION_TITLE:=$(MYSQLC_TITLE)
55cdf0e10cSrcweir    EXTENSION_ZIPNAME:=$(EXTENSIONNAME)
56cdf0e10cSrcweir.ELSE
57cdf0e10cSrcweir    EXTENSION_TITLE:=$(MYSQLC_TITLE) ($(MYSQLC_STATUS))
58cdf0e10cSrcweir    EXTENSION_ZIPNAME:=$(EXTENSIONNAME)
59cdf0e10cSrcweir.ENDIF
60cdf0e10cSrcweir
61cdf0e10cSrcweir#-------------------------------------------------------------------
62cdf0e10cSrcweir
63cdf0e10cSrcweir# set default symbol visibility / scope to hidden
64cdf0e10cSrcweir.IF "$(COMNAME)" == "gcc3"
65cdf0e10cSrcweir.IF "$(HAVE_GCC_VISIBILITY_FEATURE)" == "TRUE"
66cdf0e10cSrcweir CFLAGS += -fvisibility=hidden
67cdf0e10cSrcweir.ENDIF # HAVE_GCC_VISIBILITY_FEATURE
68cdf0e10cSrcweir.ENDIF # gcc3
69cdf0e10cSrcweir
70cdf0e10cSrcweir.IF "$(COMNAME)" == "sunpro5"
71cdf0e10cSrcweir.IF "$(CCNUMVER)" >= "00050005"
72cdf0e10cSrcweir CFLAGS += -xldscope=hidden
73cdf0e10cSrcweir.ENDIF # 5.5
74cdf0e10cSrcweir.ENDIF # sunpro5
75cdf0e10cSrcweir
76cdf0e10cSrcweir#-------------------------------------------------------------------
77cdf0e10cSrcweir
78cdf0e10cSrcweir# The headers delivered from C/C++ have a habit of putting a ";" after the closing bracked of a namespace, which
79cdf0e10cSrcweir# yields a warning with Solaris' compiler. Until this is fixed in C/C++, silence this warning
80cdf0e10cSrcweir.IF "$(OS)" == "SOLARIS"
81cdf0e10cSrcweir    CFLAGSWARNCXX+=,wemptydecl
82cdf0e10cSrcweir    CFLAGSWARNCXX:=$(CFLAGSWARNCXX:s/ ,/,/)
83cdf0e10cSrcweir.ENDIF
84cdf0e10cSrcweir
85cdf0e10cSrcweir#-------------------------------------------------------------------
86cdf0e10cSrcweir.IF "$(ENABLE_MYSQLC)" != "YES"
87cdf0e10cSrcweir@all:
88cdf0e10cSrcweir	@echo "Mysql native driver extension build disabled."
89cdf0e10cSrcweir.ENDIF
90cdf0e10cSrcweir
91cdf0e10cSrcweir# use the static version
92cdf0e10cSrcweir.IF "$(GUI)"=="WNT"
93cdf0e10cSrcweir  MYSQL_LIBDIR=$(LIBMYSQL_PATH)$/lib
94cdf0e10cSrcweir  MYSQL_INCDIR=$(LIBMYSQL_PATH)$/include
95cdf0e10cSrcweir.ELSE
96cdf0e10cSrcweir  .IF "$(SYSTEM_MYSQL)" != "YES"
97cdf0e10cSrcweir    MYSQL_LIBDIR=$(LIBMYSQL_PATH)$/lib
98cdf0e10cSrcweir    MYSQL_INCDIR=$(LIBMYSQL_PATH)$/include
99cdf0e10cSrcweir  .ENDIF
100cdf0e10cSrcweir.ENDIF
101cdf0e10cSrcweir
102cdf0e10cSrcweir.IF "$(SYSTEM_MYSQL)" == "YES"
103cdf0e10cSrcweirCFLAGS+=-DSYSTEM_MYSQL
104cdf0e10cSrcweir.ENDIF
105cdf0e10cSrcweir
106cdf0e10cSrcweir.IF "$(SYSTEM_MYSQL_CPPCONN)" == "YES"
107cdf0e10cSrcweirCFLAGS+=-DSYSTEM_MYSQL_CPPCONN
108cdf0e10cSrcweir.ENDIF
109cdf0e10cSrcweir
110cdf0e10cSrcweirCDEFS+=-DCPPDBC_EXPORTS -DCPPCONN_LIB_BUILD
11124687b4cSJürgen Schmidt.IF "$(SYSTEM_MYSQL_CPPCONN)" == "YES"
112cdf0e10cSrcweirCDEFS += -DCPPCONN_LIB=\"$(shell readlink /usr/lib/libmysqlcppconn.so)\"
113cdf0e10cSrcweir.IF "$(USE_SYSTEM_STL)"!="YES"
114cdf0e10cSrcweirCDEFS += -DADAPT_EXT_STL
115cdf0e10cSrcweir.ENDIF
116cdf0e10cSrcweir.ENDIF
117cdf0e10cSrcweir
118cdf0e10cSrcweir# --------------- MySQL settings ------------------
11924687b4cSJürgen Schmidt.IF "$(GUI)"!="WNT"
120cdf0e10cSrcweir  .IF "$(SYSTEM_MYSQL)" != "YES"
121cdf0e10cSrcweir    MYSQL_INC+=-I$(MYSQL_INCDIR)
122cdf0e10cSrcweir    .IF "$(OS)"=="MACOSX"
123cdf0e10cSrcweir      MYSQL_LIBFILE=$(MYSQL_LIBDIR)$/$(DLLPRE)mysql.16$(DLLPOST)
124cdf0e10cSrcweir    .ELSE
125cdf0e10cSrcweir      MYSQL_LIBFILE=$(MYSQL_LIBDIR)$/$(DLLPRE)mysql$(DLLPOST).16
126cdf0e10cSrcweir    .ENDIF
127cdf0e10cSrcweir
128cdf0e10cSrcweir    # checkdll will complain if we do not point it to the libmysql lib
129cdf0e10cSrcweir    EXTRALIBPATHS=-L$(MYSQL_LIBDIR)
130cdf0e10cSrcweir  .ENDIF
131cdf0e10cSrcweir
132cdf0e10cSrcweir    MYSQL_CPPCONN_LIB+=-lmysqlcppconn
133cdf0e10cSrcweir.ENDIF
134cdf0e10cSrcweir
135cdf0e10cSrcweirCFLAGS+=-I..$/..$/inc $(MYSQL_INC) \
136cdf0e10cSrcweir	-DMYSQLC_VERSION_MAJOR=$(MYSQLC_VERSION_MAJOR) \
137cdf0e10cSrcweir	-DMYSQLC_VERSION_MINOR=$(MYSQLC_VERSION_MINOR) \
138cdf0e10cSrcweir	-DMYSQLC_VERSION_MICRO=$(MYSQLC_VERSION_MICRO) \
139cdf0e10cSrcweir    $(MYSQL_DEFINES)
140cdf0e10cSrcweir
141cdf0e10cSrcweir# provide the name of the MySQL client lib to the C++ code
142cdf0e10cSrcweir.IF "$(SYSTEM_MYSQL)" != "YES"
143cdf0e10cSrcweirCDEFS += -DMYSQL_LIB=\"$(MYSQL_LIBFILE:f)\"
144cdf0e10cSrcweir.ENDIF
145cdf0e10cSrcweir
146cdf0e10cSrcweir#--------------------------------------------------
147cdf0e10cSrcweir
148cdf0e10cSrcweirSHL1DLLPRE=
149cdf0e10cSrcweirSHL1TARGET=$(TARGET).uno
150cdf0e10cSrcweirLIB1TARGET=$(SLB)$/$(SHL1TARGET).lib
151cdf0e10cSrcweirLIB1OBJFILES= \
152cdf0e10cSrcweir		$(SLO)$/mysqlc_driver.obj \
153cdf0e10cSrcweir		$(SLO)$/mysqlc_services.obj  \
154cdf0e10cSrcweir		$(SLO)$/mysqlc_connection.obj \
155cdf0e10cSrcweir		$(SLO)$/mysqlc_resultset.obj \
156cdf0e10cSrcweir		$(SLO)$/mysqlc_resultsetmetadata.obj \
157cdf0e10cSrcweir		$(SLO)$/mysqlc_statement.obj \
158cdf0e10cSrcweir		$(SLO)$/mysqlc_preparedstatement.obj \
159cdf0e10cSrcweir		$(SLO)$/mysqlc_databasemetadata.obj \
160cdf0e10cSrcweir		$(SLO)$/mysqlc_types.obj \
161cdf0e10cSrcweir		$(SLO)$/mysqlc_general.obj \
162cdf0e10cSrcweir		$(SLO)$/mysqlc_propertyids.obj
163cdf0e10cSrcweir
164cdf0e10cSrcweirSHL1STDLIBS= \
165cdf0e10cSrcweir		$(MYSQL_LIB)                \
166cdf0e10cSrcweir		$(MYSQL_CPPCONN_LIB)        \
167cdf0e10cSrcweir		$(CPPULIB)                  \
168cdf0e10cSrcweir		$(SALLIB)                   \
169cdf0e10cSrcweir		$(SALHELPERLIB)             \
170cdf0e10cSrcweir		$(CPPUHELPERLIB)
171cdf0e10cSrcweir
172cdf0e10cSrcweirSHL1VERSIONMAP=$(TARGET).map
173cdf0e10cSrcweirSHL1LIBS=	$(LIB1TARGET)
174cdf0e10cSrcweirSHL1DEF=	$(MISC)$/$(SHL1TARGET).def
175cdf0e10cSrcweirSHL1RPATH=OXT
176cdf0e10cSrcweirDEF1NAME=	$(SHL1TARGET)
177cdf0e10cSrcweir
178cdf0e10cSrcweir# create Extension -----------------------------
179cdf0e10cSrcweir
180cdf0e10cSrcweir# DESCRIPTION_SRC is the source file which is copied into the extension
181cdf0e10cSrcweir# It is defaulted to "description.xml", but we want to pre-process it, so we use an intermediate
182cdf0e10cSrcweir# file
183cdf0e10cSrcweirDESCRIPTION_SRC = $(MISC)$/description.xml
184cdf0e10cSrcweir
185cdf0e10cSrcweirCOMPONENT_XCU=\
186cdf0e10cSrcweir        registry$/data$/org$/openoffice$/Office$/DataAccess$/Drivers.xcu
187cdf0e10cSrcweir
188cdf0e10cSrcweirCOMPONENT_MERGED_XCU= \
189cdf0e10cSrcweir        $(foreach,i,$(COMPONENT_XCU) $(EXTENSIONDIR)$/$i)
190cdf0e10cSrcweir
191cdf0e10cSrcweirCOMPONENT_LIBRARY = \
192cdf0e10cSrcweir            $(EXTENSIONDIR)$/$(SHL1TARGET)$(DLLPOST)
193cdf0e10cSrcweir
194cdf0e10cSrcweirCOMPONENT_MYSQL_LIBFILE = \
195cdf0e10cSrcweir            $(EXTENSIONDIR)$/$(MYSQL_LIBFILE:f)
196cdf0e10cSrcweir
197cdf0e10cSrcweirCOMPONENT_MYSQL_CPPCONN_FILE=\
198cdf0e10cSrcweir            $(EXTENSIONDIR)$/$(MYSQL_CPPCONNFILE:f)
199cdf0e10cSrcweir
200cdf0e10cSrcweirCOMPONENT_LIBRARIES=\
201cdf0e10cSrcweir			$(COMPONENT_LIBRARY)
202cdf0e10cSrcweir
203cdf0e10cSrcweirCOMPONENT_IMAGES= \
204cdf0e10cSrcweir	$(EXTENSIONDIR)$/images$/extension_32.png \
205cdf0e10cSrcweir	$(EXTENSIONDIR)$/images$/extension_32_h.png
206cdf0e10cSrcweir
207cdf0e10cSrcweir
208cdf0e10cSrcweir# ........ component description ........
209cdf0e10cSrcweir# one file for each WITH_LANG token
210cdf0e10cSrcweirDESC_LANGS=$(WITH_LANG)
211cdf0e10cSrcweir.IF "$(DESC_LANGS)" == ""
212cdf0e10cSrcweir    DESC_LANGS=en-US
213cdf0e10cSrcweir.ENDIF
214cdf0e10cSrcweirCOMPONENT_DESCRIPTIONS=$/$(foreach,lang,$(DESC_LANGS) description$/description_$(lang).txt)
215cdf0e10cSrcweirCOMPONENT_DESCRIPTIONS_PACKDEP= \
216cdf0e10cSrcweir    $(foreach,i,$(COMPONENT_DESCRIPTIONS) $(EXTENSIONDIR)$/$i)
217cdf0e10cSrcweir
218cdf0e10cSrcweir# WITH_LANG might contain languages which we actually do not have a description for (yet)
219cdf0e10cSrcweir# Find those, and treat the specially
220cdf0e10cSrcweir
221cdf0e10cSrcweir# first, find those locales which we actually have a description file for
222cdf0e10cSrcweirEXISTING_DESCRIPTIONS=$(foreach,i,$(shell $(FIND) .$/description -name "description_*.txt") $(i:f))
223cdf0e10cSrcweirEXISTING_LANGS=$(foreach,i,$(EXISTING_DESCRIPTIONS) $(i:s,description_,,:s,.txt,,))
224cdf0e10cSrcweir
225cdf0e10cSrcweir# then, create a version of WITH_LANG where we stripped all those locales
226cdf0e10cSrcweirEXISTING_LANGS_NORMALIZED=$(strip $(EXISTING_LANGS))
227cdf0e10cSrcweirEXISTING_LANGS_NORMALIZED:=+$(EXISTING_LANGS_NORMALIZED:s/ /+/)+
228cdf0e10cSrcweirMISSING_LANGS=$(foreach,lang,$(WITH_LANG) $(eq,$(EXISTING_LANGS_NORMALIZED:s/+$(lang)+//),$(EXISTING_LANGS_NORMALIZED) $(lang)  ))
229cdf0e10cSrcweir
230cdf0e10cSrcweir# ........ dependencies for packaging the extension ........
231cdf0e10cSrcweirEXTENSION_PACKDEPS=makefile.mk $(COMPONENT_IMAGES) $(COMPONENT_DESCRIPTIONS_PACKDEP) $(COMPONENT_MERGED_XCU)
232cdf0e10cSrcweir
233cdf0e10cSrcweir.IF "$(SYSTEM_MYSQL)" != "YES"
234cdf0e10cSrcweirEXTENSION_PACKDEPS+=$(COMPONENT_MYSQL_LIBFILE)
235cdf0e10cSrcweir.ENDIF
236cdf0e10cSrcweir
237cdf0e10cSrcweir# --- Targets ------------------------------------------------------
238cdf0e10cSrcweir.INCLUDE : extension_pre.mk
239cdf0e10cSrcweir.INCLUDE : target.mk
240cdf0e10cSrcweir.INCLUDE : extension_post.mk
241cdf0e10cSrcweir
242cdf0e10cSrcweir$(COMPONENT_IMAGES) : $(SOLARSRC)$/$(RSCDEFIMG)$/desktop$/res$/$$(@:f)
243cdf0e10cSrcweir	@@-$(MKDIRHIER) $(@:d)
244cdf0e10cSrcweir    $(COPY) $< $@
245cdf0e10cSrcweir
246cdf0e10cSrcweir# existing descriptions: just copy
247cdf0e10cSrcweir$(EXTENSIONDIR)$/description$/%.txt: .$/description$/%.txt
248cdf0e10cSrcweir    @@-$(MKDIRHIER) $(@:d)
249cdf0e10cSrcweir    @$(COPY) $< $@ > $(NULLDEV)
250cdf0e10cSrcweir
251cdf0e10cSrcweir# xcu files: copy
252cdf0e10cSrcweir# the following is a hack for now - need to find out the generic mechanism later
253cdf0e10cSrcweir
254cdf0e10cSrcweir$(EXTENSIONDIR)$/registry$/data$/org$/openoffice$/Office$/DataAccess$/Drivers.xcu : .$/registry$/data$/org$/openoffice$/Office$/DataAccess$/Drivers.xcu
255cdf0e10cSrcweir    @@-$(MKDIRHIER) $(EXTENSIONDIR)$/registry$/data$/org$/openoffice$/Office$/DataAccess
256cdf0e10cSrcweir    @$(COPY) $< $(EXTENSIONDIR)$/registry$/data$/org$/openoffice$/Office$/DataAccess$/Drivers.xcu > $(NULLDEV)
257cdf0e10cSrcweir
258cdf0e10cSrcweir# The below doesn't work - it's completely beyond me .... $@ is some strange path when echoed, so the whole construct
259cdf0e10cSrcweir# doesn't work .... :(
260cdf0e10cSrcweir
261cdf0e10cSrcweir#$(foreach,i,$(COMPONENT_XCU) $(EXTENSIONDIR)$/$i : $i)
262cdf0e10cSrcweir#    @echo -----------------
263cdf0e10cSrcweir#    @echo $@
264cdf0e10cSrcweir#    @echo $<
265cdf0e10cSrcweir#    @echo -----------------
266cdf0e10cSrcweir#    -$(MKDIRHIER) $(@:d)
267cdf0e10cSrcweir#    (COPY) $< $@
268cdf0e10cSrcweir#    @echo -----------------
269cdf0e10cSrcweir
270cdf0e10cSrcweir# non-existing descriptions: copy from the English version
271cdf0e10cSrcweir.IF "$(strip $(MISSING_LANGS))" != ""
272cdf0e10cSrcweir$(foreach,i,$(MISSING_LANGS) $(EXTENSIONDIR)$/description$/description_$i.txt): .$/description$/description_en-US.txt
273cdf0e10cSrcweir    @echo ------ WARNING: .$/description$/$(@:f) not found, falling back to English description
274cdf0e10cSrcweir    @@-$(MKDIRHIER) $(@:d)
275cdf0e10cSrcweir    @$(COPY) $< $@ > $(NULLDEV)
276cdf0e10cSrcweir.ENDIF
277cdf0e10cSrcweir
278cdf0e10cSrcweir$(DESCRIPTION_SRC): description.xml
279cdf0e10cSrcweir    +-$(RM) $@
280cdf0e10cSrcweir    $(TYPE) description.xml | $(SED) "s/#VERSION#/$(EXTENSION_VERSION)/" | $(SED) "s,#TITLE#,$(EXTENSION_TITLE)," > $@
281cdf0e10cSrcweir
282cdf0e10cSrcweir.IF "$(SYSTEM_MYSQL)" != "YES"
283cdf0e10cSrcweir# --- the MySQL client lib needs to be copied
284cdf0e10cSrcweir$(COMPONENT_MYSQL_LIBFILE): $(MYSQL_LIBFILE)
285cdf0e10cSrcweir	@@-$(MKDIRHIER) $(@:d)
286cdf0e10cSrcweir	@$(COPY) $< $@ > $(NULLDEV)
287cdf0e10cSrcweir    .IF "$(OS)" == "MACOSX"
288cdf0e10cSrcweir        install_name_tool -id @__________________________________________________OOO/$(MYSQL_LIBFILE:f) $@
289cdf0e10cSrcweir    .ENDIF
290cdf0e10cSrcweir.ENDIF
291cdf0e10cSrcweir
292cdf0e10cSrcweir.IF "$(OS)" == "MACOSX"
293cdf0e10cSrcweir$(EXTENSION_TARGET): adjust_libmysql_path
294cdf0e10cSrcweir
295cdf0e10cSrcweiradjust_libmysql_path: $(EXTENSIONDIR)$/$(SHL1TARGET)$(DLLPOST)
296cdf0e10cSrcweir    install_name_tool -change $(MYSQL_LIBFILE:f) @loader_path/$(MYSQL_LIBFILE:f) $(EXTENSIONDIR)$/$(SHL1TARGET)$(DLLPOST)
297cdf0e10cSrcweir.ENDIF
298