diff --git a/CMakeLists.txt b/CMakeLists.txt index b51a3bb..b4c9a7e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -18,6 +18,7 @@ include(cmake/CPackInfos.cmake) # Qt Widgets based Gui with OpenGL canvas add_subdirectory(openhantek) +add_subdirectory(firmware EXCLUDE_FROM_ALL) if (WIN32) install(FILES COPYING readme.md DESTINATION ".") diff --git a/firmware/CMakeLists.txt b/firmware/CMakeLists.txt new file mode 100644 index 0000000..ff1baf0 --- /dev/null +++ b/firmware/CMakeLists.txt @@ -0,0 +1,17 @@ +project(FirmwareExtractor C) + +find_library( BFD_LIBRARY NAMES bfd libbdf PATH /usr/lib /usr/lib64 ) +find_path(BFD_INCLUDE bfd.h PATHS /usr/include + /usr/local/include + /opt/local/include + /sw/include) + + +if (NOT BFD_LIBRARY OR NOT BFD_INCLUDE) + message(STATUS "BFD not found. Please install binutils-devel (fedora) / binutils-dev (ubuntu)") + return() +endif() + +add_executable(${PROJECT_NAME} extractfw.c) +target_link_libraries(${PROJECT_NAME} ${BFD_LIBRARY} ) +target_include_directories(${PROJECT_NAME} PRIVATE ${BFD_INCLUDE}) diff --git a/firmware/Makefile b/firmware/Makefile deleted file mode 100644 index 7e4bcc3..0000000 --- a/firmware/Makefile +++ /dev/null @@ -1,7 +0,0 @@ -CFLAGS=-g -O2 -LDLIBS=-lbfd -liberty -lz -ldl - -extractfw: extractfw.o - -clean: - rm -f extractfw extractfw.o diff --git a/firmware/fwget.sh b/firmware/fwget.sh index da00ef6..9c692c4 100755 --- a/firmware/fwget.sh +++ b/firmware/fwget.sh @@ -2,20 +2,18 @@ shopt -s globstar -cd "$(dirname "$0")" -make -rm -rf tmp -mkdir tmp +rm -rf build +mkdir build && cd build && cmake ../ && make && cd .. -cd tmp +if [ ! -d ./hex ]; then +mkdir hex && cd hex && \ for MODEL in "2090" "2150" "2250" "5200" "5200A"; do wget http://www.hantek.com/Product/DSO2000/DSO${MODEL}_Driver.zip unzip DSO${MODEL}_Driver.zip -done +done && \ cd .. +fi -for f in tmp/**/*.sys; do - ./extractfw $f +for f in hex/**/*.sys; do + ./build/FirmwareExtractor $f && rm $f done -mv tmp/**/*.hex . -rm -rf tmp