diff --git a/ogre/1.11/conandata.yml b/ogre/1.11/conandata.yml index a60cfdc..ee1bac2 100644 --- a/ogre/1.11/conandata.yml +++ b/ogre/1.11/conandata.yml @@ -4,14 +4,7 @@ sources: sha256: "31c84051ffe9a3710c553cfa27ebda7b176c9dfe3b4d2a113d4f02caf48ecd5b" patches: "1.11.6.1": - - patch_file: "patches/1.11.6.1/CMakeLists.txt.patch" - - patch_file: "patches/1.11.6.1/Samples-CMakeList.txt.patch" - - patch_file: "patches/1.11.6.1/FixOverlayCMakeLists.txt.patch" - - patch_file: "patches/1.11.6.1/scriptlexer.patch" -requirements: - - "zlib/[1.x]" - - "zziplib/[0.13.x]" - - "freetype/[2.x]" - - "freeimage/[3.x]" - - "cg-toolkit/3.1@anotherfoxguy/stable" - - "pugixml/[1.x]" \ No newline at end of file + - patch_file: "patches/1.11.6.1/FixFreeImage.patch" + - patch_file: "patches/1.11.6.1/FixSamples.patch" + - patch_file: "patches/1.11.6.1/FixOverlay.patch" + - patch_file: "patches/1.11.6.1/scriptlexer.patch" \ No newline at end of file diff --git a/ogre/1.11/conanfile.py b/ogre/1.11/conanfile.py index 05291b4..3b4df74 100644 --- a/ogre/1.11/conanfile.py +++ b/ogre/1.11/conanfile.py @@ -1,7 +1,8 @@ -import shutil -from conans import ConanFile, CMake, tools -from conans.tools import os_info, SystemPackageTool - +from conan import ConanFile +from conan.tools.files import get, collect_libs, rmdir, replace_in_file, apply_conandata_patches, export_conandata_patches +from conan.tools.cmake import CMakeToolchain, CMake, CMakeDeps, cmake_layout +from conan.tools.system.package_manager import Apt +import os class OGREConan(ConanFile): name = "ogre3d" @@ -9,88 +10,94 @@ class OGREConan(ConanFile): url = "https://github.com/AnotherFoxGuy/conan-OGRE" description = "scene-oriented, flexible 3D engine written in C++" settings = "os", "compiler", "build_type", "arch" - generators = "cmake_paths", "cmake_find_package" - exports_sources = "patches/**" + + def export_sources(self): + export_conandata_patches(self) + + def layout(self): + cmake_layout(self) def requirements(self): - for req in self.conan_data["requirements"]: - self.requires(req) - - if os_info.is_windows: + self.requires("zlib/[1.x]") + self.requires("zziplib/[0.13.x]") + self.requires("freetype/[2.x]") + self.requires("freeimage/[3.x]") + self.requires("cg-toolkit/3.1@anotherfoxguy/stable") + self.requires("pugixml/[1.x]") + self.requires("libpng/1.6.38") + if self.settings.os == "Windows": self.requires("directx-sdk/9.0@anotherfoxguy/stable") def system_requirements(self): - if os_info.is_linux: - if os_info.with_apt: - installer = SystemPackageTool() - installer.install("libgles2-mesa-dev") - installer.install("libglu1-mesa-dev") - installer.install("libx11-dev") - installer.install("libxaw7-dev") - installer.install("libxrandr-dev") - installer.install("libxt-dev") + Apt(self).install([ + "libx11-dev", + "libxaw7-dev", + "libxrandr-dev", + "libgles2-mesa-dev", + "libvulkan-dev", + "glslang-dev" + ], check=True) def source(self): - tools.get(**self.conan_data["sources"][self.version], strip_root=True) - tools.replace_in_file( - "CMake/Dependencies.cmake", + get(self, **self.conan_data["sources"][self.version], strip_root=True) + + def generate(self): + tc = CMakeToolchain(self) + tc.variables["OGRE_BUILD_COMPONENT_BITES"] = "ON" + tc.variables["OGRE_BUILD_COMPONENT_CSHARP"] = "OFF" + tc.variables["OGRE_BUILD_COMPONENT_JAVA"] = "OFF" + tc.variables["OGRE_BUILD_COMPONENT_OVERLAY_IMGUI"] = "ON" + tc.variables["OGRE_BUILD_COMPONENT_PYTHON"] = "OFF" + tc.variables["OGRE_BUILD_DEPENDENCIES"] = "OFF" + tc.variables["OGRE_BUILD_PLUGIN_STBI"] = "ON" + tc.variables["OGRE_BUILD_PLUGIN_EXRCODEC"] = "OFF" + tc.variables["OGRE_BUILD_RENDERSYSTEM_D3D11"] = "ON" + tc.variables["OGRE_BUILD_RENDERSYSTEM_D3D9"] = "ON" + tc.variables["OGRE_BUILD_RENDERSYSTEM_GL3PLUS"] = "OFF" + tc.variables["OGRE_BUILD_SAMPLES"] = "OFF" + tc.variables["OGRE_INSTALL_SAMPLES"] = "OFF" + tc.variables["OGRE_RESOURCEMANAGER_STRICT"] = 0 + + if self.settings.os == "Windows": + tc.variables["CMAKE_CXX_FLAGS"] = "-D_OGRE_FILESYSTEM_ARCHIVE_UNICODE" + tc.generate() + deps = CMakeDeps(self) + deps.generate() + + def _patch_sources(self): + apply_conandata_patches(self) + replace_in_file(self, + os.path.join(self.source_folder, "CMake/Dependencies.cmake"), "find_package(DirectX)", "find_package(DirectX9)", ) - tools.replace_in_file( - "CMake/Dependencies.cmake", - "find_package(FreeImage)", - "find_package(ConanFreeImage)", - ) - tools.replace_in_file( - "CMake/Dependencies.cmake", - "find_package(ZZip)", - "find_package(ConanZZip)", - ) - tools.replace_in_file( - "CMake/Packages/FindDirectX11.cmake", + replace_in_file(self, + os.path.join(self.source_folder, "CMake/Packages/FindDirectX11.cmake"), 'find_path(DirectX11_INCLUDE_DIR NAMES d3d11.h HINTS "', 'find_path(DirectX11_INCLUDE_DIR NO_CMAKE_PATH NO_CMAKE_ENVIRONMENT_PATH NAMES d3d11.h HINTS "', ) - shutil.copyfile( - "patches/FindFreeImage.cmake", "CMake/Packages/FindConanFreeImage.cmake" - ) - shutil.copyfile("patches/FindZZip.cmake", "CMake/Packages/FindConanZZip.cmake") - for patch in self.conan_data["patches"][self.version]: - tools.patch(**patch) def build(self): + self._patch_sources() cmake = CMake(self) - cmake.definitions["OGRE_BUILD_COMPONENT_BITES"] = "ON" - cmake.definitions["OGRE_BUILD_COMPONENT_CSHARP"] = "OFF" - cmake.definitions["OGRE_BUILD_COMPONENT_JAVA"] = "OFF" - cmake.definitions["OGRE_BUILD_COMPONENT_OVERLAY_IMGUI"] = "ON" - cmake.definitions["OGRE_BUILD_COMPONENT_PYTHON"] = "OFF" - cmake.definitions["OGRE_BUILD_DEPENDENCIES"] = "OFF" - cmake.definitions["OGRE_BUILD_PLUGIN_STBI"] = "ON" - cmake.definitions["OGRE_BUILD_PLUGIN_EXRCODEC"] = "OFF" - cmake.definitions["OGRE_BUILD_RENDERSYSTEM_D3D11"] = "ON" - cmake.definitions["OGRE_BUILD_RENDERSYSTEM_D3D9"] = "ON" - cmake.definitions["OGRE_BUILD_RENDERSYSTEM_GL3PLUS"] = "OFF" - cmake.definitions["OGRE_BUILD_SAMPLES"] = "OFF" - cmake.definitions["OGRE_INSTALL_SAMPLES"] = "OFF" - cmake.definitions["OGRE_RESOURCEMANAGER_STRICT"] = 0 - if os_info.is_windows: - cmake.definitions["CMAKE_CXX_FLAGS"] = "-D_OGRE_FILESYSTEM_ARCHIVE_UNICODE" cmake.configure() cmake.build() def package(self): cmake = CMake(self) cmake.install() + rmdir(self, os.path.join(self.package_folder, "CMake")) + rmdir(self, os.path.join(self.package_folder, "Docs")) def package_info(self): - self.cpp_info.name = "OGRE" + self.cpp_info.set_property("cmake_module_file_name", "OGRE") + self.cpp_info.set_property("cmake_module_target_name", "OGRE::OGRE") + self.cpp_info.set_property("cmake_file_name", "OGRE") + self.cpp_info.set_property("cmake_target_name", "OGRE::OGRE") self.cpp_info.includedirs = [ "include", "include/OGRE", "include/OGRE/Bites", - "include/OGRE/HLMS", "include/OGRE/MeshLodGenerator", "include/OGRE/Overlay", "include/OGRE/Paging", @@ -102,4 +109,4 @@ class OGREConan(ConanFile): "include/OGRE/Threading", "include/OGRE/Volume", ] - self.cpp_info.libs = tools.collect_libs(self) + self.cpp_info.libs = collect_libs(self) diff --git a/ogre/1.11/patches/1.11.6.1/CMakeLists.txt.patch b/ogre/1.11/patches/1.11.6.1/CMakeLists.txt.patch deleted file mode 100644 index 7001dc2..0000000 --- a/ogre/1.11/patches/1.11.6.1/CMakeLists.txt.patch +++ /dev/null @@ -1,20 +0,0 @@ ---- CMakeLists.txt -+++ CMakeLists.txt -@@ -16,6 +16,8 @@ - - cmake_minimum_required(VERSION 3.3.0) - -+include(${CMAKE_BINARY_DIR}/conan_paths.cmake) -+ - set(CMAKE_CXX_STANDARD 11) - set(CMAKE_CXX_STANDARD_REQUIRED ON) - set(CMAKE_CXX_EXTENSIONS OFF) -@@ -63,6 +65,7 @@ - - # Include necessary submodules - set(CMAKE_MODULE_PATH -+ "${CMAKE_BINARY_DIR}" - "${PROJECT_SOURCE_DIR}/CMake" - "${PROJECT_SOURCE_DIR}/CMake/Utils" - "${PROJECT_SOURCE_DIR}/CMake/Packages" - diff --git a/ogre/1.11/patches/1.11.6.1/FixFreeImage.patch b/ogre/1.11/patches/1.11.6.1/FixFreeImage.patch new file mode 100644 index 0000000..364034d --- /dev/null +++ b/ogre/1.11/patches/1.11.6.1/FixFreeImage.patch @@ -0,0 +1,11 @@ +--- a/PlugIns/FreeImageCodec/CMakeLists.txt ++++ b/PlugIns/FreeImageCodec/CMakeLists.txt +@@ -13,7 +13,7 @@ set(SOURCES "${CMAKE_CURRENT_SOURCE_DIR}/src/OgreFreeImageCodec.cpp") + + add_definitions(-DFREEIMAGE_LIB) + add_library(Codec_FreeImage ${OGRE_LIB_TYPE} ${HEADER_FILES} ${SOURCES}) +-target_link_libraries(Codec_FreeImage PUBLIC OgreMain ${FreeImage_LIBRARIES}) ++target_link_libraries(Codec_FreeImage PUBLIC OgreMain freeimage::FreeImage) + target_include_directories(Codec_FreeImage PUBLIC + "$" + $ diff --git a/ogre/1.11/patches/1.11.6.1/FixOverlayCMakeLists.txt.patch b/ogre/1.11/patches/1.11.6.1/FixOverlay.patch similarity index 57% rename from ogre/1.11/patches/1.11.6.1/FixOverlayCMakeLists.txt.patch rename to ogre/1.11/patches/1.11.6.1/FixOverlay.patch index 615204f..7fe5aea 100644 --- a/ogre/1.11/patches/1.11.6.1/FixOverlayCMakeLists.txt.patch +++ b/ogre/1.11/patches/1.11.6.1/FixOverlay.patch @@ -1,11 +1,13 @@ ---- Components/Overlay/CMakeLists.txt -+++ Components/Overlay/CMakeLists.txt -@@ -21,7 +21,7 @@ +diff --git a/Components/Overlay/CMakeLists.txt b/Components/Overlay/CMakeLists.txt +index 1ed646080..3f0b75c33 100644 +--- a/Components/Overlay/CMakeLists.txt ++++ b/Components/Overlay/CMakeLists.txt +@@ -21,7 +21,7 @@ file(GLOB SOURCE_FILES "${CMAKE_CURRENT_SOURCE_DIR}/src/*.cpp") # setup target add_library(OgreOverlay ${OGRE_COMP_LIB_TYPE} ${HEADER_FILES} ${SOURCE_FILES} ${PLATFORM_HEADER_FILES} ${PLATFORM_SOURCE_FILES}) set_target_properties(OgreOverlay PROPERTIES VERSION ${OGRE_SOVERSION} SOVERSION ${OGRE_SOVERSION}) -target_link_libraries(OgreOverlay PUBLIC OgreMain PRIVATE "${FREETYPE_LIBRARIES}" ZLIB::ZLIB) -+target_link_libraries(OgreOverlay PUBLIC OgreMain PRIVATE Freetype::Freetype ZLIB::ZLIB) ++target_link_libraries(OgreOverlay PUBLIC OgreMain PRIVATE freetype ZLIB::ZLIB) target_include_directories(OgreOverlay PUBLIC "$" $ diff --git a/ogre/1.11/patches/1.11.6.1/Samples-CMakeList.txt.patch b/ogre/1.11/patches/1.11.6.1/FixSamples.patch similarity index 100% rename from ogre/1.11/patches/1.11.6.1/Samples-CMakeList.txt.patch rename to ogre/1.11/patches/1.11.6.1/FixSamples.patch