Index: CMakeLists.txt =================================================================== --- CMakeLists.txt +++ CMakeLists.txt @@ -429,6 +429,9 @@ option(LLVM_EXTERNALIZE_DEBUGINFO "Generate dSYM files and strip executables and libraries (Darwin Only)" OFF) +option(LLVM_CODESIGNING_IDENTITY + "Sign executables and dylibs with the given identity (Darwin Only)" OFF) + # If enabled, verify we are on a platform that supports oprofile. if( LLVM_USE_OPROFILE ) if( NOT CMAKE_SYSTEM_NAME MATCHES "Linux" ) Index: cmake/modules/AddLLVM.cmake =================================================================== --- cmake/modules/AddLLVM.cmake +++ cmake/modules/AddLLVM.cmake @@ -580,6 +580,7 @@ if(ARG_SHARED OR ARG_MODULE) llvm_externalize_debuginfo(${name}) + llvm_codesign(${name}) endif() endfunction() @@ -784,6 +785,8 @@ # 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,23 @@ 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() + add_custom_command( + TARGET ${name} POST_BUILD + COMMAND ${CMAKE_CODESIGN} -s ${LLVM_CODESIGNING_IDENTITY} + $ + ) + endif() +endfunction() + function(llvm_setup_rpath name) if(CMAKE_INSTALL_RPATH) return()