mirror of
https://github.com/Xahau/xahaud.git
synced 2025-11-19 01:55:48 +00:00
92 lines
4.5 KiB
Python
92 lines
4.5 KiB
Python
from conan import ConanFile
|
|
from conan.tools.files import get, copy, download
|
|
from conan.tools.scm import Version
|
|
from conan.errors import ConanInvalidConfiguration
|
|
|
|
import os
|
|
|
|
required_conan_version = ">=1.53.0"
|
|
|
|
class WasmedgeConan(ConanFile):
|
|
name = "wasmedge"
|
|
description = ("WasmEdge is a lightweight, high-performance, and extensible WebAssembly runtime"
|
|
"for cloud native, edge, and decentralized applications."
|
|
"It powers serverless apps, embedded functions, microservices, smart contracts, and IoT devices.")
|
|
license = "Apache-2.0"
|
|
url = "https://github.com/conan-io/conan-center-index"
|
|
homepage = "https://github.com/WasmEdge/WasmEdge/"
|
|
topics = ("webassembly", "wasm", "wasi", "emscripten")
|
|
package_type = "shared-library"
|
|
settings = "os", "arch", "compiler", "build_type"
|
|
|
|
@property
|
|
def _compiler_alias(self):
|
|
return {
|
|
"Visual Studio": "Visual Studio",
|
|
# "Visual Studio": "msvc",
|
|
"msvc": "msvc",
|
|
}.get(str(self.info.settings.compiler), "gcc")
|
|
|
|
def configure(self):
|
|
self.settings.compiler.rm_safe("libcxx")
|
|
self.settings.compiler.rm_safe("cppstd")
|
|
|
|
def validate(self):
|
|
try:
|
|
self.conan_data["sources"][self.version][str(self.settings.os)][str(self.settings.arch)][self._compiler_alias]
|
|
except KeyError:
|
|
raise ConanInvalidConfiguration("Binaries for this combination of version/os/arch/compiler are not available")
|
|
|
|
def package_id(self):
|
|
del self.info.settings.compiler.version
|
|
self.info.settings.compiler = self._compiler_alias
|
|
|
|
def build(self):
|
|
# This is packaging binaries so the download needs to be in build
|
|
get(self, **self.conan_data["sources"][self.version][str(self.settings.os)][str(self.settings.arch)][self._compiler_alias][0],
|
|
destination=self.source_folder, strip_root=True)
|
|
download(self, filename="LICENSE",
|
|
**self.conan_data["sources"][self.version][str(self.settings.os)][str(self.settings.arch)][self._compiler_alias][1])
|
|
|
|
def package(self):
|
|
copy(self, pattern="*.h", dst=os.path.join(self.package_folder, "include"), src=os.path.join(self.source_folder, "include"), keep_path=True)
|
|
copy(self, pattern="*.inc", dst=os.path.join(self.package_folder, "include"), src=os.path.join(self.source_folder, "include"), keep_path=True)
|
|
|
|
srclibdir = os.path.join(self.source_folder, "lib64" if self.settings.os == "Linux" else "lib")
|
|
srcbindir = os.path.join(self.source_folder, "bin")
|
|
dstlibdir = os.path.join(self.package_folder, "lib")
|
|
dstbindir = os.path.join(self.package_folder, "bin")
|
|
if Version(self.version) >= "0.11.1":
|
|
copy(self, pattern="wasmedge.lib", src=srclibdir, dst=dstlibdir, keep_path=False)
|
|
copy(self, pattern="wasmedge.dll", src=srcbindir, dst=dstbindir, keep_path=False)
|
|
copy(self, pattern="libwasmedge.so*", src=srclibdir, dst=dstlibdir, keep_path=False)
|
|
copy(self, pattern="libwasmedge*.dylib", src=srclibdir, dst=dstlibdir, keep_path=False)
|
|
else:
|
|
copy(self, pattern="wasmedge_c.lib", src=srclibdir, dst=dstlibdir, keep_path=False)
|
|
copy(self, pattern="wasmedge_c.dll", src=srcbindir, dst=dstbindir, keep_path=False)
|
|
copy(self, pattern="libwasmedge_c.so*", src=srclibdir, dst=dstlibdir, keep_path=False)
|
|
copy(self, pattern="libwasmedge_c*.dylib", src=srclibdir, dst=dstlibdir, keep_path=False)
|
|
|
|
copy(self, pattern="wasmedge*", src=srcbindir, dst=dstbindir, keep_path=False)
|
|
copy(self, pattern="LICENSE", src=self.source_folder, dst=os.path.join(self.package_folder, "licenses"), keep_path=False)
|
|
|
|
def package_info(self):
|
|
if Version(self.version) >= "0.11.1":
|
|
self.cpp_info.libs = ["wasmedge"]
|
|
else:
|
|
self.cpp_info.libs = ["wasmedge_c"]
|
|
|
|
bindir = os.path.join(self.package_folder, "bin")
|
|
self.output.info("Appending PATH environment variable: {}".format(bindir))
|
|
self.env_info.PATH.append(bindir)
|
|
|
|
if self.settings.os == "Windows":
|
|
self.cpp_info.system_libs.append("ws2_32")
|
|
self.cpp_info.system_libs.append("wsock32")
|
|
self.cpp_info.system_libs.append("shlwapi")
|
|
|
|
if self.settings.os in ["Linux", "FreeBSD"]:
|
|
self.cpp_info.system_libs.append("m")
|
|
self.cpp_info.system_libs.append("dl")
|
|
self.cpp_info.system_libs.append("rt")
|
|
self.cpp_info.system_libs.append("pthread") |