aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRodrigo Hernandez Cordoba <kwizatz@aeongames.com>2019-07-10 12:48:17 -0600
committerPhil Christensen <philc@microsoft.com>2019-07-10 11:48:17 -0700
commite6e0fda6c9cde1442473d6c687502a19d5a181fd (patch)
tree523d811e1aa19c9adc8da0a52c862dafa46cf0d4
parent60bff8d54996d55ffc81995bcb63510686863c84 (diff)
downloadvcpkg-e6e0fda6c9cde1442473d6c687502a19d5a181fd.tar.gz
vcpkg-e6e0fda6c9cde1442473d6c687502a19d5a181fd.zip
[Librsvg] port (#6807)
* [librsvg] Initial librsvg port. This is version 2.40.20, the last C version of the library, moving forward would require rust compilation tools to be available in vcpkg. Should close issue #3865
-rwxr-xr-xports/librsvg/CMakeLists.txt154
-rwxr-xr-xports/librsvg/CONTROL4
-rw-r--r--ports/librsvg/config.h.linux89
-rwxr-xr-xports/librsvg/portfile.cmake32
4 files changed, 279 insertions, 0 deletions
diff --git a/ports/librsvg/CMakeLists.txt b/ports/librsvg/CMakeLists.txt
new file mode 100755
index 000000000..749d3132b
--- /dev/null
+++ b/ports/librsvg/CMakeLists.txt
@@ -0,0 +1,154 @@
+cmake_minimum_required(VERSION 3.11)
+project(librsvg C)
+
+find_package(unofficial-cairo CONFIG REQUIRED)
+find_package(unofficial-libcroco CONFIG REQUIRED)
+find_package(unofficial-glib CONFIG REQUIRED)
+find_package(LibXml2 REQUIRED)
+find_library(PANGO_LIB pango-1.0)
+find_library(PANGO_CAIRO_LIB pangocairo-1.0)
+if(CMAKE_SYSTEM_NAME MATCHES "Windows")
+ find_library(GDK_PIXBUF_LIB gdk_pixbuf-2.0)
+else()
+ find_library(GDK_PIXBUF_LIB gdk_pixbuf-2)
+endif()
+
+find_path(CAIRO_INCLUDE_DIR cairo/cairo.h)
+
+# Add include directories
+include_directories(${CAIRO_INCLUDE_DIR} ${GDK_PIXBUF_INCLUDE_DIR})
+
+set(LIBRSVG_SOURCES
+ librsvg-features.c
+ rsvg-css.c
+ rsvg-css.h
+ rsvg-compat.h
+ rsvg-defs.c
+ rsvg-defs.h
+ rsvg-image.c
+ rsvg-image.h
+ rsvg-io.c
+ rsvg-io.h
+ rsvg-paint-server.c
+ rsvg-paint-server.h
+ rsvg-path.c
+ rsvg-path.h
+ rsvg-private.h
+ rsvg-base-file-util.c
+ rsvg-filter.c
+ rsvg-filter.h
+ rsvg-marker.c
+ rsvg-marker.h
+ rsvg-mask.c
+ rsvg-mask.h
+ rsvg-shapes.c
+ rsvg-shapes.h
+ rsvg-structure.c
+ rsvg-structure.h
+ rsvg-styles.c
+ rsvg-styles.h
+ rsvg-text.c
+ rsvg-text.h
+ rsvg-cond.c
+ rsvg-base.c
+ librsvg-enum-types.c
+ rsvg-cairo-draw.c
+ rsvg-cairo-draw.h
+ rsvg-cairo-render.c
+ rsvg-cairo-render.h
+ rsvg-cairo-clip.h
+ rsvg-cairo-clip.c
+ rsvg.c
+ rsvg-gobject.c
+ rsvg-file-util.c
+ rsvg-size-callback.c
+ rsvg-size-callback.h
+ rsvg-xml.c
+ rsvg-xml.h
+ rsvg.h
+ rsvg-cairo.h
+ librsvg-features.h
+ librsvg-enum-types.h
+)
+
+set(PIXBUFLOADERSVG_SOURCES
+ gdk-pixbuf-loader/io-svg.c
+)
+
+if(WIN32)
+ configure_file(${CMAKE_CURRENT_SOURCE_DIR}/config.h.win32 ${CMAKE_CURRENT_SOURCE_DIR}/config.h COPYONLY)
+ add_custom_command(OUTPUT ${CMAKE_CURRENT_SOURCE_DIR}/rsvg.def
+ COMMAND echo "EXPORTS" > ${CMAKE_CURRENT_SOURCE_DIR}/rsvg.def
+ COMMAND ${CMAKE_C_COMPILER} /EP ${CMAKE_CURRENT_SOURCE_DIR}/rsvg.symbols >> ${CMAKE_CURRENT_SOURCE_DIR}/rsvg.def)
+ list(APPEND LIBRSVG_SOURCES rsvg.def)
+else()
+ configure_file(${CMAKE_CURRENT_SOURCE_DIR}/config.h.linux ${CMAKE_CURRENT_SOURCE_DIR}/config.h COPYONLY)
+ list(APPEND LIBRSVG_SOURCES rsvg.symbols)
+endif()
+
+set(CMAKE_DEBUG_POSTFIX "d")
+
+add_library(rsvg-2.40 ${LIBRSVG_SOURCES})
+add_library(pixbufloader-svg ${PIXBUFLOADERSVG_SOURCES})
+
+target_compile_definitions(rsvg-2.40 PRIVATE -DRSVG_COMPILATION -D_CRT_SECURE_NO_WARNINGS -DSRCDIR="${CMAKE_CURRENT_SOURCE_DIR}")
+
+target_include_directories(pixbufloader-svg PRIVATE ${CMAKE_CURRENT_SOURCE_DIR})
+target_compile_definitions(pixbufloader-svg PRIVATE
+ -DRSVG_COMPILATION
+ -D_CRT_SECURE_NO_WARNINGS
+ -DSRCDIR="${CMAKE_CURRENT_SOURCE_DIR}"
+ -DGDK_PIXBUF_ENABLE_BACKEND
+ -DG_LOG_DOMAIN="libpixbufloader-svg")
+
+target_link_libraries(rsvg-2.40 PRIVATE
+ unofficial::cairo::cairo
+ unofficial::libcroco::croco-0.6
+ unofficial::glib::gio
+ unofficial::glib::glib
+ unofficial::glib::gmodule
+ unofficial::glib::gobject
+ ${LIBXML2_LIBRARIES}
+ ${PANGO_LIB}
+ ${PANGO_CAIRO_LIB}
+ ${GDK_PIXBUF_LIB}
+)
+target_link_libraries(pixbufloader-svg PRIVATE
+ rsvg-2.40
+ unofficial::glib::glib
+ unofficial::glib::gobject
+ ${GDK_PIXBUF_LIB}
+)
+
+install(TARGETS rsvg-2.40 pixbufloader-svg
+ EXPORT librsvg-targets
+ RUNTIME DESTINATION bin
+ LIBRARY DESTINATION lib
+ ARCHIVE DESTINATION lib
+)
+
+install(
+ EXPORT librsvg-targets
+ NAMESPACE unofficial::librsvg::
+ FILE unofficial-librsvg-targets.cmake
+ DESTINATION share/unofficial-librsvg
+)
+
+install(FILES
+ rsvg.h
+ rsvg-cairo.h
+ librsvg-features.h
+ librsvg-enum-types.h
+ DESTINATION include/librsvg
+)
+
+file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/unofficial-librsvg-config.cmake "
+include(CMakeFindDependencyMacro)
+find_dependency(unofficial-cairo CONFIG)
+find_dependency(unofficial-libcroco CONFIG)
+find_dependency(gdk-pixbuf CONFIG)
+find_dependency(pango CONFIG)
+
+include(\${CMAKE_CURRENT_LIST_DIR}/unofficial-librsvg-targets.cmake)
+")
+install(FILES ${CMAKE_CURRENT_BINARY_DIR}/unofficial-librsvg-config.cmake DESTINATION share/unofficial-librsvg)
diff --git a/ports/librsvg/CONTROL b/ports/librsvg/CONTROL
new file mode 100755
index 000000000..3a250b8d4
--- /dev/null
+++ b/ports/librsvg/CONTROL
@@ -0,0 +1,4 @@
+Source: librsvg
+Version: 2.40.20
+Description: A small library to render Scalable Vector Graphics (SVG)
+Build-Depends: cairo, pango, gdk-pixbuf, libcroco \ No newline at end of file
diff --git a/ports/librsvg/config.h.linux b/ports/librsvg/config.h.linux
new file mode 100644
index 000000000..c3881b8c9
--- /dev/null
+++ b/ports/librsvg/config.h.linux
@@ -0,0 +1,89 @@
+/* config.h. Generated from config.h.in by configure. */
+/* config.h.in. Generated from configure.ac by autoheader. */
+
+/* Define if building universal (internal helper macro) */
+/* #undef AC_APPLE_UNIVERSAL_BUILD */
+
+/* Define to 1 if you have the <dlfcn.h> header file. */
+#define HAVE_DLFCN_H 1
+
+/* Define to 1 if you have the <inttypes.h> header file. */
+#define HAVE_INTTYPES_H 1
+
+/* Define if your <locale.h> file defines LC_MESSAGES. */
+#define HAVE_LC_MESSAGES 1
+
+/* Define to 1 if you have the <locale.h> header file. */
+#define HAVE_LOCALE_H 1
+
+/* Define to 1 if you have the <memory.h> header file. */
+#define HAVE_MEMORY_H 1
+
+/* Have the pangoft2 library */
+#define HAVE_PANGOFT2 1
+
+/* Define to 1 if you have the <stdint.h> header file. */
+#define HAVE_STDINT_H 1
+
+/* Define to 1 if you have the <stdlib.h> header file. */
+#define HAVE_STDLIB_H 1
+
+/* Define to 1 if you have the <strings.h> header file. */
+#define HAVE_STRINGS_H 1
+
+/* Define to 1 if you have the <string.h> header file. */
+#define HAVE_STRING_H 1
+
+/* Define to 1 if you have the `strtok_r' function. */
+#define HAVE_STRTOK_R 1
+
+/* Define to 1 if you have the <sys/stat.h> header file. */
+#define HAVE_SYS_STAT_H 1
+
+/* Define to 1 if you have the <sys/types.h> header file. */
+#define HAVE_SYS_TYPES_H 1
+
+/* Define to 1 if you have the <unistd.h> header file. */
+#define HAVE_UNISTD_H 1
+
+/* Define to the sub-directory where libtool stores uninstalled libraries. */
+#define LT_OBJDIR ".libs/"
+
+/* Name of package */
+#define PACKAGE "librsvg"
+
+/* Define to the address where bug reports for this package should be sent. */
+#define PACKAGE_BUGREPORT "https://bugzilla.gnome.org/enter_bug.cgi?product=librsvg"
+
+/* Define to the full name of this package. */
+#define PACKAGE_NAME "RSVG"
+
+/* Define to the full name and version of this package. */
+#define PACKAGE_STRING "RSVG 2.40.20"
+
+/* Define to the one symbol short name of this package. */
+#define PACKAGE_TARNAME "librsvg"
+
+/* Define to the home page for this package. */
+#define PACKAGE_URL ""
+
+/* Define to the version of this package. */
+#define PACKAGE_VERSION "2.40.20"
+
+/* Define to 1 if you have the ANSI C header files. */
+#define STDC_HEADERS 1
+
+/* Version number of package */
+#define VERSION "2.40.20"
+
+/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most
+ significant byte first (like Motorola and SPARC, unlike Intel). */
+#if defined AC_APPLE_UNIVERSAL_BUILD
+# if defined __BIG_ENDIAN__
+# define WORDS_BIGENDIAN 1
+# endif
+#else
+# ifndef WORDS_BIGENDIAN
+/* # undef WORDS_BIGENDIAN */
+# endif
+#endif
diff --git a/ports/librsvg/portfile.cmake b/ports/librsvg/portfile.cmake
new file mode 100755
index 000000000..c3765f0a3
--- /dev/null
+++ b/ports/librsvg/portfile.cmake
@@ -0,0 +1,32 @@
+include(vcpkg_common_functions)
+
+vcpkg_download_distfile(ARCHIVE
+ URLS "https://download.gnome.org/sources/librsvg/2.40/librsvg-2.40.20.tar.xz"
+ FILENAME "librsvg-2.40.20.tar.xz"
+ SHA512 cdd8224deb4c3786e29f48ed02c32ed9dff5cb15aba574a5ef845801ad3669cfcc3eedb9d359c22213dc7a29de24c363248825adad5877c40abf73b3688ff12f
+)
+
+vcpkg_extract_source_archive_ex(
+ OUT_SOURCE_PATH SOURCE_PATH
+ ARCHIVE ${ARCHIVE}
+)
+
+file(COPY ${CMAKE_CURRENT_LIST_DIR}/CMakeLists.txt DESTINATION ${SOURCE_PATH})
+configure_file(${CMAKE_CURRENT_LIST_DIR}/config.h.linux ${SOURCE_PATH}/config.h.linux COPYONLY)
+
+vcpkg_configure_cmake(
+ SOURCE_PATH ${SOURCE_PATH}
+ PREFER_NINJA # Disable this option if project cannot be built with Ninja
+)
+
+vcpkg_install_cmake()
+
+vcpkg_fixup_cmake_targets(CONFIG_PATH share/unofficial-librsvg TARGET_PATH share/unofficial-librsvg)
+file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/include)
+
+# Handle copyright
+file(INSTALL ${SOURCE_PATH}/COPYING DESTINATION ${CURRENT_PACKAGES_DIR}/share/librsvg RENAME copyright)
+
+vcpkg_copy_pdbs()
+
+vcpkg_test_cmake(PACKAGE_NAME unofficial-librsvg)