diff options
author | Vladislav Vaintroub <vvaintroub@mysql.com> | 2009-12-12 20:30:18 +0100 |
---|---|---|
committer | Vladislav Vaintroub <vvaintroub@mysql.com> | 2009-12-12 20:30:18 +0100 |
commit | 770d315846dd06b7c77f9a4fee0746f2abe9fab8 (patch) | |
tree | 19a9d6f671c56ff88d2da19722728d6df8525f1e /cmake/install_macros.cmake | |
parent | df3b67318c2f894215c8a046defef2bfecbd54f8 (diff) | |
download | mariadb-git-770d315846dd06b7c77f9a4fee0746f2abe9fab8.tar.gz |
new option SIGNCODE to sign executables and dlls with digital certificates
Diffstat (limited to 'cmake/install_macros.cmake')
-rw-r--r-- | cmake/install_macros.cmake | 49 |
1 files changed, 47 insertions, 2 deletions
diff --git a/cmake/install_macros.cmake b/cmake/install_macros.cmake index 0f85e45c0d5..42b8198f48e 100644 --- a/cmake/install_macros.cmake +++ b/cmake/install_macros.cmake @@ -71,6 +71,43 @@ IF(UNIX) ENDIF() ENDMACRO() +IF(WIN32) + OPTION(SIGNCODE "Sign executables and dlls with digital certificate" OFF) + IF(SIGNCODE) + SET(SIGNTOOL_PARAMETERS + /a /t http://timestamp.verisign.com/scripts/timstamp.dll + CACHE STRING "parameters for signtool (list)") + MARK_AS_ADVANCED(SIGNCODE SIGNTOOL_PARAMETERS) + ENDIF() + IF(SIGNCODE) + FIND_PROGRAM(SIGNTOOL_EXECUTABLE signtool) + IF(NOT SIGNTOOL_EXECUTABLE) + MESSAGE(FATAL_ERROR + "signtool is not found. Signing executables not possible") + ENDIF() + ENDIF() +ENDIF() + +MACRO(SIGN_TARGET target) + GET_TARGET_PROPERTY(target_type ${target} TYPE) + IF(target_type AND NOT target_type MATCHES "STATIC") + GET_TARGET_PROPERTY(target_location ${target} LOCATION) + IF(CMAKE_GENERATOR MATCHES "Visual Studio") + STRING(REPLACE "${CMAKE_CFG_INTDIR}" "\${CMAKE_INSTALL_CONFIG_NAME}" + target_location ${target_location}) + ENDIF() + INSTALL(CODE + "EXECUTE_PROCESS(COMMAND + ${SIGNTOOL_EXECUTABLE} sign ${SIGNTOOL_PARAMETERS} ${target_location} + ERROR_VARIABLE ERR) + IF(NOT \${ERR} EQUAL 0) + MESSAGE(FATAL_ERROR \"Error signing ${target_location}\") + ENDIF() + ") + ENDIF() +ENDMACRO() + + # Installs targets, also installs pdbs on Windows. # # More stuff can be added later, e.g signing @@ -80,8 +117,8 @@ ENDMACRO() FUNCTION(MYSQL_INSTALL_TARGETS) CMAKE_PARSE_ARGUMENTS(ARG "DESTINATION" - "" - ${ARGN} + "" + ${ARGN} ) SET(TARGETS ${ARG_DEFAULT_ARGS}) IF(NOT TARGETS) @@ -90,6 +127,14 @@ FUNCTION(MYSQL_INSTALL_TARGETS) IF(NOT ARG_DESTINATION) MESSAGE(FATAL_ERROR "Need DESTINATION parameter for MYSQL_INSTALL_TARGETS") ENDIF() + + # If signing is required, sign executables before installing + IF(SIGNCODE) + FOREACH(target ${TARGETS}) + SIGN_TARGET(${target}) + ENDFOREACH() + ENDIF() + INSTALL(TARGETS ${TARGETS} DESTINATION ${ARG_DESTINATION}) SET(INSTALL_LOCATION ${ARG_DESTINATION} ) INSTALL_DEBUG_SYMBOLS("${TARGETS}") |