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