aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ports/ebml/CMakeLists.txt132
-rw-r--r--ports/ebml/CONTROL3
-rw-r--r--ports/ebml/EbmlConfig.cmake1
-rw-r--r--ports/ebml/portfile.cmake47
4 files changed, 183 insertions, 0 deletions
diff --git a/ports/ebml/CMakeLists.txt b/ports/ebml/CMakeLists.txt
new file mode 100644
index 000000000..7d99a13a4
--- /dev/null
+++ b/ports/ebml/CMakeLists.txt
@@ -0,0 +1,132 @@
+cmake_minimum_required(VERSION 3.1.2)
+
+project(ebml VERSION 1.3.5)
+
+option(DISABLE_PKGCONFIG "Disable PkgConfig module generation" OFF)
+option(DISABLE_CMAKE_CONFIG "Disable CMake package config module generation" OFF)
+
+include(GNUInstallDirs)
+
+set(libebml_SOURCES
+ src/Debug.cpp
+ src/EbmlBinary.cpp
+ src/EbmlContexts.cpp
+ src/EbmlCrc32.cpp
+ src/EbmlDate.cpp
+ src/EbmlDummy.cpp
+ src/EbmlElement.cpp
+ src/EbmlFloat.cpp
+ src/EbmlHead.cpp
+ src/EbmlMaster.cpp
+ src/EbmlSInteger.cpp
+ src/EbmlStream.cpp
+ src/EbmlString.cpp
+ src/EbmlSubHead.cpp
+ src/EbmlUInteger.cpp
+ src/EbmlUnicodeString.cpp
+ src/EbmlVersion.cpp
+ src/EbmlVoid.cpp
+ src/IOCallback.cpp
+ src/MemIOCallback.cpp
+ src/MemReadIOCallback.cpp
+ src/SafeReadIOCallback.cpp
+ src/StdIOCallback.cpp)
+
+set(libebml_PUBLIC_HEADERS
+ ebml/Debug.h
+ ebml/EbmlBinary.h
+ ebml/EbmlConfig.h
+ ebml/EbmlContexts.h
+ ebml/EbmlCrc32.h
+ ebml/EbmlDate.h
+ ebml/EbmlDummy.h
+ ebml/EbmlElement.h
+ ebml/EbmlEndian.h
+ ebml/EbmlFloat.h
+ ebml/EbmlHead.h
+ ebml/EbmlId.h
+ ebml/EbmlMaster.h
+ ebml/EbmlSInteger.h
+ ebml/EbmlStream.h
+ ebml/EbmlString.h
+ ebml/EbmlSubHead.h
+ ebml/EbmlTypes.h
+ ebml/EbmlUInteger.h
+ ebml/EbmlUnicodeString.h
+ ebml/EbmlVersion.h
+ ebml/EbmlVoid.h
+ ebml/IOCallback.h
+ ebml/MemIOCallback.h
+ ebml/MemReadIOCallback.h
+ ebml/SafeReadIOCallback.h
+ ebml/StdIOCallback.h)
+if(WIN32)
+ list(APPEND libebml_SOURCES
+ src/platform/win32/WinIOCallback.cpp)
+ list(APPEND libebml_PUBLIC_HEADERS
+ src/platform/win32/WinIOCallback.h)
+endif()
+
+set(libebml_C_PUBLIC_HEADERS ebml/c/libebml_t.h)
+
+add_library(ebml ${libebml_SOURCES} ${libebml_PUBLIC_HEADERS} ${libebml_C_PUBLIC_HEADERS})
+if(WIN32)
+ include(CheckIncludeFile)
+ check_include_file(winapifamily.h HAVE_WINAPIFAMILY_H)
+ if(HAVE_WINAPIFAMILY_H)
+ target_compile_definitions(ebml PUBLIC HAVE_WINAPIFAMILY_H)
+ endif()
+endif()
+set_target_properties(ebml PROPERTIES
+ VERSION 4.0.0
+ SOVERSION 4)
+target_include_directories(ebml PUBLIC
+ $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
+ $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>)
+if(MSVC)
+ target_compile_definitions(ebml PRIVATE _CRT_SECURE_NO_WARNINGS)
+endif()
+if(BUILD_SHARED_LIBS)
+ set_target_properties(ebml
+ PROPERTIES
+ DEFINE_SYMBOL "EBML_DLL_EXPORT"
+ C_VISIBILITY_PRESET hidden
+ VISIBILITY_INLINES_HIDDEN 1)
+ target_compile_definitions(ebml
+ PUBLIC EBML_DLL
+ PRIVATE EBML_DLL_EXPORT)
+endif()
+
+install(TARGETS ebml
+ EXPORT EbmlTargets
+ RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
+ ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
+ LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
+
+install(FILES ${libebml_PUBLIC_HEADERS} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/ebml)
+install(FILES ${libebml_C_PUBLIC_HEADERS} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/ebml/c)
+
+if(NOT DISABLE_PKGCONFIG)
+ set(prefix ${CMAKE_INSTALL_PREFIX})
+ set(exec_prefix "\$\{prefix\}")
+ set(libdir "\$\{prefix\}/${CMAKE_INSTALL_LIBDIR}")
+ set(includedir "\$\{prefix\}/${CMAKE_INSTALL_INCLUDEDIR}")
+ set(PACKAGE_VERSION ${PROJECT_VERSION})
+ configure_file(libebml.pc.in libebml.pc @ONLY)
+ install(FILES ${CMAKE_CURRENT_BINARY_DIR}/libebml.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig)
+endif()
+
+if(NOT DISABLE_CMAKE_CONFIG)
+ if(WIN32)
+ set(CMAKE_INSTALL_PACKAGEDIR cmake)
+ else()
+ set(CMAKE_INSTALL_PACKAGEDIR ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME})
+ endif()
+ include(CMakePackageConfigHelpers)
+ write_basic_package_version_file(EbmlConfigVersion.cmake COMPATIBILITY SameMajorVersion)
+ install(EXPORT EbmlTargets DESTINATION ${CMAKE_INSTALL_PACKAGEDIR})
+ install(FILES
+ ${CMAKE_CURRENT_SOURCE_DIR}/EbmlConfig.cmake
+ ${CMAKE_CURRENT_BINARY_DIR}/EbmlConfigVersion.cmake
+ DESTINATION ${CMAKE_INSTALL_PACKAGEDIR})
+endif()
diff --git a/ports/ebml/CONTROL b/ports/ebml/CONTROL
new file mode 100644
index 000000000..6bcc2c5e3
--- /dev/null
+++ b/ports/ebml/CONTROL
@@ -0,0 +1,3 @@
+Source: ebml
+Version: 1.3.5
+Description: a C++ libary to parse EBML files
diff --git a/ports/ebml/EbmlConfig.cmake b/ports/ebml/EbmlConfig.cmake
new file mode 100644
index 000000000..5752fa632
--- /dev/null
+++ b/ports/ebml/EbmlConfig.cmake
@@ -0,0 +1 @@
+include(${CMAKE_CURRENT_LIST_DIR}/EbmlTargets.cmake)
diff --git a/ports/ebml/portfile.cmake b/ports/ebml/portfile.cmake
new file mode 100644
index 000000000..dd58484c3
--- /dev/null
+++ b/ports/ebml/portfile.cmake
@@ -0,0 +1,47 @@
+# Common Ambient Variables:
+# CURRENT_BUILDTREES_DIR = ${VCPKG_ROOT_DIR}\buildtrees\${PORT}
+# CURRENT_PACKAGES_DIR = ${VCPKG_ROOT_DIR}\packages\${PORT}_${TARGET_TRIPLET}
+# CURRENT_PORT_DIR = ${VCPKG_ROOT_DIR}\ports\${PORT}
+# PORT = current port name (zlib, etc)
+# TARGET_TRIPLET = current triplet (x86-windows, x64-windows-static, etc)
+# VCPKG_CRT_LINKAGE = C runtime linkage type (static, dynamic)
+# VCPKG_LIBRARY_LINKAGE = target library linkage type (static, dynamic)
+# VCPKG_ROOT_DIR = <C:\path\to\current\vcpkg>
+# VCPKG_TARGET_ARCHITECTURE = target architecture (x64, x86, arm)
+#
+
+include(vcpkg_common_functions)
+
+if(VCPKG_CMAKE_SYSTEM_NAME STREQUAL "WindowsStore")
+ message(FATAL_ERROR "${PORT} does not currently support UWP")
+endif()
+
+
+vcpkg_from_github(
+ OUT_SOURCE_PATH SOURCE_PATH
+ REPO Matroska-Org/libebml
+ REF release-1.3.5
+ SHA512 ccfa58aebb8685b2dbbab7038ab7f7e0788dba2fc391abafad5a0e05c71c8f02c7e1e3521e1c59076057f9643737c2d96a4fffdeb7991214234f2db80c78254b
+ HEAD_REF master
+)
+
+file(COPY ${CMAKE_CURRENT_LIST_DIR}/CMakeLists.txt DESTINATION ${SOURCE_PATH})
+file(COPY ${CMAKE_CURRENT_LIST_DIR}/EbmlConfig.cmake DESTINATION ${SOURCE_PATH})
+
+
+vcpkg_configure_cmake(
+ SOURCE_PATH ${SOURCE_PATH}
+ PREFER_NINJA # Disable this option if project cannot be built with Ninja
+ OPTIONS -DDISABLE_PKGCONFIG=1
+ # OPTIONS_RELEASE -DOPTIMIZE=1
+ # OPTIONS_DEBUG -DDEBUGGABLE=1
+)
+
+vcpkg_install_cmake()
+
+vcpkg_fixup_cmake_targets(CONFIG_PATH cmake)
+
+file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/include)
+
+# Handle copyright
+file(INSTALL ${SOURCE_PATH}/LICENSE.LGPL DESTINATION ${CURRENT_PACKAGES_DIR}/share/ebml RENAME copyright)