diff --git a/recipes/ogre/1.x/CMakeLists.txt b/recipes/ogre/1.x/CMakeLists.txt new file mode 100644 index 0000000000000..4c95ca5e84716 --- /dev/null +++ b/recipes/ogre/1.x/CMakeLists.txt @@ -0,0 +1,7 @@ +cmake_minimum_required(VERSION 3.10.2) +project(cmake_wrapper) + +include(conanbuildinfo.cmake) +conan_basic_setup(TARGETS) + +add_subdirectory(source_subfolder) diff --git a/recipes/ogre/1.x/conandata.yml b/recipes/ogre/1.x/conandata.yml new file mode 100644 index 0000000000000..2943bef50eb12 --- /dev/null +++ b/recipes/ogre/1.x/conandata.yml @@ -0,0 +1,8 @@ +sources: + "1.10.2": + url: "https://github.com/OGRECave/ogre/archive/refs/tags/v1.10.2.tar.gz" + sha256: "db022c682376ace2abc45b42802048ad3a8458f5052cbc180b5fb470e4f06a53" +patches: + "1.10.2": + - base_path: "source_subfolder" + patch_file: "patches/0001-ogre-1.10.2-cmake-fixes.patch" diff --git a/recipes/ogre/1.x/conanfile.py b/recipes/ogre/1.x/conanfile.py new file mode 100644 index 0000000000000..3a275358024c4 --- /dev/null +++ b/recipes/ogre/1.x/conanfile.py @@ -0,0 +1,368 @@ +import os +from conans import CMake, ConanFile, tools +from conans.errors import ConanInvalidConfiguration, ConanException +import conan.tools.files +import textwrap, shutil +import functools + +class ogrecmakeconan(ConanFile): + name = "ogre" + license = "MIT" + homepage = "https://github.com/OGRECave/ogre" + url = "https://github.com/conan-io/conan-center-index" + description = "A scene-oriented, flexible 3D engine written in C++ " + topics = ("graphics", "rendering", "engine", "c++") + + settings = "os", "compiler", "build_type", "arch" + + generators = "cmake", "cmake_find_package" + exports_sources = "CMakeLists.txt", "patches/**" + + options = { + "shared": [True, False], + "fPIC": [True, False], + "cp_bin_dir": "ANY", + "cp_media_dir": "ANY", + "disable_plugins": [True, False], + "assert_mode": "ANY", + "build_component_bites": [True, False], + "build_component_hlms": [True, False], + "build_component_meshlodgenerator": [True, False], + "build_component_overlay": [True, False], + "build_component_paging": [True, False], + "build_component_property": [True, False], + "build_component_python": [True, False], + "build_component_rtshadersystem": [True, False], + "build_component_terrain": [True, False], + "build_component_volume": [True, False], + "build_dependencies": [True, False], + "build_plugin_bsp": [True, False], + "build_plugin_octree": [True, False], + "build_plugin_pcz": [True, False], + "build_plugin_pfx": [True, False], + "build_rendersystem_d3d11": [True, False], + "build_rendersystem_gl": [True, False], + "build_rendersystem_gl3plus": [True, False], + "build_samples": [True, False], + "build_tests": [True, False], + "build_tools": [True, False], + "config_enable_quad_buffer_stereo": [True, False], + "config_filesystem_unicode": [True, False], + "config_threads": "ANY", + "config_thread_provider": "ANY", + "config_enable_freeimage": [True, False], + "install_pdb": [True, False], + "install_samples": [True, False], + "install_tools": [True, False], + "install_vsprops": [True, False], + "resourcemanager_strict": "ANY", + "set_double": [True, False], + "glsupport_use_egl": [True, False] + } + + default_options = { + "shared": False, + "fPIC": True, + "cp_bin_dir": "bin", + "cp_media_dir": "Media", + "disable_plugins": False, + "assert_mode": 1, + "build_component_bites": True, + "build_component_hlms": True, + "build_component_meshlodgenerator": True, + "build_component_overlay": True, + "build_component_paging": True, + "build_component_property": True, + "build_component_python": False, + "build_component_rtshadersystem": True, + "build_component_terrain": True, + "build_component_volume": True, + "build_dependencies": False, + "build_plugin_bsp": True, + "build_plugin_octree": True, + "build_plugin_pcz": True, + "build_plugin_pfx": True, + "build_rendersystem_d3d11": True, + "build_rendersystem_gl": True, + "build_rendersystem_gl3plus": True, + "build_samples": False, + "build_tests": False, + "build_tools": True, + "config_enable_quad_buffer_stereo": False, + "config_filesystem_unicode": True, + "config_threads": 3, + "config_thread_provider": "std", + "config_enable_freeimage": True, + "install_pdb": False, + "install_samples": False, + "install_tools": False, + "install_vsprops": False, + "resourcemanager_strict": 2, + "set_double": False, + "glsupport_use_egl": True + } + exports_sources = "CMakeLists.txt", "patches/**" + short_paths = True + + def requirements(self): + self.requires("cppunit/1.15.1") + self.requires("freeimage/3.18.0") + self.requires("boost/1.75.0") + self.requires("openexr/2.5.7") + self.requires("freetype/2.11.1") + self.requires("poco/1.11.2") + self.requires("tbb/2020.3") + self.requires("zlib/1.2.12") + self.requires("zziplib/0.13.71") + self.requires("openssl/1.1.1o", override=True) + self.requires("xorg/system") + self.requires("glu/system") + self.requires("sdl/2.0.20") + if self.options.glsupport_use_egl and self.settings.os in ["Linux", "FreeBSD"]: + self.requires("egl/system") + else: + self.requires("libglvnd/1.4.0") + + + def validate(self): + """ + OGRE 1.x is very old and will not work with latest gcc, clang and msvc compilers. + TODO: determine incompatible msvc compilers + """ + if self.settings.compiler == "gcc" and tools.Version(self.settings.compiler.version) >= 11: + raise ConanInvalidConfiguration("OGRE 1.x not supported with gcc version greater than 11") + if self.settings.compiler == "clang" and tools.Version(self.settings.compiler.version) >= 11: + raise ConanInvalidConfiguration("OGRE 1.x not supported with clang version greater than 11") + + miss_boost_required_comp = any(getattr(self.options["boost"], "without_{}".format(boost_comp), True) for boost_comp in self._required_boost_components) + if self.options["boost"].header_only or miss_boost_required_comp: + raise ConanInvalidConfiguration("OGRE requires these boost components: {}".format(", ".join(self._required_boost_components))) + + @property + def _source_subfolder(self): + return "source_subfolder" + + def config_options(self): + self.options.install_tools = self.options.build_tools + if self.settings.os == "Windows": + del self.options.fPIC + + def configure(self): + if self.options.shared: + del self.options.fPIC + self._strict_options_requirements() + + def _strict_options_requirements(self): + self.options["boost"].header_only = False + for boost_comp in self._required_boost_components: + setattr(self.options["boost"], "without_{}".format(boost_comp), False) + + @property + def _required_boost_components(self): + return ["date_time", "thread"] + + @functools.lru_cache(1) + def _configure_cmake(self): + cmake = CMake(self) + cmake.definitions["OGRE_STATIC"] = not self.options.shared + cmake.definitions["OGRE_CONFIG_DOUBLE"] = self.options.set_double + cmake.definitions["OGRE_CONFIG_NODE_INHERIT_TRANSFORM"] = False + cmake.definitions["OGRE_GLSUPPORT_USE_EGL"] = self.options.glsupport_use_egl + if self.settings.compiler.get_safe("cppstd"): + tools.check_min_cppstd(self, 11) + else: + # INFO: OpenEXR requires C++11 + cmake.definitions["CMAKE_CXX_STANDARD"] = 11 + cmake.definitions["OGRE_BUILD_TESTS"] = self.options.build_tests + cmake.definitions["OGRE_ASSERT_MODE"] = self.options.assert_mode + cmake.definitions["OGRE_BUILD_COMPONENT_BITES"] = self.options.build_component_bites + cmake.definitions["OGRE_BUILD_COMPONENT_HLMS"] = self.options.build_component_hlms + cmake.definitions["OGRE_BUILD_COMPONENT_MESHLODGENERATOR"] = self.options.build_component_meshlodgenerator + cmake.definitions["OGRE_BUILD_COMPONENT_OVERLAY"] = self.options.build_component_overlay + cmake.definitions["OGRE_BUILD_COMPONENT_PAGING"] = self.options.build_component_paging + cmake.definitions["OGRE_BUILD_COMPONENT_PROPERTY"] = self.options.build_component_property + cmake.definitions["OGRE_BUILD_COMPONENT_PYTHON"] = self.options.build_component_python + cmake.definitions["OGRE_BUILD_COMPONENT_RTSHADERSYSTEM"] = self.options.build_component_rtshadersystem + cmake.definitions["OGRE_BUILD_COMPONENT_TERRAIN"] = self.options.build_component_terrain + cmake.definitions["OGRE_BUILD_COMPONENT_VOLUME"] = self.options.build_component_volume + cmake.definitions["OGRE_BUILD_DEPENDENCIES"] = self.options.build_dependencies + cmake.definitions["OGRE_BUILD_PLUGIN_BSP"] = self.options.build_plugin_bsp + cmake.definitions["OGRE_BUILD_PLUGIN_OCTREE"] = self.options.build_plugin_octree + cmake.definitions["OGRE_BUILD_PLUGIN_PCZ"] = self.options.build_plugin_pcz + cmake.definitions["OGRE_BUILD_PLUGIN_PFX"] = self.options.build_plugin_pfx + cmake.definitions["OGRE_BUILD_RENDERSYSTEM_D3D11"] = self.options.build_rendersystem_d3d11 + cmake.definitions["OGRE_BUILD_RENDERSYSTEM_GL"] = self.options.build_rendersystem_gl + cmake.definitions["OGRE_BUILD_RENDERSYSTEM_GL3PLUS"] = self.options.build_rendersystem_gl3plus + cmake.definitions["OGRE_BUILD_SAMPLES"] = self.options.build_samples + cmake.definitions["OGRE_BUILD_TOOLS"] = self.options.build_tools + cmake.definitions["OGRE_CONFIG_ENABLE_QUAD_BUFFER_STEREO"] = self.options.config_enable_quad_buffer_stereo + cmake.definitions["OGRE_CONFIG_FILESYSTEM_UNICODE"] = self.options.config_filesystem_unicode + cmake.definitions["OGRE_CONFIG_THREADS"] = self.options.config_threads + cmake.definitions["OGRE_CONFIG_THREAD_PROVIDER"] = self.options.config_thread_provider + cmake.definitions["OGRE_CONFIG_ENABLE_FREEIMAGE"] = self.options.config_enable_freeimage + cmake.definitions["OGRE_INSTALL_PDB"] = self.options.install_pdb + cmake.definitions["OGRE_INSTALL_SAMPLES"] = self.options.install_samples + cmake.definitions["OGRE_INSTALL_TOOLS"] = self.options.install_tools + cmake.definitions["OGRE_RESOURCEMANAGER_STRICT"] = self.options.resourcemanager_strict + if self.settings.os == "Windows": + cmake.definitions["OGRE_INSTALL_VSPROPS"] = self.options.install_vsprops + cmake.configure() + return cmake + + + def source(self): + tools.get(**self.conan_data["sources"][self.version], destination=self._source_subfolder, strip_root=True) + def _patch_sources(self): + for patch in self.conan_data.get("patches", {}).get(self.version, []): + tools.patch(**patch) + # the pkgs below are not available as conan recipes yet + # TODO: delte line 200-208 once the conan recipes are available + ogre_pkg_modules = ["AMDQBS", "Cg", "HLSL2GLSL", "GLSLOptimizer", "OpenGLES", "OpenGLES2", "OpenGLES3", "SDL2", "Softimage", "Wix"] + ogre_pkg_module_path = os.path.join(self.build_folder, self._source_subfolder, "CMake", "Packages") + for pkg_module in ogre_pkg_modules: + pkg_path = os.path.join(ogre_pkg_module_path, f"Find{pkg_module}.cmake") + if os.path.isfile(pkg_path): + shutil.copy(pkg_path, self.build_folder) + else: + raise ConanException(f"The file Find{pkg_module}.cmake is not present in f{ogre_pkg_module_path}!") + + def build(self): + self._patch_sources() + cmake = self._configure_cmake() + cmake.build() + + def package(self): + cmake = self._configure_cmake() + cmake.install() + self.copy(pattern="License.md", dst="licenses", src=os.path.join(self._source_subfolder, "Docs")) + tools.rmdir(os.path.join(self.package_folder, "lib", "pkgconfig")) + tools.rmdir(os.path.join(self.package_folder, "lib", "share")) + tools.rmdir(os.path.join(self.package_folder, "lib", "OGRE", "cmake")) + tools.rmdir(os.path.join(self.package_folder, "share")) + self._create_cmake_module_variables( + os.path.join(self.package_folder, self._module_file_rel_path), + tools.Version(self.version) + ) + + + @staticmethod + def _create_cmake_module_variables(module_file, version): + content = textwrap.dedent("""\ + set(OGRE_PREFIX_DIR ${{CMAKE_CURRENT_LIST_DIR}}/../..) + set(OGRE{major}_VERSION_MAJOR {major}) + set(OGRE{major}_VERSION_MINOR {minor}) + set(OGRE{major}_VERSION_PATCH {patch}) + set(OGRE{major}_VERSION_STRING "{major}.{minor}.{patch}") + + set(OGRE_MEDIA_DIR "${{OGRE_PREFIX_DIR}}/share/OGRE/Media") + set(OGRE_PLUGIN_DIR "${{OGRE_PREFIX_DIR}}/lib/OGRE") + set(OGRE_CONFIG_DIR "${{OGRE_PREFIX_DIR}}/share/OGRE") + """.format(major=version.major, minor=version.minor, patch=version.patch)) + tools.save(module_file, content) + + + @property + def _components(self): + include_prefix = os.path.join("include", "OGRE") + plugin_lib_dir = os.path.join("lib", "OGRE") + components = { + "OgreMain": {"requires" : ["boost::boost", "cppunit::cppunit", "freeimage::freeimage", "openexr::openexr","freetype::freetype", + "sdl::sdl", "tbb::tbb", "xorg::xorg", "zlib::zlib", "zziplib::zziplib", "poco::poco","glu::glu", "egl::egl"], + "libs": ["OgreMain"], "include": [include_prefix], "libdirs" : ["lib"]}, + "Bites": {"requires" : ["OgreMain", "Overlay"], "libs": ["OgreBites"], + "include": ["include", include_prefix, f"{include_prefix}/Bites"], "libdirs" : ["lib"]}, + "HLMS" : {"requires" : ["OgreMain"], "libs": ["OgreHLMS"], + "include": ["include", include_prefix, f"{include_prefix}/HLMS"], "libdirs" : ["lib"]}, + "MeshLodGenerator" : {"requires" : ["OgreMain"], "libs": ["OgreMeshLodGenerator"], + "include": ["include", include_prefix, f"{include_prefix}/MeshLodGenerator"], "libdirs" : ["lib"]}, + "Overlay" : {"requires" : ["OgreMain"], "libs": ["OgreOverlay"], + "include": ["include", include_prefix, f"{include_prefix}/Overlay"], "libdirs" : ["lib"]}, + "Paging" : {"requires" : ["OgreMain"], "libs": ["OgrePaging"], + "include": ["include", include_prefix, f"{include_prefix}/Paging"], "libdirs" : ["lib"]}, + "Property" : {"requires" : ["OgreMain"], "libs": ["OgreProperty"], + "include": ["include", include_prefix, f"{include_prefix}/Property"], "libdirs" : ["lib"]}, + "RTShaderSystem" : {"requires" : ["OgreMain"], "libs": ["OgreRTShaderSystem"], + "include": ["include", include_prefix, f"{include_prefix}/RTShaderSystem"], "libdirs" : ["lib"]}, + "Terrain" : {"requires" : ["OgreMain"], "libs": ["OgreTerrain"], + "include": ["include", include_prefix, f"{include_prefix}/Terrain"], "libdirs" : ["lib"]}, + "Volume" : {"requires" : ["OgreMain"], "libs": ["OgreVolume"], + "include": ["include", include_prefix, f"{include_prefix}/Volume"], "libdirs" : ["lib"]} + + } + + if self.options.build_component_python: + components["Python"] = {"requires" : ["OgreMain"], "libs": ["OgrePython"], "include": ["include", include_prefix, f"{include_prefix}/Python"]} + + if self.options.build_plugin_bsp: + components["BSPSceneManager"] = {"requires" : ["OgreMain"], "libs": ["Plugin_BSPSceneManager"], + "libdirs" : ["lib", plugin_lib_dir], + "include": ["include", include_prefix, os.path.join(include_prefix, "Plugins", "BSPSceneManager")]} + + if self.options.build_plugin_octree: + components["OctreeSceneManager"] = {"requires" : ["OgreMain"], "libs": ["Plugin_OctreeSceneManager"], + "libdirs" : ["lib", plugin_lib_dir], + "include": ["include", include_prefix, os.path.join(include_prefix, "Plugins", "OctreeSceneManager")]} + + if self.options.build_plugin_pfx: + components["ParticleFX"] = {"requires" : ["OgreMain"], "libs": ["Plugin_ParticleFX"], + "libdirs" : ["lib", plugin_lib_dir], + "include": ["include", include_prefix, os.path.join(include_prefix, "Plugins", "ParticleFX")]} + + if self.options.build_plugin_pcz: + components["PCZSceneManager"] = {"requires" : ["OgreMain"], "libs": ["Plugin_PCZSceneManager"], + "libdirs" : ["lib", plugin_lib_dir], + "include": ["include", include_prefix, os.path.join(include_prefix, "Plugins", "PCZSceneManager")]} + + components["OctreeZone"] = {"requires" : ["OgreMain", "PCZSceneManager"], "libs": ["Plugin_OctreeZone"], + "libdirs" : ["lib", plugin_lib_dir], + "include": ["include", include_prefix, os.path.join(include_prefix, "Plugins", "OctreeZone")]} + + if not self.options.shared: + for _, values in components.items(): + libs = [lib + "Static" for lib in values.get("libs")] + values["libs"] = libs + + if self.options.build_tests: + components["OgreMain"]["requires"].append("cppunit::cppunit") + + if self.settings.build_type == "Debug": + for _, values in components.items(): + libs = [lib + "_d" for lib in values.get("libs")] + values["libs"] = libs + + + return components + + def package_info(self): + self.cpp_info.set_property("cmake_file_name", "OGRE") + self.cpp_info.names["cmake_find_package"] = "OGRE" + self.cpp_info.names["cmake_find_package_multi"] = "OGRE" + + for comp, values in self._components.items(): + self.cpp_info.components[comp].names["cmake_find_package"] = comp + self.cpp_info.components[comp].names["cmake_find_package_multi"] = comp + self.cpp_info.components[comp].names["cmake_paths"] = comp + self.cpp_info.components[comp].libs = values.get("libs") + self.cpp_info.components[comp].libdirs = values.get("libdirs") + self.cpp_info.components[comp].requires = values.get("requires") + self.cpp_info.components[comp].set_property("cmake_target_name", f"OGRE::{comp}") + self.cpp_info.components[comp].includedirs = values.get("include") + + self.cpp_info.components[comp].builddirs.append(self._module_file_rel_dir) + self.cpp_info.components[comp].build_modules["cmake_find_package"] = [self._module_file_rel_path] + self.cpp_info.components[comp].build_modules["cmake_find_package_multi"] = [self._module_file_rel_path] + self.cpp_info.components[comp].build_modules["cmake_paths"] = [self._module_file_rel_path] + self.cpp_info.components[comp].builddirs.append(self._module_file_rel_path) + if self.settings.os == "Linux": + self.cpp_info.components[comp].system_libs.append("pthread") + + if self.options.install_tools: + self.env_info.PATH.append(os.path.join(self.package_folder, "bin")) + + @property + def _module_file_rel_dir(self): + return os.path.join("lib", "cmake") + + @property + def _module_file_rel_path(self): + return os.path.join(self._module_file_rel_dir, f"conan-official-{self.name}-variables.cmake") diff --git a/recipes/ogre/1.x/patches/0001-ogre-1.10.2-cmake-fixes.patch b/recipes/ogre/1.x/patches/0001-ogre-1.10.2-cmake-fixes.patch new file mode 100644 index 0000000000000..7b8bebad0458f --- /dev/null +++ b/recipes/ogre/1.x/patches/0001-ogre-1.10.2-cmake-fixes.patch @@ -0,0 +1,532 @@ +diff --git a/CMake/CMakeLists.txt b/CMake/CMakeLists.txt +index 2198fb576..20ac0bdcb 100755 +--- a/CMake/CMakeLists.txt ++++ b/CMake/CMakeLists.txt +@@ -31,23 +31,23 @@ set(INST_FILES + Utils/OgreFindFrameworks.cmake + ) + +-if (OGRE_CONFIG_THREAD_PROVIDER STREQUAL "poco") +- set(INST_FILES ${INST_FILES} Packages/FindPOCO.cmake) +-endif () ++#if (OGRE_CONFIG_THREAD_PROVIDER STREQUAL "poco") ++# set(INST_FILES ${INST_FILES} Packages/FindPOCO.cmake) ++#endif () + +-if (OGRE_CONFIG_THREAD_PROVIDER STREQUAL "tbb") +- set(INST_FILES ${INST_FILES} Packages/FindTBB.cmake) +-endif () ++#if (OGRE_CONFIG_THREAD_PROVIDER STREQUAL "tbb") ++# set(INST_FILES ${INST_FILES} Packages/FindTBB.cmake) ++#endif () + + set(STATIC_INST_FILES + Packages/FindCg.cmake + Packages/FindDirectX.cmake + Packages/FindDirectX11.cmake +- Packages/FindFreeImage.cmake +- Packages/FindFreetype.cmake ++ #Packages/FindFreeImage.cmake ++ #Packages/FindFreetype.cmake + Packages/FindOpenGLES.cmake + Packages/FindOpenGLES2.cmake +- Packages/FindZZip.cmake ++ #Packages/FindZZip.cmake + Packages/FindSoftimage.cmake + Packages/FindGLSLOptimizer.cmake + Packages/FindHLSL2GLSL.cmake +diff --git a/CMake/ConfigureBuild.cmake b/CMake/ConfigureBuild.cmake +index 0a30ca92a..eeafbcd90 100644 +--- a/CMake/ConfigureBuild.cmake ++++ b/CMake/ConfigureBuild.cmake +@@ -55,8 +55,8 @@ if (OGRE_CONFIG_THREADS) + + if (OGRE_CONFIG_THREAD_PROVIDER STREQUAL "poco") + set(OGRE_THREAD_PROVIDER 2) +- include_directories(${POCO_INCLUDE_DIRS}) +- set(OGRE_THREAD_LIBRARIES ${POCO_LIBRARIES}) ++ include_directories(${Poco_INCLUDE_DIRS}) ++ set(OGRE_THREAD_LIBRARIES ${Poco_LIBRARIES}) + endif () + + if (OGRE_CONFIG_THREAD_PROVIDER STREQUAL "tbb") +diff --git a/CMake/Dependencies.cmake b/CMake/Dependencies.cmake +index 91ceb98e6..e350e86a2 100755 +--- a/CMake/Dependencies.cmake ++++ b/CMake/Dependencies.cmake +@@ -13,11 +13,11 @@ + + # OGRE_DEPENDENCIES_DIR can be used to specify a single base + # folder where the required dependencies may be found. +-set(OGRE_DEPENDENCIES_DIR "" CACHE PATH "Path to prebuilt OGRE dependencies") +-option(OGRE_BUILD_DEPENDENCIES "automaitcally build Ogre Dependencies (freetype, zzip)" TRUE) ++#set(OGRE_DEPENDENCIES_DIR "" CACHE PATH "Path to prebuilt OGRE dependencies") ++#option(OGRE_BUILD_DEPENDENCIES "automaitcally build Ogre Dependencies (freetype, zzip)" TRUE) + + include(FindPkgMacros) +-getenv_path(OGRE_DEPENDENCIES_DIR) ++#getenv_path(OGRE_DEPENDENCIES_DIR) + if(OGRE_BUILD_PLATFORM_EMSCRIPTEN) + set(OGRE_DEP_SEARCH_PATH + ${OGRE_DEPENDENCIES_DIR} +@@ -27,6 +27,7 @@ if(OGRE_BUILD_PLATFORM_EMSCRIPTEN) + "${OGRE_SOURCE_DIR}/EmscriptenDependencies" + "${OGRE_BINARY_DIR}/../EmscriptenDependencies" + "${OGRE_SOURCE_DIR}/../EmscriptenDependencies" ++ "${OGRE_BINARY_DIR}" + ) + set(CMAKE_FIND_ROOT_PATH ${CMAKE_FIND_ROOT_PATH} ${OGRE_DEP_SEARCH_PATH}) + elseif(APPLE_IOS) +@@ -37,6 +38,7 @@ elseif(APPLE_IOS) + "${OGRE_SOURCE_DIR}/iOSDependencies" + "${OGRE_BINARY_DIR}/../iOSDependencies" + "${OGRE_SOURCE_DIR}/../iOSDependencies" ++ "${OGRE_BINARY_DIR}" + ) + elseif(OGRE_BUILD_PLATFORM_ANDROID) + set(OGRE_DEP_SEARCH_PATH +@@ -46,19 +48,21 @@ elseif(OGRE_BUILD_PLATFORM_ANDROID) + "${OGRE_SOURCE_DIR}/AndroidDependencies" + "${OGRE_BINARY_DIR}/../AndroidDependencies" + "${OGRE_SOURCE_DIR}/../AndroidDependencies" ++ "${OGRE_BINARY_DIR}" + ) + else() + set(OGRE_DEP_SEARCH_PATH + ${OGRE_DEPENDENCIES_DIR} + ${ENV_OGRE_DEPENDENCIES_DIR} +- "${OGRE_BINARY_DIR}/Dependencies" +- "${OGRE_SOURCE_DIR}/Dependencies" +- "${OGRE_BINARY_DIR}/../Dependencies" +- "${OGRE_SOURCE_DIR}/../Dependencies" ++ #"${OGRE_BINARY_DIR}/Dependencies" ++ #"${OGRE_SOURCE_DIR}/Dependencies" ++ #"${OGRE_BINARY_DIR}/../Dependencies" ++ #"${OGRE_SOURCE_DIR}/../Dependencies" ++ "${OGRE_BINARY_DIR}" + ) + endif() + +-message(STATUS "Search path: ${OGRE_DEP_SEARCH_PATH}") ++message(STATUS "OGRE Deps Search path: ${OGRE_DEP_SEARCH_PATH}") + list(GET OGRE_DEP_SEARCH_PATH 0 OGREDEPS_PATH) + + if(CMAKE_CROSSCOMPILING) +@@ -76,81 +80,90 @@ if(CMAKE_CROSSCOMPILING) + -DIOS_PLATFORM=${IOS_PLATFORM}) + endif() + endif() +- ++####################################################################################### ++#### conan patch begin: rely on the paths and build info generated by conan ++### ------------------------------------------------------------------ + # Set hardcoded path guesses for various platforms +-if (UNIX AND NOT EMSCRIPTEN) +- set(OGRE_DEP_SEARCH_PATH ${OGRE_DEP_SEARCH_PATH} /usr/local) +- # Ubuntu 11.10 has an inconvenient path to OpenGL libraries +- set(OGRE_DEP_SEARCH_PATH ${OGRE_DEP_SEARCH_PATH} /usr/lib/${CMAKE_SYSTEM_PROCESSOR}-linux-gnu) +-endif () ++#if (UNIX AND NOT EMSCRIPTEN) ++# set(OGRE_DEP_SEARCH_PATH ${OGRE_DEP_SEARCH_PATH} /usr/local) ++# # Ubuntu 11.10 has an inconvenient path to OpenGL libraries ++# set(OGRE_DEP_SEARCH_PATH ${OGRE_DEP_SEARCH_PATH} /usr/lib/${CMAKE_SYSTEM_PROCESSOR}-linux-gnu) ++#endif () + + # give guesses as hints to the find_package calls +-set(CMAKE_PREFIX_PATH ${OGRE_DEP_SEARCH_PATH} ${CMAKE_PREFIX_PATH}) +-set(CMAKE_FRAMEWORK_PATH ${OGRE_DEP_SEARCH_PATH} ${CMAKE_FRAMEWORK_PATH}) +- +-if(OGRE_BUILD_DEPENDENCIES AND NOT EXISTS ${OGREDEPS_PATH}) +- set(OGREDEPS_SHARED TRUE) +- if(OGRE_STATIC OR MSVC) +- # freetype does not like shared build on MSVC and it generally eases distribution there +- set(OGREDEPS_SHARED FALSE) +- endif() +- +- if(MSVC OR EMSCRIPTEN) # other platforms ship zlib +- message(STATUS "Building zlib") +- file(DOWNLOAD +- http://zlib.net/zlib-1.2.11.tar.gz +- ./zlib-1.2.11.tar.gz +- EXPECTED_MD5 1c9f62f0778697a09d36121ead88e08e) +- execute_process(COMMAND cmake -E tar xf zlib-1.2.11.tar.gz) +- execute_process(COMMAND cmake +- -DCMAKE_INSTALL_PREFIX=${OGREDEPS_PATH} +- -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} +- -DBUILD_SHARED_LIBS=${OGREDEPS_SHARED} +- -G ${CMAKE_GENERATOR} +- ${CROSS} +- . +- WORKING_DIRECTORY zlib-1.2.11) +- execute_process(COMMAND cmake --build zlib-1.2.11 --target install) +- endif() +- +- message(STATUS "Building ZZIPlib") +- file(DOWNLOAD +- https://github.com/paroj/ZZIPlib/archive/master.tar.gz +- ./ZZIPlib-master.tar.gz) +- execute_process(COMMAND cmake -E tar xf ZZIPlib-master.tar.gz) +- execute_process(COMMAND cmake +- -DCMAKE_INSTALL_PREFIX=${OGREDEPS_PATH} +- -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} +- -DZLIB_ROOT=${OGREDEPS_PATH} +- -DBUILD_SHARED_LIBS=${OGREDEPS_SHARED} +- -G ${CMAKE_GENERATOR} +- ${CROSS} +- . +- WORKING_DIRECTORY ZZIPlib-master) +- execute_process(COMMAND cmake --build ZZIPlib-master --target install) +- +- message(STATUS "Building freetype") +- file(DOWNLOAD +- http://download.savannah.gnu.org/releases/freetype/freetype-2.6.5.tar.gz +- ./freetype-2.6.5.tar.gz) +- execute_process(COMMAND cmake -E tar xf freetype-2.6.5.tar.gz) +- # patch toolchain for iOS +- execute_process(COMMAND cmake -E copy +- ${CMAKE_SOURCE_DIR}/CMake/toolchain/ios.toolchain.xcode.cmake +- freetype-2.6.5/builds/cmake/iOS.cmake) +- execute_process(COMMAND cmake +- -DCMAKE_INSTALL_PREFIX=${OGREDEPS_PATH} +- -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} +- -DBUILD_SHARED_LIBS=${OGREDEPS_SHARED} +- -DWITH_BZip2=OFF # tries to use it on iOS otherwise +- # workaround for broken iOS toolchain in freetype +- -DPROJECT_SOURCE_DIR=${CMAKE_BINARY_DIR}/freetype-2.6.5 +- ${CROSS} +- -G ${CMAKE_GENERATOR} +- .. +- WORKING_DIRECTORY freetype-2.6.5/objs) +- execute_process(COMMAND cmake --build freetype-2.6.5/objs --target install) +-endif() ++#set(CMAKE_PREFIX_PATH ${OGRE_DEP_SEARCH_PATH} ${CMAKE_PREFIX_PATH}) ++#set(CMAKE_FRAMEWORK_PATH ${OGRE_DEP_SEARCH_PATH} ${CMAKE_FRAMEWORK_PATH}) ++#### conan patch end ++####################################################################################### ++ ++########################################################################################## ++### conan patch begin: conan already provides the built in binaries, no need to install and build them ++### -------------------------------------------------------------------------------- ++#if(OGRE_BUILD_DEPENDENCIES AND NOT EXISTS ${OGREDEPS_PATH}) ++# set(OGREDEPS_SHARED TRUE) ++# if(OGRE_STATIC OR MSVC) ++# # freetype does not like shared build on MSVC and it generally eases distribution there ++# set(OGREDEPS_SHARED FALSE) ++# endif() ++# ++# if(MSVC OR EMSCRIPTEN) # other platforms ship zlib ++# message(STATUS "Building zlib") ++# file(DOWNLOAD ++# http://zlib.net/zlib-1.2.11.tar.gz ++# ./zlib-1.2.11.tar.gz ++# EXPECTED_MD5 1c9f62f0778697a09d36121ead88e08e) ++# execute_process(COMMAND cmake -E tar xf zlib-1.2.11.tar.gz) ++# execute_process(COMMAND cmake ++# -DCMAKE_INSTALL_PREFIX=${OGREDEPS_PATH} ++# -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} ++# -DBUILD_SHARED_LIBS=${OGREDEPS_SHARED} ++# -G ${CMAKE_GENERATOR} ++# ${CROSS} ++# . ++# WORKING_DIRECTORY zlib-1.2.11) ++# execute_process(COMMAND cmake --build zlib-1.2.11 --target install) ++# endif() ++# ++# message(STATUS "Building ZZIPlib") ++# file(DOWNLOAD ++# https://github.com/paroj/ZZIPlib/archive/master.tar.gz ++# ./ZZIPlib-master.tar.gz) ++# execute_process(COMMAND cmake -E tar xf ZZIPlib-master.tar.gz) ++# execute_process(COMMAND cmake ++# -DCMAKE_INSTALL_PREFIX=${OGREDEPS_PATH} ++# -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} ++# -DZLIB_ROOT=${OGREDEPS_PATH} ++# -DBUILD_SHARED_LIBS=${OGREDEPS_SHARED} ++# -G ${CMAKE_GENERATOR} ++# ${CROSS} ++# . ++# WORKING_DIRECTORY ZZIPlib-master) ++# execute_process(COMMAND cmake --build ZZIPlib-master --target install) ++# ++# message(STATUS "Building freetype") ++# file(DOWNLOAD ++# http://download.savannah.gnu.org/releases/freetype/freetype-2.6.5.tar.gz ++# ./freetype-2.6.5.tar.gz) ++# execute_process(COMMAND cmake -E tar xf freetype-2.6.5.tar.gz) ++# # patch toolchain for iOS ++# execute_process(COMMAND cmake -E copy ++# ${CMAKE_SOURCE_DIR}/CMake/toolchain/ios.toolchain.xcode.cmake ++# freetype-2.6.5/builds/cmake/iOS.cmake) ++# execute_process(COMMAND cmake ++# -DCMAKE_INSTALL_PREFIX=${OGREDEPS_PATH} ++# -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} ++# -DBUILD_SHARED_LIBS=${OGREDEPS_SHARED} ++# -DWITH_BZip2=OFF # tries to use it on iOS otherwise ++# # workaround for broken iOS toolchain in freetype ++# -DPROJECT_SOURCE_DIR=${CMAKE_BINARY_DIR}/freetype-2.6.5 ++# ${CROSS} ++# -G ${CMAKE_GENERATOR} ++# .. ++# WORKING_DIRECTORY freetype-2.6.5/objs) ++# execute_process(COMMAND cmake --build freetype-2.6.5/objs --target install) ++#endif() ++#### conan patch end ++########################################################################################## + + ####################################################################### + # Core dependencies +@@ -162,13 +175,23 @@ macro_log_feature(ZLIB_FOUND "zlib" "Simple data compression library" "http://ww + + if (ZLIB_FOUND) + # Find zziplib +- find_package(ZZip) ++ find_package(zziplib) ++ ########################################################################################## ++### coann patch begin: make ${ZZip_} cmake variables refer to conan ${zziplib_} ++set(ZZip_FOUND ${zziplib_FOUND}) ++set(ZZip_LIBRARIES ${zziplib_LIBRARIES}) ++### coann patch end ++########################################################################################## + macro_log_feature(ZZip_FOUND "zziplib" "Extract data from zip archives" "http://zziplib.sourceforge.net" FALSE "" "") + endif () + +-# Find FreeImage +-find_package(FreeImage) +-macro_log_feature(FreeImage_FOUND "freeimage" "Support for commonly used graphics image formats" "http://freeimage.sourceforge.net" FALSE "" "") ++# Find freeimage ++find_package(freeimage) ++#if(NOT ${FreeImage_INCLUDE_DIRS} STREQUAL "" AND NOT ${FreeImage_LIBRARIES} STREQUAL "") ++# set(freeimage_FOUND 1) ++#endif() ++#message(FATAL_ERROR "freeimage_FOUND: ${freeimage_FOUND}") ++macro_log_feature(freeimage_FOUND "freeimage" "Support for commonly used graphics image formats" "http://freeimage.sourceforge.net" FALSE "" "") + + # Find FreeType + find_package(Freetype) +@@ -284,6 +307,15 @@ if(Boost_FOUND AND NOT WIN32) + list(REMOVE_DUPLICATES Boost_LIBRARIES) + endif() + ++################################################################################### ++### conan patch begin: conan recipe for boost doesn't provide the variables Boost__FOUND ++## see https://cmake.org/cmake/help/latest/module/FindBoost.html#result-variables ++## and https://github.com/conan-io/conan-center-index/issues/11085 ++set(Boost_DATE_TIME_FOUND True) ++set(Boost_THREAD_FOUND True) ++### conan patch end ++################################################################################### ++ + # Optional Boost libs (Boost_${COMPONENT}_FOUND + macro_log_feature(Boost_FOUND "boost" "Boost (general)" "http://boost.org" FALSE "" "") + if(NOT Boost_DATE_TIME_FOUND) +@@ -297,9 +329,9 @@ if(Boost_VERSION GREATER 105300 AND NOT Boost_ATOMIC_FOUND) + endif() + macro_log_feature(Boost_THREAD_FOUND "boost-thread" "Used for threading support" "http://boost.org" FALSE "" "") + +-# POCO +-find_package(POCO) +-macro_log_feature(POCO_FOUND "POCO" "POCO framework" "http://pocoproject.org/" FALSE "" "") ++# Poco ++find_package(Poco) ++macro_log_feature(Poco_FOUND "Poco" "Poco framework" "http://pocoproject.org/" FALSE "" "") + + # ThreadingBuildingBlocks + find_package(TBB) +@@ -315,7 +347,7 @@ macro_log_feature(HLSL2GLSL_FOUND "HLSL2GLSL" "HLSL2GLSL" "http://hlsl2glslfork. + + # OpenEXR + find_package(OpenEXR) +-macro_log_feature(OPENEXR_FOUND "OpenEXR" "Load High dynamic range images" "http://www.openexr.com/" FALSE "" "") ++macro_log_feature(OpenEXR_FOUND "OpenEXR" "Load High dynamic range images" "http://www.openexr.com/" FALSE "" "") + + # Python + find_package(PythonLibs) +@@ -330,6 +362,7 @@ macro_log_feature(PYTHONLIBS_FOUND "Python" "Language bindings to use OGRE from + if(NOT ANDROID) + # find script does not work in cross compilation environment + find_package(SDL2) ++set(SDL2_LIBRARY ${SDL2_LIBRARIES}) + macro_log_feature(SDL2_FOUND "SDL2" "Simple DirectMedia Library needed for input handling in samples" "https://www.libsdl.org/" FALSE "" "") + endif() + +@@ -366,7 +398,7 @@ MACRO_DISPLAY_FEATURE_LOG() + # Add library and include paths from the dependencies + include_directories( + ${ZLIB_INCLUDE_DIRS} +- ${ZZip_INCLUDE_DIRS} ++ ${zziplib_INCLUDE_DIRS} + ${FreeImage_INCLUDE_DIRS} + ${FREETYPE_INCLUDE_DIRS} + ${OPENGL_INCLUDE_DIRS} +diff --git a/CMake/Packages/FindOGRE.cmake b/CMake/Packages/FindOGRE.cmake +index f7c1727f9..d719d853e 100644 +--- a/CMake/Packages/FindOGRE.cmake ++++ b/CMake/Packages/FindOGRE.cmake +@@ -265,13 +265,13 @@ if (OGRE_STATIC) + find_package(Cg QUIET) + find_package(DirectX QUIET) + find_package(DirectX11 QUIET) +- find_package(FreeImage QUIET) ++ find_package(freeimage QUIET) + find_package(Freetype QUIET) + find_package(OpenGL QUIET) + find_package(OpenGLES QUIET) + find_package(OpenGLES2 QUIET) + find_package(ZLIB QUIET) +- find_package(ZZip QUIET) ++ find_package(zziplib QUIET) + find_package(SDL2 QUIET) + if (UNIX AND NOT APPLE AND NOT ANDROID) + find_package(X11 QUIET) +@@ -290,7 +290,7 @@ if (OGRE_STATIC) + if (NOT ZLIB_FOUND OR NOT ZZip_FOUND) + set(OGRE_DEPS_FOUND FALSE) + endif () +- if (NOT FreeImage_FOUND AND NOT OGRE_CONFIG_FREEIMAGE) ++ if (NOT freeimage_FOUND AND NOT OGRE_CONFIG_FREEIMAGE) + set(OGRE_DEPS_FOUND FALSE) + endif () + if (NOT FREETYPE_FOUND) +diff --git a/CMake/PrepareThreadingOptions.cmake b/CMake/PrepareThreadingOptions.cmake +index bdaef8884..74b937a38 100644 +--- a/CMake/PrepareThreadingOptions.cmake ++++ b/CMake/PrepareThreadingOptions.cmake +@@ -25,7 +25,7 @@ if (Boost_THREADING AND NOT OGRE_THREAD_SUPPORT_AVAILABLE) + set(OGRE_THREAD_TYPE "2") + endif () + +-if (POCO_FOUND AND NOT OGRE_THREAD_SUPPORT_AVAILABLE) ++if (Poco_FOUND AND NOT OGRE_THREAD_SUPPORT_AVAILABLE) + set(OGRE_THREAD_SUPPORT_AVAILABLE TRUE) + set(OGRE_THREAD_DEFAULT_PROVIDER "poco") + set(OGRE_THREAD_TYPE "2") +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 18f295f53..c624ea101 100755 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -52,6 +52,8 @@ set(CMAKE_MODULE_PATH + "${OGRE_SOURCE_DIR}/CMake" + "${OGRE_SOURCE_DIR}/CMake/Utils" + "${OGRE_SOURCE_DIR}/CMake/Packages" ++ "${OGRE_BINARY_DIR}" ++ "${CMAKE_BINARY_DIR}" + ) + + if(CMAKE_CROSSCOMPILING) +@@ -212,6 +214,7 @@ endif() + + # Add OgreMain include path + include_directories("${OGRE_SOURCE_DIR}/OgreMain/include") ++set(OGRE_BINARY_DIR ${CMAKE_BINARY_DIR}) + include_directories("${OGRE_BINARY_DIR}/include") + if (APPLE) + if (APPLE_IOS) +@@ -363,7 +366,7 @@ cmake_dependent_option(OGRE_BUILD_RENDERSYSTEM_GL "Build OpenGL RenderSystem" TR + cmake_dependent_option(OGRE_BUILD_RENDERSYSTEM_GLES "Build OpenGL ES 1.x RenderSystem" FALSE "OPENGLES_FOUND;NOT WINDOWS_STORE;NOT WINDOWS_PHONE" FALSE) + cmake_dependent_option(OGRE_BUILD_RENDERSYSTEM_GLES2 "Build OpenGL ES 2.x RenderSystem" FALSE "OPENGLES2_FOUND;NOT WINDOWS_STORE;NOT WINDOWS_PHONE" FALSE) + option(OGRE_BUILD_PLUGIN_BSP "Build BSP SceneManager plugin" TRUE) +-cmake_dependent_option(OGRE_BUILD_PLUGIN_EXRCODEC "Build EXR Codec plugin" TRUE "OPENEXR_FOUND" FALSE) ++cmake_dependent_option(OGRE_BUILD_PLUGIN_EXRCODEC "Build EXR Codec plugin" TRUE "OpenEXR_FOUND" FALSE) + option(OGRE_BUILD_PLUGIN_OCTREE "Build Octree SceneManager plugin" TRUE) + option(OGRE_BUILD_PLUGIN_PFX "Build ParticleFX plugin" TRUE) + cmake_dependent_option(OGRE_BUILD_PLUGIN_PCZ "Build PCZ SceneManager plugin" TRUE "" FALSE) +@@ -407,7 +410,7 @@ option(OGRE_CONFIG_MEMTRACK_DEBUG "Enable Ogre's memory tracker in debug mode" F + option(OGRE_CONFIG_MEMTRACK_RELEASE "Enable Ogre's memory tracker in release mode" FALSE) + # determine threading options + include(PrepareThreadingOptions) +-cmake_dependent_option(OGRE_CONFIG_ENABLE_FREEIMAGE "Build FreeImage codec." TRUE "FreeImage_FOUND" FALSE) ++cmake_dependent_option(OGRE_CONFIG_ENABLE_FREEIMAGE "Build FreeImage codec." TRUE "freeimage_FOUND" FALSE) + cmake_dependent_option(OGRE_CONFIG_ENABLE_STBI "Enable STBI image codec." TRUE "NOT OGRE_CONFIG_ENABLE_FREEIMAGE" FALSE) + option(OGRE_CONFIG_ENABLE_MESHLOD "Enable Mesh Lod." TRUE) + option(OGRE_CONFIG_ENABLE_DDS "Build DDS codec." TRUE) +diff --git a/Components/HLMS/CMakeLists.txt b/Components/HLMS/CMakeLists.txt +index c10a77a5e..f8b962a9e 100644 +--- a/Components/HLMS/CMakeLists.txt ++++ b/Components/HLMS/CMakeLists.txt +@@ -14,7 +14,7 @@ + PROJECT(OgreHLMS) + + # define header and source files for the library +-file(GLOB HEADER_FILES "${CMAKE_CURRENT_SOURCE_DIR}/include/*.h" ${CMAKE_BINARY_DIR}/include/OgreHlmsPrerequisites.h) ++file(GLOB HEADER_FILES "${CMAKE_CURRENT_SOURCE_DIR}/include/*.h") + file(GLOB SOURCE_FILES "${CMAKE_CURRENT_SOURCE_DIR}/src/*.cpp") + + # Add needed definitions +@@ -43,3 +43,7 @@ ogre_config_component(OgreHLMS) + install(FILES ${HEADER_FILES} + DESTINATION include/OGRE/HLMS + ) ++ ++install(FILES ${CMAKE_BINARY_DIR}/include/OgreHlmsPrerequisites.h ++ DESTINATION include/OGRE/HLMS ++) +\ No newline at end of file +diff --git a/Components/Overlay/CMakeLists.txt b/Components/Overlay/CMakeLists.txt +index 0ee9f3d8c..d973798e6 100644 +--- a/Components/Overlay/CMakeLists.txt ++++ b/Components/Overlay/CMakeLists.txt +@@ -40,3 +40,7 @@ ogre_config_component(OgreOverlay) + install(FILES ${HEADER_FILES} + DESTINATION include/OGRE/Overlay + ) ++ ++install(FILES ${CMAKE_BINARY_DIR}/include/OgreOverlayPrerequisites.h ++ DESTINATION include/OGRE/Overlay ++) +\ No newline at end of file +diff --git a/Components/Property/CMakeLists.txt b/Components/Property/CMakeLists.txt +index 97d481748..1b2f2640a 100644 +--- a/Components/Property/CMakeLists.txt ++++ b/Components/Property/CMakeLists.txt +@@ -16,7 +16,6 @@ PROJECT(OgreProperty) + # define header and source files for the library + set (HEADER_FILES + include/OgreProperty.h +- ${CMAKE_BINARY_DIR}/include/OgrePropertyPrerequisites.h + ) + + set (SOURCE_FILES +@@ -47,3 +46,7 @@ ogre_config_component(OgreProperty) + install(FILES ${HEADER_FILES} + DESTINATION include/OGRE/Property + ) ++ ++install(FILES ${CMAKE_BINARY_DIR}/include/OgrePropertyPrerequisites.h ++ DESTINATION include/OGRE/Property ++) +diff --git a/Components/Volume/CMakeLists.txt b/Components/Volume/CMakeLists.txt +index 998f9702f..7d4c239eb 100644 +--- a/Components/Volume/CMakeLists.txt ++++ b/Components/Volume/CMakeLists.txt +@@ -14,7 +14,7 @@ + PROJECT(OgreVolume) + + # define header and source files for the library +-file(GLOB HEADER_FILES "${CMAKE_CURRENT_SOURCE_DIR}/include/*.h" ${CMAKE_BINARY_DIR}/include/OgreVolumePrerequisites.h) ++file(GLOB HEADER_FILES "${CMAKE_CURRENT_SOURCE_DIR}/include/*.h") + file(GLOB SOURCE_FILES "${CMAKE_CURRENT_SOURCE_DIR}/src/*.cpp") + + # include headers +@@ -40,3 +40,7 @@ ogre_config_component(OgreVolume) + install(FILES ${HEADER_FILES} + DESTINATION include/OGRE/Volume + ) ++ ++install(FILES ${CMAKE_BINARY_DIR}/include/OgreVolumePrerequisites.h ++ DESTINATION include/OGRE/Volume ++) +\ No newline at end of file +diff --git a/PlugIns/EXRCodec/CMakeLists.txt b/PlugIns/EXRCodec/CMakeLists.txt +index ed4bc7df9..0a7a1a250 100644 +--- a/PlugIns/EXRCodec/CMakeLists.txt ++++ b/PlugIns/EXRCodec/CMakeLists.txt +@@ -11,7 +11,8 @@ file(GLOB HEADER_FILES "${CMAKE_CURRENT_SOURCE_DIR}/include/*.h" ${CMAKE_BINARY_ + file(GLOB SOURCE_FILES "${CMAKE_CURRENT_SOURCE_DIR}/src/*.cpp") + + include_directories(${CMAKE_CURRENT_SOURCE_DIR}/include) +-include_directories(SYSTEM ${OPENEXR_INCLUDE_DIR}/OpenEXR) ++### include the conan OpenEXR_INCLUDE_DIR instead of system OpenEXR_INCLUDE_DIR ++include_directories(SYSTEM ${OpenEXR_INCLUDE_DIR}/OpenEXR) + + ogre_add_library_to_folder(Plugins Plugin_EXRCodec ${OGRE_LIB_TYPE} ${HEADER_FILES} ${SOURCE_FILES}) + target_link_libraries(Plugin_EXRCodec OgreMain ${OPENEXR_LIBRARIES}) diff --git a/recipes/ogre/1.x/test_package/CMakeLists.txt b/recipes/ogre/1.x/test_package/CMakeLists.txt new file mode 100644 index 0000000000000..b3d9f056daa16 --- /dev/null +++ b/recipes/ogre/1.x/test_package/CMakeLists.txt @@ -0,0 +1,15 @@ +cmake_minimum_required(VERSION 3.8) +project(test_package) + +include(${CMAKE_BINARY_DIR}/conanbuildinfo.cmake) +conan_basic_setup(KEEP_RPATHS) + + +find_package(OGRE ${OGRE_VERSION} COMPONENTS OgreMain REQUIRED) +add_executable(ogre_main ogre_main.cpp) +target_link_libraries(ogre_main OGRE::OgreMain) + +set_target_properties(ogre_main PROPERTIES +CXX_STANDARD 11 +CXX_STANDARD_REQUIRED ON +CXX_EXTENSIONS ON) diff --git a/recipes/ogre/1.x/test_package/conanfile.py b/recipes/ogre/1.x/test_package/conanfile.py new file mode 100644 index 0000000000000..f194e07229412 --- /dev/null +++ b/recipes/ogre/1.x/test_package/conanfile.py @@ -0,0 +1,19 @@ +from conans import ConanFile, CMake, tools +import os + +class TestPackageConan(ConanFile): + settings = "os", "compiler", "build_type", "arch" + generators = "cmake", "cmake_find_package" + + def build(self): + cmake = CMake(self) + cmake.definitions["OGRE_VERSION"] = tools.Version(self.deps_cpp_info["ogre"].version) + cmake.configure() + cmake.build() + + def test(self): + if tools.cross_building(self): + return + + ogre_main_bin_path = os.path.join("bin", "ogre_main") + self.run(ogre_main_bin_path, run_environment=True) diff --git a/recipes/ogre/1.x/test_package/ogre_main.cpp b/recipes/ogre/1.x/test_package/ogre_main.cpp new file mode 100644 index 0000000000000..98f931899daa6 --- /dev/null +++ b/recipes/ogre/1.x/test_package/ogre_main.cpp @@ -0,0 +1,17 @@ +#include +#include +#include +#include + +int main(int argc, char **argv) { + Ogre::RenderSystemCapabilities rc; + rc.setNumTextureUnits(10); + std::cout << "Hello from OgreMain component\n"; + std::cout << "number of texture units: " << rc.getNumTextureUnits() << "\n"; + + Ogre::Radian rot{0.618}; + Ogre::Particle particle; + particle.resetDimensions(); + + return 0; +} diff --git a/recipes/ogre/config.yml b/recipes/ogre/config.yml new file mode 100644 index 0000000000000..86746ed84e0e7 --- /dev/null +++ b/recipes/ogre/config.yml @@ -0,0 +1,3 @@ +versions: + "1.10.2": + folder: 1.x