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)
|
enable_language(C CXX ASM)
|
||||||
|
|
||||||
|
include(../dfu-util.cmake)
|
||||||
|
|
||||||
SET(PATH_HACKRF ../..)
|
SET(PATH_HACKRF ../..)
|
||||||
SET(PATH_HACKRF_FIRMWARE ${PATH_HACKRF}/firmware)
|
SET(PATH_HACKRF_FIRMWARE ${PATH_HACKRF}/firmware)
|
||||||
SET(PATH_HACKRF_FIRMWARE_COMMON ${PATH_HACKRF_FIRMWARE}/common)
|
SET(PATH_HACKRF_FIRMWARE_COMMON ${PATH_HACKRF_FIRMWARE}/common)
|
||||||
@ -170,11 +172,11 @@ macro(DeclareTargets)
|
|||||||
)
|
)
|
||||||
|
|
||||||
add_custom_target(
|
add_custom_target(
|
||||||
${PROJECT_NAME}.dfu ALL
|
${PROJECT_NAME}.dfu ${DFU_ALL}
|
||||||
DEPENDS ${PROJECT_NAME}.bin
|
DEPENDS ${PROJECT_NAME}.bin
|
||||||
COMMAND rm -f _tmp.dfu _header.bin
|
COMMAND rm -f _tmp.dfu _header.bin
|
||||||
COMMAND cp ${PROJECT_NAME}.bin _tmp.dfu
|
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 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 cat _header.bin _tmp.dfu >${PROJECT_NAME}.dfu
|
||||||
COMMAND rm -f _tmp.dfu _header.bin
|
COMMAND rm -f _tmp.dfu _header.bin
|
||||||
|
Reference in New Issue
Block a user