From 2954beaaa6beabe4e3c76c719ec51dc595bd4e34 Mon Sep 17 00:00:00 2001 From: Arun Sharma Date: Fri, 10 Apr 2026 10:40:21 -0700 Subject: [PATCH 1/2] Link Python extension to explicit precompiled lib path --- CMakeLists.txt | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index cef4e51..bbe1ce6 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -33,9 +33,18 @@ set_target_properties(_lbug RUNTIME_OUTPUT_DIRECTORY "${PROJECT_SOURCE_DIR}/build/ladybug" ARCHIVE_OUTPUT_DIRECTORY "${PROJECT_SOURCE_DIR}/build/ladybug") -target_link_libraries(_lbug - PRIVATE - lbug) +if(LBUG_API_USE_PRECOMPILED_LIB) + if(NOT LBUG_API_PRECOMPILED_LIB_PATH) + message(FATAL_ERROR "LBUG_API_PRECOMPILED_LIB_PATH must be set when LBUG_API_USE_PRECOMPILED_LIB is enabled.") + endif() + target_link_libraries(_lbug + PRIVATE + ${LBUG_API_PRECOMPILED_LIB_PATH}) +else() + target_link_libraries(_lbug + PRIVATE + lbug) +endif() target_include_directories( _lbug From 7be676a53b63bc05dc6b0e1f7d2e3c10ca98e59d Mon Sep 17 00:00:00 2001 From: Arun Sharma Date: Fri, 10 Apr 2026 12:07:11 -0700 Subject: [PATCH 2/2] ci: fix windows linker error --- CMakeLists.txt | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index bbe1ce6..1444c6b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -39,7 +39,16 @@ if(LBUG_API_USE_PRECOMPILED_LIB) endif() target_link_libraries(_lbug PRIVATE - ${LBUG_API_PRECOMPILED_LIB_PATH}) + ${LBUG_API_PRECOMPILED_LIB_PATH} + # lbug_link_deps carries all third-party static libs (utf8proc, re2, + # antlr4, zstd, …) that lbug.lib references but does not bundle on + # Windows. On Linux/macOS the precompiled liblbug.a is a fat archive + # with those objects already merged in, so this is a no-op there. + lbug_link_deps) + # The precompiled lib is always a static archive. Without LBUG_STATIC_DEFINE, + # api.h decorates every LBUG_API symbol with __declspec(dllimport) on Windows, + # which causes LNK2001 unresolved-symbol errors because no DLL is present. + target_compile_definitions(_lbug PRIVATE LBUG_STATIC_DEFINE) else() target_link_libraries(_lbug PRIVATE