From 07aad2fbc11587faf5f93d0594da15bab12fcf5e Mon Sep 17 00:00:00 2001 From: Nicolas Cellier Date: Wed, 6 Jan 2021 15:38:04 +0100 Subject: [PATCH] Ugrade freetype 2.9.1 -> 2.10.4 hence - remove the now useless patch - rebuild the win64 dll (same makefile as win32) rather than download from files.pharo.org --- build.win32x86/third-party/Makefile.freetype2 | 1 - build.win64x64/third-party/Makefile.freetype2 | 42 +++++++++++++------ cmake/FreeType2.cmake | 10 ++--- third-party/freetype2.spec | 6 +-- third-party/freetype291.patch | 28 ------------- 5 files changed, 36 insertions(+), 51 deletions(-) delete mode 100644 third-party/freetype291.patch diff --git a/build.win32x86/third-party/Makefile.freetype2 b/build.win32x86/third-party/Makefile.freetype2 index d37d554e27..b87d43e1ff 100644 --- a/build.win32x86/third-party/Makefile.freetype2 +++ b/build.win32x86/third-party/Makefile.freetype2 @@ -20,7 +20,6 @@ $(FREETYPE2ARCHIVE): $(THIRDPARTYLIBDIR)/$(FREETYPE2LIBNAME): $(FREETYPE2ARCHIVE) tar x -f $(FREETYPE2ARCHIVE) -C $(THIRDPARTYDIR) - patch -p1 -d $(FREETYPE2DIR) < ../../third-party/freetype291.patch cp ../third-party/Toolchain-cross-mingw32-cygwin.cmake $(FREETYPE2DIR) test -d $(FREETYPE2DIR)/build || mkdir $(FREETYPE2DIR)/build cd $(FREETYPE2DIR)/build \ diff --git a/build.win64x64/third-party/Makefile.freetype2 b/build.win64x64/third-party/Makefile.freetype2 index 8c60092e5a..b87d43e1ff 100644 --- a/build.win64x64/third-party/Makefile.freetype2 +++ b/build.win64x64/third-party/Makefile.freetype2 @@ -1,21 +1,39 @@ -# Instead build, copy dependency from mingw distribution - ifndef THIRDPARTYDIR include ../common/Makefile.lib.extra endif include ../../third-party/freetype2.spec -include ../../third-party/freetype2.spec.win64 -EXTERNALFILESURL:=https://files.pharo.org/vm/pharo-spur64/win/third-party -FREETYPE2LIBNAME:=$(freetype2_spec_download_artifact_name_windows) -FREETYPE2LIBINSTALLNAME:=$(freetype2_spec_product_name_windows) -FREETYPE2LIB:=$(THIRDPARTYINSTALLDIR)/$(FREETYPE2LIBINSTALLNAME) +# plugin definitions +FREETYPE2URL:=$(freetype2_spec_download_url) +FREETYPE2LIBNAME:=$(freetype2_spec_product_name_windows) +FREETYPE2DIR:=$(THIRDPARTYDIR)/$(freetype2_spec_unpack_dir_name) +FREETYPE2ARCHIVE:=$(THIRDPARTYCACHEDIR)/$(freetype2_spec_archive_name) +FREETYPE2LIB:=$(THIRDPARTYINSTALLDIR)/$(FREETYPE2LIBNAME) -$(THIRDPARTYLIBDIR)/$(FREETYPE2LIBNAME): - echo - $(WGET) -O $(THIRDPARTYLIBDIR)/$(FREETYPE2LIBNAME) $(EXTERNALFILESURL)/$(FREETYPE2LIBNAME) +# ensure third-party library is built and recognised by plugins +INCDIRS:=$(INCDIRS) $(THIRDPARTYINCLUDEDIR) $(THIRDPARTYINCLUDEDIR)/freetype2 +EXTRALIBS:=$(EXTRALIBS) $(FREETYPE2LIB) +PLUGINREQS:=$(PLUGINREQS) $(THIRDPARTYLIBS) + +$(FREETYPE2ARCHIVE): + $(WGET) -O $(FREETYPE2ARCHIVE) $(FREETYPE2URL) + +$(THIRDPARTYLIBDIR)/$(FREETYPE2LIBNAME): $(FREETYPE2ARCHIVE) + tar x -f $(FREETYPE2ARCHIVE) -C $(THIRDPARTYDIR) + cp ../third-party/Toolchain-cross-mingw32-cygwin.cmake $(FREETYPE2DIR) + test -d $(FREETYPE2DIR)/build || mkdir $(FREETYPE2DIR)/build + cd $(FREETYPE2DIR)/build \ + && cmake ..\ + -DCMAKE_TOOLCHAIN_FILE=../Toolchain-cross-mingw32-cygwin.cmake \ + -DCMAKE_INSTALL_PREFIX=$(THIRDPARTYOUTDIR) \ + -DWITH_PNG=OFF \ + -DBUILD_SHARED_LIBS=ON \ + -DCMAKE_C_FLAGS="$(THIRDPARTY_CFLAGS)" \ + && make \ + && make install \ + && cp libfreetype.dll $(THIRDPARTYLIBDIR)/$(FREETYPE2LIBNAME) $(FREETYPE2LIB): pkgconfig libpng $(THIRDPARTYLIBDIR)/$(FREETYPE2LIBNAME) - cp -f $(THIRDPARTYLIBDIR)/$(FREETYPE2LIBNAME) $(FREETYPE2LIB) - + cp -f $(THIRDPARTYLIBDIR)/$(FREETYPE2LIBNAME) $(THIRDPARTYINSTALLDIR) + freetype2: $(FREETYPE2LIB) diff --git a/cmake/FreeType2.cmake b/cmake/FreeType2.cmake index 8aa4e96ec7..66c0e3e7a8 100644 --- a/cmake/FreeType2.cmake +++ b/cmake/FreeType2.cmake @@ -1,19 +1,16 @@ -set(FreeType2_Spec_URL "http://ftp.igh.cnrs.fr/pub/nongnu/freetype/freetype-2.9.1.tar.gz") -set(FreeType2_Spec_ArchiveName freetype-2.9.1.tar.gz) -set(FreeType2_Spec_ArchiveHash "SHA256=ec391504e55498adceb30baceebd147a6e963f636eb617424bcfc47a169898ce") +set(FreeType2_Spec_URL "https://download.savannah.gnu.org/releases/freetype/freetype-2.10.4.tar.xz") +set(FreeType2_Spec_ArchiveName freetype-2.10.4.tar.xz) +set(FreeType2_Spec_ArchiveHash "SHA256=86a854d8905b19698bbc8f23b860bc104246ce4854dcea8e3b0fb21284f75784") set(FreeType2_Spec_MacLibraries libfreetype.6.dylib) set(FreeType2_Spec_MacLibrariesSymlinks libfreetype*.dylib) set(FreeType2_Spec_WindowsDLLs libfreetype.dll) -set(FreeType2_Spec_Patch "${CMAKE_CURRENT_SOURCE_DIR}/third-party/freetype291.patch") - if(WIN32) add_thirdparty_with_cmake(FreeType2 DOWNLOAD_URL ${FreeType2_Spec_URL} ARCHIVE_NAME ${FreeType2_Spec_ArchiveName} ARCHIVE_HASH ${FreeType2_Spec_ArchiveHash} - PATCH ${FreeType2_Spec_Patch} CMAKE_EXTRA_ARGS -DCMAKE_DISABLE_FIND_PACKAGE_PNG=TRUE -DCMAKE_DISABLE_FIND_PACKAGE_BZip2=TRUE -DBUILD_SHARED_LIBS=ON MAC_LIBRARIES ${FreeType2_Spec_MacLibraries} MAC_LIBRARIES_SYMLINK_PATTERNS ${FreeType2_Spec_MacLibrariesSymlinks} @@ -27,7 +24,6 @@ else() DOWNLOAD_URL ${FreeType2_Spec_URL} ARCHIVE_NAME ${FreeType2_Spec_ArchiveName} ARCHIVE_HASH ${FreeType2_Spec_ArchiveHash} - PATCH ${FreeType2_Spec_Patch} AUTOCONF_EXTRA_ARGS --without-png --without-bzip2 MAC_LIBRARIES ${FreeType2_Spec_MacLibraries} MAC_LIBRARIES_SYMLINK_PATTERNS ${FreeType2_Spec_MacLibrariesSymlinks} diff --git a/third-party/freetype2.spec b/third-party/freetype2.spec index fa0db19a5e..6c9c5ce900 100644 --- a/third-party/freetype2.spec +++ b/third-party/freetype2.spec @@ -1,6 +1,6 @@ -freetype2_spec_download_url:=http://ftp.igh.cnrs.fr/pub/nongnu/freetype/freetype-2.9.1.tar.gz -freetype2_spec_archive_name:=freetype-2.9.1.tar.gz -freetype2_spec_unpack_dir_name:=freetype-2.9.1 +freetype2_spec_download_url:=https://download.savannah.gnu.org/releases/freetype/freetype-2.10.4.tar.xz +freetype2_spec_archive_name:=freetype-2.10.4.tar.xz +freetype2_spec_unpack_dir_name:=freetype-2.10.4 freetype2_spec_product_name_macOS:=libfreetype.6.dylib freetype2_spec_product_name_linux:= freetype2_spec_product_name_windows:=libfreetype.dll diff --git a/third-party/freetype291.patch b/third-party/freetype291.patch deleted file mode 100644 index d9bd0c9770..0000000000 --- a/third-party/freetype291.patch +++ /dev/null @@ -1,28 +0,0 @@ -Freetype 2.9.1 release is broken for Windows CMake build. -It was fixed two commits later but not re-released. -This patch cherry-picks the fix from http://git.savannah.gnu.org/cgit/freetype/freetype2.git/commit/?id=660afb5 -Next time Freetype is updated, remove this from build.win*/third-party/Makefile.freetype2 - -Upstream bug report https://savannah.nongnu.org/bugs/?func=detailitem&item_id=54846 -says "CMake fails to install on Windows - Don't worry, it's not your fault. I broke -it myself and found out after the release, but didn't bug Werner to release a 2.9.1.1" - -Our discussion here https://github.com/OpenSmalltalk/opensmalltalk-vm/issues/319 - - -diff -ur freetype-2.9.1/CMakeLists.txt freetype-2.9.1.fixed/CMakeLists.txt ---- freetype-2.9.1/CMakeLists.txt 2018-05-01 18:45:45.000000000 +0800 -+++ freetype-2.9.1.fixed/CMakeLists.txt 2018-12-14 18:13:46.624962900 +0800 -@@ -229,9 +229,12 @@ - endif () - string(REPLACE "/undef " "#undef " - FTCONFIG_H "${FTCONFIG_H}") -- file(WRITE "${PROJECT_BINARY_DIR}/include/freetype/config/ftconfig.h" -- "${FTCONFIG_H}") -+else() -+ file(READ "${PROJECT_SOURCE_DIR}/include/freetype/config/ftconfig.h" -+ FTCONFIG_H) - endif () -+file(WRITE "${PROJECT_BINARY_DIR}/include/freetype/config/ftconfig.h" -+ "${FTCONFIG_H}") -