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