1############################################################### 2# 3# Licensed to the Apache Software Foundation (ASF) under one 4# or more contributor license agreements. See the NOTICE file 5# distributed with this work for additional information 6# regarding copyright ownership. The ASF licenses this file 7# to you under the Apache License, Version 2.0 (the 8# "License"); you may not use this file except in compliance 9# with the License. You may obtain a copy of the License at 10# 11# http://www.apache.org/licenses/LICENSE-2.0 12# 13# Unless required by applicable law or agreed to in writing, 14# software distributed under the License is distributed on an 15# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16# KIND, either express or implied. See the License for the 17# specific language governing permissions and limitations 18# under the License. 19# 20############################################################### 21 22 23 24# this file describes all the external libraries 25# depending on the configure options these may be taken from the system, 26# or the internal/bundled copy may be built. 27 28# for every external, a function gb_LinkTarget_use__FOO is defined, 29# once for the system case, once for the internal case. 30 31# in the system case, no libraries should be registered, but the target-local 32# variable LIBS should be set to FOO_LIBS, and INCLUDES to FOO_CFLAGS. 33 34 35ifeq ($(SYSTEM_ZLIB),YES) 36 37define gb_LinkTarget__use_zlib 38$(call gb_LinkTarget_add_defs,$(1),\ 39 -DSYSTEM_ZLIB \ 40) 41$(call gb_LinkTarget_add_libs,$(1),-lz) 42endef 43 44else # !SYSTEM_ZLIB 45 46$(eval $(call gb_Helper_register_static_libraries,PLAINLIBS, \ 47 zlib \ 48)) 49 50define gb_LinkTarget__use_zlib 51$(call gb_LinkTarget_add_linked_static_libs,$(1),\ 52 zlib \ 53) 54endef 55 56endif # SYSTEM_ZLIB 57 58 59ifeq ($(SYSTEM_JPEG),YES) 60 61define gb_LinkTarget__use_jpeg 62$(call gb_LinkTarget_add_libs,$(1),-ljpeg) 63$(call gb_LinkTarget_set_ldflags,$(1),\ 64 $$(filter-out -L/usr/lib/jvm%,$$(T_LDFLAGS)) \ 65) 66ifeq ($(OS),FREEBSD) 67# JDK jpeg library on FreeBSD lives under ${JAVA_HOME}/jre/lib/${ARCH}/ 68$(call gb_LinkTarget_set_ldflags,$(1),\ 69 $$(filter-out -L$$(JAVA_HOME)/jre/lib/%,$$(T_LDFLAGS)) \ 70) 71endif 72endef 73 74else # !SYSTEM_JPEG 75 76$(eval $(call gb_Helper_register_static_libraries,PLAINLIBS, \ 77 jpeglib \ 78)) 79 80define gb_LinkTarget__use_jpeg 81$(call gb_LinkTarget_add_linked_static_libs,$(1),\ 82 jpeglib \ 83) 84endef 85 86endif # SYSTEM_JPEG 87 88 89ifeq ($(SYSTEM_EXPAT),YES) 90 91define gb_LinkTarget__use_expat 92$(if $(2),,$(error gb_LinkTarget__use_expat needs additional parameter)) 93 94$(call gb_LinkTarget_add_defs,$(1),\ 95 -DSYSTEM_EXPAT \ 96) 97 98$(call gb_LinkTarget_add_libs,$(1),-lexpat) 99endef 100 101else # !SYSTEM_EXPAT 102 103$(eval $(call gb_Helper_register_static_libraries,PLAINLIBS, \ 104 ascii_expat_xmlparse \ 105 expat_xmlparse \ 106 expat_xmltok \ 107)) 108 109define gb_LinkTarget__use_expat 110$(if $(2),,$(error gb_LinkTarget__use_expat needs additional parameter)) 111 112$(if $(filter-out ascii_expat_xmlparse,$(2)),\ 113 $(call gb_LinkTarget_add_defs,$(1),\ 114 -DXML_UNICODE \ 115)) 116 117$(call gb_LinkTarget_add_linked_static_libs,$(1),\ 118 $(2) \ 119 expat_xmltok \ 120) 121endef 122 123endif # SYSTEM_EXPAT 124 125# now define 2 wrappers that select which internal static library to use... 126define gb_LinkTarget__use_expat_utf8 127$(call gb_LinkTarget__use_expat,$(1),ascii_expat_xmlparse) 128endef 129 130define gb_LinkTarget__use_expat_utf16 131$(call gb_LinkTarget__use_expat,$(1),expat_xmlparse) 132endef 133 134 135ifeq ($(SYSTEM_LIBXML),YES) 136 137define gb_LinkTarget__use_libxml2 138$(call gb_LinkTarget_add_defs,$(1),\ 139 -DSYSTEM_LIBXML \ 140) 141$(call gb_LinkTarget_set_include,$(1),\ 142 $$(INCLUDE) \ 143 $(LIBXML_CFLAGS) \ 144) 145 146# Some system libxml2 builds report -licuuc in their link flags because 147# libxml2 itself was built against ICU. That ICU dependency is already 148# satisfied inside libxml2's own dylib; forwarding -licuuc to consumers 149# makes them link this tree's bundled (OOO-layer) ICU directly, which 150# breaks URE-layer consumers on macOS (see macosx-change-install-names.pl, 151# which has no rule for a URE library depending on an OOO one). 152$(call gb_LinkTarget_add_libs,$(1),$(filter-out -licuuc,$(LIBXML_LIBS))) 153endef 154 155else # !SYSTEM_LIBXML 156 157ifeq ($(OS),MACOSX) 158 159# Bundled libxml2 builds as a static archive on macOS (main/libxml2/makefile.mk), 160# not a dylib, so it can't be a PLAINLIB like the else-branch below. A static 161# archive carries no transitive deps, so its own libxml-2.0.pc's Libs.private 162# must be added explicitly. It is built --without-iconv, so no -liconv here. 163define gb_LinkTarget__use_libxml2 164$(call gb_LinkTarget_add_libs,$(1),\ 165 $(OUTDIR)/lib/libxml2.a \ 166 -lpthread -lm \ 167) 168endef 169 170else # !MACOSX 171 172$(eval $(call gb_Helper_register_libraries,PLAINLIBS_URE, \ 173 xml2 \ 174)) 175 176define gb_LinkTarget__use_libxml2 177$(call gb_LinkTarget_add_linked_libs,$(1),\ 178 xml2 \ 179) 180endef 181 182endif # MACOSX 183 184endif # SYSTEM_LIBXML 185 186 187ifeq ($(SYSTEM_LIBXSLT),YES) 188 189define gb_LinkTarget__use_libxslt 190$(call gb_LinkTarget_set_include,$(1),\ 191 $$(INCLUDE) \ 192 $(LIBXSLT_CFLAGS) \ 193) 194$(call gb_LinkTarget_add_libs,$(1),$(LIBXSLT_LIBS)) 195endef 196 197else # !SYSTEM_LIBXSLT 198 199ifeq ($(OS),MACOSX) 200 201# Bundled libxslt/libexslt build as static archives on macOS (see 202# main/libxslt/makefile.mk); link by absolute path, same as libxml2 above. 203define gb_LinkTarget__use_libxslt 204$(call gb_LinkTarget_add_libs,$(1),\ 205 $(OUTDIR)/lib/libxslt.a \ 206 $(OUTDIR)/lib/libexslt.a \ 207) 208endef 209 210else # !MACOSX 211 212$(eval $(call gb_Helper_register_libraries,PLAINLIBS_OOO, \ 213 xslt \ 214)) 215 216define gb_LinkTarget__use_libxslt 217$(call gb_LinkTarget_add_linked_libs,$(1),\ 218 xslt \ 219) 220endef 221 222endif # MACOSX 223 224endif # SYSTEM_LIBXSLT 225 226 227ifeq ($(SYSTEM_REDLAND),YES) 228 229define gb_LinkTarget__use_librdf 230$(call gb_LinkTarget_add_defs,$(1),\ 231 -DSYSTEM_REDLAND \ 232) 233$(call gb_LinkTarget_set_include,$(1),\ 234 $$(INCLUDE) \ 235 $(REDLAND_CFLAGS) \ 236) 237$(call gb_LinkTarget_add_libs,$(1),$(REDLAND_LIBS)) 238endef 239 240else # !SYSTEM_REDLAND 241 242$(eval $(call gb_Helper_register_libraries,PLAINLIBS_OOO, \ 243 rdf \ 244)) 245 246define gb_LinkTarget__use_librdf 247$(call gb_LinkTarget_add_linked_libs,$(1),\ 248 rdf \ 249) 250endef 251 252endif # SYSTEM_REDLAND 253 254 255ifeq ($(SYSTEM_CAIRO),YES) 256 257# FREETYPE_CLAGS from environment if ENABLE_CAIRO is used 258define gb_LinkTarget__use_cairo 259$(call gb_LinkTarget_set_include,$(1),\ 260 $$(INCLUDE) \ 261 $(FREETYPE_CFLAGS) \ 262 $(CAIRO_CFLAGS) \ 263) 264$(call gb_LinkTarget_add_libs,$(1),$(CAIRO_LIBS)) 265endef 266 267else # !SYSTEM_CAIRO 268 269$(eval $(call gb_Helper_register_libraries,PLAINLIBS_OOO, \ 270 cairo \ 271)) 272ifneq ($(OS),WNT) 273$(eval $(call gb_Helper_register_libraries,PLAINLIBS_OOO, \ 274 pixman-1 \ 275)) 276endif # WNT 277 278define gb_LinkTarget__use_cairo 279$(call gb_LinkTarget_set_include,$(1),\ 280 $$(INCLUDE) \ 281 -I$(OUTDIR)/inc/cairo \ 282 $(FREETYPE_CFLAGS) \ 283) 284$(call gb_LinkTarget_add_linked_libs,$(1),\ 285 cairo \ 286) 287ifneq ($(OS),WNT) 288$(call gb_LinkTarget_add_linked_libs,$(1),\ 289 pixman-1 \ 290) 291endif 292endef 293 294endif # SYSTEM_CAIRO 295 296 297ifeq ($(SYSTEM_GRAPHITE),YES) 298 299#check for building with stlport, but graphite was not built with stlport 300define gb_LinkTarget__use_graphite 301ifneq ($(USE_SYSTEM_STL),YES) 302$(call gb_LinkTarget_add_defs,$(1),\ 303 -DADAPT_EXT_STL \ 304) 305endif 306$(call gb_LinkTarget_set_include,$(1),\ 307 $$(INCLUDE) \ 308 $(GRAPHITE_CFLAGS) \ 309) 310$(call gb_LinkTarget_add_libs,$(1),$(GRAPHITE_LIBS)) 311endef 312 313else # !SYSTEM_GRAPHITE 314 315$(eval $(call gb_Helper_register_static_libraries,PLAINLIBS, \ 316 graphite \ 317)) 318define gb_LinkTarget__use_graphite 319$(call gb_LinkTarget_add_linked_static_libs,$(1),\ 320 graphite \ 321) 322endef 323 324endif # SYSTEM_GRAPHITE 325 326 327ifeq ($(SYSTEM_ICU),YES) 328 329define gb_LinkTarget__use_icudata 330$(call gb_LinkTarget_set_include,$(1),\ 331 $$(INCLUDE) \ 332 $(ICU_CFLAGS) \ 333) 334$(call gb_LinkTarget_add_libs,$(1),-licudata) 335endef 336define gb_LinkTarget__use_icui18n 337$(call gb_LinkTarget_set_include,$(1),\ 338 $$(INCLUDE) \ 339 $(ICU_CFLAGS) \ 340) 341$(call gb_LinkTarget_add_libs,$(1),-licui18n) 342endef 343define gb_LinkTarget__use_icule 344$(call gb_LinkTarget_set_include,$(1),\ 345 $$(INCLUDE) \ 346 $(ICU_CFLAGS) \ 347) 348$(call gb_LinkTarget_add_libs,$(1),-licule) 349endef 350define gb_LinkTarget__use_icuuc 351$(call gb_LinkTarget_set_include,$(1),\ 352 $$(INCLUDE) \ 353 $(ICU_CFLAGS) \ 354) 355$(call gb_LinkTarget_add_libs,$(1),-licuuc) 356endef 357 358else # !SYSTEM_ICU 359 360define gb_LinkTarget__use_icudata 361ifeq ($(OS)$(COM),WNTMSC) 362$(call gb_LinkTarget_add_libs,$(1),icudata.lib) 363else ifeq ($(OS)$(COM),WNTGCC) 364$(call gb_LinkTarget_add_libs,$(1),-licudt40) 365else ifeq ($(OS),OS2) 366$(call gb_LinkTarget_add_libs,$(1),-licudt) 367else 368$(call gb_LinkTarget_add_libs,$(1),-licudata) 369endif 370endef 371 372define gb_LinkTarget__use_icui18n 373ifeq ($(OS)$(COM),WNTMSC) 374$(call gb_LinkTarget_add_libs,$(1),icuin.lib) 375else ifeq ($(OS)$(COM),WNTGCC) 376$(call gb_LinkTarget_add_libs,$(1),-licuin40) 377else ifeq ($(OS),OS2) 378$(call gb_LinkTarget_add_libs,$(1),-licuin) 379else 380$(call gb_LinkTarget_add_libs,$(1),-licui18n) 381endif 382endef 383 384define gb_LinkTarget__use_icule 385ifeq ($(OS)$(COM),WNTMSC) 386$(call gb_LinkTarget_add_libs,$(1),icule.lib) 387else ifeq ($(OS)$(COM),WNTGCC) 388$(call gb_LinkTarget_add_libs,$(1),-licule40) 389else 390$(call gb_LinkTarget_add_libs,$(1),-licule) 391endif 392endef 393 394define gb_LinkTarget__use_icuuc 395ifeq ($(OS)$(COM),WNTMSC) 396$(call gb_LinkTarget_add_libs,$(1),icuuc.lib) 397else ifeq ($(OS)$(COM),WNTGCC) 398$(call gb_LinkTarget_add_libs,$(1),-licuuc40) 399else 400$(call gb_LinkTarget_add_libs,$(1),-licuuc) 401endif 402endef 403 404endif # SYSTEM_ICU 405 406 407ifeq ($(SYSTEM_OPENSSL),YES) 408 409define gb_LinkTarget__use_openssl 410$(call gb_LinkTarget_set_include,$(1),\ 411 $$(INCLUDE) \ 412 $(OPENSSL_CFLAGS) \ 413) 414$(call gb_LinkTarget_add_libs,$(1),$(OPENSSL_LIBS)) 415endef 416 417else # !SYSTEM_OPENSSL 418 419$(eval $(call gb_Helper_register_libraries,PLAINLIBS_OOO, \ 420 crypto \ 421 ssl \ 422)) 423 424define gb_LinkTarget__use_openssl 425$(call gb_LinkTarget_add_linked_libs,$(1),\ 426 crypto \ 427 ssl \ 428) 429ifeq ($(OS),SOLARIS) 430$(call gb_LinkTarget_add_libs,$(1),\ 431 -lnsl \ 432 -lsocket \ 433) 434endif 435ifeq ($(OS),LINUX) 436$(call gb_LinkTarget_add_libs,$(1),\ 437 -lpthread \ 438) 439endif 440endef 441 442endif # SYSTEM_OPENSSL 443 444 445ifeq ($(SYSTEM_CURL),YES) 446 447define gb_LinkTarget__use_curl 448$(call gb_LinkTarget_add_defs,$(1),\ 449 -DSYSTEM_CURL \ 450) 451$(call gb_LinkTarget_set_include,$(1),\ 452 $$(INCLUDE) \ 453 $(CURL_CFLAGS) \ 454) 455$(call gb_LinkTarget_add_libs,$(1),$(CURL_LIBS)) 456endef 457 458else # !SYSTEM_CURL 459 460ifeq ($(OS),WNT) 461$(eval $(call gb_Helper_register_libraries,PLAINLIBS_NONE,libcurl)) 462else 463$(eval $(call gb_Helper_register_libraries,PLAINLIBS_NONE,curl)) 464endif 465 466define gb_LinkTarget__use_curl 467ifeq ($(OS),WNT) 468$(call gb_LinkTarget_add_linked_libs,$(1),libcurl) 469else 470$(call gb_LinkTarget_add_linked_libs,$(1),curl) 471endif 472endef 473 474endif # SYSTEM_CURL 475 476 477ifeq ($(SYSTEM_COINMP),YES) 478 479define gb_LinkTarget__use_coinmp 480$(call gb_LinkTarget_add_defs,$(1),\ 481 -DSYSTEM_COINMP \ 482) 483$(call gb_LinkTarget_set_include,$(1),\ 484 $$(INCLUDE) \ 485 $(COINMP_CFLAGS) \ 486) 487$(call gb_LinkTarget_add_libs,$(1),$(COINMP_LIBS)) 488endef 489 490else # !SYSTEM_COINMP 491 492$(eval $(call gb_Helper_register_libraries,PLAINLIBS_NONE,CoinMP)) 493ifneq ($(OS),WNT) 494$(eval $(call gb_Helper_register_libraries,PLAINLIBS_NONE, \ 495 CoinUtils \ 496 Clp \ 497 Cbc \ 498 Osi \ 499 OsiClp \ 500 Cgl \ 501 CbcSolver \ 502)) 503endif 504 505define gb_LinkTarget__use_coinmp 506$(call gb_LinkTarget_set_include,$(1),\ 507 $$(INCLUDE) \ 508 -I$(OUTDIR)/inc/coinmp \ 509) 510$(call gb_LinkTarget_add_linked_libs,$(1),CoinMP) 511ifneq ($(OS),WNT) 512ifneq ($(OS),OS2) 513$(call gb_LinkTarget_add_linked_libs,$(1),\ 514 CoinUtils \ 515 Clp \ 516 Cbc \ 517 Osi \ 518 OsiClp \ 519 Cgl \ 520 CbcSolver \ 521) 522endif 523endif 524endef 525 526endif # SYSTEM_COINMP 527 528 529ifeq ($(SYSTEM_HYPH),YES) 530 531define gb_LinkTarget__use_hyphen 532$(call gb_LinkTarget_add_defs,$(1),\ 533 -DSYSTEM_HYPH \ 534) 535$(call gb_LinkTarget_add_libs,$(1),$(HYPHEN_LIB)) 536endef 537 538else # !SYSTEM_HYPH 539 540$(eval $(call gb_Helper_register_static_libraries,PLAINLIBS, \ 541 hyphen \ 542)) 543 544define gb_LinkTarget__use_hyphen 545$(call gb_LinkTarget_add_linked_static_libs,$(1),\ 546 hyphen \ 547) 548endef 549 550endif # SYSTEM_HYPH 551 552 553ifeq ($(SYSTEM_LIBTEXTCAT),YES) 554 555define gb_LinkTarget__use_libtextcat 556$(call gb_LinkTarget_add_libs,$(1),-ltextcat) 557endef 558 559else # !SYSTEM_LIBTEXTCAT 560 561$(eval $(call gb_Helper_register_libraries,PLAINLIBS_OOO, \ 562 libtextcat \ 563 textcat \ 564)) 565 566define gb_LinkTarget__use_libtextcat 567ifeq ($(OS),WNT) 568$(call gb_LinkTarget_add_linked_libs,$(1),libtextcat) 569else 570$(call gb_LinkTarget_add_linked_libs,$(1),textcat) 571endif 572endef 573 574endif # SYSTEM_LIBTEXTCAT 575 576 577ifeq ($(SYSTEM_MYTHES),YES) 578 579define gb_LinkTarget__use_mythes 580$(call gb_LinkTarget_set_include,$(1),\ 581 $$(INCLUDE) \ 582 $(MYTHES_CFLAGS) \ 583) 584$(call gb_LinkTarget_add_libs,$(1),$(MYTHES_LIBS)) 585endef 586 587else # !SYSTEM_MYTHES 588 589ifeq ($(OS),WNT) 590$(eval $(call gb_Helper_register_static_libraries,PLAINLIBS,libmythes)) 591else 592$(eval $(call gb_Helper_register_static_libraries,PLAINLIBS,mythes-1.2)) 593endif 594 595define gb_LinkTarget__use_mythes 596ifeq ($(OS),WNT) 597$(call gb_LinkTarget_add_linked_static_libs,$(1),libmythes) 598else 599$(call gb_LinkTarget_add_linked_static_libs,$(1),mythes-1.2) 600endif 601endef 602 603endif # SYSTEM_MYTHES 604 605 606ifeq ($(SYSTEM_HUNSPELL),YES) 607 608define gb_LinkTarget__use_hunspell 609$(call gb_LinkTarget_set_include,$(1),\ 610 $$(INCLUDE) \ 611 $(HUNSPELL_CFLAGS) \ 612) 613$(call gb_LinkTarget_add_libs,$(1),$(HUNSPELL_LIBS)) 614endef 615 616else # !SYSTEM_HUNSPELL 617 618ifeq ($(GUI),WNT) 619$(eval $(call gb_Helper_register_static_libraries,PLAINLIBS,libhunspell)) 620else ifeq ($(GUI),OS2) 621$(eval $(call gb_Helper_register_static_libraries,PLAINLIBS,hunspell)) 622else 623$(eval $(call gb_Helper_register_static_libraries,PLAINLIBS,hunspell-1.3)) 624endif 625 626define gb_LinkTarget__use_hunspell 627$(call gb_LinkTarget_set_include,$(1),\ 628 $$(INCLUDE) \ 629 -I$(OUTDIR)/inc/hunspell \ 630) 631$(call gb_LinkTarget_add_defs,$(1),\ 632 -DHUNSPELL_STATIC 633) 634ifeq ($(GUI),WNT) 635$(call gb_LinkTarget_add_linked_static_libs,$(1),libhunspell) 636else ifeq ($(GUI),OS2) 637$(call gb_LinkTarget_add_linked_static_libs,$(1),hunspell) 638else 639$(call gb_LinkTarget_add_linked_static_libs,$(1),hunspell-1.3) 640endif 641endef 642 643endif # SYSTEM_HUNSPELL 644 645 646 647ifeq ($(SYSTEM_PYTHON),YES) 648 649define gb_LinkTarget__use_python 650$(call gb_LinkTarget_set_include,$(1),\ 651 $$(INCLUDE) \ 652 $(filter -I%,$(PYTHON_CFLAGS)) \ 653) 654$(call gb_LinkTarget_add_defs,$(1),\ 655 $(filter-out -I%,$(PYTHON_CFLAGS)) \ 656) 657$(call gb_LinkTarget_add_libs,$(1),\ 658 $(PYTHON_LIBS) \ 659) 660endef 661 662else # !SYSTEM_PYTHON 663 664include $(SRCDIR)/python/pyversion.mk 665 666define gb_LinkTarget__use_python 667$(call gb_LinkTarget_set_include,$(1),\ 668 $$(INCLUDE) \ 669 -I$(OUTDIR)/inc/python \ 670) 671$(call gb_LinkTarget_add_libs,$(1),$(PYTHONLIB)) 672endef 673 674endif # SYSTEM_PYTHON 675 676# vim: set noet sw=4 ts=4: 677