diff --git a/6a6718b3342b6c5e282a4e33325b9f97908a0692.patch b/6a6718b3342b6c5e282a4e33325b9f97908a0692.patch new file mode 100644 index 0000000..2d6c8ad --- /dev/null +++ b/6a6718b3342b6c5e282a4e33325b9f97908a0692.patch @@ -0,0 +1,649 @@ +From 6a6718b3342b6c5e282a4e33325b9f97908a0692 Mon Sep 17 00:00:00 2001 +From: nightwalker-87 <15526941+Nightwalker-87@users.noreply.github.com> +Date: Fri, 16 Feb 2024 14:55:41 +0100 +Subject: [PATCH] Post release patch for v1.8.0 + +- Fixed terminal screen output (Closes #1363) +- Fixed compatibility with gcc-14 (Closes #1365) +- Updated contact info in CODE_OF_CONDUCT +- Updated man files & related install path +- Updated libusb to v1.0.27 for Windows builds +- Updated cmake_policy to CM0153 NEW +--- + .gitignore | 1 + + CMakeLists.txt | 61 ++++++++----------- + CODE_OF_CONDUCT.md | 2 +- + cmake/modules/Findlibusb.cmake | 58 ++++++++++-------- + cmake/modules/c_flags.cmake | 2 +- + .../{packaging => modules}/cpack_config.cmake | 2 +- + cmake/packaging/CMakeLists.txt | 2 +- + cmake_uninstall.cmake.in | 6 +- + doc/compiling.md | 7 +-- + doc/man/CMakeLists.txt | 14 ++--- + doc/man/st-flash.md | 4 +- + doc/man/st-info.md | 4 +- + doc/man/st-util.md | 4 +- + ...nerate_binaries.sh => generate_binaries.sh | 8 +-- + mingw64-build.bat | 2 +- + src/stlink-lib/chipid.c | 2 +- + src/stlink-lib/common_flash.c | 2 +- + src/stlink-lib/flash_loader.c | 16 ++--- + 18 files changed, 93 insertions(+), 104 deletions(-) + rename cmake/{packaging => modules}/cpack_config.cmake (97%) + rename cmake/packaging/windows/generate_binaries.sh => generate_binaries.sh (69%) + +diff --git a/.gitignore b/.gitignore +index 1a5fd5ab1..382ea092f 100644 +--- a/.gitignore ++++ b/.gitignore +@@ -1,6 +1,7 @@ + build + build-mingw-32 + build-mingw-64 ++3rdparty + + .project + .cmake/ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 59d9970a7..d3344e394 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -3,7 +3,7 @@ + ### + + cmake_minimum_required(VERSION 3.10.2) +-cmake_policy(SET CMP0042 NEW) ++cmake_policy(SET CMP0153 NEW) + set(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake/modules) + set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib) + set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib) +@@ -254,35 +254,22 @@ add_library(${STLINK_LIB_SHARED} SHARED ${STLINK_HEADERS} ${STLINK_SOURCE}) + + set(STLINK_SHARED_VERSION ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH}) + message(STATUS "STLINK_LIB_SHARED: ${STLINK_LIB_SHARED}") +-message(STATUS "PROJECT_VERSION_MAJOR: ${PROJECT_VERSION_MAJOR}") + message(STATUS "VERSION: ${STLINK_SHARED_VERSION}") + + set_target_properties(${STLINK_LIB_SHARED} PROPERTIES +- SOVERSION ${PROJECT_VERSION_MAJOR} +- VERSION ${STLINK_SHARED_VERSION} +- OUTPUT_NAME ${PROJECT_NAME} +- ) ++ SOVERSION ${PROJECT_VERSION_MAJOR} ++ VERSION ${STLINK_SHARED_VERSION} ++ OUTPUT_NAME ${PROJECT_NAME} ++ ) + + # Link shared library +-if (WIN32) # ... with Windows libraries ++if (WIN32) + target_link_libraries(${STLINK_LIB_SHARED} ${LIBUSB_LIBRARY} ${SSP_LIB} wsock32 ws2_32) + else () + target_link_libraries(${STLINK_LIB_SHARED} ${LIBUSB_LIBRARY} ${SSP_LIB}) + endif() + +-install(TARGETS ${STLINK_LIB_SHARED} +- ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} +- LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} +- RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} +- ) +- +-# Copy libusb DLL-library to binary output folder +-if (WIN32) +-file(COPY ${LIBUSB_WIN_OUTPUT_FOLDER}/MinGW64/dll/libusb-1.0.dll +- DESTINATION ${CMAKE_INSTALL_BINDIR}) +-file(COPY ${LIBUSB_WIN_OUTPUT_FOLDER}/MinGW64/dll/libusb-1.0.dll +- DESTINATION ${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_BINDIR}) +-endif() ++install(TARGETS ${STLINK_LIB_SHARED} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) + + + ### +@@ -300,17 +287,16 @@ add_library(${STLINK_LIB_STATIC} STATIC ${STLINK_HEADERS} ${STLINK_SOURCE}) + + set(STLINK_STATIC_VERSION ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH}) + message(STATUS "STLINK_LIB_STATIC: ${STLINK_LIB_STATIC}") +-message(STATUS "PROJECT_VERSION_MAJOR: ${PROJECT_VERSION_MAJOR}") + message(STATUS "VERSION: ${STLINK_STATIC_VERSION}") + + set_target_properties(${STLINK_LIB_STATIC} PROPERTIES +- SOVERSION ${PROJECT_VERSION_MAJOR} +- VERSION ${STLINK_STATIC_VERSION} +- OUTPUT_NAME ${STLINK_LIB_STATIC_OUTPUT_NAME} +- ) ++ SOVERSION ${PROJECT_VERSION_MAJOR} ++ VERSION ${STLINK_STATIC_VERSION} ++ OUTPUT_NAME ${STLINK_LIB_STATIC_OUTPUT_NAME} ++ ) + + # Link static library +-if (WIN32) # ... with Windows libraries ++if (WIN32) + target_link_libraries(${STLINK_LIB_STATIC} ${LIBUSB_LIBRARY} ${SSP_LIB} wsock32 ws2_32) + else () + target_link_libraries(${STLINK_LIB_STATIC} ${LIBUSB_LIBRARY} ${SSP_LIB}) +@@ -341,15 +327,15 @@ add_executable(st-util ${ST-UTIL_SOURCES}) + add_executable(st-trace ${ST-TRACE_SOURCES}) + + if (WIN32) +- target_link_libraries(st-flash ${STLINK_LIB_STATIC} ${SSP_LIB}) +- target_link_libraries(st-info ${STLINK_LIB_STATIC} ${SSP_LIB}) +- target_link_libraries(st-util ${STLINK_LIB_STATIC} ${SSP_LIB}) +- target_link_libraries(st-trace ${STLINK_LIB_STATIC} ${SSP_LIB}) ++ target_link_libraries(st-flash ${STLINK_LIB_STATIC}) ++ target_link_libraries(st-info ${STLINK_LIB_STATIC}) ++ target_link_libraries(st-util ${STLINK_LIB_STATIC}) ++ target_link_libraries(st-trace ${STLINK_LIB_STATIC}) + else () +- target_link_libraries(st-flash ${STLINK_LIB_SHARED} ${SSP_LIB}) +- target_link_libraries(st-info ${STLINK_LIB_SHARED} ${SSP_LIB}) +- target_link_libraries(st-util ${STLINK_LIB_SHARED} ${SSP_LIB}) +- target_link_libraries(st-trace ${STLINK_LIB_SHARED} ${SSP_LIB}) ++ target_link_libraries(st-flash ${STLINK_LIB_SHARED}) ++ target_link_libraries(st-info ${STLINK_LIB_SHARED}) ++ target_link_libraries(st-util ${STLINK_LIB_SHARED}) ++ target_link_libraries(st-trace ${STLINK_LIB_SHARED}) + endif() + + install(TARGETS st-flash DESTINATION ${CMAKE_INSTALL_BINDIR}) +@@ -380,10 +366,10 @@ endif() + + # MCU configuration files + if (WIN32) +-set(CMAKE_CHIPS_DIR ${CMAKE_INSTALL_PREFIX}/config/chips) ++ set(CMAKE_CHIPS_DIR ${CMAKE_INSTALL_PREFIX}/config/chips) + else () +-set(CMAKE_CHIPS_DIR ${CMAKE_INSTALL_FULL_DATADIR}/${PROJECT_NAME}/chips) +-endif () ++ set(CMAKE_CHIPS_DIR ${CMAKE_INSTALL_FULL_DATADIR}/${PROJECT_NAME}/config/chips) ++endif() + add_definitions( -DSTLINK_CHIPS_DIR="${CMAKE_CHIPS_DIR}" ) + file(GLOB CHIP_FILES ${CMAKE_SOURCE_DIR}/config/chips/*.chip) + install(FILES ${CHIP_FILES} DESTINATION ${CMAKE_CHIPS_DIR}) +@@ -396,6 +382,7 @@ add_subdirectory(src/stlink-gui) # contains subordinate CMakeLists to build GUI + add_subdirectory(tests) # contains subordinate CMakeLists to build test executables + add_subdirectory(cmake/packaging) # contains subordinate CMakeLists to build packages + ++ + ### + # Uninstall target + ### +diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md +index b0623068a..2de1cc754 100644 +--- a/CODE_OF_CONDUCT.md ++++ b/CODE_OF_CONDUCT.md +@@ -55,7 +55,7 @@ further defined and clarified by project maintainers. + ## Enforcement + + Instances of abusive, harassing, or otherwise unacceptable behavior may be +-reported by contacting the project team at texane@gmail.com. All ++reported by contacting the project team [here](https://github.com/stlink-org/stlink/discussions). All + complaints will be reviewed and investigated and will result in a response that + is deemed necessary and appropriate to the circumstances. The project team is + obligated to maintain confidentiality with regard to the reporter of an incident. +diff --git a/cmake/modules/Findlibusb.cmake b/cmake/modules/Findlibusb.cmake +index 830060486..d26639b99 100644 +--- a/cmake/modules/Findlibusb.cmake ++++ b/cmake/modules/Findlibusb.cmake +@@ -10,41 +10,49 @@ + + include(FindPackageHandleStandardArgs) + +-if (CMAKE_SYSTEM_NAME STREQUAL "FreeBSD") # FreeBSD; libusb is integrated into the system ++if (CMAKE_SYSTEM_NAME STREQUAL "FreeBSD") # FreeBSD; libusb is integrated into the system ++ # libusb header file + FIND_PATH( + LIBUSB_INCLUDE_DIR NAMES libusb.h + HINTS /usr/include + ) ++ ++ # libusb library + set(LIBUSB_NAME usb) + find_library( + LIBUSB_LIBRARY NAMES ${LIBUSB_NAME} + HINTS /usr /usr/local /opt + ) ++ + FIND_PACKAGE_HANDLE_STANDARD_ARGS(libusb DEFAULT_MSG LIBUSB_LIBRARY LIBUSB_INCLUDE_DIR) + mark_as_advanced(LIBUSB_INCLUDE_DIR LIBUSB_LIBRARY) + if (NOT LIBUSB_FOUND) + message(FATAL_ERROR "Expected libusb library not found on your system! Verify your system integrity.") + endif() + +-elseif (CMAKE_SYSTEM_NAME STREQUAL "OpenBSD") # OpenBSD; libusb-1.0 is available from ports ++elseif (CMAKE_SYSTEM_NAME STREQUAL "OpenBSD") # OpenBSD; libusb is available from ports ++ # libusb header file + FIND_PATH( + LIBUSB_INCLUDE_DIR NAMES libusb.h + HINTS /usr/local/include + PATH_SUFFIXES libusb-1.0 + ) ++ ++ # libusb library + set(LIBUSB_NAME usb-1.0) + find_library( + LIBUSB_LIBRARY NAMES ${LIBUSB_NAME} + HINTS /usr/local + ) ++ + FIND_PACKAGE_HANDLE_STANDARD_ARGS(libusb DEFAULT_MSG LIBUSB_LIBRARY LIBUSB_INCLUDE_DIR) + mark_as_advanced(LIBUSB_INCLUDE_DIR LIBUSB_LIBRARY) + if (NOT LIBUSB_FOUND) + message(FATAL_ERROR "No libusb-1.0 library found on your system! Install libusb-1.0 from ports or packages.") + endif() + +-elseif (WIN32 OR (EXISTS "/etc/debian_version" AND MINGW)) # Windows or MinGW-toolchain on Debian +- # MinGW/MSYS/MSVC: 64-bit or 32-bit? ++elseif (WIN32 OR (MINGW AND EXISTS "/etc/debian_version")) # Windows OR cross-build with MinGW-toolchain on Debian ++ # MinGW: 64-bit or 32-bit? + if (CMAKE_SIZEOF_VOID_P EQUAL 8) + message(STATUS "=== Building for Windows (x86-64) ===") + set(ARCH 64) +@@ -53,26 +61,20 @@ elseif (WIN32 OR (EXISTS "/etc/debian_version" AND MINGW)) # Windows or MinGW-to + set(ARCH 32) + endif() + +- if (WIN32 AND NOT EXISTS "/etc/debian_version") # Skip this for Debian... ++ if (NOT LIBUSB_FOUND) + # Preparations for installing libusb library +- set(LIBUSB_WIN_VERSION 1.0.25) # set libusb version +- set(LIBUSB_WIN_ARCHIVE libusb-${LIBUSB_WIN_VERSION}.7z) +- if (WIN32 AND NOT EXISTS "/etc/debian_version") # ... on native Windows systems +- set(LIBUSB_WIN_ARCHIVE_PATH ${CMAKE_BINARY_DIR}/${LIBUSB_WIN_ARCHIVE}) +- set(LIBUSB_WIN_OUTPUT_FOLDER ${CMAKE_BINARY_DIR}/3rdparty/libusb-${LIBUSB_WIN_VERSION}) +- elseif (EXISTS "/etc/debian_version" AND MINGW) # ... only for cross-building on Debian +- set(LIBUSB_WIN_ARCHIVE_PATH ${CMAKE_SOURCE_DIR}/build-mingw-${ARCH}/${LIBUSB_WIN_ARCHIVE}) +- set(LIBUSB_WIN_OUTPUT_FOLDER ${CMAKE_SOURCE_DIR}/build-mingw-${ARCH}/3rdparty/libusb-${LIBUSB_WIN_VERSION}) +- endif() ++ set(LIBUSB_WIN_VERSION 1.0.27) # set libusb version ++ set(LIBUSB_WIN_ARCHIVE_PATH ${CMAKE_SOURCE_DIR}/3rdparty/libusb-${LIBUSB_WIN_VERSION}.7z) ++ set(LIBUSB_WIN_OUTPUT_FOLDER ${CMAKE_SOURCE_DIR}/3rdparty/libusb-${LIBUSB_WIN_VERSION}) + + # Get libusb package +- if (EXISTS ${LIBUSB_WIN_ARCHIVE_PATH}) # ... should the package be already there (for whatever reason) ++ if (EXISTS ${LIBUSB_WIN_ARCHIVE_PATH}) # ... should the package be already there + message(STATUS "libusb archive already in build folder") + else () # ... download the package + message(STATUS "downloading libusb ${LIBUSB_WIN_VERSION}") + file(DOWNLOAD + https://sourceforge.net/projects/libusb/files/libusb-1.0/libusb-${LIBUSB_WIN_VERSION}/libusb-${LIBUSB_WIN_VERSION}.7z/download +- ${LIBUSB_WIN_ARCHIVE_PATH} EXPECTED_MD5 aabe177bde869bfad34278335eaf8955 ++ ${LIBUSB_WIN_ARCHIVE_PATH} EXPECTED_MD5 c72153fc5a32f3b942427b0671897a1a + ) + endif() + +@@ -84,7 +86,7 @@ elseif (WIN32 OR (EXISTS "/etc/debian_version" AND MINGW)) # Windows or MinGW-to + WORKING_DIRECTORY ${LIBUSB_WIN_OUTPUT_FOLDER} + ) + +- # Find path to libusb library ++ # libusb header file + FIND_PATH( + LIBUSB_INCLUDE_DIR NAMES libusb.h + HINTS ${LIBUSB_WIN_OUTPUT_FOLDER}/include +@@ -94,6 +96,7 @@ elseif (WIN32 OR (EXISTS "/etc/debian_version" AND MINGW)) # Windows or MinGW-to + ) + + if (MINGW OR MSYS) ++ # libusb library (static) + set(LIBUSB_NAME usb-1.0) + find_library( + LIBUSB_LIBRARY NAMES ${LIBUSB_NAME} +@@ -101,8 +104,8 @@ elseif (WIN32 OR (EXISTS "/etc/debian_version" AND MINGW)) # Windows or MinGW-to + NO_DEFAULT_PATH + NO_CMAKE_FIND_ROOT_PATH + ) +- +- elseif (MSVC) ++ else (MSVC) ++ # libusb library + set(LIBUSB_NAME libusb-1.0.lib) + find_library( + LIBUSB_LIBRARY NAMES ${LIBUSB_NAME} +@@ -111,23 +114,28 @@ elseif (WIN32 OR (EXISTS "/etc/debian_version" AND MINGW)) # Windows or MinGW-to + NO_CMAKE_FIND_ROOT_PATH + ) + endif() +- message(STATUS "Missing libusb library has been installed") + endif() +- FIND_PACKAGE_HANDLE_STANDARD_ARGS(libusb DEFAULT_MSG LIBUSB_LIBRARY LIBUSB_INCLUDE_DIR) ++ ++ FIND_PACKAGE_HANDLE_STANDARD_ARGS(libusb DEFAULT_MSG LIBUSB_INCLUDE_DIR LIBUSB_LIBRARY) + mark_as_advanced(LIBUSB_INCLUDE_DIR LIBUSB_LIBRARY) ++ message(STATUS "Missing libusb library has been installed") + +-else () # all other OS (unix-based) ++else () # all other OS (unix-based) ++ # libusb header file + FIND_PATH( + LIBUSB_INCLUDE_DIR NAMES libusb.h +- HINTS /usr /usr/local /opt ++ HINTS /usr/include + PATH_SUFFIXES libusb-1.0 + ) ++ ++ # libusb library + set(LIBUSB_NAME usb-1.0) + find_library( + LIBUSB_LIBRARY NAMES ${LIBUSB_NAME} +- HINTS /usr /usr/local /opt ++ HINTS /usr /usr/local + ) +- FIND_PACKAGE_HANDLE_STANDARD_ARGS(libusb DEFAULT_MSG LIBUSB_LIBRARY LIBUSB_INCLUDE_DIR) ++ ++ FIND_PACKAGE_HANDLE_STANDARD_ARGS(libusb DEFAULT_MSG LIBUSB_INCLUDE_DIR LIBUSB_LIBRARY) + mark_as_advanced(LIBUSB_INCLUDE_DIR LIBUSB_LIBRARY) + + if (NOT LIBUSB_FOUND) +diff --git a/cmake/modules/c_flags.cmake b/cmake/modules/c_flags.cmake +index d30f45ec9..e28ea2dae 100644 +--- a/cmake/modules/c_flags.cmake ++++ b/cmake/modules/c_flags.cmake +@@ -40,7 +40,7 @@ if (NOT CMAKE_SYSTEM_NAME STREQUAL "OpenBSD") + add_cflag_if_supported("-Wredundant-decls") + endif() + +-if (NOT (WIN32 OR (EXISTS "/etc/debian_version" AND MINGW))) ++if (NOT (WIN32 OR (MINGW AND EXISTS "/etc/debian_version"))) + add_cflag_if_supported("-fPIC") + endif() + +diff --git a/cmake/packaging/cpack_config.cmake b/cmake/modules/cpack_config.cmake +similarity index 97% +rename from cmake/packaging/cpack_config.cmake +rename to cmake/modules/cpack_config.cmake +index 17de607ef..d1d6ff069 100644 +--- a/cmake/packaging/cpack_config.cmake ++++ b/cmake/modules/cpack_config.cmake +@@ -25,7 +25,7 @@ elseif (WIN32) # Wi + set(CPACK_PACKAGE_FILE_NAME "${PROJECT_NAME}-${PROJECT_VERSION}-${TOOLCHAIN_PREFIX}") + set(CPACK_INSTALL_PREFIX "") + +-elseif (EXISTS "/etc/debian_version" AND NOT EXISTS WIN32) # Package-build is available on Debian/Ubuntu only ++elseif (EXISTS "/etc/debian_version" AND (NOT EXISTS WIN32)) # Package-build on Debian/Ubuntu + message(STATUS "Debian-based Linux OS detected") + + set(CPACK_GENERATOR "DEB;RPM") # RPM requires package `rpm` +diff --git a/cmake/packaging/CMakeLists.txt b/cmake/packaging/CMakeLists.txt +index 1cf640552..b50b679a9 100644 +--- a/cmake/packaging/CMakeLists.txt ++++ b/cmake/packaging/CMakeLists.txt +@@ -2,4 +2,4 @@ add_subdirectory(deb) + add_subdirectory(rpm) + add_subdirectory(windows) + +-include(cpack_config.cmake) ++include(${CMAKE_MODULE_PATH}/cpack_config.cmake) +diff --git a/cmake_uninstall.cmake.in b/cmake_uninstall.cmake.in +index 0c9f6a437..1b9a48296 100644 +--- a/cmake_uninstall.cmake.in ++++ b/cmake_uninstall.cmake.in +@@ -7,10 +7,10 @@ string(REGEX REPLACE "\n" ";" files "${files}") + foreach (file ${files}) + message(STATUS "Uninstalling $ENV{DESTDIR}${file}") + if (IS_SYMLINK "$ENV{DESTDIR}${file}" OR EXISTS "$ENV{DESTDIR}${file}") +- exec_program("@CMAKE_COMMAND@" +- ARGS "-E remove \"$ENV{DESTDIR}${file}\"" ++ execute_process( ++ COMMAND "@CMAKE_COMMAND@" -E remove \"$ENV{DESTDIR}${file}\" + OUTPUT_VARIABLE rm_out +- RETURN_VALUE rm_retval ++ RESULT_VARIABLE rm_retval + ) + if (NOT "${rm_retval}" STREQUAL 0) + message(FATAL_ERROR "Problem when removing $ENV{DESTDIR}${file}") +diff --git a/doc/compiling.md b/doc/compiling.md +index 804781faa..68fc5994e 100644 +--- a/doc/compiling.md ++++ b/doc/compiling.md +@@ -45,12 +45,7 @@ Options: + Directory `\build\Release` contains final executables. + (`st-util.exe` is located in `\build\src\gdbserver\Release`). + +-**NOTE 1:** +- +-Executables link against libusb.dll library. It has to be placed in the same directory as binaries or in PATH. +-It can be copied from: `\build\3rdparty\libusb-{version}\MS{arch}\dll\libusb-1.0.dll`. +- +-**NOTE 2:** ++**NOTE:** + + [ST-LINK drivers](https://www.st.com/en/development-tools/stsw-link009.html) are required for `stlink` to work. + +diff --git a/doc/man/CMakeLists.txt b/doc/man/CMakeLists.txt +index f225c85b7..41092aae3 100644 +--- a/doc/man/CMakeLists.txt ++++ b/doc/man/CMakeLists.txt +@@ -2,7 +2,7 @@ + # Generate manpages + ### + +-set(MANPAGES st-util st-flash st-info) ++set(MANPAGES st-info st-flash st-util) + + # Only generate manpages with pandoc in Debug builds + if (${STLINK_GENERATE_MANPAGES}) +@@ -12,7 +12,7 @@ if (${STLINK_GENERATE_MANPAGES}) + ${manpage}.1 + SOURCES ${manpage}.md + PANDOC_DIRECTIVES -s -t man +- PRODUCT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} ++ PRODUCT_DIRECTORY ${CMAKE_INSTALL_FULL_DATADIR} + ) + endforeach () + else () +@@ -21,16 +21,16 @@ endif() + + # Install from output folder or this folder + foreach (manpage ${MANPAGES}) +- if (EXISTS ${CMAKE_CURRENT_BINARY_DIR}/${manpage}.1) +- set(f "${CMAKE_CURRENT_BINARY_DIR}/${manpage}.1") +- elseif (EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/${manpage}.1") ++ if (EXISTS ${CMAKE_INSTALL_FULL_DATADIR}/${manpage}.1) ++ set(f "${CMAKE_INSTALL_FULL_DATADIR}/${manpage}.1") ++ elseif (EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/${manpage}.1) + set(f "${CMAKE_CURRENT_SOURCE_DIR}/${manpage}.1") +- else() ++ else () + message(AUTHOR_WARNING "Manpage ${manpage} not generated") + endif() + + if (f AND NOT WIN32) +- install(FILES ${f} DESTINATION ${CMAKE_INSTALL_DATADIR}/man/man1) ++ install(FILES ${f} DESTINATION ${CMAKE_INSTALL_FULL_DATADIR}/man/man1) + unset(f) + endif() + endforeach () +diff --git a/doc/man/st-flash.md b/doc/man/st-flash.md +index 9b2cfcad5..7ab86d87f 100644 +--- a/doc/man/st-flash.md ++++ b/doc/man/st-flash.md +@@ -1,6 +1,6 @@ +-% st-flash(1) Open Source STMicroelectronics Stlink Tools | stlink ++% st-flash(1) Open source version of the STMicroelectronics STLINK Tools | stlink + % +-% Feb 2018 ++% Feb 2023 + + # NAME + +diff --git a/doc/man/st-info.md b/doc/man/st-info.md +index 2cca61f83..685e8988d 100644 +--- a/doc/man/st-info.md ++++ b/doc/man/st-info.md +@@ -1,6 +1,6 @@ +-% st-flash(1) Open Source STMicroelectronics Stlink Tools | stlink ++% st-flash(1) Open source version of the STMicroelectronics STLINK Tools | stlink + % +-% Oct 2020 ++% Feb 2023 + + # NAME + st-info - Provides information about connected STLink and STM32 devices +diff --git a/doc/man/st-util.md b/doc/man/st-util.md +index 62f850203..2c597402a 100644 +--- a/doc/man/st-util.md ++++ b/doc/man/st-util.md +@@ -1,6 +1,6 @@ +-% st-util(1) Open Source STMicroelectronics Stlink Tools | stlink ++% st-util(1) Open source version of the STMicroelectronics STLINK Tools | stlink + % +-% Feb 2018 ++% Feb 2023 + + # NAME + +diff --git a/cmake/packaging/windows/generate_binaries.sh b/generate_binaries.sh +similarity index 69% +rename from cmake/packaging/windows/generate_binaries.sh +rename to generate_binaries.sh +index f3642c316..e8efc4c8d 100644 +--- a/cmake/packaging/windows/generate_binaries.sh ++++ b/generate_binaries.sh +@@ -3,28 +3,26 @@ + ### + + # Install this cross-compiler toolchain: +-#sudo apt-get install mingw-w64 ++# sudo apt-get install mingw-w64 + + # x86_64 + mkdir build-mingw-64 + cd build-mingw-64 + cmake -DCMAKE_SYSTEM_NAME=Windows \ + -DTOOLCHAIN_PREFIX=x86_64-w64-mingw32 \ +- -DCMAKE_TOOLCHAIN_FILE=./../cmake/modules/set_toolchain.cmake .. ++ -DCMAKE_TOOLCHAIN_FILE=./cmake/modules/set_toolchain.cmake .. + make package + sudo cp dist/*.zip ../build/Release/dist + make clean + cd .. +-rm -rf build-mingw-64 + + # i686 + mkdir build-mingw-32 + cd build-mingw-32 + cmake -DCMAKE_SYSTEM_NAME=Windows \ + -DTOOLCHAIN_PREFIX=i686-w64-mingw32 \ +- -DCMAKE_TOOLCHAIN_FILE=./../cmake/modules/set_toolchain.cmake .. ++ -DCMAKE_TOOLCHAIN_FILE=./cmake/modules/set_toolchain.cmake .. + make package + sudo cp dist/*.zip ../build/Release/dist + make clean + cd .. +-rm -rf build-mingw-32 +diff --git a/mingw64-build.bat b/mingw64-build.bat +index bc50c97a3..735618405 100644 +--- a/mingw64-build.bat ++++ b/mingw64-build.bat +@@ -4,7 +4,7 @@ mkdir build-mingw + cd build-mingw + set PATH=C:\Program Files\CMake\bin;C:\mingw-w64\x86_64-13.2.0-release-win32-seh-msvcrt-rt_v11-rev1\mingw64\bin;%PATH% + cmake -G "MinGW Makefiles" .. +-mingw32-make ++mingw32-make clean + mingw32-make install + mingw32-make package + cd .. +diff --git a/src/stlink-lib/chipid.c b/src/stlink-lib/chipid.c +index c115089a4..0a6a4e9c1 100644 +--- a/src/stlink-lib/chipid.c ++++ b/src/stlink-lib/chipid.c +@@ -65,7 +65,7 @@ void process_chipfile(char *fname) { + return; + } + +- ts = calloc(sizeof(struct stlink_chipid_params), 1); ++ ts = calloc(1, sizeof(struct stlink_chipid_params)); + + while (fgets(buf, sizeof(buf), fp) != NULL) { + +diff --git a/src/stlink-lib/common_flash.c b/src/stlink-lib/common_flash.c +index aa8db5bfd..73c77d090 100644 +--- a/src/stlink-lib/common_flash.c ++++ b/src/stlink-lib/common_flash.c +@@ -1223,7 +1223,7 @@ int32_t stlink_erase_flash_section(stlink_t *sl, stm32_addr_t base_addr, uint32_ + return (-1); + } + +- fprintf(stdout, "-> Flash page at %#x erased (size: %#x)\r", addr, page_size); ++ fprintf(stdout, "-> Flash page at %#x erased (size: %#x)\n", addr, page_size); + fflush(stdout); + + // check the next page is within the range to erase +diff --git a/src/stlink-lib/flash_loader.c b/src/stlink-lib/flash_loader.c +index 16c717ca7..57868db3c 100644 +--- a/src/stlink-lib/flash_loader.c ++++ b/src/stlink-lib/flash_loader.c +@@ -471,7 +471,7 @@ int32_t stm32l1_write_half_pages(stlink_t *sl, flash_loader_t *fl, stm32_addr_t + + if (sl->verbose >= 1) { + // show progress; writing procedure is slow and previous errors are misleading +- fprintf(stdout, "\r%3u/%3u halfpages written", count + 1, num_half_pages); ++ fprintf(stdout, "%3u/%3u halfpages written\n", count + 1, num_half_pages); + fflush(stdout); + } + +@@ -614,7 +614,7 @@ int32_t stlink_flashloader_start(stlink_t *sl, flash_loader_t *fl) { + + int32_t voltage; + if (sl->version.stlink_v == 1) { +- WLOG("STLINK V1 cannot read voltage, use default voltage 3.2V\n"); ++ WLOG("STLINK V1 cannot read voltage, use default voltage 3.2 V\n"); + voltage = 3200; + } else { + voltage = stlink_target_voltage(sl); +@@ -758,7 +758,7 @@ int32_t stlink_flashloader_write(stlink_t *sl, flash_loader_t *fl, stm32_addr_t + uint32_t data; + + if ((off % sl->flash_pgsz) > (sl->flash_pgsz - 5)) { +- fprintf(stdout, "\r%3u/%-3u pages written", (off / sl->flash_pgsz + 1), (len / sl->flash_pgsz)); ++ fprintf(stdout, "%3u/%-3u pages written\n", (off / sl->flash_pgsz + 1), (len / sl->flash_pgsz)); + fflush(stdout); + } + +@@ -780,7 +780,7 @@ int32_t stlink_flashloader_write(stlink_t *sl, flash_loader_t *fl, stm32_addr_t + uint32_t flash_regs_base = get_stm32l0_flash_base(sl); + uint32_t pagesize = (flash_regs_base == FLASH_L0_REGS_ADDR)? L0_WRITE_BLOCK_SIZE : L1_WRITE_BLOCK_SIZE; + +- DLOG("Starting %3u page write\r\n", len / sl->flash_pgsz); ++ DLOG("Starting %3u page write\n", len / sl->flash_pgsz); + + off = 0; + +@@ -797,7 +797,7 @@ int32_t stlink_flashloader_write(stlink_t *sl, flash_loader_t *fl, stm32_addr_t + uint32_t data; + + if ((off % sl->flash_pgsz) > (sl->flash_pgsz - 5)) { +- fprintf(stdout, "\r%3u/%-3u pages written", (off / sl->flash_pgsz + 1), (len / sl->flash_pgsz)); ++ fprintf(stdout, "%3u/%-3u pages written\n", (off / sl->flash_pgsz + 1), (len / sl->flash_pgsz)); + fflush(stdout); + } + +@@ -834,7 +834,7 @@ int32_t stlink_flashloader_write(stlink_t *sl, flash_loader_t *fl, stm32_addr_t + if (sl->verbose >= 1) { + // show progress; writing procedure is slow and previous errors are + // misleading +- fprintf(stdout, "\r%3u/%-3u pages written", ++write_block_count, ++ fprintf(stdout, "%3u/%-3u pages written\n", ++write_block_count, + (len + sl->flash_pgsz - 1) / sl->flash_pgsz); + fflush(stdout); + } +@@ -854,7 +854,7 @@ int32_t stlink_flashloader_write(stlink_t *sl, flash_loader_t *fl, stm32_addr_t + + if (sl->verbose >= 1) { + // show progress +- fprintf(stdout, "\r%u/%u bytes written", off, len); ++ fprintf(stdout, "%u/%u bytes written\n", off, len); + fflush(stdout); + } + } +@@ -902,7 +902,7 @@ int32_t stlink_flashloader_stop(stlink_t *sl, flash_loader_t *fl) { + // enable interrupt + if (!stlink_read_debug32(sl, STLINK_REG_DHCSR, &dhcsr)) { + stlink_write_debug32(sl, STLINK_REG_DHCSR, STLINK_REG_DHCSR_DBGKEY | STLINK_REG_DHCSR_C_DEBUGEN | +- (dhcsr & (~STLINK_REG_DHCSR_C_MASKINTS))); ++ (dhcsr & (~STLINK_REG_DHCSR_C_MASKINTS))); + } + + // restore DMA state diff --git a/stlink.spec b/stlink.spec index ba5e51b..17c351c 100644 --- a/stlink.spec +++ b/stlink.spec @@ -5,13 +5,14 @@ Name: stlink Version: 1.8.0 # Release: 0.1.%{date}git%{gitcommit}%{?dist} -Release: 1%{?dist} +Release: 2%{?dist} Summary: STM32 discovery line Linux programmer License: BSD-3-Clause Url: https://github.com/stlink-org/stlink # Source0: %{url}/tarball/%{gitcommit_full} Source0: %{url}/archive/v%{version}.tar.gz#/%{name}-%{version}.tar.gz +Patch0: 6a6718b3342b6c5e282a4e33325b9f97908a0692.patch BuildRequires: gcc BuildRequires: cmake3 @@ -19,7 +20,7 @@ BuildRequires: pkgconfig(gtk+-3.0) BuildRequires: pkgconfig(udev) BuildRequires: pkgconfig(libusb-1.0) BuildRequires: desktop-file-utils -# BuildRequires: pandoc +BuildRequires: pandoc Requires: pkgconfig(udev) %description @@ -50,6 +51,8 @@ sed -i 's|find_package(libusb REQUIRED)|find_package(libusb REQUIRED)\nset(STLIN # sed -i 's|define STLINK_SERIAL_MAX_SIZE 64|define STLINK_SERIAL_MAX_SIZE 28|' include/stlink.h sed -i 's|static char serialnumber\[28\]|static char serialnumber\[STLINK_SERIAL_MAX_SIZE\]|' src/st-util/gdb-server.c +sed -i 's|CMP0153|CMP0042|' CMakeLists.txt + %build %cmake3 \ -DSTLINK_UDEV_RULES_DIR="%{_udevrulesdir}" \ @@ -89,6 +92,9 @@ desktop-file-validate %{buildroot}%{_datadir}/applications/%{name}-gui.desktop # %{_libdir}/pkgconfig/%{name}.pc %changelog +* Tue Feb 20 2024 Vasiliy N. Glazov - 1.8.0-2 +- Fix build with GCC 14 + * Fri Feb 02 2024 Vasiliy N. Glazov - 1.8.0-1 - Update to 1.8.0