diff options
Diffstat (limited to 'cmake/modules/AddLLVM.cmake')
-rw-r--r-- | cmake/modules/AddLLVM.cmake | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/cmake/modules/AddLLVM.cmake b/cmake/modules/AddLLVM.cmake index 2f88f585db2..5ea2024d1c8 100644 --- a/cmake/modules/AddLLVM.cmake +++ b/cmake/modules/AddLLVM.cmake @@ -580,6 +580,7 @@ function(llvm_add_library name) if(ARG_SHARED OR ARG_MODULE) llvm_externalize_debuginfo(${name}) + llvm_codesign(${name}) endif() endfunction() @@ -784,6 +785,8 @@ macro(add_llvm_executable name) # API for all shared libaries loaded by this executable. target_link_libraries(${name} PRIVATE ${LLVM_PTHREAD_LIB}) endif() + + llvm_codesign(${name}) endmacro(add_llvm_executable name) function(export_executable_symbols target) @@ -1590,6 +1593,32 @@ function(llvm_externalize_debuginfo name) endif() endfunction() +function(llvm_codesign name) + if(NOT LLVM_CODESIGNING_IDENTITY) + return() + endif() + + if(APPLE) + if(NOT CMAKE_CODESIGN) + set(CMAKE_CODESIGN xcrun codesign) + endif() + if(NOT CMAKE_CODESIGN_ALLOCATE) + execute_process( + COMMAND xcrun -f codesign_allocate + OUTPUT_STRIP_TRAILING_WHITESPACE + OUTPUT_VARIABLE CMAKE_CODESIGN_ALLOCATE + ) + endif() + add_custom_command( + TARGET ${name} POST_BUILD + COMMAND ${CMAKE_COMMAND} -E + env CODESIGN_ALLOCATE=${CMAKE_CODESIGN_ALLOCATE} + ${CMAKE_CODESIGN} -s ${LLVM_CODESIGNING_IDENTITY} + $<TARGET_FILE:${name}> + ) + endif() +endfunction() + function(llvm_setup_rpath name) if(CMAKE_INSTALL_RPATH) return() |