forked from hyperrealm/libconfig
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request hyperrealm#181 from Lukas-Heiligenbrunner/conanpac…
…kage Conan package build
- Loading branch information
Showing
6 changed files
with
107 additions
and
12 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,28 @@ | ||
name: build conan package | ||
on: [push, pull_request] | ||
jobs: | ||
build_conan: | ||
strategy: | ||
matrix: | ||
os: [ windows-latest, ubuntu-latest, macos-latest ] | ||
runs-on: ${{ matrix.os }} | ||
steps: | ||
- uses: actions/checkout@v2 | ||
- uses: actions/setup-python@v2 | ||
with: | ||
python-version: '3.x' | ||
architecture: 'x64' | ||
# install dependencies | ||
- name: install conan | ||
run: pip3 install conan | ||
- name: setup conan | ||
run: | | ||
conan profile new default --detect --force # Generates default profile detecting GCC and sets old ABI | ||
# new ABI version needs to be set on GCC >= 5 | ||
- name: set ABI | ||
if: ${{ matrix.os == 'ubuntu-latest' }} | ||
run: | | ||
conan profile update settings.compiler.libcxx=libstdc++11 default # Sets libcxx to C++11 ABI | ||
- name: build conan package | ||
run: | | ||
conan create . |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,70 @@ | ||
from conans import ConanFile, CMake, tools | ||
import os | ||
import re | ||
import textwrap | ||
|
||
|
||
class LibconfigConan(ConanFile): | ||
name = "libconfig" | ||
license = "GNU LESSER GENERAL PUBLIC LICENSE" | ||
author = """Mark Lindner - Lead developer & maintainer. | ||
Daniel Marjamäki - Enhancements & bugfixes. | ||
Andrew Tytula - Windows port. | ||
Glenn Herteg - Enhancements, bugfixes, documentation corrections.s | ||
Matt Renaud - Enhancements & bugfixes. | ||
JoseLuis Tallon - Enhancements & bugfixes""" | ||
url = "hyperrealm.github.io/libconfig/" | ||
description = "Libconfig is a simple library for processing structured configuration files. " \ | ||
"This file format is more compact and more readable than XML. And unlike XML, it is type-aware, " \ | ||
"so it is not necessary to do string parsing in application code." | ||
topics = ("libconfig", "structured", "configuration", "xml", "type") | ||
settings = "os", "compiler", "build_type", "arch" | ||
options = {"shared": [True, False], "fPIC": [True, False]} | ||
default_options = {"shared": False, "fPIC": False} | ||
generators = "cmake" | ||
exports_sources = "*" | ||
no_copy_source = True | ||
|
||
def set_version(self): | ||
configure_ac = tools.load(os.path.join(self.recipe_folder, "configure.ac")) | ||
self.version = next(re.finditer(r"AC_INIT\(libconfig,[ \t]+([0-9.]+),.*", configure_ac)).group(1) | ||
|
||
def config_options(self): | ||
if self.settings.os == "Windows": | ||
del self.options.fPIC | ||
|
||
def configure(self): | ||
if self.options.shared: | ||
del self.options.fPIC | ||
|
||
def build(self): | ||
tools.save(os.path.join(self.build_folder, "CMakeLists.txt"), textwrap.dedent("""\ | ||
cmake_minimum_required(VERSION 2.8.12) | ||
project(cmake_wrapper) | ||
include("{}/conanbuildinfo.cmake") | ||
conan_basic_setup() | ||
add_subdirectory("{}" libconfig) | ||
""").format(self.install_folder.replace("\\","/"), self.source_folder.replace("\\","/"))) | ||
cmake = CMake(self) | ||
cmake.configure(source_folder=self.build_folder) | ||
cmake.build() | ||
|
||
def package(self): | ||
cmake = CMake(self) | ||
cmake.install() | ||
|
||
def package_info(self): | ||
# FIXME: `libconfig` is `libconfig::libconfig` in `libconfigConfig.cmake` | ||
# FIXME: `libconfig++` is `libconfig::libconfig++` in `libconfig++Config.cmake` | ||
self.cpp_info.components["libconfig_c"].libs = ["libconfig" if self.settings.compiler == "Visual Studio" else "config"] | ||
if not self.options.shared: | ||
self.cpp_info.components["libconfig_c"].defines = ["LIBCONFIG_STATIC"] | ||
self.cpp_info.components["libconfig_c"].names["cmake_find_package"] = ["libconfig"] | ||
self.cpp_info.components["libconfig_c"].names["cmake_find_package_multi"] = ["libconfig"] | ||
self.cpp_info.components["libconfig_c"].names["pkg_config"] = "libconfig" | ||
self.cpp_info.components["libconfig_cpp"].libs = ["libconfig++" if self.settings.compiler == "Visual Studio" else "config++"] | ||
if not self.options.shared: | ||
self.cpp_info.components["libconfig_cpp"].defines = ["LIBCONFIGXX_STATIC"] | ||
self.cpp_info.components["libconfig_cpp"].names["cmake_find_package"] = ["libconfig++"] | ||
self.cpp_info.components["libconfig_cpp"].names["cmake_find_package_multi"] = ["libconfig++"] | ||
self.cpp_info.components["libconfig_cpp"].names["pg_config"] = "libconfig++" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters