1cb93a386Sopenharmony_ci#!/usr/bin/env python
2cb93a386Sopenharmony_ci# -*- coding: utf-8 -*-
3cb93a386Sopenharmony_ci
4cb93a386Sopenharmony_ci# Note: Conan is supported on a best-effort basis. Abseil doesn't use Conan
5cb93a386Sopenharmony_ci# internally, so we won't know if it stops working. We may ask community
6cb93a386Sopenharmony_ci# members to help us debug any problems that arise.
7cb93a386Sopenharmony_ci
8cb93a386Sopenharmony_cifrom conans import ConanFile, CMake, tools
9cb93a386Sopenharmony_cifrom conans.errors import ConanInvalidConfiguration
10cb93a386Sopenharmony_cifrom conans.model.version import Version
11cb93a386Sopenharmony_ci
12cb93a386Sopenharmony_ci
13cb93a386Sopenharmony_ciclass AbseilConan(ConanFile):
14cb93a386Sopenharmony_ci    name = "abseil"
15cb93a386Sopenharmony_ci    url = "https://github.com/abseil/abseil-cpp"
16cb93a386Sopenharmony_ci    homepage = url
17cb93a386Sopenharmony_ci    author = "Abseil <abseil-io@googlegroups.com>"
18cb93a386Sopenharmony_ci    description = "Abseil Common Libraries (C++) from Google"
19cb93a386Sopenharmony_ci    license = "Apache-2.0"
20cb93a386Sopenharmony_ci    topics = ("conan", "abseil", "abseil-cpp", "google", "common-libraries")
21cb93a386Sopenharmony_ci    exports = ["LICENSE"]
22cb93a386Sopenharmony_ci    exports_sources = ["CMakeLists.txt", "CMake/*", "absl/*"]
23cb93a386Sopenharmony_ci    generators = "cmake"
24cb93a386Sopenharmony_ci    settings = "os", "arch", "compiler", "build_type"
25cb93a386Sopenharmony_ci
26cb93a386Sopenharmony_ci    def configure(self):
27cb93a386Sopenharmony_ci        if self.settings.os == "Windows" and \
28cb93a386Sopenharmony_ci           self.settings.compiler == "Visual Studio" and \
29cb93a386Sopenharmony_ci           Version(self.settings.compiler.version.value) < "14":
30cb93a386Sopenharmony_ci            raise ConanInvalidConfiguration("Abseil does not support MSVC < 14")
31cb93a386Sopenharmony_ci
32cb93a386Sopenharmony_ci    def build(self):
33cb93a386Sopenharmony_ci        tools.replace_in_file("CMakeLists.txt", "project(absl CXX)", "project(absl CXX)\ninclude(conanbuildinfo.cmake)\nconan_basic_setup()")
34cb93a386Sopenharmony_ci        cmake = CMake(self)
35cb93a386Sopenharmony_ci        cmake.definitions["BUILD_TESTING"] = False
36cb93a386Sopenharmony_ci        cmake.configure()
37cb93a386Sopenharmony_ci        cmake.build()
38cb93a386Sopenharmony_ci
39cb93a386Sopenharmony_ci    def package(self):
40cb93a386Sopenharmony_ci        self.copy("LICENSE", dst="licenses")
41cb93a386Sopenharmony_ci        self.copy("*.h", dst="include", src=".")
42cb93a386Sopenharmony_ci        self.copy("*.inc", dst="include", src=".")
43cb93a386Sopenharmony_ci        self.copy("*.a", dst="lib", src=".", keep_path=False)
44cb93a386Sopenharmony_ci        self.copy("*.lib", dst="lib", src=".", keep_path=False)
45cb93a386Sopenharmony_ci
46cb93a386Sopenharmony_ci    def package_info(self):
47cb93a386Sopenharmony_ci        if self.settings.os == "Linux":
48cb93a386Sopenharmony_ci            self.cpp_info.libs = ["-Wl,--start-group"]
49cb93a386Sopenharmony_ci        self.cpp_info.libs.extend(tools.collect_libs(self))
50cb93a386Sopenharmony_ci        if self.settings.os == "Linux":
51cb93a386Sopenharmony_ci            self.cpp_info.libs.extend(["-Wl,--end-group", "pthread"])
52