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