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 |###
 | 
					###| 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
 | 
					# Released into the Public Domain
 | 
				
			||||||
#
 | 
					#
 | 
				
			||||||
| 
						 | 
					@ -46,12 +46,25 @@ endif ()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#| Convert the .ELF into a .bin to load onto the McHCK
 | 
					#| Convert the .ELF into a .bin to load onto the McHCK
 | 
				
			||||||
 | 
					#| Then sign using dfu-suffix (requries dfu-util)
 | 
				
			||||||
if ( DEFINED DFU )
 | 
					if ( DEFINED DFU )
 | 
				
			||||||
 | 
						# dfu-suffix is required to sign the dfu binary
 | 
				
			||||||
 | 
						find_package ( DFUSuffix )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	set( TARGET_BIN ${TARGET}.dfu.bin )
 | 
						set( TARGET_BIN ${TARGET}.dfu.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
 | 
							add_custom_command( TARGET ${TARGET_ELF} POST_BUILD
 | 
				
			||||||
			COMMAND ${OBJ_COPY} ${BIN_FLAGS} ${TARGET_ELF} ${TARGET_BIN}
 | 
								COMMAND ${OBJ_COPY} ${BIN_FLAGS} ${TARGET_ELF} ${TARGET_BIN}
 | 
				
			||||||
			COMMENT "Creating dfu binary file:      ${TARGET_BIN}"
 | 
								COMMENT "Creating dfu binary file:      ${TARGET_BIN}"
 | 
				
			||||||
		)
 | 
							)
 | 
				
			||||||
 | 
						endif ()
 | 
				
			||||||
endif ()
 | 
					endif ()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue