Skip to content

Commit

Permalink
[cairo,cairomm] add fontconfig and quartz feature, raise cairo version (
Browse files Browse the repository at this point in the history
  • Loading branch information
abique authored Apr 19, 2021
1 parent 3ec41f5 commit 4c830b1
Show file tree
Hide file tree
Showing 11 changed files with 211 additions and 36 deletions.
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"
]
},
"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

0 comments on commit 4c830b1

Please sign in to comment.