diff --git a/recipes/ogdf/all/conandata.yml b/recipes/ogdf/all/conandata.yml index c6c2b408e36ee..5cd03e051cafd 100644 --- a/recipes/ogdf/all/conandata.yml +++ b/recipes/ogdf/all/conandata.yml @@ -1,7 +1,4 @@ sources: - "2023.09": - url: "https://github.com/ogdf/ogdf/archive/refs/tags/elderberry-202309.tar.gz" - sha256: "3438205d3a6ff69d24c3a6db748d2a5a78688605baf3092456073901a2b623f3" - "2022.02": - url: "https://github.com/ogdf/ogdf/archive/refs/tags/dogwood-202202.tar.gz" - sha256: "308cc2749c6a63520f7979bac86a04066dfea2fb9d3a5e89831318db404bfbf5" + "2025.10": + url: "https://github.com/ogdf/ogdf/archive/refs/tags/foxglove-202510.tar.gz" + sha256: "e0496c2ac53f5bef3639ebac0f6110323bdd938b7d29ea5da79aced4a28f99b5" diff --git a/recipes/ogdf/all/conanfile.py b/recipes/ogdf/all/conanfile.py index cbdc4032988fc..c28944964d755 100644 --- a/recipes/ogdf/all/conanfile.py +++ b/recipes/ogdf/all/conanfile.py @@ -1,10 +1,12 @@ from conan import ConanFile -from conan.tools.apple import fix_apple_shared_install_name +from conan.tools.apple import is_apple_os +from conan.tools.build import check_min_cppstd, cross_building from conan.tools.cmake import CMake, CMakeDeps, CMakeToolchain, cmake_layout -from conan.tools.files import copy, get, replace_in_file, rmdir +from conan.tools.files import copy, get, replace_in_file, rmdir, rm +from conan.errors import ConanInvalidConfiguration from os.path import join -required_conan_version = ">=1.53.0" +required_conan_version = ">=2.1" class OGDFConan(ConanFile): @@ -15,6 +17,7 @@ class OGDFConan(ConanFile): homepage = "https://ogdf.net" topics = ("graph", "algorithm", "data-structures") settings = "os", "arch", "compiler", "build_type" + package_type = "library" options = { "shared": [True, False], "fPIC": [True, False], @@ -24,6 +27,13 @@ class OGDFConan(ConanFile): "fPIC": True, } + def validate(self): + check_min_cppstd(self, 17) + if cross_building(self) and is_apple_os(self): + # FIXME: https://github.com/ogdf/ogdf/issues/214 + # error: unknown target CPU 'apple-m2' + raise ConanInvalidConfiguration("Cross-building is not support on Mac yet. See https://github.com/ogdf/ogdf/issues/214.") + def source(self): get(self, **self.conan_data["sources"][self.version], strip_root=True) @@ -37,15 +47,15 @@ def configure(self): def requirements(self): self.requires("coin-clp/1.17.7") - self.requires("pugixml/1.14") + self.requires("pugixml/[>=1.14 <2]") def layout(self): cmake_layout(self, src_folder="src") def generate(self): tc = CMakeToolchain(self) - tc.variables["COIN_SOLVER"] = "CLP" - tc.variables["COIN_SOLVER_IS_EXTERNAL"] = 0 + tc.cache_variables["COIN_SOLVER"] = "CLP" + tc.cache_variables["COIN_SOLVER_IS_EXTERNAL"] = 0 tc.generate() tc = CMakeDeps(self) tc.generate() @@ -55,16 +65,22 @@ def _patch_sources(self): rmdir(self, join(self.source_folder, "src", "coin")) rmdir(self, join(self.source_folder, "include", "coin")) rmdir(self, join(self.source_folder, "include", "ogdf", "lib", "backward")) - rmdir(self, join(self.source_folder, "src", "ogdf", "lib", "pugixml")) - rmdir(self, join(self.source_folder, "include", "ogdf", "lib", "pugixml")) + # do not set C++ standard + replace_in_file(self, join(self.source_folder, "CMakeLists.txt"), "set(CMAKE_CXX_STANDARD ", "## set(CMAKE_CXX_STANDARD ") # use cci packages where available replace_in_file(self, join(self.source_folder, "CMakeLists.txt"), "include(coin)", "find_package(coin-clp REQUIRED CONFIG)\nfind_package(pugixml REQUIRED CONFIG)") replace_in_file(self, join(self.source_folder, "cmake", "ogdf.cmake"), "target_link_libraries(OGDF PUBLIC COIN)", "target_link_libraries(OGDF PUBLIC coin-clp::coin-clp pugixml::pugixml)") # replace pugixml copy in repo by conan dependency + rmdir(self, join(self.source_folder, "src", "ogdf", "lib", "pugixml")) + rmdir(self, join(self.source_folder, "include", "ogdf", "lib", "pugixml")) for dir_name, file_name in [("include", "GexfParser.h"), ("include", "GraphMLParser.h"), ("include", "SvgPrinter.h"), ("include", "TsplibXmlParser.h"), + ("src", "GexfParser.cpp"), + ("src", "GraphMLParser.cpp"), + ("src", "SvgPrinter.cpp"), + ("src", "TsplibXmlParser.cpp"), ("src", "GraphIO_graphml.cpp"), ("src", "GraphIO_gexf.cpp")]: replace_in_file(self, join(self.source_folder, dir_name, "ogdf", "fileformats", file_name), "ogdf/lib/pugixml/pugixml.h", "pugixml.hpp") @@ -76,20 +92,21 @@ def build(self): cmake.build(target="OGDF") def package(self): - copy(self, pattern="LICENSE*.txt", src=self.source_folder, dst=join(self.package_folder, "licenses")) - copy(self, pattern="*.h", src=join(self.source_folder, "include"), dst=join(self.package_folder, "include")) - copy(self, pattern="*.h", src=join(self.build_folder, "include"), dst=join(self.package_folder, "include")) - copy(self, pattern="*.lib", src=self.build_folder, dst=join(self.package_folder, "lib"), keep_path=False) - if self.options.shared: - copy(self, pattern="*.so*", src=self.build_folder, dst=join(self.package_folder, "lib")) - copy(self, pattern="*.dylib*", src=self.build_folder, dst=join(self.package_folder, "lib")) - copy(self, pattern="*.dll", src=self.build_folder, dst=join(self.package_folder, "bin"), keep_path=False) - else: - copy(self, pattern="*.a", src=self.build_folder, dst=join(self.package_folder, "lib")) - fix_apple_shared_install_name(self) + copy(self, pattern="LICENSE*", src=self.source_folder, dst=join(self.package_folder, "licenses")) + copy(self, pattern="LICENSE*", src=join(self.source_folder, "include", "ogdf", "lib", "minisat"), dst=join(self.package_folder, "licenses")) + cmake = CMake(self) + cmake.install() + rmdir(self, join(self.package_folder, "lib", "cmake")) + rmdir(self, join(self.package_folder, "share")) + for dll_pattern_to_remove in ["concrt*.dll", "msvcp*.dll", "vcruntime*.dll"]: + rm(self, dll_pattern_to_remove, join(self.package_folder, "bin")) def package_info(self): - self.cpp_info.libs = ["OGDF"] + libsuffix = "-debug" if self.settings.build_type == "Debug" else "" + self.cpp_info.libs = ["OGDF" + libsuffix] + self.cpp_info.set_property("cmake_target_name", "OGDF") if self.settings.os in ["Linux", "FreeBSD"]: self.cpp_info.system_libs.append("m") self.cpp_info.system_libs.append("pthread") + includesuffix = "-debug" if self.settings.build_type == "Debug" else "-release" + self.cpp_info.includedirs.append(join("include", "ogdf" + includesuffix)) diff --git a/recipes/ogdf/all/test_package/CMakeLists.txt b/recipes/ogdf/all/test_package/CMakeLists.txt index 46c18164ae4cb..0660c413f1db4 100644 --- a/recipes/ogdf/all/test_package/CMakeLists.txt +++ b/recipes/ogdf/all/test_package/CMakeLists.txt @@ -1,7 +1,6 @@ cmake_minimum_required(VERSION 3.15) project(test_package CXX) -set(CMAKE_CXX_STANDARD 11) find_package(ogdf REQUIRED CONFIG) add_executable(${PROJECT_NAME} main.cpp) -target_link_libraries(${PROJECT_NAME} PRIVATE ogdf::ogdf) +target_link_libraries(${PROJECT_NAME} PRIVATE OGDF) diff --git a/recipes/ogdf/all/test_package/main.cpp b/recipes/ogdf/all/test_package/main.cpp index 92f79bf1d49e0..53d5aabd0fd93 100644 --- a/recipes/ogdf/all/test_package/main.cpp +++ b/recipes/ogdf/all/test_package/main.cpp @@ -1,3 +1,4 @@ +#include #include #include #include diff --git a/recipes/ogdf/config.yml b/recipes/ogdf/config.yml index 9860e459d4c28..f7403d563c3aa 100644 --- a/recipes/ogdf/config.yml +++ b/recipes/ogdf/config.yml @@ -1,5 +1,3 @@ versions: - "2023.09": - folder: all - "2022.02": + "2025.10": folder: all