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 157$(eval $(call gb_Helper_register_libraries,PLAINLIBS_URE, \ 158 xml2 \ 159)) 160 161define gb_LinkTarget__use_libxml2 162$(call gb_LinkTarget_add_linked_libs,$(1),\ 163 xml2 \ 164) 165endef 166 167endif # SYSTEM_LIBXML 168 169 170ifeq ($(SYSTEM_LIBXSLT),YES) 171 172define gb_LinkTarget__use_libxslt 173$(call gb_LinkTarget_set_include,$(1),\ 174 $$(INCLUDE) \ 175 $(LIBXSLT_CFLAGS) \ 176) 177$(call gb_LinkTarget_add_libs,$(1),$(LIBXSLT_LIBS)) 178endef 179 180else # !SYSTEM_LIBXSLT 181 182$(eval $(call gb_Helper_register_libraries,PLAINLIBS_OOO, \ 183 xslt \ 184)) 185 186define gb_LinkTarget__use_libxslt 187$(call gb_LinkTarget_add_linked_libs,$(1),\ 188 xslt \ 189) 190endef 191 192endif # SYSTEM_LIBXSLT 193 194 195ifeq ($(SYSTEM_REDLAND),YES) 196 197define gb_LinkTarget__use_librdf 198$(call gb_LinkTarget_add_defs,$(1),\ 199 -DSYSTEM_REDLAND \ 200) 201$(call gb_LinkTarget_set_include,$(1),\ 202 $$(INCLUDE) \ 203 $(REDLAND_CFLAGS) \ 204) 205$(call gb_LinkTarget_add_libs,$(1),$(REDLAND_LIBS)) 206endef 207 208else # !SYSTEM_REDLAND 209 210$(eval $(call gb_Helper_register_libraries,PLAINLIBS_OOO, \ 211 rdf \ 212)) 213 214define gb_LinkTarget__use_librdf 215$(call gb_LinkTarget_add_linked_libs,$(1),\ 216 rdf \ 217) 218endef 219 220endif # SYSTEM_REDLAND 221 222 223ifeq ($(SYSTEM_CAIRO),YES) 224 225# FREETYPE_CLAGS from environment if ENABLE_CAIRO is used 226define gb_LinkTarget__use_cairo 227$(call gb_LinkTarget_set_include,$(1),\ 228 $$(INCLUDE) \ 229 $(FREETYPE_CFLAGS) \ 230 $(CAIRO_CFLAGS) \ 231) 232$(call gb_LinkTarget_add_libs,$(1),$(CAIRO_LIBS)) 233endef 234 235else # !SYSTEM_CAIRO 236 237$(eval $(call gb_Helper_register_libraries,PLAINLIBS_OOO, \ 238 cairo \ 239)) 240ifneq ($(OS),WNT) 241$(eval $(call gb_Helper_register_libraries,PLAINLIBS_OOO, \ 242 pixman-1 \ 243)) 244endif # WNT 245 246define gb_LinkTarget__use_cairo 247$(call gb_LinkTarget_set_include,$(1),\ 248 $$(INCLUDE) \ 249 -I$(OUTDIR)/inc/cairo \ 250 $(FREETYPE_CFLAGS) \ 251) 252$(call gb_LinkTarget_add_linked_libs,$(1),\ 253 cairo \ 254) 255ifneq ($(OS),WNT) 256$(call gb_LinkTarget_add_linked_libs,$(1),\ 257 pixman-1 \ 258) 259endif 260endef 261 262endif # SYSTEM_CAIRO 263 264 265ifeq ($(SYSTEM_GRAPHITE),YES) 266 267#check for building with stlport, but graphite was not built with stlport 268define gb_LinkTarget__use_graphite 269ifneq ($(USE_SYSTEM_STL),YES) 270$(call gb_LinkTarget_add_defs,$(1),\ 271 -DADAPT_EXT_STL \ 272) 273endif 274$(call gb_LinkTarget_set_include,$(1),\ 275 $$(INCLUDE) \ 276 $(GRAPHITE_CFLAGS) \ 277) 278$(call gb_LinkTarget_add_libs,$(1),$(GRAPHITE_LIBS)) 279endef 280 281else # !SYSTEM_GRAPHITE 282 283$(eval $(call gb_Helper_register_static_libraries,PLAINLIBS, \ 284 graphite \ 285)) 286define gb_LinkTarget__use_graphite 287$(call gb_LinkTarget_add_linked_static_libs,$(1),\ 288 graphite \ 289) 290endef 291 292endif # SYSTEM_GRAPHITE 293 294 295ifeq ($(SYSTEM_ICU),YES) 296 297define gb_LinkTarget__use_icudata 298$(call gb_LinkTarget_add_libs,$(1),-licudata) 299endef 300define gb_LinkTarget__use_icui18n 301$(call gb_LinkTarget_add_libs,$(1),-licui18n) 302endef 303define gb_LinkTarget__use_icule 304$(call gb_LinkTarget_add_libs,$(1),-licule) 305endef 306define gb_LinkTarget__use_icuuc 307$(call gb_LinkTarget_add_libs,$(1),-licuuc) 308endef 309 310else # !SYSTEM_ICU 311 312define gb_LinkTarget__use_icudata 313ifeq ($(OS)$(COM),WNTMSC) 314$(call gb_LinkTarget_add_libs,$(1),icudata.lib) 315else ifeq ($(OS)$(COM),WNTGCC) 316$(call gb_LinkTarget_add_libs,$(1),-licudt40) 317else ifeq ($(OS),OS2) 318$(call gb_LinkTarget_add_libs,$(1),-licudt) 319else 320$(call gb_LinkTarget_add_libs,$(1),-licudata) 321endif 322endef 323 324define gb_LinkTarget__use_icui18n 325ifeq ($(OS)$(COM),WNTMSC) 326$(call gb_LinkTarget_add_libs,$(1),icuin.lib) 327else ifeq ($(OS)$(COM),WNTGCC) 328$(call gb_LinkTarget_add_libs,$(1),-licuin40) 329else ifeq ($(OS),OS2) 330$(call gb_LinkTarget_add_libs,$(1),-licuin) 331else 332$(call gb_LinkTarget_add_libs,$(1),-licui18n) 333endif 334endef 335 336define gb_LinkTarget__use_icule 337ifeq ($(OS)$(COM),WNTMSC) 338$(call gb_LinkTarget_add_libs,$(1),icule.lib) 339else ifeq ($(OS)$(COM),WNTGCC) 340$(call gb_LinkTarget_add_libs,$(1),-licule40) 341else 342$(call gb_LinkTarget_add_libs,$(1),-licule) 343endif 344endef 345 346define gb_LinkTarget__use_icuuc 347ifeq ($(OS)$(COM),WNTMSC) 348$(call gb_LinkTarget_add_libs,$(1),icuuc.lib) 349else ifeq ($(OS)$(COM),WNTGCC) 350$(call gb_LinkTarget_add_libs,$(1),-licuuc40) 351else 352$(call gb_LinkTarget_add_libs,$(1),-licuuc) 353endif 354endef 355 356endif # SYSTEM_ICU 357 358 359ifeq ($(SYSTEM_OPENSSL),YES) 360 361define gb_LinkTarget__use_openssl 362$(call gb_LinkTarget_set_include,$(1),\ 363 $$(INCLUDE) \ 364 $(OPENSSL_CFLAGS) \ 365) 366$(call gb_LinkTarget_add_libs,$(1),$(OPENSSL_LIBS)) 367endef 368 369else # !SYSTEM_OPENSSL 370 371$(eval $(call gb_Helper_register_libraries,PLAINLIBS_OOO, \ 372 crypto \ 373 ssl \ 374)) 375 376define gb_LinkTarget__use_openssl 377$(call gb_LinkTarget_add_linked_libs,$(1),\ 378 crypto \ 379 ssl \ 380) 381ifeq ($(OS),SOLARIS) 382$(call gb_LinkTarget_add_libs,$(1),\ 383 -lnsl \ 384 -lsocket \ 385) 386endif 387ifeq ($(OS),LINUX) 388$(call gb_LinkTarget_add_libs,$(1),\ 389 -lpthread \ 390) 391endif 392endef 393 394endif # SYSTEM_OPENSSL 395 396 397ifeq ($(SYSTEM_CURL),YES) 398 399define gb_LinkTarget__use_curl 400$(call gb_LinkTarget_add_defs,$(1),\ 401 -DSYSTEM_CURL \ 402) 403$(call gb_LinkTarget_set_include,$(1),\ 404 $$(INCLUDE) \ 405 $(CURL_CFLAGS) \ 406) 407$(call gb_LinkTarget_add_libs,$(1),$(CURL_LIBS)) 408endef 409 410else # !SYSTEM_CURL 411 412ifeq ($(OS),WNT) 413$(eval $(call gb_Helper_register_libraries,PLAINLIBS_NONE,libcurl)) 414else 415$(eval $(call gb_Helper_register_libraries,PLAINLIBS_NONE,curl)) 416endif 417 418define gb_LinkTarget__use_curl 419ifeq ($(OS),WNT) 420$(call gb_LinkTarget_add_linked_libs,$(1),libcurl) 421else 422$(call gb_LinkTarget_add_linked_libs,$(1),curl) 423endif 424endef 425 426endif # SYSTEM_CURL 427 428 429ifeq ($(SYSTEM_COINMP),YES) 430 431define gb_LinkTarget__use_coinmp 432$(call gb_LinkTarget_add_defs,$(1),\ 433 -DSYSTEM_COINMP \ 434) 435$(call gb_LinkTarget_set_include,$(1),\ 436 $$(INCLUDE) \ 437 $(COINMP_CFLAGS) \ 438) 439$(call gb_LinkTarget_add_libs,$(1),$(COINMP_LIBS)) 440endef 441 442else # !SYSTEM_COINMP 443 444$(eval $(call gb_Helper_register_libraries,PLAINLIBS_NONE,CoinMP)) 445ifneq ($(OS),WNT) 446$(eval $(call gb_Helper_register_libraries,PLAINLIBS_NONE, \ 447 CoinUtils \ 448 Clp \ 449 Cbc \ 450 Osi \ 451 OsiClp \ 452 Cgl \ 453 CbcSolver \ 454)) 455endif 456 457define gb_LinkTarget__use_coinmp 458$(call gb_LinkTarget_set_include,$(1),\ 459 $$(INCLUDE) \ 460 -I$(OUTDIR)/inc/coinmp \ 461) 462$(call gb_LinkTarget_add_linked_libs,$(1),CoinMP) 463ifneq ($(OS),WNT) 464ifneq ($(OS),OS2) 465$(call gb_LinkTarget_add_linked_libs,$(1),\ 466 CoinUtils \ 467 Clp \ 468 Cbc \ 469 Osi \ 470 OsiClp \ 471 Cgl \ 472 CbcSolver \ 473) 474endif 475endif 476endef 477 478endif # SYSTEM_COINMP 479 480 481ifeq ($(SYSTEM_HYPH),YES) 482 483define gb_LinkTarget__use_hyphen 484$(call gb_LinkTarget_add_defs,$(1),\ 485 -DSYSTEM_HYPH \ 486) 487$(call gb_LinkTarget_add_libs,$(1),$(HYPHEN_LIB)) 488endef 489 490else # !SYSTEM_HYPH 491 492$(eval $(call gb_Helper_register_static_libraries,PLAINLIBS, \ 493 hyphen \ 494)) 495 496define gb_LinkTarget__use_hyphen 497$(call gb_LinkTarget_add_linked_static_libs,$(1),\ 498 hyphen \ 499) 500endef 501 502endif # SYSTEM_HYPH 503 504 505ifeq ($(SYSTEM_LIBTEXTCAT),YES) 506 507define gb_LinkTarget__use_libtextcat 508$(call gb_LinkTarget_add_libs,$(1),-ltextcat) 509endef 510 511else # !SYSTEM_LIBTEXTCAT 512 513$(eval $(call gb_Helper_register_libraries,PLAINLIBS_OOO, \ 514 libtextcat \ 515 textcat \ 516)) 517 518define gb_LinkTarget__use_libtextcat 519ifeq ($(OS),WNT) 520$(call gb_LinkTarget_add_linked_libs,$(1),libtextcat) 521else 522$(call gb_LinkTarget_add_linked_libs,$(1),textcat) 523endif 524endef 525 526endif # SYSTEM_LIBTEXTCAT 527 528 529ifeq ($(SYSTEM_MYTHES),YES) 530 531define gb_LinkTarget__use_mythes 532$(call gb_LinkTarget_set_include,$(1),\ 533 $$(INCLUDE) \ 534 $(MYTHES_CFLAGS) \ 535) 536$(call gb_LinkTarget_add_libs,$(1),$(MYTHES_LIBS)) 537endef 538 539else # !SYSTEM_MYTHES 540 541ifeq ($(OS),WNT) 542$(eval $(call gb_Helper_register_static_libraries,PLAINLIBS,libmythes)) 543else 544$(eval $(call gb_Helper_register_static_libraries,PLAINLIBS,mythes-1.2)) 545endif 546 547define gb_LinkTarget__use_mythes 548ifeq ($(OS),WNT) 549$(call gb_LinkTarget_add_linked_static_libs,$(1),libmythes) 550else 551$(call gb_LinkTarget_add_linked_static_libs,$(1),mythes-1.2) 552endif 553endef 554 555endif # SYSTEM_MYTHES 556 557 558ifeq ($(SYSTEM_HUNSPELL),YES) 559 560define gb_LinkTarget__use_hunspell 561$(call gb_LinkTarget_set_include,$(1),\ 562 $$(INCLUDE) \ 563 $(HUNSPELL_CFLAGS) \ 564) 565$(call gb_LinkTarget_add_libs,$(1),$(HUNSPELL_LIBS)) 566endef 567 568else # !SYSTEM_HUNSPELL 569 570ifeq ($(GUI),WNT) 571$(eval $(call gb_Helper_register_static_libraries,PLAINLIBS,libhunspell)) 572else ifeq ($(GUI),OS2) 573$(eval $(call gb_Helper_register_static_libraries,PLAINLIBS,hunspell)) 574else 575$(eval $(call gb_Helper_register_static_libraries,PLAINLIBS,hunspell-1.3)) 576endif 577 578define gb_LinkTarget__use_hunspell 579$(call gb_LinkTarget_set_include,$(1),\ 580 $$(INCLUDE) \ 581 -I$(OUTDIR)/inc/hunspell \ 582) 583$(call gb_LinkTarget_add_defs,$(1),\ 584 -DHUNSPELL_STATIC 585) 586ifeq ($(GUI),WNT) 587$(call gb_LinkTarget_add_linked_static_libs,$(1),libhunspell) 588else ifeq ($(GUI),OS2) 589$(call gb_LinkTarget_add_linked_static_libs,$(1),hunspell) 590else 591$(call gb_LinkTarget_add_linked_static_libs,$(1),hunspell-1.3) 592endif 593endef 594 595endif # SYSTEM_HUNSPELL 596 597 598 599ifeq ($(SYSTEM_PYTHON),YES) 600 601define gb_LinkTarget__use_python 602$(call gb_LinkTarget_set_include,$(1),\ 603 $$(INCLUDE) \ 604 $(filter -I%,$(PYTHON_CFLAGS)) \ 605) 606$(call gb_LinkTarget_add_defs,$(1),\ 607 $(filter-out -I%,$(PYTHON_CFLAGS)) \ 608) 609$(call gb_LinkTarget_add_libs,$(1),\ 610 $(PYTHON_LIBS) \ 611) 612endef 613 614else # !SYSTEM_PYTHON 615 616include $(SRCDIR)/python/pyversion.mk 617 618define gb_LinkTarget__use_python 619$(call gb_LinkTarget_set_include,$(1),\ 620 $$(INCLUDE) \ 621 -I$(OUTDIR)/inc/python \ 622) 623$(call gb_LinkTarget_add_libs,$(1),$(PYTHONLIB)) 624endef 625 626endif # SYSTEM_PYTHON 627 628# vim: set noet sw=4 ts=4: 629