Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
57 changes: 43 additions & 14 deletions cmake/install/InstallDependency.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -106,18 +106,26 @@ function(install_dependency)
endif()

if(CMAKE_HOST_SYSTEM_NAME STREQUAL "Windows")
# exclude windows API earlier
# exclude common dll
if(NOT arg_PRE_EXCLUDE_REGEXES)
list(APPEND arg_PRE_EXCLUDE_REGEXES "api-ms-.*" "ext-ms-.*"
"KERNEL32.dll")
list(
APPEND
arg_PRE_EXCLUDE_REGEXES
"api-ms-.*"
"ext-ms-.*"
"KERNEL32.*"
"python.*"
"msvcp.*"
"vcruntime.*"
"concrt.*")
endif()

# exclude system dlls directories later
if(NOT arg_POST_EXCLUDE_REGEXES)
list(APPEND arg_POST_EXCLUDE_REGEXES "WINDOWS" "system32")
endif()
else()
# exclude windows API earlier
# exclude system libs earlier
if(NOT arg_PRE_EXCLUDE_REGEXES)
list(
APPEND
Expand Down Expand Up @@ -154,6 +162,20 @@ function(install_dependency)
endif()
endif()

if(CMAKE_HOST_SYSTEM_NAME MATCHES [[Linux]] AND EXISTS "/etc/alpine-release")
find_program(_ldconfig ldconfig)
execute_process(COMMAND ldconfig -v -N -X RESULT_VARIABLE ldconfig_result)

if(NOT ldconfig_result EQUAL "0")
message(STATUS "Patch ldconfig in alpine for GET_RUNTIME_DEPENDENCIES")
file(READ "${_ldconfig}" _ldconfig_content)
string(REPLACE [[[ $# -gt 0 ] && scan_dirs]]
[[[ $# -eq 0 ] && exit 0 || [ $# -gt 0 ] && scan_dirs]]
_ldconfig_content "${_ldconfig_content}")
file(WRITE "${_ldconfig}" "${_ldconfig_content}")
endif()
endif()

install(CODE "set(arg_DIRECTORIES \"${arg_DIRECTORIES}\")")
install(CODE "set(arg_PRE_EXCLUDE_REGEXES \"${arg_PRE_EXCLUDE_REGEXES}\")")
install(CODE "set(arg_POST_EXCLUDE_REGEXES \"${arg_POST_EXCLUDE_REGEXES}\")")
Expand Down Expand Up @@ -209,10 +231,14 @@ function(install_dependency)
if(_r_deps)
message(STATUS "Resolved dependencies: ${_r_deps}")
foreach(_file ${_r_deps})
file(
INSTALL
DESTINATION "${arg_DEPENDS_DESTINATION}"
TYPE SHARED_LIBRARY FOLLOW_SYMLINK_CHAIN FILES "${_file}")
if(EXISTS "${_file}")
file(
INSTALL
DESTINATION "${arg_DEPENDS_DESTINATION}"
TYPE SHARED_LIBRARY FOLLOW_SYMLINK_CHAIN FILES "${_file}")
else()
message(WARNING "Found a non-existent dependency: ${_file}")
endif()
endforeach()
endif()

Expand All @@ -230,15 +256,18 @@ function(install_dependency)
set(_c_file_list ${_c_deps_${_filename}})
message(STATUS "conflict ${_filename} list ${_c_file_list}")
foreach(_file ${_c_file_list})
file(
INSTALL
DESTINATION "${arg_DEPENDS_DESTINATION}"
TYPE SHARED_LIBRARY FOLLOW_SYMLINK_CHAIN FILES "${_file}")
if(EXISTS "${_file}")
file(
INSTALL
DESTINATION "${arg_DEPENDS_DESTINATION}"
TYPE SHARED_LIBRARY FOLLOW_SYMLINK_CHAIN FILES "${_file}")
else()
message(WARNING "Found a non-existent conflict dependency: ${_file}")
endif()
endforeach()
endforeach()
endif()

]])
]])
endif()
endforeach()

Expand Down