xref: /trunk/main/RepositoryExternal.mk (revision a282c51ec8f2702b254a1d8ed97d0b81c90d700a)
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