summaryrefslogtreecommitdiff
path: root/Build/source/libs/harfbuzz/harfbuzz-src/CMakeLists.txt
diff options
context:
space:
mode:
authorAkira Kakuto <kakuto@fuk.kindai.ac.jp>2018-03-07 22:32:14 +0000
committerAkira Kakuto <kakuto@fuk.kindai.ac.jp>2018-03-07 22:32:14 +0000
commitef9282421b00185a4962b7d22b96e979687258e2 (patch)
treeb6d0d8c700086d3141e228187693a26b102c971f /Build/source/libs/harfbuzz/harfbuzz-src/CMakeLists.txt
parent55fbdeae2498166ec7c7301fd48d990fc9010058 (diff)
harfbuzz-1.7.6
git-svn-id: svn://tug.org/texlive/trunk@46877 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Build/source/libs/harfbuzz/harfbuzz-src/CMakeLists.txt')
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/CMakeLists.txt142
1 files changed, 79 insertions, 63 deletions
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/CMakeLists.txt b/Build/source/libs/harfbuzz/harfbuzz-src/CMakeLists.txt
index 3a59366691c..defd5d6c62b 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/CMakeLists.txt
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/CMakeLists.txt
@@ -91,6 +91,7 @@ add_definitions(-DHAVE_OT)
add_definitions(-DHAVE_FALLBACK)
+## Functions and headers
include (CheckFunctionExists)
include (CheckIncludeFile)
macro (check_funcs) # Similar to AC_CHECK_FUNCS of autotools
@@ -102,16 +103,15 @@ macro (check_funcs) # Similar to AC_CHECK_FUNCS of autotools
endif ()
endforeach ()
endmacro ()
-check_funcs(atexit mprotect sysconf mmap strtod_l) #TODO: getpagesize newlocale isatty
-
-check_include_file(unistd.h HAVE_UNIST_H)
-if (${HAVE_UNIST_H})
- add_definitions(-DHAVE_UNIST_H)
+check_funcs(atexit mprotect sysconf getpagesize mmap isatty newlocale strtod_l)
+check_include_file(unistd.h HAVE_UNISTD_H)
+if (${HAVE_UNISTD_H})
+ add_definitions(-DHAVE_UNISTD_H)
+endif ()
+check_include_file(sys/mman.h HAVE_SYS_MMAN_H)
+if (${HAVE_SYS_MMAN_H})
+ add_definitions(-DHAVE_SYS_MMAN_H)
endif ()
-#check_include_file(sys/mman.h HAVE_SYS_MMAN_H)
-#if (${HAVE_SYS_MMAN_H})
-# add_definitions(-DHAVE_SYS_MMAN_H)
-#endif ()
check_include_file(xlocale.h HAVE_XLOCALE_H)
if (${HAVE_XLOCALE_H})
add_definitions(-DHAVE_XLOCALE_H)
@@ -132,12 +132,11 @@ endif ()
## Detect if we are running inside a distribution or regular repository folder
-set (IN_HB_DIST FALSE)
-if (EXISTS "${PROJECT_SOURCE_DIR}/ChangeLog")
- # perhaps we are on dist directory
- set (IN_HB_DIST TRUE)
- set (HB_VERSION_H "${PROJECT_SOURCE_DIR}/src/hb-version.h")
-endif ()
+# if (EXISTS "${PROJECT_SOURCE_DIR}/ChangeLog")
+# # perhaps we are on dist directory
+# set (IN_HB_DIST TRUE)
+# #set (HB_VERSION_H "${PROJECT_SOURCE_DIR}/src/hb-version.h")
+# endif ()
## Extract variables from Makefile files
@@ -171,20 +170,28 @@ add_prefix_to_list(HB_OT_sources "${PROJECT_SOURCE_DIR}/src/")
extract_make_variable(HB_OT_headers ${SRCSOURCES})
add_prefix_to_list(HB_OT_headers "${PROJECT_SOURCE_DIR}/src/")
+extract_make_variable(HB_SUBSET_sources ${SRCSOURCES})
+add_prefix_to_list(HB_SUBSET_sources "${PROJECT_SOURCE_DIR}/src/")
+
+extract_make_variable(HB_SUBSET_headers ${SRCSOURCES})
+add_prefix_to_list(HB_SUBSET_headers "${PROJECT_SOURCE_DIR}/src/")
+
extract_make_variable(HB_BASE_RAGEL_GENERATED_sources ${SRCSOURCES})
extract_make_variable(HB_OT_RAGEL_GENERATED_sources ${SRCSOURCES})
-if (IN_HB_DIST)
+#if (IN_HB_DIST)
add_prefix_to_list(HB_BASE_RAGEL_GENERATED_sources "${PROJECT_SOURCE_DIR}/src/")
add_prefix_to_list(HB_OT_RAGEL_GENERATED_sources "${PROJECT_SOURCE_DIR}/src/")
-else ()
- add_prefix_to_list(HB_BASE_RAGEL_GENERATED_sources "${PROJECT_BINARY_DIR}/src/")
- add_prefix_to_list(HB_OT_RAGEL_GENERATED_sources "${PROJECT_BINARY_DIR}/src/")
-endif ()
+#else ()
+# add_prefix_to_list(HB_BASE_RAGEL_GENERATED_sources "${PROJECT_BINARY_DIR}/src/")
+# add_prefix_to_list(HB_OT_RAGEL_GENERATED_sources "${PROJECT_BINARY_DIR}/src/")
+#endif ()
extract_make_variable(HB_VIEW_sources ${UTILSOURCES})
add_prefix_to_list(HB_VIEW_sources "${PROJECT_SOURCE_DIR}/util/")
extract_make_variable(HB_SHAPE_sources ${UTILSOURCES})
add_prefix_to_list(HB_SHAPE_sources "${PROJECT_SOURCE_DIR}/util/")
+extract_make_variable(HB_SUBSET_CLI_sources ${UTILSOURCES})
+add_prefix_to_list(HB_SUBSET_CLI_sources "${PROJECT_SOURCE_DIR}/util/")
extract_make_variable(HB_OT_SHAPE_CLOSURE_sources ${UTILSOURCES})
add_prefix_to_list(HB_OT_SHAPE_CLOSURE_sources "${PROJECT_SOURCE_DIR}/util/")
@@ -201,41 +208,33 @@ set (HB_VERSION_MICRO ${CMAKE_MATCH_4})
## Define ragel tasks
-if (NOT IN_HB_DIST)
- find_program(RAGEL "ragel" CMAKE_FIND_ROOT_PATH_BOTH)
+# if (NOT IN_HB_DIST)
+# foreach (ragel_output IN ITEMS ${HB_BASE_RAGEL_GENERATED_sources} ${HB_OT_RAGEL_GENERATED_sources})
+# string(REGEX MATCH "([^/]+)\\.hh" temp ${ragel_output})
+# set (target_name ${CMAKE_MATCH_1})
+# add_custom_command(OUTPUT ${ragel_output}
+# COMMAND ${RAGEL} -G2 -o ${ragel_output} ${PROJECT_SOURCE_DIR}/src/${target_name}.rl -I ${PROJECT_SOURCE_DIR} ${ARGN}
+# DEPENDS ${PROJECT_SOURCE_DIR}/src/${target_name}.rl
+# )
+# add_custom_target(harfbuzz_${target_name} DEPENDS ${PROJECT_BINARY_DIR}/src/${target_name})
+# endforeach ()
- if (RAGEL)
- message(STATUS "ragel found at: ${RAGEL}")
- else ()
- message(FATAL_ERROR "ragel not found, get it here -- http://www.complang.org/ragel/ or, use harfbuzz releases https://github.com/harfbuzz/harfbuzz/releases")
- endif ()
-
- foreach (ragel_output IN ITEMS ${HB_BASE_RAGEL_GENERATED_sources} ${HB_OT_RAGEL_GENERATED_sources})
- string(REGEX MATCH "([^/]+)\\.hh" temp ${ragel_output})
- set (target_name ${CMAKE_MATCH_1})
- add_custom_command(OUTPUT ${ragel_output}
- COMMAND ${RAGEL} -G2 -o ${ragel_output} ${PROJECT_SOURCE_DIR}/src/${target_name}.rl -I ${PROJECT_SOURCE_DIR} ${ARGN}
- DEPENDS ${PROJECT_SOURCE_DIR}/src/${target_name}.rl
- )
- add_custom_target(harfbuzz_${target_name} DEPENDS ${PROJECT_BINARY_DIR}/src/${target_name})
- endforeach ()
-
- mark_as_advanced(RAGEL)
-endif ()
+# mark_as_advanced(RAGEL)
+# endif ()
## Generate hb-version.h
-if (NOT IN_HB_DIST)
- set (HB_VERSION_H_IN "${PROJECT_SOURCE_DIR}/src/hb-version.h.in")
- set (HB_VERSION_H "${PROJECT_BINARY_DIR}/src/hb-version.h")
- set_source_files_properties("${HB_VERSION_H}" PROPERTIES GENERATED true)
- configure_file("${HB_VERSION_H_IN}" "${HB_VERSION_H}.tmp" @ONLY)
- execute_process(COMMAND "${CMAKE_COMMAND}" -E copy_if_different
- "${HB_VERSION_H}.tmp"
- "${HB_VERSION_H}"
- )
- file(REMOVE "${HB_VERSION_H}.tmp")
-endif ()
+# if (NOT IN_HB_DIST)
+# set (HB_VERSION_H_IN "${PROJECT_SOURCE_DIR}/src/hb-version.h.in")
+# set (HB_VERSION_H "${PROJECT_BINARY_DIR}/src/hb-version.h")
+# set_source_files_properties("${HB_VERSION_H}" PROPERTIES GENERATED true)
+# configure_file("${HB_VERSION_H_IN}" "${HB_VERSION_H}.tmp" @ONLY)
+# execute_process(COMMAND "${CMAKE_COMMAND}" -E copy_if_different
+# "${HB_VERSION_H}.tmp"
+# "${HB_VERSION_H}"
+# )
+# file(REMOVE "${HB_VERSION_H}.tmp")
+# endif ()
## Define sources and headers of the project
@@ -248,15 +247,23 @@ set (project_sources
${HB_OT_RAGEL_GENERATED_sources}
)
+set (subset_project_sources
+ ${HB_SUBSET_sources}
+)
+
set (project_extra_sources)
set (project_headers
- ${HB_VERSION_H}
+ #${HB_VERSION_H}
${HB_BASE_headers}
${HB_OT_headers}
)
+set (subset_project_headers
+ ${HB_SUBSET_headers}
+)
+
## Find and include needed header folders and libraries
if (HB_HAVE_FREETYPE)
@@ -519,25 +526,28 @@ endif ()
add_library(harfbuzz ${project_sources} ${project_extra_sources} ${project_headers})
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 (UNIX OR MINGW)
# Make symbols link locally
link_libraries(-Bsymbolic-functions)
- # Make sure we don't link to libstdc++
if (CMAKE_CXX_COMPILER_ID STREQUAL "Clang" OR CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
+ # Make sure we don't link to libstdc++
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-rtti -fno-exceptions")
set (CMAKE_CXX_IMPLICIT_LINK_LIBRARIES "m") # libm
set (CMAKE_CXX_IMPLICIT_LINK_DIRECTORIES "")
set_target_properties(harfbuzz PROPERTIES LINKER_LANGUAGE C)
- endif ()
+ set_target_properties(harfbuzz-subset PROPERTIES LINKER_LANGUAGE C)
- # No threadsafe statics as we do it ourselves
- if (BUILD_SHARED_LIBS)
+ # No threadsafe statics as we do it ourselves
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-threadsafe-statics")
endif ()
endif ()
-
## Define harfbuzz-gobject library
if (HB_HAVE_GOBJECT)
add_library(harfbuzz-gobject
@@ -708,6 +718,9 @@ if (HB_BUILD_UTILS)
add_executable(hb-shape ${HB_SHAPE_sources})
target_link_libraries(hb-shape harfbuzz)
+ add_executable(hb-subset ${HB_SUBSET_CLI_sources})
+ target_link_libraries(hb-subset harfbuzz harfbuzz-subset)
+
add_executable(hb-ot-shape-closure ${HB_OT_SHAPE_CLOSURE_sources})
target_link_libraries(hb-ot-shape-closure harfbuzz)
@@ -785,7 +798,7 @@ endif ()
## src/ executables
-foreach (prog main test test-would-substitute test-size-params test-buffer-serialize hb-ot-tag)
+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
@@ -796,7 +809,6 @@ foreach (prog main test test-would-substitute test-size-params test-buffer-seria
endforeach ()
set_target_properties(hb-ot-tag PROPERTIES COMPILE_FLAGS "-DMAIN")
-
## Tests
if (UNIX OR MINGW)
if (BUILD_SHARED_LIBS)
@@ -812,10 +824,12 @@ if (UNIX OR MINGW)
)
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)
- add_test(NAME check-defs.sh COMMAND ${PROJECT_SOURCE_DIR}/src/check-defs.sh)
- set_tests_properties(check-static-inits.sh check-libstdc++.sh check-symbols.sh check-defs.sh
- PROPERTIES ENVIRONMENT "libs=.;srcdir=${PROJECT_SOURCE_DIR}/src")
+ 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)
@@ -824,7 +838,9 @@ if (UNIX OR MINGW)
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)
+ PROPERTIES
+ WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}/src
+ SKIP_RETURN_CODE 77)
endif ()
# Needs to come last so that variables defined above are passed to