diff options
author | Justin Bogner <mail@justinbogner.com> | 2018-07-10 17:32:48 +0000 |
---|---|---|
committer | Justin Bogner <mail@justinbogner.com> | 2018-07-10 17:32:48 +0000 |
commit | 8fa2608493e200c54fe5887c84ba4415ab6b5eff (patch) | |
tree | a970f659d39fb27e7a78e1fa171e8853445ed175 /llvm/cmake/modules/AddLLVM.cmake | |
parent | 2ad2c18b82dfda08a53917894a892d0246f5ed3c (diff) | |
download | bcm5719-llvm-8fa2608493e200c54fe5887c84ba4415ab6b5eff.tar.gz bcm5719-llvm-8fa2608493e200c54fe5887c84ba4415ab6b5eff.zip |
[CMake] Teach the build system to codesign built products
Automatically codesign all executables and dynamic libraries if a
codesigning identity is given (via LLVM_CODESIGNING_IDENTITY). This
option is darwin only for now.
Also update platforms/iOS.cmake to pick up the right versions of
codesign and codesign_allocate.
llvm-svn: 336708
Diffstat (limited to 'llvm/cmake/modules/AddLLVM.cmake')
-rw-r--r-- | llvm/cmake/modules/AddLLVM.cmake | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/llvm/cmake/modules/AddLLVM.cmake b/llvm/cmake/modules/AddLLVM.cmake index 2f88f585db2..5ea2024d1c8 100644 --- a/llvm/cmake/modules/AddLLVM.cmake +++ b/llvm/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() |