aboutsummaryrefslogtreecommitdiff
path: root/vcpkg/ports/ecal
diff options
context:
space:
mode:
Diffstat (limited to 'vcpkg/ports/ecal')
-rw-r--r--vcpkg/ports/ecal/0001-disable-app-plugins.patch15
-rw-r--r--vcpkg/ports/ecal/0002-fix-build.patch166
-rw-r--r--vcpkg/ports/ecal/0003-fix-dependencies.patch20
-rw-r--r--vcpkg/ports/ecal/0004-install-cmake-files-to-share.patch32
-rw-r--r--vcpkg/ports/ecal/0005-remove-install-prefix-macro-value.patch12
-rw-r--r--vcpkg/ports/ecal/0006-use-find_dependency-in-cmake-config.patch36
-rw-r--r--vcpkg/ports/ecal/0007-allow-static-build-of-core.patch77
-rw-r--r--vcpkg/ports/ecal/0008-protobuf-linkage.patch26
-rw-r--r--vcpkg/ports/ecal/portfile.cmake77
-rw-r--r--vcpkg/ports/ecal/usage4
-rw-r--r--vcpkg/ports/ecal/vcpkg.json30
11 files changed, 495 insertions, 0 deletions
diff --git a/vcpkg/ports/ecal/0001-disable-app-plugins.patch b/vcpkg/ports/ecal/0001-disable-app-plugins.patch
new file mode 100644
index 0000000..ce4eb78
--- /dev/null
+++ b/vcpkg/ports/ecal/0001-disable-app-plugins.patch
@@ -0,0 +1,15 @@
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 4f2fc25d2..e82e353e0 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -357,8 +357,10 @@ endif()
+ # --------------------------------------------------------
+ # ecal rec addon sdk
+ # --------------------------------------------------------
++if (BUILD_APPS)
+ add_subdirectory(app/rec/rec_addon_core)
+ add_subdirectory(app/rec/rec_addon_dummy)
++endif()
+
+ # --------------------------------------------------------
+ # ecal time
diff --git a/vcpkg/ports/ecal/0002-fix-build.patch b/vcpkg/ports/ecal/0002-fix-build.patch
new file mode 100644
index 0000000..b2811b1
--- /dev/null
+++ b/vcpkg/ports/ecal/0002-fix-build.patch
@@ -0,0 +1,166 @@
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index e82e353e0..19d8f2a93 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -26,7 +26,8 @@ endif (POLICY CMP0077)
+
+ list(APPEND CMAKE_MODULE_PATH
+ ${CMAKE_CURRENT_SOURCE_DIR}/cmake
+- ${CMAKE_CURRENT_SOURCE_DIR}/cmake/Modules)
++ # Removed project specific Module overrides
++)
+
+ set(eCAL_DIR ${CMAKE_CURRENT_SOURCE_DIR}/cmake/Modules)
+
+@@ -221,6 +222,8 @@ set(possible_subprojects
+ set(ECAL_THIRDPARTY_BUILD_CMAKEFUNCTIONS ${ECAL_THIRDPARTY_BUILD_CMAKE_FUNCTIONS})
+
+ # if a package does need to be build, include the cmake file with build instructions
++# Disable all submodules, except CMakeFunctions which isn't a submodule and required
++set(possible_subprojects "CMakeFunctions")
+ foreach (dep IN LISTS possible_subprojects)
+ string(TOUPPER ${dep} dep_upper)
+ string(TOLOWER ${dep} dep_lower)
+@@ -336,7 +339,9 @@ add_subdirectory(ecal/core)
+ # custom libs
+ # --------------------------------------------------------
+ add_subdirectory(lib/ThreadingUtils)
+-add_subdirectory(lib/CustomTclap)
++# Removed due to only being used by the apps, which are disabled, and for
++# publicly linking tclap::tclap which doesn't exist outside of eCAL
++# add_subdirectory(lib/CustomTclap)
+ add_subdirectory(lib/ecal_utils)
+
+ if(HAS_QT)
+@@ -559,7 +564,9 @@ endif()
+ # --------------------------------------------------------
+ # create package
+ # --------------------------------------------------------
++if(CPACK_PACK_WITH_INNOSETUP)
+ include(cpack/cpack_variables.cmake)
++endif()
+
+ message(STATUS "Build Options:")
+ message(STATUS "--------------------------------------------------------------------------------")
+diff --git a/contrib/ecalhdf5/CMakeLists.txt b/contrib/ecalhdf5/CMakeLists.txt
+index d5285101c..3b7eb705a 100644
+--- a/contrib/ecalhdf5/CMakeLists.txt
++++ b/contrib/ecalhdf5/CMakeLists.txt
+@@ -55,7 +55,12 @@ set(ecalhdf5_header_base
+ include/ecalhdf5/eh5_types.h
+ )
+
++if (WIN32)
++# This library, ecal::hdf5 does not export any symbols on Windows. Must be static
++ecal_add_static_library(${PROJECT_NAME} ${ecalhdf5_src} ${ecalhdf5_header_base})
++else()
+ ecal_add_library(${PROJECT_NAME} ${ecalhdf5_src} ${ecalhdf5_header_base})
++endif()
+ add_library(eCAL::${PROJECT_NAME} ALIAS ${PROJECT_NAME})
+
+ target_include_directories(${PROJECT_NAME}
+diff --git a/contrib/ecalproto/CMakeLists.txt b/contrib/ecalproto/CMakeLists.txt
+index 04f1a1b9a..58df32705 100644
+--- a/contrib/ecalproto/CMakeLists.txt
++++ b/contrib/ecalproto/CMakeLists.txt
+@@ -37,7 +37,12 @@ set(ecal_protobuf_header
+ include/ecal/protobuf/ecal_proto_visitor.h
+ )
+
++if (WIN32)
++# This library, ecal::proto does not export any symbols on Windows. Must be static
++ecal_add_static_library(${PROJECT_NAME} ${ecal_protobuf_src} ${ecal_protobuf_header})
++else()
+ ecal_add_library(${PROJECT_NAME} ${ecal_protobuf_src} ${ecal_protobuf_header})
++endif()
+ add_library(eCAL::${PROJECT_NAME} ALIAS ${PROJECT_NAME})
+ target_include_directories(${PROJECT_NAME} PUBLIC
+ $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
+diff --git a/ecal/core/CMakeLists.txt b/ecal/core/CMakeLists.txt
+index f18dd6291..8655d134a 100644
+--- a/ecal/core/CMakeLists.txt
++++ b/ecal/core/CMakeLists.txt
+@@ -20,8 +20,6 @@ project(core VERSION ${eCAL_VERSION_STRING})
+
+ find_package(Threads REQUIRED)
+ find_package(asio REQUIRED)
+-find_package(tclap REQUIRED)
+-find_package(simpleini REQUIRED)
+ find_package(tcp_pubsub REQUIRED)
+ if (ECAL_NPCAP_SUPPORT)
+ find_package(udpcap REQUIRED)
+@@ -549,8 +547,6 @@ target_link_libraries(${PROJECT_NAME}
+ $<$<BOOL:${WIN32}>:wsock32>
+ $<$<BOOL:${QNXNTO}>:socket>
+ asio::asio
+- tclap::tclap
+- simpleini::simpleini
+ eCAL::core_pb
+ Threads::Threads
+ eCAL::ecal-utils
+@@ -558,6 +554,14 @@ target_link_libraries(${PROJECT_NAME}
+ ecal_service
+ )
+
++# tclap is header only and only used for implementation
++find_path(TCLAP_INCLUDE_DIRS "tclap/Arg.h")
++target_include_directories(${PROJECT_NAME} PRIVATE ${TCLAP_INCLUDE_DIRS})
++
++# simpleini is header only and only used for implementation
++find_path(SIMPLEINI_INCLUDE_DIRS "ConvertUTF.c")
++target_include_directories(${PROJECT_NAME} PRIVATE ${SIMPLEINI_INCLUDE_DIRS})
++
+ set_property(TARGET ${PROJECT_NAME} PROPERTY FOLDER ecal/core)
+ set_property(TARGET ${PROJECT_NAME}_c PROPERTY FOLDER ecal/core)
+
+diff --git a/ecal/service/ecal_service/CMakeLists.txt b/ecal/service/ecal_service/CMakeLists.txt
+index 0ac70a214..6a565c726 100644
+--- a/ecal/service/ecal_service/CMakeLists.txt
++++ b/ecal/service/ecal_service/CMakeLists.txt
+@@ -99,6 +99,8 @@ set_target_properties(${PROJECT_NAME} PROPERTIES
+ FOLDER ecal/service
+ )
+
++ecal_install_library(${PROJECT_NAME})
++
+ ##################################
+
+ source_group(TREE "${CMAKE_CURRENT_SOURCE_DIR}" FILES
+diff --git a/thirdparty/cmakefunctions/cmake_functions/CMakeLists.txt b/thirdparty/cmakefunctions/cmake_functions/CMakeLists.txt
+index 8d13b791c..6ed0d1a14 100644
+--- a/thirdparty/cmakefunctions/cmake_functions/CMakeLists.txt
++++ b/thirdparty/cmakefunctions/cmake_functions/CMakeLists.txt
+@@ -40,4 +40,6 @@ foreach (f ${file_list})
+ install( FILES ${f} DESTINATION "${cmake_functions_install_cmake_dir}/${dir}" )
+ endforeach()
+
++if(CPACK_PACK_WITH_INNOSETUP)
+ include(cmake/cpack_variables.cmake)
++endif()
+diff --git a/thirdparty/cmakefunctions/cmake_functions/cmake_functions.cmake b/thirdparty/cmakefunctions/cmake_functions/cmake_functions.cmake
+index a053b06e6..127eb14e6 100644
+--- a/thirdparty/cmakefunctions/cmake_functions/cmake_functions.cmake
++++ b/thirdparty/cmakefunctions/cmake_functions/cmake_functions.cmake
+@@ -5,22 +5,12 @@ set (file_list_include
+ target_definitions/targets_protobuf.cmake
+ )
+
+-if(WIN32)
+- list(APPEND file_list_include
+- qt/qt_windeployqt.cmake
+- )
+-endif()
+
+ set(file_list_no_include
+ protoc_functions/protoc_generate_cpp.cmake
+ protoc_functions/protoc_generate_python.cmake
+ )
+
+-if(WIN32)
+- list(APPEND file_list_no_include
+- qt/qt_windeployqt_threadsafe_cmake.bat.in
+- )
+-endif()
+
+ # Set list of all files to be installed by CMake Script.
+ set(file_list
diff --git a/vcpkg/ports/ecal/0003-fix-dependencies.patch b/vcpkg/ports/ecal/0003-fix-dependencies.patch
new file mode 100644
index 0000000..275977f
--- /dev/null
+++ b/vcpkg/ports/ecal/0003-fix-dependencies.patch
@@ -0,0 +1,20 @@
+diff --git a/contrib/ecalhdf5/CMakeLists.txt b/contrib/ecalhdf5/CMakeLists.txt
+index c167bacd4..45e754340 100644
+--- a/contrib/ecalhdf5/CMakeLists.txt
++++ b/contrib/ecalhdf5/CMakeLists.txt
+@@ -18,9 +18,14 @@
+
+ project(hdf5 LANGUAGES C CXX)
+
+-if(NOT CMAKE_CROSSCOMPILING)
++if(1)
+ find_package(HDF5 COMPONENTS C REQUIRED)
+ find_package(Threads REQUIRED)
++ if (TARGET hdf5::hdf5-shared)
++ set(ECAL_LINK_HDF5_SHARED 1)
++ else()
++ set(ECAL_LINK_HDF5_SHARED 0)
++ endif()
+ else()
+ find_library(hdf5_path NAMES hdf5 REQUIRED PATH_SUFFIXES hdf5/serial)
+ find_path(hdf5_include NAMES hdf5.h PATH_SUFFIXES hdf5/serial REQUIRED)
diff --git a/vcpkg/ports/ecal/0004-install-cmake-files-to-share.patch b/vcpkg/ports/ecal/0004-install-cmake-files-to-share.patch
new file mode 100644
index 0000000..1de1065
--- /dev/null
+++ b/vcpkg/ports/ecal/0004-install-cmake-files-to-share.patch
@@ -0,0 +1,32 @@
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 19d8f2a93..dca8948be 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -277,7 +277,7 @@ set(eCAL_install_app_dir ${CMAKE_INSTALL_BINDIR})
+ set(eCAL_install_archive_dir ${CMAKE_INSTALL_LIBDIR})
+ set(eCAL_install_archive_dyn_dir ${CMAKE_INSTALL_LIBDIR})
+ set(eCAL_install_bin_dir ${CMAKE_INSTALL_BINDIR})
+-set(eCAL_install_cmake_dir ${CMAKE_INSTALL_LIBDIR}/cmake/eCAL)
++set(eCAL_install_cmake_dir share/eCAL)
+ set(eCAL_install_config_dir ${CMAKE_INSTALL_SYSCONFDIR}/ecal)
+ set(eCAL_install_doc_dir ${CMAKE_INSTALL_DOCDIR})
+ set(eCAL_install_include_dir ${CMAKE_INSTALL_INCLUDEDIR})
+diff --git a/thirdparty/cmakefunctions/cmake_functions/CMakeLists.txt b/thirdparty/cmakefunctions/cmake_functions/CMakeLists.txt
+index 6ed0d1a14..9a833a1f9 100644
+--- a/thirdparty/cmakefunctions/cmake_functions/CMakeLists.txt
++++ b/thirdparty/cmakefunctions/cmake_functions/CMakeLists.txt
+@@ -4,12 +4,8 @@ include(cmake_functions.cmake)
+
+ project(CMakeFunctions VERSION 0.4.1)
+
+-if (MSVC)
+-# Variable definitions
+-set(cmake_functions_install_cmake_dir cmake)
+-else (MSVC)
+-set(cmake_functions_install_cmake_dir lib/cmake/${PROJECT_NAME}-${PROJECT_VERSION})
+-endif (MSVC)
++set(cmake_functions_install_cmake_dir "share/${PROJECT_NAME}")
++
+ set(cmake_functions_config ${CMAKE_CURRENT_BINARY_DIR}/cmake/${PROJECT_NAME}Config.cmake)
+ set(cmake_functions_config_version ${CMAKE_CURRENT_BINARY_DIR}/cmake/${PROJECT_NAME}ConfigVersion.cmake)
+
diff --git a/vcpkg/ports/ecal/0005-remove-install-prefix-macro-value.patch b/vcpkg/ports/ecal/0005-remove-install-prefix-macro-value.patch
new file mode 100644
index 0000000..5fde0a9
--- /dev/null
+++ b/vcpkg/ports/ecal/0005-remove-install-prefix-macro-value.patch
@@ -0,0 +1,12 @@
+diff --git a/ecal/core/src/ecal_defs.h.in b/ecal/core/src/ecal_defs.h.in
+index c792a26d1..e5119582b 100644
+--- a/ecal/core/src/ecal_defs.h.in
++++ b/ecal/core/src/ecal_defs.h.in
+@@ -39,6 +39,6 @@
+ #define ECAL_INSTALL_LIB_DIR "@eCAL_install_lib_dir@"
+ #define ECAL_INSTALL_CONFIG_DIR "@eCAL_install_config_dir@"
+ #define ECAL_INSTALL_INCLUDE_DIR "@eCAL_install_include_dir@"
+-#define ECAL_INSTALL_PREFIX "@CMAKE_INSTALL_PREFIX@"
++#define ECAL_INSTALL_PREFIX ""
+
+ #endif // ecal_defs_h_included
diff --git a/vcpkg/ports/ecal/0006-use-find_dependency-in-cmake-config.patch b/vcpkg/ports/ecal/0006-use-find_dependency-in-cmake-config.patch
new file mode 100644
index 0000000..e38039b
--- /dev/null
+++ b/vcpkg/ports/ecal/0006-use-find_dependency-in-cmake-config.patch
@@ -0,0 +1,36 @@
+diff --git a/cmake/eCALConfig.cmake.in b/cmake/eCALConfig.cmake.in
+index 704da4de8..e8cfb765c 100644
+--- a/cmake/eCALConfig.cmake.in
++++ b/cmake/eCALConfig.cmake.in
+@@ -25,12 +25,21 @@ set(eCAL_VERSION_MAJOR @eCAL_VERSION_MAJOR@)
+ set(eCAL_VERSION_MINOR @eCAL_VERSION_MINOR@)
+ set(eCAL_VERSION_PATCH @eCAL_VERSION_PATCH@)
+ set(eCAL_VERSION_STRING @eCAL_VERSION_STRING@)
++set(eCAL_IS_SHARED @BUILD_SHARED_LIBS@)
+
+ # eCAL is provided only with Release and Debug Version, thus map the other configs to Release build.
+ set(CMAKE_MAP_IMPORTED_CONFIG_MINSIZEREL Release "")
+ set(CMAKE_MAP_IMPORTED_CONFIG_RELWITHDEBINFO Release "")
+
+-find_package(Protobuf REQUIRED)
++include(CMakeFindDependencyMacro)
++find_dependency(Protobuf CONFIG)
++
++# Ensure transitive dependencies are present for static builds
++if(NOT eCAL_IS_SHARED)
++ find_dependency(asio)
++ find_dependency(tcp_pubsub)
++ find_dependency(HDF5)
++endif()
+
+ include("@PACKAGE_eCAL_install_cmake_dir@/helper_functions/ecal_add_functions.cmake")
+ include("@PACKAGE_eCAL_install_cmake_dir@/helper_functions/ecal_helper_functions.cmake")
+@@ -44,6 +53,6 @@ include("@PACKAGE_eCAL_install_cmake_dir@/eCALTargets.cmake")
+ # list(APPEND CMAKE_PREFIX_PATH "${PACKAGE_PREFIX_DIR}/../../../../cmake")
+ #endif()
+
+-find_package(CMakeFunctions REQUIRED)
++find_dependency(CMakeFunctions CONFIG)
+
+-find_package(Threads REQUIRED)
++find_dependency(Threads)
diff --git a/vcpkg/ports/ecal/0007-allow-static-build-of-core.patch b/vcpkg/ports/ecal/0007-allow-static-build-of-core.patch
new file mode 100644
index 0000000..90ece50
--- /dev/null
+++ b/vcpkg/ports/ecal/0007-allow-static-build-of-core.patch
@@ -0,0 +1,77 @@
+diff --git a/ecal/core/CMakeLists.txt b/ecal/core/CMakeLists.txt
+index 8655d134a..03d0f7c81 100644
+--- a/ecal/core/CMakeLists.txt
++++ b/ecal/core/CMakeLists.txt
+@@ -449,7 +449,7 @@ set(ecal_header_public
+ ${ecal_header_msg}
+ )
+
+-ecal_add_ecal_shared_library(${PROJECT_NAME}
++ecal_add_library(${PROJECT_NAME}
+ ${ecal_config_src}
+ ${ecal_io_mtx_src}
+ ${ecal_io_mtx_linux_src}
+@@ -483,7 +483,7 @@ if(UNIX)
+ set_source_files_properties(src/util/convert_utf.cpp PROPERTIES COMPILE_FLAGS -Wno-implicit-fallthrough)
+ endif()
+
+-ecal_add_ecal_shared_library(${PROJECT_NAME}_c ${ecal_c_src} ${ecal_c_win_src})
++ecal_add_library(${PROJECT_NAME}_c ${ecal_c_src} ${ecal_c_win_src})
+
+ add_library(eCAL::${PROJECT_NAME} ALIAS ${PROJECT_NAME})
+ add_library(eCAL::${PROJECT_NAME}_c ALIAS ${PROJECT_NAME}_c)
+@@ -514,6 +514,11 @@ target_compile_definitions(${PROJECT_NAME}
+ ECALC_NO_DEPRECATION_WARNINGS
+ )
+
++if(BUILD_SHARED_LIBS)
++ target_compile_definitions(${PROJECT_NAME}_c PUBLIC eCAL_SHARED_LIB)
++ target_compile_definitions(${PROJECT_NAME} PUBLIC eCAL_SHARED_LIB)
++endif()
++
+ if(ECAL_NPCAP_SUPPORT)
+ target_compile_definitions(${PROJECT_NAME}
+ PRIVATE ECAL_NPCAP_SUPPORT)
+@@ -565,8 +570,8 @@ target_include_directories(${PROJECT_NAME} PRIVATE ${SIMPLEINI_INCLUDE_DIRS})
+ set_property(TARGET ${PROJECT_NAME} PROPERTY FOLDER ecal/core)
+ set_property(TARGET ${PROJECT_NAME}_c PROPERTY FOLDER ecal/core)
+
+-ecal_install_ecal_shared_library(${PROJECT_NAME}_c)
+-ecal_install_ecal_shared_library(${PROJECT_NAME})
++ecal_install_ecal_library(${PROJECT_NAME}_c)
++ecal_install_ecal_library(${PROJECT_NAME})
+
+ install(DIRECTORY
+ "include/" DESTINATION "${INSTALL_INCLUDE_DIR}" COMPONENT sdk
+diff --git a/ecal/core/include/ecal/ecal_os.h b/ecal/core/include/ecal/ecal_os.h
+index 2b051d893..f24cdc325 100644
+--- a/ecal/core/include/ecal/ecal_os.h
++++ b/ecal/core/include/ecal/ecal_os.h
+@@ -47,7 +47,7 @@
+ #define ECAL_OS_FREEBSD
+ #endif
+
+-#ifdef _MSC_VER
++#if defined(_MSC_VER) && defined(eCAL_SHARED_LIB)
+ #ifdef eCAL_EXPORTS
+ #define ECALC_API __declspec(dllexport)
+ #else /* eCAL_EXPORTS */
+@@ -65,11 +65,15 @@
+
+ #if !defined(ECALC_NO_DEPRECATION_WARNINGS)
+ #ifdef _MSC_VER
++ #ifdef eCAL_SHARED_LIB
+ #ifdef eCAL_EXPORTS
+ #define ECALC_API_DEPRECATED __declspec(dllexport deprecated)
+ #else /* eCAL_EXPORTS */
+ #define ECALC_API_DEPRECATED __declspec(dllimport deprecated)
+ #endif /* eCAL_EXPORTS */
++ #else
++ #define ECALC_API_DEPRECATED
++ #endif
+ #elif defined(__GNUC__) || defined(__clang__)
+ #define ECALC_API_DEPRECATED __attribute__((deprecated))
+ #else
+--
+2.45.0.windows.1
+
diff --git a/vcpkg/ports/ecal/0008-protobuf-linkage.patch b/vcpkg/ports/ecal/0008-protobuf-linkage.patch
new file mode 100644
index 0000000..26e77e7
--- /dev/null
+++ b/vcpkg/ports/ecal/0008-protobuf-linkage.patch
@@ -0,0 +1,26 @@
+diff --git a/app/app_pb/CMakeLists.txt b/app/app_pb/CMakeLists.txt
+index edd036188..1aae43a81 100644
+--- a/app/app_pb/CMakeLists.txt
++++ b/app/app_pb/CMakeLists.txt
+@@ -68,7 +68,7 @@ target_compile_options(${PROJECT_NAME}
+
+ set_property(TARGET ${PROJECT_NAME} PROPERTY POSITION_INDEPENDENT_CODE ON)
+
+-target_link_libraries(${PROJECT_NAME} protobuf::libprotobuf)
++target_link_libraries(${PROJECT_NAME} PUBLIC protobuf::libprotobuf)
+ target_compile_features(${PROJECT_NAME} PUBLIC cxx_std_14)
+
+ ecal_install_library(${PROJECT_NAME})
+diff --git a/ecal/core_pb/CMakeLists.txt b/ecal/core_pb/CMakeLists.txt
+index e8f0704c7..502a92c11 100644
+--- a/ecal/core_pb/CMakeLists.txt
++++ b/ecal/core_pb/CMakeLists.txt
+@@ -63,7 +63,7 @@ target_compile_options(${PROJECT_NAME}
+
+ set_property(TARGET ${PROJECT_NAME} PROPERTY POSITION_INDEPENDENT_CODE ON)
+
+-target_link_libraries(${PROJECT_NAME} protobuf::libprotobuf)
++target_link_libraries(${PROJECT_NAME} PUBLIC protobuf::libprotobuf)
+ target_compile_features(${PROJECT_NAME} PUBLIC cxx_std_14)
+
+ ecal_install_library(${PROJECT_NAME})
diff --git a/vcpkg/ports/ecal/portfile.cmake b/vcpkg/ports/ecal/portfile.cmake
new file mode 100644
index 0000000..984f0e8
--- /dev/null
+++ b/vcpkg/ports/ecal/portfile.cmake
@@ -0,0 +1,77 @@
+if (VCPKG_TARGET_IS_WINDOWS)
+ vcpkg_check_linkage(ONLY_STATIC_LIBRARY)
+endif()
+
+vcpkg_from_github(
+ OUT_SOURCE_PATH SOURCE_PATH
+ REPO eclipse-ecal/ecal
+ REF "v${VERSION}"
+ SHA512 8134873a3ac0ba48955fdb837aaeaccbd76b81cde6af0099060daedb26bca107cb472af39058358ad094da02ead8f735afb73acd627b19ab210c42039ffa92b8
+ HEAD_REF master
+ PATCHES
+ 0001-disable-app-plugins.patch
+ 0002-fix-build.patch
+ 0003-fix-dependencies.patch
+ 0004-install-cmake-files-to-share.patch
+ 0005-remove-install-prefix-macro-value.patch
+ 0006-use-find_dependency-in-cmake-config.patch
+ 0007-allow-static-build-of-core.patch
+ 0008-protobuf-linkage.patch
+)
+
+vcpkg_cmake_configure(
+ SOURCE_PATH "${SOURCE_PATH}"
+ OPTIONS
+ -DHAS_HDF5=ON
+ -DHAS_QT5=OFF
+ -DHAS_CURL=OFF
+ -DHAS_CAPNPROTO=OFF
+ -DHAS_FTXUI=OFF
+ -DBUILD_DOCS=OFF
+ -DBUILD_APPS=OFF
+ -DBUILD_SAMPLES=OFF
+ -DBUILD_TIME=OFF
+ -DBUILD_PY_BINDING=OFF
+ -DBUILD_CSHARP_BINDING=OFF
+ -DBUILD_ECAL_TESTS=OFF
+ -DECAL_INCLUDE_PY_SAMPLES=OFF
+ -DECAL_INSTALL_SAMPLE_SOURCES=OFF
+ -DECAL_NPCAP_SUPPORT=OFF
+ -DECAL_THIRDPARTY_BUILD_CMAKE_FUNCTIONS=ON
+ -DECAL_THIRDPARTY_BUILD_SPDLOG=OFF
+ -DECAL_THIRDPARTY_BUILD_TINYXML2=OFF
+ -DECAL_THIRDPARTY_BUILD_FINEFTP=OFF
+ -DECAL_THIRDPARTY_BUILD_TERMCOLOR=OFF
+ -DECAL_THIRDPARTY_BUILD_TCP_PUBSUB=OFF
+ -DECAL_THIRDPARTY_BUILD_RECYCLE=OFF
+ -DECAL_THIRDPARTY_BUILD_FTXUI=OFF
+ -DECAL_THIRDPARTY_BUILD_GTEST=OFF
+ -DECAL_THIRDPARTY_BUILD_UDPCAP=OFF
+ -DECAL_THIRDPARTY_BUILD_PROTOBUF=OFF
+ -DECAL_THIRDPARTY_BUILD_YAML-CPP=OFF
+ -DECAL_THIRDPARTY_BUILD_CURL=OFF
+ -DECAL_THIRDPARTY_BUILD_HDF5=OFF
+ -DCPACK_PACK_WITH_INNOSETUP=OFF
+ -DECAL_BUILD_VERSION="${VERSION}"
+)
+
+vcpkg_cmake_install()
+vcpkg_copy_pdbs()
+
+vcpkg_cmake_config_fixup(PACKAGE_NAME eCAL CONFIG_PATH share/eCAL)
+vcpkg_cmake_config_fixup(PACKAGE_NAME CMakeFunctions CONFIG_PATH share/CMakeFunctions)
+
+# Remove extra debug files
+file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include")
+file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/share")
+
+# global ini files not strictly required
+if (VCPKG_TARGET_IS_WINDOWS)
+file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/cfg" "${CURRENT_PACKAGES_DIR}/debug/cfg")
+else()
+file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/etc" "${CURRENT_PACKAGES_DIR}/debug/etc")
+endif()
+
+# Install copyright and usage
+vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/LICENSE.txt")
+file(INSTALL "${CMAKE_CURRENT_LIST_DIR}/usage" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}")
diff --git a/vcpkg/ports/ecal/usage b/vcpkg/ports/ecal/usage
new file mode 100644
index 0000000..4d8af57
--- /dev/null
+++ b/vcpkg/ports/ecal/usage
@@ -0,0 +1,4 @@
+The package eCAL provides CMake targets:
+
+ find_package(eCAL CONFIG REQUIRED)
+ target_link_libraries(main PRIVATE eCAL::core eCAL::core_c eCAL::core_pb eCAL::hdf5) \ No newline at end of file
diff --git a/vcpkg/ports/ecal/vcpkg.json b/vcpkg/ports/ecal/vcpkg.json
new file mode 100644
index 0000000..7b2b9ed
--- /dev/null
+++ b/vcpkg/ports/ecal/vcpkg.json
@@ -0,0 +1,30 @@
+{
+ "name": "ecal",
+ "version-semver": "5.13.3",
+ "description": "eCAL - enhanced Communication Abstraction Layer",
+ "homepage": "https://eclipse-ecal.github.io/ecal/",
+ "license": "Apache-2.0",
+ "supports": "!emscripten",
+ "dependencies": [
+ "asio",
+ {
+ "name": "hdf5",
+ "default-features": false
+ },
+ {
+ "name": "protobuf",
+ "default-features": false
+ },
+ "simpleini",
+ "tclap",
+ "tcp-pubsub",
+ {
+ "name": "vcpkg-cmake",
+ "host": true
+ },
+ {
+ "name": "vcpkg-cmake-config",
+ "host": true
+ }
+ ]
+}