Skip to content

Commit b19eba5

Browse files
authored
[SDK] Sign all reactos drivers with the testbot (reactos#8404)
This allows if the directory with the tools exists to trigger sign tool on all MSVC builds.
1 parent a0c4273 commit b19eba5

File tree

1 file changed

+34
-0
lines changed

1 file changed

+34
-0
lines changed

sdk/cmake/CMakeMacros.cmake

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -567,6 +567,39 @@ list(APPEND VALID_MODULE_TYPES kernel kerneldll kernelmodedriver wdmdriver nativ
567567
list(APPEND KERNEL_MODULE_TYPES kernel kerneldll kernelmodedriver wdmdriver)
568568
list(APPEND NATIVE_MODULE_TYPES kernel kerneldll kernelmodedriver wdmdriver nativecui nativedll)
569569

570+
# Signs a driver if it is kernelmodedriver or wdmdriver if the cert exists
571+
function(sign_driver_if_needed TARGET)
572+
get_target_property(_type ${TARGET} REACTOS_MODULE_TYPE)
573+
if(NOT _type)
574+
message(STATUS "sign_driver_if_needed: No REACTOS_MODULE_TYPE for ${TARGET}")
575+
return()
576+
endif()
577+
if(NOT (_type STREQUAL "kernelmodedriver" OR _type STREQUAL "wdmdriver"))
578+
return()
579+
endif()
580+
if(NOT MSVC)
581+
return()
582+
endif()
583+
if(NOT EXISTS "C:/ReactOSCerts/ReactOSDevCert.cer")
584+
return()
585+
endif()
586+
# Get output file name
587+
get_target_property(_output_name ${TARGET} OUTPUT_NAME)
588+
if(NOT _output_name)
589+
set(_output_name ${TARGET})
590+
endif()
591+
set(_driver_path "${CMAKE_CURRENT_BINARY_DIR}/${_output_name}.sys")
592+
set(_driver_path "$<TARGET_FILE:${TARGET}>")
593+
add_custom_command(TARGET ${TARGET} POST_BUILD
594+
COMMAND SignTool sign /v /fd sha1 /s PrivateCertStore /n reactos.org /t http://timestamp.digicert.com "${_driver_path}"
595+
COMMENT "Signing driver: ${_driver_path}")
596+
endfunction()
597+
598+
# Example usage after driver target creation:
599+
# add_library(my_driver ...)
600+
# set_module_type(my_driver kernelmodedriver)
601+
# sign_driver_if_needed(my_driver)
602+
570603
function(set_module_type MODULE TYPE)
571604
cmake_parse_arguments(__module "UNICODE" "IMAGEBASE" "ENTRYPOINT" ${ARGN})
572605

@@ -657,6 +690,7 @@ function(set_module_type MODULE TYPE)
657690
add_dependencies(${MODULE} bugcodes xdk)
658691
if((${TYPE} STREQUAL kernelmodedriver) OR (${TYPE} STREQUAL wdmdriver))
659692
set_target_properties(${MODULE} PROPERTIES SUFFIX ".sys")
693+
sign_driver_if_needed(${MODULE})
660694
endif()
661695
endif()
662696

0 commit comments

Comments
 (0)