aboutsummaryrefslogtreecommitdiff
path: root/vcpkg/ports/librsvg/CMakeLists.txt
diff options
context:
space:
mode:
Diffstat (limited to 'vcpkg/ports/librsvg/CMakeLists.txt')
-rw-r--r--vcpkg/ports/librsvg/CMakeLists.txt199
1 files changed, 199 insertions, 0 deletions
diff --git a/vcpkg/ports/librsvg/CMakeLists.txt b/vcpkg/ports/librsvg/CMakeLists.txt
new file mode 100644
index 0000000..630dc44
--- /dev/null
+++ b/vcpkg/ports/librsvg/CMakeLists.txt
@@ -0,0 +1,199 @@
+cmake_minimum_required(VERSION 3.11)
+project(librsvg C)
+
+find_package(PkgConfig REQUIRED)
+pkg_check_modules(LIBCROCO libcroco-0.6 IMPORTED_TARGET)
+pkg_check_modules(GLIB2 glib-2.0 gobject-2.0 gmodule-2.0 gio-2.0 IMPORTED_TARGET)
+pkg_check_modules(CAIRO cairo IMPORTED_TARGET)
+pkg_check_modules(GDK_PIXBUF gdk-pixbuf-2.0 IMPORTED_TARGET)
+pkg_check_modules(PANGO pango pangocairo IMPORTED_TARGET)
+find_package(LibXml2 REQUIRED)
+
+if(CMAKE_SYSTEM_NAME MATCHES "Windows")
+elseif(CMAKE_SYSTEM_NAME MATCHES "Linux")
+else()
+ pkg_check_modules(PANGO2 pangoft2 pangofc IMPORTED_TARGET)
+ set(PANGO_FT2_LIB PkgConfig::PANGO2)
+endif()
+
+set(RSVG_API_MAJOR_VERSION 2)
+set(RSVG_API_VERSION "2.0")
+Set(VERSION "2.40.20")
+set(LIBRSVG_TARGET "rsvg-${RSVG_API_MAJOR_VERSION}")
+
+Set(prefix "${CMAKE_INSTALL_PREFIX}")
+Set(exec_prefix "\${prefix}")
+Set(libdir "\${prefix}/lib")
+Set(includedir "\${prefix}/include")
+
+# Public required modules (cf. headers and librsvg.pc)
+set(librsvg_pc_requires glib-2.0 gio-2.0 gdk-pixbuf-2.0 cairo)
+# Other required modules from configure.ac
+set(librsvg_pc_requires_private
+ libxml-2.0
+ pangocairo
+ pangoft2
+ cairo-png
+ libcroco-0.6
+ gthread-2.0
+ gmodule-2.0
+ gobject-2.0
+ gio-unix-2.0
+ fontconfig
+)
+if(WIN32)
+ string(REPLACE "gio-unix" "gio-windows" librsvg_pc_requires_private "${librsvg_pc_requires_private}")
+endif()
+
+find_package(PkgConfig REQUIRED)
+pkg_check_modules(LIBRSVG_LINK_PUBLIC ${librsvg_pc_requires} IMPORTED_TARGET REQUIRED)
+pkg_check_modules(LIBRSVG_LINK_PRIVATE ${librsvg_pc_requires_private} IMPORTED_TARGET REQUIRED)
+
+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
+)
+
+if(WIN32)
+ configure_file("${CMAKE_CURRENT_SOURCE_DIR}/config.h.win32" "${CMAKE_CURRENT_BINARY_DIR}/config.h" COPYONLY)
+ file(READ "${CMAKE_CURRENT_SOURCE_DIR}/rsvg.symbols" rsvg_symbols)
+ string(REGEX REPLACE "/[*][^*]*[*]/" "" rsvg_symbols "${rsvg_symbols}")
+ file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/rsvg.def" "EXPORTS\n${rsvg_symbols}")
+ list(APPEND LIBRSVG_SOURCES "${CMAKE_CURRENT_BINARY_DIR}/rsvg.def")
+else()
+ configure_file("${CMAKE_CURRENT_SOURCE_DIR}/config.h.linux" "${CMAKE_CURRENT_BINARY_DIR}/config.h" COPYONLY)
+ list(APPEND LIBRSVG_SOURCES rsvg.symbols)
+endif()
+
+add_library(${LIBRSVG_TARGET} ${LIBRSVG_SOURCES})
+target_compile_definitions(${LIBRSVG_TARGET} PRIVATE
+ -DRSVG_COMPILATION
+ -D_CRT_SECURE_NO_WARNINGS
+ -DSRCDIR="${CMAKE_CURRENT_SOURCE_DIR}"
+ -DGDK_PIXBUF_ENABLE_BACKEND
+ -DG_LOG_DOMAIN="libpixbufloader-svg"
+ -DSRCDIR=""
+ $<$<BOOL:${MINGW}>:HAVE_STRTOK_R>
+)
+
+target_link_libraries(${LIBRSVG_TARGET} PRIVATE
+ PkgConfig::GLIB2
+ ${LIBXML2_LIBRARIES}
+ PkgConfig::PANGO
+ PkgConfig::GDK_PIXBUF
+ ${PANGO_FT2_LIB}
+ PkgConfig::LIBCROCO
+)
+
+target_include_directories(${LIBRSVG_TARGET}
+ PRIVATE
+ "${CMAKE_CURRENT_BINARY_DIR}"
+ PUBLIC
+ "$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>"
+ "$<INSTALL_INTERFACE:include/librsvg-${RSVG_API_VERSION}>"
+)
+target_link_libraries(${LIBRSVG_TARGET}
+ PUBLIC
+ PkgConfig::LIBRSVG_LINK_PUBLIC
+ PRIVATE
+ PkgConfig::LIBRSVG_LINK_PRIVATE
+)
+install(TARGETS ${LIBRSVG_TARGET}
+ RUNTIME DESTINATION bin
+ LIBRARY DESTINATION lib
+ ARCHIVE DESTINATION lib
+)
+install(
+ FILES
+ rsvg.h
+ rsvg-cairo.h
+ librsvg-features.h
+ librsvg-enum-types.h
+ DESTINATION include/librsvg-${RSVG_API_VERSION}/librsvg
+)
+
+set(gdk_pixbuf_pc_requires_private gdk-pixbuf-2.0)
+pkg_check_modules(GDK_PIXBUF ${gdk_pixbuf_pc_requires_private} IMPORTED_TARGET REQUIRED)
+pkg_get_variable(GDK_PIXBUF_MODULEDIR ${gdk_pixbuf_pc_requires_private} gdk_pixbuf_moduledir)
+
+set(PIXBUFLOADERSVG_SOURCES
+ gdk-pixbuf-loader/io-svg.c
+)
+
+add_library(pixbufloader-svg MODULE ${PIXBUFLOADERSVG_SOURCES})
+target_include_directories(pixbufloader-svg
+ PRIVATE
+ "${CMAKE_CURRENT_BINARY_DIR}"
+ "${CMAKE_CURRENT_SOURCE_DIR}"
+)
+target_compile_definitions(pixbufloader-svg PRIVATE
+ -DRSVG_COMPILATION
+ -D_CRT_SECURE_NO_WARNINGS
+ -DSRCDIR=""
+ -DGDK_PIXBUF_ENABLE_BACKEND
+ -DG_LOG_DOMAIN="libpixbufloader-svg"
+)
+target_link_libraries(pixbufloader-svg
+ PRIVATE
+ ${LIBRSVG_TARGET}
+ PkgConfig::GDK_PIXBUF
+)
+install(TARGETS pixbufloader-svg
+ RUNTIME DESTINATION "${GDK_PIXBUF_MODULEDIR}"
+ LIBRARY DESTINATION "${GDK_PIXBUF_MODULEDIR}"
+)
+
+configure_file("${CMAKE_CURRENT_SOURCE_DIR}/librsvg.pc.in" "${CMAKE_CURRENT_BINARY_DIR}/librsvg.pc" @ONLY)
+file(READ "${CMAKE_CURRENT_BINARY_DIR}/librsvg.pc" librsvg_pc)
+list(JOIN librsvg_pc_requires_private " " requires_private)
+string(REPLACE "Requires.private:" "Requires.private: ${requires_private}" librsvg_pc "${librsvg_pc}")
+file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/librsvg.pc" "${librsvg_pc}")
+install(FILES "${CMAKE_CURRENT_BINARY_DIR}/librsvg.pc" DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig" RENAME "librsvg-${RSVG_API_VERSION}.pc")