Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[cairo,cairomm] add fontconfig and quartz feature and update cairo version #16825

Merged
merged 1 commit into from
Apr 19, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
56 changes: 48 additions & 8 deletions ports/cairo/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ project(cairo C)
# Add include directories
include_directories(".")
if(WIN32)
include_directories("./win32")
include_directories("./win32")
endif()

set(CAIRO_HEADERS
Expand All @@ -15,7 +15,7 @@ set(CAIRO_HEADERS
cairo-ps.h
cairo-script.h
cairo-svg.h
../cairo-version.h
cairo-version.h
cairo-win32.h
../util/cairo-gobject/cairo-gobject.h
cairo-ft.h
Expand All @@ -25,6 +25,11 @@ set(CAIRO_X11_HEADERS
cairo-xlib.h
)

set(CAIRO_QUARTZ_HEADERS
cairo-quartz.h
cairo-quartz-image.h
)

file(GLOB SOURCES
"cairo-analysis-surface.c"
"cairo-arc.c"
Expand Down Expand Up @@ -163,6 +168,15 @@ if(WITH_FREETYPE)
list(APPEND SOURCES ${_FREETYPE_SOURCES})
endif()

if(WITH_QUARTZ)
file(GLOB _QUARTZ_SOURCES
"cairo-quartz-font.c"
"cairo-quartz-image-surface.c"
"cairo-quartz-surface.c"
)
list(APPEND SOURCES ${_QUARTZ_SOURCES})
endif()

# win32
file(GLOB PLATFORM_SOURCES_WIN32
"win32/cairo-win32-debug.c"
Expand All @@ -176,7 +190,7 @@ file(GLOB PLATFORM_SOURCES_WIN32
)

if(WIN32)
list(APPEND SOURCES ${PLATFORM_SOURCES_WIN32})
list(APPEND SOURCES ${PLATFORM_SOURCES_WIN32})
endif()

set(CMAKE_DEBUG_POSTFIX "d")
Expand All @@ -186,8 +200,14 @@ find_package(ZLIB REQUIRED)
find_package(PNG REQUIRED)
if(WITH_FREETYPE)
find_package(Freetype REQUIRED)
endif()
if(WITH_FONTCONFIG)
find_package(Fontconfig REQUIRED)
endif()
if(WITH_QUARTZ)
find_library(CF CoreFoundation)
find_library(CG CoreGraphics)
endif()
find_package(unofficial-pixman CONFIG REQUIRED)

# Cairo needs to be told which features of FreeType are availible
Expand Down Expand Up @@ -219,14 +239,23 @@ if (WITH_X11)
endif()
if(WITH_FREETYPE)
target_include_directories(cairo PUBLIC ${FREETYPE_INCLUDE_DIRS})
target_link_libraries(cairo PRIVATE Freetype::Freetype Fontconfig::Fontconfig)
target_link_libraries(cairo PRIVATE Freetype::Freetype)
endif()

if(WITH_FONTCONFIG)
target_link_libraries(cairo PRIVATE Fontconfig::Fontconfig)
endif()

target_link_libraries(cairo PRIVATE ZLIB::ZLIB PNG::PNG unofficial::pixman::pixman-1)

if(WIN32)
target_link_libraries(cairo PRIVATE gdi32 msimg32 user32)
endif()

if(WITH_QUARTZ)
target_link_libraries(cairo PRIVATE ${CF} ${CG})
endif()

# GObject support module

set(CAIRO_GOBJECT_SOURCES
Expand All @@ -248,9 +277,9 @@ if(WITH_GOBJECT)
PROPERTIES COMPILE_DEFINITIONS "cairo_public=__attribute__((visibility(\"default\")))")
endif()
endif()
find_package(unofficial-glib CONFIG REQUIRED)
add_library(cairo-gobject ${CAIRO_GOBJECT_SOURCES})

find_package(unofficial-glib CONFIG REQUIRED)
add_library(cairo-gobject ${CAIRO_GOBJECT_SOURCES})
target_link_libraries(cairo-gobject PRIVATE cairo unofficial::glib::gobject unofficial::glib::glib)
endif()

Expand All @@ -274,6 +303,11 @@ endif()
install(FILES ${CAIRO_HEADERS} DESTINATION include)
install(FILES ${CAIRO_HEADERS} DESTINATION include/cairo)

if(WITH_QUARTZ)
install(FILES ${CAIRO_QUARTZ_HEADERS} DESTINATION include)
install(FILES ${CAIRO_QUARTZ_HEADERS} DESTINATION include/cairo)
endif()

if (WITH_X11)
install(FILES ${CAIRO_X11_HEADERS} DESTINATION include)
install(FILES ${CAIRO_X11_HEADERS} DESTINATION include/cairo)
Expand All @@ -292,7 +326,7 @@ if(WITH_GOBJECT)
RUNTIME DESTINATION bin
LIBRARY DESTINATION lib
ARCHIVE DESTINATION lib
)
)
endif()

install(
Expand All @@ -308,12 +342,18 @@ find_dependency(ZLIB)
find_dependency(PNG)
if(${WITH_FREETYPE})
find_dependency(Freetype)
endif()
if(${WITH_FONTCONFIG})
find_dependency(Fontconfig)
endif()
find_dependency(unofficial-pixman CONFIG)
if(${WITH_GOBJECT})
find_dependency(unofficial-glib CONFIG)
endif()
if(${WITH_QUARTZ})
find_library(CF CoreFoundation)
find_library(CG CoreGraphics)
endif()

include(\${CMAKE_CURRENT_LIST_DIR}/unofficial-cairo-targets.cmake)
")
Expand Down
5 changes: 5 additions & 0 deletions ports/cairo/cairo-features.h.in
Original file line number Diff line number Diff line change
Expand Up @@ -35,4 +35,9 @@
/* Require FontConfig */
#cmakedefine01 CAIRO_HAS_FC_FONT

// apple quartz support
#cmakedefine01 CAIRO_HAS_QUARTZ_FONT
#cmakedefine01 CAIRO_HAS_QUARTZ_IMAGE_SURFACE
#cmakedefine01 CAIRO_HAS_QUARTZ_SURFACE

#endif
20 changes: 17 additions & 3 deletions ports/cairo/portfile.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,19 @@ file(COPY ${CMAKE_CURRENT_LIST_DIR}/CMakeLists.txt DESTINATION ${SOURCE_PATH}/sr

if("freetype" IN_LIST FEATURES)
set(CAIRO_HAS_FT_FONT TRUE)
endif()

if("fontconfig" IN_LIST FEATURES)
set(CAIRO_HAS_FC_FONT TRUE)
endif()

if("quartz" IN_LIST FEATURES)
set(CAIRO_HAS_QUARTZ TRUE)
set(CAIRO_HAS_QUARTZ_FONT TRUE)
set(CAIRO_HAS_QUARTZ_IMAGE_SURFACE TRUE)
set(CAIRO_HAS_QUARTZ_SURFACE TRUE)
endif()

configure_file("${CMAKE_CURRENT_LIST_DIR}/cairo-features.h.in" "${SOURCE_PATH}/src/cairo-features.h")

if ("x11" IN_LIST FEATURES)
Expand All @@ -36,9 +47,12 @@ if("gobject" IN_LIST FEATURES)
endif()

vcpkg_check_features(OUT_FEATURE_OPTIONS FEATURE_OPTIONS
x11 WITH_X11
gobject WITH_GOBJECT
freetype WITH_FREETYPE
FEATURES
x11 WITH_X11
gobject WITH_GOBJECT
freetype WITH_FREETYPE
fontconfig WITH_FONTCONFIG
quartz WITH_QUARTZ
)

vcpkg_configure_cmake(
Expand Down
14 changes: 12 additions & 2 deletions ports/cairo/vcpkg.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
{
"$schema": "https://raw.githubusercontent.com/microsoft/vcpkg/master/scripts/vcpkg.schema.json",
"name": "cairo",
"version-string": "1.16.0",
"port-version": 9,
"port-version": 10,
"description": "Cairo is a 2D graphics library with support for multiple output devices. Currently supported output targets include the X Window System (via both Xlib and XCB), Quartz, Win32, image buffers, PostScript, PDF, and SVG file output. Experimental backends include OpenGL, BeOS, OS/2, and DirectFB.",
"homepage": "https://cairographics.org",
"dependencies": [
Expand All @@ -10,13 +11,19 @@
"zlib"
],
"default-features": [
"fontconfig",
"freetype"
],
"features": {
"fontconfig": {
"description": "build with fontconfig",
"dependencies": [
"fontconfig"
abique marked this conversation as resolved.
Show resolved Hide resolved
]
},
abique marked this conversation as resolved.
Show resolved Hide resolved
"freetype": {
"description": "use the freetype font backend",
"dependencies": [
"fontconfig",
"freetype"
]
},
Expand All @@ -26,6 +33,9 @@
"glib"
]
},
"quartz": {
"description": "build with quartz support"
},
"x11": {
"description": "build with x11 support"
}
Expand Down
45 changes: 30 additions & 15 deletions ports/cairomm/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -34,9 +34,6 @@ configure_file("build/cmake/cairomm.rc.cmake" "cairomm.rc" @ONLY)
#build
set(cairomm_cc
cairomm/context.cc
cairomm/context_surface_quartz.cc
cairomm/context_surface_win32.cc
cairomm/context_surface_xlib.cc
cairomm/device.cc
cairomm/exception.cc
cairomm/fontface.cc
Expand All @@ -45,16 +42,11 @@ set(cairomm_cc
cairomm/path.cc
cairomm/pattern.cc
cairomm/private.cc
cairomm/quartz_font.cc
cairomm/quartz_surface.cc
cairomm/region.cc
cairomm/scaledfont.cc
cairomm/script.cc
cairomm/script_surface.cc
cairomm/surface.cc
cairomm/win32_font.cc
cairomm/win32_surface.cc
cairomm/xlib_surface.cc)
cairomm/surface.cc)

set(cairomm_public_h
cairomm/cairomm.h
Expand All @@ -67,18 +59,13 @@ set(cairomm_public_h
cairomm/matrix.h
cairomm/path.h
cairomm/pattern.h
cairomm/quartz_font.h
cairomm/quartz_surface.h
cairomm/refptr.h
cairomm/region.h
cairomm/scaledfont.h
cairomm/script.h
cairomm/script_surface.h
cairomm/surface.h
cairomm/types.h
cairomm/win32_font.h
cairomm/win32_surface.h
cairomm/xlib_surface.h)
cairomm/types.h)

set(cairomm_private_h
cairomm/context_private.h
Expand All @@ -87,6 +74,34 @@ set(cairomm_private_h
set(cairomm_rc
${CMAKE_BINARY_DIR}/cairomm.rc)

if(WITH_QUARTZ)
list(APPEND cairomm_cc
cairomm/context_surface_quartz.cc
cairomm/quartz_font.cc
cairomm/quartz_surface.cc)
list(APPEND cairomm_public_h
cairomm/xlib_surface.h)
endif()

if(WITH_X11)
list(APPEND cairomm_cc
cairomm/xlib_surface.cc
cairomm/context_surface_xlib.cc)
list(APPEND cairomm_public_h
cairomm/quartz_font.h
cairomm/quartz_surface.h)
endif()

if(WIN32)
list(APPEND cairomm_cc
cairomm/context_surface_win32.cc
cairomm/win32_font.cc
cairomm/win32_surface.cc)
list(APPEND cairomm_public_h
cairomm/win32_font.h
cairomm/win32_surface.h)
endif()

add_library(cairomm-1.0 ${cairomm_cc} ${cairomm_rc})
target_link_libraries(cairomm-1.0 ${CAIRO_LIBRARY} ${SIGC++_LIBRARY} Freetype::Freetype)
target_include_directories(cairomm-1.0 PRIVATE
Expand Down
6 changes: 0 additions & 6 deletions ports/cairomm/CONTROL

This file was deleted.

9 changes: 9 additions & 0 deletions ports/cairomm/portfile.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,15 @@ vcpkg_extract_source_archive_ex(
file(COPY ${CMAKE_CURRENT_LIST_DIR}/CMakeLists.txt DESTINATION ${SOURCE_PATH})
file(COPY ${CMAKE_CURRENT_LIST_DIR}/cmake DESTINATION ${SOURCE_PATH}/build)

vcpkg_check_features(OUT_FEATURE_OPTIONS FEATURE_OPTIONS
FEATURES
x11 WITH_X11
gobject WITH_GOBJECT
freetype WITH_FREETYPE
fontconfig WITH_FONTCONFIG
quartz WITH_QUARTZ
)

vcpkg_configure_cmake(
SOURCE_PATH ${SOURCE_PATH}
PREFER_NINJA
Expand Down
Loading