From f2b2bac85d64851a4454db142aa5656d728a79b1 Mon Sep 17 00:00:00 2001 From: Brad King Date: Wed, 17 Sep 2025 14:01:34 -0400 Subject: [PATCH] Emscripten: Detect and identify linker invoked by the compiler driver --- Modules/CMakeParseImplicitLinkInfo.cmake | 3 ++ Modules/Platform/Linker/Emscripten-C.cmake | 1 + Modules/Platform/Linker/Emscripten-CXX.cmake | 1 + .../emscripten-C-Clang-21.0.0.input | 46 ++++++++++++++++++ .../emscripten-CXX-Clang-21.0.0.input | 48 +++++++++++++++++++ .../ParseImplicitLinkInfo.cmake | 1 + .../results/emscripten-C-Clang-21.0.0.output | 4 ++ .../emscripten-CXX-Clang-21.0.0.output | 4 ++ 8 files changed, 108 insertions(+) create mode 100644 Tests/RunCMake/ParseImplicitData/emscripten-C-Clang-21.0.0.input create mode 100644 Tests/RunCMake/ParseImplicitData/emscripten-CXX-Clang-21.0.0.input create mode 100644 Tests/RunCMake/ParseImplicitLinkInfo/results/emscripten-C-Clang-21.0.0.output create mode 100644 Tests/RunCMake/ParseImplicitLinkInfo/results/emscripten-CXX-Clang-21.0.0.output diff --git a/Modules/CMakeParseImplicitLinkInfo.cmake b/Modules/CMakeParseImplicitLinkInfo.cmake index e95a68ba68..1b16a68acc 100644 --- a/Modules/CMakeParseImplicitLinkInfo.cmake +++ b/Modules/CMakeParseImplicitLinkInfo.cmake @@ -71,6 +71,9 @@ function(cmake_parse_implicit_link_info2 text log_var obj_regex) if(is_cray) string(APPEND linker "|cce_omp_offload_linker") endif() + if(CMAKE_SYSTEM_NAME STREQUAL "Emscripten") + string(APPEND linker "|wasm-ld") + endif() if(CMAKE_LINKER) get_filename_component(default_linker ${CMAKE_LINKER} NAME) if (NOT default_linker MATCHES "(${linker})") diff --git a/Modules/Platform/Linker/Emscripten-C.cmake b/Modules/Platform/Linker/Emscripten-C.cmake index dfef6a3d7b..481f950a59 100644 --- a/Modules/Platform/Linker/Emscripten-C.cmake +++ b/Modules/Platform/Linker/Emscripten-C.cmake @@ -1,4 +1,5 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file LICENSE.rst or https://cmake.org/licensing for details. +# LLD is the default linker include(Platform/Linker/Emscripten-LLD-C) diff --git a/Modules/Platform/Linker/Emscripten-CXX.cmake b/Modules/Platform/Linker/Emscripten-CXX.cmake index 90bb8205da..7d8203e6ee 100644 --- a/Modules/Platform/Linker/Emscripten-CXX.cmake +++ b/Modules/Platform/Linker/Emscripten-CXX.cmake @@ -1,4 +1,5 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file LICENSE.rst or https://cmake.org/licensing for details. +# LLD is the default linker include(Platform/Linker/Emscripten-LLD-CXX) diff --git a/Tests/RunCMake/ParseImplicitData/emscripten-C-Clang-21.0.0.input b/Tests/RunCMake/ParseImplicitData/emscripten-C-Clang-21.0.0.input new file mode 100644 index 0000000000..e51a4001cc --- /dev/null +++ b/Tests/RunCMake/ParseImplicitData/emscripten-C-Clang-21.0.0.input @@ -0,0 +1,46 @@ +CMAKE_LANG=C +CMAKE_LINKER=/usr/bin/ld +CMAKE_C_COMPILER_ABI= +CMAKE_C_COMPILER_AR=CMAKE_C_COMPILER_AR-NOTFOUND +CMAKE_C_COMPILER_ARCHITECTURE_ID= +CMAKE_C_COMPILER_EXTERNAL_TOOLCHAIN= +CMAKE_C_COMPILER_ID=Clang +CMAKE_C_COMPILER_LAUNCHER= +CMAKE_C_COMPILER_LOADED=1 +CMAKE_C_COMPILER_RANLIB=CMAKE_C_COMPILER_RANLIB-NOTFOUND +CMAKE_C_COMPILER_TARGET= +CMAKE_C_COMPILER_VERSION=21.0.0 +CMAKE_C_COMPILER_VERSION_INTERNAL= +CMAKE_SYSTEM_NAME=Emscripten +Change Dir: '/tmp/ii/CMakeFiles/CMakeTmp' + +Run Build Command(s): /tmp/CMake/bin/cmake -E env VERBOSE=1 /usr/bin/gmake -f Makefile cmTC_81beb/fast +/usr/bin/gmake -f CMakeFiles/cmTC_81beb.dir/build.make CMakeFiles/cmTC_81beb.dir/build +gmake[1]: Entering directory '/tmp/ii/CMakeFiles/CMakeTmp' +Building C object CMakeFiles/cmTC_81beb.dir/CMakeCCompilerABI.c.o +/opt/emsdk/upstream/emscripten/emcc -c /tmp/CMake-vesper/Modules/CMakeCCompilerABI.c -v -MD -MT CMakeFiles/cmTC_81beb.dir/CMakeCCompilerABI.c.o -MF CMakeFiles/cmTC_81beb.dir/CMakeCCompilerABI.c.o.d -o CMakeFiles/cmTC_81beb.dir/CMakeCCompilerABI.c.o -fPIC + /opt/emsdk/upstream/bin/clang -target wasm32-unknown-emscripten -fignore-exceptions -fvisibility=default -mllvm -combiner-global-alias-analysis=false -mllvm -enable-emscripten-sjlj -mllvm -disable-lsr --sysroot=/opt/emsdk/upstream/emscripten/cache/sysroot -DEMSCRIPTEN -Xclang -iwithsysroot/include/fakesdl -Xclang -iwithsysroot/include/compat -c /tmp/CMake-vesper/Modules/CMakeCCompilerABI.c -v -MD -MT CMakeFiles/cmTC_81beb.dir/CMakeCCompilerABI.c.o -MF CMakeFiles/cmTC_81beb.dir/CMakeCCompilerABI.c.o.d -oCMakeFiles/cmTC_81beb.dir/CMakeCCompilerABI.c.o -fPIC +clang version 21.0.0git (https:/github.com/llvm/llvm-project 2f05451198e2f222ec66cec4892ada0509519290) +Target: wasm32-unknown-emscripten +Thread model: posix +InstalledDir: /opt/emsdk/upstream/bin + (in-process) + "/opt/emsdk/upstream/bin/clang-21" -cc1 -triple wasm32-unknown-emscripten -emit-obj -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name CMakeCCompilerABI.c -mrelocation-model pic -pic-level 2 -mframe-pointer=none -ffp-contract=on -fno-rounding-math -mconstructor-aliases -target-feature +mutable-globals -target-cpu generic -debugger-tuning=gdb -fdebug-compilation-dir=/tmp/ii/CMakeFiles/CMakeTmp -v -fcoverage-compilation-dir=/tmp/ii/CMakeFiles/CMakeTmp -resource-dir /opt/emsdk/upstream/lib/clang/21 -dependency-file CMakeFiles/cmTC_81beb.dir/CMakeCCompilerABI.c.o.d -MT CMakeFiles/cmTC_81beb.dir/CMakeCCompilerABI.c.o -sys-header-deps -D EMSCRIPTEN -isysroot /opt/emsdk/upstream/emscripten/cache/sysroot -internal-isystem /opt/emsdk/upstream/lib/clang/21/include -internal-isystem /opt/emsdk/upstream/emscripten/cache/sysroot/include/wasm32-emscripten -internal-isystem /opt/emsdk/upstream/emscripten/cache/sysroot/include -ferror-limit 19 -fvisibility=default -fgnuc-version=4.2.1 -fskip-odr-check-in-gmf -fignore-exceptions -iwithsysroot/include/fakesdl -iwithsysroot/include/compat -mllvm -combiner-global-alias-analysis=false -mllvm -enable-emscripten-sjlj -mllvm -disable-lsr -o CMakeFiles/cmTC_81beb.dir/CMakeCCompilerABI.c.o -x c /tmp/CMake-vesper/Modules/CMakeCCompilerABI.c +clang -cc1 version 21.0.0git based upon LLVM 21.0.0git default target x86_64-unknown-linux-gnu +ignoring nonexistent directory "/opt/emsdk/upstream/emscripten/cache/sysroot/include/wasm32-emscripten" +#include "..." search starts here: +#include <...> search starts here: + /opt/emsdk/upstream/emscripten/cache/sysroot/include/fakesdl + /opt/emsdk/upstream/emscripten/cache/sysroot/include/compat + /opt/emsdk/upstream/lib/clang/21/include + /opt/emsdk/upstream/emscripten/cache/sysroot/include +End of search list. +Linking C executable cmTC_81beb.js +/tmp/CMake/bin/cmake -E cmake_link_script CMakeFiles/cmTC_81beb.dir/link.txt --verbose=1 + /opt/emsdk/upstream/bin/clang --version + /opt/emsdk/upstream/bin/wasm-ld -o cmTC_81beb.wasm CMakeFiles/cmTC_81beb.dir/CMakeCCompilerABI.c.o -L/opt/emsdk/upstream/emscripten/cache/sysroot/lib/wasm32-emscripten/pic -L/opt/emsdk/upstream/emscripten/src/lib -lGL-getprocaddr -lal -lhtml5 -lstubs-debug -lnoexit -lc-debug -ldlmalloc-debug -lcompiler_rt -lc++-noexcept -lc++abi-debug-noexcept -lsockets -mllvm -combiner-global-alias-analysis=false -mllvm -enable-emscripten-sjlj -mllvm -disable-lsr --export-if-defined=setThrew --export-if-defined=_emscripten_stack_restore --export-if-defined=emscripten_stack_get_current --export-if-defined=_emscripten_find_dylib --export-if-defined=strerror --export-if-defined=_emscripten_stack_alloc --export-if-defined=calloc --export-if-defined=_emscripten_tempret_get --export-if-defined=_emscripten_tempret_set --export-if-defined=htons --export-if-defined=ntohs --export-if-defined=malloc --export-if-defined=htonl --export-if-defined=_emscripten_timeout --export-if-defined=emscripten_stack_get_base --export-if-defined=emscripten_stack_get_end --export-if-defined=free --export-if-defined=__cxa_can_catch --export-if-defined=__cxa_increment_exception_refcount --export-if-defined=__cxa_get_exception_ptr --export-if-defined=__cxa_decrement_exception_refcount --export-if-defined=fileno --export-if-defined=emscripten_builtin_memalign --export-if-defined=__dl_seterr --export-if-defined=memcmp --export-if-defined=memcpy --export-if-defined=realloc --export-if-defined=__cxa_demangle /tmp/tmp1zud6s0hlibemscripten_js_symbols.so --import-memory --strip-debug --export=emscripten_stack_get_end --export=emscripten_stack_get_free --export=emscripten_stack_get_base --export=emscripten_stack_get_current --export=emscripten_stack_set_limits --export=_emscripten_stack_alloc --export=__wasm_call_ctors --export=setThrew --export=_emscripten_stack_restore --export=_emscripten_find_dylib --export=strerror --export=calloc --export=_emscripten_tempret_get --export=_emscripten_tempret_set --export=htons --export=ntohs --export=malloc --export=htonl --export=_emscripten_timeout --export=free --export=__cxa_can_catch --export=__cxa_increment_exception_refcount --export=__cxa_get_exception_ptr --export=__cxa_decrement_exception_refcount --export=fileno --export=emscripten_builtin_memalign --export=__dl_seterr --export=memcmp --export=memcpy --export=realloc --export=__cxa_demangle --export-if-defined=__start_em_asm --export-if-defined=__stop_em_asm --export-if-defined=__start_em_lib_deps --export-if-defined=__stop_em_lib_deps --export-if-defined=__start_em_js --export-if-defined=__stop_em_js --export-if-defined=main --export-if-defined=__main_argc_argv --export-if-defined=__wasm_apply_data_relocs --export-if-defined=fflush --experimental-pic --unresolved-symbols=import-dynamic -pie --no-export-dynamic -z stack-size=65536 --no-growable-memory --initial-memory=16777216 --no-entry --stack-first + /opt/emsdk/upstream/bin/wasm-ld -o cmTC_81beb.wasm --whole-archive CMakeFiles/cmTC_81beb.dir/CMakeCCompilerABI.c.o -L/opt/emsdk/upstream/emscripten/cache/sysroot/lib/wasm32-emscripten/pic -L/opt/emsdk/upstream/emscripten/src/lib -lGL-getprocaddr -lal -lhtml5 -lstubs-debug -lnoexit -lc-debug -ldlmalloc-debug -lcompiler_rt -lc++-noexcept -lc++abi-debug-noexcept -lsockets --no-whole-archive -mllvm -combiner-global-alias-analysis=false -mllvm -enable-emscripten-sjlj -mllvm -disable-lsr --export-if-defined=setThrew --export-if-defined=_emscripten_stack_restore --export-if-defined=emscripten_stack_get_current --export-if-defined=_emscripten_find_dylib --export-if-defined=strerror --export-if-defined=_emscripten_stack_alloc --export-if-defined=calloc --export-if-defined=_emscripten_tempret_get --export-if-defined=_emscripten_tempret_set --export-if-defined=htons --export-if-defined=ntohs --export-if-defined=malloc --export-if-defined=htonl --export-if-defined=_emscripten_timeout --export-if-defined=emscripten_stack_get_base --export-if-defined=emscripten_stack_get_end --export-if-defined=free --export-if-defined=__cxa_can_catch --export-if-defined=__cxa_increment_exception_refcount --export-if-defined=__cxa_get_exception_ptr --export-if-defined=__cxa_decrement_exception_refcount --export-if-defined=fileno --export-if-defined=emscripten_builtin_memalign --export-if-defined=__dl_seterr --export-if-defined=memcmp --export-if-defined=memcpy --export-if-defined=realloc --export-if-defined=__cxa_demangle /tmp/tmpao9mlogllibemscripten_js_symbols.so --import-memory --strip-debug --export-dynamic --export=emscripten_stack_get_end --export=emscripten_stack_get_free --export=emscripten_stack_get_base --export=emscripten_stack_get_current --export=emscripten_stack_set_limits --export=_emscripten_stack_alloc --export=__wasm_call_ctors --export=setThrew --export=_emscripten_stack_restore --export=_emscripten_find_dylib --export=strerror --export=calloc --export=_emscripten_tempret_get --export=_emscripten_tempret_set --export=htons --export=ntohs --export=malloc --export=htonl --export=_emscripten_timeout --export=free --export=__cxa_can_catch --export=__cxa_increment_exception_refcount --export=__cxa_get_exception_ptr --export=__cxa_decrement_exception_refcount --export=fileno --export=emscripten_builtin_memalign --export=__dl_seterr --export=memcmp --export=memcpy --export=realloc --export=__cxa_demangle --export-if-defined=__start_em_asm --export-if-defined=__stop_em_asm --export-if-defined=__start_em_lib_deps --export-if-defined=__stop_em_lib_deps --export-if-defined=__start_em_js --export-if-defined=__stop_em_js --export-if-defined=main --export-if-defined=__main_argc_argv --export-if-defined=__wasm_apply_data_relocs --export-if-defined=fflush --experimental-pic --unresolved-symbols=import-dynamic -pie -z stack-size=65536 --no-growable-memory --initial-memory=16777216 --no-entry --stack-first + /opt/emsdk/upstream/bin/llvm-objcopy cmTC_81beb.wasm cmTC_81beb.wasm '--remove-section=.debug*' --remove-section=producers --remove-section=name + /opt/emsdk/node/20.18.0_64bit/bin/node /opt/emsdk/upstream/emscripten/tools/compiler.mjs - +/opt/emsdk/upstream/emscripten/emcc -sMAIN_MODULE -v @CMakeFiles/cmTC_81beb.dir/objects1.rsp -o cmTC_81beb.js +gmake[1]: Leaving directory '/tmp/ii/CMakeFiles/CMakeTmp' diff --git a/Tests/RunCMake/ParseImplicitData/emscripten-CXX-Clang-21.0.0.input b/Tests/RunCMake/ParseImplicitData/emscripten-CXX-Clang-21.0.0.input new file mode 100644 index 0000000000..d6d6018c8d --- /dev/null +++ b/Tests/RunCMake/ParseImplicitData/emscripten-CXX-Clang-21.0.0.input @@ -0,0 +1,48 @@ +CMAKE_LANG=CXX +CMAKE_LINKER=/usr/bin/ld +CMAKE_CXX_COMPILER_ABI= +CMAKE_CXX_COMPILER_AR=CMAKE_CXX_COMPILER_AR-NOTFOUND +CMAKE_CXX_COMPILER_ARCHITECTURE_ID= +CMAKE_CXX_COMPILER_EXTERNAL_TOOLCHAIN= +CMAKE_CXX_COMPILER_ID=Clang +CMAKE_CXX_COMPILER_LAUNCHER= +CMAKE_CXX_COMPILER_LOADED=1 +CMAKE_CXX_COMPILER_RANLIB=CMAKE_CXX_COMPILER_RANLIB-NOTFOUND +CMAKE_CXX_COMPILER_TARGET= +CMAKE_CXX_COMPILER_VERSION=21.0.0 +CMAKE_CXX_COMPILER_VERSION_INTERNAL= +CMAKE_SYSTEM_NAME=Emscripten +Change Dir: '/tmp/ii/CMakeFiles/CMakeTmp' + +Run Build Command(s): /tmp/CMake/bin/cmake -E env VERBOSE=1 /usr/bin/gmake -f Makefile cmTC_54a8c/fast +/usr/bin/gmake -f CMakeFiles/cmTC_54a8c.dir/build.make CMakeFiles/cmTC_54a8c.dir/build +gmake[1]: Entering directory '/tmp/ii/CMakeFiles/CMakeTmp' +Building CXX object CMakeFiles/cmTC_54a8c.dir/CMakeCXXCompilerABI.cpp.o +/opt/emsdk/upstream/emscripten/em++ -c /tmp/CMake-vesper/Modules/CMakeCXXCompilerABI.cpp -v -MD -MT CMakeFiles/cmTC_54a8c.dir/CMakeCXXCompilerABI.cpp.o -MF CMakeFiles/cmTC_54a8c.dir/CMakeCXXCompilerABI.cpp.o.d -o CMakeFiles/cmTC_54a8c.dir/CMakeCXXCompilerABI.cpp.o -fPIC + "/opt/emsdk/upstream/bin/clang++" -target wasm32-unknown-emscripten -fignore-exceptions -fvisibility=default -mllvm -combiner-global-alias-analysis=false -mllvm -enable-emscripten-sjlj -mllvm -disable-lsr --sysroot=/opt/emsdk/upstream/emscripten/cache/sysroot -DEMSCRIPTEN -Xclang -iwithsysroot/include/fakesdl -Xclang -iwithsysroot/include/compat -c /tmp/CMake-vesper/Modules/CMakeCXXCompilerABI.cpp -v -MD -MT CMakeFiles/cmTC_54a8c.dir/CMakeCXXCompilerABI.cpp.o -MF CMakeFiles/cmTC_54a8c.dir/CMakeCXXCompilerABI.cpp.o.d -oCMakeFiles/cmTC_54a8c.dir/CMakeCXXCompilerABI.cpp.o -fPIC +clang version 21.0.0git (https:/github.com/llvm/llvm-project 2f05451198e2f222ec66cec4892ada0509519290) +Target: wasm32-unknown-emscripten +Thread model: posix +InstalledDir: /opt/emsdk/upstream/bin + (in-process) + "/opt/emsdk/upstream/bin/clang-21" -cc1 -triple wasm32-unknown-emscripten -emit-obj -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name CMakeCXXCompilerABI.cpp -mrelocation-model pic -pic-level 2 -mframe-pointer=none -ffp-contract=on -fno-rounding-math -mconstructor-aliases -target-feature +mutable-globals -target-cpu generic -debugger-tuning=gdb -fdebug-compilation-dir=/tmp/ii/CMakeFiles/CMakeTmp -v -fcoverage-compilation-dir=/tmp/ii/CMakeFiles/CMakeTmp -resource-dir /opt/emsdk/upstream/lib/clang/21 -dependency-file CMakeFiles/cmTC_54a8c.dir/CMakeCXXCompilerABI.cpp.o.d -MT CMakeFiles/cmTC_54a8c.dir/CMakeCXXCompilerABI.cpp.o -sys-header-deps -D EMSCRIPTEN -isysroot /opt/emsdk/upstream/emscripten/cache/sysroot -internal-isystem /opt/emsdk/upstream/emscripten/cache/sysroot/include/wasm32-emscripten/c++/v1 -internal-isystem /opt/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1 -internal-isystem /opt/emsdk/upstream/lib/clang/21/include -internal-isystem /opt/emsdk/upstream/emscripten/cache/sysroot/include/wasm32-emscripten -internal-isystem /opt/emsdk/upstream/emscripten/cache/sysroot/include -fdeprecated-macro -ferror-limit 19 -fvisibility=default -fgnuc-version=4.2.1 -fskip-odr-check-in-gmf -fcxx-exceptions -fignore-exceptions -fexceptions -iwithsysroot/include/fakesdl -iwithsysroot/include/compat -mllvm -combiner-global-alias-analysis=false -mllvm -enable-emscripten-sjlj -mllvm -disable-lsr -o CMakeFiles/cmTC_54a8c.dir/CMakeCXXCompilerABI.cpp.o -x c++ /tmp/CMake-vesper/Modules/CMakeCXXCompilerABI.cpp +clang -cc1 version 21.0.0git based upon LLVM 21.0.0git default target x86_64-unknown-linux-gnu +ignoring nonexistent directory "/opt/emsdk/upstream/emscripten/cache/sysroot/include/wasm32-emscripten/c++/v1" +ignoring nonexistent directory "/opt/emsdk/upstream/emscripten/cache/sysroot/include/wasm32-emscripten" +#include "..." search starts here: +#include <...> search starts here: + /opt/emsdk/upstream/emscripten/cache/sysroot/include/fakesdl + /opt/emsdk/upstream/emscripten/cache/sysroot/include/compat + /opt/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1 + /opt/emsdk/upstream/lib/clang/21/include + /opt/emsdk/upstream/emscripten/cache/sysroot/include +End of search list. +Linking CXX executable cmTC_54a8c.js +/tmp/CMake/bin/cmake -E cmake_link_script CMakeFiles/cmTC_54a8c.dir/link.txt --verbose=1 + /opt/emsdk/upstream/bin/clang --version + /opt/emsdk/upstream/bin/wasm-ld -o cmTC_54a8c.wasm CMakeFiles/cmTC_54a8c.dir/CMakeCXXCompilerABI.cpp.o -L/opt/emsdk/upstream/emscripten/cache/sysroot/lib/wasm32-emscripten/pic -L/opt/emsdk/upstream/emscripten/src/lib -lGL-getprocaddr -lal -lhtml5 -lstubs-debug -lnoexit -lc-debug -ldlmalloc-debug -lcompiler_rt -lc++-noexcept -lc++abi-debug-noexcept -lsockets -mllvm -combiner-global-alias-analysis=false -mllvm -enable-emscripten-sjlj -mllvm -disable-lsr --export-if-defined=setThrew --export-if-defined=_emscripten_stack_restore --export-if-defined=emscripten_stack_get_current --export-if-defined=_emscripten_find_dylib --export-if-defined=strerror --export-if-defined=_emscripten_stack_alloc --export-if-defined=calloc --export-if-defined=_emscripten_tempret_get --export-if-defined=_emscripten_tempret_set --export-if-defined=htons --export-if-defined=ntohs --export-if-defined=malloc --export-if-defined=htonl --export-if-defined=_emscripten_timeout --export-if-defined=emscripten_stack_get_base --export-if-defined=emscripten_stack_get_end --export-if-defined=free --export-if-defined=__cxa_can_catch --export-if-defined=__cxa_increment_exception_refcount --export-if-defined=__cxa_get_exception_ptr --export-if-defined=__cxa_decrement_exception_refcount --export-if-defined=fileno --export-if-defined=emscripten_builtin_memalign --export-if-defined=__dl_seterr --export-if-defined=memcmp --export-if-defined=memcpy --export-if-defined=realloc --export-if-defined=__cxa_demangle /tmp/tmp85r4uv8dlibemscripten_js_symbols.so --import-memory --strip-debug --export=emscripten_stack_get_end --export=emscripten_stack_get_free --export=emscripten_stack_get_base --export=emscripten_stack_get_current --export=emscripten_stack_set_limits --export=_emscripten_stack_alloc --export=__wasm_call_ctors --export=setThrew --export=_emscripten_stack_restore --export=_emscripten_find_dylib --export=strerror --export=calloc --export=_emscripten_tempret_get --export=_emscripten_tempret_set --export=htons --export=ntohs --export=malloc --export=htonl --export=_emscripten_timeout --export=free --export=__cxa_can_catch --export=__cxa_increment_exception_refcount --export=__cxa_get_exception_ptr --export=__cxa_decrement_exception_refcount --export=fileno --export=emscripten_builtin_memalign --export=__dl_seterr --export=memcmp --export=memcpy --export=realloc --export=__cxa_demangle --export-if-defined=__start_em_asm --export-if-defined=__stop_em_asm --export-if-defined=__start_em_lib_deps --export-if-defined=__stop_em_lib_deps --export-if-defined=__start_em_js --export-if-defined=__stop_em_js --export-if-defined=main --export-if-defined=__main_argc_argv --export-if-defined=__wasm_apply_data_relocs --export-if-defined=fflush --experimental-pic --unresolved-symbols=import-dynamic -pie --no-export-dynamic -z stack-size=65536 --no-growable-memory --initial-memory=16777216 --no-entry --stack-first + /opt/emsdk/upstream/bin/wasm-ld -o cmTC_54a8c.wasm --whole-archive CMakeFiles/cmTC_54a8c.dir/CMakeCXXCompilerABI.cpp.o -L/opt/emsdk/upstream/emscripten/cache/sysroot/lib/wasm32-emscripten/pic -L/opt/emsdk/upstream/emscripten/src/lib -lGL-getprocaddr -lal -lhtml5 -lstubs-debug -lnoexit -lc-debug -ldlmalloc-debug -lcompiler_rt -lc++-noexcept -lc++abi-debug-noexcept -lsockets --no-whole-archive -mllvm -combiner-global-alias-analysis=false -mllvm -enable-emscripten-sjlj -mllvm -disable-lsr --export-if-defined=setThrew --export-if-defined=_emscripten_stack_restore --export-if-defined=emscripten_stack_get_current --export-if-defined=_emscripten_find_dylib --export-if-defined=strerror --export-if-defined=_emscripten_stack_alloc --export-if-defined=calloc --export-if-defined=_emscripten_tempret_get --export-if-defined=_emscripten_tempret_set --export-if-defined=htons --export-if-defined=ntohs --export-if-defined=malloc --export-if-defined=htonl --export-if-defined=_emscripten_timeout --export-if-defined=emscripten_stack_get_base --export-if-defined=emscripten_stack_get_end --export-if-defined=free --export-if-defined=__cxa_can_catch --export-if-defined=__cxa_increment_exception_refcount --export-if-defined=__cxa_get_exception_ptr --export-if-defined=__cxa_decrement_exception_refcount --export-if-defined=fileno --export-if-defined=emscripten_builtin_memalign --export-if-defined=__dl_seterr --export-if-defined=memcmp --export-if-defined=memcpy --export-if-defined=realloc --export-if-defined=__cxa_demangle /tmp/tmpj30n5_1llibemscripten_js_symbols.so --import-memory --strip-debug --export-dynamic --export=emscripten_stack_get_end --export=emscripten_stack_get_free --export=emscripten_stack_get_base --export=emscripten_stack_get_current --export=emscripten_stack_set_limits --export=_emscripten_stack_alloc --export=__wasm_call_ctors --export=setThrew --export=_emscripten_stack_restore --export=_emscripten_find_dylib --export=strerror --export=calloc --export=_emscripten_tempret_get --export=_emscripten_tempret_set --export=htons --export=ntohs --export=malloc --export=htonl --export=_emscripten_timeout --export=free --export=__cxa_can_catch --export=__cxa_increment_exception_refcount --export=__cxa_get_exception_ptr --export=__cxa_decrement_exception_refcount --export=fileno --export=emscripten_builtin_memalign --export=__dl_seterr --export=memcmp --export=memcpy --export=realloc --export=__cxa_demangle --export-if-defined=__start_em_asm --export-if-defined=__stop_em_asm --export-if-defined=__start_em_lib_deps --export-if-defined=__stop_em_lib_deps --export-if-defined=__start_em_js --export-if-defined=__stop_em_js --export-if-defined=main --export-if-defined=__main_argc_argv --export-if-defined=__wasm_apply_data_relocs --export-if-defined=fflush --experimental-pic --unresolved-symbols=import-dynamic -pie -z stack-size=65536 --no-growable-memory --initial-memory=16777216 --no-entry --stack-first + /opt/emsdk/upstream/bin/llvm-objcopy cmTC_54a8c.wasm cmTC_54a8c.wasm '--remove-section=.debug*' --remove-section=producers --remove-section=name + /opt/emsdk/node/20.18.0_64bit/bin/node /opt/emsdk/upstream/emscripten/tools/compiler.mjs - +/opt/emsdk/upstream/emscripten/em++ -sMAIN_MODULE -v @CMakeFiles/cmTC_54a8c.dir/objects1.rsp -o cmTC_54a8c.js +gmake[1]: Leaving directory '/tmp/ii/CMakeFiles/CMakeTmp' diff --git a/Tests/RunCMake/ParseImplicitLinkInfo/ParseImplicitLinkInfo.cmake b/Tests/RunCMake/ParseImplicitLinkInfo/ParseImplicitLinkInfo.cmake index 46d5c8ded8..86237b154b 100644 --- a/Tests/RunCMake/ParseImplicitLinkInfo/ParseImplicitLinkInfo.cmake +++ b/Tests/RunCMake/ParseImplicitLinkInfo/ParseImplicitLinkInfo.cmake @@ -20,6 +20,7 @@ set(targets darwin-C-AppleClang-8.0.0.8000042 darwin-CXX-AppleClang-8.0.0.8000042 darwin_nostdinc-C-AppleClang-8.0.0.8000042 darwin_nostdinc-CXX-AppleClang-8.0.0.8000042 + emscripten-C-Clang-21.0.0 emscripten-CXX-Clang-21.0.0 freebsd-C-Clang-3.3.0 freebsd-CXX-Clang-3.3.0 freebsd-Fortran-GNU-4.6.4 hand-C-empty hand-CXX-empty hand-C-relative hand-CXX-relative diff --git a/Tests/RunCMake/ParseImplicitLinkInfo/results/emscripten-C-Clang-21.0.0.output b/Tests/RunCMake/ParseImplicitLinkInfo/results/emscripten-C-Clang-21.0.0.output new file mode 100644 index 0000000000..beea558f75 --- /dev/null +++ b/Tests/RunCMake/ParseImplicitLinkInfo/results/emscripten-C-Clang-21.0.0.output @@ -0,0 +1,4 @@ +libs=GL-getprocaddr;al;html5;stubs-debug;noexit;c-debug;dlmalloc-debug;compiler_rt;c\+\+-noexcept;c\+\+abi-debug-noexcept;sockets +dirs=/opt/emsdk/upstream/emscripten/cache/sysroot/lib/wasm32-emscripten/pic;/opt/emsdk/upstream/emscripten/src/lib +library_arch= +linker_tool=/opt/emsdk/upstream/bin/wasm-ld diff --git a/Tests/RunCMake/ParseImplicitLinkInfo/results/emscripten-CXX-Clang-21.0.0.output b/Tests/RunCMake/ParseImplicitLinkInfo/results/emscripten-CXX-Clang-21.0.0.output new file mode 100644 index 0000000000..beea558f75 --- /dev/null +++ b/Tests/RunCMake/ParseImplicitLinkInfo/results/emscripten-CXX-Clang-21.0.0.output @@ -0,0 +1,4 @@ +libs=GL-getprocaddr;al;html5;stubs-debug;noexit;c-debug;dlmalloc-debug;compiler_rt;c\+\+-noexcept;c\+\+abi-debug-noexcept;sockets +dirs=/opt/emsdk/upstream/emscripten/cache/sysroot/lib/wasm32-emscripten/pic;/opt/emsdk/upstream/emscripten/src/lib +library_arch= +linker_tool=/opt/emsdk/upstream/bin/wasm-ld