xref: /AOO42X/main/RepositoryExternal.mk (revision 8c0a86f319e730f218fbefae1d02848b35a05144)
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