File tree Expand file tree Collapse file tree 3 files changed +52
-0
lines changed Expand file tree Collapse file tree 3 files changed +52
-0
lines changed Original file line number Diff line number Diff line change @@ -429,6 +429,9 @@ option(LLVM_USE_OPROFILE
429
429
option (LLVM_EXTERNALIZE_DEBUGINFO
430
430
"Generate dSYM files and strip executables and libraries (Darwin Only)" OFF )
431
431
432
+ option (LLVM_CODESIGNING_IDENTITY
433
+ "Sign executables and dylibs with the given identity (Darwin Only)" OFF )
434
+
432
435
# If enabled, verify we are on a platform that supports oprofile.
433
436
if ( LLVM_USE_OPROFILE )
434
437
if ( NOT CMAKE_SYSTEM_NAME MATCHES "Linux" )
Original file line number Diff line number Diff line change @@ -580,6 +580,7 @@ function(llvm_add_library name)
580
580
581
581
if (ARG_SHARED OR ARG_MODULE)
582
582
llvm_externalize_debuginfo(${name} )
583
+ llvm_codesign(${name} )
583
584
endif ()
584
585
endfunction ()
585
586
@@ -784,6 +785,8 @@ macro(add_llvm_executable name)
784
785
# API for all shared libaries loaded by this executable.
785
786
target_link_libraries (${name} PRIVATE ${LLVM_PTHREAD_LIB} )
786
787
endif ()
788
+
789
+ llvm_codesign(${name} )
787
790
endmacro (add_llvm_executable name )
788
791
789
792
function (export_executable_symbols target )
@@ -1590,6 +1593,32 @@ function(llvm_externalize_debuginfo name)
1590
1593
endif ()
1591
1594
endfunction ()
1592
1595
1596
+ function (llvm_codesign name )
1597
+ if (NOT LLVM_CODESIGNING_IDENTITY)
1598
+ return ()
1599
+ endif ()
1600
+
1601
+ if (APPLE )
1602
+ if (NOT CMAKE_CODESIGN)
1603
+ set (CMAKE_CODESIGN xcrun codesign)
1604
+ endif ()
1605
+ if (NOT CMAKE_CODESIGN_ALLOCATE)
1606
+ execute_process (
1607
+ COMMAND xcrun -f codesign_allocate
1608
+ OUTPUT_STRIP_TRAILING_WHITESPACE
1609
+ OUTPUT_VARIABLE CMAKE_CODESIGN_ALLOCATE
1610
+ )
1611
+ endif ()
1612
+ add_custom_command (
1613
+ TARGET ${name} POST_BUILD
1614
+ COMMAND ${CMAKE_COMMAND} -E
1615
+ env CODESIGN_ALLOCATE=${CMAKE_CODESIGN_ALLOCATE}
1616
+ ${CMAKE_CODESIGN} -s ${LLVM_CODESIGNING_IDENTITY}
1617
+ $<TARGET_FILE:${name} >
1618
+ )
1619
+ endif ()
1620
+ endfunction ()
1621
+
1593
1622
function (llvm_setup_rpath name )
1594
1623
if (CMAKE_INSTALL_RPATH )
1595
1624
return ()
Original file line number Diff line number Diff line change @@ -80,3 +80,23 @@ IF(NOT CMAKE_LIBTOOL)
80
80
SET (CMAKE_LIBTOOL ${CMAKE_LIBTOOL_val} CACHE FILEPATH "Libtool" )
81
81
message (STATUS "Using libtool ${CMAKE_LIBTOOL} " )
82
82
ENDIF ()
83
+
84
+ IF (NOT CMAKE_CODESIGN)
85
+ execute_process (COMMAND xcrun -sdk ${CMAKE_OSX_SYSROOT} -find codesign
86
+ OUTPUT_VARIABLE CMAKE_CODESIGN_val
87
+ ERROR_QUIET
88
+ OUTPUT_STRIP_TRAILING_WHITESPACE)
89
+ SET (CMAKE_CODESIGN ${CMAKE_CODESIGN_val} CACHE FILEPATH "Codesign" )
90
+ message (STATUS "Using codesign ${CMAKE_CODESIGN} " )
91
+ ENDIF ()
92
+
93
+ IF (NOT CMAKE_CODESIGN_ALLOCATE)
94
+ execute_process (
95
+ COMMAND xcrun -sdk ${CMAKE_OSX_SYSROOT} -find codesign_allocate
96
+ OUTPUT_VARIABLE CMAKE_CODESIGN_ALLOCATE_val
97
+ ERROR_QUIET
98
+ OUTPUT_STRIP_TRAILING_WHITESPACE)
99
+ SET (CMAKE_CODESIGN_ALLOCATE ${CMAKE_CODESIGN_ALLOCATE_val} CACHE
100
+ FILEPATH "Codesign_Allocate" )
101
+ message (STATUS "Using codesign_allocate ${CMAKE_CODESIGN_ALLOCATE} " )
102
+ ENDIF ()
You can’t perform that action at this time.
0 commit comments