# HG changeset patch # User Jacob Alexander # Date 1425290333 28800 # Node ID 39f84a6033501b8fa1c29a6a325da9152724a02a # Parent c86eb7d0a693a4564274d2fe08a22a2c67a83ed6 Adding dfu-suffix signing support to build system - If dfu-suffix is not found, a warning is given and the binary is not signed - Unsigned binaries are still ok with the latest version of dfu-util diff -r c86eb7d0a693 -r 39f84a603350 Lib/CMake/FindDFUSuffix.cmake --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Lib/CMake/FindDFUSuffix.cmake Mon Mar 02 01:58:53 2015 -0800 @@ -0,0 +1,40 @@ +# The module defines the following variables: +# DFU_SUFFIX_EXECUTABLE - path to ctags command line client +# DFU_SUFFIX_FOUND - true if the command line client was found +# DFU_SUFFIX_VERSION_STRING - the version of dfu-suffix found (since CMake 2.8.8) +# Example usage: +# find_package( DFUSuffix ) +# if( DFU_SUFFIX_FOUND ) +# message("ctags found: ${DFU_SUFFIX_EXECUTABLE}") +# endif() + +find_program ( DFU_SUFFIX_EXECUTABLE + NAMES dfu-suffix + DOC "dfu-suffix executable" +) +mark_as_advanced ( DFU_SUFFIX_EXECUTABLE ) + +if ( DFU_SUFFIX_EXECUTABLE ) + execute_process ( COMMAND ${DFU_SUFFIX_EXECUTABLE} --version + OUTPUT_VARIABLE dfu_suffix_version + ERROR_QUIET + OUTPUT_STRIP_TRAILING_WHITESPACE + ) + + if ( dfu_suffix_version MATCHES "^dfu-suffix \\(dfu-util\\)" ) + string ( REPLACE "\n" "" DFU_SUFFIX_VERSION_STRING ${dfu_suffix_version} ) + string ( REPLACE "dfu-suffix (dfu-util) " "" DFU_SUFFIX_VERSION_STRING ${DFU_SUFFIX_VERSION_STRING} ) + string ( REGEX REPLACE "Copyright .*$" "" DFU_SUFFIX_VERSION_STRING ${DFU_SUFFIX_VERSION_STRING} ) + endif () + unset ( dfu_suffix_version ) +endif () + +# Handle the QUIETLY and REQUIRED arguments and set DFU_SUFFIX_FOUND to TRUE if +# all listed variables are TRUE + +include ( FindPackageHandleStandardArgs ) +find_package_handle_standard_args ( DFU_SUFFIX + REQUIRED_VARS DFU_SUFFIX_EXECUTABLE + VERSION_VAR DFU_SUFFIX_VERSION_STRING +) + diff -r c86eb7d0a693 -r 39f84a603350 Lib/CMake/build.cmake --- a/Lib/CMake/build.cmake Sun Mar 01 21:04:33 2015 -0800 +++ b/Lib/CMake/build.cmake Mon Mar 02 01:58:53 2015 -0800 @@ -1,6 +1,6 @@ ###| CMAKE Kiibohd Controller Source Configurator |### # -# Written by Jacob Alexander in 2011-2014 for the Kiibohd Controller +# Written by Jacob Alexander in 2011-2015 for the Kiibohd Controller # # Released into the Public Domain # @@ -46,12 +46,25 @@ #| Convert the .ELF into a .bin to load onto the McHCK +#| Then sign using dfu-suffix (requries dfu-util) if ( DEFINED DFU ) + # dfu-suffix is required to sign the dfu binary + find_package ( DFUSuffix ) + set( TARGET_BIN ${TARGET}.dfu.bin ) - add_custom_command( TARGET ${TARGET_ELF} POST_BUILD - COMMAND ${OBJ_COPY} ${BIN_FLAGS} ${TARGET_ELF} ${TARGET_BIN} - COMMENT "Creating dfu binary file: ${TARGET_BIN}" - ) + if ( DFU_SUFFIX_FOUND ) + add_custom_command( TARGET ${TARGET_ELF} POST_BUILD + COMMAND ${OBJ_COPY} ${BIN_FLAGS} ${TARGET_ELF} ${TARGET_BIN} + COMMAND ${DFU_SUFFIX_EXECUTABLE} --add ${TARGET_BIN} --vid ${BOOT_VENDOR_ID} --pid ${BOOT_PRODUCT_ID} 1> /dev/null + COMMENT "Create and sign dfu bin file: ${TARGET_BIN}" + ) + else () + message ( WARNING "DFU Binary has not been signed, requires dfu-suffix..." ) + add_custom_command( TARGET ${TARGET_ELF} POST_BUILD + COMMAND ${OBJ_COPY} ${BIN_FLAGS} ${TARGET_ELF} ${TARGET_BIN} + COMMENT "Creating dfu binary file: ${TARGET_BIN}" + ) + endif () endif ()