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