Merge pull request #229 from dominicgs/dfu_build_fix
Support both commonly available versions of dfu-util (0.7/0.8)
This commit is contained in:
56
firmware/dfu-util.cmake
Normal file
56
firmware/dfu-util.cmake
Normal file
@ -0,0 +1,56 @@
|
||||
#
|
||||
# Copyright 2015 Dominic Spill <dominicgs@gmail.com>
|
||||
#
|
||||
# This file is part of GreatFET.
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2, or (at your option)
|
||||
# any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; see the file COPYING. If not, write to
|
||||
# the Free Software Foundation, Inc., 51 Franklin Street,
|
||||
# Boston, MA 02110-1301, USA.
|
||||
#
|
||||
|
||||
execute_process(
|
||||
COMMAND dfu-suffix -V
|
||||
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
|
||||
RESULT_VARIABLE DFU_NOT_FOUND
|
||||
ERROR_QUIET
|
||||
OUTPUT_VARIABLE DFU_VERSION_STRING
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||
)
|
||||
|
||||
set(DFU_ALL "")
|
||||
if(NOT DFU_NOT_FOUND)
|
||||
string(REGEX REPLACE ".*([0-9]+)\\.[0-9]+.*" "\\1" DFU_VERSION_MAJOR "${DFU_VERSION_STRING}")
|
||||
string(REGEX REPLACE ".*[0-9]+\\.([0-9])+.*" "\\1" DFU_VERSION_MINOR "${DFU_VERSION_STRING}")
|
||||
MESSAGE( STATUS "DFU utils version: " ${DFU_VERSION_MAJOR} "." ${DFU_VERSION_MINOR})
|
||||
execute_process(
|
||||
COMMAND dfu-prefix -V
|
||||
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
|
||||
RESULT_VARIABLE DFU_PREFIX_NOT_FOUND
|
||||
ERROR_QUIET
|
||||
OUTPUT_VARIABLE DFU_PREFIX_VERSION_STRING
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||
)
|
||||
if(DFU_PREFIX_NOT_FOUND)
|
||||
set(DFU_COMMAND dfu-suffix --vid=0x1fc9 --pid=0x000c --did=0x0 -s 0 -a _tmp.dfu)
|
||||
else(DFU_PREFIX_NOT_FOUND)
|
||||
set(DFU_COMMAND dfu-suffix --vid=0x1fc9 --pid=0x000c --did=0x0 -a _tmp.dfu && dfu-prefix -s 0 -a _tmp.dfu)
|
||||
endif(DFU_PREFIX_NOT_FOUND)
|
||||
set(DFU_ALL "ALL")
|
||||
else(NOT DFU_NOT_FOUND)
|
||||
MESSAGE(STATUS "dfu-suffix not found: not building DFU file")
|
||||
endif(NOT DFU_NOT_FOUND)
|
||||
|
||||
|
||||
|
||||
|
@ -26,6 +26,8 @@
|
||||
|
||||
enable_language(C CXX ASM)
|
||||
|
||||
include(../dfu-util.cmake)
|
||||
|
||||
SET(PATH_HACKRF ../..)
|
||||
SET(PATH_HACKRF_FIRMWARE ${PATH_HACKRF}/firmware)
|
||||
SET(PATH_HACKRF_FIRMWARE_COMMON ${PATH_HACKRF_FIRMWARE}/common)
|
||||
@ -170,11 +172,11 @@ macro(DeclareTargets)
|
||||
)
|
||||
|
||||
add_custom_target(
|
||||
${PROJECT_NAME}.dfu ALL
|
||||
${PROJECT_NAME}.dfu ${DFU_ALL}
|
||||
DEPENDS ${PROJECT_NAME}.bin
|
||||
COMMAND rm -f _tmp.dfu _header.bin
|
||||
COMMAND cp ${PROJECT_NAME}.bin _tmp.dfu
|
||||
COMMAND dfu-suffix --vid=0x1fc9 --pid=0x000c --did=0x0 -s 0 -a _tmp.dfu
|
||||
COMMAND ${DFU_COMMAND}
|
||||
COMMAND python -c \"import os.path\; import struct\; print\('0000000: da ff ' + ' '.join\(map\(lambda s: '%02x' % ord\(s\), struct.pack\('<H', os.path.getsize\('${PROJECT_NAME}.bin'\) / 512 + 1\)\)\) + ' ff ff ff ff'\)\" | xxd -g1 -r > _header.bin
|
||||
COMMAND cat _header.bin _tmp.dfu >${PROJECT_NAME}.dfu
|
||||
COMMAND rm -f _tmp.dfu _header.bin
|
||||
|
Reference in New Issue
Block a user