Update examples collection
This commit is contained in:
parent
8bc9f30d87
commit
87d3066428
130 changed files with 21502 additions and 0 deletions
354
emsdk-cache/emsdk-main/.circleci/config.yml
Normal file
354
emsdk-cache/emsdk-main/.circleci/config.yml
Normal file
|
|
@ -0,0 +1,354 @@
|
||||||
|
version: 2.1
|
||||||
|
|
||||||
|
orbs:
|
||||||
|
win: circleci/windows@5.0
|
||||||
|
|
||||||
|
executors:
|
||||||
|
ubuntu:
|
||||||
|
docker:
|
||||||
|
- image: buildpack-deps:focal
|
||||||
|
mac_arm64:
|
||||||
|
environment:
|
||||||
|
EMSDK_NOTTY: "1"
|
||||||
|
# Without this, any `brew install` command will result in self-update of
|
||||||
|
# brew itself which takes more than 4 minutes.
|
||||||
|
HOMEBREW_NO_AUTO_UPDATE: "1"
|
||||||
|
macos:
|
||||||
|
xcode: "13.4.1"
|
||||||
|
resource_class: macos.m1.medium.gen1
|
||||||
|
linux_arm64:
|
||||||
|
machine:
|
||||||
|
image: ubuntu-2004:2023.07.1
|
||||||
|
resource_class: arm.medium
|
||||||
|
|
||||||
|
commands:
|
||||||
|
setup-macos:
|
||||||
|
steps:
|
||||||
|
- checkout
|
||||||
|
- run:
|
||||||
|
name: Install CMake
|
||||||
|
command: brew install cmake
|
||||||
|
test-macos:
|
||||||
|
steps:
|
||||||
|
- run:
|
||||||
|
name: test.sh
|
||||||
|
command: test/test.sh
|
||||||
|
- run:
|
||||||
|
name: test.py
|
||||||
|
command: |
|
||||||
|
source emsdk_env.sh
|
||||||
|
test/test.py
|
||||||
|
test-bazel-linux:
|
||||||
|
steps:
|
||||||
|
- checkout
|
||||||
|
- run:
|
||||||
|
name: install bazelisk
|
||||||
|
command: |
|
||||||
|
wget https://github.com/bazelbuild/bazelisk/releases/download/v1.25.0/bazelisk-linux-amd64
|
||||||
|
chmod +x bazelisk-linux-amd64
|
||||||
|
mv bazelisk-linux-amd64 /usr/local/bin/bazel
|
||||||
|
- run: test/test_bazel.sh
|
||||||
|
test-bazel-mac:
|
||||||
|
steps:
|
||||||
|
- checkout
|
||||||
|
- run:
|
||||||
|
name: install bazelisk
|
||||||
|
command: |
|
||||||
|
brew install bazelisk
|
||||||
|
- run: test/test_bazel_mac.sh
|
||||||
|
test-bazel-windows:
|
||||||
|
steps:
|
||||||
|
- checkout
|
||||||
|
- run:
|
||||||
|
name: Download Bazelisk
|
||||||
|
shell: powershell.exe
|
||||||
|
command: |
|
||||||
|
$ProgressPreference = "SilentlyContinue"
|
||||||
|
Invoke-WebRequest -Uri https://github.com/bazelbuild/bazelisk/releases/download/v1.10.1/bazelisk-windows-amd64.exe -OutFile ( New-Item -Path "temp\bazel\bazel.exe" -Force )
|
||||||
|
- run:
|
||||||
|
name: Run Tests
|
||||||
|
shell: powershell.exe
|
||||||
|
command: |
|
||||||
|
$env:Path += ";C:\Python27amd64;$pwd\temp\bazel"
|
||||||
|
.\test\test_bazel.ps1
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
flake8:
|
||||||
|
executor: ubuntu
|
||||||
|
steps:
|
||||||
|
- checkout
|
||||||
|
- run:
|
||||||
|
name: install pip
|
||||||
|
command: |
|
||||||
|
apt-get update -q
|
||||||
|
apt-get install -q -y python3-pip
|
||||||
|
- run: python3 -m pip install --upgrade pip
|
||||||
|
- run: python3 -m pip install flake8==7.1.1
|
||||||
|
- run: python3 -m flake8 --show-source --statistics --extend-exclude=./scripts
|
||||||
|
|
||||||
|
test-linux:
|
||||||
|
executor: ubuntu
|
||||||
|
environment:
|
||||||
|
EMSDK_NOTTY: "1"
|
||||||
|
# This is needed because the old gcc-7 that is installed on debian/bionic
|
||||||
|
# generates warnings about unused variables when doing C++17
|
||||||
|
# destructuring:
|
||||||
|
# https://github.com/WebAssembly/binaryen/issues/4353
|
||||||
|
CXXFLAGS: "-Wno-unused-variable"
|
||||||
|
# I don't know why circleci VMs pretent to have 36 cores but its a lie.
|
||||||
|
EMSDK_NUM_CORES: "4"
|
||||||
|
steps:
|
||||||
|
- checkout
|
||||||
|
- run:
|
||||||
|
name: Install debian packages
|
||||||
|
command: apt-get update -q && apt-get install -q -y cmake build-essential openjdk-8-jre-headless ksh zsh
|
||||||
|
- run: test/test_node_path.sh
|
||||||
|
- run: test/test.sh
|
||||||
|
- run: test/test_source_env.sh
|
||||||
|
- run:
|
||||||
|
name: test.py
|
||||||
|
command: |
|
||||||
|
source emsdk_env.sh
|
||||||
|
test/test.py
|
||||||
|
test-linux-arm64:
|
||||||
|
executor: linux_arm64
|
||||||
|
steps:
|
||||||
|
- checkout
|
||||||
|
- run:
|
||||||
|
name: Install debian packages
|
||||||
|
command: sudo apt-get update -q && sudo apt-get install -q cmake build-essential openjdk-8-jre-headless
|
||||||
|
- run: test/test.sh
|
||||||
|
test-mac-arm64:
|
||||||
|
executor: mac_arm64
|
||||||
|
steps:
|
||||||
|
- setup-macos
|
||||||
|
- test-macos
|
||||||
|
test-windows:
|
||||||
|
executor:
|
||||||
|
name: win/server-2019
|
||||||
|
shell: bash.exe
|
||||||
|
environment:
|
||||||
|
# We need python installed before we can test anytyhing.
|
||||||
|
# There seems to be undocument copy of python installed here. Hopefully
|
||||||
|
# if this disappears there will be another way of getting a re-installed
|
||||||
|
# version.
|
||||||
|
PYTHON_BIN: "C:\\Python27amd64"
|
||||||
|
PYTHONUNBUFFERED: "1"
|
||||||
|
EMSDK_NOTTY: "1"
|
||||||
|
steps:
|
||||||
|
- checkout
|
||||||
|
- run:
|
||||||
|
name: Add python to bash path
|
||||||
|
command: echo "export PATH=\"$PATH:/c/python27amd64/\"" >> $BASH_ENV
|
||||||
|
- run:
|
||||||
|
name: Install latest
|
||||||
|
shell: cmd.exe
|
||||||
|
command: test\test.bat
|
||||||
|
- run:
|
||||||
|
name: test.py
|
||||||
|
command: |
|
||||||
|
source emsdk_env.sh
|
||||||
|
python test/test.py
|
||||||
|
|
||||||
|
- run:
|
||||||
|
name: flagless (process/shell) test
|
||||||
|
shell: powershell.exe
|
||||||
|
command: |
|
||||||
|
test/test_activation.ps1
|
||||||
|
|
||||||
|
- run:
|
||||||
|
name: --permanent test
|
||||||
|
shell: powershell.exe
|
||||||
|
command: |
|
||||||
|
$env:PERMANENT_FLAG="--permanent"
|
||||||
|
test/test_activation.ps1
|
||||||
|
|
||||||
|
- run:
|
||||||
|
name: --system test
|
||||||
|
shell: powershell.exe
|
||||||
|
command: |
|
||||||
|
$env:SYSTEM_FLAG="--system"
|
||||||
|
test/test_activation.ps1
|
||||||
|
|
||||||
|
- run:
|
||||||
|
name: Process/Shell PATH preservation test
|
||||||
|
shell: powershell.exe
|
||||||
|
command: |
|
||||||
|
test/test_path_preservation.ps1
|
||||||
|
|
||||||
|
- run:
|
||||||
|
name: User PATH preservation test
|
||||||
|
shell: powershell.exe
|
||||||
|
command: |
|
||||||
|
$env:PERMANENT_FLAG="--permanent"
|
||||||
|
test/test_path_preservation.ps1
|
||||||
|
|
||||||
|
- run:
|
||||||
|
name: System PATH preservation test
|
||||||
|
shell: powershell.exe
|
||||||
|
command: |
|
||||||
|
$env:SYSTEM_FLAG="--system"
|
||||||
|
test/test_path_preservation.ps1
|
||||||
|
|
||||||
|
build-docker-image-x64:
|
||||||
|
executor: ubuntu
|
||||||
|
steps:
|
||||||
|
- checkout
|
||||||
|
- run:
|
||||||
|
name: install docker
|
||||||
|
command: |
|
||||||
|
apt-get update -q
|
||||||
|
apt-get install -q -y ca-certificates curl gnupg lsb-release
|
||||||
|
mkdir -p /etc/apt/keyrings
|
||||||
|
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg
|
||||||
|
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null
|
||||||
|
apt-get update -q
|
||||||
|
apt-get install -q -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
|
||||||
|
- setup_remote_docker
|
||||||
|
# Build the `latest` version of EMSDK as docker image
|
||||||
|
- run:
|
||||||
|
name: build
|
||||||
|
command: make -C ./docker version=latest build
|
||||||
|
- run:
|
||||||
|
name: test
|
||||||
|
command: make -C ./docker version=latest test
|
||||||
|
|
||||||
|
publish-docker-image-x64:
|
||||||
|
executor: ubuntu
|
||||||
|
steps:
|
||||||
|
- checkout
|
||||||
|
- run:
|
||||||
|
name: install docker
|
||||||
|
command: |
|
||||||
|
apt-get update -q
|
||||||
|
apt-get install -q -y ca-certificates curl gnupg lsb-release
|
||||||
|
mkdir -p /etc/apt/keyrings
|
||||||
|
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg
|
||||||
|
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null
|
||||||
|
apt-get update -q
|
||||||
|
apt-get install -q -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
|
||||||
|
- setup_remote_docker
|
||||||
|
- run:
|
||||||
|
name: build
|
||||||
|
command: make -C ./docker version=${CIRCLE_TAG} build
|
||||||
|
- run:
|
||||||
|
name: test
|
||||||
|
command: make -C ./docker version=${CIRCLE_TAG} test
|
||||||
|
- run:
|
||||||
|
name: push image
|
||||||
|
command: |
|
||||||
|
docker login -u "$DOCKER_USER" -p "$DOCKER_PASS"
|
||||||
|
make -C ./docker version=${CIRCLE_TAG} alias=latest push
|
||||||
|
|
||||||
|
publish-docker-image-arm64:
|
||||||
|
executor: linux_arm64
|
||||||
|
steps:
|
||||||
|
- checkout
|
||||||
|
- run:
|
||||||
|
name: build
|
||||||
|
command: make -C ./docker version=${CIRCLE_TAG} build
|
||||||
|
- run:
|
||||||
|
name: test
|
||||||
|
command: make -C ./docker version=${CIRCLE_TAG} test
|
||||||
|
- run:
|
||||||
|
name: push image
|
||||||
|
command: |
|
||||||
|
docker login -u "$DOCKER_USER" -p "$DOCKER_PASS"
|
||||||
|
make -C ./docker version=${CIRCLE_TAG} alias=${CIRCLE_TAG}-arm64 only_alias=true push
|
||||||
|
|
||||||
|
test-bazel7-linux:
|
||||||
|
executor: ubuntu
|
||||||
|
environment:
|
||||||
|
USE_BAZEL_VERSION: "7.x"
|
||||||
|
steps:
|
||||||
|
- test-bazel-linux
|
||||||
|
|
||||||
|
test-bazel-latest-linux:
|
||||||
|
executor: ubuntu
|
||||||
|
steps:
|
||||||
|
- test-bazel-linux
|
||||||
|
|
||||||
|
test-bazel7-mac-arm64:
|
||||||
|
executor: mac_arm64
|
||||||
|
environment:
|
||||||
|
USE_BAZEL_VERSION: "7.x"
|
||||||
|
steps:
|
||||||
|
- test-bazel-mac
|
||||||
|
|
||||||
|
test-bazel-latest-mac-arm64:
|
||||||
|
executor: mac_arm64
|
||||||
|
steps:
|
||||||
|
- test-bazel-mac
|
||||||
|
|
||||||
|
test-bazel7-windows:
|
||||||
|
executor:
|
||||||
|
name: win/server-2019
|
||||||
|
shell: powershell.exe -ExecutionPolicy Bypass
|
||||||
|
environment:
|
||||||
|
PYTHONUNBUFFERED: "1"
|
||||||
|
EMSDK_NOTTY: "1"
|
||||||
|
# For some reason version resolution with "7.x" does not work on Windows,
|
||||||
|
# so we have to specify a full version.
|
||||||
|
USE_BAZEL_VERSION: "7.6.1"
|
||||||
|
steps:
|
||||||
|
- test-bazel-windows
|
||||||
|
|
||||||
|
test-bazel-latest-windows:
|
||||||
|
executor:
|
||||||
|
name: win/server-2019
|
||||||
|
shell: powershell.exe -ExecutionPolicy Bypass
|
||||||
|
environment:
|
||||||
|
PYTHONUNBUFFERED: "1"
|
||||||
|
EMSDK_NOTTY: "1"
|
||||||
|
steps:
|
||||||
|
- test-bazel-windows
|
||||||
|
|
||||||
|
workflows:
|
||||||
|
flake8:
|
||||||
|
jobs:
|
||||||
|
- flake8
|
||||||
|
test-linux:
|
||||||
|
jobs:
|
||||||
|
- test-linux
|
||||||
|
test-linux-arm64:
|
||||||
|
jobs:
|
||||||
|
- test-linux-arm64
|
||||||
|
test-mac-arm64:
|
||||||
|
jobs:
|
||||||
|
- test-mac-arm64
|
||||||
|
test-windows:
|
||||||
|
jobs:
|
||||||
|
- test-windows
|
||||||
|
build-docker-image:
|
||||||
|
jobs:
|
||||||
|
- build-docker-image-x64
|
||||||
|
- publish-docker-image-x64:
|
||||||
|
filters:
|
||||||
|
branches:
|
||||||
|
ignore: /.*/
|
||||||
|
tags:
|
||||||
|
only: /.*/
|
||||||
|
- publish-docker-image-arm64:
|
||||||
|
filters:
|
||||||
|
branches:
|
||||||
|
ignore: /.*/
|
||||||
|
tags:
|
||||||
|
only: /.*/
|
||||||
|
test-bazel7-linux:
|
||||||
|
jobs:
|
||||||
|
- test-bazel7-linux
|
||||||
|
test-bazel-latest-linux:
|
||||||
|
jobs:
|
||||||
|
- test-bazel-latest-linux
|
||||||
|
test-bazel7-mac-arm64:
|
||||||
|
jobs:
|
||||||
|
- test-bazel7-mac-arm64
|
||||||
|
test-bazel-latest-mac-arm64:
|
||||||
|
jobs:
|
||||||
|
- test-bazel-latest-mac-arm64
|
||||||
|
test-bazel7-windows:
|
||||||
|
jobs:
|
||||||
|
- test-bazel7-windows
|
||||||
|
test-bazel-latest-windows:
|
||||||
|
jobs:
|
||||||
|
- test-bazel-latest-windows
|
||||||
21
emsdk-cache/emsdk-main/.dockerignore
Normal file
21
emsdk-cache/emsdk-main/.dockerignore
Normal file
|
|
@ -0,0 +1,21 @@
|
||||||
|
# Ignore everything
|
||||||
|
*
|
||||||
|
|
||||||
|
# Allow the entrypoint/test script inside the Docker container
|
||||||
|
!/docker/entrypoint.sh
|
||||||
|
!/docker/test_dockerimage.sh
|
||||||
|
|
||||||
|
# Allow license file
|
||||||
|
!LICENSE
|
||||||
|
|
||||||
|
# Allow necessary build files in top-level directory
|
||||||
|
!emscripten-releases-tags.json
|
||||||
|
!emsdk
|
||||||
|
!emsdk.py
|
||||||
|
!emsdk_env.sh
|
||||||
|
!emsdk_manifest.json
|
||||||
|
|
||||||
|
# Allow files required to install legacy versions
|
||||||
|
!legacy-binaryen-tags.txt
|
||||||
|
!legacy-emscripten-tags.txt
|
||||||
|
!llvm-tags-64bit.txt
|
||||||
24
emsdk-cache/emsdk-main/.flake8
Normal file
24
emsdk-cache/emsdk-main/.flake8
Normal file
|
|
@ -0,0 +1,24 @@
|
||||||
|
[flake8]
|
||||||
|
extend-exclude =
|
||||||
|
./.*,
|
||||||
|
./binaryen,
|
||||||
|
./clang,
|
||||||
|
./crunch,
|
||||||
|
./downloads,
|
||||||
|
./emscripten,
|
||||||
|
./fastcomp-clang,
|
||||||
|
./fastcomp,
|
||||||
|
./git,
|
||||||
|
./gnu,
|
||||||
|
./llvm,
|
||||||
|
./node,
|
||||||
|
./python,
|
||||||
|
./releases,
|
||||||
|
./temp,
|
||||||
|
./upstream,
|
||||||
|
|
||||||
|
# E111: Indentation is not a multiple of four
|
||||||
|
# E114: Indentation is not a multiple of four (comment)
|
||||||
|
extend-ignore = E111, E114
|
||||||
|
|
||||||
|
max-line-length = 326
|
||||||
18
emsdk-cache/emsdk-main/.github/stale.yml
vendored
Normal file
18
emsdk-cache/emsdk-main/.github/stale.yml
vendored
Normal file
|
|
@ -0,0 +1,18 @@
|
||||||
|
# Number of days of inactivity before an issue becomes stale
|
||||||
|
daysUntilStale: 365
|
||||||
|
# Number of days of inactivity before a stale issue is closed
|
||||||
|
daysUntilClose: 30
|
||||||
|
# Issues with these labels will never be considered stale
|
||||||
|
exemptLabels:
|
||||||
|
- pinned
|
||||||
|
- security
|
||||||
|
# Label to use when marking an issue as stale
|
||||||
|
staleLabel: wontfix
|
||||||
|
# Comment to post when marking an issue as stale. Set to `false` to disable
|
||||||
|
markComment: >
|
||||||
|
This issue has been automatically marked as stale because there has been no
|
||||||
|
activity in the past year. It will be closed automatically if no further
|
||||||
|
activity occurs in the next 30 days. Feel free to re-open at any time if this
|
||||||
|
issue is still relevant.
|
||||||
|
# Comment to post when closing a stale issue. Set to `false` to disable
|
||||||
|
closeComment: false
|
||||||
40
emsdk-cache/emsdk-main/.github/workflows/create-release.yml
vendored
Normal file
40
emsdk-cache/emsdk-main/.github/workflows/create-release.yml
vendored
Normal file
|
|
@ -0,0 +1,40 @@
|
||||||
|
name: Create Release PR
|
||||||
|
|
||||||
|
on:
|
||||||
|
workflow_dispatch:
|
||||||
|
inputs:
|
||||||
|
lto-sha:
|
||||||
|
required: true
|
||||||
|
type: string
|
||||||
|
nonlto-sha:
|
||||||
|
required: true
|
||||||
|
type: string
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
create-release-pr:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Checkout repo
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
- name: Run create_release.py
|
||||||
|
run: python3 scripts/create_release.py -r ${{ inputs.lto-sha }} -a ${{ inputs.nonlto-sha }} --gh-action
|
||||||
|
- name: Create PR
|
||||||
|
id: cpr
|
||||||
|
uses: peter-evans/create-pull-request@v6
|
||||||
|
with:
|
||||||
|
token: ${{ secrets.EMSCRIPTEN_BOT_TOKEN }}
|
||||||
|
title: Release ${{ env.RELEASE_VERSION }}
|
||||||
|
commit-message: |
|
||||||
|
Release ${{ env.RELEASE_VERSION }}
|
||||||
|
team-reviewers: release-reviewers
|
||||||
|
labels: release
|
||||||
|
body: |
|
||||||
|
With emscripten-releases revisions:
|
||||||
|
https://chromium.googlesource.com/emscripten-releases/+/${{ inputs.lto-sha }} (LTO)
|
||||||
|
https://chromium.googlesource.com/emscripten-releases/+/${{ inputs.nonlto-sha }} (asserts)
|
||||||
|
branch: release_${{ env.RELEASE_VERSION }}
|
||||||
|
delete-branch: true
|
||||||
|
- name: Enable auto-merge
|
||||||
|
run: gh pr merge --squash --auto "${{ steps.cpr.outputs.pull-request-number }}"
|
||||||
|
env:
|
||||||
|
GH_TOKEN: ${{ secrets.EMSCRIPTEN_BOT_TOKEN }}
|
||||||
78
emsdk-cache/emsdk-main/.github/workflows/tag-release.yml
vendored
Normal file
78
emsdk-cache/emsdk-main/.github/workflows/tag-release.yml
vendored
Normal file
|
|
@ -0,0 +1,78 @@
|
||||||
|
# When a release commit created by create-release.yml is landed, create the
|
||||||
|
# corresponding tag.
|
||||||
|
name: Create release tag
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
paths:
|
||||||
|
- emscripten-releases-tags.json
|
||||||
|
- .github/workflows/tag-release.yml
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
tag-release:
|
||||||
|
# Only activate for commits created by the create-release.yml workflow.
|
||||||
|
# The assumption is that when manual changes happen, we want to handle
|
||||||
|
# tagging manually too.
|
||||||
|
name: Check for release commit and create tag
|
||||||
|
# The author is emscripten-bot when triggered from Chromium CI, and github-actions when manually triggered.
|
||||||
|
if: ${{ github.event.head_commit.author.username == 'github-actions[bot]' || github.event.head_commit.author.username == 'emscripten-bot' }}
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
outputs:
|
||||||
|
is_release: ${{ steps.create-tag.outputs.result }}
|
||||||
|
steps:
|
||||||
|
- name: Match message and create tag
|
||||||
|
id: create-tag
|
||||||
|
uses: actions/github-script@v7
|
||||||
|
with:
|
||||||
|
github-token: ${{ secrets.EMSCRIPTEN_BOT_TOKEN }}
|
||||||
|
# A commit with the message of the form 'Release X.Y.Z' is expected
|
||||||
|
# to have been created by create_release.py and update the latest
|
||||||
|
# release in emscripten-releases-tags.json
|
||||||
|
script: |
|
||||||
|
const message = `${{ github.event.head_commit.message }}`
|
||||||
|
const regex = /Release ([0-9]+.[0-9]+.[0-9]+)/;
|
||||||
|
const match = message.match(regex);
|
||||||
|
let is_release = false;
|
||||||
|
if (match) {
|
||||||
|
const release = match[1];
|
||||||
|
console.log(`Matched release ${release}`);
|
||||||
|
await github.rest.git.createRef({
|
||||||
|
owner: context.repo.owner,
|
||||||
|
repo: context.repo.repo,
|
||||||
|
ref: `refs/tags/${release}`,
|
||||||
|
sha: context.sha
|
||||||
|
});
|
||||||
|
is_release = true;
|
||||||
|
} else {
|
||||||
|
console.log(`Commit message: '${message}' did not match pattern`);
|
||||||
|
}
|
||||||
|
return is_release;
|
||||||
|
|
||||||
|
dispatch-emscripten-tag:
|
||||||
|
name: Dispatch workflow to tag emscripten repo
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
needs: tag-release
|
||||||
|
if: ${{ needs.tag-release.outputs.is_release == 'true' }}
|
||||||
|
steps:
|
||||||
|
- name: Checkout repo
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
- name: Find emscripten revision
|
||||||
|
# get_emscripten_revision_info.py sets env.EMSCRIPTEN_HASH to the
|
||||||
|
# emscripten hash associated with the latest release in
|
||||||
|
# emscripten-releases-tags.json
|
||||||
|
run: python3 scripts/get_emscripten_revision_info.py
|
||||||
|
- name: Dispatch emscripten workflow
|
||||||
|
uses: actions/github-script@v7
|
||||||
|
with:
|
||||||
|
github-token: ${{ secrets.EMSCRIPTEN_BOT_TOKEN }}
|
||||||
|
script: |
|
||||||
|
await github.rest.actions.createWorkflowDispatch({
|
||||||
|
owner: context.repo.owner,
|
||||||
|
repo: 'emscripten',
|
||||||
|
workflow_id: 'tag-release.yml',
|
||||||
|
ref: 'main',
|
||||||
|
inputs: { 'release-sha': '${{ env.EMSCRIPTEN_HASH }}' }
|
||||||
|
});
|
||||||
35
emsdk-cache/emsdk-main/.gitignore
vendored
Normal file
35
emsdk-cache/emsdk-main/.gitignore
vendored
Normal file
|
|
@ -0,0 +1,35 @@
|
||||||
|
*.pyc
|
||||||
|
__pycache__
|
||||||
|
|
||||||
|
# Support for --embedded configs
|
||||||
|
/.emscripten
|
||||||
|
/.emscripten.old
|
||||||
|
/.emscripten_cache
|
||||||
|
/.emscripten_cache__last_clear
|
||||||
|
/.emscripten_sanity
|
||||||
|
/.emscripten_sanity_wasm
|
||||||
|
|
||||||
|
# Tags files that get generated at runtime
|
||||||
|
/emscripten-releases-tot.txt
|
||||||
|
|
||||||
|
# File that get download/extracted by emsdk itself
|
||||||
|
/ccache
|
||||||
|
/gnu
|
||||||
|
/upstream
|
||||||
|
/fastcomp
|
||||||
|
/fastcomp-clang/
|
||||||
|
/llvm
|
||||||
|
/ninja
|
||||||
|
/releases
|
||||||
|
/clang
|
||||||
|
/emscripten
|
||||||
|
/git
|
||||||
|
/node
|
||||||
|
/python
|
||||||
|
/temp
|
||||||
|
/downloads
|
||||||
|
/crunch
|
||||||
|
/java
|
||||||
|
/mingw
|
||||||
|
/spidermonkey
|
||||||
|
/binaryen
|
||||||
27
emsdk-cache/emsdk-main/LICENSE
Normal file
27
emsdk-cache/emsdk-main/LICENSE
Normal file
|
|
@ -0,0 +1,27 @@
|
||||||
|
Copyright (c) 2018 Emscripten authors (see AUTHORS in Emscripten)
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.
|
||||||
|
|
||||||
|
----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
This is the MIT/Expat Licence. For more information see:
|
||||||
|
|
||||||
|
1. http://www.opensource.org/licenses/mit-license.php
|
||||||
|
|
||||||
|
2. http://en.wikipedia.org/wiki/MIT_License
|
||||||
245
emsdk-cache/emsdk-main/README.md
Normal file
245
emsdk-cache/emsdk-main/README.md
Normal file
|
|
@ -0,0 +1,245 @@
|
||||||
|
Emscripten SDK
|
||||||
|
==============
|
||||||
|
|
||||||
|
[](https://circleci.com/gh/emscripten-core/emsdk/tree/main)
|
||||||
|
|
||||||
|
The Emscripten toolchain is distributed as a standalone Emscripten SDK. The SDK
|
||||||
|
provides all the required tools, such as Clang, Python and Node.js along with an
|
||||||
|
update mechanism that enables migrating to newer Emscripten versions as they are
|
||||||
|
released.
|
||||||
|
|
||||||
|
You can also set up Emscripten from source, without the pre-built SDK, see
|
||||||
|
"Installing from Source" below.
|
||||||
|
|
||||||
|
## Downloads / How do I get the latest Emscripten build?
|
||||||
|
|
||||||
|
To get started with Emscripten development, see the [Emscripten website
|
||||||
|
documentation](https://emscripten.org/docs/getting_started/downloads.html).
|
||||||
|
|
||||||
|
That explains how to use the emsdk to get the latest binary builds (without
|
||||||
|
compiling from source). Basically, that amounts to
|
||||||
|
|
||||||
|
```
|
||||||
|
git pull
|
||||||
|
./emsdk install latest
|
||||||
|
./emsdk activate latest
|
||||||
|
```
|
||||||
|
|
||||||
|
## SDK Concepts
|
||||||
|
|
||||||
|
The Emscripten SDK is effectively a small package manager for tools that are
|
||||||
|
used in conjunction with Emscripten. The following glossary highlights the
|
||||||
|
important concepts to help understanding the internals of the SDK:
|
||||||
|
|
||||||
|
* **Tool**: The basic unit of software bundled in the SDK. A Tool has a name and
|
||||||
|
a version. For example, 'clang-3.2-32bit' is a Tool that contains the 32-bit
|
||||||
|
version of the Clang v3.2 compiler.
|
||||||
|
* **SDK**: A set of tools. For example, 'sdk-1.5.6-32bit' is an SDK consisting
|
||||||
|
of the tools `clang-3.2-32bit`, `node-0.10.17-32bit`, `python-2.7.5.1-32bit`
|
||||||
|
and `emscripten-1.5.6`.
|
||||||
|
* **Active Tool/SDK**: Emscripten SDK stores compiler configuration in a file
|
||||||
|
called `.emscripten` within the emsdk directory. This file points to paths
|
||||||
|
for Emscripten, Python, Clang and so on. If the configuration file points to a
|
||||||
|
Tool in a specific directory, then that tool is denoted as being
|
||||||
|
**active**. This mechanism allows switching between different installed
|
||||||
|
tools and SDKs.
|
||||||
|
* **emsdk**: This is the name of the manager script that Emscripten SDK is
|
||||||
|
accessed through. Most operations are of the form `emsdk <command>`.
|
||||||
|
|
||||||
|
## System Requirements
|
||||||
|
|
||||||
|
Using the emsdk pre-compiled packages requires only the minimal set of
|
||||||
|
dependencies lists below. When building from source a wider set of tools
|
||||||
|
include git, cmake, and a host compiler are required. See:
|
||||||
|
https://emscripten.org/docs/building_from_source/toolchain_what_is_needed.html.
|
||||||
|
|
||||||
|
### Mac OS X
|
||||||
|
|
||||||
|
- For Intel-based Macs, macOS 10.13 or newer. For ARM64 M1 based Macs, macOS
|
||||||
|
11.0 or newer.
|
||||||
|
- `java`: For running closure compiler (optional). After installing emscripten
|
||||||
|
via emsdk, typing 'emcc --help' should pop up a OS X dialog "Java is not
|
||||||
|
installed. To open java, you need a Java SE 6 runtime. Would you like to
|
||||||
|
install one now?" that will automatically download a Java runtime to the
|
||||||
|
system.
|
||||||
|
|
||||||
|
### Linux
|
||||||
|
|
||||||
|
- `python`: Version 3.8 or above.
|
||||||
|
- `java`: For running closure compiler (optional)
|
||||||
|
|
||||||
|
The emsdk pre-compiled binaries are built against Ubuntu/Focal 20.04 LTS and
|
||||||
|
therefore depend on system libraries compatible with versions of `glibc` and
|
||||||
|
`libstdc++` present in that release. If your linux distribution is very old
|
||||||
|
you may not be able to use the pre-compiled binaries packages.
|
||||||
|
|
||||||
|
### Windows
|
||||||
|
|
||||||
|
- `java`: For running closure compiler (optional)
|
||||||
|
|
||||||
|
## Uninstalling the Emscripten SDK
|
||||||
|
|
||||||
|
To remove the Emscripten SDK, simply delete the emsdk directory.
|
||||||
|
|
||||||
|
## SDK Maintenance
|
||||||
|
|
||||||
|
The following tasks are common with the Emscripten SDK:
|
||||||
|
|
||||||
|
### How do I work the emsdk utility?
|
||||||
|
|
||||||
|
Run `emsdk help` or just `emsdk` to get information about all available commands.
|
||||||
|
|
||||||
|
### How do I check the installation status and version of the SDK and tools?
|
||||||
|
|
||||||
|
To get a list of all currently installed tools and SDK versions, and all
|
||||||
|
available tools, run `emsdk list`.
|
||||||
|
* A line will be printed for each tool/SDK that is available for installation.
|
||||||
|
* The text `INSTALLED` will be shown for each tool that has already been
|
||||||
|
installed.
|
||||||
|
* If a tool/SDK is currently active, a star * will be shown next to it.
|
||||||
|
* If a tool/SDK is currently active, but the terminal your are calling emsdk
|
||||||
|
from does not have `PATH` and environment set up to utilize that tool, a star
|
||||||
|
in parentheses (\*) will be shown next to it. Run `emsdk_env.bat` (Windows) or
|
||||||
|
`source ./emsdk_env.sh` (Linux and OS X) to set up the environment for the
|
||||||
|
calling terminal.
|
||||||
|
|
||||||
|
### How do I install a tool/SDK version?
|
||||||
|
|
||||||
|
Run the command `emsdk install <tool/sdk name>` to download and install a new
|
||||||
|
tool or an SDK version.
|
||||||
|
|
||||||
|
### How do I remove a tool or an SDK?
|
||||||
|
|
||||||
|
Run the command `emsdk uninstall <tool/sdk name>` to delete the given tool or
|
||||||
|
SDK from the local hard drive completely.
|
||||||
|
|
||||||
|
### How do I check for updates to the Emscripten SDK?
|
||||||
|
|
||||||
|
`emsdk update` will fetch package information for all the new tools and
|
||||||
|
SDK versions. After that, run `emsdk install <tool/sdk name>` to install a new
|
||||||
|
version.
|
||||||
|
|
||||||
|
### How do I install an old Emscripten compiler version?
|
||||||
|
|
||||||
|
Emsdk contains a history of old compiler versions that you can use to maintain
|
||||||
|
your migration path. Type `emsdk list --old` to get a list of archived tool and
|
||||||
|
SDK versions, and `emsdk install <name_of_tool>` to install it.
|
||||||
|
|
||||||
|
### I want to build from source!
|
||||||
|
|
||||||
|
Some Emsdk Tool and SDK targets refer to packages that are precompiled, and
|
||||||
|
no compilation is needed when installing them. Other Emsdk Tools and SDK
|
||||||
|
targets come "from source", meaning that they will fetch the source repositories
|
||||||
|
using git, and compile the package on demand.
|
||||||
|
|
||||||
|
When you run `emsdk list`, it will group the Tools and SDKs under these two
|
||||||
|
categories.
|
||||||
|
|
||||||
|
To obtain and build latest wasm SDK from source, run
|
||||||
|
|
||||||
|
```
|
||||||
|
emsdk install sdk-main-64bit
|
||||||
|
emsdk activate sdk-main-64bit
|
||||||
|
```
|
||||||
|
|
||||||
|
You can use this target for example to bootstrap developing patches to LLVM,
|
||||||
|
Binaryen or Emscripten. (After initial installation, use `git remote add`
|
||||||
|
in the cloned tree to add your own fork to push changes as patches)
|
||||||
|
|
||||||
|
If you only intend to contribute to Emscripten repository, and not to LLVM
|
||||||
|
or Binaryen, you can also use precompiled versions of them, and only git
|
||||||
|
clone the Emscripten repository. For more details, see
|
||||||
|
|
||||||
|
https://emscripten.org/docs/contributing/developers_guide.html?highlight=developer#setting-up
|
||||||
|
|
||||||
|
### When working on git branches compiled from source, how do I update to a newer compiler version?
|
||||||
|
|
||||||
|
Unlike tags and precompiled versions, a few of the SDK packages are based on
|
||||||
|
"moving" git branches and compiled from source (e.g. sdk-main,
|
||||||
|
sdk-main, emscripten-main, binaryen-main). Because of that, the
|
||||||
|
compiled versions will eventually go out of date as new commits are introduced
|
||||||
|
to the development branches. To update an old compiled installation of one of
|
||||||
|
this branches, simply reissue the "emsdk install" command on that tool/SDK. This
|
||||||
|
will `git pull` the latest changes to the branch and issue an incremental
|
||||||
|
recompilation of the target in question. This way you can keep calling `emsdk
|
||||||
|
install` to keep an Emscripten installation up to date with a given git branch.
|
||||||
|
|
||||||
|
Note though that if the previously compiled branch is very old, sometimes CMake
|
||||||
|
gets confused and is unable to properly rebuild a project. This has happened in
|
||||||
|
the past e.g. when LLVM migrated to requiring a newer CMake version. In cases of
|
||||||
|
any odd compilation errors, it is advised to try deleting the intermediate build
|
||||||
|
directory to clear the build (e.g. "emsdk/clang/fastcomp/build_xxx/") before
|
||||||
|
reissuing `emsdk install`.
|
||||||
|
|
||||||
|
### How do I change the currently active SDK version?
|
||||||
|
|
||||||
|
You can toggle between different tools and SDK versions by running `emsdk
|
||||||
|
activate <tool/sdk name>`. Activating a tool will set up `~/.emscripten` to
|
||||||
|
point to that particular tool. On Windows, you can pass the option `--permanent` to
|
||||||
|
the `activate` command to register the environment permanently for the current user. Use `--system` to do this for all users.
|
||||||
|
|
||||||
|
### How do I track the latest Emscripten development with the SDK?
|
||||||
|
|
||||||
|
A common and supported use case of the Emscripten SDK is to enable the workflow
|
||||||
|
where you directly interact with the github repositories. This allows you to
|
||||||
|
obtain new features and latest fixes immediately as they are pushed to the
|
||||||
|
github repository, without having to wait for release to be tagged. You do not
|
||||||
|
need a github account or a fork of Emscripten to do this. To switch to using the
|
||||||
|
latest git development branch `main`, run the following:
|
||||||
|
|
||||||
|
emsdk install git-1.9.4 # Install git. Skip if the system already has it.
|
||||||
|
emsdk install sdk-main-64bit # Clone+pull the latest emscripten-core/emscripten/main.
|
||||||
|
emsdk activate sdk-main-64bit # Set the main SDK as the currently active one.
|
||||||
|
|
||||||
|
### How do I use my own Emscripten github fork with the SDK?
|
||||||
|
|
||||||
|
It is also possible to use your own fork of the Emscripten repository via the
|
||||||
|
SDK. This is achieved with standard git machinery, so if you are already
|
||||||
|
acquainted with working on multiple remotes in a git clone, these steps should
|
||||||
|
be familiar to you. This is useful in the case when you want to make your own
|
||||||
|
modifications to the Emscripten toolchain, but still keep using the SDK
|
||||||
|
environment and tools. To set up your own fork as the currently active
|
||||||
|
Emscripten toolchain, first install the `sdk-main` SDK like shown in the
|
||||||
|
previous section, and then run the following commands in the emsdk directory:
|
||||||
|
|
||||||
|
cd emscripten/main
|
||||||
|
# Add a git remote link to your own repository.
|
||||||
|
git remote add myremote https://github.com/mygituseraccount/emscripten.git
|
||||||
|
# Obtain the changes in your link.
|
||||||
|
git fetch myremote
|
||||||
|
# Switch the emscripten-main tool to use your fork.
|
||||||
|
git checkout -b mymain --track myremote/main
|
||||||
|
|
||||||
|
In this way you can utilize the Emscripten SDK tools while using your own git
|
||||||
|
fork. You can switch back and forth between remotes via the `git checkout`
|
||||||
|
command as usual.
|
||||||
|
|
||||||
|
### How do I use Emscripten SDK with a custom version of python, java, node.js or some other tool?
|
||||||
|
|
||||||
|
The provided Emscripten SDK targets are metapackages that refer to a specific
|
||||||
|
set of tools that have been tested to work together. For example,
|
||||||
|
`sdk-1.35.0-64bit` is an alias to the individual packages `clang-e1.35.0-64bit`,
|
||||||
|
`node-4.1.1-64bit`, `python-2.7.5.3-64bit` and `emscripten-1.35.0`. This means
|
||||||
|
that if you install this version of the SDK, both python and node.js will be
|
||||||
|
installed inside emsdk as well. If you want to use your own/system python or
|
||||||
|
node.js instead, you can opt to install emsdk by specifying the individual set
|
||||||
|
of packages that you want to use. For example, `emsdk install
|
||||||
|
clang-e1.35.0-64bit emscripten-1.35.0` will only install the Emscripten
|
||||||
|
LLVM/Clang compiler and the Emscripten frontend without supplying python and
|
||||||
|
node.js.
|
||||||
|
|
||||||
|
### My installation fails with "fatal error: ld terminated with signal 9 [Killed]"?
|
||||||
|
|
||||||
|
This may happen if the system runs out of memory. If you are attempting to build
|
||||||
|
one of the packages from source and are running in a virtual OS or may have
|
||||||
|
relatively little RAM and disk space available, then the build might fail. Try
|
||||||
|
feeding your computer more memory. Another thing to try is to force emsdk
|
||||||
|
install to build in a singlethreaded mode, which will require less RAM
|
||||||
|
simultaneously. To do this, pass the `-j1` flag to the `emsdk install` command.
|
||||||
|
|
||||||
|
### How do I run Emscripten on 32-bit systems or non-x86-64 systems?
|
||||||
|
|
||||||
|
Emscripten SDK releases are no longer packaged or maintained for 32-bit systems.
|
||||||
|
If you want to run Emscripten on a 32-bit system, you can try manually building
|
||||||
|
the compiler. Follow the steps in the above section "Building an Emscripten tag
|
||||||
|
or branch from source" to get started.
|
||||||
16
emsdk-cache/emsdk-main/SECURITY.md
Normal file
16
emsdk-cache/emsdk-main/SECURITY.md
Normal file
|
|
@ -0,0 +1,16 @@
|
||||||
|
# Security Policy
|
||||||
|
|
||||||
|
If you have discovered a security vulnerability in this project, please report it
|
||||||
|
privately. **Do not disclose it as a public issue.** This gives us time to work with you
|
||||||
|
to fix the issue before public exposure, reducing the chance that the exploit will be
|
||||||
|
used before a patch is released.
|
||||||
|
|
||||||
|
Please submit the report as a [security bug on the Chromium tracker](https://bugs.chromium.org/p/chromium/issues/entry?template=Security%20Bug).
|
||||||
|
|
||||||
|
Please provide the following information in your report:
|
||||||
|
|
||||||
|
- A description of the vulnerability and its impact
|
||||||
|
- How to reproduce the issue
|
||||||
|
- Make it clear that it's an Emscripten SDK bug.
|
||||||
|
|
||||||
|
We ask that you give us 90 days to work on a fix before public exposure.
|
||||||
1
emsdk-cache/emsdk-main/bazel/.bazelrc
Normal file
1
emsdk-cache/emsdk-main/bazel/.bazelrc
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
build --incompatible_enable_cc_toolchain_resolution
|
||||||
1
emsdk-cache/emsdk-main/bazel/.gitignore
vendored
Normal file
1
emsdk-cache/emsdk-main/bazel/.gitignore
vendored
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
/bazel-*
|
||||||
79
emsdk-cache/emsdk-main/bazel/MODULE.bazel
Normal file
79
emsdk-cache/emsdk-main/bazel/MODULE.bazel
Normal file
|
|
@ -0,0 +1,79 @@
|
||||||
|
module(
|
||||||
|
name = "emsdk",
|
||||||
|
version = "4.0.13",
|
||||||
|
)
|
||||||
|
|
||||||
|
bazel_dep(name = "platforms", version = "0.0.11")
|
||||||
|
bazel_dep(name = "bazel_skylib", version = "1.7.1")
|
||||||
|
bazel_dep(name = "aspect_rules_js", version = "1.42.0")
|
||||||
|
bazel_dep(name = "rules_nodejs", version = "6.3.2")
|
||||||
|
bazel_dep(name = "rules_cc", version = "0.1.1")
|
||||||
|
bazel_dep(name = "rules_python", version = "1.3.0")
|
||||||
|
|
||||||
|
python = use_extension("@rules_python//python/extensions:python.bzl", "python")
|
||||||
|
python.toolchain(
|
||||||
|
python_version = "3.13",
|
||||||
|
)
|
||||||
|
|
||||||
|
node = use_extension("@rules_nodejs//nodejs:extensions.bzl", "node")
|
||||||
|
node.toolchain(node_version = "20.18.0")
|
||||||
|
use_repo(node, "nodejs")
|
||||||
|
|
||||||
|
emscripten_deps = use_extension(
|
||||||
|
"//:emscripten_deps.bzl",
|
||||||
|
"emscripten_deps",
|
||||||
|
)
|
||||||
|
use_repo(emscripten_deps, "emscripten_bin_linux")
|
||||||
|
use_repo(emscripten_deps, "emscripten_bin_linux_arm64")
|
||||||
|
use_repo(emscripten_deps, "emscripten_bin_mac")
|
||||||
|
use_repo(emscripten_deps, "emscripten_bin_mac_arm64")
|
||||||
|
use_repo(emscripten_deps, "emscripten_bin_win")
|
||||||
|
|
||||||
|
npm = use_extension(
|
||||||
|
"@aspect_rules_js//npm:extensions.bzl",
|
||||||
|
"npm",
|
||||||
|
)
|
||||||
|
npm.npm_translate_lock(
|
||||||
|
name = "emscripten_npm_linux",
|
||||||
|
data = ["@emscripten_bin_linux//:emscripten/package.json"],
|
||||||
|
npm_package_lock = "@emscripten_bin_linux//:emscripten/package-lock.json",
|
||||||
|
)
|
||||||
|
npm.npm_translate_lock(
|
||||||
|
name = "emscripten_npm_linux_arm64",
|
||||||
|
data = ["@emscripten_bin_linux_arm64//:emscripten/package.json"],
|
||||||
|
npm_package_lock = "@emscripten_bin_linux_arm64//:emscripten/package-lock.json",
|
||||||
|
)
|
||||||
|
npm.npm_translate_lock(
|
||||||
|
name = "emscripten_npm_mac",
|
||||||
|
data = ["@emscripten_bin_mac//:emscripten/package.json"],
|
||||||
|
npm_package_lock = "@emscripten_bin_mac//:emscripten/package-lock.json",
|
||||||
|
)
|
||||||
|
npm.npm_translate_lock(
|
||||||
|
name = "emscripten_npm_mac_arm64",
|
||||||
|
data = ["@emscripten_bin_mac_arm64//:emscripten/package.json"],
|
||||||
|
npm_package_lock = "@emscripten_bin_mac_arm64//:emscripten/package-lock.json",
|
||||||
|
)
|
||||||
|
npm.npm_translate_lock(
|
||||||
|
name = "emscripten_npm_win",
|
||||||
|
data = ["@emscripten_bin_win//:emscripten/package.json"],
|
||||||
|
npm_package_lock = "@emscripten_bin_win//:emscripten/package-lock.json",
|
||||||
|
)
|
||||||
|
use_repo(
|
||||||
|
npm,
|
||||||
|
"emscripten_npm_linux",
|
||||||
|
"emscripten_npm_linux_arm64",
|
||||||
|
"emscripten_npm_mac",
|
||||||
|
"emscripten_npm_mac_arm64",
|
||||||
|
"emscripten_npm_win",
|
||||||
|
)
|
||||||
|
|
||||||
|
emscripten_cache = use_extension("//:emscripten_cache.bzl", "emscripten_cache")
|
||||||
|
use_repo(emscripten_cache, "emscripten_cache")
|
||||||
|
|
||||||
|
register_toolchains(
|
||||||
|
"//emscripten_toolchain:cc-toolchain-wasm-emscripten_linux",
|
||||||
|
"//emscripten_toolchain:cc-toolchain-wasm-emscripten_linux_arm64",
|
||||||
|
"//emscripten_toolchain:cc-toolchain-wasm-emscripten_mac",
|
||||||
|
"//emscripten_toolchain:cc-toolchain-wasm-emscripten_mac_arm64",
|
||||||
|
"//emscripten_toolchain:cc-toolchain-wasm-emscripten_win",
|
||||||
|
)
|
||||||
3696
emsdk-cache/emsdk-main/bazel/MODULE.bazel.lock
generated
Normal file
3696
emsdk-cache/emsdk-main/bazel/MODULE.bazel.lock
generated
Normal file
File diff suppressed because it is too large
Load diff
90
emsdk-cache/emsdk-main/bazel/README.md
Normal file
90
emsdk-cache/emsdk-main/bazel/README.md
Normal file
|
|
@ -0,0 +1,90 @@
|
||||||
|
# Bazel Emscripten toolchain
|
||||||
|
|
||||||
|
## Setup Instructions
|
||||||
|
|
||||||
|
Support for depending on emsdk with a WORKSPACE file was removed and last available in [emsdk version 4.0.6](https://github.com/emscripten-core/emsdk/tree/24fc909c0da13ef641d5ae75e89b5a97f25e37aa). Now we only support inclusion as a bzlmod module.
|
||||||
|
|
||||||
|
In your `MODULE.bazel` file, put:
|
||||||
|
```starlark
|
||||||
|
emsdk_version = "4.0.6"
|
||||||
|
bazel_dep(name = "emsdk", version = emsdk_version)
|
||||||
|
git_override(
|
||||||
|
module_name = "emsdk",
|
||||||
|
remote = "https://github.com/emscripten-core/emsdk.git",
|
||||||
|
strip_prefix = "bazel",
|
||||||
|
tag = emsdk_version,
|
||||||
|
)
|
||||||
|
```
|
||||||
|
|
||||||
|
You can use a different version of this SDK by changing it in your `MODULE.bazel` file. The Emscripten version is by default the same as the SDK version, but you can use a different one as well by adding to your `MODULE.bazel`:
|
||||||
|
|
||||||
|
```
|
||||||
|
emscripten_deps = use_extension(
|
||||||
|
"@emsdk//:emscripten_deps.bzl",
|
||||||
|
"emscripten_deps",
|
||||||
|
)
|
||||||
|
emscripten_deps.config(version = "4.0.1")
|
||||||
|
```
|
||||||
|
|
||||||
|
## Building
|
||||||
|
|
||||||
|
Put the following line into your `.bazelrc`:
|
||||||
|
|
||||||
|
```
|
||||||
|
build --incompatible_enable_cc_toolchain_resolution
|
||||||
|
```
|
||||||
|
|
||||||
|
Then write a new rule wrapping your `cc_binary`.
|
||||||
|
|
||||||
|
```starlark
|
||||||
|
load("@rules_cc//cc:defs.bzl", "cc_binary")
|
||||||
|
load("@emsdk//emscripten_toolchain:wasm_rules.bzl", "wasm_cc_binary")
|
||||||
|
|
||||||
|
cc_binary(
|
||||||
|
name = "hello-world",
|
||||||
|
srcs = ["hello-world.cc"],
|
||||||
|
)
|
||||||
|
|
||||||
|
wasm_cc_binary(
|
||||||
|
name = "hello-world-wasm",
|
||||||
|
cc_target = ":hello-world",
|
||||||
|
)
|
||||||
|
```
|
||||||
|
|
||||||
|
Now you can run `bazel build :hello-world-wasm`. The result of this build will
|
||||||
|
be the individual files produced by emscripten. Note that some of these files
|
||||||
|
may be empty. This is because bazel has no concept of optional outputs for
|
||||||
|
rules.
|
||||||
|
|
||||||
|
`wasm_cc_binary` uses transition to use emscripten toolchain on `cc_target`
|
||||||
|
and all of its dependencies, and does not require amending `.bazelrc`. This
|
||||||
|
is the preferred way, since it also unpacks the resulting tarball.
|
||||||
|
|
||||||
|
The Emscripten cache shipped by default does not include LTO, 64-bit or PIC
|
||||||
|
builds of the system libraries and ports. If you wish to use these features you
|
||||||
|
will need to declare the cache in your `MODULE.bazel` as follows. Note
|
||||||
|
that the configuration consists of the same flags that can be passed to
|
||||||
|
embuilder. If `targets` is not set, all system libraries and ports will be
|
||||||
|
built, i.e., the `ALL` option to embuilder.
|
||||||
|
|
||||||
|
```starlark
|
||||||
|
emscripten_cache = use_extension(
|
||||||
|
"@emsdk//:emscripten_cache.bzl",
|
||||||
|
"emscripten_cache",
|
||||||
|
)
|
||||||
|
emscripten_cache.configuration(flags = ["--lto"])
|
||||||
|
emscripten_cache.targets(targets = [
|
||||||
|
"crtbegin",
|
||||||
|
"libprintf_long_double-debug",
|
||||||
|
"libstubs-debug",
|
||||||
|
"libnoexit",
|
||||||
|
"libc-debug",
|
||||||
|
"libdlmalloc",
|
||||||
|
"libcompiler_rt",
|
||||||
|
"libc++-noexcept",
|
||||||
|
"libc++abi-debug-noexcept",
|
||||||
|
"libsockets"
|
||||||
|
])
|
||||||
|
```
|
||||||
|
|
||||||
|
See `test_external/` for an example using [embind](https://emscripten.org/docs/porting/connecting_cpp_and_javascript/embind.html).
|
||||||
2
emsdk-cache/emsdk-main/bazel/bazelrc
Normal file
2
emsdk-cache/emsdk-main/bazel/bazelrc
Normal file
|
|
@ -0,0 +1,2 @@
|
||||||
|
build:wasm --incompatible_enable_cc_toolchain_resolution
|
||||||
|
build:wasm --platforms=@emsdk//:platform_wasm
|
||||||
93
emsdk-cache/emsdk-main/bazel/emscripten_build_file.bzl
Normal file
93
emsdk-cache/emsdk-main/bazel/emscripten_build_file.bzl
Normal file
|
|
@ -0,0 +1,93 @@
|
||||||
|
"""A templated build file for emscripten repositories"""
|
||||||
|
|
||||||
|
EMSCRIPTEN_BUILD_FILE_CONTENT_TEMPLATE = """
|
||||||
|
package(default_visibility = ['//visibility:public'])
|
||||||
|
|
||||||
|
filegroup(
|
||||||
|
name = "all",
|
||||||
|
srcs = glob(["**"]),
|
||||||
|
)
|
||||||
|
|
||||||
|
filegroup(
|
||||||
|
name = "includes",
|
||||||
|
srcs = glob([
|
||||||
|
"emscripten/cache/sysroot/include/c++/v1/**",
|
||||||
|
"emscripten/cache/sysroot/include/compat/**",
|
||||||
|
"emscripten/cache/sysroot/include/**",
|
||||||
|
"lib/clang/**/include/**",
|
||||||
|
]),
|
||||||
|
)
|
||||||
|
|
||||||
|
filegroup(
|
||||||
|
name = "emcc_common",
|
||||||
|
srcs = [
|
||||||
|
"emscripten/emcc.py",
|
||||||
|
"emscripten/embuilder.py",
|
||||||
|
"emscripten/emscripten-version.txt",
|
||||||
|
"emscripten/cache/sysroot_install.stamp",
|
||||||
|
"emscripten/src/settings.js",
|
||||||
|
"emscripten/src/settings_internal.js",
|
||||||
|
] + glob(
|
||||||
|
include = [
|
||||||
|
"emscripten/third_party/**",
|
||||||
|
"emscripten/tools/**",
|
||||||
|
],
|
||||||
|
exclude = [
|
||||||
|
"**/__pycache__/**",
|
||||||
|
],
|
||||||
|
),
|
||||||
|
)
|
||||||
|
|
||||||
|
filegroup(
|
||||||
|
name = "compiler_files",
|
||||||
|
srcs = [
|
||||||
|
"bin/clang{bin_extension}",
|
||||||
|
"bin/clang++{bin_extension}",
|
||||||
|
":emcc_common",
|
||||||
|
":includes",
|
||||||
|
],
|
||||||
|
)
|
||||||
|
|
||||||
|
filegroup(
|
||||||
|
name = "linker_files",
|
||||||
|
srcs = [
|
||||||
|
"bin/clang{bin_extension}",
|
||||||
|
"bin/llvm-ar{bin_extension}",
|
||||||
|
"bin/llvm-dwarfdump{bin_extension}",
|
||||||
|
"bin/llvm-nm{bin_extension}",
|
||||||
|
"bin/llvm-objcopy{bin_extension}",
|
||||||
|
"bin/wasm-ctor-eval{bin_extension}",
|
||||||
|
"bin/wasm-emscripten-finalize{bin_extension}",
|
||||||
|
"bin/wasm-ld{bin_extension}",
|
||||||
|
"bin/wasm-metadce{bin_extension}",
|
||||||
|
"bin/wasm-opt{bin_extension}",
|
||||||
|
"bin/wasm-split{bin_extension}",
|
||||||
|
"bin/wasm2js{bin_extension}",
|
||||||
|
":emcc_common",
|
||||||
|
] + glob(
|
||||||
|
include = [
|
||||||
|
"emscripten/cache/sysroot/lib/**",
|
||||||
|
"emscripten/node_modules/**",
|
||||||
|
"emscripten/src/**",
|
||||||
|
],
|
||||||
|
),
|
||||||
|
)
|
||||||
|
|
||||||
|
filegroup(
|
||||||
|
name = "ar_files",
|
||||||
|
srcs = [
|
||||||
|
"bin/llvm-ar{bin_extension}",
|
||||||
|
"emscripten/emar.py",
|
||||||
|
"emscripten/emscripten-version.txt",
|
||||||
|
"emscripten/src/settings.js",
|
||||||
|
"emscripten/src/settings_internal.js",
|
||||||
|
] + glob(
|
||||||
|
include = [
|
||||||
|
"emscripten/tools/**",
|
||||||
|
],
|
||||||
|
exclude = [
|
||||||
|
"**/__pycache__/**",
|
||||||
|
],
|
||||||
|
),
|
||||||
|
)
|
||||||
|
"""
|
||||||
113
emsdk-cache/emsdk-main/bazel/emscripten_cache.bzl
Normal file
113
emsdk-cache/emsdk-main/bazel/emscripten_cache.bzl
Normal file
|
|
@ -0,0 +1,113 @@
|
||||||
|
BUILD_FILE_CONTENT_TEMPLATE = """
|
||||||
|
package(default_visibility = ['//visibility:public'])
|
||||||
|
exports_files(['emscripten_config'])
|
||||||
|
"""
|
||||||
|
|
||||||
|
EMBUILDER_CONFIG_TEMPLATE = """
|
||||||
|
CACHE = '{cache}'
|
||||||
|
BINARYEN_ROOT = '{binaryen_root}'
|
||||||
|
LLVM_ROOT = '{llvm_root}'
|
||||||
|
"""
|
||||||
|
|
||||||
|
def get_root_and_script_ext(repository_ctx):
|
||||||
|
if repository_ctx.os.name.startswith("linux"):
|
||||||
|
if "amd64" in repository_ctx.os.arch or "x86_64" in repository_ctx.os.arch:
|
||||||
|
return (repository_ctx.path(Label("@emscripten_bin_linux//:BUILD.bazel")).dirname, "")
|
||||||
|
elif "aarch64" in repository_ctx.os.arch:
|
||||||
|
return (repository_ctx.path(Label("@emscripten_bin_linux_arm64//:BUILD.bazel")).dirname, "")
|
||||||
|
else:
|
||||||
|
fail("Unsupported architecture for Linux")
|
||||||
|
elif repository_ctx.os.name.startswith("mac"):
|
||||||
|
if "amd64" in repository_ctx.os.arch or "x86_64" in repository_ctx.os.arch:
|
||||||
|
return (repository_ctx.path(Label("@emscripten_bin_mac//:BUILD.bazel")).dirname, "")
|
||||||
|
elif "aarch64" in repository_ctx.os.arch:
|
||||||
|
return (repository_ctx.path(Label("@emscripten_bin_mac_arm64//:BUILD.bazel")).dirname, "")
|
||||||
|
else:
|
||||||
|
fail("Unsupported architecture for MacOS")
|
||||||
|
elif repository_ctx.os.name.startswith("windows"):
|
||||||
|
return (repository_ctx.path(Label("@emscripten_bin_win//:BUILD.bazel")).dirname, ".bat")
|
||||||
|
else:
|
||||||
|
fail("Unsupported operating system")
|
||||||
|
|
||||||
|
def _emscripten_cache_repository_impl(repository_ctx):
|
||||||
|
# Read the default emscripten configuration file
|
||||||
|
default_config = repository_ctx.read(
|
||||||
|
repository_ctx.path(
|
||||||
|
Label("@emsdk//emscripten_toolchain:default_config"),
|
||||||
|
),
|
||||||
|
)
|
||||||
|
|
||||||
|
if repository_ctx.attr.targets or repository_ctx.attr.configuration:
|
||||||
|
root, script_ext = get_root_and_script_ext(repository_ctx)
|
||||||
|
llvm_root = root.get_child("bin")
|
||||||
|
cache = repository_ctx.path("cache")
|
||||||
|
|
||||||
|
# Create configuration file
|
||||||
|
embuilder_config_content = EMBUILDER_CONFIG_TEMPLATE.format(
|
||||||
|
cache = cache,
|
||||||
|
binaryen_root = root,
|
||||||
|
llvm_root = llvm_root,
|
||||||
|
)
|
||||||
|
repository_ctx.file("embuilder_config", embuilder_config_content)
|
||||||
|
embuilder_config_path = repository_ctx.path("embuilder_config")
|
||||||
|
embuilder_path = "{}{}".format(root.get_child("emscripten").get_child("embuilder"), script_ext)
|
||||||
|
|
||||||
|
# Prepare the command line
|
||||||
|
if repository_ctx.attr.targets:
|
||||||
|
targets = repository_ctx.attr.targets
|
||||||
|
else:
|
||||||
|
# If no targets are requested, build everything
|
||||||
|
targets = ["ALL"]
|
||||||
|
flags = ["--em-config", embuilder_config_path] + repository_ctx.attr.configuration
|
||||||
|
embuilder_args = [embuilder_path] + flags + ["build"] + targets
|
||||||
|
|
||||||
|
# Run embuilder
|
||||||
|
repository_ctx.report_progress("Building secondary cache")
|
||||||
|
result = repository_ctx.execute(
|
||||||
|
embuilder_args,
|
||||||
|
quiet = True,
|
||||||
|
environment = {
|
||||||
|
"EM_IGNORE_SANITY": "1",
|
||||||
|
"EM_NODE_JS": "empty",
|
||||||
|
},
|
||||||
|
)
|
||||||
|
if result.return_code != 0:
|
||||||
|
fail("Embuilder exited with a non-zero return code")
|
||||||
|
|
||||||
|
# Override Emscripten's cache with the secondary cache
|
||||||
|
default_config += "CACHE = '{}'\n".format(cache)
|
||||||
|
|
||||||
|
# Create the configuration file for the toolchain and export
|
||||||
|
repository_ctx.file("emscripten_config", default_config)
|
||||||
|
repository_ctx.file("BUILD.bazel", BUILD_FILE_CONTENT_TEMPLATE)
|
||||||
|
|
||||||
|
_emscripten_cache_repository = repository_rule(
|
||||||
|
implementation = _emscripten_cache_repository_impl,
|
||||||
|
attrs = {
|
||||||
|
"configuration": attr.string_list(),
|
||||||
|
"targets": attr.string_list(),
|
||||||
|
},
|
||||||
|
)
|
||||||
|
|
||||||
|
def _emscripten_cache_impl(ctx):
|
||||||
|
all_configuration = []
|
||||||
|
all_targets = []
|
||||||
|
for mod in ctx.modules:
|
||||||
|
for configuration in mod.tags.configuration:
|
||||||
|
all_configuration += configuration.flags
|
||||||
|
for targets in mod.tags.targets:
|
||||||
|
all_targets += targets.targets
|
||||||
|
|
||||||
|
_emscripten_cache_repository(
|
||||||
|
name = "emscripten_cache",
|
||||||
|
configuration = all_configuration,
|
||||||
|
targets = all_targets,
|
||||||
|
)
|
||||||
|
|
||||||
|
emscripten_cache = module_extension(
|
||||||
|
tag_classes = {
|
||||||
|
"configuration": tag_class(attrs = {"flags": attr.string_list()}),
|
||||||
|
"targets": tag_class(attrs = {"targets": attr.string_list()}),
|
||||||
|
},
|
||||||
|
implementation = _emscripten_cache_impl,
|
||||||
|
)
|
||||||
99
emsdk-cache/emsdk-main/bazel/emscripten_deps.bzl
Normal file
99
emsdk-cache/emsdk-main/bazel/emscripten_deps.bzl
Normal file
|
|
@ -0,0 +1,99 @@
|
||||||
|
load(":remote_emscripten_repository.bzl", "remote_emscripten_repository")
|
||||||
|
load(":revisions.bzl", "EMSCRIPTEN_TAGS")
|
||||||
|
|
||||||
|
def _parse_version(v):
|
||||||
|
return [int(u) for u in v.split(".")]
|
||||||
|
|
||||||
|
def _empty_repository_impl(ctx):
|
||||||
|
ctx.file("MODULE.bazel", """module(name = "{}")""".format(ctx.name))
|
||||||
|
ctx.file("BUILD.bazel", "")
|
||||||
|
|
||||||
|
_empty_repository = repository_rule(
|
||||||
|
implementation = _empty_repository_impl,
|
||||||
|
)
|
||||||
|
|
||||||
|
def emscripten_repo_name(name):
|
||||||
|
return "emscripten_bin_{}".format(name)
|
||||||
|
|
||||||
|
def _emscripten_deps_impl(ctx):
|
||||||
|
version = None
|
||||||
|
|
||||||
|
for mod in ctx.modules:
|
||||||
|
for config in mod.tags.config:
|
||||||
|
if config.version and version != None:
|
||||||
|
fail("More than one emscripten version specified!")
|
||||||
|
version = config.version
|
||||||
|
if version == None:
|
||||||
|
version = "latest"
|
||||||
|
|
||||||
|
if version == "latest":
|
||||||
|
version = reversed(sorted(EMSCRIPTEN_TAGS.keys(), key = _parse_version))[0]
|
||||||
|
|
||||||
|
revision = EMSCRIPTEN_TAGS[version]
|
||||||
|
|
||||||
|
emscripten_url = "https://storage.googleapis.com/webassembly/emscripten-releases-builds/{}/{}/wasm-binaries{}.{}"
|
||||||
|
|
||||||
|
remote_emscripten_repository(
|
||||||
|
name = emscripten_repo_name("linux"),
|
||||||
|
bin_extension = "",
|
||||||
|
sha256 = revision.sha_linux,
|
||||||
|
strip_prefix = "install",
|
||||||
|
type = "tar.xz",
|
||||||
|
url = emscripten_url.format("linux", revision.hash, "", "tar.xz"),
|
||||||
|
)
|
||||||
|
|
||||||
|
# Not all versions have a linux/arm64 release: https://github.com/emscripten-core/emsdk/issues/547
|
||||||
|
if hasattr(revision, "sha_linux_arm64"):
|
||||||
|
remote_emscripten_repository(
|
||||||
|
name = emscripten_repo_name("linux_arm64"),
|
||||||
|
bin_extension = "",
|
||||||
|
sha256 = revision.sha_linux_arm64,
|
||||||
|
strip_prefix = "install",
|
||||||
|
type = "tar.xz",
|
||||||
|
url = emscripten_url.format("linux", revision.hash, "-arm64", "tar.xz"),
|
||||||
|
)
|
||||||
|
else:
|
||||||
|
_empty_repository(
|
||||||
|
name = emscripten_repo_name("linux_arm64"),
|
||||||
|
)
|
||||||
|
|
||||||
|
remote_emscripten_repository(
|
||||||
|
name = emscripten_repo_name("mac"),
|
||||||
|
bin_extension = "",
|
||||||
|
sha256 = revision.sha_mac,
|
||||||
|
strip_prefix = "install",
|
||||||
|
type = "tar.xz",
|
||||||
|
url = emscripten_url.format("mac", revision.hash, "", "tar.xz"),
|
||||||
|
)
|
||||||
|
|
||||||
|
remote_emscripten_repository(
|
||||||
|
name = emscripten_repo_name("mac_arm64"),
|
||||||
|
bin_extension = "",
|
||||||
|
sha256 = revision.sha_mac_arm64,
|
||||||
|
strip_prefix = "install",
|
||||||
|
type = "tar.xz",
|
||||||
|
url = emscripten_url.format("mac", revision.hash, "-arm64", "tar.xz"),
|
||||||
|
)
|
||||||
|
|
||||||
|
remote_emscripten_repository(
|
||||||
|
name = emscripten_repo_name("win"),
|
||||||
|
bin_extension = ".exe",
|
||||||
|
sha256 = revision.sha_win,
|
||||||
|
strip_prefix = "install",
|
||||||
|
type = "zip",
|
||||||
|
url = emscripten_url.format("win", revision.hash, "", "zip"),
|
||||||
|
)
|
||||||
|
|
||||||
|
emscripten_deps = module_extension(
|
||||||
|
tag_classes = {
|
||||||
|
"config": tag_class(
|
||||||
|
attrs = {
|
||||||
|
"version": attr.string(
|
||||||
|
doc = "Version to use. 'latest' to use latest.",
|
||||||
|
values = ["latest"] + EMSCRIPTEN_TAGS.keys(),
|
||||||
|
),
|
||||||
|
},
|
||||||
|
),
|
||||||
|
},
|
||||||
|
implementation = _emscripten_deps_impl,
|
||||||
|
)
|
||||||
|
|
@ -0,0 +1,43 @@
|
||||||
|
load("//:emscripten_deps.bzl", "emscripten_repo_name")
|
||||||
|
load("//:remote_emscripten_repository.bzl", "create_toolchains", "emscripten_toolchain_name")
|
||||||
|
load("@rules_python//python:py_binary.bzl", "py_binary")
|
||||||
|
|
||||||
|
package(default_visibility = ["//visibility:public"])
|
||||||
|
|
||||||
|
# dlmalloc.bc is implicitly added by the emscripten toolchain
|
||||||
|
cc_library(name = "malloc")
|
||||||
|
|
||||||
|
create_toolchains(
|
||||||
|
name = emscripten_toolchain_name("linux"),
|
||||||
|
repo_name = emscripten_repo_name("linux"),
|
||||||
|
exec_compatible_with = [ "@platforms//os:linux", "@platforms//cpu:x86_64"],
|
||||||
|
)
|
||||||
|
|
||||||
|
create_toolchains(
|
||||||
|
name = emscripten_toolchain_name("linux_arm64"),
|
||||||
|
repo_name = emscripten_repo_name("linux_arm64"),
|
||||||
|
exec_compatible_with = ["@platforms//os:linux", "@platforms//cpu:arm64"],
|
||||||
|
)
|
||||||
|
|
||||||
|
create_toolchains(
|
||||||
|
name = emscripten_toolchain_name("mac"),
|
||||||
|
repo_name = emscripten_repo_name("mac"),
|
||||||
|
exec_compatible_with = ["@platforms//os:macos", "@platforms//cpu:x86_64"],
|
||||||
|
)
|
||||||
|
|
||||||
|
create_toolchains(
|
||||||
|
name = emscripten_toolchain_name("mac_arm64"),
|
||||||
|
repo_name = emscripten_repo_name("mac_arm64"),
|
||||||
|
exec_compatible_with = ["@platforms//os:macos", "@platforms//cpu:arm64"],
|
||||||
|
)
|
||||||
|
|
||||||
|
create_toolchains(
|
||||||
|
name = emscripten_toolchain_name("win"),
|
||||||
|
repo_name = emscripten_repo_name("win"),
|
||||||
|
exec_compatible_with = ["@platforms//os:windows", "@platforms//cpu:x86_64"],
|
||||||
|
)
|
||||||
|
|
||||||
|
py_binary(
|
||||||
|
name = "wasm_binary",
|
||||||
|
srcs = ["wasm_binary.py"],
|
||||||
|
)
|
||||||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue