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
|
# Copyright 2013-2021 Lawrence Livermore National Security, LLC and other
# Spack Project Developers. See the top-level COPYRIGHT file for details.
#
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
import os.path
from spack import *
class Asio(AutotoolsPackage):
"""C++ library for network and low-level I/O programming."""
homepage = "http://think-async.com/Asio/"
url = "https://github.com/chriskohlhoff/asio/archive/1.18.2.tar.gz"
git = "https://github.com/chriskohlhoff/asio.git"
maintainers = ["msimberg"]
version(
"1.18.2",
sha256="8d67133b89e0f8b212e9f82fdcf1c7b21a978d453811e2cd941c680e72c2ca32",
)
depends_on("autoconf", type="build")
depends_on("automake", type="build")
depends_on("m4", type="build")
depends_on("libtool", type="build")
stds = ("11", "14", "17")
variant(
"cxxstd",
default="11",
values=stds,
multi=False,
description="Use the specified C++ standard when building.",
)
variant(
"separate_compilation",
default=False,
description="Compile Asio sources separately",
)
variant(
"boost_coroutine",
default=False,
description="Enable support for Boost.Coroutine.",
)
depends_on("boost +context +coroutine", when="+boost_coroutine")
variant("boost_regex", default=False, description="Enable support for Boost.Regex.")
depends_on("boost +regex", when="+boost_regex")
for std in stds:
depends_on("boost cxxstd=" + std, when="cxxstd={0} ^boost".format(std))
def configure_args(self):
variants = self.spec.variants
args = [
"CXXFLAGS=-std=c++{0}".format(variants["cxxstd"].value),
]
if variants["separate_compilation"].value:
args.append("--enable-separate-compilation")
if variants["boost_coroutine"].value:
args.append("--enable-boost-coroutine")
if variants["boost_coroutine"].value or variants["boost_regex"].value:
args.append("--with-boost={self.spec['boost'].prefix}")
return args
def url_for_version(self, version):
return "https://github.com/chriskohlhoff/asio/archive/asio-{0}.tar.gz".format(
version.dashed
)
@property
def configure_directory(self):
return os.path.join(self.stage.source_path, "asio")
|