From 744cedc7e999f96aa0646bb43c039882991228ae Mon Sep 17 00:00:00 2001 From: Mikael Simberg Date: Mon, 28 Jun 2021 12:04:19 +0200 Subject: [PATCH] Add Asio package (#24485) --- .../repos/builtin/packages/asio/package.py | 81 +++++++++++++++++++ 1 file changed, 81 insertions(+) create mode 100644 var/spack/repos/builtin/packages/asio/package.py diff --git a/var/spack/repos/builtin/packages/asio/package.py b/var/spack/repos/builtin/packages/asio/package.py new file mode 100644 index 0000000000..1bf77fdf8e --- /dev/null +++ b/var/spack/repos/builtin/packages/asio/package.py @@ -0,0 +1,81 @@ +# 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) + +from spack import * +import os.path + + +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")