|
|
|
@ -82,6 +82,16 @@ if (HB_CHECK) |
|
|
|
|
endif () |
|
|
|
|
endif () |
|
|
|
|
|
|
|
|
|
set (HB_DISABLE_SUBSET OFF) |
|
|
|
|
set (HB_DISABLE_TESTS OFF) |
|
|
|
|
option(HB_IOS "Apply iOS specific build flags" OFF) |
|
|
|
|
if (HB_IOS) |
|
|
|
|
# We should fix their issue and enable them |
|
|
|
|
set (HB_DISABLE_SUBSET ON) |
|
|
|
|
set (HB_DISABLE_TESTS ON) |
|
|
|
|
set (HB_HAVE_CORETEXT OFF) |
|
|
|
|
endif () |
|
|
|
|
|
|
|
|
|
include_directories(AFTER |
|
|
|
|
${PROJECT_SOURCE_DIR}/src |
|
|
|
|
${PROJECT_BINARY_DIR}/src |
|
|
|
@ -359,12 +369,32 @@ if (APPLE AND HB_HAVE_CORETEXT) |
|
|
|
|
list(APPEND project_sources ${PROJECT_SOURCE_DIR}/src/hb-coretext.cc) |
|
|
|
|
list(APPEND project_headers ${PROJECT_SOURCE_DIR}/src/hb-coretext.h) |
|
|
|
|
|
|
|
|
|
find_library(APPLICATION_SERVICES_FRAMEWORK ApplicationServices) |
|
|
|
|
if (APPLICATION_SERVICES_FRAMEWORK) |
|
|
|
|
list(APPEND THIRD_PARTY_LIBS ${APPLICATION_SERVICES_FRAMEWORK}) |
|
|
|
|
endif (APPLICATION_SERVICES_FRAMEWORK) |
|
|
|
|
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(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 () |
|
|
|
|
|
|
|
|
|
mark_as_advanced(APPLICATION_SERVICES_FRAMEWORK) |
|
|
|
|
mark_as_advanced(APPLICATION_SERVICES_FRAMEWORK) |
|
|
|
|
endif () |
|
|
|
|
endif () |
|
|
|
|
|
|
|
|
|
if (WIN32 AND HB_HAVE_UNISCRIBE) |
|
|
|
@ -527,12 +557,14 @@ add_library(harfbuzz ${project_sources} ${project_extra_sources} ${project_heade |
|
|
|
|
target_link_libraries(harfbuzz ${THIRD_PARTY_LIBS}) |
|
|
|
|
|
|
|
|
|
## Define harfbuzz-subset library |
|
|
|
|
add_library(harfbuzz-subset ${subset_project_sources} ${subset_project_headers}) |
|
|
|
|
add_dependencies(harfbuzz-subset harfbuzz) |
|
|
|
|
target_link_libraries(harfbuzz-subset harfbuzz ${THIRD_PARTY_LIBS}) |
|
|
|
|
if (NOT HB_DISABLE_SUBSET) |
|
|
|
|
add_library(harfbuzz-subset ${subset_project_sources} ${subset_project_headers}) |
|
|
|
|
add_dependencies(harfbuzz-subset harfbuzz) |
|
|
|
|
target_link_libraries(harfbuzz-subset harfbuzz ${THIRD_PARTY_LIBS}) |
|
|
|
|
|
|
|
|
|
if (BUILD_SHARED_LIBS) |
|
|
|
|
set_target_properties(harfbuzz harfbuzz-subset PROPERTIES VISIBILITY_INLINES_HIDDEN TRUE) |
|
|
|
|
if (BUILD_SHARED_LIBS) |
|
|
|
|
set_target_properties(harfbuzz harfbuzz-subset PROPERTIES VISIBILITY_INLINES_HIDDEN TRUE) |
|
|
|
|
endif () |
|
|
|
|
endif () |
|
|
|
|
|
|
|
|
|
if (UNIX OR MINGW) |
|
|
|
@ -549,7 +581,9 @@ if (UNIX OR MINGW) |
|
|
|
|
set (CMAKE_CXX_IMPLICIT_LINK_LIBRARIES "m") # libm |
|
|
|
|
set (CMAKE_CXX_IMPLICIT_LINK_DIRECTORIES "") |
|
|
|
|
set_target_properties(harfbuzz PROPERTIES LINKER_LANGUAGE C) |
|
|
|
|
set_target_properties(harfbuzz-subset PROPERTIES LINKER_LANGUAGE C) |
|
|
|
|
if (NOT HB_DISABLE_SUBSET) |
|
|
|
|
set_target_properties(harfbuzz-subset PROPERTIES LINKER_LANGUAGE C) |
|
|
|
|
endif () |
|
|
|
|
|
|
|
|
|
# No threadsafe statics as we do it ourselves |
|
|
|
|
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-threadsafe-statics") |
|
|
|
@ -828,51 +862,53 @@ if (UNIX AND CMAKE_GENERATOR STREQUAL "Ninja") |
|
|
|
|
endif () |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## src/ executables |
|
|
|
|
foreach (prog main test test-would-substitute test-size-params test-buffer-serialize hb-ot-tag test-unicode-ranges) |
|
|
|
|
set (prog_name ${prog}) |
|
|
|
|
if (${prog_name} STREQUAL "test") |
|
|
|
|
# test can not be used as a valid executable name on cmake, lets special case it |
|
|
|
|
set (prog_name test-test) |
|
|
|
|
endif () |
|
|
|
|
add_executable(${prog_name} ${PROJECT_SOURCE_DIR}/src/${prog}.cc) |
|
|
|
|
target_link_libraries(${prog_name} harfbuzz ${THIRD_PARTY_LIBS}) |
|
|
|
|
endforeach () |
|
|
|
|
set_target_properties(hb-ot-tag PROPERTIES COMPILE_FLAGS "-DMAIN") |
|
|
|
|
|
|
|
|
|
## Tests |
|
|
|
|
if (UNIX OR MINGW) |
|
|
|
|
if (BUILD_SHARED_LIBS) |
|
|
|
|
# generate harfbuzz.def after build completion |
|
|
|
|
add_custom_command(TARGET harfbuzz POST_BUILD |
|
|
|
|
COMMAND "${PYTHON_EXECUTABLE}" ${PROJECT_SOURCE_DIR}/src/gen-def.py ${PROJECT_BINARY_DIR}/harfbuzz.def ${project_headers} |
|
|
|
|
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}/src) |
|
|
|
|
|
|
|
|
|
add_test(NAME check-static-inits.sh |
|
|
|
|
COMMAND ${PROJECT_SOURCE_DIR}/src/check-static-inits.sh |
|
|
|
|
WORKING_DIRECTORY ${PROJECT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/harfbuzz.dir/src # ugly hack |
|
|
|
|
) |
|
|
|
|
add_test(NAME check-libstdc++.sh COMMAND ${PROJECT_SOURCE_DIR}/src/check-libstdc++.sh) |
|
|
|
|
add_test(NAME check-symbols.sh COMMAND ${PROJECT_SOURCE_DIR}/src/check-symbols.sh) |
|
|
|
|
if (NOT HB_DISABLE_TESTS) |
|
|
|
|
## src/ executables |
|
|
|
|
foreach (prog main test test-would-substitute test-size-params test-buffer-serialize hb-ot-tag test-unicode-ranges) |
|
|
|
|
set (prog_name ${prog}) |
|
|
|
|
if (${prog_name} STREQUAL "test") |
|
|
|
|
# test can not be used as a valid executable name on cmake, lets special case it |
|
|
|
|
set (prog_name test-test) |
|
|
|
|
endif () |
|
|
|
|
add_executable(${prog_name} ${PROJECT_SOURCE_DIR}/src/${prog}.cc) |
|
|
|
|
target_link_libraries(${prog_name} harfbuzz ${THIRD_PARTY_LIBS}) |
|
|
|
|
endforeach () |
|
|
|
|
set_target_properties(hb-ot-tag PROPERTIES COMPILE_FLAGS "-DMAIN") |
|
|
|
|
|
|
|
|
|
## Tests |
|
|
|
|
if (UNIX OR MINGW) |
|
|
|
|
if (BUILD_SHARED_LIBS) |
|
|
|
|
# generate harfbuzz.def after build completion |
|
|
|
|
add_custom_command(TARGET harfbuzz POST_BUILD |
|
|
|
|
COMMAND "${PYTHON_EXECUTABLE}" ${PROJECT_SOURCE_DIR}/src/gen-def.py ${PROJECT_BINARY_DIR}/harfbuzz.def ${project_headers} |
|
|
|
|
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}/src) |
|
|
|
|
|
|
|
|
|
add_test(NAME check-static-inits.sh |
|
|
|
|
COMMAND ${PROJECT_SOURCE_DIR}/src/check-static-inits.sh |
|
|
|
|
WORKING_DIRECTORY ${PROJECT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/harfbuzz.dir/src # ugly hack |
|
|
|
|
) |
|
|
|
|
add_test(NAME check-libstdc++.sh COMMAND ${PROJECT_SOURCE_DIR}/src/check-libstdc++.sh) |
|
|
|
|
add_test(NAME check-symbols.sh COMMAND ${PROJECT_SOURCE_DIR}/src/check-symbols.sh) |
|
|
|
|
|
|
|
|
|
set_tests_properties( |
|
|
|
|
check-static-inits.sh check-libstdc++.sh check-symbols.sh |
|
|
|
|
PROPERTIES |
|
|
|
|
ENVIRONMENT "libs=.;srcdir=${PROJECT_SOURCE_DIR}/src" |
|
|
|
|
SKIP_RETURN_CODE 77) |
|
|
|
|
endif () |
|
|
|
|
|
|
|
|
|
add_test(NAME check-c-linkage-decls.sh COMMAND ./check-c-linkage-decls.sh) |
|
|
|
|
add_test(NAME check-header-guards.sh COMMAND ./check-header-guards.sh) |
|
|
|
|
add_test(NAME check-externs.sh COMMAND ./check-externs.sh) |
|
|
|
|
add_test(NAME check-includes.sh COMMAND ./check-includes.sh) |
|
|
|
|
set_tests_properties( |
|
|
|
|
check-static-inits.sh check-libstdc++.sh check-symbols.sh |
|
|
|
|
check-c-linkage-decls.sh check-header-guards.sh check-externs.sh check-includes.sh |
|
|
|
|
PROPERTIES |
|
|
|
|
ENVIRONMENT "libs=.;srcdir=${PROJECT_SOURCE_DIR}/src" |
|
|
|
|
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}/src |
|
|
|
|
SKIP_RETURN_CODE 77) |
|
|
|
|
endif () |
|
|
|
|
|
|
|
|
|
add_test(NAME check-c-linkage-decls.sh COMMAND ./check-c-linkage-decls.sh) |
|
|
|
|
add_test(NAME check-header-guards.sh COMMAND ./check-header-guards.sh) |
|
|
|
|
add_test(NAME check-externs.sh COMMAND ./check-externs.sh) |
|
|
|
|
add_test(NAME check-includes.sh COMMAND ./check-includes.sh) |
|
|
|
|
set_tests_properties( |
|
|
|
|
check-c-linkage-decls.sh check-header-guards.sh check-externs.sh check-includes.sh |
|
|
|
|
PROPERTIES |
|
|
|
|
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}/src |
|
|
|
|
SKIP_RETURN_CODE 77) |
|
|
|
|
# Needs to come last so that variables defined above are passed to |
|
|
|
|
# subdirectories. |
|
|
|
|
add_subdirectory(test) |
|
|
|
|
endif () |
|
|
|
|
|
|
|
|
|
# Needs to come last so that variables defined above are passed to |
|
|
|
|
# subdirectories. |
|
|
|
|
add_subdirectory(test) |
|
|
|
|