Clone of https://github.com/NixOS/nixpkgs.git (to stress-test knotserver)
1diff --git a/.github/workflows/push-master.yml b/.github/workflows/push-master.yml 2index 6007f64..a98a23c 100644 3--- a/.github/workflows/push-master.yml 4+++ b/.github/workflows/push-master.yml 5@@ -2,7 +2,7 @@ name: HyperHDR CI Build 6 7 on: 8 push: 9-# pull_request: 10+ pull_request: 11 12 env: 13 USE_CACHE: ${{ vars.USE_CACHE && vars.USE_CACHE || true }} 14@@ -109,6 +109,7 @@ jobs: 15 16 - name: Clear branch ccache storage 17 uses: yumemi-inc/clean-cache-action@v1 18+ continue-on-error: true 19 with: 20 ref: ${{ github.event.ref }} 21 key: ${{ matrix.linuxVersion }}-${{ matrix.dockerImage }}-ccache- 22@@ -193,6 +194,7 @@ jobs: 23 24 - name: Clear branch ccache storage 25 uses: yumemi-inc/clean-cache-action@v1 26+ continue-on-error: true 27 with: 28 ref: ${{ github.event.ref }} 29 key: macOS-ccache-${{ matrix.NICE_NAME }} 30@@ -284,6 +286,7 @@ jobs: 31 32 - name: Clear branch ccache storage 33 uses: yumemi-inc/clean-cache-action@v1 34+ continue-on-error: true 35 with: 36 ref: ${{ github.event.ref }} 37 key: ${{ runner.os }}-ccache 38diff --git a/BUILDING.md b/BUILDING.md 39index 0347079..759cd6a 100644 40--- a/BUILDING.md 41+++ b/BUILDING.md 42@@ -44,6 +44,10 @@ Use -D prefix when configuring the build. 43 * USE_CCACHE_CACHING = ON | OFF, enable CCache support if available 44 * USE_SYSTEM_MQTT_LIBS = ON | OFF, prefer system qMQTT libs 45 * USE_SYSTEM_FLATBUFFERS_LIBS = ON | OFF, prefer system Flatbuffers libs 46+ * USE_SYSTEM_SDBUS_CPP_LIBS = ON | OFF, prefer system sdbus_c++ libs 47+ * USE_SYSTEM_LUNASVG_LIBS = ON | OFF, prefer system lunasvg libs 48+ * USE_SYSTEM_NANOPB_LIBS = ON | OFF, prefer system nanopb libs 49+ * USE_SYSTEM_STB_LIBS = ON | OFF, prefer system stb libs 50 * USE_STATIC_QT_PLUGINS = ON | OFF, embed static QT-plugins into the application 51 * USE_STANDARD_INSTALLER_NAME = ON | OFF, use standard Linux package naming 52 53diff --git a/CMakeLists.txt b/CMakeLists.txt 54index b918a81..fbf8d6b 100644 55--- a/CMakeLists.txt 56+++ b/CMakeLists.txt 57@@ -34,6 +34,10 @@ SET ( DEFAULT_PROTOBUF ON ) 58 SET ( DEFAULT_WS281XPWM OFF ) 59 SET ( DEFAULT_USE_SYSTEM_FLATBUFFERS_LIBS ON ) 60 SET ( DEFAULT_USE_SYSTEM_MQTT_LIBS OFF ) 61+SET ( DEFAULT_USE_SYSTEM_SDBUS_CPP_LIBS OFF ) 62+SET ( DEFAULT_USE_SYSTEM_LUNASVG_LIBS OFF ) 63+SET ( DEFAULT_USE_SYSTEM_NANOPB_LIBS OFF ) 64+SET ( DEFAULT_USE_SYSTEM_STB_LIBS OFF ) 65 SET ( DEFAULT_MF OFF ) 66 SET ( DEFAULT_DX OFF ) 67 SET ( DEFAULT_AVF OFF ) 68@@ -509,6 +513,18 @@ colorMe("USE_SYSTEM_MQTT_LIBS = " ${USE_SYSTEM_MQTT_LIBS}) 69 option(USE_SYSTEM_FLATBUFFERS_LIBS "Use system flatbuffers libs" ${DEFAULT_USE_SYSTEM_FLATBUFFERS_LIBS}) 70 colorMe("USE_SYSTEM_FLATBUFFERS_LIBS = " ${USE_SYSTEM_FLATBUFFERS_LIBS}) 71 72+option(USE_SYSTEM_SDBUS_CPP_LIBS "Use system sdbus-c++ libs" ${DEFAULT_USE_SYSTEM_SDBUS_CPP_LIBS}) 73+colorMe("USE_SYSTEM_SDBUS_CPP_LIBS = " ${USE_SYSTEM_SDBUS_CPP_LIBS}) 74+ 75+option(USE_SYSTEM_LUNASVG_LIBS "Use system lunasvg libs" ${DEFAULT_USE_SYSTEM_LUNASVG_LIBS}) 76+colorMe("USE_SYSTEM_LUNASVG_LIBS = " ${USE_SYSTEM_LUNASVG_LIBS}) 77+ 78+option(USE_SYSTEM_NANOPB_LIBS "Use system nanopb libs" ${DEFAULT_USE_SYSTEM_NANOPB_LIBS}) 79+colorMe("USE_SYSTEM_NANOPB_LIBS = " ${USE_SYSTEM_NANOPB_LIBS}) 80+ 81+option(USE_SYSTEM_STB_LIBS "Use system stb libs" ${DEFAULT_USE_SYSTEM_STB_LIBS}) 82+colorMe("USE_SYSTEM_STB_LIBS = " ${USE_SYSTEM_STB_LIBS}) 83+ 84 option(USE_STATIC_QT_PLUGINS "Enable static QT plugins" ${DEFAULT_STATIC_QT_PLUGINS}) 85 colorMe("USE_STATIC_QT_PLUGINS = " ${USE_STATIC_QT_PLUGINS}) 86 87diff --git a/external/CMakeLists.txt b/external/CMakeLists.txt 88index b4d23ad..38acea2 100644 89--- a/external/CMakeLists.txt 90+++ b/external/CMakeLists.txt 91@@ -38,7 +38,7 @@ set_target_properties(sqlite3 PROPERTIES 92 target_compile_definitions(sqlite3 PUBLIC 93 SQLITE_THREADSAFE=2 94 SQLITE_DEFAULT_MEMSTATUS=0 95- SQLITE_DEFAULT_SYNCHRONOUS=3 96+ SQLITE_DEFAULT_SYNCHRONOUS=3 97 SQLITE_OMIT_AUTHORIZATION 98 SQLITE_OMIT_DEPRECATED 99 ) 100@@ -47,23 +47,32 @@ target_compile_definitions(sqlite3 PUBLIC 101 # Protobuf-nanopb 102 #============================================================================= 103 104-set(PROTOBUF-NANOPB-SOURCES 105- ${CMAKE_CURRENT_SOURCE_DIR}/nanopb/pb.h 106- ${CMAKE_CURRENT_SOURCE_DIR}/nanopb/pb_common.h 107- ${CMAKE_CURRENT_SOURCE_DIR}/nanopb/pb_common.c 108- ${CMAKE_CURRENT_SOURCE_DIR}/nanopb/pb_encode.h 109- ${CMAKE_CURRENT_SOURCE_DIR}/nanopb/pb_encode.c 110- ${CMAKE_CURRENT_SOURCE_DIR}/nanopb/pb_decode.h 111- ${CMAKE_CURRENT_SOURCE_DIR}/nanopb/pb_decode.c) 112- 113-add_library(protobuf-nanopb OBJECT ${PROTOBUF-NANOPB-SOURCES}) 114-set_target_properties(protobuf-nanopb PROPERTIES OUTPUT_NAME protobuf-nanopb) 115-install(TARGETS protobuf-nanopb EXPORT nanopb-targets 116- ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) 117+if (USE_SYSTEM_NANOPB_LIBS) 118+ find_package(nanopb) 119+ if (NOT nanopb_FOUND) 120+ message(WARNING "Could NOT find nanopb system libraries. Fallback to nanopb submodule.") 121+ endif() 122+endif() 123 124-target_include_directories(protobuf-nanopb INTERFACE 125- $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}/nanopb> 126- $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>) 127+if (NOT USE_SYSTEM_NANOPB_LIBS OR NOT nanopb_FOUND) 128+ set(PROTOBUF-NANOPB-SOURCES 129+ ${CMAKE_CURRENT_SOURCE_DIR}/nanopb/pb.h 130+ ${CMAKE_CURRENT_SOURCE_DIR}/nanopb/pb_common.h 131+ ${CMAKE_CURRENT_SOURCE_DIR}/nanopb/pb_common.c 132+ ${CMAKE_CURRENT_SOURCE_DIR}/nanopb/pb_encode.h 133+ ${CMAKE_CURRENT_SOURCE_DIR}/nanopb/pb_encode.c 134+ ${CMAKE_CURRENT_SOURCE_DIR}/nanopb/pb_decode.h 135+ ${CMAKE_CURRENT_SOURCE_DIR}/nanopb/pb_decode.c) 136+ 137+ add_library(protobuf-nanopb OBJECT ${PROTOBUF-NANOPB-SOURCES}) 138+ set_target_properties(protobuf-nanopb PROPERTIES OUTPUT_NAME protobuf-nanopb) 139+ install(TARGETS protobuf-nanopb EXPORT nanopb-targets 140+ ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) 141+ 142+ target_include_directories(protobuf-nanopb INTERFACE 143+ $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}/nanopb> 144+ $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>) 145+endif() 146 147 #============================================================================= 148 # RPi ws281x 149@@ -75,7 +84,7 @@ if(ENABLE_WS281XPWM) 150 string(REPLACE "configure_file(version.h.in version.h)" [=[configure_file(${CMAKE_CURRENT_SOURCE_DIR}/version.h.in ${CMAKE_CURRENT_SOURCE_DIR}/version.h)]=] FILE_CONTENTS "${FILE_CONTENTS}") 151 file(WRITE "${CMAKE_CURRENT_SOURCE_DIR}/rpi_ws281x/CMakeLists.txt" "${FILE_CONTENTS}") 152 153- add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/rpi_ws281x) 154+ add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/rpi_ws281x) 155 endif() 156 157 #============================================================================= 158@@ -90,11 +99,22 @@ target_include_directories(linalg INTERFACE "${CMAKE_CURRENT_SOURCE_DIR}/linalg" 159 # LUNASVG 160 #============================================================================= 161 162- 163 set(no_dev_warnings_backup "$CACHE{CMAKE_WARN_DEPRECATED}") 164 set(CMAKE_WARN_DEPRECATED OFF CACHE INTERNAL "" FORCE) 165-add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/lunasvg) 166-set_target_properties(lunasvg PROPERTIES POSITION_INDEPENDENT_CODE ON) 167+ 168+if (USE_SYSTEM_LUNASVG_LIBS) 169+ find_package(lunasvg GLOBAL) 170+ if (NOT lunasvg_FOUND) 171+ message(WARNING "Could NOT find lunasvg system libraries. Fallback to lunasvg submodule.") 172+ endif() 173+endif() 174+ 175+if (NOT USE_SYSTEM_LUNASVG_LIBS OR NOT lunasvg_FOUND) 176+ add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/lunasvg) 177+ set_target_properties(lunasvg PROPERTIES POSITION_INDEPENDENT_CODE ON) 178+ set_target_properties(plutovg PROPERTIES POSITION_INDEPENDENT_CODE ON) 179+endif() 180+ 181 set(CMAKE_WARN_DEPRECATED ${no_dev_warnings_backup} CACHE INTERNAL "" FORCE) 182 183 #============================================================================= 184@@ -125,7 +145,7 @@ if (NOT USE_SYSTEM_FLATBUFFERS_LIBS OR CMAKE_CROSSCOMPILING) 185 cmake_policy(PUSH) 186 187 set(CMAKE_POLICY_DEFAULT_CMP0071 NEW) 188- set(FLATBUFFERS_BUILD_TESTS OFF CACHE BOOL "") 189+ set(FLATBUFFERS_BUILD_TESTS OFF CACHE BOOL "") 190 191 if (NOT CMAKE_CROSSCOMPILING AND USE_PRECOMPILED_HEADERS) 192 set(FLATBUFFERS_ENABLE_PCH ON CACHE BOOL "") 193@@ -142,7 +162,7 @@ if (NOT USE_SYSTEM_FLATBUFFERS_LIBS OR CMAKE_CROSSCOMPILING) 194 unset(FLATBUFFERS_FLATC_EXECUTABLE) 195 set(FLATBUFFERS_BUILD_FLATC OFF CACHE BOOL "") 196 set(FLATBUFFERS_BUILD_FLATHASH OFF CACHE BOOL "") 197- set(FLATBUFFERS_HOST_FLATBUFFERS_DIR ${CMAKE_CURRENT_BINARY_DIR}/host_flatc) 198+ set(FLATBUFFERS_HOST_FLATBUFFERS_DIR ${CMAKE_CURRENT_BINARY_DIR}/host_flatc) 199 file(MAKE_DIRECTORY ${FLATBUFFERS_HOST_FLATBUFFERS_DIR}) 200 201 EXECUTE_PROCESS ( WORKING_DIRECTORY ${FLATBUFFERS_HOST_FLATBUFFERS_DIR} RESULT_VARIABLE EXEC_RES 202@@ -168,7 +188,7 @@ if (NOT USE_SYSTEM_FLATBUFFERS_LIBS OR CMAKE_CROSSCOMPILING) 203 set(FLATBUFFERS_FLATC_EXECUTABLE "$<TARGET_FILE:flatc>") 204 else() 205 message( STATUS "Using host flatc compiler: ${FLATBUFFERS_FLATC_EXECUTABLE}") 206- endif() 207+ endif() 208 209 cmake_policy(POP) 210 endif() 211@@ -177,7 +197,7 @@ set(FLATBUFFERS_FLATC_EXECUTABLE ${FLATBUFFERS_FLATC_EXECUTABLE} PARENT_SCOPE) 212 set(FLATBUFFERS_INCLUDE_DIRS ${FLATBUFFERS_INCLUDE_DIRS} PARENT_SCOPE) 213 include_directories(${FLATBUFFERS_INCLUDE_DIRS}) 214 215-if (FLATBUFFERS_INCLUDE_DIRS AND EXISTS "${FLATBUFFERS_INCLUDE_DIRS}/../package.json") 216+if (FLATBUFFERS_INCLUDE_DIRS AND EXISTS "${FLATBUFFERS_INCLUDE_DIRS}/../package.json") 217 file(STRINGS "${FLATBUFFERS_INCLUDE_DIRS}/../package.json" _FLATBUFFERS_VERSION_STRING REGEX "^[ \t\r\n]+\"version\":[ \t\r\n]+\"[0-9]+.[0-9]+.[0-9]+\",") 218 string(REGEX REPLACE "^[ \t\r\n]+\"version\":[ \t\r\n]+\"([0-9]+.[0-9]+.[0-9]+)\"," "\\1" FLATBUFFERS_PARSE_VERSION "${_FLATBUFFERS_VERSION_STRING}") 219 message(STATUS "Using flatbuffers libraries version: \"${FLATBUFFERS_PARSE_VERSION}\"") 220@@ -220,7 +240,7 @@ if ( ENABLE_MQTT ) 221 # HyperHDR workaround for fixed Qt5 version 222 file(READ "${CMAKE_CURRENT_SOURCE_DIR}/qmqtt/CMakeLists.txt" FILE_CONTENTS) 223 string(REPLACE "Qt5" "Qt${Qt_VERSION}" FILE_CONTENTS "${FILE_CONTENTS}") 224- string(REPLACE "find_package" "#find_package" FILE_CONTENTS "${FILE_CONTENTS}") 225+ string(REPLACE "find_package" "#find_package" FILE_CONTENTS "${FILE_CONTENTS}") 226 file(WRITE "${CMAKE_CURRENT_SOURCE_DIR}/qmqtt/CMakeLists.txt" "${FILE_CONTENTS}") 227 228 cmake_policy(PUSH) 229@@ -261,17 +281,41 @@ ENDIF() 230 #============================================================================= 231 232 if (UNIX AND NOT APPLE AND (ENABLE_POWER_MANAGEMENT OR ENABLE_PIPEWIRE)) 233- set(SDBUSCPP_BUILD_DOCS OFF CACHE BOOL "No doc") 234- add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/sdbus-cpp) 235- set_target_properties(sdbus-c++-objlib PROPERTIES POSITION_INDEPENDENT_CODE ON) 236+ if (USE_SYSTEM_SDBUS_CPP_LIBS) 237+ pkg_check_modules (sdbus-c++ sdbus-c++>=2.0.0) 238+ 239+ if(NOT sdbus-c++_FOUND) 240+ message( WARNING "Could not find: sdbus-c++>=2.0.0. Fallback to sdbus-c++ submodule." ) 241+ endif() 242+ endif() 243+ 244+ if(NOT sdbus-c++_FOUND) 245+ message( "Using sdbus-c++ submodule." ) 246+ set(SDBUSCPP_BUILD_DOCS OFF CACHE BOOL "No doc") 247+ add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/sdbus-cpp) 248+ set_target_properties(sdbus-c++-objlib PROPERTIES POSITION_INDEPENDENT_CODE ON) 249+ endif() 250 endif() 251 252 #============================================================================= 253 # STB 254 #============================================================================= 255 256-add_library(stb INTERFACE ) 257-target_include_directories(stb INTERFACE ${CMAKE_CURRENT_SOURCE_DIR}/stb) 258+add_library(stb INTERFACE) 259+ 260+if (USE_SYSTEM_STB_LIBS) 261+ find_path(STB_INCLUDE_DIR stb_image.h PATH_SUFFIXES stb) 262+ if (NOT STB_INCLUDE_DIR) 263+ message(WARNING "Could NOT find system STB libraries. Falling back to embedded STB.") 264+ target_include_directories(stb INTERFACE ${CMAKE_CURRENT_SOURCE_DIR}/stb) 265+ else() 266+ message(STATUS "Found system STB libraries: ${STB_INCLUDE_DIR}") 267+ target_include_directories(stb INTERFACE ${STB_INCLUDE_DIR}) 268+ endif() 269+else() 270+ target_include_directories(stb INTERFACE ${CMAKE_CURRENT_SOURCE_DIR}/stb) 271+endif() 272+ 273 target_compile_definitions(stb INTERFACE 274 STB_IMAGE_WRITE_IMPLEMENTATION 275 STB_IMAGE_IMPLEMENTATION 276diff --git a/sources/utils-image/CMakeLists.txt b/sources/utils-image/CMakeLists.txt 277index b5ad570..5c9b506 100644 278--- a/sources/utils-image/CMakeLists.txt 279+++ b/sources/utils-image/CMakeLists.txt 280@@ -29,13 +29,13 @@ else() 281 add_library(utils-image STATIC ${utils_image_SOURCES}) 282 endif() 283 284-target_include_directories(utils-image PRIVATE stb lunasvg TurboJPEG::TurboJPEG) 285+target_include_directories(utils-image PRIVATE stb lunasvg::lunasvg TurboJPEG::TurboJPEG) 286 287 target_link_libraries(utils-image PRIVATE 288 Qt${Qt_VERSION}::Core 289 Qt${Qt_VERSION}::Network 290 stb 291- lunasvg 292+ lunasvg::lunasvg 293 image 294 TurboJPEG::TurboJPEG 295 )