-
Notifications
You must be signed in to change notification settings - Fork 0
/
conanfile.py
109 lines (80 loc) · 4.23 KB
/
conanfile.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
## Copyright 2015 Eric W. Barndollar. All rights reserved.
##
## Licensed under the Apache License, Version 2.0 (the "License");
## you may not use this file except in compliance with the License.
## You may obtain a copy of the License at
##
## http://www.apache.org/licenses/LICENSE-2.0
##
## Unless required by applicable law or agreed to in writing, software
## distributed under the License is distributed on an "AS IS" BASIS,
## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
## See the License for the specific language governing permissions and
## limitations under the License.
import conans
class OOMuseMathConan(conans.ConanFile):
"""The conan.io + CMake build configuration for C++ oomuse-math package."""
#=============================================================================
# Static configuration data about this package
#=============================================================================
name = "oomuse-math"
version = "0.1.0"
author = "Eric W. Barndollar (eric@EricWBarndollar.com)"
build_policy = "missing" # Automatically build from source when not in cache.
license = "Apache 2.0"
# Note: This gets cleared if not in testing mode, since header-only library
# is not system-depdendent.
settings = "os", "compiler", "build_type", "arch"
url = "https://github.com/lindurion/oomuse-math"
#=============================================================================
# Configuration options
#=============================================================================
options = {
"testing": [False, True],
}
# Note: No configuration option is provided for Windows static C runtime (the
# /MT or /MTd cl compiler options), so any package that uses this library must
# use the shared C runtime library on Windows (/MD or /MDd cl options).
# Note that gtest in shared mode produces compiler warnings, so link against
# as a static library so this build can treat warnings as errors.
default_options = "testing=False", "gtest:shared=False"
def configure(self):
"""Configures things that depend on configuration options."""
if not self.options.testing:
self.settings.clear()
#=============================================================================
# Dependencies needed to build, run, and (optionally) test this package
#=============================================================================
def requirements(self):
"""Defines the conan.io packages required to build & test this package."""
self.requires("oomuse-core/0.1.1@lindurion/stable")
if self.options.testing:
self.requires("gtest/1.8.0@lasote/stable")
def imports(self):
"""Copies dynamic libs from deps needed to run & test this package."""
self.copy("*.dll", dst="bin", src="bin")
self.copy("*.dylib*", dst="bin", src="lib")
#=============================================================================
# Building and (optionally) testing this package
#=============================================================================
generators = "cmake" # Generate info needed to build against conan.io deps.
def build(self):
"""Builds this package and optionally runs tests for it."""
# Build this package using CMake.
cmake = conans.CMake(self.settings)
cmake_test_def = "-DOOMUSE_MATH_TESTING=1" if self.options.testing else ""
self.run("cmake %s %s %s" % (self.conanfile_directory,
cmake.command_line,
cmake_test_def))
self.run("cmake --build . %s" % cmake.build_config)
# If testing, run unit tests to make sure library works before packaging.
if self.options.testing:
self.run("ctest -C %s --output-on-failure" % self.settings.build_type)
#=============================================================================
# Configuring this built package for clients to depend on and use
#=============================================================================
exports = "*" # Export all files in this dir as part of conan package.
def package(self):
"""Copies build outputs that client needs to be able to use this library."""
# Include headers:
self.copy("*.h", dst="include", src="include", keep_path=True)