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