2017-01-30 01:46:22 +08:00
|
|
|
cmake_minimum_required(VERSION 3.0)
|
2017-03-14 07:07:16 +08:00
|
|
|
project(pango C)
|
2017-01-30 01:46:22 +08:00
|
|
|
|
|
|
|
set(PANGO_LIB_SUFFIX 1.0)
|
|
|
|
set(PANGO_DLL_SUFFIX 1)
|
|
|
|
set(GLIB_LIB_VERSION 2.0)
|
|
|
|
|
2018-12-06 08:30:25 +08:00
|
|
|
if(WIN32)
|
|
|
|
configure_file(./config.h.win32 ${CMAKE_CURRENT_BINARY_DIR}/config.h COPYONLY)
|
|
|
|
else()
|
|
|
|
configure_file(./config.h.unix ${CMAKE_CURRENT_BINARY_DIR}/config.h COPYONLY)
|
|
|
|
endif()
|
|
|
|
|
2019-05-30 03:45:57 +08:00
|
|
|
if (WIN32)
|
|
|
|
# Set utf-8 charset to avoid compile error C2001
|
|
|
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /utf-8")
|
|
|
|
endif()
|
|
|
|
|
2017-01-30 01:46:22 +08:00
|
|
|
add_definitions(-DHAVE_CONFIG_H)
|
2018-12-06 08:30:25 +08:00
|
|
|
include_directories(. ./pango ${CMAKE_CURRENT_BINARY_DIR})
|
2017-01-30 01:46:22 +08:00
|
|
|
|
2018-12-18 08:30:27 +08:00
|
|
|
if(NOT CMAKE_SYSTEM_NAME STREQUAL "Linux")
|
2017-01-30 01:46:22 +08:00
|
|
|
# find libintl
|
|
|
|
find_path(LIBINTL_INCLUDE_DIR libintl.h)
|
|
|
|
find_library(LIBINTL_LIBRARY NAMES libintl intl)
|
2018-12-18 08:30:27 +08:00
|
|
|
endif()
|
2017-01-30 01:46:22 +08:00
|
|
|
|
|
|
|
# find glib
|
|
|
|
find_path(GLIB_INCLUDE_DIR glib.h)
|
|
|
|
find_library(GLIB_GLIB_LIBRARY glib-${GLIB_LIB_VERSION})
|
|
|
|
find_library(GLIB_GOBJECT_LIBRARY gobject-${GLIB_LIB_VERSION})
|
|
|
|
find_library(GLIB_GMODULE_LIBRARY gmodule-${GLIB_LIB_VERSION})
|
|
|
|
set(GLIB_LIBRARIES ${GLIB_GLIB_LIBRARY} ${GLIB_GOBJECT_LIBRARY} ${GLIB_GMODULE_LIBRARY})
|
|
|
|
|
|
|
|
# find cairo
|
|
|
|
find_path(CAIRO_INCLUDE_DIR cairo.h)
|
|
|
|
if(CMAKE_BUILD_TYPE STREQUAL Debug)
|
|
|
|
set(CAIRO_SUFFIX d)
|
|
|
|
endif()
|
2017-04-27 06:39:16 +08:00
|
|
|
find_library(CAIRO_LIBRARY
|
|
|
|
NAMES
|
|
|
|
cairo${CAIRO_SUFFIX}
|
|
|
|
cairo-static${CAIRO_SUFFIX})
|
2017-01-30 01:46:22 +08:00
|
|
|
find_library(CAIRO_GOBJECT_LIBRARY cairo-gobject${CAIRO_SUFFIX})
|
|
|
|
set(CAIRO_LIBRARIES ${CAIRO_LIBRARY} ${CAIRO_GOBJECT_LIBRARY})
|
|
|
|
|
|
|
|
# find fontconfig
|
|
|
|
find_path(FONTCONFIG_INCLUDE_DIR fontconfig/fontconfig.h)
|
|
|
|
find_library(FONTCONFIG_LIBRARY fontconfig)
|
|
|
|
|
|
|
|
# find freetype
|
2020-08-07 04:07:46 +08:00
|
|
|
find_package(Freetype REQUIRED)
|
2017-01-30 01:46:22 +08:00
|
|
|
|
|
|
|
# find harfbuzz
|
|
|
|
find_path(HARFBUZZ_INCLUDE_DIR harfbuzz/hb.h)
|
|
|
|
find_library(HARFBUZZ_LIBRARY harfbuzz)
|
|
|
|
|
2020-01-31 04:48:56 +08:00
|
|
|
if (APPLE)
|
|
|
|
find_library(COREFOUNDATION_LIBRARY CoreFoundation)
|
|
|
|
link_libraries(${COREFOUNDATION_LIBRARY})
|
|
|
|
endif()
|
|
|
|
|
2017-01-30 01:46:22 +08:00
|
|
|
set(FONT_INCLUDE_DIRS ${FREETYPE_INCLUDE_DIR} ${FONTCONFIG_INCLUDE_DIR} ${HARFBUZZ_INCLUDE_DIR}/harfbuzz)
|
2020-08-07 04:07:46 +08:00
|
|
|
set(FONT_LIBRARIES Freetype::Freetype ${FONTCONFIG_LIBRARY} ${HARFBUZZ_LIBRARY})
|
2017-01-30 01:46:22 +08:00
|
|
|
|
|
|
|
macro(pango_add_module MODULE_NAME)
|
|
|
|
add_library(${MODULE_NAME} ${ARGN})
|
|
|
|
target_include_directories(${MODULE_NAME} PRIVATE ${GLIB_INCLUDE_DIR} ${LIBINTL_INCLUDE_DIR})
|
|
|
|
target_link_libraries(${MODULE_NAME} ${LIBINTL_LIBRARY} ${GLIB_LIBRARIES})
|
|
|
|
target_compile_definitions(${MODULE_NAME} PRIVATE
|
|
|
|
G_LOG_DOMAIN="Pango" PANGO_ENABLE_BACKEND PANGO_ENABLE_ENGINE
|
|
|
|
G_DISABLE_SINGLE_INCLUDES SYSCONFDIR="/dummy/etc" LIBDIR="/dummy/lib")
|
|
|
|
target_compile_definitions(${MODULE_NAME} PRIVATE HAVE_CAIRO_FREETYPE=1)
|
2017-05-04 23:47:22 +08:00
|
|
|
set_target_properties(${MODULE_NAME} PROPERTIES
|
|
|
|
DEFINE_SYMBOL PANGO_EXPORTS
|
2017-01-30 01:46:22 +08:00
|
|
|
OUTPUT_NAME ${MODULE_NAME}-${PANGO_DLL_SUFFIX}
|
|
|
|
ARCHIVE_OUTPUT_NAME ${MODULE_NAME}-${PANGO_LIB_SUFFIX})
|
|
|
|
install(TARGETS ${MODULE_NAME} RUNTIME DESTINATION bin ARCHIVE DESTINATION lib LIBRARY DESTINATION lib)
|
|
|
|
endmacro()
|
|
|
|
|
|
|
|
pango_add_module(pango
|
|
|
|
pango/break-arabic.c
|
|
|
|
pango/break-indic.c
|
|
|
|
pango/mini-fribidi/fribidi.c
|
|
|
|
pango/mini-fribidi/fribidi_char_type.c
|
|
|
|
pango/mini-fribidi/fribidi_types.c
|
|
|
|
pango/break.c
|
|
|
|
pango/ellipsize.c
|
|
|
|
pango/fonts.c
|
|
|
|
pango/glyphstring.c
|
|
|
|
pango/modules.c
|
|
|
|
pango/pango-attributes.c
|
|
|
|
pango/pango-bidi-type.c
|
|
|
|
pango/pango-color.c
|
|
|
|
pango/pango-context.c
|
|
|
|
pango/pango-coverage.c
|
2017-08-30 21:28:50 +08:00
|
|
|
pango/pango-emoji.c
|
2017-01-30 01:46:22 +08:00
|
|
|
pango/pango-engine.c
|
|
|
|
pango/pango-fontmap.c
|
|
|
|
pango/pango-fontset.c
|
|
|
|
pango/pango-glyph-item.c
|
|
|
|
pango/pango-gravity.c
|
|
|
|
pango/pango-item.c
|
|
|
|
pango/pango-language.c
|
|
|
|
pango/pango-layout.c
|
|
|
|
pango/pango-markup.c
|
|
|
|
pango/pango-matrix.c
|
|
|
|
pango/pango-renderer.c
|
|
|
|
pango/pango-script.c
|
|
|
|
pango/pango-tabs.c
|
|
|
|
pango/pango-utils.c
|
|
|
|
pango/reorder-items.c
|
|
|
|
pango/shape.c
|
|
|
|
pango/pango-enum-types.c)
|
|
|
|
|
2018-12-06 08:30:25 +08:00
|
|
|
if(WIN32)
|
2017-01-30 01:46:22 +08:00
|
|
|
pango_add_module(pangowin32
|
|
|
|
pango/pangowin32.c
|
|
|
|
pango/pangowin32-fontcache.c
|
|
|
|
pango/pangowin32-fontmap.c
|
|
|
|
pango/pangowin32-shape.c)
|
2019-11-04 06:10:24 +08:00
|
|
|
target_link_libraries(pangowin32 usp10 pango gdi32)
|
2018-12-06 08:30:25 +08:00
|
|
|
endif()
|
2017-01-30 01:46:22 +08:00
|
|
|
|
|
|
|
pango_add_module(pangoft2
|
|
|
|
pango/pangofc-font.c
|
|
|
|
pango/pangofc-fontmap.c
|
|
|
|
pango/pangofc-decoder.c
|
|
|
|
pango/pangofc-shape.c
|
|
|
|
pango/pangoft2.c
|
|
|
|
pango/pangoft2-fontmap.c
|
|
|
|
pango/pangoft2-render.c
|
|
|
|
pango/pango-ot-buffer.c
|
|
|
|
pango/pango-ot-info.c
|
|
|
|
pango/pango-ot-ruleset.c
|
|
|
|
pango/pango-ot-tag.c)
|
|
|
|
target_link_libraries(pangoft2 pango ${FONT_LIBRARIES})
|
|
|
|
target_include_directories(pangoft2 PRIVATE ${FONT_INCLUDE_DIRS})
|
|
|
|
|
2018-12-06 08:30:25 +08:00
|
|
|
list(APPEND PANGO_CAIRO_SOURCES
|
|
|
|
pango/pangocairo-fcfont.c
|
2017-01-30 01:46:22 +08:00
|
|
|
pango/pangocairo-fcfontmap.c
|
|
|
|
pango/pangocairo-context.c
|
|
|
|
pango/pangocairo-font.c
|
|
|
|
pango/pangocairo-fontmap.c
|
|
|
|
pango/pangocairo-render.c)
|
2018-12-06 08:30:25 +08:00
|
|
|
|
|
|
|
if(WIN32)
|
|
|
|
list(APPEND PANGO_CAIRO_SOURCES
|
|
|
|
pango/pangocairo-win32font.c
|
|
|
|
pango/pangocairo-win32fontmap.c)
|
|
|
|
endif()
|
|
|
|
|
|
|
|
pango_add_module(pangocairo ${PANGO_CAIRO_SOURCES})
|
2020-01-31 04:48:56 +08:00
|
|
|
list(APPEND PANGO_CAIRO_LIBRARIES ${CAIRO_LIBRARIES} pango pangoft2 ${FONT_LIBRARIES})
|
|
|
|
if (WIN32)
|
|
|
|
list(APPEND PANGO_CAIRO_LIBRARIES pangowin32)
|
|
|
|
endif()
|
|
|
|
target_link_libraries(pangocairo ${PANGO_CAIRO_LIBRARIES})
|
2017-01-30 01:46:22 +08:00
|
|
|
target_include_directories(pangocairo PRIVATE ${CAIRO_INCLUDE_DIR} ${FONT_INCLUDE_DIRS})
|
|
|
|
|
2018-12-06 08:30:25 +08:00
|
|
|
|
2017-01-30 01:46:22 +08:00
|
|
|
if(NOT PANGO_SKIP_HEADERS)
|
|
|
|
install(FILES
|
|
|
|
pango/pango.h
|
|
|
|
pango/pango-attributes.h
|
|
|
|
pango/pango-bidi-type.h
|
|
|
|
pango/pango-break.h
|
|
|
|
pango/pango-context.h
|
|
|
|
pango/pango-coverage.h
|
|
|
|
pango/pango-engine.h
|
|
|
|
pango/pango-font.h
|
|
|
|
pango/pango-fontmap.h
|
|
|
|
pango/pango-fontset.h
|
|
|
|
pango/pango-glyph.h
|
|
|
|
pango/pango-glyph-item.h
|
|
|
|
pango/pango-gravity.h
|
|
|
|
pango/pango-item.h
|
|
|
|
pango/pango-language.h
|
|
|
|
pango/pango-layout.h
|
|
|
|
pango/pango-matrix.h
|
|
|
|
pango/pango-modules.h
|
|
|
|
pango/pango-renderer.h
|
|
|
|
pango/pango-script.h
|
|
|
|
pango/pango-tabs.h
|
|
|
|
pango/pango-types.h
|
|
|
|
pango/pango-utils.h
|
|
|
|
pango/pango-version-macros.h
|
|
|
|
pango/pangocairo.h
|
|
|
|
pango/pangowin32.h
|
|
|
|
pango/pango-features.h
|
|
|
|
pango/pango-enum-types.h
|
|
|
|
pango/pangofc-decoder.h
|
|
|
|
pango/pangofc-font.h
|
|
|
|
pango/pangofc-fontmap.h
|
|
|
|
pango/pango-ot.h
|
|
|
|
pango/pangoft2.h
|
|
|
|
DESTINATION include/pango)
|
|
|
|
endif()
|
|
|
|
|
|
|
|
message(STATUS "Link-time dependencies:")
|
|
|
|
message(STATUS " " ${LIBINTL_LIBRARY})
|
|
|
|
foreach(GL ${GLIB_LIBRARIES})
|
|
|
|
message(STATUS " " ${GL})
|
|
|
|
endforeach()
|
|
|
|
foreach(CL ${CAIRO_LIBRARIES})
|
|
|
|
message(STATUS " " ${CL})
|
|
|
|
endforeach()
|
|
|
|
foreach(FL ${FONT_LIBRARIES})
|
|
|
|
message(STATUS " " ${FL})
|
|
|
|
endforeach()
|