[cairomm] add version 1.15.3 (patch v3)

This commit is contained in:
Mikhail Paulyshka 2017-03-12 19:38:03 +03:00
parent 1c9873a0da
commit d6e246722c
4 changed files with 548 additions and 0 deletions

View File

@ -0,0 +1,489 @@
From 985be86e6073f6af5822eade61a0401cf2c87f0f Mon Sep 17 00:00:00 2001
From: Mikhail Paulyshka <me@mixaill.tk>
Date: Sun, 12 Mar 2017 17:33:46 +0300
Subject: [PATCH] CMake build system
---
CMakeLists.txt | 111 ++++++++++++++++++++++++++++++++
build/cmake/FindCairo.cmake | 131 ++++++++++++++++++++++++++++++++++++++
build/cmake/FindSigC++.cmake | 111 ++++++++++++++++++++++++++++++++
build/cmake/cairomm.rc.cmake | 71 +++++++++++++++++++++
build/cmake/cairommconfig.h.cmake | 13 ++++
5 files changed, 437 insertions(+)
create mode 100644 CMakeLists.txt
create mode 100644 build/cmake/FindCairo.cmake
create mode 100644 build/cmake/FindSigC++.cmake
create mode 100644 build/cmake/cairomm.rc.cmake
create mode 100644 build/cmake/cairommconfig.h.cmake
diff --git a/CMakeLists.txt b/CMakeLists.txt
new file mode 100644
index 0000000..b09ac49
--- /dev/null
+++ b/CMakeLists.txt
@@ -0,0 +1,111 @@
+project(cairomm)
+cmake_minimum_required(VERSION 3.4)
+
+set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/build/cmake")
+
+set(CMAKE_CXX_STANDARD 11)
+set(CMAKE_CXX_STANDARD_REQUIRED ON)
+
+set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON)
+
+#get cairomm version
+file (STRINGS "configure.ac" CONFIGURE_AC_INIT REGEX "AC_INIT\\(\\[cairomm\\], \\[.*\\].*" )
+string(REGEX REPLACE "AC_INIT\\(\\[.*\\], \\[([0-9]+\\.[0-9]+\\.[0-9]+)\\].*" "\\1" VERSION ${CONFIGURE_AC_INIT})
+string(REGEX REPLACE "([0-9]+)\\.[0-9]+\\.[0-9]+" "\\1" CAIROMM_MAJOR_VERSION ${VERSION})
+string(REGEX REPLACE "[0-9]+\\.([0-9]+)\\.[0-9]+" "\\1" CAIROMM_MINOR_VERSION ${VERSION})
+string(REGEX REPLACE "[0-9]+\\.[0-9]+\\.([0-9]+)" "\\1" CAIROMM_MICRO_VERSION ${VERSION})
+message(STATUS "Ciaromm version: ${CAIROMM_MAJOR_VERSION}.${CAIROMM_MINOR_VERSION}.${CAIROMM_MICRO_VERSION}")
+
+find_package(Cairo REQUIRED)
+find_package(SigC++ REQUIRED)
+
+#configure
+option(BUILD_SHARED_LIBS "Build the shared library" ON)
+
+option(CAIROMM_ENABLE_API_EXCEPTIONS "enable API exceptions" ON)
+if(CAIROMM_ENABLE_API_EXCEPTIONS)
+ set(CAIROMM_EXCEPTIONS_ENABLED ON)
+else()
+ set(CAIROMM_EXCEPTIONS_ENABLED OFF)
+endif()
+
+configure_file("build/cmake/cairommconfig.h.cmake" "cairommconfig.h")
+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
+ cairomm/fontoptions.cc
+ cairomm/matrix.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)
+
+set(cairomm_public_h
+ cairomm/cairomm.h
+ cairomm/context.h
+ cairomm/device.h
+ cairomm/enums.h
+ cairomm/exception.h
+ cairomm/fontface.h
+ cairomm/fontoptions.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)
+
+set(cairomm_private_h
+ cairomm/context_private.h
+ cairomm/private.h)
+
+set(cairomm_rc
+ ${CMAKE_BINARY_DIR}/cairomm.rc)
+
+add_library(cairomm-1.0 ${cairomm_cc} ${cairomm_rc})
+target_link_libraries(cairomm-1.0 ${CAIRO_LIBRARY} ${SIGC++_LIBRARY} )
+target_include_directories(cairomm-1.0 PRIVATE
+ ${CAIRO_INCLUDE_DIR}
+ ${SIGC++_INCLUDE_DIR}
+ ${CMAKE_BINARY_DIR}
+ ${CMAKE_SOURCE_DIR})
+
+install(
+ TARGETS cairomm-1.0
+ RUNTIME DESTINATION bin
+ ARCHIVE DESTINATION lib
+ LIBRARY DESTINATION lib)
+
+install(
+ FILES ${cairomm_public_h}
+ DESTINATION include/cairomm)
+
+install(
+ FILES ${CMAKE_BINARY_DIR}/cairommconfig.h
+ DESTINATION include)
diff --git a/build/cmake/FindCairo.cmake b/build/cmake/FindCairo.cmake
new file mode 100644
index 0000000..d9b8bf4
--- /dev/null
+++ b/build/cmake/FindCairo.cmake
@@ -0,0 +1,131 @@
+# Distributed under the OSI-approved BSD 3-Clause License. See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+#
+# revision: 2
+# See https://github.com/CMakePorts/CMakeFindPackages for updates
+#
+#.rst:
+# FindCairo
+# ---------
+#
+# Locate Cairo library
+#
+# This module defines
+#
+# ::
+# CAIRO_FOUND - system has the CAIRO library
+# CAIRO_INCLUDE_DIR - the CAIRO include directory
+# CAIRO_LIBRARIES - The libraries needed to use CAIRO
+# CAIRO_VERSION - This is set to $major.$minor.$revision (eg. 0.9.8)
+# CAIRO_VERSION_STRING - This is set to $major.$minor.$revision (eg. 0.9.8)
+#
+# Authors:
+# Copyright (c) Eric Wing
+# Copyright (c) Alexander Neundorf
+# Copyright (c) 2008 Joshua L. Blocher <verbalshadow at gmail dot com>
+# Copyright (c) 2012 Dmitry Baryshnikov <polimax at mail dot ru>
+# Copyright (c) 2013-2017 Mikhail Paulyshka <me at mixaill dot tk>
+#
+
+
+if (NOT WIN32)
+ find_package(PkgConfig)
+ if (PKG_CONFIG_FOUND)
+ pkg_check_modules(_CAIRO cairo)
+
+ SET(CAIRO_VERSION ${_CAIRO_VERSION})
+ STRING (REGEX REPLACE "([0-9]+).([0-9]+).([0-9]+)" "\\1" num "${CAIRO_VERSION}")
+ MATH (EXPR CAIRO_VERSION_MAJOR "${num}")
+ STRING (REGEX REPLACE "([0-9]+).([0-9]+).([0-9]+)" "\\2" num "${CAIRO_VERSION}")
+ MATH (EXPR CAIRO_VERSION_MINOR "${num}")
+ STRING (REGEX REPLACE "([0-9]+).([0-9]+).([0-9]+)" "\\3" num "${CAIRO_VERSION}")
+ MATH (EXPR CAIRO_VERSION_MICRO "${num}")
+ endif (PKG_CONFIG_FOUND)
+endif (NOT WIN32)
+
+set(_CAIRO_ROOT_HINTS_AND_PATHS
+ HINTS
+ $ENV{CAIRO}
+ $ENV{CAIRO_DIR}
+ ${CMAKE_FIND_ROOT_PATH}
+ ${CAIRO_ROOT_DIR}
+ PATHS
+ ${CMAKE_FIND_ROOT_PATH}
+ $ENV{CAIRO}/src
+ /usr
+ /usr/local
+)
+
+find_path(CAIRO_INCLUDE_DIR
+ NAMES
+ cairo.h
+ HINTS
+ ${_CAIRO_INCLUDEDIR}
+ ${_CAIRO_ROOT_HINTS_AND_PATHS}
+ PATH_SUFFIXES
+ include
+ "include/cairo"
+)
+
+if(NOT CAIRO_LIBRARY)
+ FIND_LIBRARY(CAIRO_LIBRARY_RELEASE
+ NAMES
+ cairo
+ cairo-static
+ HINTS
+ ${_CAIRO_LIBDIR}
+ ${_CAIRO_ROOT_HINTS_AND_PATHS}
+ PATH_SUFFIXES
+ "lib"
+ "local/lib"
+ )
+
+ FIND_LIBRARY(CAIRO_LIBRARY_DEBUG
+ NAMES
+ cairod
+ cairo-staticd
+ HINTS
+ ${_CAIRO_LIBDIR}
+ ${_CAIRO_ROOT_HINTS_AND_PATHS}
+ PATH_SUFFIXES
+ "lib"
+ "local/lib"
+ )
+
+ include(SelectLibraryConfigurations)
+ select_library_configurations(CAIRO)
+endif()
+set(CAIRO_LIBRARIES ${CAIRO_LIBRARY})
+
+if (NOT CAIRO_VERSION)
+ if (EXISTS "${CAIRO_INCLUDE_DIR}/cairo-version.h")
+ file(READ "${CAIRO_INCLUDE_DIR}/cairo-version.h" CAIRO_VERSION_CONTENT)
+
+ string(REGEX MATCH "#define +CAIRO_VERSION_MAJOR +([0-9]+)" _dummy "${CAIRO_VERSION_CONTENT}")
+ set(CAIRO_VERSION_MAJOR "${CMAKE_MATCH_1}")
+
+ string(REGEX MATCH "#define +CAIRO_VERSION_MINOR +([0-9]+)" _dummy "${CAIRO_VERSION_CONTENT}")
+ set(CAIRO_VERSION_MINOR "${CMAKE_MATCH_1}")
+
+ string(REGEX MATCH "#define +CAIRO_VERSION_MICRO +([0-9]+)" _dummy "${CAIRO_VERSION_CONTENT}")
+ set(CAIRO_VERSION_MICRO "${CMAKE_MATCH_1}")
+
+ set(CAIRO_VERSION "${CAIRO_VERSION_MAJOR}.${CAIRO_VERSION_MINOR}.${CAIRO_VERSION_MICRO}")
+ set(CAIRO_VERSION_STRING CAIRO_VERSION)
+ endif ()
+endif()
+
+include(FindPackageHandleStandardArgs)
+find_package_handle_standard_args(
+ CAIRO
+ REQUIRED_VARS
+ CAIRO_LIBRARIES
+ CAIRO_INCLUDE_DIR
+ VERSION_VAR
+ CAIRO_VERSION_STRING
+)
+
+MARK_AS_ADVANCED(
+ CAIRO_INCLUDE_DIR
+ CAIRO_LIBRARY
+ CAIRO_LIBRARIES)
diff --git a/build/cmake/FindSigC++.cmake b/build/cmake/FindSigC++.cmake
new file mode 100644
index 0000000..0f540ab
--- /dev/null
+++ b/build/cmake/FindSigC++.cmake
@@ -0,0 +1,111 @@
+# - Try to find SIGC++
+# Once done this will define
+#
+# SIGC++_ROOT_DIR - Set this variable to the root installation of SIGC++
+# SIGC++_FOUND - system has SIGC++
+# SIGC++_INCLUDE_DIRS - the SIGC++ include directory
+# SIGC++_LIBRARIES - Link these to use SIGC++
+#
+# Copyright (c) 2008 Joshua L. Blocher <verbalshadow at gmail dot com>
+# Copyright (c) 2012 Dmitry Baryshnikov <polimax at mail dot ru>
+# Copyright (c) 2013-2017 Mikhail Paulyshka <me at mixaill dot tk>
+#
+# Distributed under the OSI-approved BSD License
+#
+
+if (NOT WIN32)
+ find_package(PkgConfig)
+ if (PKG_CONFIG_FOUND)
+ pkg_check_modules(_SIGC++ sigc++-2.0)
+ SET(SIGC++_VERSION ${_SIGC++_VERSION})
+ endif (PKG_CONFIG_FOUND)
+endif (NOT WIN32)
+
+SET(_SIGC++_ROOT_HINTS
+ $ENV{SIGC++}
+ ${CMAKE_FIND_ROOT_PATH}
+ ${SIGC++_ROOT_DIR}
+)
+
+SET(_SIGC++_ROOT_PATHS
+ $ENV{SIGC++}/src
+ /usr
+ /usr/local
+)
+
+SET(_SIGC++_ROOT_HINTS_AND_PATHS
+ HINTS ${_SIGC++_ROOT_HINTS}
+ PATHS ${_SIGC++_ROOT_PATHS}
+)
+
+FIND_PATH(SIGC++_INCLUDE_DIR
+ NAMES
+ "sigc++/sigc++.h"
+ HINTS
+ ${_SIGC++_INCLUDEDIR}
+ ${_SIGC++_ROOT_HINTS_AND_PATHS}
+ PATH_SUFFIXES
+ include
+ "include/sigc++-2.0"
+)
+
+find_path(SIGC++_CONFIG_INCLUDE_DIR
+ NAMES
+ sigc++config.h
+ HINTS
+ ${_SIGC++_LIBDIR}
+ ${_SIGC++_INCLUDEDIR}
+ ${_SIGC++_ROOT_HINTS_AND_PATHS}
+ PATH_SUFFIXES
+ include
+ lib
+ "sigc++-2.0/include"
+ "lib/sigc++-2.0"
+ "lib/sigc++-2.0/include"
+)
+
+FIND_LIBRARY(SIGC++_LIBRARY
+ NAMES
+ sigc-2.0
+ HINTS
+ ${_SIGC++_LIBDIR}
+ ${_SIGC++_ROOT_HINTS_AND_PATHS}
+ PATH_SUFFIXES
+ "lib"
+ "local/lib"
+)
+
+SET(SIGC++_LIBRARIES
+ ${SIGC++_LIBRARY}
+)
+
+SET(SIGC++_INCLUDE_DIRS
+ ${SIGC++_INCLUDE_DIR}
+ ${SIGC++_CONFIG_INCLUDE_DIR}
+)
+
+if (NOT SIGC++_VERSION)
+ if (EXISTS "${SIGC++_CONFIG_INCLUDE_DIR}/sigc++config.h")
+ file(READ "${SIGC++_CONFIG_INCLUDE_DIR}/sigc++config.h" SIGC++_VERSION_CONTENT)
+
+ string(REGEX MATCH "#define +SIGCXX_MAJOR_VERSION +([0-9]+)" _dummy "${SIGC++_VERSION_CONTENT}")
+ set(SIGC++_VERSION_MAJOR "${CMAKE_MATCH_1}")
+
+ string(REGEX MATCH "#define +SIGCXX_MINOR_VERSION +([0-9]+)" _dummy "${SIGC++_VERSION_CONTENT}")
+ set(SIGC++_VERSION_MINOR "${CMAKE_MATCH_1}")
+
+ string(REGEX MATCH "#define +SIGCXX_MICRO_VERSION +([0-9]+)" _dummy "${SIGC++_VERSION_CONTENT}")
+ set(SIGC++_VERSION_MICRO "${CMAKE_MATCH_1}")
+
+ set(SIGC++_VERSION "${SIGC++_VERSION_MAJOR}.${SIGC++_VERSION_MINOR}.${SIGC++_VERSION_MICRO}")
+ endif (EXISTS "${SIGC++_CONFIG_INCLUDE_DIR}/sigc++config.h")
+endif(NOT SIGC++_VERSION)
+
+include(FindPackageHandleStandardArgs)
+find_package_handle_standard_args(SIGC++
+ REQUIRED_VARS SIGC++_LIBRARIES SIGC++_INCLUDE_DIRS
+ VERSION_VAR SIGC++_VERSION
+ FAIL_MESSAGE "Could NOT find SIGC++, try to set the path to SIGC++ root folder in the system variable SIGC++"
+)
+
+MARK_AS_ADVANCED(SIGC++_CONFIG_INCLUDE_DIR SIGC++_INCLUDE_DIR SIGC++_INCLUDE_DIRS SIGC++_LIBRARY SIGC++_LIBRARIES)
\ No newline at end of file
diff --git a/build/cmake/cairomm.rc.cmake b/build/cmake/cairomm.rc.cmake
new file mode 100644
index 0000000..d968c4d
--- /dev/null
+++ b/build/cmake/cairomm.rc.cmake
@@ -0,0 +1,71 @@
+
+#define APSTUDIO_READONLY_SYMBOLS
+
+#include <windows.h>
+
+#undef APSTUDIO_READONLY_SYMBOLS
+
+#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
+#ifdef _WIN32
+LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
+#pragma code_page(1252)
+#endif //_WIN32
+
+#ifdef APSTUDIO_INVOKED
+
+1 TEXTINCLUDE
+BEGIN
+ "resource.h\0"
+END
+
+2 TEXTINCLUDE
+BEGIN
+ "#include ""afxres.h""\r\n"
+ "\0"
+END
+
+3 TEXTINCLUDE
+BEGIN
+ "\r\n"
+ "\0"
+END
+
+#endif // APSTUDIO_INVOKED
+
+VS_VERSION_INFO VERSIONINFO
+ FILEVERSION @CAIROMM_MAJOR_VERSION@,@CAIROMM_MINOR_VERSION@,@CAIROMM_MICRO_VERSION@,1
+ PRODUCTVERSION @CAIROMM_MAJOR_VERSION@,@CAIROMM_MINOR_VERSION@,@CAIROMM_MICRO_VERSION@,1
+ FILEFLAGSMASK 0x17L
+#ifdef _DEBUG
+ FILEFLAGS 0x1L
+#else
+ FILEFLAGS 0x0L
+#endif
+ FILEOS 0x4L
+ FILETYPE 0x2L
+ FILESUBTYPE 0x0L
+BEGIN
+ BLOCK "StringFileInfo"
+ BEGIN
+ BLOCK "040904b0"
+ BEGIN
+ VALUE "CompanyName", "The cairomm development team (see AUTHORS)"
+ VALUE "FileDescription", "The official C++ wrapper for cairo"
+ VALUE "FileVersion", "@VERSION@"
+ VALUE "LegalCopyright", "Distribution is under the LGPL (see COPYING)"
+ VALUE "OriginalFilename", "cairomm-1.0"
+ VALUE "ProductName", "cairomm"
+ VALUE "ProductVersion", "@VERSION@"
+ END
+ END
+ BLOCK "VarFileInfo"
+ BEGIN
+ VALUE "Translation", 0x409, 1200
+ END
+END
+
+#endif // English (U.S.) resources
+
+#ifndef APSTUDIO_INVOKED
+
+#endif // not APSTUDIO_INVOKED
diff --git a/build/cmake/cairommconfig.h.cmake b/build/cmake/cairommconfig.h.cmake
new file mode 100644
index 0000000..526a70c
--- /dev/null
+++ b/build/cmake/cairommconfig.h.cmake
@@ -0,0 +1,13 @@
+/* This file is part of cairomm. */
+
+/* Defined when the --enable-api-exceptions configure argument was given */
+#cmakedefine CAIROMM_EXCEPTIONS_ENABLED 1
+
+/* Major version number of cairomm. */
+#cmakedefine CAIROMM_MAJOR_VERSION @CAIROMM_MAJOR_VERSION@
+
+/* Minor version number of cairomm. */
+#cmakedefine CAIROMM_MINOR_VERSION @CAIROMM_MINOR_VERSION@
+
+/* Micro version number of cairomm. */
+#cmakedefine CAIROMM_MICRO_VERSION @CAIROMM_MICRO_VERSION@
--
2.11.0.windows.1

View File

@ -0,0 +1,25 @@
From b769f250a39df110db2615c0e0d85b52f2ab6e77 Mon Sep 17 00:00:00 2001
From: Mikhail Paulyshka <me@mixaill.tk>
Date: Sun, 12 Mar 2017 17:57:03 +0300
Subject: [PATCH] Fix build
---
cairomm/win32_surface.h | 2 ++
1 file changed, 2 insertions(+)
diff --git a/cairomm/win32_surface.h b/cairomm/win32_surface.h
index 2e35b9a..c4454c4 100644
--- a/cairomm/win32_surface.h
+++ b/cairomm/win32_surface.h
@@ -84,6 +84,8 @@ public:
*/
static RefPtr<Win32Surface> create(HDC hdc);
+ static RefPtr<Win32Surface> create(Format format, int width, int height);
+
/** Creates a device-independent-bitmap surface not associated with any
* particular existing surface or device context. The created bitmap will be
* unititialized.
--
2.11.0.windows.1

4
ports/cairomm/CONTROL Normal file
View File

@ -0,0 +1,4 @@
Source: cairomm
Version: 1.15.3-1
Description: A C++ wrapper for the cairo graphics library
Build-Depends: cairo, libsigcpp

View File

@ -0,0 +1,30 @@
include(vcpkg_common_functions)
set(CAIROMM_VERSION 1.15.3)
set(CAIROMM_HASH a2c28786dbd167179561d8f580eeb11d10634a36dfdb1adeefc0279acf83ee906f01f264cb924845fc4ab98da1afac71e1ead742f283c1a32368ca9af28e464a)
set(SOURCE_PATH ${CURRENT_BUILDTREES_DIR}/src/cairomm-${CAIROMM_VERSION})
vcpkg_download_distfile(ARCHIVE
URLS "https://www.cairographics.org/releases/cairomm-${CAIROMM_VERSION}.tar.gz"
FILENAME "cairomm-${CAIROMM_VERSION}.tar.gz"
SHA512 ${CAIROMM_HASH}
)
vcpkg_extract_source_archive(${ARCHIVE})
vcpkg_apply_patches(
SOURCE_PATH ${SOURCE_PATH}
PATCHES "${CURRENT_PORT_DIR}/0001-cmake-build-system.patch"
"${CURRENT_PORT_DIR}/0002-fix-build.patch")
vcpkg_configure_cmake(
SOURCE_PATH ${SOURCE_PATH}
PREFER_NINJA
)
vcpkg_install_cmake()
vcpkg_copy_pdbs()
file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/include)
file(COPY ${SOURCE_PATH}/COPYING DESTINATION ${CURRENT_PACKAGES_DIR}/share/cairomm)
file(RENAME ${CURRENT_PACKAGES_DIR}/share/cairomm/COPYING ${CURRENT_PACKAGES_DIR}/share/cairomm/copyright)