https://github.com/anutosh491 updated https://github.com/llvm/llvm-project/pull/229715
>From 88caae3b521dcc19a65cdcf778d69cf02bd0a769 Mon Sep 17 00:00:00 2001 From: anutosh491 <[email protected]> Date: Wed, 7 Oct 2026 15:38:55 +0530 Subject: [PATCH] [CMake] Honor symbol export lists for Emscripten Use --export for Emscripten symbol lists and enable libclang's generic export list. --- clang/tools/libclang/CMakeLists.txt | 2 +- llvm/cmake/modules/AddLLVM.cmake | 13 +++++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/clang/tools/libclang/CMakeLists.txt b/clang/tools/libclang/CMakeLists.txt index 38f577499dd22e..0f78e2913b4ef9 100644 --- a/clang/tools/libclang/CMakeLists.txt +++ b/clang/tools/libclang/CMakeLists.txt @@ -95,7 +95,7 @@ if(MSVC) set(LLVM_EXPORTED_SYMBOL_FILE) endif() -if (UNIX AND NOT APPLE AND NOT "${CMAKE_SYSTEM_NAME}" MATCHES "AIX" AND NOT CYGWIN) +if (UNIX AND NOT APPLE AND NOT "${CMAKE_SYSTEM_NAME}" MATCHES "AIX|Emscripten" AND NOT CYGWIN) set(LLVM_EXPORTED_SYMBOL_FILE) set(USE_VERSION_SCRIPT ${LLVM_HAVE_LINK_VERSION_SCRIPT}) endif() diff --git a/llvm/cmake/modules/AddLLVM.cmake b/llvm/cmake/modules/AddLLVM.cmake index 3169756c0f28af..8f71a9f9b7086d 100644 --- a/llvm/cmake/modules/AddLLVM.cmake +++ b/llvm/cmake/modules/AddLLVM.cmake @@ -164,6 +164,19 @@ function(add_llvm_symbol_exports target_name export_file) set(native_export_file "${export_file}") set_property(TARGET ${target_name} APPEND_STRING PROPERTY LINK_FLAGS " -Wl,-bE:${export_file}") + elseif(CMAKE_SYSTEM_NAME STREQUAL "Emscripten") + # wasm-ld uses explicit exports, not ELF version scripts. These also + # pull the exported API definitions out of static dependency archives. + set(native_export_file "${target_name}.exports") + add_custom_command(OUTPUT ${native_export_file} + COMMAND sed -e "s/^/-Wl,--export=/" < ${export_file} > ${native_export_file} + DEPENDS ${export_file} + VERBATIM + COMMENT "Creating export file for ${target_name}") + # Forward each response-file entry through the Emscripten driver. + set_property(TARGET ${target_name} APPEND PROPERTY + LINK_OPTIONS "-Wl,--no-export-dynamic" + "@${CMAKE_CURRENT_BINARY_DIR}/${native_export_file}") elseif(LLVM_HAVE_LINK_VERSION_SCRIPT) # Gold and BFD ld require a version script rather than a plain list. set(native_export_file "${target_name}.exports") _______________________________________________ cfe-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
