From ed1749956bee2328bd96d9be7a1587be59d3e288 Mon Sep 17 00:00:00 2001 From: gouzi <530971494@qq.com> Date: Tue, 24 Feb 2026 14:36:08 +0800 Subject: [PATCH 1/2] fix: macos dynamic link --- src/torchcodec/_core/CMakeLists.txt | 53 ++++++++++++++++++++++++++--- 1 file changed, 49 insertions(+), 4 deletions(-) diff --git a/src/torchcodec/_core/CMakeLists.txt b/src/torchcodec/_core/CMakeLists.txt index f6a02596a..bd29041af 100644 --- a/src/torchcodec/_core/CMakeLists.txt +++ b/src/torchcodec/_core/CMakeLists.txt @@ -8,12 +8,50 @@ find_package(pybind11 REQUIRED) #find_package(Torch REQUIRED) set(TORCH_CXX_FLAGS "") +function(resolve_paddle_library out_var) + foreach(candidate IN LISTS ARGN) + if(EXISTS "${candidate}") + set(${out_var} "${candidate}" PARENT_SCOPE) + return() + endif() + endforeach() + message(FATAL_ERROR "Unable to locate Paddle library for ${out_var}. Tried: ${ARGN}") +endfunction() + +if(APPLE) + # Paddle on macOS ships libpaddle as .so, while runtime deps are .dylib. + set(PADDLE_LIBPADDLE_CANDIDATES "${PADDLE_PATH}/base/libpaddle.so") + set(PADDLE_LIBCOMMON_CANDIDATES "${PADDLE_PATH}/libs/libcommon.dylib") + set(PADDLE_LIBPHI_CORE_CANDIDATES "${PADDLE_PATH}/libs/libphi_core.dylib") +elseif(WIN32) + set(PADDLE_LIBPADDLE_CANDIDATES + "${PADDLE_PATH}/base/libpaddle.dll" + "${PADDLE_PATH}/base/libpaddle.lib" + ) + set(PADDLE_LIBCOMMON_CANDIDATES + "${PADDLE_PATH}/libs/libcommon.dll" + "${PADDLE_PATH}/libs/common.dll" + ) + set(PADDLE_LIBPHI_CORE_CANDIDATES + "${PADDLE_PATH}/libs/libphi_core.dll" + "${PADDLE_PATH}/libs/phi_core.dll" + ) +else() + set(PADDLE_LIBPADDLE_CANDIDATES "${PADDLE_PATH}/base/libpaddle.so") + set(PADDLE_LIBCOMMON_CANDIDATES "${PADDLE_PATH}/libs/libcommon.so") + set(PADDLE_LIBPHI_CORE_CANDIDATES "${PADDLE_PATH}/libs/libphi_core.so") +endif() + +resolve_paddle_library(PADDLE_LIBPADDLE ${PADDLE_LIBPADDLE_CANDIDATES}) +resolve_paddle_library(PADDLE_LIBCOMMON ${PADDLE_LIBCOMMON_CANDIDATES}) +resolve_paddle_library(PADDLE_LIBPHI_CORE ${PADDLE_LIBPHI_CORE_CANDIDATES}) + set( TORCH_LIBRARIES - "${PADDLE_PATH}/base/libpaddle.so" - "${PADDLE_PATH}/libs/libcommon.so" + "${PADDLE_LIBPADDLE}" + "${PADDLE_LIBCOMMON}" # "${PADDLE_PATH}/libs/libphi.so" # currently libphi.so is static linked, we need remove it when it's shared linked - "${PADDLE_PATH}/libs/libphi_core.so" + "${PADDLE_LIBPHI_CORE}" ) set( TORCH_INSTALL_PREFIX @@ -82,9 +120,16 @@ function(make_torchcodec_sublibrary ${library_name} PUBLIC ${library_dependencies} - "-Wl,--as-needed" ) + if(UNIX AND NOT APPLE) + target_link_options( + ${library_name} + PUBLIC + "-Wl,--as-needed" + ) + endif() + endfunction() function(make_torchcodec_libraries From d249d96fee54ae0ff61eb2a90cf76c971428af96 Mon Sep 17 00:00:00 2001 From: gouzi <530971494@qq.com> Date: Wed, 25 Feb 2026 15:43:52 +0800 Subject: [PATCH 2/2] fix macos dynamic link error --- src/torchcodec/_core/CMakeLists.txt | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/torchcodec/_core/CMakeLists.txt b/src/torchcodec/_core/CMakeLists.txt index bd29041af..7f698fd73 100644 --- a/src/torchcodec/_core/CMakeLists.txt +++ b/src/torchcodec/_core/CMakeLists.txt @@ -130,6 +130,14 @@ function(make_torchcodec_sublibrary ) endif() + if(APPLE) + target_link_options( + ${library_name} + PUBLIC + "LINKER:-undefined,dynamic_lookup" + ) + endif() + endfunction() function(make_torchcodec_libraries