Update examples collection

This commit is contained in:
github-actions[bot] 2025-08-20 09:41:41 +00:00
commit e0920a1d65
51 changed files with 21612 additions and 0 deletions

View file

@ -0,0 +1 @@
build --incompatible_enable_cc_toolchain_resolution

View file

@ -0,0 +1,4 @@
bazel-bin
bazel-out
bazel-test_external
bazel-testlogs

View file

@ -0,0 +1,66 @@
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",
outputs = [
"hello-world.js",
"hello-world.wasm",
],
)
BASE_LINKOPTS = [
"--bind", # Enable embind
"-sMODULARIZE",
"--pre-js",
"hello-embind-interface.js",
]
RELEASE_OPTS = [
"--closure=1", # Run the closure compiler
# Tell closure about the externs file, so as not to minify our JS public API.
"--closure-args=--externs=$(location hello-embind-externs.js)"
]
DEBUG_OPTS = [
"--closure=0", # Do not use closure
]
config_setting(
name = "release_opts",
values = {"compilation_mode": "opt"},
)
config_setting(
name = "debug_opts",
values = {"compilation_mode": "dbg"},
)
cc_binary(
name = "hello-embind",
srcs = ["hello-embind.cc"],
features = ["emcc_debug_link"],
additional_linker_inputs = [
"hello-embind-externs.js",
"hello-embind-interface.js",
],
linkopts = select({
":debug_opts": BASE_LINKOPTS + DEBUG_OPTS,
":release_opts": BASE_LINKOPTS + RELEASE_OPTS,
"//conditions:default": BASE_LINKOPTS + RELEASE_OPTS,
}),
# This target won't build successfully on its own because of missing emscripten
# headers etc. Therefore, we hide it from wildcards.
tags = ["manual"],
)
wasm_cc_binary(
name = "hello-embind-wasm",
cc_target = ":hello-embind",
)

View file

@ -0,0 +1,6 @@
bazel_dep(name = "rules_cc", version = "0.1.1")
bazel_dep(name = "emsdk")
local_path_override(
module_name = "emsdk",
path = "..",
)

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,2 @@
// This file prevents customJSFunctionToTestClosure from being minified by the Closure compiler.
Module.customJSFunctionToTestClosure = function() {}

View file

@ -0,0 +1,3 @@
Module.customJSFunctionToTestClosure = function(firstParam, secondParam) {
console.log("This function adds two numbers to get", firstParam + secondParam);
}

View file

@ -0,0 +1,16 @@
#include <emscripten/bind.h>
using namespace emscripten;
class HelloClass {
public:
static std::string SayHello(const std::string &name) {
return "Yo! " + name;
};
};
EMSCRIPTEN_BINDINGS(Hello) {
emscripten::class_<HelloClass>("HelloClass")
.constructor<>()
.class_function("SayHello", &HelloClass::SayHello);
}

View file

@ -0,0 +1,6 @@
#include <iostream>
int main(int argc, char** argv) {
std::cout << "hello world!" << std::endl;
return 0;
}

View file

@ -0,0 +1,61 @@
load("@emsdk//emscripten_toolchain:wasm_rules.bzl", "wasm_cc_binary")
_TEST_TARGETS = [
"long_command_line_file01",
"long_command_line_file02",
"long_command_line_file03",
"long_command_line_file04",
"long_command_line_file05",
"long_command_line_file06",
"long_command_line_file07",
"long_command_line_file08",
"long_command_line_file09",
"long_command_line_file10",
"long_command_line_file11",
"long_command_line_file12",
"long_command_line_file13",
"long_command_line_file14",
"long_command_line_file15",
"long_command_line_file16",
"long_command_line_file17",
"long_command_line_file18",
"long_command_line_file19",
"long_command_line_file20",
]
_TEST_TARGET_SUFFIXES = [
"a",
"b",
"c",
"d",
"e",
"f",
"g",
"h",
"i",
"j",
]
[cc_library(
name = "{}_{}".format(target, suffix),
hdrs = ["include/{}.hh".format(target)],
# stripping include prefix to create more flags passed to emcc
strip_include_prefix = "include",
srcs = ["{}.cc".format(target)],
) for target in _TEST_TARGETS for suffix in _TEST_TARGET_SUFFIXES]
cc_binary(
name = "long_command_line",
linkshared = True,
srcs = ["long_command_line.cc"],
deps = [":{}_{}".format(target, suffix) for target in _TEST_TARGETS for suffix in _TEST_TARGET_SUFFIXES],
)
wasm_cc_binary(
name = "long_command_line_wasm",
cc_target = ":long_command_line",
outputs = [
"long_command_line.js",
"long_command_line.wasm",
],
)

View file

@ -0,0 +1,3 @@
#pragma once
void f1();

View file

@ -0,0 +1,3 @@
#pragma once
void f2();

View file

@ -0,0 +1,3 @@
#pragma once
void f3();

View file

@ -0,0 +1,3 @@
#pragma once
void f4();

View file

@ -0,0 +1,3 @@
#pragma once
void f5();

View file

@ -0,0 +1,3 @@
#pragma once
void f6();

View file

@ -0,0 +1,3 @@
#pragma once
void f7();

View file

@ -0,0 +1,3 @@
#pragma once
void f8();

View file

@ -0,0 +1,3 @@
#pragma once
void f9();

View file

@ -0,0 +1,3 @@
#pragma once
void f10();

Some files were not shown because too many files have changed in this diff Show more