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