xref: /trunk/main/RepositoryExternal.mk (revision 8dfc65616f7a412fefc598c9b6d9cd34812ef0c1)
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.
163define gb_LinkTarget__use_libxml2
164$(call gb_LinkTarget_add_libs,$(1),\
165    $(OUTDIR)/lib/libxml2.a \
166    -lpthread -liconv -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_add_libs,$(1),-licudata)
331endef
332define gb_LinkTarget__use_icui18n
333$(call gb_LinkTarget_add_libs,$(1),-licui18n)
334endef
335define gb_LinkTarget__use_icule
336$(call gb_LinkTarget_add_libs,$(1),-licule)
337endef
338define gb_LinkTarget__use_icuuc
339$(call gb_LinkTarget_add_libs,$(1),-licuuc)
340endef
341
342else # !SYSTEM_ICU
343
344define gb_LinkTarget__use_icudata
345ifeq ($(OS)$(COM),WNTMSC)
346$(call gb_LinkTarget_add_libs,$(1),icudata.lib)
347else ifeq ($(OS)$(COM),WNTGCC)
348$(call gb_LinkTarget_add_libs,$(1),-licudt40)
349else ifeq ($(OS),OS2)
350$(call gb_LinkTarget_add_libs,$(1),-licudt)
351else
352$(call gb_LinkTarget_add_libs,$(1),-licudata)
353endif
354endef
355
356define gb_LinkTarget__use_icui18n
357ifeq ($(OS)$(COM),WNTMSC)
358$(call gb_LinkTarget_add_libs,$(1),icuin.lib)
359else ifeq ($(OS)$(COM),WNTGCC)
360$(call gb_LinkTarget_add_libs,$(1),-licuin40)
361else ifeq ($(OS),OS2)
362$(call gb_LinkTarget_add_libs,$(1),-licuin)
363else
364$(call gb_LinkTarget_add_libs,$(1),-licui18n)
365endif
366endef
367
368define gb_LinkTarget__use_icule
369ifeq ($(OS)$(COM),WNTMSC)
370$(call gb_LinkTarget_add_libs,$(1),icule.lib)
371else ifeq ($(OS)$(COM),WNTGCC)
372$(call gb_LinkTarget_add_libs,$(1),-licule40)
373else
374$(call gb_LinkTarget_add_libs,$(1),-licule)
375endif
376endef
377
378define gb_LinkTarget__use_icuuc
379ifeq ($(OS)$(COM),WNTMSC)
380$(call gb_LinkTarget_add_libs,$(1),icuuc.lib)
381else ifeq ($(OS)$(COM),WNTGCC)
382$(call gb_LinkTarget_add_libs,$(1),-licuuc40)
383else
384$(call gb_LinkTarget_add_libs,$(1),-licuuc)
385endif
386endef
387
388endif # SYSTEM_ICU
389
390
391ifeq ($(SYSTEM_OPENSSL),YES)
392
393define gb_LinkTarget__use_openssl
394$(call gb_LinkTarget_set_include,$(1),\
395    $$(INCLUDE) \
396    $(OPENSSL_CFLAGS) \
397)
398$(call gb_LinkTarget_add_libs,$(1),$(OPENSSL_LIBS))
399endef
400
401else # !SYSTEM_OPENSSL
402
403$(eval $(call gb_Helper_register_libraries,PLAINLIBS_OOO, \
404    crypto \
405    ssl \
406))
407
408define gb_LinkTarget__use_openssl
409$(call gb_LinkTarget_add_linked_libs,$(1),\
410    crypto \
411    ssl \
412)
413ifeq ($(OS),SOLARIS)
414$(call gb_LinkTarget_add_libs,$(1),\
415    -lnsl \
416    -lsocket \
417)
418endif
419ifeq ($(OS),LINUX)
420$(call gb_LinkTarget_add_libs,$(1),\
421    -lpthread \
422)
423endif
424endef
425
426endif # SYSTEM_OPENSSL
427
428
429ifeq ($(SYSTEM_CURL),YES)
430
431define gb_LinkTarget__use_curl
432$(call gb_LinkTarget_add_defs,$(1),\
433    -DSYSTEM_CURL \
434)
435$(call gb_LinkTarget_set_include,$(1),\
436    $$(INCLUDE) \
437    $(CURL_CFLAGS) \
438)
439$(call gb_LinkTarget_add_libs,$(1),$(CURL_LIBS))
440endef
441
442else # !SYSTEM_CURL
443
444ifeq ($(OS),WNT)
445$(eval $(call gb_Helper_register_libraries,PLAINLIBS_NONE,libcurl))
446else
447$(eval $(call gb_Helper_register_libraries,PLAINLIBS_NONE,curl))
448endif
449
450define gb_LinkTarget__use_curl
451ifeq ($(OS),WNT)
452$(call gb_LinkTarget_add_linked_libs,$(1),libcurl)
453else
454$(call gb_LinkTarget_add_linked_libs,$(1),curl)
455endif
456endef
457
458endif # SYSTEM_CURL
459
460
461ifeq ($(SYSTEM_COINMP),YES)
462
463define gb_LinkTarget__use_coinmp
464$(call gb_LinkTarget_add_defs,$(1),\
465    -DSYSTEM_COINMP \
466)
467$(call gb_LinkTarget_set_include,$(1),\
468    $$(INCLUDE) \
469    $(COINMP_CFLAGS) \
470)
471$(call gb_LinkTarget_add_libs,$(1),$(COINMP_LIBS))
472endef
473
474else # !SYSTEM_COINMP
475
476$(eval $(call gb_Helper_register_libraries,PLAINLIBS_NONE,CoinMP))
477ifneq ($(OS),WNT)
478$(eval $(call gb_Helper_register_libraries,PLAINLIBS_NONE, \
479    CoinUtils \
480    Clp \
481    Cbc \
482    Osi \
483    OsiClp \
484    Cgl \
485    CbcSolver \
486))
487endif
488
489define gb_LinkTarget__use_coinmp
490$(call gb_LinkTarget_set_include,$(1),\
491    $$(INCLUDE) \
492    -I$(OUTDIR)/inc/coinmp \
493)
494$(call gb_LinkTarget_add_linked_libs,$(1),CoinMP)
495ifneq ($(OS),WNT)
496ifneq ($(OS),OS2)
497$(call gb_LinkTarget_add_linked_libs,$(1),\
498    CoinUtils \
499    Clp \
500    Cbc \
501    Osi \
502    OsiClp \
503    Cgl \
504    CbcSolver \
505)
506endif
507endif
508endef
509
510endif # SYSTEM_COINMP
511
512
513ifeq ($(SYSTEM_HYPH),YES)
514
515define gb_LinkTarget__use_hyphen
516$(call gb_LinkTarget_add_defs,$(1),\
517        -DSYSTEM_HYPH \
518)
519$(call gb_LinkTarget_add_libs,$(1),$(HYPHEN_LIB))
520endef
521
522else # !SYSTEM_HYPH
523
524$(eval $(call gb_Helper_register_static_libraries,PLAINLIBS, \
525        hyphen \
526))
527
528define gb_LinkTarget__use_hyphen
529$(call gb_LinkTarget_add_linked_static_libs,$(1),\
530        hyphen \
531)
532endef
533
534endif # SYSTEM_HYPH
535
536
537ifeq ($(SYSTEM_LIBTEXTCAT),YES)
538
539define gb_LinkTarget__use_libtextcat
540$(call gb_LinkTarget_add_libs,$(1),-ltextcat)
541endef
542
543else # !SYSTEM_LIBTEXTCAT
544
545$(eval $(call gb_Helper_register_libraries,PLAINLIBS_OOO, \
546    libtextcat \
547    textcat \
548))
549
550define gb_LinkTarget__use_libtextcat
551ifeq ($(OS),WNT)
552$(call gb_LinkTarget_add_linked_libs,$(1),libtextcat)
553else
554$(call gb_LinkTarget_add_linked_libs,$(1),textcat)
555endif
556endef
557
558endif # SYSTEM_LIBTEXTCAT
559
560
561ifeq ($(SYSTEM_MYTHES),YES)
562
563define gb_LinkTarget__use_mythes
564$(call gb_LinkTarget_set_include,$(1),\
565    $$(INCLUDE) \
566    $(MYTHES_CFLAGS) \
567)
568$(call gb_LinkTarget_add_libs,$(1),$(MYTHES_LIBS))
569endef
570
571else # !SYSTEM_MYTHES
572
573ifeq ($(OS),WNT)
574$(eval $(call gb_Helper_register_static_libraries,PLAINLIBS,libmythes))
575else
576$(eval $(call gb_Helper_register_static_libraries,PLAINLIBS,mythes-1.2))
577endif
578
579define gb_LinkTarget__use_mythes
580ifeq ($(OS),WNT)
581$(call gb_LinkTarget_add_linked_static_libs,$(1),libmythes)
582else
583$(call gb_LinkTarget_add_linked_static_libs,$(1),mythes-1.2)
584endif
585endef
586
587endif # SYSTEM_MYTHES
588
589
590ifeq ($(SYSTEM_HUNSPELL),YES)
591
592define gb_LinkTarget__use_hunspell
593$(call gb_LinkTarget_set_include,$(1),\
594        $$(INCLUDE) \
595        $(HUNSPELL_CFLAGS) \
596)
597$(call gb_LinkTarget_add_libs,$(1),$(HUNSPELL_LIBS))
598endef
599
600else # !SYSTEM_HUNSPELL
601
602ifeq ($(GUI),WNT)
603$(eval $(call gb_Helper_register_static_libraries,PLAINLIBS,libhunspell))
604else ifeq ($(GUI),OS2)
605$(eval $(call gb_Helper_register_static_libraries,PLAINLIBS,hunspell))
606else
607$(eval $(call gb_Helper_register_static_libraries,PLAINLIBS,hunspell-1.3))
608endif
609
610define gb_LinkTarget__use_hunspell
611$(call gb_LinkTarget_set_include,$(1),\
612    $$(INCLUDE) \
613    -I$(OUTDIR)/inc/hunspell \
614)
615$(call gb_LinkTarget_add_defs,$(1),\
616    -DHUNSPELL_STATIC
617)
618ifeq ($(GUI),WNT)
619$(call gb_LinkTarget_add_linked_static_libs,$(1),libhunspell)
620else ifeq ($(GUI),OS2)
621$(call gb_LinkTarget_add_linked_static_libs,$(1),hunspell)
622else
623$(call gb_LinkTarget_add_linked_static_libs,$(1),hunspell-1.3)
624endif
625endef
626
627endif # SYSTEM_HUNSPELL
628
629
630
631ifeq ($(SYSTEM_PYTHON),YES)
632
633define gb_LinkTarget__use_python
634$(call gb_LinkTarget_set_include,$(1),\
635        $$(INCLUDE) \
636        $(filter -I%,$(PYTHON_CFLAGS)) \
637)
638$(call gb_LinkTarget_add_defs,$(1),\
639        $(filter-out -I%,$(PYTHON_CFLAGS)) \
640)
641$(call gb_LinkTarget_add_libs,$(1),\
642        $(PYTHON_LIBS) \
643)
644endef
645
646else # !SYSTEM_PYTHON
647
648include $(SRCDIR)/python/pyversion.mk
649
650define gb_LinkTarget__use_python
651$(call gb_LinkTarget_set_include,$(1),\
652        $$(INCLUDE) \
653        -I$(OUTDIR)/inc/python \
654)
655$(call gb_LinkTarget_add_libs,$(1),$(PYTHONLIB))
656endef
657
658endif # SYSTEM_PYTHON
659
660# vim: set noet sw=4 ts=4:
661