aboutsummaryrefslogtreecommitdiff
path: root/ports/pango/CMakeLists.txt
blob: f0e6d85e7e63fc6c2c1363d7f7a947de0d189535 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
cmake_minimum_required(VERSION 3.0)
project(pango C)

set(PANGO_LIB_SUFFIX 1.0)
set(PANGO_DLL_SUFFIX 1)
set(GLIB_LIB_VERSION 2.0)

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()

if (WIN32)
  # Set utf-8 charset to avoid compile error C2001
  set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /utf-8")
endif()

add_definitions(-DHAVE_CONFIG_H)
include_directories(. ./pango ${CMAKE_CURRENT_BINARY_DIR})

if(NOT CMAKE_SYSTEM_NAME STREQUAL "Linux")
# find libintl
find_path(LIBINTL_INCLUDE_DIR libintl.h)
find_library(LIBINTL_LIBRARY NAMES libintl intl)
endif()

# 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()
find_library(CAIRO_LIBRARY 
    NAMES
        cairo${CAIRO_SUFFIX}
        cairo-static${CAIRO_SUFFIX})
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
find_path(FREETYPE_INCLUDE_DIR ft2build.h)
if(CMAKE_BUILD_TYPE STREQUAL Debug)
    set(FT_SUFFIX d)
endif()
find_library(FREETYPE_LIBRARY freetype${FT_SUFFIX})

# find harfbuzz
find_path(HARFBUZZ_INCLUDE_DIR harfbuzz/hb.h)
find_library(HARFBUZZ_LIBRARY harfbuzz)

set(FONT_INCLUDE_DIRS ${FREETYPE_INCLUDE_DIR} ${FONTCONFIG_INCLUDE_DIR} ${HARFBUZZ_INCLUDE_DIR}/harfbuzz)
set(FONT_LIBRARIES ${FREETYPE_LIBRARY} ${FONTCONFIG_LIBRARY} ${HARFBUZZ_LIBRARY})

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)
    set_target_properties(${MODULE_NAME} PROPERTIES
        DEFINE_SYMBOL PANGO_EXPORTS
        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
    pango/pango-emoji.c
    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)

if(WIN32)
pango_add_module(pangowin32
    pango/pangowin32.c
    pango/pangowin32-fontcache.c
    pango/pangowin32-fontmap.c
    pango/pangowin32-shape.c)
target_link_libraries(pangowin32 usp10 pango)
endif()

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})

list(APPEND PANGO_CAIRO_SOURCES 
	pango/pangocairo-fcfont.c
    pango/pangocairo-fcfontmap.c
    pango/pangocairo-context.c
    pango/pangocairo-font.c
    pango/pangocairo-fontmap.c
    pango/pangocairo-render.c)
	
if(WIN32)
	list(APPEND PANGO_CAIRO_SOURCES 
		pango/pangocairo-win32font.c
		pango/pangocairo-win32fontmap.c)
endif()

pango_add_module(pangocairo ${PANGO_CAIRO_SOURCES})
target_link_libraries(pangocairo ${CAIRO_LIBRARIES} pango pangowin32 pangoft2 ${FONT_LIBRARIES})
target_include_directories(pangocairo PRIVATE ${CAIRO_INCLUDE_DIR} ${FONT_INCLUDE_DIRS})


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()