From 20716b38c842f9ffef92ac040ba78c2385fb6420 Mon Sep 17 00:00:00 2001
From: Jesus Solis
Date: Mon, 6 Jul 2026 17:41:15 -0500
Subject: [PATCH] external: add highway
highway is a C++ library that provides portable SIMD/vector intrinsics
Downloaded from https://github.com/google/highway/releases/download/1.4.0/highway-1.4.0.tar.gz
Change-Id: I0e8f0b9a649680e318a0ed7f127ace74310c87bb
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/207706
Reviewed-by: Xisco Fauli
Tested-by: Jenkins
---
Makefile.fetch | 1 +
RepositoryExternal.mk | 18 +++++++++++
download.lst | 5 +++
external/Module_external.mk | 1 +
external/highway/Makefile | 7 +++++
external/highway/Module_highway.mk | 17 ++++++++++
external/highway/README | 4 +++
external/highway/StaticLibrary_highway.mk | 29 +++++++++++++++++
external/highway/UnpackedTarball_highway.mk | 14 +++++++++
readlicense_oo/license/license.xml | 35 +++++++++++++++++++++
10 files changed, 131 insertions(+)
create mode 100644 external/highway/Makefile
create mode 100644 external/highway/Module_highway.mk
create mode 100644 external/highway/README
create mode 100644 external/highway/StaticLibrary_highway.mk
create mode 100644 external/highway/UnpackedTarball_highway.mk
diff --git a/Makefile.fetch b/Makefile.fetch
index c80ddfd004d6..30ab92eba3f6 100644
--- a/Makefile.fetch
+++ b/Makefile.fetch
@@ -134,6 +134,7 @@ $(WORKDIR)/download: $(BUILDDIR)/config_$(gb_Side).mk $(SRCDIR)/download.lst $(S
$(call fetch_Optional,GPGMEPP,GPGME_TARBALL) \
$(call fetch_Optional,GRAPHITE,GRAPHITE_TARBALL) \
$(call fetch_Optional,HARFBUZZ,HARFBUZZ_TARBALL) \
+ $(call fetch_Optional,HIGHWAY,HIGHWAY_TARBALL) \
$(call fetch_Optional,HSQLDB,HSQLDB_TARBALL) \
$(call fetch_Optional,HUNSPELL,HUNSPELL_TARBALL) \
$(call fetch_Optional,HYPHEN,HYPHEN_TARBALL) \
diff --git a/RepositoryExternal.mk b/RepositoryExternal.mk
index ef9d1f014afe..3125cae9d9e8 100644
--- a/RepositoryExternal.mk
+++ b/RepositoryExternal.mk
@@ -514,6 +514,24 @@ else
endif
+ifneq ($(filter HIGHWAY,$(BUILD_TYPE)),)
+
+define gb_LinkTarget__use_highway
+$(call gb_LinkTarget_set_include,$(1),\
+ -I$(gb_UnpackedTarball_workdir)/highway \
+ $$(INCLUDE) \
+)
+$(call gb_LinkTarget_use_static_libraries,$(1),highway)
+
+endef
+
+define gb_ExternalProject__use_highway
+$(call gb_ExternalProject_use_static_libraries,$(1),highway)
+
+endef
+
+endif # HIGHWAY
+
ifneq ($(SYSTEM_LIBJPEG),)
define gb_LinkTarget__use_libjpeg
diff --git a/download.lst b/download.lst
index 5d0709a6a556..95264557fec4 100644
--- a/download.lst
+++ b/download.lst
@@ -292,6 +292,11 @@ HARFBUZZ_TARBALL := harfbuzz-14.3.1.tar.xz
# three static lines
# so that git cherry-pick
# will not run into conflicts
+HIGHWAY_SHA256SUM := 36f672ab48ddb3c8555e9e89e16fe400cd7d16c6eb455a1a3d0c146a63ababdc
+HIGHWAY_TARBALL := highway-1.4.0.tar.gz
+# three static lines
+# so that git cherry-pick
+# will not run into conflicts
HSQLDB_SHA256SUM := d30b13f4ba2e3b6a2d4f020c0dee0a9fb9fc6fbcc2d561f36b78da4bf3802370
HSQLDB_TARBALL := 17410483b5b5f267aa18b7e00b65e6e0-hsqldb_1_8_0.zip
# three static lines
diff --git a/external/Module_external.mk b/external/Module_external.mk
index ced11788f3ae..9110f10acf24 100644
--- a/external/Module_external.mk
+++ b/external/Module_external.mk
@@ -44,6 +44,7 @@ $(eval $(call gb_Module_add_moduledirs,external,\
$(call gb_Helper_optional,GPGMEPP,gpgmepp) \
$(call gb_Helper_optional,GRAPHITE,graphite) \
$(call gb_Helper_optional,HARFBUZZ,harfbuzz) \
+ $(call gb_Helper_optional,HIGHWAY,highway) \
$(call gb_Helper_optional,HSQLDB,hsqldb) \
$(call gb_Helper_optional,HUNSPELL,hunspell) \
$(call gb_Helper_optional,HYPHEN,hyphen) \
diff --git a/external/highway/Makefile b/external/highway/Makefile
new file mode 100644
index 000000000000..e4968cf85fb6
--- /dev/null
+++ b/external/highway/Makefile
@@ -0,0 +1,7 @@
+# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
+
+module_directory:=$(dir $(realpath $(firstword $(MAKEFILE_LIST))))
+
+include $(module_directory)/../../solenv/gbuild/partial_build.mk
+
+# vim: set noet sw=4 ts=4:
diff --git a/external/highway/Module_highway.mk b/external/highway/Module_highway.mk
new file mode 100644
index 000000000000..3ba9f73be9c9
--- /dev/null
+++ b/external/highway/Module_highway.mk
@@ -0,0 +1,17 @@
+# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
+#
+# This file is part of the LibreOffice project.
+#
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+
+$(eval $(call gb_Module_Module,highway))
+
+$(eval $(call gb_Module_add_targets,highway,\
+ StaticLibrary_highway \
+ UnpackedTarball_highway \
+))
+
+# vim: set noet sw=4 ts=4:
diff --git a/external/highway/README b/external/highway/README
new file mode 100644
index 000000000000..ab1fe14dfd20
--- /dev/null
+++ b/external/highway/README
@@ -0,0 +1,4 @@
+According to the library's own README: "Highway is a C++ library that provides
+portable SIMD/vector intrinsics."
+
+From [https://github.com/google/highway].
diff --git a/external/highway/StaticLibrary_highway.mk b/external/highway/StaticLibrary_highway.mk
new file mode 100644
index 000000000000..5adbde67684d
--- /dev/null
+++ b/external/highway/StaticLibrary_highway.mk
@@ -0,0 +1,29 @@
+# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
+#
+# This file is part of the LibreOffice project.
+#
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+
+$(eval $(call gb_StaticLibrary_StaticLibrary,highway))
+
+$(eval $(call gb_StaticLibrary_use_unpacked,highway,highway))
+
+$(eval $(call gb_StaticLibrary_set_warnings_disabled,highway))
+
+$(eval $(call gb_StaticLibrary_set_include,highway,\
+ -I$(WORKDIR)/UnpackedTarball/highway \
+ $$(INCLUDE) \
+))
+
+$(eval $(call gb_StaticLibrary_set_generated_cxx_suffix,highway,cc))
+
+$(eval $(call gb_StaticLibrary_add_generated_exception_objects,highway,\
+ UnpackedTarball/highway/hwy/timer \
+ UnpackedTarball/highway/hwy/targets \
+ UnpackedTarball/highway/hwy/abort \
+))
+
+# vim: set noet sw=4 ts=4:
diff --git a/external/highway/UnpackedTarball_highway.mk b/external/highway/UnpackedTarball_highway.mk
new file mode 100644
index 000000000000..99e4cd88030e
--- /dev/null
+++ b/external/highway/UnpackedTarball_highway.mk
@@ -0,0 +1,14 @@
+# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
+#
+# This file is part of the LibreOffice project.
+#
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+
+$(eval $(call gb_UnpackedTarball_UnpackedTarball,highway))
+
+$(eval $(call gb_UnpackedTarball_set_tarball,highway,$(HIGHWAY_TARBALL)))
+
+# vim: set noet sw=4 ts=4:
diff --git a/readlicense_oo/license/license.xml b/readlicense_oo/license/license.xml
index fa6abbf2c1af..63fce3a777be 100644
--- a/readlicense_oo/license/license.xml
+++ b/readlicense_oo/license/license.xml
@@ -600,6 +600,41 @@
"AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES,
ENHANCEMENTS, OR MODIFICATIONS.
+
+
highway
+
The following software may be included in this product: highway. highway
+ is dual-licensed under the Apache License 2.0 or the BSD 3-Clause
+ License.
+
Jump to Apache License Version
+ 2.0
+
BSD 3-Clause License
+
Copyright (c) The Highway Project Authors. All rights reserved.
+
Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are
+ met:
+
+ - Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ - Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the
+ distribution.
+ - Neither the name of the copyright holder nor the names of its
+ contributors may be used to endorse or promote products derived from
+ this software without specific prior written permission.
+
+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+ IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+ OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
HSQLDB
The following software may be included in this product: HSQLDB. Use of any of this software is governed by