Skip to content

Commit

Permalink
Revert "Bump emscripten to 3.1.30 (dotnet#282)"
Browse files Browse the repository at this point in the history
This reverts commit f55ecf5.
  • Loading branch information
radical committed Feb 8, 2023
1 parent f55ecf5 commit ec00ec7
Showing 26 changed files with 534 additions and 399 deletions.
11 changes: 6 additions & 5 deletions .circleci/config.yml
Original file line number Diff line number Diff line change
@@ -49,7 +49,7 @@ jobs:
test/test.py
test-mac:
macos:
xcode: "12.5.1"
xcode: "12.2.0"
environment:
EMSDK_NOTTY: "1"
# Without this, any `brew installl` command will result in self-update of
@@ -140,7 +140,8 @@ jobs:
- run:
name: install docker
command: apt-get update -q && apt-get install -q -y docker.io
- setup_remote_docker
- setup_remote_docker:
version: 19.03.13
# Build and test the tip-of-tree build of EMSDK
- run:
name: build
@@ -156,7 +157,8 @@ jobs:
- run:
name: install docker
command: apt-get update -q && apt-get install -q -y docker.io
- setup_remote_docker
- setup_remote_docker:
version: 19.03.13
- run:
name: build
command: make -C ./docker version=${CIRCLE_TAG} build
@@ -191,7 +193,7 @@ jobs:

test-bazel-mac:
macos:
xcode: "12.5.1"
xcode: "12.2.0"
environment:
EMSDK_NOTTY: "1"
HOMEBREW_NO_AUTO_UPDATE: "1"
@@ -211,7 +213,6 @@ jobs:
environment:
PYTHONUNBUFFERED: "1"
EMSDK_NOTTY: "1"
USE_BAZEL_VERSION: "5.4.0"
steps:
- checkout
- run:
1 change: 0 additions & 1 deletion bazel/.bazelrc

This file was deleted.

7 changes: 0 additions & 7 deletions bazel/BUILD
Original file line number Diff line number Diff line change
@@ -66,10 +66,3 @@ alias(
"//conditions:default": ":empty",
}),
)

platform(
name = "platform_wasm",
constraint_values = [
"@platforms//cpu:wasm32",
],
)
26 changes: 16 additions & 10 deletions bazel/README.md
Original file line number Diff line number Diff line change
@@ -17,9 +17,6 @@ emsdk_deps()
load("@emsdk//:emscripten_deps.bzl", emsdk_emscripten_deps = "emscripten_deps")
emsdk_emscripten_deps(emscripten_version = "2.0.31")
load("@emsdk//:toolchains.bzl", "register_emscripten_toolchains")
register_emscripten_toolchains()
```
The SHA1 hash in the above `strip_prefix` and `url` parameters correspond to the git revision of
[emsdk 2.0.31](https://github.com/emscripten-core/emsdk/releases/tag/2.0.31). To get access to
@@ -29,13 +26,8 @@ parameter of `emsdk_emscripten_deps()`. Supported versions are listed in `revisi

## Building

Put the following line into your `.bazelrc`:

```
build --incompatible_enable_cc_toolchain_resolution
```

Then write a new rule wrapping your `cc_binary`.
### Using wasm_cc_binary (preferred)
First, write a new rule wrapping your `cc_binary`.

```
load("@rules_cc//cc:defs.bzl", "cc_binary")
@@ -62,3 +54,17 @@ and all of its dependencies, and does not require amending `.bazelrc`. This
is the preferred way, since it also unpacks the resulting tarball.

See `test_external/` for an example using [embind](https://emscripten.org/docs/porting/connecting_cpp_and_javascript/embind.html).

### Using --config=wasm

Put the following lines into your `.bazelrc`:
```
build:wasm --crosstool_top=@emsdk//emscripten_toolchain:everything
build:wasm --cpu=wasm
build:wasm --host_crosstool_top=@bazel_tools//tools/cpp:toolchain
```

Simply pass `--config=wasm` when building a normal `cc_binary`. The result of
this build will be a tar archive containing any files produced by emscripten.
See the [Bazel documentation](https://docs.bazel.build/versions/main/tutorial/cc-toolchain-config.html)
for more details
4 changes: 0 additions & 4 deletions bazel/WORKSPACE
Original file line number Diff line number Diff line change
@@ -7,7 +7,3 @@ deps()
load(":emscripten_deps.bzl", "emscripten_deps")

emscripten_deps()

load(":toolchains.bzl", "register_emscripten_toolchains")

register_emscripten_toolchains()
7 changes: 5 additions & 2 deletions bazel/bazelrc
Original file line number Diff line number Diff line change
@@ -1,2 +1,5 @@
build:wasm --incompatible_enable_cc_toolchain_resolution
build:wasm --platforms=@emsdk//:platform_wasm
build:wasm --crosstool_top=//emscripten_toolchain:everything

build:wasm --cpu=wasm

build:wasm --host_crosstool_top=@bazel_tools//tools/cpp:toolchain
30 changes: 8 additions & 22 deletions bazel/deps.bzl
Original file line number Diff line number Diff line change
@@ -1,25 +1,11 @@
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
load("@bazel_tools//tools/build_defs/repo:utils.bzl", "maybe")

def deps():
maybe(
http_archive,
name = "bazel_skylib",
sha256 = "c6966ec828da198c5d9adbaa94c05e3a1c7f21bd012a0b29ba8ddbccb2c93b0d",
urls = [
"https://github.com/bazelbuild/bazel-skylib/releases/download/1.1.1/bazel-skylib-1.1.1.tar.gz",
"https://mirror.bazel.build/github.com/bazelbuild/bazel-skylib/releases/download/1.1.1/bazel-skylib-1.1.1.tar.gz",
],
)
maybe(
http_archive,
name = "rules_nodejs",
sha256 = "08337d4fffc78f7fe648a93be12ea2fc4e8eb9795a4e6aa48595b66b34555626",
urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/5.8.0/rules_nodejs-core-5.8.0.tar.gz"],
)
maybe(
http_archive,
name = "build_bazel_rules_nodejs",
sha256 = "dcc55f810142b6cf46a44d0180a5a7fb923c04a5061e2e8d8eb05ccccc60864b",
urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/5.8.0/rules_nodejs-5.8.0.tar.gz"],
)
excludes = native.existing_rules().keys()

if "build_bazel_rules_nodejs" not in excludes:
http_archive(
name = "build_bazel_rules_nodejs",
sha256 = "4501158976b9da216295ac65d872b1be51e3eeb805273e68c516d2eb36ae1fbb",
urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/4.4.1/rules_nodejs-4.4.1.tar.gz"],
)
50 changes: 7 additions & 43 deletions bazel/emscripten_deps.bzl
Original file line number Diff line number Diff line change
@@ -14,77 +14,41 @@ filegroup(
"emscripten/cache/sysroot/include/c++/v1/**",
"emscripten/cache/sysroot/include/compat/**",
"emscripten/cache/sysroot/include/**",
"lib/clang/16/include/**",
"lib/clang/15.0.0/include/**",
]),
)
filegroup(
name = "emcc_common",
srcs = [
"emscripten/emcc.py",
"emscripten/emscripten.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 = [
"emscripten/emcc.py",
"bin/clang{bin_extension}",
"bin/clang++{bin_extension}",
":emcc_common",
":includes",
],
)
filegroup(
name = "linker_files",
srcs = [
"emscripten/emcc.py",
"bin/clang{bin_extension}",
"bin/llc{bin_extension}",
"bin/llvm-ar{bin_extension}",
"bin/llvm-nm{bin_extension}",
"bin/llvm-objcopy{bin_extension}",
"bin/wasm-emscripten-finalize{bin_extension}",
"bin/wasm-ld{bin_extension}",
"bin/wasm-opt{bin_extension}",
"bin/wasm-metadce{bin_extension}",
":emcc_common",
] + glob(
include = [
"emscripten/cache/sysroot/lib/**",
"emscripten/node_modules/**",
"emscripten/src/**",
],
),
] + glob(["emscripten/node_modules/**"]),
)
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__/**",
],
),
"bin/llvm-ar{bin_extension}",
],
)
"""

16 changes: 7 additions & 9 deletions bazel/emscripten_toolchain/BUILD.bazel
Original file line number Diff line number Diff line change
@@ -1,14 +1,19 @@
load(":toolchain.bzl", "emscripten_cc_toolchain_config_rule")
load(":crosstool.bzl", "emscripten_cc_toolchain_config_rule")

package(default_visibility = ["//visibility:public"])

# Name depends on rules_nodejs version being used.
# https://github.com/emscripten-core/emsdk/issues/1020
# https://github.com/bazelbuild/rules_nodejs/issues/3375
node_files = "@nodejs_host//:node_files" if existing_rule("@nodejs_host//:node_files") else "@nodejs//:node_files"

filegroup(
name = "common_files",
srcs = [
"emscripten_config",
"env.sh",
"env.bat",
"@nodejs//:node_files",
node_files,
],
)

@@ -81,13 +86,6 @@ cc_toolchain_suite(
},
)

toolchain(
name = "cc-toolchain-wasm",
target_compatible_with = ["@platforms//cpu:wasm32"],
toolchain = ":cc-compiler-wasm",
toolchain_type = "@bazel_tools//tools/cpp:toolchain_type",
)

py_binary(
name = "wasm_binary",
srcs = ["wasm_binary.py"],
Original file line number Diff line number Diff line change
@@ -441,9 +441,6 @@ def _impl(ctx):
name = "output_format_js",
enabled = True,
),
feature(
name = "wasm_standalone",
),
]

crosstool_default_flag_sets = [
@@ -914,7 +911,7 @@ def _impl(ctx):
"-iwithsysroot" + "/include/compat",
"-iwithsysroot" + "/include",
"-isystem",
emscripten_dir + "/lib/clang/16/include",
emscripten_dir + "/lib/clang/15.0.0/include",
],
),
# Inputs and outputs
@@ -1018,11 +1015,6 @@ def _impl(ctx):
flags = ["-Werror"],
features = ["wasm_warnings_as_errors"],
),
flag_set(
actions = all_link_actions,
flags = ["-sSTANDALONE_WASM"],
features = ["wasm_standalone"],
),
]

crosstool_default_env_sets = [
@@ -1081,7 +1073,7 @@ def _impl(ctx):
emscripten_dir + "/emscripten/cache/sysroot/include/c++/v1",
emscripten_dir + "/emscripten/cache/sysroot/include/compat",
emscripten_dir + "/emscripten/cache/sysroot/include",
emscripten_dir + "/lib/clang/16/include",
emscripten_dir + "/lib/clang/15.0.0/include",
]

artifact_name_patterns = []
@@ -1113,7 +1105,7 @@ emscripten_cc_toolchain_config_rule = rule(
attrs = {
"cpu": attr.string(mandatory = True, values = ["asmjs", "wasm"]),
"em_config": attr.label(mandatory = True, allow_single_file = True),
"emscripten_binaries": attr.label(mandatory = True, cfg = "exec"),
"emscripten_binaries": attr.label(mandatory = True),
"script_extension": attr.string(mandatory = True, values = ["sh", "bat"]),
},
provides = [CcToolchainConfigInfo],
14 changes: 1 addition & 13 deletions bazel/emscripten_toolchain/wasm_cc_binary.bzl
Original file line number Diff line number Diff line change
@@ -25,17 +25,14 @@ def _wasm_transition_impl(settings, attr):
if attr.simd:
features.append("wasm_simd")

if attr.standalone:
features.append("wasm_standalone")

return {
"//command_line_option:compiler": "emscripten",
"//command_line_option:crosstool_top": "@emsdk//emscripten_toolchain:everything",
"//command_line_option:cpu": "wasm",
"//command_line_option:features": features,
"//command_line_option:dynamic_mode": "off",
"//command_line_option:linkopt": linkopts,
"//command_line_option:platforms": ["@emsdk//:platform_wasm"],
"//command_line_option:platforms": [],
"//command_line_option:custom_malloc": "@emsdk//emscripten_toolchain:malloc",
}

@@ -89,9 +86,6 @@ _WASM_BINARY_COMMON_ATTRS = {
"simd": attr.bool(
default = False,
),
"standalone": attr.bool(
default = False,
),
"_allowlist_function_transition": attr.label(
default = "@bazel_tools//tools/allowlists/function_transition_allowlist",
),
@@ -169,10 +163,7 @@ def _wasm_cc_binary_legacy_impl(ctx):
)

_wasm_cc_binary = rule(
<<<<<<< HEAD
name = "wasm_cc_binary",
=======
>>>>>>> 3.1.30
implementation = _wasm_cc_binary_impl,
attrs = dict(
_WASM_BINARY_COMMON_ATTRS,
@@ -202,10 +193,7 @@ def _wasm_binary_legacy_outputs(name, cc_target):
return outputs

_wasm_cc_binary_legacy = rule(
<<<<<<< HEAD
name = "wasm_cc_binary",
=======
>>>>>>> 3.1.30
implementation = _wasm_cc_binary_legacy_impl,
attrs = _WASM_BINARY_COMMON_ATTRS,
outputs = _wasm_binary_legacy_outputs,
Loading

0 comments on commit ec00ec7

Please sign in to comment.