From d014ecfae7f5d03cf55286d1414af887ee49c8e8 Mon Sep 17 00:00:00 2001 From: tamasmeszaros Date: Thu, 26 Oct 2023 14:33:33 +0200 Subject: [PATCH] Get rid of LibBGCode deps build and just provide heatshrink as usual --- deps/+LibBGCode/LibBGCode.cmake | 31 ++++++------ deps/+heatshrink/CMakeLists.txt | 82 +++++++++++++++++++++++++++++++ deps/+heatshrink/Config.cmake.in | 5 ++ deps/+heatshrink/heatshrink.cmake | 6 +++ deps/CMakeLists.txt | 2 +- 5 files changed, 111 insertions(+), 15 deletions(-) create mode 100644 deps/+heatshrink/CMakeLists.txt create mode 100644 deps/+heatshrink/Config.cmake.in create mode 100644 deps/+heatshrink/heatshrink.cmake diff --git a/deps/+LibBGCode/LibBGCode.cmake b/deps/+LibBGCode/LibBGCode.cmake index 4ad2f4aa03..3403646e09 100644 --- a/deps/+LibBGCode/LibBGCode.cmake +++ b/deps/+LibBGCode/LibBGCode.cmake @@ -1,24 +1,26 @@ set(LibBGCode_SOURCE_DIR "" CACHE PATH "Optionally specify local LibBGCode source directory") set(_source_dir_line - URL https://github.com/prusa3d/libbgcode/archive/ebbe90b65a5ab6b878e2913cb22f1732838ed4b7.zip - URL_HASH SHA256=72bd2031b822a08c202e8aa78c90048ede5072be34f6c52754077cef16be7295 + URL https://github.com/prusa3d/libbgcode/archive/04556c4f64d4b7a5942d8d193d1eb87fc7e1005f.zip + URL_HASH SHA256=f0745b2dae95f0a49ae75bfbe4d775c751499fc4245864675e2dab06c13b2c8f ) if (LibBGCode_SOURCE_DIR) set(_source_dir_line "SOURCE_DIR;${LibBGCode_SOURCE_DIR};BUILD_ALWAYS;ON") endif () -add_cmake_project(LibBGCode_deps - ${_source_dir_line} - SOURCE_SUBDIR deps - CMAKE_ARGS - -DLibBGCode_Deps_DEP_DOWNLOAD_DIR:PATH=${${PROJECT_NAME}_DEP_DOWNLOAD_DIR} - -DDEP_CMAKE_OPTS:STRING=-DCMAKE_POSITION_INDEPENDENT_CODE:BOOL=ON - -DLibBGCode_Deps_SELECT_ALL:BOOL=OFF - -DLibBGCode_Deps_SELECT_heatshrink:BOOL=ON - -DLibBGCode_Deps_DEP_INSTALL_PREFIX=${${PROJECT_NAME}_DEP_INSTALL_PREFIX} -) +# add_cmake_project(LibBGCode_deps +# ${_source_dir_line} +# SOURCE_SUBDIR deps +# BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR}/ +# CMAKE_ARGS +# -DLibBGCode_Deps_DEP_DOWNLOAD_DIR:PATH=${${PROJECT_NAME}_DEP_DOWNLOAD_DIR} +# -DDEP_CMAKE_OPTS:STRING=-DCMAKE_POSITION_INDEPENDENT_CODE:BOOL=ON +# -DLibBGCode_Deps_SELECT_ALL:BOOL=OFF +# -DLibBGCode_Deps_SELECT_heatshrink:BOOL=ON +# -DCMAKE_BUILD_TYPE:STRING=${CMAKE_BUILD_TYPE} +# -DLibBGCode_Deps_DEP_INSTALL_PREFIX=${${PROJECT_NAME}_DEP_INSTALL_PREFIX} +# ) add_cmake_project(LibBGCode ${_source_dir_line} @@ -27,5 +29,6 @@ add_cmake_project(LibBGCode -DLibBGCode_BUILD_CMD_TOOL:BOOL=OFF ) -set(DEP_LibBGCode_deps_DEPENDS ZLIB Boost) -set(DEP_LibBGCode_DEPENDS LibBGCode_deps) \ No newline at end of file +# set(DEP_LibBGCode_deps_DEPENDS ZLIB Boost) +# set(DEP_LibBGCode_DEPENDS LibBGCode_deps) +set(DEP_LibBGCode_DEPENDS ZLIB Boost heatshrink) diff --git a/deps/+heatshrink/CMakeLists.txt b/deps/+heatshrink/CMakeLists.txt new file mode 100644 index 0000000000..86aa1ddc98 --- /dev/null +++ b/deps/+heatshrink/CMakeLists.txt @@ -0,0 +1,82 @@ +cmake_minimum_required(VERSION 3.10) + +project(heatshrink C) + +add_library(${PROJECT_NAME} heatshrink_decoder.c heatshrink_encoder.c) +add_library(${PROJECT_NAME}_dynalloc heatshrink_decoder.c heatshrink_encoder.c) + +find_library(MATH_LIBRARY m) # Business as usual +if(MATH_LIBRARY) + target_link_libraries(${PROJECT_NAME} PUBLIC ${MATH_LIBRARY}) +endif() + +target_include_directories(${PROJECT_NAME} PUBLIC $) +target_include_directories(${PROJECT_NAME}_dynalloc PUBLIC $) + +target_compile_definitions(${PROJECT_NAME} PUBLIC HEATSHRINK_DYNAMIC_ALLOC=0) +target_compile_definitions(${PROJECT_NAME}_dynalloc PUBLIC HEATSHRINK_DYNAMIC_ALLOC=1) + +if (UNIX) + add_executable(${PROJECT_NAME}_cmd heatshrink.c) + target_link_libraries(${PROJECT_NAME}_cmd ${PROJECT_NAME}_dynalloc) + set_target_properties(${PROJECT_NAME}_cmd PROPERTIES OUTPUT_NAME ${PROJECT_NAME}) +endif () + +# Installation and export: + +include(CMakePackageConfigHelpers) + +write_basic_package_version_file( + "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake" + VERSION 0.4.1 + COMPATIBILITY AnyNewerVersion +) + +set(_exported_targets ${PROJECT_NAME} ${PROJECT_NAME}_dynalloc) +if (UNIX) + list(APPEND _exported_targets ${PROJECT_NAME}_cmd) +endif () + +install(TARGETS ${_exported_targets} + EXPORT ${PROJECT_NAME}Targets +) + +export(EXPORT ${PROJECT_NAME}Targets + FILE "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Targets.cmake" + NAMESPACE ${PROJECT_NAME}:: +) + +include(GNUInstallDirs) +set(ConfigPackageLocation ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}) + +configure_package_config_file(${CMAKE_CURRENT_SOURCE_DIR}/Config.cmake.in + "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmake" + INSTALL_DESTINATION ${ConfigPackageLocation} +) + +install( + FILES + heatshrink_common.h + heatshrink_config.h + heatshrink_encoder.h + heatshrink_decoder.h + DESTINATION + include/${PROJECT_NAME} + ) + +install(EXPORT ${PROJECT_NAME}Targets + FILE + ${PROJECT_NAME}Targets.cmake + NAMESPACE + ${PROJECT_NAME}:: + DESTINATION + ${ConfigPackageLocation} +) + +install( + FILES + "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmake" + "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake" + DESTINATION + ${ConfigPackageLocation} +) \ No newline at end of file diff --git a/deps/+heatshrink/Config.cmake.in b/deps/+heatshrink/Config.cmake.in new file mode 100644 index 0000000000..7ace8c5c1d --- /dev/null +++ b/deps/+heatshrink/Config.cmake.in @@ -0,0 +1,5 @@ +@PACKAGE_INIT@ + +if (EXISTS ${CMAKE_CURRENT_LIST_DIR}/@PROJECT_NAME@Targets.cmake) + include("${CMAKE_CURRENT_LIST_DIR}/@PROJECT_NAME@Targets.cmake") +endif () \ No newline at end of file diff --git a/deps/+heatshrink/heatshrink.cmake b/deps/+heatshrink/heatshrink.cmake new file mode 100644 index 0000000000..08917a609c --- /dev/null +++ b/deps/+heatshrink/heatshrink.cmake @@ -0,0 +1,6 @@ +add_cmake_project(heatshrink + URL https://github.com/atomicobject/heatshrink/archive/refs/tags/v0.4.1.zip + URL_HASH SHA256=2e2db2366bdf36cb450f0b3229467cbc6ea81a8c690723e4227b0b46f92584fe + PATCH_COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_LIST_DIR}/CMakeLists.txt ./CMakeLists.txt && + ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_LIST_DIR}/Config.cmake.in ./Config.cmake.in +) \ No newline at end of file diff --git a/deps/CMakeLists.txt b/deps/CMakeLists.txt index 6972c0920c..8cd09bbbc8 100644 --- a/deps/CMakeLists.txt +++ b/deps/CMakeLists.txt @@ -229,7 +229,7 @@ if (DEP_DEBUG AND NOT CMAKE_BUILD_TYPE STREQUAL "Debug") # Exclude the libraries which have no problem to link to Debug builds in # Release mode (mostly C libraries) - set(DEP_DEBUG_EXCLUDES GMP MPFR OpenSSL NanoSVG TIFF JPEG ZLIB) + set(DEP_DEBUG_EXCLUDES GMP MPFR OpenSSL NanoSVG TIFF JPEG ZLIB heatshrink) if (UNIX) # Making a separate debug build on Unix of wx is a nightmare list(APPEND DEP_DEBUG_EXCLUDES wxWidgets)