xref: /core/Makefile.fetch (revision f54478cc)
1# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
2#
3# This file is part of the LibreOffice project.
4#
5# This Source Code Form is subject to the terms of the Mozilla Public
6# License, v. 2.0. If a copy of the MPL was not distributed with this
7# file, You can obtain one at http://mozilla.org/MPL/2.0/.
8#
9
10fetch_LOGFILE := $(TARFILE_LOCATION)/fetch.log
11
12ifneq (,$(WGET))
13define fetch_Download__wget_command
14&& bash -c '$(WGET) --progress=dot:mega -Q 0 -P "." -l 0 -nd -nH -N --no-use-server-timestamps $1/$2 2>&1 | tee -a $(fetch_LOGFILE) && [ $$PIPESTATUS -eq 0 ]'
15endef
16
17else
18define fetch_Download__wget_command
19&& echo fetching $2 && bash -c '$(CURL) -O $1/$2 2>&1 | tee -a $(fetch_LOGFILE) && [ $$PIPESTATUS -eq 0 ]'
20endef
21
22endif
23
24ifneq (,$(SHA256SUM))
25define fetch_Download__checksum_command
26&& SUM=`$(SHA256SUM) $1 | sed "s/ .*//"` \
27&& if test "$$SUM" != "$2"; then \
28	echo ERROR: expected checksum for $1 is $2 2>&1 | tee -a $(fetch_LOGFILE); \
29	false; \
30fi
31endef
32
33else
34fetch_Download__checksum_command :=
35
36endif
37
38# fetch__Download_item url tarball-name sha256sum
39define fetch__Download_item
40$(if $(wildcard $(TARFILE_LOCATION)/$2),, \
41cd $(TARFILE_LOCATION)/tmp \
42$(call fetch_Download__wget_command,$1,$2) \
43$(if $3,$(call fetch_Download__checksum_command,$2,$3)) \
44&& mv $2 ../ \
45)
46
47endef
48
49# fetch_Download__is_checksum checksum
50define fetch_Download__is_checksum
51$(filter 32,$(words $(shell echo $(1) | sed -e 's/./& /g')))
52endef
53
54define fetch_Download__subst_var
55$(subst _TTF,_SHA256SUM,$(subst _DLL,_SHA256SUM,$(subst _TARBALL,_SHA256SUM,$(subst _PACK,_SHA256SUM,$(subst _JAR,_SHA256SUM,$(1))))))
56endef
57
58# fetch_Download_item url variable-name
59define fetch_Download_item
60$(if $(strip $($(2))),,$(error fetch__Download_item: $(2) is empty))
61$(if $(filter undefined,$(origin $(call fetch_Download__subst_var,$(2)))),\
62	$(error "fetch_Download_item: no checksum found for $($(2)). Please define $(call fetch_Download__subst_var,$(2)) in download.lst."),\
63	$(call fetch__Download_item,$(1),$($2),$($(call fetch_Download__subst_var,$(2)))) \
64)
65
66endef
67
68# fetch_Download_item url tarball-name
69define fetch_Download_item_unchecked
70$(call fetch__Download_item,$1,$2)
71
72endef
73
74fetch_BUILD_TYPE := $(sort $(BUILD_TYPE))
75ifneq ($(CROSS_COMPILING),)
76fetch_BUILD_TYPE := $(sort $(fetch_BUILD_TYPE) $(shell . $(SRCDIR)/bin/get_config_variables --build BUILD_TYPE && echo $$BUILD_TYPE))
77endif
78
79# Return variable-name if this tarball should be fetched.
80#
81# This function is used for tarballs predefined in download.lst.
82#
83# fetch_Optional build-type variable-name
84define fetch_Optional
85$(if $(filter ALL,$(DO_FETCH_TARBALLS))$(filter $1,$(fetch_BUILD_TYPE)),$2)
86endef
87
88# Return variable-name if this pack should be fetched.
89#
90# This function is used for packs defined by configure.
91#
92# fetch_Optional_pack variable-name
93define fetch_Optional_pack
94$(if $(strip $($(1))),$(1))
95endef
96
97download: $(WORKDIR)/download
98
99$(WORKDIR)/download: $(BUILDDIR)/config_$(gb_Side).mk $(SRCDIR)/download.lst $(SRCDIR)/Makefile.fetch
100	-@mkdir -p $(TARFILE_LOCATION)/tmp
101	@date >> $(fetch_LOGFILE)
102	$(foreach item, \
103		$(call fetch_Optional,ABW,ABW_TARBALL) \
104		$(call fetch_Optional,APACHE_COMMONS,APACHE_COMMONS_LOGGING_TARBALL) \
105		$(call fetch_Optional,APR,APR_TARBALL) \
106		$(call fetch_Optional,APR,APR_UTIL_TARBALL) \
107		$(call fetch_Optional,BOOST,BOOST_TARBALL) \
108		$(call fetch_Optional,BREAKPAD,BREAKPAD_TARBALL) \
109		$(call fetch_Optional,BSH,BSH_TARBALL) \
110		$(call fetch_Optional,BZIP2,BZIP2_TARBALL) \
111		$(call fetch_Optional,CAIRO,CAIRO_TARBALL) \
112		$(call fetch_Optional,CAIRO,PIXMAN_TARBALL) \
113		$(call fetch_Optional,CDR,CDR_TARBALL) \
114		$(call fetch_Optional,CLUCENE,CLUCENE_TARBALL) \
115		$(call fetch_Optional,LIBCMIS,LIBCMIS_TARBALL) \
116		$(call fetch_Optional,COINMP,COINMP_TARBALL) \
117		$(call fetch_Optional,CPPUNIT,CPPUNIT_TARBALL) \
118		$(call fetch_Optional,CT2N,CT2N_TARBALL) \
119		$(call fetch_Optional,CURL,CURL_TARBALL) \
120		$(call fetch_Optional,EBOOK,EBOOK_TARBALL) \
121		$(call fetch_Optional,EPM,EPM_TARBALL) \
122		$(call fetch_Optional,EPUBGEN,EPUBGEN_TARBALL) \
123		$(call fetch_Optional,ETONYEK,ETONYEK_TARBALL) \
124		$(call fetch_Optional,EXPAT,EXPAT_TARBALL) \
125		$(call fetch_Optional,FIREBIRD,FIREBIRD_TARBALL) \
126		$(call fetch_Optional,FONTCONFIG,FONTCONFIG_TARBALL) \
127		$(call fetch_Optional,FREEHAND,FREEHAND_TARBALL) \
128		$(call fetch_Optional,FREETYPE,FREETYPE_TARBALL) \
129		$(call fetch_Optional,EPOXY,EPOXY_TARBALL) \
130		$(call fetch_Optional,GLM,GLM_TARBALL) \
131		$(call fetch_Optional,GPGMEPP,GPGME_TARBALL) \
132		$(call fetch_Optional,GRAPHITE,GRAPHITE_TARBALL) \
133		$(call fetch_Optional,HARFBUZZ,HARFBUZZ_TARBALL) \
134		$(call fetch_Optional,HSQLDB,HSQLDB_TARBALL) \
135		$(call fetch_Optional,HUNSPELL,HUNSPELL_TARBALL) \
136		$(call fetch_Optional,HYPHEN,HYPHEN_TARBALL) \
137		$(call fetch_Optional,ICU,ICU_TARBALL) \
138		$(call fetch_Optional,ICU,ICU_DATA_TARBALL) \
139		$(call fetch_Optional,JFREEREPORT,JFREEREPORT_FLOW_ENGINE_TARBALL) \
140		$(call fetch_Optional,JFREEREPORT,JFREEREPORT_FLUTE_TARBALL) \
141		$(call fetch_Optional,JFREEREPORT,JFREEREPORT_LIBBASE_TARBALL) \
142		$(call fetch_Optional,JFREEREPORT,JFREEREPORT_LIBFONTS_TARBALL) \
143		$(call fetch_Optional,JFREEREPORT,JFREEREPORT_LIBFORMULA_TARBALL) \
144		$(call fetch_Optional,JFREEREPORT,JFREEREPORT_LIBLAYOUT_TARBALL) \
145		$(call fetch_Optional,JFREEREPORT,JFREEREPORT_LIBLOADER_TARBALL) \
146		$(call fetch_Optional,JFREEREPORT,JFREEREPORT_LIBREPOSITORY_TARBALL) \
147		$(call fetch_Optional,JFREEREPORT,JFREEREPORT_LIBSERIALIZER_TARBALL) \
148		$(call fetch_Optional,JFREEREPORT,JFREEREPORT_LIBXML_TARBALL) \
149		$(call fetch_Optional,JFREEREPORT,JFREEREPORT_SAC_TARBALL) \
150		$(call fetch_Optional,LIBJPEG_TURBO,LIBJPEG_TURBO_TARBALL) \
151		$(call fetch_Optional,LANGUAGETOOL,LANGUAGETOOL_TARBALL) \
152		$(call fetch_Optional,LCMS2,LCMS2_TARBALL) \
153		$(call fetch_Optional,LIBATOMIC_OPS,LIBATOMIC_OPS_TARBALL) \
154		$(call fetch_Optional,LIBASSUAN,LIBASSUAN_TARBALL) \
155		$(call fetch_Optional,LIBEOT,LIBEOT_TARBALL) \
156		$(call fetch_Optional,LIBEXTTEXTCAT,LIBEXTTEXTCAT_TARBALL) \
157		$(call fetch_Optional,LIBGPGERROR,LIBGPGERROR_TARBALL) \
158		$(call fetch_Optional,LIBLANGTAG,LANGTAGREG_TARBALL) \
159		$(call fetch_Optional,LIBLANGTAG,LIBLANGTAG_TARBALL) \
160		$(call fetch_Optional,LIBNUMBERTEXT,LIBNUMBERTEXT_TARBALL) \
161		$(call fetch_Optional,LIBPNG,LIBPNG_TARBALL) \
162		$(call fetch_Optional,LIBTOMMATH,LIBTOMMATH_TARBALL) \
163		$(call fetch_Optional,LIBXML2,LIBXML_TARBALL) \
164		XMLSEC_TARBALL \
165		$(call fetch_Optional,LIBXSLT,LIBXSLT_TARBALL) \
166		$(call fetch_Optional,LPSOLVE,LPSOLVE_TARBALL) \
167		$(call fetch_Optional,LXML,LXML_TARBALL) \
168		$(call fetch_Optional,MARIADB_CONNECTOR_C,MARIADB_CONNECTOR_C_TARBALL) \
169		$(call fetch_Optional,MDDS,MDDS_TARBALL) \
170		$(call fetch_Optional,MDNSRESPONDER,MDNSRESPONDER_TARBALL) \
171		$(call fetch_Optional,MORE_FONTS,FONT_CALADEA_TARBALL) \
172		$(call fetch_Optional,MORE_FONTS,FONT_CARLITO_TARBALL) \
173		$(call fetch_Optional,MORE_FONTS,FONT_DEJAVU_TARBALL) \
174		$(call fetch_Optional,MORE_FONTS,FONT_GENTIUM_TARBALL) \
175		$(call fetch_Optional,MORE_FONTS,FONT_LIBERATION_NARROW_TARBALL) \
176		$(call fetch_Optional,MORE_FONTS,FONT_LIBERATION_TARBALL) \
177		$(call fetch_Optional,MORE_FONTS,FONT_LINLIBERTINEG_TARBALL) \
178		$(call fetch_Optional,MORE_FONTS,FONT_SOURCECODE_TARBALL) \
179		$(call fetch_Optional,MORE_FONTS,FONT_SOURCESANS_TARBALL) \
180		$(call fetch_Optional,MORE_FONTS,FONT_EMOJIONE_COLOR_TARBALL) \
181		$(call fetch_Optional,MORE_FONTS,FONT_NOTO_TARBALL) \
182		$(call fetch_Optional,MORE_FONTS,FONT_CULMUS_TARBALL) \
183		$(call fetch_Optional,MORE_FONTS,FONT_LIBRE_HEBREW_TARBALL) \
184		$(call fetch_Optional,MORE_FONTS,FONT_ALEF_TARBALL) \
185		$(call fetch_Optional,MORE_FONTS,FONT_AMIRI_TARBALL) \
186		$(call fetch_Optional,MORE_FONTS,FONT_KACST_TARBALL) \
187		$(call fetch_Optional,MORE_FONTS,FONT_REEM_TARBALL) \
188		$(call fetch_Optional,MORE_FONTS,FONT_SCHEHERAZADE_TARBALL) \
189		$(call fetch_Optional,MSPUB,MSPUB_TARBALL) \
190		$(call fetch_Optional,MWAW,MWAW_TARBALL) \
191		$(call fetch_Optional,MYSQL_CONNECTOR_CPP,MYSQL_CONNECTOR_CPP_TARBALL) \
192		$(call fetch_Optional,MYTHES,MYTHES_TARBALL) \
193		$(call fetch_Optional,NEON,NEON_TARBALL) \
194		$(call fetch_Optional,NSS,NSS_TARBALL) \
195		$(call fetch_Optional_pack,NUMBERTEXT_EXTENSION_PACK) \
196		$(call fetch_Optional,ODFGEN,ODFGEN_TARBALL) \
197		$(call fetch_Optional,OPENLDAP,OPENLDAP_TARBALL) \
198		$(call fetch_Optional,OPENSSL,OPENSSL_TARBALL) \
199		$(call fetch_Optional,ORCUS,ORCUS_TARBALL) \
200		$(call fetch_Optional,OWNCLOUD_ANDROID_LIB,OWNCLOUD_ANDROID_LIB_TARBALL) \
201		$(call fetch_Optional,PAGEMAKER,PAGEMAKER_TARBALL) \
202		$(call fetch_Optional,PDFIUM,PDFIUM_TARBALL) \
203		$(call fetch_Optional,POPPLER,POPPLER_TARBALL) \
204		$(call fetch_Optional,POSTGRESQL,POSTGRESQL_TARBALL) \
205		$(call fetch_Optional,PYTHON,PYTHON_TARBALL) \
206		$(call fetch_Optional,QXP,QXP_TARBALL) \
207		$(call fetch_Optional,REDLAND,RAPTOR_TARBALL) \
208		$(call fetch_Optional,REDLAND,RASQAL_TARBALL) \
209		$(call fetch_Optional,REDLAND,REDLAND_TARBALL) \
210		$(call fetch_Optional,REVENGE,REVENGE_TARBALL) \
211		$(call fetch_Optional,RHINO,RHINO_TARBALL) \
212		$(call fetch_Optional,RHINO,SWING_TARBALL) \
213		$(call fetch_Optional,SERF,SERF_TARBALL) \
214		$(call fetch_Optional,STAROFFICE,STAROFFICE_TARBALL) \
215		$(if $(filter WNT,$(OS)),TWAIN_DSM_TARBALL) \
216		$(call fetch_Optional,UCPP,UCPP_TARBALL) \
217		$(call fetch_Optional,VISIO,VISIO_TARBALL) \
218		$(call fetch_Optional,WPD,WPD_TARBALL) \
219		$(call fetch_Optional,WPG,WPG_TARBALL) \
220		$(call fetch_Optional,WPS,WPS_TARBALL) \
221		$(call fetch_Optional,XSLTML,XSLTML_TARBALL) \
222		$(call fetch_Optional,ZLIB,ZLIB_TARBALL) \
223		$(call fetch_Optional,ZMF,ZMF_TARBALL) \
224	,$(call fetch_Download_item,https://dev-www.libreoffice.org/src,$(item)))
225	$(foreach item, \
226		$(call fetch_Optional,ODK,UNOWINREG_DLL) \
227		$(call fetch_Optional,OPENSYMBOL,OPENSYMBOL_TTF) \
228		$(call fetch_Optional,ODFVALIDATOR,ODFVALIDATOR_JAR) \
229		$(call fetch_Optional,OFFICEOTRON,OFFICEOTRON_JAR) \
230	,$(call fetch_Download_item,https://dev-www.libreoffice.org/extern,$(item)))
231	@mkdir -p $(dir $@) && touch $@
232	@mkdir -p $(dir $@)/Executable
233
234# vim: set noet sw=4 ts=4:
235