Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .transport.version
Original file line number Diff line number Diff line change
@@ -1 +1 @@
1.1.3
1.1.4
5 changes: 5 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,8 @@
## [0.5.2](https://github.com/rdkcentral/firebolt-cpp-client/compare/v0.5.1...v0.5.2)

### Changed
- **Breaking**: Removed `FetchContent` from the build system. The Firebolt C++ Transport must now be installed separately (along with other dependencies) before building the project.

## [0.5.1](https://github.com/rdkcentral/firebolt-cpp-client/compare/v0.5.0...v0.5.1)

### Changed
Expand Down
48 changes: 6 additions & 42 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -16,21 +16,12 @@

cmake_minimum_required(VERSION 3.12)

include(FetchContent)

list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake")

project(FireboltClient)

include(version)

if(EXISTS "${CMAKE_SOURCE_DIR}/.transport.version")
file(READ "${CMAKE_SOURCE_DIR}/.transport.version" FIREBOLT_TRANSPORT_VERSION)
string(STRIP ${FIREBOLT_TRANSPORT_VERSION} FIREBOLT_TRANSPORT_VERSION)
else()
message(FATAL_ERROR "Could not determine firebolt-cpp-transport version from .transport.version")
endif()

message(STATUS "Project version: ${PROJECT_VERSION}")

option(BUILD_SHARED_LIBS "Build shared libraries" ON)
Expand All @@ -53,42 +44,15 @@ list(APPEND CMAKE_MODULE_PATH
"${SYSROOT_PATH}/usr/lib/cmake"
)

if(NOT TARGET nlohmann_json::nlohmann_json)
find_package(nlohmann_json REQUIRED)
endif()

if(NOT TARGET websocketpp::websocketpp)
find_package(websocketpp REQUIRED)
endif()
find_package(nlohmann_json CONFIG REQUIRED)

find_package(FireboltTransport CONFIG QUIET)
file(READ "${CMAKE_CURRENT_SOURCE_DIR}/.transport.version" FIREBOLT_TRANSPORT_VERSION_RAW)
string(STRIP "${FIREBOLT_TRANSPORT_VERSION_RAW}" FIREBOLT_TRANSPORT_VERSION)
string(REGEX REPLACE "^v?([0-9]+)\\.([0-9]+)\\.([0-9]+).*" "\\1" FIREBOLT_TRANSPORT_MAJOR_VERSION "${FIREBOLT_TRANSPORT_VERSION}")

if(FireboltTransport_FOUND)
check_version_compatibility(FireboltTransport_VERSION_OK "${FireboltTransport_VERSION}" "${FIREBOLT_TRANSPORT_VERSION}")
else()
set(FireboltTransport_VERSION_OK FALSE)
endif()
find_package(FireboltTransport ${FIREBOLT_TRANSPORT_MAJOR_VERSION} CONFIG REQUIRED)

if(FireboltTransport_VERSION_OK)
message(STATUS "Installed FireboltTransport, ${FireboltTransport_VERSION}, matches expected version: ${FIREBOLT_TRANSPORT_VERSION}")
else()
message(STATUS "FireboltTransport version mismatch or not found, expected '${FIREBOLT_TRANSPORT_VERSION}' but found '${FireboltTransport_VERSION}'")
if (BUILD_WITH_INSTALLED_TRANSPORT AND FireboltTransport_FOUND)
message(WARNING "Using installed FireboltTransport version '${FireboltTransport_VERSION}' even though it does not match expected version '${FIREBOLT_TRANSPORT_VERSION}'")
else()
message(STATUS "Will try to fetch it.")
FetchContent_Declare(
FireboltTransport
URL "https://github.com/rdkcentral/firebolt-cpp-transport/releases/download/v${FIREBOLT_TRANSPORT_VERSION}/firebolt-cpp-transport-${FIREBOLT_TRANSPORT_VERSION}.tar.gz"
URL_HASH "SHA256=0a0c9394395a514d3ba6931a6c656886523c6b3f038b0cb991c27c837f0e506e"
DOWNLOAD_EXTRACT_TIMESTAMP true
)
set(ENABLE_TESTS_ORIG ${ENABLE_TESTS})
set(ENABLE_TESTS OFF)
FetchContent_MakeAvailable(FireboltTransport)
set(ENABLE_TESTS ${ENABLE_TESTS_ORIG})
endif()
endif()
message(STATUS "Transport: installed version: ${FireboltTransport_VERSION}, expected: ${FIREBOLT_TRANSPORT_VERSION}")

add_compile_options(-Wall -Wextra -Wpedantic)

Expand Down
33 changes: 0 additions & 33 deletions cmake/version.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -46,36 +46,3 @@ set(VERSION ${PROJECT_VERSION})
string(REGEX REPLACE "^v?([0-9]+)\\.([0-9]+)\\.([0-9]+).*" "\\1" PROJECT_VERSION_MAJOR "${VERSION}")
string(REGEX REPLACE "^v?([0-9]+)\\.([0-9]+)\\.([0-9]+).*" "\\2" PROJECT_VERSION_MINOR "${VERSION}")
string(REGEX REPLACE "^v?([0-9]+)\\.([0-9]+)\\.([0-9]+).*" "\\3" PROJECT_VERSION_PATCH "${VERSION}")

function(check_version_compatibility result_var found_version required_version)
set(FOUND_VERSION_SUFFIX "")
set(FOUND_VERSION_SUFFIX_NO "")
string(REGEX REPLACE "^([0-9]+)\\.([0-9]+)\\.([0-9]+)(-(.*))?" "\\1" FOUND_VERSION_MAJOR "${found_version}")
if (found_version MATCHES "^([0-9]+)\\.([0-9]+)\\.([0-9]+)-([^.]*)(\\.(.*))?")
set(FOUND_VERSION_SUFFIX "${CMAKE_MATCH_4}")
set(FOUND_VERSION_SUFFIX_NO "${CMAKE_MATCH_6}")
endif()

set(REQUIRED_VERSION_SUFFIX "")
set(REQUIRED_VERSION_SUFFIX_NO "")
string(REGEX REPLACE "^([0-9]+)(\\.([0-9]+)(\\.([0-9]+))?)?(-(.*))?" "\\1" REQUIRED_VERSION_MAJOR "${required_version}")
if (required_version MATCHES "^([0-9]+)(\\.[0-9]+(\\.[0-9]+)?)?-([^.]*)(\\.([0-9]+))?")
set(REQUIRED_VERSION_SUFFIX "${CMAKE_MATCH_4}")
set(REQUIRED_VERSION_SUFFIX_NO "${CMAKE_MATCH_6}")
endif()

set(IS_OK FALSE)
if (NOT FOUND_VERSION_MAJOR EQUAL REQUIRED_VERSION_MAJOR)
set(IS_OK FALSE)
elseif(found_version VERSION_LESS required_version)
set(IS_OK FALSE)
elseif(REQUIRED_VERSION_SUFFIX STREQUAL "" AND FOUND_VERSION_SUFFIX STREQUAL "")
set(IS_OK TRUE)
elseif(FOUND_VERSION_SUFFIX STREQUAL REQUIRED_VERSION_SUFFIX)
if(REQUIRED_VERSION_SUFFIX_NO STREQUAL "" OR FOUND_VERSION_SUFFIX_NO GREATER_EQUAL REQUIRED_VERSION_SUFFIX_NO)
set(IS_OK TRUE)
endif()
endif()

set(${result_var} ${IS_OK} PARENT_SCOPE)
endfunction()