File: conanfile.py

package info (click to toggle)
libtoxcore 0.2.20-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 6,124 kB
  • sloc: ansic: 75,034; cpp: 4,933; sh: 1,115; python: 651; makefile: 329; perl: 39
file content (87 lines) | stat: -rw-r--r-- 2,876 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
# pylint: disable=not-callable
import os
import re

from conans import CMake
from conans import ConanFile
from conans.tools import collect_libs
from conans.tools import load


class ToxConan(ConanFile):
    name = "c-toxcore"
    url = "https://tox.chat"
    description = "The future of online communications."
    license = "GPL-3.0-only"
    settings = "os", "compiler", "build_type", "arch"
    requires = "libsodium/1.0.18", "opus/1.3.1", "libvpx/1.9.0"
    generators = "cmake_find_package"
    scm = {"type": "git", "url": "auto", "revision": "auto"}

    options = {
        "shared": [True, False],
        "with_tests": [True, False],
    }
    default_options = {
        "shared": False,
        "with_tests": False,
    }

    _cmake = None

    def _create_cmake(self):
        if self._cmake is not None:
            return self._cmake

        self._cmake = CMake(self)
        self._cmake.definitions["AUTOTEST"] = self.options.with_tests
        self._cmake.definitions["BUILD_MISC_TESTS"] = self.options.with_tests
        self._cmake.definitions["TEST_TIMEOUT_SECONDS"] = "300"

        self._cmake.definitions[
            "CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS"] = self.options.shared
        self._cmake.definitions["ENABLE_SHARED"] = self.options.shared
        self._cmake.definitions["ENABLE_STATIC"] = not self.options.shared
        self._cmake.definitions["MUST_BUILD_TOXAV"] = True
        if self.settings.compiler == "Visual Studio":
            self._cmake.definitions["MSVC_STATIC_SODIUM"] = True
            self._cmake.definitions[
                "FLAT_OUTPUT_STRUCTURE"] = self.options.shared

        self._cmake.configure()
        return self._cmake

    def set_version(self):
        content = load(os.path.join(self.recipe_folder, "CMakeLists.txt"))
        version_major = re.search(r"set\(PROJECT_VERSION_MAJOR \"(.*)\"\)",
                                  content).group(1)
        version_minor = re.search(r"set\(PROJECT_VERSION_MINOR \"(.*)\"\)",
                                  content).group(1)
        version_patch = re.search(r"set\(PROJECT_VERSION_PATCH \"(.*)\"\)",
                                  content).group(1)
        self.version = "%s.%s.%s" % (
            version_major.strip(),
            version_minor.strip(),
            version_patch.strip(),
        )

    def requirements(self):
        if self.settings.os == "Windows":
            self.requires("pthreads4w/3.0.0")

    def build(self):
        cmake = self._create_cmake()
        cmake.build()

        if self.options.with_tests:
            cmake.test(output_on_failure=True)

    def package(self):
        cmake = self._create_cmake()
        cmake.install()

    def package_info(self):
        self.cpp_info.libs = collect_libs(self)

        if self.settings.os == "Windows":
            self.cpp_info.system_libs = ["Ws2_32", "Iphlpapi"]