Skip to content

Commit 16f4965

Browse files
committed
merge with upstream, ext doc dialog 2
1 parent eafd944 commit 16f4965

File tree

219 files changed

+17399
-13155
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

219 files changed

+17399
-13155
lines changed

thirdparty/harfbuzz/AUTHORS

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,14 @@
11
Behdad Esfahbod
2+
David Corbett
23
David Turner
34
Ebrahim Byagowi
5+
Garret Rieger
46
Jonathan Kew
57
Khaled Hosny
68
Lars Knoll
79
Martin Hosken
810
Owen Taylor
11+
Roderick Sheeter
912
Roozbeh Pournader
1013
Simon Hausmann
1114
Werner Lemberg

thirdparty/harfbuzz/CMakeLists.txt

Lines changed: 28 additions & 114 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,6 @@ endif ()
3535
## HarfBuzz build configurations
3636
option(HB_HAVE_FREETYPE "Enable freetype interop helpers" OFF)
3737
option(HB_HAVE_GRAPHITE2 "Enable Graphite2 complementary shaper" OFF)
38-
option(HB_BUILTIN_UCDN "Use HarfBuzz provided UCDN" ON)
3938
option(HB_HAVE_GLIB "Enable glib unicode functions" OFF)
4039
option(HB_HAVE_ICU "Enable icu unicode functions" OFF)
4140
if (APPLE)
@@ -44,6 +43,7 @@ if (APPLE)
4443
endif ()
4544
if (WIN32)
4645
option(HB_HAVE_UNISCRIBE "Enable Uniscribe shaper backend on Windows" OFF)
46+
option(HB_HAVE_GDI "Enable GDI integration helpers on Windows" OFF)
4747
option(HB_HAVE_DIRECTWRITE "Enable DirectWrite shaper backend on Windows" OFF)
4848
endif ()
4949
option(HB_BUILD_UTILS "Build harfbuzz utils, needs cairo, freetype, and glib properly be installed" OFF)
@@ -70,7 +70,6 @@ option(HB_CHECK OFF "Do a configuration suitable for testing (shared library and
7070
if (HB_CHECK)
7171
set (BUILD_SHARED_LIBS ON)
7272
set (HB_BUILD_UTILS ON)
73-
set (HB_BUILTIN_UCDN ON)
7473
set (HB_HAVE_ICU)
7574
set (HB_HAVE_GLIB ON)
7675
#set (HB_HAVE_GOBJECT ON)
@@ -79,6 +78,7 @@ if (HB_CHECK)
7978
set (HB_HAVE_GRAPHITE2 ON)
8079
if (WIN32)
8180
set (HB_HAVE_UNISCRIBE ON)
81+
set (HB_HAVE_GDI ON)
8282
set (HB_HAVE_DIRECTWRITE ON)
8383
elseif (APPLE)
8484
set (HB_HAVE_CORETEXT ON)
@@ -90,8 +90,6 @@ include_directories(AFTER
9090
${PROJECT_BINARY_DIR}/src
9191
)
9292

93-
add_definitions(-DHAVE_FALLBACK)
94-
9593
# We need PYTHON_EXECUTABLE to be set for running the tests...
9694
include (FindPythonInterp)
9795

@@ -110,7 +108,7 @@ endmacro ()
110108
if (UNIX)
111109
list(APPEND CMAKE_REQUIRED_LIBRARIES m)
112110
endif ()
113-
check_funcs(atexit mprotect sysconf getpagesize mmap isatty newlocale strtod_l round)
111+
check_funcs(atexit mprotect sysconf getpagesize mmap isatty newlocale strtod_l roundf)
114112
check_include_file(unistd.h HAVE_UNISTD_H)
115113
if (${HAVE_UNISTD_H})
116114
add_definitions(-DHAVE_UNISTD_H)
@@ -144,8 +142,8 @@ endif ()
144142

145143
## Extract variables from Makefile files
146144
function (extract_make_variable variable makefile_source)
147-
string(REGEX MATCH "${variable} = ([^$]+)\\$" temp ${makefile_source})
148-
string(REGEX MATCHALL "[^ \n\t\\]+" listVar ${CMAKE_MATCH_1})
145+
string(REGEX MATCH "${variable} = ([^$]+)\\$" temp "${makefile_source}")
146+
string(REGEX MATCHALL "[^ \n\t\\]+" listVar "${CMAKE_MATCH_1}")
149147
set (${variable} ${listVar} PARENT_SCOPE)
150148
endfunction ()
151149

@@ -160,18 +158,9 @@ endfunction ()
160158

161159
file(READ ${PROJECT_SOURCE_DIR}/src/Makefile.sources SRCSOURCES)
162160
file(READ ${PROJECT_SOURCE_DIR}/util/Makefile.sources UTILSOURCES)
163-
file(READ ${PROJECT_SOURCE_DIR}/src/hb-ucdn/Makefile.sources UCDNSOURCES)
164161

165-
extract_make_variable(HB_BASE_sources ${SRCSOURCES})
166-
add_prefix_to_list(HB_BASE_sources "${PROJECT_SOURCE_DIR}/src/")
167162
extract_make_variable(HB_BASE_headers ${SRCSOURCES})
168163
add_prefix_to_list(HB_BASE_headers "${PROJECT_SOURCE_DIR}/src/")
169-
extract_make_variable(HB_FALLBACK_sources ${SRCSOURCES})
170-
add_prefix_to_list(HB_FALLBACK_sources "${PROJECT_SOURCE_DIR}/src/")
171-
extract_make_variable(HB_OT_sources ${SRCSOURCES})
172-
add_prefix_to_list(HB_OT_sources "${PROJECT_SOURCE_DIR}/src/")
173-
extract_make_variable(HB_OT_headers ${SRCSOURCES})
174-
add_prefix_to_list(HB_OT_headers "${PROJECT_SOURCE_DIR}/src/")
175164

176165
extract_make_variable(HB_SUBSET_sources ${SRCSOURCES})
177166
add_prefix_to_list(HB_SUBSET_sources "${PROJECT_SOURCE_DIR}/src/")
@@ -180,13 +169,10 @@ extract_make_variable(HB_SUBSET_headers ${SRCSOURCES})
180169
add_prefix_to_list(HB_SUBSET_headers "${PROJECT_SOURCE_DIR}/src/")
181170

182171
extract_make_variable(HB_BASE_RAGEL_GENERATED_sources ${SRCSOURCES})
183-
extract_make_variable(HB_OT_RAGEL_GENERATED_sources ${SRCSOURCES})
184172
#if (IN_HB_DIST)
185173
add_prefix_to_list(HB_BASE_RAGEL_GENERATED_sources "${PROJECT_SOURCE_DIR}/src/")
186-
add_prefix_to_list(HB_OT_RAGEL_GENERATED_sources "${PROJECT_SOURCE_DIR}/src/")
187174
#else ()
188175
# add_prefix_to_list(HB_BASE_RAGEL_GENERATED_sources "${PROJECT_BINARY_DIR}/src/")
189-
# add_prefix_to_list(HB_OT_RAGEL_GENERATED_sources "${PROJECT_BINARY_DIR}/src/")
190176
#endif ()
191177

192178
extract_make_variable(HB_VIEW_sources ${UTILSOURCES})
@@ -198,9 +184,6 @@ add_prefix_to_list(HB_SUBSET_CLI_sources "${PROJECT_SOURCE_DIR}/util/")
198184
extract_make_variable(HB_OT_SHAPE_CLOSURE_sources ${UTILSOURCES})
199185
add_prefix_to_list(HB_OT_SHAPE_CLOSURE_sources "${PROJECT_SOURCE_DIR}/util/")
200186

201-
extract_make_variable(LIBHB_UCDN_sources ${UCDNSOURCES})
202-
add_prefix_to_list(LIBHB_UCDN_sources "${PROJECT_SOURCE_DIR}/src/hb-ucdn/")
203-
204187

205188
file(READ configure.ac CONFIGUREAC)
206189
string(REGEX MATCH "\\[(([0-9]+)\\.([0-9]+)\\.([0-9]+))\\]" HB_VERSION_MATCH ${CONFIGUREAC})
@@ -209,64 +192,12 @@ set (HB_VERSION_MAJOR ${CMAKE_MATCH_2})
209192
set (HB_VERSION_MINOR ${CMAKE_MATCH_3})
210193
set (HB_VERSION_MICRO ${CMAKE_MATCH_4})
211194

212-
213-
## Define ragel tasks
214-
# if (NOT IN_HB_DIST)
215-
# foreach (ragel_output IN ITEMS ${HB_BASE_RAGEL_GENERATED_sources} ${HB_OT_RAGEL_GENERATED_sources})
216-
# string(REGEX MATCH "([^/]+)\\.hh" temp ${ragel_output})
217-
# set (target_name ${CMAKE_MATCH_1})
218-
# add_custom_command(OUTPUT ${ragel_output}
219-
# COMMAND ${RAGEL} -G2 -o ${ragel_output} ${PROJECT_SOURCE_DIR}/src/${target_name}.rl -I ${PROJECT_SOURCE_DIR} ${ARGN}
220-
# DEPENDS ${PROJECT_SOURCE_DIR}/src/${target_name}.rl
221-
# )
222-
# add_custom_target(harfbuzz_${target_name} DEPENDS ${PROJECT_BINARY_DIR}/src/${target_name})
223-
# endforeach ()
224-
225-
# mark_as_advanced(RAGEL)
226-
# endif ()
227-
228-
229-
## Generate hb-version.h
230-
# if (NOT IN_HB_DIST)
231-
# set (HB_VERSION_H_IN "${PROJECT_SOURCE_DIR}/src/hb-version.h.in")
232-
# set (HB_VERSION_H "${PROJECT_BINARY_DIR}/src/hb-version.h")
233-
# set_source_files_properties("${HB_VERSION_H}" PROPERTIES GENERATED true)
234-
# configure_file("${HB_VERSION_H_IN}" "${HB_VERSION_H}.tmp" @ONLY)
235-
# execute_process(COMMAND "${CMAKE_COMMAND}" -E copy_if_different
236-
# "${HB_VERSION_H}.tmp"
237-
# "${HB_VERSION_H}"
238-
# )
239-
# file(REMOVE "${HB_VERSION_H}.tmp")
240-
# endif ()
241-
242-
243195
## Define sources and headers of the project
244-
set (project_sources
245-
${HB_BASE_sources}
246-
${HB_BASE_RAGEL_GENERATED_sources}
247-
248-
${HB_FALLBACK_sources}
249-
${HB_OT_sources}
250-
${HB_OT_RAGEL_GENERATED_sources}
251-
)
252-
253-
set (subset_project_sources
254-
${HB_SUBSET_sources}
255-
)
256-
196+
set (project_sources ${PROJECT_SOURCE_DIR}/src/harfbuzz.cc) # use amalgam source
197+
set (subset_project_sources ${HB_SUBSET_sources})
257198
set (project_extra_sources)
258-
259-
set (project_headers
260-
#${HB_VERSION_H}
261-
262-
${HB_BASE_headers}
263-
${HB_OT_headers}
264-
)
265-
266-
set (subset_project_headers
267-
${HB_SUBSET_headers}
268-
)
269-
199+
set (project_headers ${HB_BASE_headers})
200+
set (subset_project_headers ${HB_SUBSET_headers})
270201

271202
## Find and include needed header folders and libraries
272203
if (HB_HAVE_FREETYPE)
@@ -279,7 +210,6 @@ if (HB_HAVE_FREETYPE)
279210
include_directories(AFTER ${FREETYPE_INCLUDE_DIRS})
280211
add_definitions(-DHAVE_FREETYPE=1)
281212

282-
list(APPEND project_sources ${PROJECT_SOURCE_DIR}/src/hb-ft.cc)
283213
list(APPEND project_headers ${PROJECT_SOURCE_DIR}/src/hb-ft.h)
284214

285215
# So check_funcs can find its headers
@@ -297,22 +227,13 @@ if (HB_HAVE_GRAPHITE2)
297227

298228
include_directories(${GRAPHITE2_INCLUDE_DIR})
299229

300-
list(APPEND project_sources ${PROJECT_SOURCE_DIR}/src/hb-graphite2.cc)
301230
list(APPEND project_headers ${PROJECT_SOURCE_DIR}/src/hb-graphite2.h)
302231

303232
list(APPEND THIRD_PARTY_LIBS ${GRAPHITE2_LIBRARY})
304233

305234
mark_as_advanced(GRAPHITE2_INCLUDE_DIR GRAPHITE2_LIBRARY)
306235
endif ()
307236

308-
if (HB_BUILTIN_UCDN)
309-
include_directories(src/hb-ucdn)
310-
add_definitions(-DHAVE_UCDN)
311-
312-
list(APPEND project_sources ${PROJECT_SOURCE_DIR}/src/hb-ucdn.cc)
313-
list(APPEND project_extra_sources ${LIBHB_UCDN_sources})
314-
endif ()
315-
316237
if (HB_HAVE_GLIB)
317238
add_definitions(-DHAVE_GLIB)
318239

@@ -326,7 +247,6 @@ if (HB_HAVE_GLIB)
326247

327248
include_directories(${GLIBCONFIG_INCLUDE_DIR} ${GLIB_INCLUDE_DIR})
328249

329-
list(APPEND project_sources ${PROJECT_SOURCE_DIR}/src/hb-glib.cc)
330250
list(APPEND project_headers ${PROJECT_SOURCE_DIR}/src/hb-glib.h)
331251

332252
list(APPEND THIRD_PARTY_LIBS ${GLIB_LIBRARIES})
@@ -346,7 +266,6 @@ if (HB_HAVE_ICU)
346266

347267
include_directories(${ICU_INCLUDE_DIR})
348268

349-
list(APPEND project_sources ${PROJECT_SOURCE_DIR}/src/hb-icu.cc)
350269
list(APPEND project_headers ${PROJECT_SOURCE_DIR}/src/hb-icu.h)
351270

352271
list(APPEND THIRD_PARTY_LIBS ${ICU_LIBRARY})
@@ -358,7 +277,6 @@ if (APPLE AND HB_HAVE_CORETEXT)
358277
# Apple Advanced Typography
359278
add_definitions(-DHAVE_CORETEXT)
360279

361-
list(APPEND project_sources ${PROJECT_SOURCE_DIR}/src/hb-coretext.cc)
362280
list(APPEND project_headers ${PROJECT_SOURCE_DIR}/src/hb-coretext.h)
363281

364282
if (HB_IOS)
@@ -389,21 +307,21 @@ if (APPLE AND HB_HAVE_CORETEXT)
389307
endif ()
390308
endif ()
391309

310+
if (WIN32 AND HB_HAVE_GDI)
311+
add_definitions(-DHAVE_GDI)
312+
list(APPEND project_headers ${PROJECT_SOURCE_DIR}/src/hb-gdi.h)
313+
list(APPEND THIRD_PARTY_LIBS gdi32)
314+
endif ()
315+
392316
if (WIN32 AND HB_HAVE_UNISCRIBE)
393317
add_definitions(-DHAVE_UNISCRIBE)
394-
395-
list(APPEND project_sources ${PROJECT_SOURCE_DIR}/src/hb-uniscribe.cc)
396318
list(APPEND project_headers ${PROJECT_SOURCE_DIR}/src/hb-uniscribe.h)
397-
398319
list(APPEND THIRD_PARTY_LIBS usp10 gdi32 rpcrt4)
399320
endif ()
400321

401322
if (WIN32 AND HB_HAVE_DIRECTWRITE)
402323
add_definitions(-DHAVE_DIRECTWRITE)
403-
404-
list(APPEND project_sources ${PROJECT_SOURCE_DIR}/src/hb-directwrite.cc)
405324
list(APPEND project_headers ${PROJECT_SOURCE_DIR}/src/hb-directwrite.h)
406-
407325
list(APPEND THIRD_PARTY_LIBS dwrite rpcrt4)
408326
endif ()
409327

@@ -511,7 +429,6 @@ if (HB_HAVE_GOBJECT)
511429
)
512430
endif ()
513431

514-
515432
## Atomic ops availability detection
516433
file(WRITE "${PROJECT_BINARY_DIR}/try_compile_intel_atomic_primitives.c"
517434
" void memory_barrier (void) { __sync_synchronize (); }
@@ -562,7 +479,7 @@ endif ()
562479
if (UNIX OR MINGW)
563480
# Make symbols link locally
564481
include (CheckCXXCompilerFlag)
565-
check_cxx_compiler_flag(-Bsymbolic-functions CXX_SUPPORTS_FLAG_BSYMB_FUNCS)
482+
CHECK_CXX_COMPILER_FLAG(-Bsymbolic-functions CXX_SUPPORTS_FLAG_BSYMB_FUNCS)
566483
if (CXX_SUPPORTS_FLAG_BSYMB_FUNCS)
567484
link_libraries(-Bsymbolic-functions)
568485
endif ()
@@ -580,8 +497,16 @@ if (UNIX OR MINGW)
580497
# No threadsafe statics as we do it ourselves
581498
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-threadsafe-statics")
582499
endif ()
500+
501+
CHECK_CXX_COMPILER_FLAG("-std=c++11" COMPILER_SUPPORTS_CXX11)
502+
if (COMPILER_SUPPORTS_CXX11)
503+
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
504+
else()
505+
message(STATUS "The compiler ${CMAKE_CXX_COMPILER} has no C++11 support. Please use a different C++ compiler.")
506+
endif()
583507
endif ()
584508

509+
585510
## Define harfbuzz-gobject library
586511
if (HB_HAVE_GOBJECT)
587512
add_library(harfbuzz-gobject
@@ -612,7 +537,6 @@ if (WIN32)
612537
endif ()
613538

614539
if (HB_HAVE_INTROSPECTION)
615-
616540
find_package(PkgConfig)
617541
pkg_check_modules(PC_GI QUIET gobject-introspection-1.0)
618542

@@ -706,6 +630,8 @@ if (HB_HAVE_INTROSPECTION)
706630
-DHB_H_IN
707631
-DHB_OT_H
708632
-DHB_OT_H_IN
633+
-DHB_AAT_H
634+
-DHB_AAT_H_IN
709635
-DHB_GOBJECT_H
710636
-DHB_GOBJECT_H_IN
711637
-DHB_EXTERN=
@@ -842,21 +768,9 @@ if (NOT SKIP_INSTALL_LIBRARIES AND NOT SKIP_INSTALL_ALL)
842768
endif ()
843769
endif ()
844770

845-
if (UNIX AND CMAKE_GENERATOR STREQUAL "Ninja")
846-
if (CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
847-
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fcolor-diagnostics")
848-
set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fcolor-diagnostics")
849-
endif ()
850-
if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
851-
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fdiagnostics-color")
852-
set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fdiagnostics-color")
853-
endif ()
854-
endif ()
855-
856-
857771
if (HB_BUILD_TESTS)
858772
## src/ executables
859-
foreach (prog main test test-would-substitute test-size-params test-buffer-serialize hb-ot-tag test-unicode-ranges)
773+
foreach (prog main test test-gsub-would-substitute test-gpos-size-params test-buffer-serialize test-unicode-ranges) # hb-ot-tag
860774
set (prog_name ${prog})
861775
if (${prog_name} STREQUAL "test")
862776
# test can not be used as a valid executable name on cmake, lets special case it
@@ -865,7 +779,7 @@ if (HB_BUILD_TESTS)
865779
add_executable(${prog_name} ${PROJECT_SOURCE_DIR}/src/${prog}.cc)
866780
target_link_libraries(${prog_name} harfbuzz ${THIRD_PARTY_LIBS})
867781
endforeach ()
868-
set_target_properties(hb-ot-tag PROPERTIES COMPILE_FLAGS "-DMAIN")
782+
# set_target_properties(hb-ot-tag PROPERTIES COMPILE_FLAGS "-DMAIN")
869783

870784
## Tests
871785
if (UNIX OR MINGW)

thirdparty/harfbuzz/COPYING

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,8 @@ HarfBuzz is licensed under the so-called "Old MIT" license. Details follow.
22
For parts of HarfBuzz that are licensed under different licenses see individual
33
files names COPYING in subdirectories where applicable.
44

5-
Copyright © 2010,2011,2012 Google, Inc.
5+
Copyright © 2010,2011,2012,2013,2014,2015,2016,2017,2018,2019 Google, Inc.
6+
Copyright © 2019 Facebook, Inc.
67
Copyright © 2012 Mozilla Foundation
78
Copyright © 2011 Codethink Limited
89
Copyright © 2008,2010 Nokia Corporation and/or its subsidiary(-ies)

0 commit comments

Comments
 (0)