diff options
| author | Ethan Morgan <ethan@gweithio.com> | 2026-02-14 16:44:06 +0000 |
|---|---|---|
| committer | Ethan Morgan <ethan@gweithio.com> | 2026-02-14 16:44:06 +0000 |
| commit | 54409423f767d8b1cf30cb7d0efca6b4ca138823 (patch) | |
| tree | d915ac7828703ce4b963efdd9728a1777ba18c1e /vcpkg/ports/zeroc-ice | |
Diffstat (limited to 'vcpkg/ports/zeroc-ice')
| -rw-r--r-- | vcpkg/ports/zeroc-ice/change_to_mt.ps1 | 53 | ||||
| -rw-r--r-- | vcpkg/ports/zeroc-ice/mcppd_fix.patch | 24 | ||||
| -rw-r--r-- | vcpkg/ports/zeroc-ice/no-werror.patch | 13 | ||||
| -rw-r--r-- | vcpkg/ports/zeroc-ice/portfile.cmake | 317 | ||||
| -rw-r--r-- | vcpkg/ports/zeroc-ice/prepare_for_build.cmake | 78 | ||||
| -rw-r--r-- | vcpkg/ports/zeroc-ice/vcpkg.json | 151 |
6 files changed, 636 insertions, 0 deletions
diff --git a/vcpkg/ports/zeroc-ice/change_to_mt.ps1 b/vcpkg/ports/zeroc-ice/change_to_mt.ps1 new file mode 100644 index 0000000..9130609 --- /dev/null +++ b/vcpkg/ports/zeroc-ice/change_to_mt.ps1 @@ -0,0 +1,53 @@ + +$projFilePath = $args[0] +$crtLinkage = $args[1] + +if($projFilePath) +{ + $xpath = "/rs:Project/rs:ItemGroup/rs:ProjectConfiguration" + $xmldoc = New-Object System.Xml.XmlDocument + $xmldoc.load($projFilePath) + $nsmgr = New-Object System.Xml.XmlNamespaceManager($xmldoc.NameTable); + $nsmgr.AddNamespace("rs", "http://schemas.microsoft.com/developer/msbuild/2003"); + $root = $xmldoc.DocumentElement + + foreach($conf in $root.ItemDefinitionGroup) + { + if($conf.Condition) + { + if(-Not ($conf.ClCompile.RuntimeLibrary)) + { + $rtl = $xmldoc.CreateElement("RuntimeLibrary", $conf.ClCompile.NamespaceURI) + $conf.ClCompile.AppendChild($rtl) + } + + if($conf.Condition.Contains("Debug")) + { + if($crtLinkage -eq "static") + { + $conf.ClCompile.RuntimeLibrary = "MultithreadedDebug" + } + else + { + $conf.ClCompile.RuntimeLibrary = "MultithreadedDebugDLL" + } + } + else + { + if($crtLinkage -eq "static") + { + $conf.ClCompile.RuntimeLibrary = "Multithreaded" + } + else + { + $conf.ClCompile.RuntimeLibrary = "MultithreadedDLL" + } + } + } + } + $xmldoc.save($projFilePath) +} +else +{ + Write-Error "Error: No path defined!" +} diff --git a/vcpkg/ports/zeroc-ice/mcppd_fix.patch b/vcpkg/ports/zeroc-ice/mcppd_fix.patch new file mode 100644 index 0000000..3502af8 --- /dev/null +++ b/vcpkg/ports/zeroc-ice/mcppd_fix.patch @@ -0,0 +1,24 @@ +--- a/config/Make.project.rules 2022-01-17 10:28:23.000000000 ++++ b/config/Make.project.rules 2022-04-18 12:15:19.000000000 +@@ -1050,17 +1050,17 @@ + # + # $(call make-lib,$1=libname) + # + define make-lib + ifneq ($($1_home),) + # Check for 3rd party libraries either in home/lib<platform specific subdir> or home/lib +-$1_installdir = $$($1_home)/lib$$(call platform-var,installdir,$1,$$($$2_platform),$$($$2_config),$$2) +-$1_libdir ?= $$(strip $$(if $$(wildcard $$($1_installdir)),$$($1_installdir),$$($1_home)/lib)) +-$1_includedir ?= $$($1_home)/include ++$1_installdir = ++$1_libdir ?= ++$1_includedir ?= + endif +-$1_ldflags ?= -l$1 ++$1_ldflags ?= -l$$(if $$(and $$(filter mcpp,$1),$$(filter no,$$(OPTIMIZE))),$1d,$1) + endef + + # + # $(call repathfromdir,path) + # + # Returns reversed relative path for directory (e.g.: test/Ice/operations diff --git a/vcpkg/ports/zeroc-ice/no-werror.patch b/vcpkg/ports/zeroc-ice/no-werror.patch new file mode 100644 index 0000000..655d0bd --- /dev/null +++ b/vcpkg/ports/zeroc-ice/no-werror.patch @@ -0,0 +1,13 @@ +diff --git a/config/Make.rules.Darwin b/config/Make.rules.Darwin +index e978836..2276b5d 100644 +--- a/config/Make.rules.Darwin ++++ b/config/Make.rules.Darwin +@@ -35,7 +35,7 @@ endif + shared_cppflags = $(if $(filter-out program,$($1_target)),-fPIC) -fvisibility=hidden + + cppflags = -Wall -Wextra -Wshadow -Wshadow-all -Wredundant-decls -Wno-shadow-field \ +- -Wdeprecated -Wstrict-prototypes -Werror -Wconversion -Wdocumentation -pthread \ ++ -Wdeprecated -Wstrict-prototypes -Wconversion -Wdocumentation -pthread \ + $(if $(filter yes,$(OPTIMIZE)),-O2 -DNDEBUG,-g) + + ifeq ($(MAXWARN),yes) diff --git a/vcpkg/ports/zeroc-ice/portfile.cmake b/vcpkg/ports/zeroc-ice/portfile.cmake new file mode 100644 index 0000000..a9ddd7e --- /dev/null +++ b/vcpkg/ports/zeroc-ice/portfile.cmake @@ -0,0 +1,317 @@ +vcpkg_from_github(
+ OUT_SOURCE_PATH SOURCE_PATH
+ REPO zeroc-ice/ice
+ REF "v${VERSION}"
+ SHA512 638ca8721db1559aae80c43663a1210ba9c8f72d58003f2d9457048c9100bee74036910917d1d10bf5b998ba49f0878177e094b436c83d3deb63613f9075483d
+ PATCHES
+ mcppd_fix.patch
+ no-werror.patch
+)
+
+set(RELEASE_TRIPLET ${TARGET_TRIPLET}-rel)
+set(DEBUG_TRIPLET ${TARGET_TRIPLET}-dbg)
+
+set(UNIX_BUILD_DIR "${SOURCE_PATH}")
+set(WIN_DEBUG_BUILD_DIR "${CURRENT_BUILDTREES_DIR}/${DEBUG_TRIPLET}")
+set(WIN_RELEASE_BUILD_DIR "${CURRENT_BUILDTREES_DIR}/${RELEASE_TRIPLET}")
+
+# install_includes
+function(install_includes ORIGINAL_PATH RELATIVE_PATHS)
+ foreach(RELATIVE_PATH ${RELATIVE_PATHS})
+ file(GLOB HEADER_FILES ${ORIGINAL_PATH}/${RELATIVE_PATH}/*.h)
+ if(EXISTS "${ORIGINAL_PATH}/${RELATIVE_PATH}")
+ file(COPY ${HEADER_FILES} DESTINATION "${CURRENT_PACKAGES_DIR}/include/${RELATIVE_PATH}")
+ endif()
+ endforeach()
+endfunction()
+
+# install_slices
+function(install_slices ORIGINAL_PATH RELATIVE_PATHS)
+ foreach(RELATIVE_PATH ${RELATIVE_PATHS})
+ file(GLOB HEADER_FILES ${ORIGINAL_PATH}/${RELATIVE_PATH}/*.ice)
+ if(EXISTS ${ORIGINAL_PATH}/${RELATIVE_PATH})
+ file(COPY ${HEADER_FILES} DESTINATION "${CURRENT_PACKAGES_DIR}/share/ice/slice/${RELATIVE_PATH}")
+ endif()
+ endforeach()
+endfunction()
+
+vcpkg_list(SET ICE_INCLUDE_SUB_DIRECTORIES
+ "Glacier2"
+ "Ice"
+ "IceUtil"
+ "IceBT"
+ "IceBox"
+ "IceBT"
+ "IceDiscovery"
+ "IceGrid"
+ "IceIAP"
+ "IceLocatorDiscovery"
+ "IcePatch2"
+ "IceSSL"
+ "IceStorm"
+)
+
+set(ICE_OPTIONAL_COMPONENTS_MSBUILD "")
+set(ICE_OPTIONAL_COMPONENTS_MAKE "Ice") # Intentional!
+set(pkgconfig_packages "")
+
+# IceSSL
+if("icessl" IN_LIST FEATURES)
+ vcpkg_list(APPEND ICE_OPTIONAL_COMPONENTS_MSBUILD "/t:C++11\\icessl++11")
+ vcpkg_list(APPEND ICE_OPTIONAL_COMPONENTS_MAKE "IceSSL")
+endif()
+
+# Glacier2
+if("glacier2lib" IN_LIST FEATURES)
+ vcpkg_list(APPEND ICE_OPTIONAL_COMPONENTS_MSBUILD "/t:C++11\\glacier2++11")
+ vcpkg_list(APPEND ICE_OPTIONAL_COMPONENTS_MAKE "Glacier2")
+endif()
+
+# Glacier2Router
+if("glacier2router" IN_LIST FEATURES)
+ vcpkg_list(APPEND ICE_OPTIONAL_COMPONENTS_MSBUILD "/t:C++98\\glacier2router")
+ vcpkg_list(APPEND ICE_OPTIONAL_COMPONENTS_MSBUILD "/t:C++98\\glacier2cryptpermissionsverifier")
+ vcpkg_list(APPEND ICE_OPTIONAL_COMPONENTS_MAKE "glacier2router")
+ vcpkg_list(APPEND ICE_OPTIONAL_COMPONENTS_MAKE "Glacier2CryptPermissionsVerifier")
+endif()
+
+# IceBox
+if("iceboxlib" IN_LIST FEATURES)
+ vcpkg_list(APPEND ICE_OPTIONAL_COMPONENTS_MSBUILD "/t:C++11\\iceboxlib++11")
+ vcpkg_list(APPEND ICE_OPTIONAL_COMPONENTS_MAKE "IceBox")
+endif()
+
+# IceBox
+if("iceboxtools" IN_LIST FEATURES)
+ vcpkg_list(APPEND ICE_OPTIONAL_COMPONENTS_MSBUILD "/t:C++11\\icebox++11")
+ vcpkg_list(APPEND ICE_OPTIONAL_COMPONENTS_MSBUILD "/t:C++98\\iceboxadmin")
+ vcpkg_list(APPEND ICE_OPTIONAL_COMPONENTS_MAKE "icebox")
+ vcpkg_list(APPEND ICE_OPTIONAL_COMPONENTS_MAKE "iceboxadmin")
+endif()
+
+# IceGrid
+if("icegridlib" IN_LIST FEATURES)
+ vcpkg_list(APPEND ICE_OPTIONAL_COMPONENTS_MSBUILD "/t:C++11\\icegrid++11")
+ vcpkg_list(APPEND ICE_OPTIONAL_COMPONENTS_MAKE "IceGrid")
+endif()
+
+# IceGrid tools
+if("icegridtools" IN_LIST FEATURES)
+ vcpkg_list(APPEND ICE_OPTIONAL_COMPONENTS_MSBUILD "/t:C++98\\icegridadmin")
+ vcpkg_list(APPEND ICE_OPTIONAL_COMPONENTS_MSBUILD "/t:C++98\\icegridregistry")
+ vcpkg_list(APPEND ICE_OPTIONAL_COMPONENTS_MSBUILD "/t:C++98\\icegridnode")
+ vcpkg_list(APPEND ICE_OPTIONAL_COMPONENTS_MAKE "icegridnode")
+ vcpkg_list(APPEND ICE_OPTIONAL_COMPONENTS_MAKE "icegridregistry")
+ vcpkg_list(APPEND ICE_OPTIONAL_COMPONENTS_MAKE "icegridnode")
+ list(APPEND pkgconfig_packages expat)
+endif()
+
+# IceStorm
+if("icestormlib" IN_LIST FEATURES)
+ vcpkg_list(APPEND ICE_OPTIONAL_COMPONENTS_MSBUILD "/t:C++11\\icestorm++11")
+ vcpkg_list(APPEND ICE_OPTIONAL_COMPONENTS_MAKE "IceStorm")
+endif()
+
+# IceStormAdmin
+if("icestormtools" IN_LIST FEATURES)
+ vcpkg_list(APPEND ICE_OPTIONAL_COMPONENTS_MSBUILD "/t:C++98\\icestormadmin")
+ vcpkg_list(APPEND ICE_OPTIONAL_COMPONENTS_MSBUILD "/t:C++98\\icestormservice")
+ vcpkg_list(APPEND ICE_OPTIONAL_COMPONENTS_MSBUILD "/t:C++98\\icestormdb")
+ vcpkg_list(APPEND ICE_OPTIONAL_COMPONENTS_MAKE "icestormadmin")
+ vcpkg_list(APPEND ICE_OPTIONAL_COMPONENTS_MAKE "IceStormService")
+ vcpkg_list(APPEND ICE_OPTIONAL_COMPONENTS_MAKE "icestormdb")
+endif()
+
+# IceBridge executable
+if("icebridge" IN_LIST FEATURES)
+ vcpkg_list(APPEND ICE_OPTIONAL_COMPONENTS_MSBUILD "/t:C++98\\icebridge")
+ vcpkg_list(APPEND ICE_OPTIONAL_COMPONENTS_MAKE "icebridge")
+endif()
+
+# IceDiscovery
+if("icediscovery" IN_LIST FEATURES)
+ vcpkg_list(APPEND ICE_OPTIONAL_COMPONENTS_MSBUILD "/t:C++11\\icediscovery++11")
+ vcpkg_list(APPEND ICE_OPTIONAL_COMPONENTS_MAKE "IceDiscovery")
+endif()
+
+# IceLocatorDiscovery
+if("icelocatordiscovery" IN_LIST FEATURES)
+ vcpkg_list(APPEND ICE_OPTIONAL_COMPONENTS_MSBUILD "/t:C++11\\icelocatordiscovery++11")
+ vcpkg_list(APPEND ICE_OPTIONAL_COMPONENTS_MAKE "IceLocatorDiscovery")
+endif()
+
+if(NOT VCPKG_TARGET_IS_WINDOWS)
+ # Clean up for the first round (important for install --editable)
+ vcpkg_execute_build_process(
+ COMMAND make distclean
+ WORKING_DIRECTORY ${SOURCE_PATH}/cpp
+ LOGNAME make-clean-${TARGET_TRIPLET}
+ )
+
+ if(EXISTS "${UNIX_BUILD_DIR}/cpp/lib")
+ file(REMOVE_RECURSE "${UNIX_BUILD_DIR}/cpp/lib")
+ endif()
+ if(EXISTS "${UNIX_BUILD_DIR}/cpp/lib64")
+ file(REMOVE_RECURSE "${UNIX_BUILD_DIR}/cpp/lib64")
+ endif()
+ file(REMOVE_RECURSE "${UNIX_BUILD_DIR}/cpp/bin")
+
+ # Setting these as environment variables, as .d files aren't generated
+ # the first time passing them as arguments to make.
+ set(ENV{MCPP_HOME} ${CURRENT_INSTALLED_DIR})
+ set(ENV{EXPAT_HOME} ${CURRENT_INSTALLED_DIR})
+ set(ENV{BZ2_HOME} ${CURRENT_INSTALLED_DIR})
+ set(ENV{LMDB_HOME} ${CURRENT_INSTALLED_DIR})
+ set(ENV{CPPFLAGS} "-I${CURRENT_INSTALLED_DIR}/include")
+ set(ENV{LDFLAGS} "-L${CURRENT_INSTALLED_DIR}/debug/lib")
+
+ set(ICE_BUILD_CONFIG "shared cpp11-shared")
+ if(VCPKG_LIBRARY_LINKAGE STREQUAL "static")
+ set(ICE_BUILD_CONFIG "static cpp11-static")
+ endif()
+ if(NOT VCPKG_BUILD_TYPE)
+ message(STATUS "Building ${TARGET_TRIPLET}-dbg")
+ vcpkg_execute_build_process(
+ COMMAND make
+ V=1
+ "prefix=${CURRENT_PACKAGES_DIR}/debug"
+ linux_id=vcpkg
+ "CONFIGS=${ICE_BUILD_CONFIG}"
+ USR_DIR_INSTALL=yes
+ OPTIMIZE=no
+ ${ICE_OPTIONAL_COMPONENTS_MAKE}
+ "-j${VCPKG_CONCURRENCY}"
+ WORKING_DIRECTORY ${SOURCE_PATH}/cpp
+ LOGNAME make-${TARGET_TRIPLET}-dbg
+ )
+
+ # Install debug libraries to packages directory
+ file(MAKE_DIRECTORY "${CURRENT_PACKAGES_DIR}/debug/lib")
+ if(EXISTS "${UNIX_BUILD_DIR}/cpp/lib64")
+ file(GLOB ICE_DEBUG_LIBRARIES "${UNIX_BUILD_DIR}/cpp/lib64/*")
+ else()
+ file(GLOB ICE_DEBUG_LIBRARIES "${UNIX_BUILD_DIR}/cpp/lib/*")
+ endif()
+ file(COPY ${ICE_DEBUG_LIBRARIES} DESTINATION "${CURRENT_PACKAGES_DIR}/debug/lib")
+
+ # Clean up for the next round
+ vcpkg_execute_build_process(
+ COMMAND make distclean
+ WORKING_DIRECTORY ${SOURCE_PATH}/cpp
+ LOGNAME make-clean-${TARGET_TRIPLET}
+ )
+
+ if(EXISTS "${UNIX_BUILD_DIR}/cpp/lib")
+ file(REMOVE_RECURSE "${UNIX_BUILD_DIR}/cpp/lib")
+ endif()
+ if(EXISTS "${UNIX_BUILD_DIR}/cpp/lib64")
+ file(REMOVE_RECURSE "${UNIX_BUILD_DIR}/cpp/lib64")
+ endif()
+ file(REMOVE_RECURSE "${UNIX_BUILD_DIR}/cpp/bin")
+ endif() # TODO: get-cmake-vars!
+ # Release build
+ set(ENV{LDFLAGS} "-L${CURRENT_INSTALLED_DIR}/lib")
+ message(STATUS "Building ${TARGET_TRIPLET}-rel")
+ vcpkg_execute_build_process(
+ COMMAND make
+ V=1
+ "prefix=${CURRENT_PACKAGES_DIR}"
+ linux_id=vcpkg
+ "CONFIGS=${ICE_BUILD_CONFIG}"
+ USR_DIR_INSTALL=yes
+ OPTIMIZE=yes
+ ${ICE_OPTIONAL_COMPONENTS_MAKE}
+ "-j${VCPKG_CONCURRENCY}"
+ WORKING_DIRECTORY ${SOURCE_PATH}/cpp
+ LOGNAME make-${TARGET_TRIPLET}-rel
+ )
+
+ # Install release libraries and other files to packages directory
+ file(MAKE_DIRECTORY "${CURRENT_PACKAGES_DIR}/lib")
+ file(MAKE_DIRECTORY "${CURRENT_PACKAGES_DIR}/include")
+ file(MAKE_DIRECTORY "${CURRENT_PACKAGES_DIR}/share/ice/slice")
+ file(MAKE_DIRECTORY "${CURRENT_PACKAGES_DIR}/tools/${PORT}")
+
+ install_includes("${UNIX_BUILD_DIR}/cpp/include" "${ICE_INCLUDE_SUB_DIRECTORIES}")
+ install_includes("${UNIX_BUILD_DIR}/cpp/include/generated" "${ICE_INCLUDE_SUB_DIRECTORIES}")
+ install_slices("${SOURCE_PATH}/slice" "${ICE_INCLUDE_SUB_DIRECTORIES}")
+ if(EXISTS "${UNIX_BUILD_DIR}/cpp/lib64")
+ file(GLOB ICE_RELEASE_LIBRARIES "${UNIX_BUILD_DIR}/cpp/lib64/*")
+ else()
+ file(GLOB ICE_RELEASE_LIBRARIES "${UNIX_BUILD_DIR}/cpp/lib/*")
+ endif()
+ file(COPY ${ICE_RELEASE_LIBRARIES} DESTINATION "${CURRENT_PACKAGES_DIR}/lib")
+ file(GLOB ICE_RELEASE_EXECUTABLES "${UNIX_BUILD_DIR}/cpp/bin/*")
+ file(COPY ${ICE_RELEASE_EXECUTABLES} DESTINATION "${CURRENT_PACKAGES_DIR}/tools/${PORT}")
+
+ # Clean up
+ vcpkg_execute_build_process(
+ COMMAND make distclean
+ WORKING_DIRECTORY ${SOURCE_PATH}/cpp
+ LOGNAME make-clean-after-build-${TARGET_TRIPLET}
+ )
+
+ if(EXISTS "${UNIX_BUILD_DIR}/cpp/lib")
+ file(REMOVE_RECURSE "${UNIX_BUILD_DIR}/cpp/lib")
+ endif()
+ if(EXISTS "${UNIX_BUILD_DIR}/cpp/lib64")
+ file(REMOVE_RECURSE "${UNIX_BUILD_DIR}/cpp/lib64")
+ endif()
+ file(REMOVE_RECURSE "${UNIX_BUILD_DIR}/cpp/bin")
+
+else() # VCPKG_TARGET_IS_WINDOWS
+
+ # Fix project files to prevent nuget restore of dependencies and
+ # remove hard coded runtime linkage
+ include("${CURRENT_PORT_DIR}/prepare_for_build.cmake")
+ prepare_for_build("${SOURCE_PATH}")
+
+ vcpkg_list(SET MSBUILD_OPTIONS
+ "/p:UseVcpkg=yes"
+ "/p:IceBuildingSrc=yes"
+ ${ICE_OPTIONAL_COMPONENTS_MSBUILD}
+ )
+
+ # Build Ice
+ vcpkg_msbuild_install(
+ SOURCE_PATH "${SOURCE_PATH}"
+ PROJECT_SUBPATH "cpp/msbuild/ice.${VCPKG_PLATFORM_TOOLSET}.sln"
+ TARGET "C++11\\ice++11"
+ OPTIONS
+ ${MSBUILD_OPTIONS}
+ DEPENDENT_PKGCONFIG bzip2 ${pkgconfig_packages}
+ ADDITIONAL_LIBS lmdb.lib
+ ADDITIONAL_LIBS_RELEASE mcpp.lib ${libs_rel}
+ ADDITIONAL_LIBS_DEBUG mcppd.lib ${libs_dbg}
+ )
+
+ if(EXISTS "${CURRENT_PACKAGES_DIR}/bin/zeroc.icebuilder.msbuild.dll")
+ file(REMOVE "${CURRENT_PACKAGES_DIR}/bin/zeroc.icebuilder.msbuild.dll")
+ endif()
+ if(EXISTS "${CURRENT_PACKAGES_DIR}/debug/bin/zeroc.icebuilder.msbuild.dll")
+ file(REMOVE "${CURRENT_PACKAGES_DIR}/debug/bin/zeroc.icebuilder.msbuild.dll")
+ endif()
+
+ install_includes("${WIN_RELEASE_BUILD_DIR}/cpp/include" "${ICE_INCLUDE_SUB_DIRECTORIES}")
+ install_includes("${WIN_RELEASE_BUILD_DIR}/cpp/include/generated/cpp11/${TRIPLET_SYSTEM_ARCH}/Release" "${ICE_INCLUDE_SUB_DIRECTORIES}")
+
+ file(MAKE_DIRECTORY "${CURRENT_PACKAGES_DIR}/share/ice/slice")
+ install_slices("${SOURCE_PATH}/slice" "${ICE_INCLUDE_SUB_DIRECTORIES}")
+
+ if(VCPKG_LIBRARY_LINKAGE STREQUAL "static")
+ file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/bin" "${CURRENT_PACKAGES_DIR}/debug/bin")
+ endif()
+
+ vcpkg_clean_msbuild()
+
+endif()
+
+# Remove unnecessary static libraries.
+file(GLOB PDLIBS "${CURRENT_PACKAGES_DIR}/debug/lib/*")
+file(GLOB PRLIBS "${CURRENT_PACKAGES_DIR}/lib/*")
+list(FILTER PDLIBS INCLUDE REGEX ".*(([Ii]ce[Uu]til|[Ss]lice)d?\.([a-z]+))$")
+list(FILTER PRLIBS INCLUDE REGEX ".*(([Ii]ce[Uu]til|[Ss]lice)d?\.([a-z]+))$")
+file(REMOVE ${PDLIBS} ${PRLIBS})
+
+# Handle copyright
+vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/LICENSE")
diff --git a/vcpkg/ports/zeroc-ice/prepare_for_build.cmake b/vcpkg/ports/zeroc-ice/prepare_for_build.cmake new file mode 100644 index 0000000..e49303c --- /dev/null +++ b/vcpkg/ports/zeroc-ice/prepare_for_build.cmake @@ -0,0 +1,78 @@ +
+# This function modifies hardcoded RuntimeLibrary directives in Ice's .vcxproj files and downloads
+# Ice Builder for MSBuild, which is required to generate C++ files based on the interface definition
+# files (.ice).
+
+function(prepare_for_build ICE_SOURCE_DIR)
+
+ message("-- Modifying hardcoded 'RuntimeLibrary' directives in .vcxproj files")
+ set(CPP_SOURCE_DIR "${ICE_SOURCE_DIR}/cpp/src")
+ file(GLOB_RECURSE PROJ_FILES "${CPP_SOURCE_DIR}/*.vcxproj")
+
+ foreach(PROJ_FILE ${PROJ_FILES})
+ file(READ ${PROJ_FILE} PROJ_FILE_CONTENT)
+ STRING(REGEX
+ REPLACE
+ "<Target Name=\"EnsureNuGetPackageBuildImports\" BeforeTargets=\"PrepareForBuild\">"
+ "<Target Name=\"EnsureNuGetPackageBuildImports\" BeforeTargets=\"PrepareForBuild\" Condition=\"'$(UseVcpkg)' != 'yes'\">"
+ PROJ_FILE_CONTENT
+ "${PROJ_FILE_CONTENT}"
+ )
+
+ if((NOT ${PROJ_FILE} MATCHES ".*slice\.vcxproj") AND
+ (NOT ${PROJ_FILE} MATCHES ".*iceutil\.vcxproj") AND
+ (NOT ${PROJ_FILE} MATCHES ".*slice2cpp\.vcxproj"))
+
+ if(${VCPKG_LIBRARY_LINKAGE} STREQUAL "static")
+ STRING(REGEX
+ REPLACE
+ "<ConfigurationType>DynamicLibrary</ConfigurationType>"
+ "<ConfigurationType>StaticLibrary</ConfigurationType>"
+ PROJ_FILE_CONTENT
+ "${PROJ_FILE_CONTENT}"
+ )
+ else()
+ STRING(REGEX
+ REPLACE
+ "<ConfigurationType>StaticLibrary</ConfigurationType>"
+ "<ConfigurationType>DynamicLibrary</ConfigurationType>"
+ PROJ_FILE_CONTENT
+ "${PROJ_FILE_CONTENT}"
+ )
+ endif()
+ endif()
+
+ file(WRITE ${PROJ_FILE} "${PROJ_FILE_CONTENT}")
+
+ vcpkg_execute_required_process(
+ COMMAND pwsh ${CURRENT_PORT_DIR}/change_to_mt.ps1 ${PROJ_FILE} ${VCPKG_CRT_LINKAGE}
+ WORKING_DIRECTORY ${SOURCE_PATH}
+ LOGNAME change_to_mt-${TARGET_TRIPLET}-rel
+ )
+ endforeach()
+
+ set(ICE_BUILDER_VERSION "5.0.9")
+ set(ICE_CPP_MSBUILD_PACKAGES_DIR "${ICE_SOURCE_DIR}/cpp/msbuild/packages")
+ set(ICE_BUILDER_DEST_DIRECTORY "${ICE_CPP_MSBUILD_PACKAGES_DIR}/zeroc.icebuilder.msbuild.${ICE_BUILDER_VERSION}")
+ if(NOT EXISTS "${ICE_BUILDER_DEST_DIRECTORY}")
+ message("-- Making Ice Builder for MSBuild available")
+ vcpkg_download_distfile(
+ ICE_BUILDER_MSBUILD_ARCHIVE
+ URLS https://globalcdn.nuget.org/packages/zeroc.icebuilder.msbuild.5.0.9.nupkg
+ FILENAME "zeroc.icebuilder.msbuild.${ICE_BUILDER_VERSION}.zip"
+ SHA512 E65620F3B667A48B28EC770443296BB0B8058168197DB3AE877A36531FFC6CE7E9289C7FE37DFAD751877FBDBA03C55E37122931BBF001EA6F1906DFEEBACFCB
+ )
+
+ vcpkg_extract_source_archive(
+ ICE_BUILDER_MSBUILD_DIRECTORY
+ ARCHIVE
+ "${ICE_BUILDER_MSBUILD_ARCHIVE}"
+ NO_REMOVE_ONE_LEVEL
+ SOURCE_BASE icebuilder
+ )
+
+ file(MAKE_DIRECTORY "${ICE_SOURCE_DIR}/cpp/msbuild/packages")
+ file(RENAME "${ICE_BUILDER_MSBUILD_DIRECTORY}" "${ICE_BUILDER_DEST_DIRECTORY}")
+ endif()
+
+endfunction()
diff --git a/vcpkg/ports/zeroc-ice/vcpkg.json b/vcpkg/ports/zeroc-ice/vcpkg.json new file mode 100644 index 0000000..30f8fbc --- /dev/null +++ b/vcpkg/ports/zeroc-ice/vcpkg.json @@ -0,0 +1,151 @@ +{ + "name": "zeroc-ice", + "version": "3.7.10", + "maintainers": "Benjamin Oldenburg <benjamin.oldenburg@ordis.co.th>", + "description": "Comprehensive RPC framework with support for C++, CSharp, Java, JavaScript, Python and more.", + "homepage": "https://github.com/zeroc-ice/ice", + "license": null, + "supports": "!uwp & !(windows & arm) & !wasm32", + "dependencies": [ + "bzip2", + "expat", + "lmdb", + "mcpp", + { + "name": "openssl", + "platform": "!windows" + }, + { + "name": "vcpkg-msbuild", + "host": true, + "platform": "windows" + }, + "zlib" + ], + "default-features": [ + "glacier2lib", + "icegridlib", + "icestormlib" + ], + "features": { + "glacier2lib": { + "description": "Glacier2 libraries" + }, + "glacier2router": { + "description": "Glacier2Router", + "supports": "!(windows & static)", + "dependencies": [ + { + "name": "zeroc-ice", + "features": [ + "glacier2lib", + "icessl" + ] + } + ] + }, + "iceboxlib": { + "description": "IceBox libraries and runtime", + "supports": "!(windows & static)" + }, + "iceboxtools": { + "description": "IceBox tools", + "supports": "!(windows & static)" + }, + "icebridge": { + "description": "IceBridge", + "supports": "!(windows & static)", + "dependencies": [ + { + "name": "zeroc-ice", + "features": [ + "iceboxlib" + ] + } + ] + }, + "icediscovery": { + "description": "IceDiscovery", + "dependencies": [ + { + "name": "zeroc-ice", + "features": [ + "glacier2lib", + "iceboxlib", + "icessl", + "icestormlib" + ] + } + ] + }, + "icegridlib": { + "description": "IceGrid library", + "dependencies": [ + { + "name": "zeroc-ice", + "features": [ + "glacier2lib" + ] + } + ] + }, + "icegridtools": { + "description": "IceGrid tools", + "supports": "!(windows & static)", + "dependencies": [ + "expat", + { + "name": "zeroc-ice", + "features": [ + "glacier2lib", + "iceboxlib", + "icegridlib", + "icessl" + ] + } + ] + }, + "icelocatordiscovery": { + "description": "IceLocatorDiscovery", + "dependencies": [ + { + "name": "zeroc-ice", + "features": [ + "glacier2lib", + "iceboxlib", + "icessl", + "icestormlib" + ] + } + ] + }, + "icessl": { + "description": "IceSSL", + "dependencies": [ + { + "name": "openssl", + "platform": "!windows" + } + ] + }, + "icestormlib": { + "description": "IceStorm library" + }, + "icestormtools": { + "description": "IceStorm tools", + "supports": "!(windows & static)", + "dependencies": [ + "lmdb", + { + "name": "zeroc-ice", + "features": [ + "glacier2lib", + "iceboxlib", + "icegridlib", + "icestormlib" + ] + } + ] + } + } +} |