Commit 1525d524 authored by Hugo Beauzée-Luyssen's avatar Hugo Beauzée-Luyssen
Browse files

contrib: harfbuzz: Revert back to autotools

Their CMakeLists.txt uses an agglomerated build, which requires us to
enable big-obj support. However, on older version of binutils, this will
cause objcopy to crash when extracting debug symbols

(cherry picked from commit a10c9410

)
Signed-off-by: Hugo Beauzée-Luyssen's avatarHugo Beauzée-Luyssen <hugo@beauzee.fr>
parent 5a9a71d6
From d36fe71173f213307de41711415f56861c71e62c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Hugo=20Beauz=C3=A9e-Luyssen?= <hugo@beauzee.fr>
Date: Mon, 30 Mar 2020 16:06:18 +0200
Subject: [PATCH] CMakeLists: Enable big objects support for win64
---
CMakeLists.txt | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 2cdfd4b3..6442d9b6 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -499,6 +499,14 @@ if (UNIX OR MINGW)
endif()
endif ()
+if (MINGW)
+ if(${CMAKE_SIZEOF_VOID_P} EQUAL 8)
+ CHECK_CXX_COMPILER_FLAG("-Wa,-mbig-obj" COMPILER_SUPPORTS_BIG_OBJ)
+ if (COMPILER_SUPPORTS_BIG_OBJ)
+ set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wa,-mbig-obj")
+ endif()
+ endif()
+endif()
## Define harfbuzz-gobject library
if (HB_HAVE_GOBJECT)
--
2.20.1
diff -urN harfbuzz.bak/CMakeLists.txt harfbuzz/CMakeLists.txt
--- harfbuzz.bak/CMakeLists.txt 2020-04-01 22:11:59.430060242 +0300
+++ harfbuzz/CMakeLists.txt 2020-04-01 22:34:27.074188908 +0300
@@ -303,32 +303,26 @@
list(APPEND project_headers ${PROJECT_SOURCE_DIR}/src/hb-coretext.h)
- if (HB_IOS)
- find_library(COREFOUNDATION CoreFoundation)
- if (COREFOUNDATION)
- list(APPEND THIRD_PARTY_LIBS ${COREFOUNDATION})
- endif ()
- mark_as_advanced(COREFOUNDATION)
-
- find_library(CORETEXT CoreText)
- if (CORETEXT)
- list(APPEND THIRD_PARTY_LIBS ${CORETEXT})
- endif ()
- mark_as_advanced(CORETEXT)
+ find_library(COREFOUNDATION CoreFoundation)
+ if (COREFOUNDATION)
+ list(APPEND THIRD_PARTY_LIBS ${COREFOUNDATION})
+ set(FRAMEWORK_FLAGS "${FRAMEWORK_FLAGS} -framework CoreFoundation")
+ endif ()
+ mark_as_advanced(COREFOUNDATION)
- find_library(COREGRAPHICS CoreGraphics)
- if (COREGRAPHICS)
- list(APPEND THIRD_PARTY_LIBS ${COREGRAPHICS})
- endif ()
- mark_as_advanced(COREGRAPHICS)
- else ()
- find_library(APPLICATION_SERVICES_FRAMEWORK ApplicationServices)
- if (APPLICATION_SERVICES_FRAMEWORK)
- list(APPEND THIRD_PARTY_LIBS ${APPLICATION_SERVICES_FRAMEWORK})
- endif ()
+ find_library(CORETEXT CoreText)
+ if (CORETEXT)
+ list(APPEND THIRD_PARTY_LIBS ${CORETEXT})
+ set(FRAMEWORK_FLAGS "${FRAMEWORK_FLAGS} -framework CoreText")
+ endif ()
+ mark_as_advanced(CORETEXT)
- mark_as_advanced(APPLICATION_SERVICES_FRAMEWORK)
+ find_library(COREGRAPHICS CoreGraphics)
+ if (COREGRAPHICS)
+ list(APPEND THIRD_PARTY_LIBS ${COREGRAPHICS})
+ set(FRAMEWORK_FLAGS "${FRAMEWORK_FLAGS} -framework CoreGraphics")
endif ()
+ mark_as_advanced(COREGRAPHICS)
endif ()
if (WIN32 AND HB_HAVE_GDI)
@@ -489,6 +483,18 @@
add_library(harfbuzz ${project_sources} ${project_extra_sources} ${project_headers})
target_link_libraries(harfbuzz ${THIRD_PARTY_LIBS})
+## harfbuzz pc file
+foreach(LIB ${THIRD_PARTY_LIBS})
+ if(NOT IS_ABSOLUTE ${LIB})
+ set(PRIVATE_LIBS "${PRIVATE_LIBS} -l${LIB}")
+ endif()
+endforeach()
+
+set(PRIVATE_LIBS "${PRIVATE_LIBS} ${FRAMEWORK_FLAGS}")
+configure_file("harfbuzz-cmake.pc.in" "harfbuzz.pc" @ONLY)
+install(FILES "${CMAKE_CURRENT_BINARY_DIR}/harfbuzz.pc"
+ DESTINATION "${CMAKE_INSTALL_PREFIX}/lib/pkgconfig")
+
## Define harfbuzz-subset library
if (HB_BUILD_SUBSET)
add_library(harfbuzz-subset ${subset_project_sources} ${subset_project_headers})
diff -urN harfbuzz.bak/harfbuzz-cmake.pc.in harfbuzz/harfbuzz-cmake.pc.in
--- harfbuzz.bak/harfbuzz-cmake.pc.in 1970-01-01 03:00:00.000000000 +0300
+++ harfbuzz/harfbuzz-cmake.pc.in 2020-04-01 22:12:10.638058586 +0300
@@ -0,0 +1,12 @@
+prefix=@CMAKE_INSTALL_PREFIX@
+exec_prefix=${prefix}
+libdir=${prefix}/lib
+includedir=${prefix}/include
+
+Name: harfbuzz
+Description: HarfBuzz text shaping library
+Version: @HB_VERSION@
+
+Libs: -L${libdir} -lharfbuzz -lm @PRIVATE_LIBS@
+Requires.private:
+Cflags: -I${includedir}/harfbuzz
--- harfbuzz-2.6.0/CMakeLists.txt.orig 2020-03-29 18:34:37.596362257 +0200
+++ harfbuzz-2.6.0/CMakeLists.txt 2020-03-29 18:34:53.984362061 +0200
@@ -287,6 +287,20 @@
# Apple Advanced Typography
add_definitions(-DHAVE_CORETEXT)
+ set(CMAKE_FIND_ROOT_PATH ${CMAKE_IOS_DEVELOPER_ROOT} ${CMAKE_OSX_SYSROOT}
+ ${CMAKE_PREFIX_PATH} CACHE string "appleOS find search path root" FORCE)
+ # Default to searching for frameworks first.
+ set(CMAKE_FIND_FRAMEWORK FIRST)
+ # Set up the default search directories for frameworks.
+ set(CMAKE_SYSTEM_FRAMEWORK_PATH
+ ${CMAKE_OSX_SYSROOT}/System/Library/Frameworks
+ ${CMAKE_OSX_SYSROOT}/System/Library/PrivateFrameworks
+ ${CMAKE_OSX_SYSROOT}/Developer/Library/Frameworks)
+ # Only search the specified iOS SDK, not the remainder of the host filesystem.
+ set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM ONLY)
+ set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
+ set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
+
list(APPEND project_headers ${PROJECT_SOURCE_DIR}/src/hb-coretext.h)
if (HB_IOS)
--- harfbuzz-2.6.0/CMakeLists.txt.orig 2019-07-26 23:23:47.000000000 +0200
+++ harfbuzz-2.6.0/CMakeLists.txt 2020-03-29 18:32:04.608364093 +0200
@@ -201,6 +201,14 @@
## Find and include needed header folders and libraries
if (HB_HAVE_FREETYPE)
+ find_package(PkgConfig)
+ pkg_check_modules(PC_FREETYPE2 QUIET freetype2)
+
+ if (PC_FREETYPE2_FOUND)
+ include_directories(AFTER ${PC_FREETYPE2_STATIC_INCLUDE_DIRS})
+ list(APPEND THIRD_PARTY_LIBS ${PC_FREETYPE2_STATIC_LIBRARIES})
+ add_definitions(${PC_FREETYPE2_STATIC_CFLAGS})
+ else ()
include (FindFreetype)
if (NOT FREETYPE_FOUND)
message(FATAL_ERROR "HB_HAVE_FREETYPE was set, but we failed to find it. Maybe add a CMAKE_PREFIX_PATH= to your Freetype2 install prefix")
@@ -208,13 +216,15 @@
list(APPEND THIRD_PARTY_LIBS ${FREETYPE_LIBRARIES})
include_directories(AFTER ${FREETYPE_INCLUDE_DIRS})
- add_definitions(-DHAVE_FREETYPE=1)
-
- list(APPEND project_headers ${PROJECT_SOURCE_DIR}/src/hb-ft.h)
# So check_funcs can find its headers
set (CMAKE_REQUIRED_INCLUDES ${CMAKE_REQUIRED_INCLUDES} ${FREETYPE_INCLUDE_DIRS})
set (CMAKE_REQUIRED_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES} ${FREETYPE_LIBRARIES})
+ endif ()
+
+ add_definitions(-DHAVE_FREETYPE=1)
+
+ list(APPEND project_headers ${PROJECT_SOURCE_DIR}/src/hb-ft.h)
check_funcs(FT_Get_Var_Blend_Coordinates FT_Set_Var_Blend_Coordinates FT_Done_MM_Var)
endif ()
......@@ -15,25 +15,19 @@ $(TARBALLS)/harfbuzz-$(HARFBUZZ_VERSION).tar.xz:
harfbuzz: harfbuzz-$(HARFBUZZ_VERSION).tar.xz .sum-harfbuzz
$(UNPACK)
$(APPLY) $(SRC)/harfbuzz/harfbuzz-aarch64.patch
#It uses Cmake builtin to detect freetype instead of Pkg-Config
$(APPLY) $(SRC)/harfbuzz/harfbuzz-fix-freetype-detect.patch
#It does not search for CoreText Framework everywhere
$(APPLY) $(SRC)/harfbuzz/harfbuzz-fix-coretext-detection.patch
#Missing Frameworks in the pkgconfig file and a proper .pc file
#The one in src/ does not work because it's autotools-specific
$(APPLY) $(SRC)/harfbuzz/harfbuzz-create-pkgconfig-file.patch
$(APPLY) $(SRC)/harfbuzz/0001-CMakeLists-Enable-big-objects-support-for-win64.patch
$(MOVE)
DEPS_harfbuzz = freetype2 $(DEPS_freetype2)
.harfbuzz: harfbuzz toolchain.cmake
cd $< && mkdir -p build && cd build && $(HOSTVARS_PIC) $(CMAKE) \
-DBUILD_SHARED_LIBS:BOOL=OFF \
-DHB_HAVE_FREETYPE:BOOL=ON \
-DHB_BUILD_TESTS=OFF \
-DHB_BUILD_UTILS=OFF \
-DHB_HAVE_GLIB=OFF \
.. && $(MAKE)
cd $< && cd build && $(MAKE) install
HARFBUZZ_CONF := --with-freetype \
--without-glib
ifdef HAVE_DARWIN_OS
HARFBUZZ_CONF += --with-coretext
endif
.harfbuzz: harfbuzz
$(RECONF)
cd $< && $(HOSTVARS_PIC) ./configure $(HOSTCONF) $(HARFBUZZ_CONF)
cd $< && $(MAKE) install
touch $@
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment