1cb93a386Sopenharmony_ciload("@rules_cc//cc:defs.bzl", "cc_binary") 2cb93a386Sopenharmony_ciload("@emsdk//emscripten_toolchain:wasm_rules.bzl", "wasm_cc_binary") 3cb93a386Sopenharmony_ci 4cb93a386Sopenharmony_ciBASE_LINKOPTS = [ 5cb93a386Sopenharmony_ci #"-flto", # https://github.com/emscripten-core/emsdk/issues/807 6cb93a386Sopenharmony_ci "--bind", # Compiles the source code using the Embind bindings to connect C/C++ and JavaScript 7cb93a386Sopenharmony_ci "-s ALLOW_MEMORY_GROWTH=1", 8cb93a386Sopenharmony_ci "-s USE_PTHREADS=0", # Disable pthreads 9cb93a386Sopenharmony_ci "-s ASSERTIONS=0", # Turn off assertions 10cb93a386Sopenharmony_ci "-s MODULARIZE=1", 11cb93a386Sopenharmony_ci "-s EXPORT_NAME=WebGPUKitInit", 12cb93a386Sopenharmony_ci "-s DISABLE_EXCEPTION_CATCHING=1", # Disable all exception catching 13cb93a386Sopenharmony_ci "-s NODEJS_CATCH_EXIT=0", # We don't have a 'main' so disable exit() catching 14cb93a386Sopenharmony_ci "-s WASM=1", 15cb93a386Sopenharmony_ci "-s USE_WEBGPU=1", 16cb93a386Sopenharmony_ci] 17cb93a386Sopenharmony_ci 18cb93a386Sopenharmony_ciRELEASE_OPTS = [ 19cb93a386Sopenharmony_ci "--closure 1", # Run the closure compiler 20cb93a386Sopenharmony_ci] 21cb93a386Sopenharmony_ci 22cb93a386Sopenharmony_ciDEBUG_OPTS = [ 23cb93a386Sopenharmony_ci "--closure 0", # Do not use closure 24cb93a386Sopenharmony_ci] 25cb93a386Sopenharmony_ci 26cb93a386Sopenharmony_ciconfig_setting( 27cb93a386Sopenharmony_ci name = "release_opts", 28cb93a386Sopenharmony_ci values = {"compilation_mode": "opt"}, 29cb93a386Sopenharmony_ci) 30cb93a386Sopenharmony_ci 31cb93a386Sopenharmony_ciconfig_setting( 32cb93a386Sopenharmony_ci name = "debug_opts", 33cb93a386Sopenharmony_ci values = {"compilation_mode": "dbg"}, 34cb93a386Sopenharmony_ci) 35cb93a386Sopenharmony_ci 36cb93a386Sopenharmony_cicc_binary( 37cb93a386Sopenharmony_ci name = "hello-world", 38cb93a386Sopenharmony_ci srcs = ["bindings.cpp"], 39cb93a386Sopenharmony_ci linkopts = select({ 40cb93a386Sopenharmony_ci ":debug_opts": BASE_LINKOPTS + DEBUG_OPTS, 41cb93a386Sopenharmony_ci ":release_opts": BASE_LINKOPTS + RELEASE_OPTS, 42cb93a386Sopenharmony_ci "//conditions:default": BASE_LINKOPTS + RELEASE_OPTS, 43cb93a386Sopenharmony_ci }), 44cb93a386Sopenharmony_ci # This target won't build successfully on its own because of missing emscripten 45cb93a386Sopenharmony_ci # headers etc. Therefore, we hide it from wildcards. 46cb93a386Sopenharmony_ci tags = ["manual"], 47cb93a386Sopenharmony_ci) 48cb93a386Sopenharmony_ci 49cb93a386Sopenharmony_ciwasm_cc_binary( 50cb93a386Sopenharmony_ci name = "hello-world-wasm", 51cb93a386Sopenharmony_ci cc_target = ":hello-world", 52cb93a386Sopenharmony_ci) 53