aboutsummaryrefslogtreecommitdiff
path: root/vcpkg/ports/ogre
diff options
context:
space:
mode:
Diffstat (limited to 'vcpkg/ports/ogre')
-rw-r--r--vcpkg/ports/ogre/cfg-rel-paths.patch24
-rw-r--r--vcpkg/ports/ogre/cmake4.patch30
-rw-r--r--vcpkg/ports/ogre/fix-dependencies.patch220
-rw-r--r--vcpkg/ports/ogre/pkgconfig.patch30
-rw-r--r--vcpkg/ports/ogre/portfile.cmake176
-rw-r--r--vcpkg/ports/ogre/same-install-rules-all-platforms.patch14
-rw-r--r--vcpkg/ports/ogre/swig-python-polyfill.patch19
-rw-r--r--vcpkg/ports/ogre/vcpkg.json117
8 files changed, 630 insertions, 0 deletions
diff --git a/vcpkg/ports/ogre/cfg-rel-paths.patch b/vcpkg/ports/ogre/cfg-rel-paths.patch
new file mode 100644
index 0000000..512bf15
--- /dev/null
+++ b/vcpkg/ports/ogre/cfg-rel-paths.patch
@@ -0,0 +1,24 @@
+diff --git a/CMake/InstallResources.cmake b/CMake/InstallResources.cmake
+index 09789ce..3d918e4 100644
+--- a/CMake/InstallResources.cmake
++++ b/CMake/InstallResources.cmake
+@@ -61,7 +61,6 @@ elseif (APPLE)
+ endif()
+ # these are resolved relative to the app bundle
+ set(OGRE_SAMPLES_DIR_REL "Contents/Plugins/")
+- set(OGRE_CFG_INSTALL_PATH "bin")
+ elseif (UNIX)
+ set(OGRE_TEST_MEDIA_DIR_REL "${CMAKE_INSTALL_PREFIX}/Tests/Media")
+ set(OGRE_SAMPLES_DIR_REL "${CMAKE_INSTALL_PREFIX}/${OGRE_LIB_DIRECTORY}/OGRE/Samples")
+@@ -155,6 +154,10 @@ endif()
+
+ set(OGRE_SAMPLE_RESOURCES "")
+
++set(OGRE_PLUGIN_DIR_REL "${CMAKE_INSTALL_PREFIX}/${OGRE_PLUGINS_PATH}")
++cmake_path(RELATIVE_PATH OGRE_PLUGIN_DIR_REL BASE_DIRECTORY "${CMAKE_INSTALL_PREFIX}/${OGRE_CFG_INSTALL_PATH}")
++set(OGRE_MEDIA_DIR_REL "${CMAKE_INSTALL_PREFIX}/${OGRE_MEDIA_PATH}")
++cmake_path(RELATIVE_PATH OGRE_MEDIA_DIR_REL BASE_DIRECTORY "${CMAKE_INSTALL_PREFIX}/${OGRE_CFG_INSTALL_PATH}")
+ set(OGRE_CORE_MEDIA_DIR "${OGRE_MEDIA_DIR_REL}")
+
+ # CREATE CONFIG FILES - INSTALL VERSIONS
+
diff --git a/vcpkg/ports/ogre/cmake4.patch b/vcpkg/ports/ogre/cmake4.patch
new file mode 100644
index 0000000..993f9a4
--- /dev/null
+++ b/vcpkg/ports/ogre/cmake4.patch
@@ -0,0 +1,30 @@
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 15edbe3917..206d532ddb 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -46,11 +46,6 @@ endif()
+ if (APPLE AND NOT ANDROID AND NOT EMSCRIPTEN AND NOT ANDROID_PLATFORM)
+ SET(CMAKE_SIZEOF_VOID_P 4)
+
+- if(${CMAKE_VERSION} VERSION_GREATER_EQUAL "3.16.0")
+- enable_language(OBJC)
+- enable_language(OBJCXX)
+- endif()
+-
+ if(POLICY CMP0068)
+ cmake_policy(SET CMP0068 NEW) # CMake 3.9+: `RPATH` settings on macOS do not affect `install_name`.
+ endif()
+@@ -65,6 +60,13 @@ endif ()
+
+ project(OGRE VERSION 14.3.2)
+
++if (APPLE AND NOT ANDROID AND NOT EMSCRIPTEN AND NOT ANDROID_PLATFORM)
++ if(${CMAKE_VERSION} VERSION_GREATER_EQUAL "3.16.0")
++ enable_language(OBJC)
++ enable_language(OBJCXX)
++ endif()
++endif()
++
+ # extra version info
+ set(OGRE_VERSION_SUFFIX "")
+ set(OGRE_VERSION_NAME "Tsathoggua")
diff --git a/vcpkg/ports/ogre/fix-dependencies.patch b/vcpkg/ports/ogre/fix-dependencies.patch
new file mode 100644
index 0000000..a90a652
--- /dev/null
+++ b/vcpkg/ports/ogre/fix-dependencies.patch
@@ -0,0 +1,220 @@
+diff --git a/CMake/Dependencies.cmake b/CMake/Dependencies.cmake
+index 21590f4..4b46a29 100644
+--- a/CMake/Dependencies.cmake
++++ b/CMake/Dependencies.cmake
+@@ -210,11 +210,14 @@ endif()
+ #######################################################################
+
+ # Find FreeImage
+-find_package(FreeImage)
++find_package(FreeImage NAMES freeimage)
++set(FreeImage_LIBRARIES freeimage::FreeImage)
++set(FreeImage_LIBRARY_DBG "-lFreeImaged")
++set(FreeImage_LIBRARY_REL "-lFreeImage")
+ macro_log_feature(FreeImage_FOUND "freeimage" "Support for commonly used graphics image formats" "http://freeimage.sourceforge.net")
+
+ # Find FreeType
+-find_package(Freetype)
++find_package(FREETYPE NAMES freetype)
+ macro_log_feature(FREETYPE_FOUND "freetype" "Portable font engine" "http://www.freetype.org")
+
+ # Find X11
+@@ -281,13 +284,17 @@ endif ()
+ macro_log_feature(ENV{VULKAN_SDK} "Vulkan SDK" "Vulkan RenderSystem, glslang Plugin. Alternatively use system packages" "https://vulkan.lunarg.com/")
+
+ # OpenEXR
+-find_package(OpenEXR)
++find_package(IMath CONFIG)
++find_package(OPENEXR NAMES OpenEXR)
++set(OPENEXR_LIBRARIES OpenEXR::OpenEXR Imath::Imath)
+ macro_log_feature(OPENEXR_FOUND "OpenEXR" "Load High dynamic range images" "http://www.openexr.com/")
+
+ # Python
+ set(Python_ADDITIONAL_VERSIONS 3.4) # allows using python3 on Ubuntu 14.04
+-find_package(PythonInterp)
+-find_package(PythonLibs)
++find_package(Python3 COMPONENTS Development Interpreter) # Interpreter is needed for Python3_FOUND
++set(PYTHONLIBS_FOUND "${Python3_FOUND}")
++set(PYTHON_INCLUDE_PATH "${Python3_INCLUDE_DIRS}")
++set(PYTHON_LIBRARIES "${Python3_LIBRARIES}")
+ macro_log_feature(PYTHONLIBS_FOUND "Python" "Language bindings to use OGRE from Python" "http://www.python.org/")
+
+ # SWIG
+@@ -295,7 +302,7 @@ find_package(SWIG 3.0.8 QUIET)
+ macro_log_feature(SWIG_FOUND "SWIG" "Language bindings (Python, Java, C#) for OGRE" "http://www.swig.org/")
+
+ # pugixml
+-find_package(pugixml QUIET)
++find_package(pugixml CONFIG REQUIRED)
+ macro_log_feature(pugixml_FOUND "pugixml" "Needed for XMLConverter and DotScene Plugin" "https://pugixml.org/")
+
+ # Find zlib
+@@ -303,7 +310,7 @@ find_package(ZLIB)
+ macro_log_feature(ZLIB_FOUND "zlib" "Simple data compression library" "http://www.zlib.net")
+
+ # Assimp
+-find_package(assimp QUIET)
++find_package(assimp CONFIG)
+ macro_log_feature(assimp_FOUND "Assimp" "Needed for the AssimpLoader Plugin" "https://www.assimp.org/")
+
+ # Bullet
+@@ -311,6 +318,8 @@ find_package(Bullet QUIET)
+ macro_log_feature(BULLET_FOUND "Bullet" "Bullet physics" "https://pybullet.org")
+
+ if(assimp_FOUND)
++ add_library(fix::assimp ALIAS assimp::assimp)
++elseif(0)
+ # workaround horribly broken assimp cmake, fixed with assimp 5.1
+ add_library(fix::assimp INTERFACE IMPORTED)
+ set_target_properties(fix::assimp PROPERTIES
+@@ -329,7 +338,7 @@ endif()
+ # Find sdl2
+ if(NOT ANDROID AND NOT EMSCRIPTEN)
+ # find script does not work in cross compilation environment
+- find_package(SDL2 QUIET)
++ find_package(SDL2 CONFIG REQUIRED)
+ macro_log_feature(SDL2_FOUND "SDL2" "Simple DirectMedia Library needed for input handling in samples" "https://www.libsdl.org/")
+ if(SDL2_FOUND AND NOT TARGET SDL2::SDL2)
+ add_library(SDL2::SDL2 INTERFACE IMPORTED)
+diff --git a/CMake/Templates/OGREConfig.cmake.in b/CMake/Templates/OGREConfig.cmake.in
+index 2047f66..a5c7cd0 100644
+--- a/CMake/Templates/OGREConfig.cmake.in
++++ b/CMake/Templates/OGREConfig.cmake.in
+@@ -35,6 +35,25 @@ set(OGRE_LIBRARIES)
+ cmake_policy(PUSH)
+ cmake_policy(SET CMP0012 NEW)
+
++include(CMakeFindDependencyMacro)
++find_dependency(pugixml CONFIG)
++find_dependency(SDL2 CONFIG)
++find_dependency(ZLIB)
++find_dependency(freetype CONFIG)
++if (@OGRE_BUILD_COMPONENT_OVERLAY_IMGUI@)
++ find_dependency(imgui CONFIG)
++endif()
++if(@OGRE_BUILD_PLUGIN_ASSIMP@)
++ find_dependency(assimp CONFIG)
++endif()
++if(@OGRE_BUILD_PLUGIN_FREEIMAGE@)
++ find_dependency(freeimage CONFIG)
++endif()
++if(@OGRE_BUILD_PLUGIN_EXRCODEC@)
++ find_dependency(Imath CONFIG)
++ find_dependency(OpenEXR CONFIG)
++endif()
++
+ if(@OGRE_THREAD_PROVIDER@ EQUAL 1)
+ list(APPEND OGRE_INCLUDE_DIRS @Boost_INCLUDE_DIRS@)
+ endif()
+diff --git a/Components/Bites/CMakeLists.txt b/Components/Bites/CMakeLists.txt
+index 9e990b8..16c0ae4 100644
+--- a/Components/Bites/CMakeLists.txt
++++ b/Components/Bites/CMakeLists.txt
+@@ -185,6 +185,12 @@ elseif(NOT EMSCRIPTEN)
+ message(WARNING "SDL2 not found - no input handling and reduced window creation capabilites")
+ endif()
+
++if(OGRE_BUILD_COMPONENT_OVERLAY_IMGUI)
++ find_package(imgui CONFIG REQUIRED)
++ find_path(IMGUI_DIR NAMES imgui.h)
++ target_link_libraries(OgreBites PRIVATE imgui::imgui)
++endif()
++
+ generate_export_header(OgreBites
+ EXPORT_MACRO_NAME _OgreBitesExport
+ EXPORT_FILE_NAME ${PROJECT_BINARY_DIR}/include/OgreBitesPrerequisites.h)
+diff --git a/Components/Bites/src/OgreImGuiInputListener.cpp b/Components/Bites/src/OgreImGuiInputListener.cpp
+index 3cb2379..5629bb5 100644
+--- a/Components/Bites/src/OgreImGuiInputListener.cpp
++++ b/Components/Bites/src/OgreImGuiInputListener.cpp
+@@ -116,7 +116,7 @@ static bool keyEvent(const KeyboardEvent& arg)
+ if (key == ImGuiKey_None)
+ return io.WantCaptureKeyboard;
+
+- io.AddKeyEvent(ImGuiKey(key), arg.type == OgreBites::KEYDOWN);
++ io.AddKeyEvent(static_cast<ImGuiKey>(key), arg.type == OgreBites::KEYDOWN);
+ return io.WantCaptureKeyboard;
+ }
+
+diff --git a/Components/Overlay/CMakeLists.txt b/Components/Overlay/CMakeLists.txt
+index 41bd634..87f1406 100644
+--- a/Components/Overlay/CMakeLists.txt
++++ b/Components/Overlay/CMakeLists.txt
+@@ -19,6 +19,8 @@ list(APPEND HEADER_FILES
+ file(GLOB SOURCE_FILES "${CMAKE_CURRENT_SOURCE_DIR}/src/*.cpp")
+
+ if(OGRE_BUILD_COMPONENT_OVERLAY_IMGUI)
++ find_package(imgui CONFIG REQUIRED)
++elseif(0)
+ set(IMGUI_DIR "${PROJECT_BINARY_DIR}/imgui-1.91.2" CACHE PATH "")
+ if(NOT EXISTS ${IMGUI_DIR})
+ message(STATUS "Downloading imgui")
+@@ -63,6 +65,8 @@ elseif(UNIX)
+ endif()
+
+ if(OGRE_BUILD_COMPONENT_OVERLAY_IMGUI)
++ target_link_libraries(OgreOverlay PUBLIC OgreMain PRIVATE imgui::imgui)
++elseif(0)
+ target_include_directories(OgreOverlay PUBLIC
+ PUBLIC "$<BUILD_INTERFACE:${IMGUI_DIR}>"
+ PRIVATE "$<BUILD_INTERFACE:${IMGUI_DIR}/misc/freetype>")
+diff --git a/PlugIns/EXRCodec/src/OgreEXRCodec.cpp b/PlugIns/EXRCodec/src/OgreEXRCodec.cpp
+index efd4b32..1e3ea23 100644
+--- a/PlugIns/EXRCodec/src/OgreEXRCodec.cpp
++++ b/PlugIns/EXRCodec/src/OgreEXRCodec.cpp
+@@ -36,6 +36,9 @@ THE SOFTWARE.
+ #include "O_IStream.h"
+
+ #include <cmath>
++#include <ImathBox.h>
++#include <ImfFrameBuffer.h>
++#include <ImfHeader.h>
+ #include <ImfOutputFile.h>
+ #include <ImfInputFile.h>
+ #include <ImfChannelList.h>
+diff --git a/PlugIns/STBICodec/CMakeLists.txt b/PlugIns/STBICodec/CMakeLists.txt
+index 10283f5..e7edfd3 100644
+--- a/PlugIns/STBICodec/CMakeLists.txt
++++ b/PlugIns/STBICodec/CMakeLists.txt
+@@ -19,8 +19,10 @@ endif()
+ add_library(Codec_STBI ${OGRE_LIB_TYPE} ${HEADER_FILES} ${SOURCES})
+ target_link_libraries(Codec_STBI PUBLIC OgreMain)
+
++find_path(STB_INCLUDE_DIRS "stb_image.h")
+ target_include_directories(Codec_STBI PUBLIC
+ "$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>"
++ "$<BUILD_INTERFACE:${STB_INCLUDE_DIRS}>"
+ $<INSTALL_INTERFACE:include/OGRE/Plugins/STBICodec>)
+
+ if(CMAKE_COMPILER_IS_GNUCXX)
+diff --git a/PlugIns/STBICodec/src/OgreSTBICodec.cpp b/PlugIns/STBICodec/src/OgreSTBICodec.cpp
+index c5a4d4b..df648d7 100644
+--- a/PlugIns/STBICodec/src/OgreSTBICodec.cpp
++++ b/PlugIns/STBICodec/src/OgreSTBICodec.cpp
+@@ -40,7 +40,7 @@ THE SOFTWARE.
+ #define STBI_NO_STDIO
+ #define STB_IMAGE_IMPLEMENTATION
+ #define STB_IMAGE_STATIC
+-#include "stbi/stb_image.h"
++#include "stb_image.h"
+
+ #ifdef HAVE_ZLIB
+ #include <zlib.h>
+@@ -63,7 +63,7 @@ static Ogre::uchar* custom_zlib_compress(Ogre::uchar* data, int data_len, int* o
+
+ #define STB_IMAGE_WRITE_IMPLEMENTATION
+ #define STBI_WRITE_NO_STDIO
+-#include "stbi/stb_image_write.h"
++#include "stb_image_write.h"
+
+ namespace Ogre {
+
+@@ -74,7 +74,7 @@ namespace Ogre {
+ stbi_convert_iphone_png_to_rgb(1);
+ stbi_set_unpremultiply_on_load(1);
+
+- LogManager::getSingleton().logMessage("stb_image - v2.30 - public domain image loader");
++ LogManager::getSingleton().logMessage("stb_image - public domain image loader");
+
+ // Register codecs
+ String exts = "jpeg,jpg,png,bmp,psd,tga,gif,pic,ppm,pgm,hdr";
diff --git a/vcpkg/ports/ogre/pkgconfig.patch b/vcpkg/ports/ogre/pkgconfig.patch
new file mode 100644
index 0000000..ac63f21
--- /dev/null
+++ b/vcpkg/ports/ogre/pkgconfig.patch
@@ -0,0 +1,30 @@
+diff --git a/CMake/InstallResources.cmake b/CMake/InstallResources.cmake
+index cc8b28b..1d68c09 100644
+--- a/CMake/InstallResources.cmake
++++ b/CMake/InstallResources.cmake
+@@ -299,6 +299,13 @@ if (UNIX OR MINGW)
+ else()
+ set(OGRE_ADDITIONAL_LIBS "${OGRE_ADDITIONAL_LIBS} ${FreeImage_LIBRARY_REL}")
+ endif()
++ set(PC_REQUIRES_STATIC "")
++ if(OGRE_BUILD_COMPONENT_OVERLAY)
++ string(APPEND PC_REQUIRES_STATIC " freetype2")
++ endif()
++ if(X11_X11_LIB)
++ string(APPEND PC_REQUIRES_STATIC " x11 xt xaw7 gl")
++ endif()
+ configure_file(${OGRE_TEMPLATES_DIR}/OGREStatic.pc.in ${PROJECT_BINARY_DIR}/pkgconfig/OGRE.pc @ONLY)
+ else ()
+ configure_file(${OGRE_TEMPLATES_DIR}/OGRE.pc.in ${PROJECT_BINARY_DIR}/pkgconfig/OGRE.pc @ONLY)
+diff --git a/CMake/Templates/OGREStatic.pc.in b/CMake/Templates/OGREStatic.pc.in
+index ff3c7c8..b3024c1 100644
+--- a/CMake/Templates/OGREStatic.pc.in
++++ b/CMake/Templates/OGREStatic.pc.in
+@@ -8,6 +8,6 @@ Name: OGRE (static lib)
+ Description: Object-Oriented Graphics Rendering Engine
+ Version: @OGRE_VERSION@
+ URL: http://www.ogre3d.org
+-Requires: freetype2, zziplib, gl, x11, xt, xaw7, wayland
++Requires: @PC_REQUIRES_STATIC@
+ Libs: -L${libdir} -L${plugindir} -lOgreMain@OGRE_LIB_SUFFIX@ @OGRE_ADDITIONAL_LIBS@
+ Cflags: -I${includedir} -I${includedir}/OGRE @OGRE_CFLAGS@
diff --git a/vcpkg/ports/ogre/portfile.cmake b/vcpkg/ports/ogre/portfile.cmake
new file mode 100644
index 0000000..41830bd
--- /dev/null
+++ b/vcpkg/ports/ogre/portfile.cmake
@@ -0,0 +1,176 @@
+if (EXISTS "${CURRENT_INSTALLED_DIR}/Media/HLMS/Blendfunctions_piece_fs.glslt")
+ message(FATAL_ERROR "FATAL ERROR: ogre-next and ogre are incompatible.")
+endif()
+
+if(NOT VCPKG_TARGET_IS_WINDOWS AND NOT VCPKG_TARGET_IS_OSX)
+ message("${PORT} currently requires the following library from the system package manager:\n Xaw\n\nIt can be installed on Ubuntu systems via apt-get install libxaw7-dev")
+endif()
+
+if(VCPKG_TARGET_IS_ANDROID OR VCPKG_TARGET_IS_IOS OR VCPKG_TARGET_IS_EMSCRIPTEN)
+ vcpkg_check_linkage(ONLY_STATIC_LIBRARY)
+endif()
+
+vcpkg_from_github(
+ OUT_SOURCE_PATH SOURCE_PATH
+ REPO OGRECave/ogre
+ REF "v${VERSION}"
+ SHA512 637dfa427c2094688fda850a46746734dafb29eaee4d28c7f294db9ccfc2b53eb05f4d34460926807658db3c8cb614b7669d3fb190e7c8a9ee9bd1d68adf0a64
+ HEAD_REF master
+ PATCHES
+ fix-dependencies.patch
+ cfg-rel-paths.patch
+ swig-python-polyfill.patch
+ pkgconfig.patch
+ same-install-rules-all-platforms.patch
+ cmake4.patch
+)
+
+file(REMOVE "${SOURCE_PATH}/CMake/Packages/FindOpenEXR.cmake")
+
+string(COMPARE EQUAL "${VCPKG_LIBRARY_LINKAGE}" "static" OGRE_STATIC)
+string(COMPARE EQUAL "${VCPKG_CRT_LINKAGE}" "static" OGRE_CONFIG_STATIC_LINK_CRT)
+
+vcpkg_check_features(OUT_FEATURE_OPTIONS FEATURE_OPTIONS
+ FEATURES
+ assimp OGRE_BUILD_PLUGIN_ASSIMP
+ assimp CMAKE_REQUIRE_FIND_PACKAGE_assimp
+ bullet OGRE_BUILD_COMPONENT_BULLET
+ bullet CMAKE_REQUIRE_FIND_PACKAGE_Bullet
+ d3d9 OGRE_BUILD_RENDERSYSTEM_D3D9
+ freeimage OGRE_BUILD_PLUGIN_FREEIMAGE
+ freeimage CMAKE_REQUIRE_FIND_PACKAGE_FreeImage
+ java OGRE_BUILD_COMPONENT_JAVA
+ openexr OGRE_BUILD_PLUGIN_EXRCODEC
+ openexr CMAKE_REQUIRE_FIND_PACKAGE_OpenEXR
+ python OGRE_BUILD_COMPONENT_PYTHON
+ python CMAKE_REQUIRE_FIND_PACKAGE_Python3
+ csharp OGRE_BUILD_COMPONENT_CSHARP
+ overlay OGRE_BUILD_COMPONENT_OVERLAY
+ zip OGRE_CONFIG_ENABLE_ZIP
+ strict OGRE_RESOURCEMANAGER_STRICT
+ tools OGRE_BUILD_TOOLS
+ tools OGRE_INSTALL_TOOLS
+ INVERTED_FEATURES
+ assimp CMAKE_DISABLE_FIND_PACKAGE_assimp
+ bullet CMAKE_DISABLE_FIND_PACKAGE_Bullet
+ python CMAKE_DISABLE_FIND_PACKAGE_Python3
+)
+
+if("java" IN_LIST FEATURES OR "python" IN_LIST FEATURES OR "csharp" IN_LIST FEATURES)
+ list(APPEND FEATURE_OPTIONS "-DCMAKE_REQUIRE_FIND_PACKAGE_SWIG=ON")
+ vcpkg_find_acquire_program(SWIG)
+ vcpkg_list(APPEND FEATURE_OPTIONS "-DSWIG_EXECUTABLE=${SWIG}")
+endif()
+
+# OGRE_RESOURCEMANAGER_STRICT need to be 0 for OFF and 1 for ON, because it is used 'as is' in sources
+string(REPLACE "OGRE_RESOURCEMANAGER_STRICT=ON" "OGRE_RESOURCEMANAGER_STRICT=1" FEATURE_OPTIONS "${FEATURE_OPTIONS}")
+string(REPLACE "OGRE_RESOURCEMANAGER_STRICT=OFF" "OGRE_RESOURCEMANAGER_STRICT=0" FEATURE_OPTIONS "${FEATURE_OPTIONS}")
+
+vcpkg_cmake_configure(
+ SOURCE_PATH "${SOURCE_PATH}"
+ OPTIONS
+ ${FEATURE_OPTIONS}
+ -DOGRE_CFG_INSTALL_PATH=etc/${PORT}
+ -DOGRE_CMAKE_DIR=share/${PORT}
+ -DOGRE_MEDIA_PATH=share/${PORT}/Media
+ -DOGRE_PLUGINS_PATH=plugins/${PORT}
+ -DOGRE_BUILD_DEPENDENCIES=OFF
+ -DOGRE_BUILD_LIBS_AS_FRAMEWORKS=OFF
+ -DOGRE_BUILD_SAMPLES=OFF
+ -DOGRE_BUILD_TESTS=OFF
+ -DOGRE_BUILD_MSVC_MP=ON
+ -DOGRE_BUILD_MSVC_ZM=ON
+ -DOGRE_COPY_DEPENDENCIES=OFF
+ -DOGRE_ENABLE_PRECOMPILED_HEADERS=OFF
+ -DOGRE_INSTALL_DEPENDENCIES=OFF
+ -DOGRE_INSTALL_DOCS=OFF
+ -DOGRE_INSTALL_PDB=OFF
+ -DOGRE_INSTALL_SAMPLES=OFF
+ -DOGRE_INSTALL_VSPROPS=OFF
+ -DOGRE_STATIC=${OGRE_STATIC}
+ -DOGRE_CONFIG_STATIC_LINK_CRT=${OGRE_CONFIG_STATIC_LINK_CRT}
+ -DOGRE_CONFIG_THREAD_PROVIDER=std
+ -DOGRE_BUILD_RENDERSYSTEM_D3D11=ON
+ -DOGRE_BUILD_RENDERSYSTEM_GL=ON
+ -DOGRE_BUILD_RENDERSYSTEM_GL3PLUS=ON
+ -DOGRE_BUILD_RENDERSYSTEM_GLES=OFF
+ -DOGRE_BUILD_RENDERSYSTEM_GLES2=OFF
+ -DCMAKE_REQUIRE_FIND_PACKAGE_FREETYPE=ON
+ -DCMAKE_REQUIRE_FIND_PACKAGE_pugixml=ON
+ -DCMAKE_REQUIRE_FIND_PACKAGE_ZLIB=ON
+ -DCMAKE_DISABLE_FIND_PACKAGE_Doxygen=ON
+ -DCMAKE_DISABLE_FIND_PACKAGE_QT=ON
+ -DCMAKE_DISABLE_FIND_PACKAGE_Qt5=ON
+ -DCMAKE_DISABLE_FIND_PACKAGE_Qt6=ON
+ OPTIONS_DEBUG
+ -DOGRE_BUILD_TOOLS=OFF
+ -DOGRE_INSTALL_TOOLS=OFF
+ MAYBE_UNUSED_VARIABLES
+ CMAKE_DISABLE_FIND_PACKAGE_Qt5
+ CMAKE_DISABLE_FIND_PACKAGE_Qt6
+ CMAKE_REQUIRE_FIND_PACKAGE_OpenEXR
+ OGRE_COPY_DEPENDENCIES
+ OGRE_BUILD_MSVC_MP
+ OGRE_BUILD_MSVC_ZM
+ OGRE_BUILD_RENDERSYSTEM_GLES
+ OGRE_INSTALL_DEPENDENCIES
+ OGRE_INSTALL_VSPROPS
+)
+
+vcpkg_cmake_install()
+vcpkg_copy_pdbs()
+
+vcpkg_cmake_config_fixup()
+vcpkg_fixup_pkgconfig()
+
+
+if(NOT VCPKG_BUILD_TYPE)
+ vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/debug/etc/${PORT}/resources.cfg" "=../../share" "=../../../share")
+ vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/debug/etc/${PORT}/resources.cfg" "[Tests]\nFileSystem=${CURRENT_PACKAGES_DIR}/debug/Tests/Media" "" IGNORE_UNCHANGED)
+ vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/share/${PORT}/OgreTargets-debug.cmake" "${_IMPORT_PREFIX}/plugins" "${_IMPORT_PREFIX}/debug/plugins" IGNORE_UNCHANGED)
+endif()
+vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/etc/${PORT}/resources.cfg" "[Tests]\nFileSystem=${CURRENT_PACKAGES_DIR}/Tests/Media" "" IGNORE_UNCHANGED)
+
+file(REMOVE_RECURSE
+ "${CURRENT_PACKAGES_DIR}/etc/ogre/samples.cfg"
+ "${CURRENT_PACKAGES_DIR}/debug/etc/ogre/samples.cfg"
+ "${CURRENT_PACKAGES_DIR}/debug/include"
+ "${CURRENT_PACKAGES_DIR}/debug/share"
+)
+
+set(tools OgreMeshUpgrader OgreXMLConverter VRMLConverter)
+if(OGRE_BUILD_PLUGIN_ASSIMP)
+ list(APPEND tools OgreAssimpConverter)
+endif()
+if(OGRE_BUILD_TOOLS)
+ vcpkg_copy_tools(TOOL_NAMES ${tools} AUTO_CLEAN)
+endif()
+
+#Remove OgreMain*.lib from lib/ folder, because autolink would complain, since it defines a main symbol
+#manual-link subfolder is here to the rescue!
+if(VCPKG_TARGET_IS_WINDOWS AND NOT VCPKG_TARGET_IS_MINGW)
+ file(MAKE_DIRECTORY "${CURRENT_PACKAGES_DIR}/lib/manual-link")
+ if(VCPKG_LIBRARY_LINKAGE STREQUAL "dynamic")
+ file(RENAME "${CURRENT_PACKAGES_DIR}/lib/OgreMain.lib" "${CURRENT_PACKAGES_DIR}/lib/manual-link/OgreMain.lib")
+ else()
+ file(RENAME "${CURRENT_PACKAGES_DIR}/lib/OgreMainStatic.lib" "${CURRENT_PACKAGES_DIR}/lib/manual-link/OgreMainStatic.lib")
+ endif()
+ if(NOT VCPKG_BUILD_TYPE)
+ file(MAKE_DIRECTORY "${CURRENT_PACKAGES_DIR}/debug/lib/manual-link")
+ if(VCPKG_LIBRARY_LINKAGE STREQUAL "dynamic")
+ file(RENAME "${CURRENT_PACKAGES_DIR}/debug/lib/OgreMain_d.lib" "${CURRENT_PACKAGES_DIR}/debug/lib/manual-link/OgreMain_d.lib")
+ else()
+ file(RENAME "${CURRENT_PACKAGES_DIR}/debug/lib/OgreMainStatic_d.lib" "${CURRENT_PACKAGES_DIR}/debug/lib/manual-link/OgreMainStatic_d.lib")
+ endif()
+ endif()
+
+ file(GLOB SHARE_FILES "${CURRENT_PACKAGES_DIR}/share/ogre/*.cmake")
+ foreach(SHARE_FILE ${SHARE_FILES})
+ file(READ "${SHARE_FILE}" _contents)
+ string(REPLACE "lib/OgreMain" "lib/manual-link/OgreMain" _contents "${_contents}")
+ file(WRITE "${SHARE_FILE}" "${_contents}")
+ endforeach()
+endif()
+
+# Handle copyright
+vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/LICENSE")
diff --git a/vcpkg/ports/ogre/same-install-rules-all-platforms.patch b/vcpkg/ports/ogre/same-install-rules-all-platforms.patch
new file mode 100644
index 0000000..06f72ba
--- /dev/null
+++ b/vcpkg/ports/ogre/same-install-rules-all-platforms.patch
@@ -0,0 +1,14 @@
+diff --git a/CMake/Utils/OgreConfigTargets.cmake b/CMake/Utils/OgreConfigTargets.cmake
+index c4e6de8..e92da59 100644
+--- a/CMake/Utils/OgreConfigTargets.cmake
++++ b/CMake/Utils/OgreConfigTargets.cmake
+@@ -56,9 +56,6 @@ elseif (UNIX)
+ set(OGRE_LIB_RELEASE_PATH "")
+ set(OGRE_LIB_RELWDBG_PATH "")
+ set(OGRE_LIB_DEBUG_PATH "")
+- if(APPLE AND NOT APPLE_IOS)
+- set(OGRE_RELEASE_PATH "/${PLATFORM_NAME}")
+- endif()
+ if(APPLE AND APPLE_IOS)
+ set(OGRE_LIB_RELEASE_PATH "/Release")
+ endif(APPLE AND APPLE_IOS)
diff --git a/vcpkg/ports/ogre/swig-python-polyfill.patch b/vcpkg/ports/ogre/swig-python-polyfill.patch
new file mode 100644
index 0000000..f8e2b42
--- /dev/null
+++ b/vcpkg/ports/ogre/swig-python-polyfill.patch
@@ -0,0 +1,19 @@
+diff --git a/Components/Python/CMakeLists.txt b/Components/Python/CMakeLists.txt
+index b6062c6..df955e3 100644
+--- a/Components/Python/CMakeLists.txt
++++ b/Components/Python/CMakeLists.txt
+@@ -22,7 +22,14 @@ if(OGRE_BUILD_COMPONENT_OVERLAY_IMGUI)
+ list(APPEND CMAKE_SWIG_FLAGS -DHAVE_IMGUI -DIMGUI_DISABLE_OBSOLETE_FUNCTIONS)
+ endif()
+
++# cf. https://github.com/swig/swig/pull/1587
++file(GENERATE OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/pyobject_gc_polyfill.h" CONTENT [[
++#define _PyObject_GC_UNTRACK(x) PyObject_GC_UnTrack(x)
++]])
+ macro(ogre_python_module target)
++ if(SWIG_FOUND AND SWIG_VERSION VERSION_LESS "4.0.1" AND Python3_VERSION VERSION_GREATER_EQUAL "3.8")
++ target_precompile_headers(${SWIG_MODULE_${target}_REAL_NAME} PRIVATE "${CMAKE_CURRENT_BINARY_DIR}/pyobject_gc_polyfill.h")
++ endif()
+ set_target_properties(${target} PROPERTIES DEBUG_POSTFIX "")
+ install(TARGETS ${target} LIBRARY DESTINATION ${PYTHON_SITE_PACKAGES})
+ install(FILES ${PROJECT_BINARY_DIR}/Components/Python/${target}.py DESTINATION ${PYTHON_SITE_PACKAGES})
diff --git a/vcpkg/ports/ogre/vcpkg.json b/vcpkg/ports/ogre/vcpkg.json
new file mode 100644
index 0000000..69badf4
--- /dev/null
+++ b/vcpkg/ports/ogre/vcpkg.json
@@ -0,0 +1,117 @@
+{
+ "name": "ogre",
+ "version": "14.3.2",
+ "port-version": 1,
+ "description": "3D Object-Oriented Graphics Rendering Engine",
+ "homepage": "https://github.com/OGRECave/ogre",
+ "license": "MIT",
+ "supports": "!uwp",
+ "dependencies": [
+ {
+ "name": "freetype",
+ "default-features": false
+ },
+ "pugixml",
+ {
+ "name": "sdl2",
+ "platform": "!android"
+ },
+ "stb",
+ {
+ "name": "vcpkg-cmake",
+ "host": true
+ },
+ {
+ "name": "vcpkg-cmake-config",
+ "host": true
+ },
+ "zlib"
+ ],
+ "default-features": [
+ "assimp",
+ "freeimage",
+ "overlay",
+ "zip"
+ ],
+ "features": {
+ "assimp": {
+ "description": "Build with assimp support",
+ "dependencies": [
+ "assimp"
+ ]
+ },
+ "bullet": {
+ "description": "Build with bullet physics support",
+ "dependencies": [
+ "bullet3"
+ ]
+ },
+ "csharp": {
+ "description": "Build csharp bindings",
+ "supports": "!static & !android & !ios & !emscripten"
+ },
+ "d3d9": {
+ "description": "Build Direct3D9 RenderSystem",
+ "supports": "windows"
+ },
+ "freeimage": {
+ "description": "Build with FreeImage support (no effect for Emscripten)",
+ "dependencies": [
+ {
+ "name": "freeimage",
+ "platform": "!emscripten"
+ }
+ ]
+ },
+ "java": {
+ "description": "Build Java (JNI) bindings",
+ "supports": "!static & !android & !ios & !emscripten"
+ },
+ "openexr": {
+ "description": "Build with OpenEXR support",
+ "dependencies": [
+ "openexr"
+ ]
+ },
+ "overlay": {
+ "description": "Build overlay component",
+ "dependencies": [
+ {
+ "name": "imgui",
+ "features": [
+ "freetype"
+ ]
+ }
+ ]
+ },
+ "python": {
+ "description": "Build Python bindings",
+ "supports": "!static & !android & !ios & !emscripten",
+ "dependencies": [
+ "python3"
+ ]
+ },
+ "strict": {
+ "description": "Force Ogre resource manager to be strict with group names and resource names"
+ },
+ "tools": {
+ "description": "Build tools",
+ "supports": "!android & !emscripten"
+ },
+ "zip": {
+ "description": "Build ZIP archive support"
+ },
+ "zziplib": {
+ "description": "Obsolete, use zip feature instead",
+ "dependencies": [
+ {
+ "name": "ogre",
+ "default-features": false,
+ "features": [
+ "zip"
+ ]
+ }
+ ]
+ }
+ }
+}