Skip to content
Open
Show file tree
Hide file tree
Changes from 7 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
90 changes: 6 additions & 84 deletions recipes/emsdk/all/conandata.yml
Original file line number Diff line number Diff line change
@@ -1,91 +1,13 @@
sources:
"4.0.10":
url: "https://github.com/emscripten-core/emsdk/archive/4.0.10.tar.gz"
sha256: "2497b55ddbba9bf9be2d18cfca3e973d40a0cfaa8d18f6caacb882a65b2faf1c"
"4.0.6":
url: "https://github.com/emscripten-core/emsdk/archive/4.0.6.tar.gz"
sha256: "2d3292d508b4f5477f490b080b38a34aaefed43e85258a1de72cb8dde3f8f3af"
"3.1.73":
url: "https://github.com/emscripten-core/emsdk/archive/3.1.73.tar.gz"
sha256: "01e5e57a1f4ad74bff88134f00f4827aeb3b72b3bf91de9c8ad8bfa12ab9479a"
"3.1.72":
url: "https://github.com/emscripten-core/emsdk/archive/3.1.72.tar.gz"
sha256: "62886722da99173789f1efc31b754c83c8ea09575035ce7fdfe5a7389bb3cec3"
"3.1.50":
url: "https://github.com/emscripten-core/emsdk/archive/3.1.50.tar.gz"
sha256: "7491a881eb5ee15fe81bbabcfff1fd571e45ccdb24a81890af429f9970cbd1f3"
"3.1.49":
url: "https://github.com/emscripten-core/emsdk/archive/3.1.49.tar.gz"
sha256: "c99d98da9241c7e72784bc764a3e60a65d8f27202d45f3cd422b2ac7245380d9"
"3.1.48":
url: "https://github.com/emscripten-core/emsdk/archive/3.1.48.tar.gz"
sha256: "94b965ba8f2ff0949ff67c6943bf5638a1b8850e4491a25413cdaff5b18da42b"
"3.1.47":
url: "https://github.com/emscripten-core/emsdk/archive/3.1.47.tar.gz"
sha256: "a882560a83cbacec67867e7ce6b00420d557e71c501b523d2ed956ded021f9b4"
"3.1.46":
url: "https://github.com/emscripten-core/emsdk/archive/3.1.46.tar.gz"
sha256: "5dd94e557b720800a60387ec078bf3b3a527cbd916ad74a696fe399f1544474f"
"3.1.45":
url: "https://github.com/emscripten-core/emsdk/archive/3.1.45.tar.gz"
sha256: "8b5b3433eb732dcc7643a2707a12fd5cbe793a5dadbbae9a60c24a737a78fe33"
"3.1.44":
url: "https://github.com/emscripten-core/emsdk/archive/3.1.44.tar.gz"
sha256: "cb8cded78f6953283429d724556e89211e51ac4d871fcf38e0b32405ee248e91"
"3.1.38":
url: "https://github.com/emscripten-core/emsdk/archive/3.1.38.tar.gz"
sha256: "45ffb273503e48aae28c04549026b9cbdd750a5d36e3da3e22bc9977d2bfd61f"
"3.1.31":
url: "https://github.com/emscripten-core/emsdk/archive/3.1.31.tar.gz"
sha256: "1d38b7375e12e85197165a4c51d76d90e1d9db8c2c593b64cfaec4338af54750"
"3.1.30":
url: "https://github.com/emscripten-core/emsdk/archive/3.1.30.tar.gz"
sha256: "7b9c4e0b19f08df9f0d807112926f3908fe73a2960b752a87c3862956da8b9a8"
"3.1.29":
url: "https://github.com/emscripten-core/emsdk/archive/refs/tags/3.1.29.tar.gz"
sha256: "506376d0d2a71fc3dd1a4dba6fb4cf18f0a2fa4e1936aa04ba4b59f2d435bf3f"
"3.1.23":
url: "https://github.com/emscripten-core/emsdk/archive/3.1.23.tar.gz"
sha256: "a2609fd97580e4e332acbf49b6cc363714982f06cb6970d54c9789df8e91381c"
"3.1.20":
url: "https://github.com/emscripten-core/emsdk/archive/3.1.20.tar.gz"
sha256: "fd336c6d3e51c7205a8ec68e835c442dcbb187f92e50c42b3d7d54a312072ef7"
"3.1.18":
url: "https://github.com/emscripten-core/emsdk/archive/3.1.18.tar.gz"
sha256: "6479c60710bfb1d146a8bdd8619b693699e73185c850a6eb79ef2bd7e2a8e411"
"3.1.17":
url: "https://github.com/emscripten-core/emsdk/archive/3.1.17.tar.gz"
sha256: "f52359d3f265162dc875ac4c9d4570abc9d012e30bef8d380cb74f0e427800a3"
"3.1.16":
url: "https://github.com/emscripten-core/emsdk/archive/3.1.16.tar.gz"
sha256: "0a7a822e09bb22d081a49bf4229377689aef473376f36b5fe62db040d7e1c065"
"3.1.15":
url: "https://github.com/emscripten-core/emsdk/archive/3.1.15.tar.gz"
sha256: "74c7c54b3544555ec38d1e9dcc7e90b9f49ed0e04f2cc3fd44663c598af24124"
"3.1.12":
url: "https://github.com/emscripten-core/emsdk/archive/3.1.12.tar.gz"
sha256: "1b8d8fdebf9f155131ba74f91d2c0dd572b2ba5d1d4a22fb123d20d3ca258e30"
"3.1.7":
url: "https://github.com/emscripten-core/emsdk/archive/3.1.7.tar.gz"
sha256: "bcceced0b7cad2e08375adf74ef20fa431230abbae8766bdad268c43e34f8d03"
"3.1.5":
url: "https://github.com/emscripten-core/emsdk/archive/3.1.5.tar.gz"
sha256: "ae540d681aa04f32b92afbda1c9ef737aa03c81222c1ce3fd567de5af7d36625"
"3.1.4":
url: "https://github.com/emscripten-core/emsdk/archive/3.1.4.tar.gz"
sha256: "7dc13d967705582e11ff62ae143425dbc63c38372f1a1b14f0cb681fda413714"
"3.1.3":
url: "https://github.com/emscripten-core/emsdk/archive/3.1.3.tar.gz"
sha256: "c03767ad4b6d24f143c0a4922735c80ec17d745191ebf54b8f97dbe5d81eb52f"
"3.1.0":
url: "https://github.com/emscripten-core/emsdk/archive/3.1.0.tar.gz"
sha256: "a2c5f3cf36525cf6a4b569f9d25500e3b2f7341c6e6779b54bcf4703b834202d"
"3.0.1":
url: "https://github.com/emscripten-core/emsdk/archive/3.0.1.tar.gz"
sha256: "3a51e17d45878a5c6d1b6c20f35d308b95d58d56dbfbee4ec058e2ee216b2c90"
"3.0.0":
url: "https://github.com/emscripten-core/emsdk/archive/3.0.0.tar.gz"
sha256: "a41dccfd15be9e85f923efaa0ac21943cbab77ec8d39e52f25eca1ec61a9ac9e"
"2.0.34":
url: "https://github.com/emscripten-core/emsdk/archive/2.0.34.tar.gz"
sha256: "a96ddf34de8de779c78be2785df04ae63c9a557da9e83e85332cda3d01bca250"
"2.0.31":
url: "https://github.com/emscripten-core/emsdk/archive/2.0.31.tar.gz"
sha256: "6bf70f4522308de1941200f8cdb9bde6967ba7aacb03445e9d136a5dd812b728"
"2.0.30":
url: https://github.com/emscripten-core/emsdk/archive/refs/tags/2.0.30.tar.gz
sha256: 69050d76c8907a58f99b08831e8cb7a4fba857efec6037d5e59df4b73111ba36
65 changes: 25 additions & 40 deletions recipes/emsdk/all/conanfile.py
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
from conan import ConanFile, conan_version
from conan import ConanFile
from conan.tools.build import cross_building
from conan.tools.env import Environment
from conan.tools.env import Environment, VirtualBuildEnv
from conan.tools.files import chdir, copy, get, replace_in_file
from conan.tools.layout import basic_layout
from conan.tools.scm import Version
from pathlib import Path
import json
import os

required_conan_version = ">=1.52.0"
required_conan_version = ">=2.0.9"


class EmSDKConan(ConanFile):
Expand All @@ -17,22 +17,13 @@ class EmSDKConan(ConanFile):
homepage = "https://github.com/kripken/emscripten"
topics = ("emsdk", "emscripten", "sdk")
license = "MIT"
package_type = "application"
settings = "os", "arch", "compiler", "build_type"

short_paths = True

@property
def _settings_build(self):
return getattr(self, "settings_build", self.settings)

def layout(self):
basic_layout(self, src_folder="src")

def requirements(self):
self.requires("nodejs/16.3.0")
# self.requires("python") # FIXME: Not available as Conan package
# self.requires("wasm") # FIXME: Not available as Conan package

def package_id(self):
del self.info.settings.compiler
del self.info.settings.build_type
Expand Down Expand Up @@ -65,6 +56,13 @@ def _em_config(self):
def _em_cache(self):
return os.path.join(self.package_folder, "bin", ".emscripten_cache")

@property
def _node_path(self):
subfolders = [path for path in (Path(self.package_folder) / "bin" / "node").iterdir() if path.is_dir()]
if len(subfolders) != 1:
return None
return os.path.join(self.package_folder, "bin", "node", subfolders[0].name, "bin")

def generate(self):
env = Environment()
env.prepend_path("PATH", self._paths)
Expand All @@ -74,10 +72,12 @@ def generate(self):
env.define_path("EM_CACHE", self._em_cache)
env.vars(self, scope="emsdk").save_script("emsdk_env_file")

@staticmethod
def _chmod_plus_x(filename):
if os.name == "posix":
os.chmod(filename, os.stat(filename).st_mode | 0o111)
if cross_building(self):
env = VirtualBuildEnv(self)
# If cross-compiling, we need to set EMSDK_ARCH
# This is important for the emsdk install command
env.environment().define("EMSDK_ARCH", str(self.settings.arch))
env.generate()

def _tools_for_version(self):
ret = {}
Expand All @@ -98,15 +98,12 @@ def _tools_for_version(self):

def build(self):
with chdir(self, self.source_folder):
emsdk = "emsdk.bat" if self._settings_build.os == "Windows" else "./emsdk"
self._chmod_plus_x("emsdk")

emsdk = "emsdk.bat" if self.settings_build.os == "Windows" else "./emsdk"
# Install required tools
required_tools = self._tools_for_version()
for key, value in required_tools.items():
if key != 'nodejs':
self.run(f"{emsdk} install {value}")
self.run(f"{emsdk} activate {value}")
for value in required_tools.values():
self.run(f"{emsdk} install {value}")
self.run(f"{emsdk} activate {value}")

def package(self):
copy(self, "LICENSE", src=self.source_folder, dst=os.path.join(self.package_folder, "licenses"))
Expand All @@ -133,11 +130,13 @@ def package(self):
def _define_tool_var(self, value):
suffix = ".bat" if self.settings.os == "Windows" else ""
path = os.path.join(self._emscripten, f"{value}{suffix}")
self._chmod_plus_x(path)
return path

def package_info(self):
self.cpp_info.bindirs = self._relative_paths
# Add node binaries into emsdk for convenience
if self._node_path:
self.cpp_info.bindirs.append(self._node_path)
self.cpp_info.includedirs = []
self.cpp_info.libdirs = []
self.cpp_info.resdirs = []
Expand Down Expand Up @@ -180,17 +179,3 @@ def package_info(self):
os.path.join("bin", "upstream", "emscripten", "tests", "cmake", "target_library"),
os.path.join("bin", "upstream", "lib", "cmake", "llvm"),
]

if Version(conan_version).major < 2:
self.env_info.PATH.extend(self._paths)
self.env_info.CONAN_CMAKE_TOOLCHAIN_FILE = toolchain
self.env_info.EMSDK = self._emsdk
self.env_info.EMSCRIPTEN = self._emscripten
self.env_info.EM_CONFIG = self._em_config
self.env_info.EM_CACHE = self._em_cache
self.env_info.CC = compiler_executables["c"]
self.env_info.CXX = compiler_executables["cpp"]
self.env_info.AR = self._define_tool_var("emar")
self.env_info.NM = self._define_tool_var("emnm")
self.env_info.RANLIB = self._define_tool_var("emranlib")
self.env_info.STRIP = self._define_tool_var("emstrip")
20 changes: 11 additions & 9 deletions recipes/emsdk/all/test_package/conanfile.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
from conan import ConanFile
from conan.tools.build import can_run
from conan.tools.env import Environment
from conan.tools.cmake import CMake, cmake_layout
import os
Expand All @@ -9,8 +10,8 @@ class TestPackageConan(ConanFile):
generators = "CMakeToolchain", "VirtualBuildEnv"
test_type = "explicit"

def build_requirements(self):
self.tool_requires(self.tested_reference_str)
def requirements(self):
self.requires(self.tested_reference_str)

def layout(self):
cmake_layout(self)
Expand All @@ -31,10 +32,11 @@ def build(self):

def test(self):
# Check the package provides working binaries
self.run("emcc -v")
self.run("em++ -v")

# Run the project that was built using emsdk
if self.settings.os == "Emscripten":
test_file = os.path.join(self.cpp.build.bindirs[0], "test_package.js")
self.run(f"node {test_file}")
if can_run(self):
self.run("emcc -v")
self.run("em++ -v")

# Run the project that was built using emsdk
if self.settings.os == "Emscripten":
test_file = os.path.join(self.cpp.build.bindirs[0], "test_package.js")
self.run(f"node {test_file}")
7 changes: 0 additions & 7 deletions recipes/emsdk/all/test_v1_package/CMakeLists.txt

This file was deleted.

30 changes: 0 additions & 30 deletions recipes/emsdk/all/test_v1_package/conanfile.py

This file was deleted.

60 changes: 4 additions & 56 deletions recipes/emsdk/config.yml
Original file line number Diff line number Diff line change
@@ -1,61 +1,9 @@
versions:
"3.1.73":
folder: all
"3.1.72":
folder: all
"3.1.50":
folder: all
"3.1.49":
folder: all
"3.1.48":
folder: all
"3.1.47":
folder: all
"3.1.46":
folder: all
"3.1.45":
folder: all
"3.1.44":
folder: all
"3.1.38":
folder: all
"3.1.31":
folder: all
"3.1.30":
folder: all
"3.1.29":
folder: all
"3.1.23":
"4.0.10":
folder: all
"3.1.20":
"4.0.6":
folder: all
"3.1.18":
folder: all
"3.1.17":
folder: all
"3.1.16":
folder: all
"3.1.15":
folder: all
"3.1.12":
folder: all
"3.1.7":
folder: all
"3.1.5":
folder: all
"3.1.4":
folder: all
"3.1.3":
folder: all
"3.1.0":
folder: all
"3.0.1":
folder: all
"3.0.0":
folder: all
"2.0.34":
"3.1.73":
folder: all
"2.0.31":
"3.1.50":
folder: all
"2.0.30":
folder: all