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
This commit is contained in:
		
							parent
							
								
									f07e9342dd
								
							
						
					
					
						commit
						a959011faa
					
				
					 2 changed files with 58 additions and 5 deletions
				
			
		
							
								
								
									
										40
									
								
								Lib/CMake/FindDFUSuffix.cmake
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										40
									
								
								Lib/CMake/FindDFUSuffix.cmake
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -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
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -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 @@ endif ()
 | 
			
		|||
 | 
			
		||||
 | 
			
		||||
#| 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 ()
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue