diff options
author | Michael Stahl <Michael.Stahl@cib.de> | 2020-01-09 15:06:07 +0100 |
---|---|---|
committer | Michael Stahl <michael.stahl@cib.de> | 2020-01-09 17:56:19 +0100 |
commit | 79084665f0e351a3f83fdee88071919f05ec9cc3 (patch) | |
tree | ad47bc4e364424b7cfbb4dc6ae72fc7f25af31fa /external/libffi | |
parent | 25916a651ca4eaa535022aeddfcb57b7f7a9f2f0 (diff) |
python3: bundle libffi for GNU/Linux builds
CPython commit f40d4ddff3c800b3c956a5e8820aabe3aa87cddd "Closes #27979:
Remove bundled copy of libffi" causes a bit of a problem because it
turns out that libffi isn't all that stable; there's libffi.so.5 on
CentOS 6, libffi.so.6 on CentOS 7 and libffi.so.7 on
lo_daily_update_gandalf tinderbox.
So we have to bundle it in LO; it's only used on GNU/Linux currently.
CPython commit 32119e10b792ad7ee4e5f951a2d89ddbaf111cc5 "bpo-35947:
Update Windows to the current version of libffi (GH-11797)" also removes
the libffi for MSVC, so in a future python upgrade we will have to build
libffi for MSVC too.
The libffi fork for MacOSX is still in CPython git master.
(regression from b10be5d48433076f0b7238d818020f708553e114)
Change-Id: Ibc20cf8cd3614cf9941b6970662bd930496776b2
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/86493
Tested-by: Jenkins
Reviewed-by: Michael Stahl <michael.stahl@cib.de>
Diffstat (limited to 'external/libffi')
-rw-r--r-- | external/libffi/ExternalProject_libffi.mk | 33 | ||||
-rw-r--r-- | external/libffi/Makefile | 7 | ||||
-rw-r--r-- | external/libffi/Module_libffi.mk | 17 | ||||
-rw-r--r-- | external/libffi/README | 3 | ||||
-rw-r--r-- | external/libffi/UnpackedTarball_libffi.mk | 14 |
5 files changed, 74 insertions, 0 deletions
diff --git a/external/libffi/ExternalProject_libffi.mk b/external/libffi/ExternalProject_libffi.mk new file mode 100644 index 000000000000..bdf8fe61eb76 --- /dev/null +++ b/external/libffi/ExternalProject_libffi.mk @@ -0,0 +1,33 @@ +# -*- 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_ExternalProject_ExternalProject,libffi)) + +$(eval $(call gb_ExternalProject_register_targets,libffi,\ + build \ +)) + +# set prefix so that it ends up in libffi.pc so that pkg-config in python3 works + +$(call gb_ExternalProject_get_state_target,libffi,build): + $(call gb_ExternalProject_run,build,\ + ./configure \ + --enable-option-checking=fatal \ + $(if $(CROSS_COMPILING),--build=$(BUILD_PLATFORM) --host=$(HOST_PLATFORM)) \ + --enable-static \ + --disable-shared \ + --with-pic \ + --enable-portable-binary \ + CC="$(CC) $(if $(filter LINUX,$(OS)),-fvisibility=hidden)" \ + --prefix=$(call gb_UnpackedTarball_get_dir,libffi)/$(HOST_PLATFORM) \ + --disable-docs \ + && $(MAKE) \ + ) + +# vim: set noet sw=4 ts=4: diff --git a/external/libffi/Makefile b/external/libffi/Makefile new file mode 100644 index 000000000000..e4968cf85fb6 --- /dev/null +++ b/external/libffi/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/libffi/Module_libffi.mk b/external/libffi/Module_libffi.mk new file mode 100644 index 000000000000..739fd4197000 --- /dev/null +++ b/external/libffi/Module_libffi.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,libffi)) + +$(eval $(call gb_Module_add_targets,libffi,\ + UnpackedTarball_libffi \ + ExternalProject_libffi \ +)) + +# vim: set noet sw=4 ts=4: diff --git a/external/libffi/README b/external/libffi/README new file mode 100644 index 000000000000..cdf7fa937bc8 --- /dev/null +++ b/external/libffi/README @@ -0,0 +1,3 @@ +libffi is required to build CPython's ctypes module + +https://sourceware.org/libffi/ diff --git a/external/libffi/UnpackedTarball_libffi.mk b/external/libffi/UnpackedTarball_libffi.mk new file mode 100644 index 000000000000..5d0582329ac5 --- /dev/null +++ b/external/libffi/UnpackedTarball_libffi.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,libffi)) + +$(eval $(call gb_UnpackedTarball_set_tarball,libffi,$(LIBFFI_TARBALL))) + +# vim: set noet sw=4 ts=4: |