@@ -35,7 +35,6 @@ endif ()
3535## HarfBuzz build configurations
3636option (HB_HAVE_FREETYPE "Enable freetype interop helpers" OFF )
3737option (HB_HAVE_GRAPHITE2 "Enable Graphite2 complementary shaper" OFF )
38- option (HB_BUILTIN_UCDN "Use HarfBuzz provided UCDN" ON )
3938option (HB_HAVE_GLIB "Enable glib unicode functions" OFF )
4039option (HB_HAVE_ICU "Enable icu unicode functions" OFF )
4140if (APPLE )
@@ -44,6 +43,7 @@ if (APPLE)
4443endif ()
4544if (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 )
4848endif ()
4949option (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
7070if (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...
9694include (FindPythonInterp )
9795
@@ -110,7 +108,7 @@ endmacro ()
110108if (UNIX )
111109 list (APPEND CMAKE_REQUIRED_LIBRARIES m)
112110endif ()
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 )
114112check_include_file (unistd.h HAVE_UNISTD_H )
115113if (${HAVE_UNISTD_H} )
116114 add_definitions (-DHAVE_UNISTD_H )
@@ -144,8 +142,8 @@ endif ()
144142
145143## Extract variables from Makefile files
146144function (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 )
150148endfunction ()
151149
@@ -160,18 +158,9 @@ endfunction ()
160158
161159file (READ ${PROJECT_SOURCE_DIR} /src/Makefile.sources SRCSOURCES )
162160file (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/" )
167162extract_make_variable (HB_BASE_headers ${SRCSOURCES} )
168163add_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
176165extract_make_variable (HB_SUBSET_sources ${SRCSOURCES} )
177166add_prefix_to_list (HB_SUBSET_sources "${PROJECT_SOURCE_DIR} /src/" )
@@ -180,13 +169,10 @@ extract_make_variable(HB_SUBSET_headers ${SRCSOURCES})
180169add_prefix_to_list (HB_SUBSET_headers "${PROJECT_SOURCE_DIR} /src/" )
181170
182171extract_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
192178extract_make_variable (HB_VIEW_sources ${UTILSOURCES} )
@@ -198,9 +184,6 @@ add_prefix_to_list(HB_SUBSET_CLI_sources "${PROJECT_SOURCE_DIR}/util/")
198184extract_make_variable (HB_OT_SHAPE_CLOSURE_sources ${UTILSOURCES} )
199185add_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
205188file (READ configure.ac CONFIGUREAC )
206189string (REGEX MATCH "\\ [(([0-9]+)\\ .([0-9]+)\\ .([0-9]+))\\ ]" HB_VERSION_MATCH ${CONFIGUREAC} )
@@ -209,64 +192,12 @@ set (HB_VERSION_MAJOR ${CMAKE_MATCH_2})
209192set (HB_VERSION_MINOR ${CMAKE_MATCH_3} )
210193set (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} )
257198set (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
272203if (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 )
306235endif ()
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-
316237if (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 ()
390308endif ()
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+
392316if (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)
399320endif ()
400321
401322if (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)
408326endif ()
409327
@@ -511,7 +429,6 @@ if (HB_HAVE_GOBJECT)
511429 )
512430endif ()
513431
514-
515432## Atomic ops availability detection
516433file (WRITE "${PROJECT_BINARY_DIR} /try_compile_intel_atomic_primitives.c"
517434" void memory_barrier (void) { __sync_synchronize (); }
@@ -562,7 +479,7 @@ endif ()
562479if (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 ()
583507endif ()
584508
509+
585510## Define harfbuzz-gobject library
586511if (HB_HAVE_GOBJECT)
587512 add_library (harfbuzz-gobject
@@ -612,7 +537,6 @@ if (WIN32)
612537endif ()
613538
614539if (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 ()
843769endif ()
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-
857771if (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)
0 commit comments