Browse Source

Get rid of LibBGCode deps build and just provide heatshrink as usual

tamasmeszaros 1 year ago
parent
commit
d014ecfae7

+ 17 - 14
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)
+# set(DEP_LibBGCode_deps_DEPENDS ZLIB Boost)
+# set(DEP_LibBGCode_DEPENDS LibBGCode_deps)
+set(DEP_LibBGCode_DEPENDS ZLIB Boost heatshrink)

+ 82 - 0
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 $<INSTALL_INTERFACE:include>)
+target_include_directories(${PROJECT_NAME}_dynalloc PUBLIC $<INSTALL_INTERFACE:include>)
+
+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}
+)

+ 5 - 0
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 ()

+ 6 - 0
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
+)

+ 1 - 1
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)