Skip to content

Commit

Permalink
Update conan recipe, sync with conan-center-index
Browse files Browse the repository at this point in the history
  • Loading branch information
xakod authored and Anton committed Aug 29, 2023
1 parent 3ee3b4b commit b65e1bb
Show file tree
Hide file tree
Showing 3 changed files with 70 additions and 68 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/ci-conan.yml
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ jobs:
- name: Install packages
run: |
sudo apt-get update
sudo apt-get install -y gcc g++ cmake wget git python3 python3-pip libx11-dev libx11-xcb-dev libfontenc-dev libice-dev libsm-dev libxau-dev libxaw7-dev libxcomposite-dev libxcursor-dev libxdamage-dev libxdmcp-dev libxext-dev libxfixes-dev libxi-dev libxinerama-dev libxkbfile-dev libxmu-dev libxmuu-dev libxpm-dev libxrandr-dev libxrender-dev libxres-dev libxss-dev libxt-dev libxtst-dev libxv-dev libxvmc-dev libxxf86vm-dev libxcb-render0-dev libxcb-render-util0-dev libxcb-xkb-dev libxcb-icccm4-dev libxcb-image0-dev libxcb-keysyms1-dev libxcb-randr0-dev libxcb-shape0-dev libxcb-sync-dev libxcb-xfixes0-dev libxcb-xinerama0-dev libxcb-dri3-dev uuid-dev libxcb-util-dev libxcb-util0-dev
sudo apt-get install -y gcc g++ cmake wget git python3 python3-pip libx11-dev libx11-xcb-dev libfontenc-dev libice-dev libsm-dev libxau-dev libxaw7-dev libxcomposite-dev libxcursor-dev libxdamage-dev libxdmcp-dev libxext-dev libxfixes-dev libxi-dev libxinerama-dev libxkbfile-dev libxmu-dev libxmuu-dev libxpm-dev libxrandr-dev libxrender-dev libxres-dev libxss-dev libxt-dev libxtst-dev libxv-dev libxvmc-dev libxxf86vm-dev libxcb-render0-dev libxcb-render-util0-dev libxcb-xkb-dev libxcb-icccm4-dev libxcb-image0-dev libxcb-keysyms1-dev libxcb-randr0-dev libxcb-shape0-dev libxcb-sync-dev libxcb-xfixes0-dev libxcb-xinerama0-dev libxcb-dri3-dev uuid-dev libxcb-util-dev libxcb-util0-dev libxcb-cursor-dev
pip install ninja "conan>=1.51.0,<2.0.0"
conan profile new --detect default
conan profile update settings.compiler.libcxx=libstdc++11 default
Expand Down
134 changes: 68 additions & 66 deletions conanfile.py
Original file line number Diff line number Diff line change
@@ -1,51 +1,48 @@
# pylint: disable=no-member
import os

from conan import ConanFile
from conan.errors import ConanInvalidConfiguration
from conan.tools.cmake import CMake, CMakeDeps, CMakeToolchain, cmake_layout
from conan.tools.microsoft import check_min_vs, msvc_runtime_flag, is_msvc, is_msvc_static_runtime
from conan.tools.files import copy, rmdir

import os

required_conan_version = '>=1.51.0, <2.0.0' # pylint: disable=invalid-name
from conan.tools.files import copy, get, rmdir

required_conan_version = ">=1.53.0"

class AggConan(ConanFile):
name = 'agg'
version = '2.6.0'
description = 'AGG Anti-Grain Geometry Library'
topics = ('graphics')
url = 'https://github.com/aggeom/agg-2.6'
homepage = 'https://github.com/aggeom'
license = 'BSD-3-Clause'
exports_sources = '*'

settings = 'os', 'arch', 'compiler', 'build_type'
name = "aggeom-agg"
version = '2.6.1'
description = "AGG Anti-Grain Geometry Library"
license = "BSD-3-Clause"
url = "https://github.com/aggeom/agg-2.6"
homepage = "https://github.com/aggeom"
topics = ("graphics",)

package_type = "library"
settings = "os", "arch", "compiler", "build_type"
options = {
'shared': [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],
"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,
"shared": False,
"fPIC": True,
"with_gpc": True,
"with_freetype": True,
"with_agg2d": True,
"with_agg2d_freetype": True,
"with_platform": True,
"with_controls": True,
}

@property
def _build_subfolder(self):
return os.path.join(self.build_folder, 'agg')
def config_options(self):
if self.settings.os == "Windows":
del self.options.fPIC

def configure(self):
if self.options.shared:
Expand All @@ -56,23 +53,29 @@ def layout(self):

def requirements(self):
if self.options.with_freetype:
self.requires('freetype/2.13.0')
self.requires("freetype/2.13.0")
if self.options.with_platform and self.settings.os in ["Linux"]:
self.requires("xorg/system")

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 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.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()

Expand All @@ -92,45 +95,44 @@ def package(self):
rmdir(self, os.path.join(self.package_folder, "lib", "cmake"))

def package_info(self):

self.cpp_info.set_property("cmake_file_name", "agg")

lib_suffix = "d" if self.settings.build_type == "Debug" and self.options.debug_suffix else ""
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" + lib_suffix]
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" + lib_suffix]
self.cpp_info.components["fontfreetype"].includedirs = [os.path.join("include", "agg","fontfreetype")]
self.cpp_info.components["2d"].requires = ["agg"]
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" + lib_suffix]
self.cpp_info.components["gpc"].includedirs = [os.path.join("include", "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" + lib_suffix]
self.cpp_info.components["2d"].includedirs = [os.path.join("include", "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" + lib_suffix]
self.cpp_info.components["platform"].includedirs = [os.path.join("include", "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" + lib_suffix]
self.cpp_info.components["controls"].includedirs = [os.path.join("include", "agg","ctrl")]
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"]
2 changes: 1 addition & 1 deletion test_package/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ 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 )
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)

0 comments on commit b65e1bb

Please sign in to comment.