Skip to content

Conversation

@andrurogerz
Copy link
Contributor

Overview

Annotate the llvm::opt::OptTable and llvm::opt::GenericOptTable classes so they are explicitly included in LLVM's public interface. When building LLVM as a Windows DLL, this annotation exports OptTable's and GenericOptTable's public methods from the DLL.

Background

This change is required as part of the overall project to build LLVM as a Windows DLL described in #109483. Without this change, LLVM tools fail to link.

Validation

Built LLVM with MSVC on Windows 11:

cmake -B build -S llvm -G Ninja -DCMAKE_BUILD_TYPE=Debug -DLLVM_ENABLE_PROJECTS="clang" -DLLVM_OPTIMIZED_TABLEGEN -DLLVM_BUILD_LLVM_DYLIB=ON -DLLVM_BUILD_LLVM_DYLIB_VIS=ON -DLLVM_LINK_LLVM_DYLIB=ON -DCLANG_LINK_CLANG_DYLIB=ON
ninja -C build llvm-rc llvm-ar

Verified the annotated interface no longer appears in the list of unresolved external symbols.

@andrurogerz andrurogerz changed the title DLLExport OptTable and GenericOptTable [llvm] DLLExport OptTable and GenericOptTable Feb 20, 2025
@nikic
Copy link
Contributor

nikic commented Feb 20, 2025

Do not submit these one by one. Consolidating on the discussion in #127850.

@nikic nikic closed this Feb 20, 2025
@andrurogerz andrurogerz deleted the DLLExport-OptTable branch February 26, 2025 01:28
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants