diff --git a/recipes/aggeom-agg/all/conandata.yml b/recipes/aggeom-agg/all/conandata.yml new file mode 100644 index 0000000000000..8b26697b0ef0d --- /dev/null +++ b/recipes/aggeom-agg/all/conandata.yml @@ -0,0 +1,4 @@ +sources: + "2.6.1": + url: "https://github.com/aggeom/agg-2.6/archive/refs/tags/agg-2.6.1.tar.gz" + sha256: 685966f880f1c2aae19479b60525fafba8cbd88e4c62d1947767780df8f6a3d0 diff --git a/recipes/aggeom-agg/all/conanfile.py b/recipes/aggeom-agg/all/conanfile.py new file mode 100644 index 0000000000000..55a67e88a5f75 --- /dev/null +++ b/recipes/aggeom-agg/all/conanfile.py @@ -0,0 +1,141 @@ +from conan import ConanFile +from conan.tools.cmake import CMake, CMakeDeps, CMakeToolchain, cmake_layout +from conan.tools.files import copy, get, rmdir +from conan.errors import ConanInvalidConfiguration + +import os + +required_conan_version = ">=1.53.0" + +class AggConan(ConanFile): + name = 'aggeom-agg' + description = 'AGG Anti-Grain Geometry Library' + topics = ('graphics') + url = "https://github.com/conan-io/conan-center-index" + homepage = 'https://github.com/aggeom' + license = 'BSD-3-Clause' + + settings = 'os', 'arch', 'compiler', 'build_type' + options = { + 'shared': [True, False], + 'fPIC': [True, False], + 'with_gpc': [True, False], + 'with_freetype': [True, False], + 'with_agg2d': [True, False], + 'with_agg2d_freetype': [True, False], + 'with_platform': [True, False], + 'with_controls': [True, False], + } + + default_options = { + 'shared': False, + 'fPIC': True, + 'with_gpc': True, + 'with_freetype': True, + 'with_agg2d': True, + 'with_agg2d_freetype': True, + 'with_platform': True, + 'with_controls': True, + } + + def validate(self): + if self.settings.os not in ("Windows", "Linux"): + raise ConanInvalidConfiguration("OS is not supported") + if self.options.shared: + raise ConanInvalidConfiguration("Invalid configuration") + + def config_options(self): + if self.settings.os == "Windows": + del self.options.fPIC + + def configure(self): + self.options.rm_safe("fPIC") + + def source(self): + get(self, **self.conan_data["sources"][self.version], strip_root=True) + + def layout(self): + cmake_layout(self, src_folder="src") + + def requirements(self): + if self.options.with_freetype: + self.requires('freetype/2.13.0') + if self.options.with_platform and self.settings.os in ["Linux"]: + self.requires("xorg/system") + + def generate(self): + tc = CMakeToolchain(self) + tc.variables['agg_USE_EXPAT'] = False + tc.variables['agg_USE_SDL_PLATFORM'] = False + tc.variables['agg_BUILD_DEMO'] = False + tc.variables['agg_BUILD_EXAMPLES'] = False + + tc.variables['agg_USE_GPC'] = self.options.with_gpc + tc.variables['agg_USE_FREETYPE'] = self.options.with_freetype + tc.variables['agg_USE_AGG2D'] = self.options.with_agg2d + tc.variables['agg_USE_AGG2D_FREETYPE'] = self.options.with_agg2d_freetype + tc.variables['agg_BUILD_PLATFORM'] = self.options.with_platform + tc.variables['agg_BUILD_CONTROLS'] = self.options.with_controls + + tc.generate() + + deps = CMakeDeps(self) + deps.generate() + + def build(self): + cmake = CMake(self) + cmake.configure() + cmake.build() + + def package(self): + copy(self, "copying", src=self.source_folder, dst=os.path.join(self.package_folder, "licenses")) + cmake = CMake(self) + cmake.configure() + cmake.install() + rmdir(self, os.path.join(self.package_folder, "lib", "cmake")) + + def package_info(self): + + self.cpp_info.set_property("cmake_file_name", "agg") + self.cpp_info.filenames["cmake_find_package"]="agg" + self.cpp_info.filenames["cmake_find_package_multi"]="agg" + self.cpp_info.names["cmake_find_package"]="agg" + self.cpp_info.names["cmake_find_package_multi"]="agg" + + self.cpp_info.components["agg"].set_property("cmake_target_name", "agg::agg") + self.cpp_info.components["agg"].libs = ["agg"] + self.cpp_info.components["agg"].includedirs = [os.path.join("include", "agg")] + + if self.options.with_freetype: + self.cpp_info.components["fontfreetype"].set_property("cmake_target_name", "agg::fontfreetype") + self.cpp_info.components["fontfreetype"].libs = ["aggfontfreetype"] + self.cpp_info.components["fontfreetype"].includedirs = [os.path.join("include", "agg","fontfreetype")] + self.cpp_info.components["fontfreetype"].requires = ["agg", "freetype::freetype"] + + if self.options.with_gpc: + self.cpp_info.components["gpc"].set_property("cmake_target_name", "agg::gpc") + self.cpp_info.components["gpc"].libs = [ "agggpc"] + self.cpp_info.components["gpc"].includedirs = [os.path.join("include", "agg","gpc")] + + + if self.options.with_agg2d: + self.cpp_info.components["2d"].set_property("cmake_target_name", "agg::2d") + self.cpp_info.components["2d"].libs = ["agg2d"] + self.cpp_info.components["2d"].includedirs = [os.path.join("include", "agg","2d")] + self.cpp_info.components["2d"].requires = ["agg"] + if self.options.with_agg2d_freetype: + self.cpp_info.components["2d"].requires = ["agg", "fontfreetype"] + + if self.options.with_platform: + + self.cpp_info.components["platform"].set_property("cmake_target_name", "agg::platform") + self.cpp_info.components["platform"].libs = ["aggplatform"] + self.cpp_info.components["platform"].includedirs = [os.path.join("include", "agg","platform")] + if self.settings.os in ["Linux"]: + self.cpp_info.components["platform"].requires = ["xorg::xorg", "agg"] + + if self.options.with_controls: + self.cpp_info.components["controls"].set_property("cmake_target_name", "agg::controls") + self.cpp_info.components["controls"].libs = ["aggctrl"] + self.cpp_info.components["controls"].includedirs = [os.path.join("include", "agg","ctrl")] + self.cpp_info.components["controls"].requires = ["agg"] diff --git a/recipes/aggeom-agg/all/test_package/CMakeLists.txt b/recipes/aggeom-agg/all/test_package/CMakeLists.txt new file mode 100644 index 0000000000000..5c9ab68de09d8 --- /dev/null +++ b/recipes/aggeom-agg/all/test_package/CMakeLists.txt @@ -0,0 +1,10 @@ +cmake_minimum_required(VERSION 3.1) +project(test_package LANGUAGES CXX) + +find_package(agg REQUIRED CONFIG) + +add_executable(${PROJECT_NAME} test_package.cpp) +target_link_libraries(${PROJECT_NAME} PRIVATE agg::agg agg::platform ) + +set_target_properties(${PROJECT_NAME} PROPERTIES WIN32_EXECUTABLE TRUE) +set_property(TARGET ${PROJECT_NAME} PROPERTY CXX_STANDARD 17) diff --git a/recipes/aggeom-agg/all/test_package/conanfile.py b/recipes/aggeom-agg/all/test_package/conanfile.py new file mode 100644 index 0000000000000..6d529581ba2f5 --- /dev/null +++ b/recipes/aggeom-agg/all/test_package/conanfile.py @@ -0,0 +1,29 @@ +from conan import ConanFile +from conan.tools.build import can_run +from conan.tools.cmake import CMake, CMakeToolchain, cmake_layout +import os + + +class TestPackageConan(ConanFile): + settings = "os", "arch", "compiler", "build_type" + generators = "CMakeDeps", "VirtualRunEnv" + + def requirements(self): + self.requires(self.tested_reference_str) + + def layout(self): + cmake_layout(self) + + def generate(self): + tc = CMakeToolchain(self) + tc.generate() + + def build(self): + cmake = CMake(self) + cmake.configure() + cmake.build() + + def test(self): + if can_run(self): + bin_path = os.path.join(self.cpp.build.bindirs[0], "test_package") + self.run(bin_path, env="conanrun") diff --git a/recipes/aggeom-agg/all/test_package/test_package.cpp b/recipes/aggeom-agg/all/test_package/test_package.cpp new file mode 100644 index 0000000000000..8fd51b67e8648 --- /dev/null +++ b/recipes/aggeom-agg/all/test_package/test_package.cpp @@ -0,0 +1,10 @@ +#include +#include +enum flip_y_e { flip_y = true }; + +int agg_main(int argc, char* argv[]) { + agg::platform_support app(agg::pix_format_bgr24, flip_y); + app.caption("AGG Example. Anti-Aliasing Demo"); + + return 0; +} diff --git a/recipes/aggeom-agg/all/test_v1_package/CMakeLists.txt b/recipes/aggeom-agg/all/test_v1_package/CMakeLists.txt new file mode 100644 index 0000000000000..0d20897301b68 --- /dev/null +++ b/recipes/aggeom-agg/all/test_v1_package/CMakeLists.txt @@ -0,0 +1,8 @@ +cmake_minimum_required(VERSION 3.1) +project(test_package) + +include(${CMAKE_BINARY_DIR}/conanbuildinfo.cmake) +conan_basic_setup(TARGETS) + +add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/../test_package + ${CMAKE_CURRENT_BINARY_DIR}/test_package) diff --git a/recipes/aggeom-agg/all/test_v1_package/conanfile.py b/recipes/aggeom-agg/all/test_v1_package/conanfile.py new file mode 100644 index 0000000000000..38f4483872d47 --- /dev/null +++ b/recipes/aggeom-agg/all/test_v1_package/conanfile.py @@ -0,0 +1,17 @@ +from conans import ConanFile, CMake, tools +import os + + +class TestPackageConan(ConanFile): + settings = "os", "arch", "compiler", "build_type" + generators = "cmake", "cmake_find_package_multi" + + def build(self): + cmake = CMake(self) + cmake.configure() + cmake.build() + + def test(self): + if not tools.cross_building(self): + bin_path = os.path.join("bin", "test_package") + self.run(bin_path, run_environment=True) diff --git a/recipes/aggeom-agg/config.yml b/recipes/aggeom-agg/config.yml new file mode 100644 index 0000000000000..cfb13334b8b03 --- /dev/null +++ b/recipes/aggeom-agg/config.yml @@ -0,0 +1,3 @@ +versions: + "2.6.1": + folder: "all"