1#************************************************************************* 2# 3# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4# 5# Copyright 2008 by Sun Microsystems, Inc. 6# 7# OpenOffice.org - a multi-platform office productivity suite 8# 9# This file is part of OpenOffice.org. 10# 11# OpenOffice.org is free software: you can redistribute it and/or modify 12# it under the terms of the GNU Lesser General Public License version 3 13# only, as published by the Free Software Foundation. 14# 15# OpenOffice.org is distributed in the hope that it will be useful, 16# but WITHOUT ANY WARRANTY; without even the implied warranty of 17# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 18# GNU Lesser General Public License version 3 for more details 19# (a copy is included in the LICENSE file that accompanied this code). 20# 21# You should have received a copy of the GNU Lesser General Public License 22# version 3 along with OpenOffice.org. If not, see 23# <http://www.openoffice.org/license.html> 24# for a copy of the LGPLv3 License. 25# 26#************************************************************************* 27 28PRJ=.. 29PRJNAME=mysqlc 30 31.INCLUDE : $(PRJ)$/version.mk 32 33TARGET=mysqlc 34ENABLE_EXCEPTIONS=TRUE 35LIBTARGET=NO 36EXTENSIONNAME:=mysql-connector-ooo 37 38.IF "$(SYSTEM_MYSQL)" == "YES" 39EXTERNAL_WARNINGS_NOT_ERRORS = TRUE 40.ENDIF 41 42# --- Settings ----------------------------------------------------- 43 44.INCLUDE : settings.mk 45 46#------------------------------------------------------------------- 47 48#---- extension version 49EXTENSION_VERSION_BASE=$(MYSQLC_VERSION_MAJOR).$(MYSQLC_VERSION_MINOR).$(MYSQLC_VERSION_MICRO) 50.IF ( "$(CWS_WORK_STAMP)" == "" ) || ( "$(UPDATER)" == "YES" ) 51 EXTENSION_VERSION=$(EXTENSION_VERSION_BASE) 52.ELSE 53 EXTENSION_VERSION=$(EXTENSION_VERSION_BASE).cws.$(CWS_WORK_STAMP) 54.ENDIF 55 56#---- extension title package name 57.IF "$(MYSQLC_STATUS)" == "final" 58 EXTENSION_TITLE:=$(MYSQLC_TITLE) 59 EXTENSION_ZIPNAME:=$(EXTENSIONNAME) 60.ELSE 61 EXTENSION_TITLE:=$(MYSQLC_TITLE) ($(MYSQLC_STATUS)) 62 EXTENSION_ZIPNAME:=$(EXTENSIONNAME) 63.ENDIF 64 65#------------------------------------------------------------------- 66 67# set default symbol visibility / scope to hidden 68.IF "$(COMNAME)" == "gcc3" 69.IF "$(HAVE_GCC_VISIBILITY_FEATURE)" == "TRUE" 70 CFLAGS += -fvisibility=hidden 71.ENDIF # HAVE_GCC_VISIBILITY_FEATURE 72.ENDIF # gcc3 73 74.IF "$(COMNAME)" == "sunpro5" 75.IF "$(CCNUMVER)" >= "00050005" 76 CFLAGS += -xldscope=hidden 77.ENDIF # 5.5 78.ENDIF # sunpro5 79 80#------------------------------------------------------------------- 81 82# The headers delivered from C/C++ have a habit of putting a ";" after the closing bracked of a namespace, which 83# yields a warning with Solaris' compiler. Until this is fixed in C/C++, silence this warning 84.IF "$(OS)" == "SOLARIS" 85 CFLAGSWARNCXX+=,wemptydecl 86 CFLAGSWARNCXX:=$(CFLAGSWARNCXX:s/ ,/,/) 87.ENDIF 88 89#------------------------------------------------------------------- 90.IF "$(ENABLE_MYSQLC)" != "YES" 91@all: 92 @echo "Mysql native driver extension build disabled." 93.ENDIF 94 95# use the static version 96.IF "$(GUI)"=="WNT" 97 MYSQL_LIBDIR=$(LIBMYSQL_PATH)$/lib 98 MYSQL_INCDIR=$(LIBMYSQL_PATH)$/include 99.ELSE 100 .IF "$(SYSTEM_MYSQL)" != "YES" 101 MYSQL_LIBDIR=$(LIBMYSQL_PATH)$/lib 102 MYSQL_INCDIR=$(LIBMYSQL_PATH)$/include 103 .ENDIF 104.ENDIF 105 106.IF "$(SYSTEM_MYSQL)" == "YES" 107CFLAGS+=-DSYSTEM_MYSQL 108.ENDIF 109 110.IF "$(SYSTEM_MYSQL_CPPCONN)" == "YES" 111CFLAGS+=-DSYSTEM_MYSQL_CPPCONN 112.ENDIF 113 114CDEFS+=-DCPPDBC_EXPORTS -DCPPCONN_LIB_BUILD 115.IF "$(SYSTEM_MYSQL_CPPCONN)" != "YES" 116CDEFS += -DCPPCONN_LIB=\"$(DLLPRE)mysqlcppconn$(DLLPOST)\" 117.ELSE 118CDEFS += -DCPPCONN_LIB=\"$(shell readlink /usr/lib/libmysqlcppconn.so)\" 119.IF "$(USE_SYSTEM_STL)"!="YES" 120CDEFS += -DADAPT_EXT_STL 121.ENDIF 122.ENDIF 123 124# --------------- MySQL settings ------------------ 125.IF "$(GUI)"=="WNT" 126 MYSQL_INC=-I$(SOLARINCDIR)$/mysqlcppconn -I$(SOLARINCDIR)$/mysqlcppconn/cppconn -I$(MYSQL_INCDIR) 127 MYSQL_LIB=$(MYSQL_LIBDIR)$/libmysql.lib 128 MYSQL_LIBFILE=$(MYSQL_LIBDIR)$/libmysql.dll 129 MYSQL_CPPCONNFILE=$(SOLARBINDIR)$/$(DLLPRE)mysqlcppconn$(DLLPOST) 130.ELSE 131 .IF "$(SYSTEM_MYSQL)" != "YES" 132 MYSQL_INC+=-I$(MYSQL_INCDIR) 133 .IF "$(OS)"=="MACOSX" 134 MYSQL_LIBFILE=$(MYSQL_LIBDIR)$/$(DLLPRE)mysql.16$(DLLPOST) 135 .ELSE 136 MYSQL_LIBFILE=$(MYSQL_LIBDIR)$/$(DLLPRE)mysql$(DLLPOST).16 137 .ENDIF 138 139 # checkdll will complain if we do not point it to the libmysql lib 140 EXTRALIBPATHS=-L$(MYSQL_LIBDIR) 141 .ENDIF 142 143 .IF "$(SYSTEM_MYSQL_CPPCONN)" != "YES" 144 .IF "$(OS)"=="MACOSX" || "$(OS)" == "SOLARIS" 145 MYSQL_LIB+=-lz -lm 146 .ELSE 147 MYSQL_LIB+=-rdynamic -lz -lcrypt -lnsl -lm 148 .ENDIF 149 MYSQL_CPPCONNFILE=$(SOLARLIBDIR)$/$(DLLPRE)mysqlcppconn$(DLLPOST) 150 .ELSE 151 MYSQL_CPPCONN_LIB+=-lmysqlcppconn 152 .ENDIF 153.ENDIF 154 155.IF "$(SYSTEM_MYSQL_CPPCONN)" != "YES" 156 MYSQL_INC+=-I$(SOLARINCDIR)$/mysqlcppconn -I$(SOLARINCDIR)$/mysqlcppconn/cppconn 157.ENDIF 158 159CFLAGS+=-I..$/..$/inc $(MYSQL_INC) \ 160 -DMYSQLC_VERSION_MAJOR=$(MYSQLC_VERSION_MAJOR) \ 161 -DMYSQLC_VERSION_MINOR=$(MYSQLC_VERSION_MINOR) \ 162 -DMYSQLC_VERSION_MICRO=$(MYSQLC_VERSION_MICRO) \ 163 $(MYSQL_DEFINES) 164 165# provide the name of the MySQL client lib to the C++ code 166.IF "$(SYSTEM_MYSQL)" != "YES" 167CDEFS += -DMYSQL_LIB=\"$(MYSQL_LIBFILE:f)\" 168.ENDIF 169 170#-------------------------------------------------- 171 172SHL1DLLPRE= 173SHL1TARGET=$(TARGET).uno 174LIB1TARGET=$(SLB)$/$(SHL1TARGET).lib 175LIB1OBJFILES= \ 176 $(SLO)$/mysqlc_driver.obj \ 177 $(SLO)$/mysqlc_services.obj \ 178 $(SLO)$/mysqlc_connection.obj \ 179 $(SLO)$/mysqlc_resultset.obj \ 180 $(SLO)$/mysqlc_resultsetmetadata.obj \ 181 $(SLO)$/mysqlc_statement.obj \ 182 $(SLO)$/mysqlc_preparedstatement.obj \ 183 $(SLO)$/mysqlc_databasemetadata.obj \ 184 $(SLO)$/mysqlc_types.obj \ 185 $(SLO)$/mysqlc_general.obj \ 186 $(SLO)$/mysqlc_propertyids.obj 187 188SHL1STDLIBS= \ 189 $(MYSQL_LIB) \ 190 $(MYSQL_CPPCONN_LIB) \ 191 $(CPPULIB) \ 192 $(SALLIB) \ 193 $(SALHELPERLIB) \ 194 $(CPPUHELPERLIB) 195 196SHL1VERSIONMAP=$(TARGET).map 197SHL1LIBS= $(LIB1TARGET) 198SHL1DEF= $(MISC)$/$(SHL1TARGET).def 199SHL1RPATH=OXT 200DEF1NAME= $(SHL1TARGET) 201 202# create Extension ----------------------------- 203 204# DESCRIPTION_SRC is the source file which is copied into the extension 205# It is defaulted to "description.xml", but we want to pre-process it, so we use an intermediate 206# file 207DESCRIPTION_SRC = $(MISC)$/description.xml 208 209COMPONENT_XCU=\ 210 registry$/data$/org$/openoffice$/Office$/DataAccess$/Drivers.xcu 211 212COMPONENT_MERGED_XCU= \ 213 $(foreach,i,$(COMPONENT_XCU) $(EXTENSIONDIR)$/$i) 214 215COMPONENT_LIBRARY = \ 216 $(EXTENSIONDIR)$/$(SHL1TARGET)$(DLLPOST) 217 218COMPONENT_MYSQL_LIBFILE = \ 219 $(EXTENSIONDIR)$/$(MYSQL_LIBFILE:f) 220 221COMPONENT_MYSQL_CPPCONN_FILE=\ 222 $(EXTENSIONDIR)$/$(MYSQL_CPPCONNFILE:f) 223 224COMPONENT_LIBRARIES=\ 225 $(COMPONENT_LIBRARY) 226 227COMPONENT_IMAGES= \ 228 $(EXTENSIONDIR)$/images$/extension_32.png \ 229 $(EXTENSIONDIR)$/images$/extension_32_h.png 230 231 232# ........ component description ........ 233# one file for each WITH_LANG token 234DESC_LANGS=$(WITH_LANG) 235.IF "$(DESC_LANGS)" == "" 236 DESC_LANGS=en-US 237.ENDIF 238COMPONENT_DESCRIPTIONS=$/$(foreach,lang,$(DESC_LANGS) description$/description_$(lang).txt) 239COMPONENT_DESCRIPTIONS_PACKDEP= \ 240 $(foreach,i,$(COMPONENT_DESCRIPTIONS) $(EXTENSIONDIR)$/$i) 241 242# WITH_LANG might contain languages which we actually do not have a description for (yet) 243# Find those, and treat the specially 244 245# first, find those locales which we actually have a description file for 246EXISTING_DESCRIPTIONS=$(foreach,i,$(shell $(FIND) .$/description -name "description_*.txt") $(i:f)) 247EXISTING_LANGS=$(foreach,i,$(EXISTING_DESCRIPTIONS) $(i:s,description_,,:s,.txt,,)) 248 249# then, create a version of WITH_LANG where we stripped all those locales 250EXISTING_LANGS_NORMALIZED=$(strip $(EXISTING_LANGS)) 251EXISTING_LANGS_NORMALIZED:=+$(EXISTING_LANGS_NORMALIZED:s/ /+/)+ 252MISSING_LANGS=$(foreach,lang,$(WITH_LANG) $(eq,$(EXISTING_LANGS_NORMALIZED:s/+$(lang)+//),$(EXISTING_LANGS_NORMALIZED) $(lang) )) 253 254# ........ dependencies for packaging the extension ........ 255EXTENSION_PACKDEPS=makefile.mk $(COMPONENT_IMAGES) $(COMPONENT_DESCRIPTIONS_PACKDEP) $(COMPONENT_MERGED_XCU) 256 257.IF "$(SYSTEM_MYSQL)" != "YES" 258EXTENSION_PACKDEPS+=$(COMPONENT_MYSQL_LIBFILE) 259.ENDIF 260 261.IF "$(SYSTEM_MYSQL_CPPCONN)" != "YES" 262EXTENSION_PACKDEPS+=$(COMPONENT_MYSQL_CPPCONN_FILE) 263.ENDIF 264 265# --- Targets ------------------------------------------------------ 266.INCLUDE : extension_pre.mk 267.INCLUDE : target.mk 268.INCLUDE : extension_post.mk 269 270$(COMPONENT_IMAGES) : $(SOLARSRC)$/$(RSCDEFIMG)$/desktop$/res$/$$(@:f) 271 @@-$(MKDIRHIER) $(@:d) 272 $(COPY) $< $@ 273 274# existing descriptions: just copy 275$(EXTENSIONDIR)$/description$/%.txt: .$/description$/%.txt 276 @@-$(MKDIRHIER) $(@:d) 277 @$(COPY) $< $@ > $(NULLDEV) 278 279# xcu files: copy 280# the following is a hack for now - need to find out the generic mechanism later 281 282$(EXTENSIONDIR)$/registry$/data$/org$/openoffice$/Office$/DataAccess$/Drivers.xcu : .$/registry$/data$/org$/openoffice$/Office$/DataAccess$/Drivers.xcu 283 @@-$(MKDIRHIER) $(EXTENSIONDIR)$/registry$/data$/org$/openoffice$/Office$/DataAccess 284 @$(COPY) $< $(EXTENSIONDIR)$/registry$/data$/org$/openoffice$/Office$/DataAccess$/Drivers.xcu > $(NULLDEV) 285 286# The below doesn't work - it's completely beyond me .... $@ is some strange path when echoed, so the whole construct 287# doesn't work .... :( 288 289#$(foreach,i,$(COMPONENT_XCU) $(EXTENSIONDIR)$/$i : $i) 290# @echo ----------------- 291# @echo $@ 292# @echo $< 293# @echo ----------------- 294# -$(MKDIRHIER) $(@:d) 295# (COPY) $< $@ 296# @echo ----------------- 297 298# non-existing descriptions: copy from the English version 299.IF "$(strip $(MISSING_LANGS))" != "" 300$(foreach,i,$(MISSING_LANGS) $(EXTENSIONDIR)$/description$/description_$i.txt): .$/description$/description_en-US.txt 301 @echo ------ WARNING: .$/description$/$(@:f) not found, falling back to English description 302 @@-$(MKDIRHIER) $(@:d) 303 @$(COPY) $< $@ > $(NULLDEV) 304.ENDIF 305 306$(DESCRIPTION_SRC): description.xml 307 +-$(RM) $@ 308 $(TYPE) description.xml | $(SED) "s/#VERSION#/$(EXTENSION_VERSION)/" | $(SED) "s,#TITLE#,$(EXTENSION_TITLE)," > $@ 309 310.IF "$(SYSTEM_MYSQL)" != "YES" 311# --- the MySQL client lib needs to be copied 312$(COMPONENT_MYSQL_LIBFILE): $(MYSQL_LIBFILE) 313 @@-$(MKDIRHIER) $(@:d) 314 @$(COPY) $< $@ > $(NULLDEV) 315 .IF "$(OS)" == "MACOSX" 316 install_name_tool -id @__________________________________________________OOO/$(MYSQL_LIBFILE:f) $@ 317 .ENDIF 318.ENDIF 319 320.IF "$(SYSTEM_MYSQL_CPPCONN)" != "YES" 321# --- the MySQL cppconn lib needs to be copied 322$(COMPONENT_MYSQL_CPPCONN_FILE): $(MYSQL_CPPCONNFILE) 323 @@-$(MKDIRHIER) $(@:d) 324 @$(COPY) $< $@ > $(NULLDEV) 325 .IF "$(OS)" == "MACOSX" 326 install_name_tool -change $(MYSQL_LIBFILE:f) @loader_path/$(MYSQL_LIBFILE:f) $@ 327 .ENDIF 328.ENDIF 329 330.IF "$(OS)" == "MACOSX" 331$(EXTENSION_TARGET): adjust_libmysql_path 332 333adjust_libmysql_path: $(EXTENSIONDIR)$/$(SHL1TARGET)$(DLLPOST) 334 install_name_tool -change $(MYSQL_LIBFILE:f) @loader_path/$(MYSQL_LIBFILE:f) $(EXTENSIONDIR)$/$(SHL1TARGET)$(DLLPOST) 335.ENDIF 336