--- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -79,6 +79,7 @@ include(EnableCcache) # Configuration # +option(HTTP_STORAGE_BACKEND "Enable HTTP remote storage" OFF) option(REDIS_STORAGE_BACKEND "Enable Redis remote storage" ON) option(ENABLE_TESTING "Enable tests" ON) @@ -174,7 +175,7 @@ message(STATUS) message(STATUS "Configuration summary:") message(STATUS " Storage backends:") message(STATUS " file ON") -message(STATUS " http ON") +message(STATUS " http ${HTTP_STORAGE_BACKEND}") message(STATUS " redis ${REDIS_STORAGE_BACKEND}") message(STATUS " Dependencies:") print_dependency_summary(" ") --- a/cmake/Dependencies.cmake +++ b/cmake/Dependencies.cmake @@ -21,7 +21,9 @@ if(FETCHCONTENT_FULLY_DISCONNECTED) endif() find_package(Blake3 1.4.0 MODULE REQUIRED) +if(HTTP_STORAGE_BACKEND) find_package(CppHttplib 0.10.6 MODULE REQUIRED) +endif() find_package(Fmt 8.0.0 MODULE REQUIRED) find_package(NonstdSpan 0.10.3 MODULE REQUIRED) find_package(TlExpected 1.1.0 MODULE REQUIRED) --- a/src/ccache/CMakeLists.txt +++ b/src/ccache/CMakeLists.txt @@ -51,7 +51,6 @@ target_link_libraries( dep_tlexpected dep_xxhash PRIVATE - dep_cpphttplib dep_zstd standard_settings standard_warnings @@ -65,6 +64,10 @@ endif() get_filename_component(SRC_DIR ${CMAKE_CURRENT_SOURCE_DIR} DIRECTORY) target_include_directories(ccache_framework PUBLIC ${CMAKE_BINARY_DIR} ${SRC_DIR}) +if(HTTP_STORAGE_BACKEND) + target_compile_definitions(ccache_framework PUBLIC -DHAVE_HTTP_STORAGE_BACKEND) + target_link_libraries(ccache_framework PRIVATE dep_cpphttplib) +endif() if(REDIS_STORAGE_BACKEND) target_compile_definitions(ccache_framework PUBLIC -DHAVE_REDIS_STORAGE_BACKEND) target_link_libraries(ccache_framework PRIVATE dep_hiredis) --- a/src/ccache/storage/Storage.cpp +++ b/src/ccache/storage/Storage.cpp @@ -23,7 +23,9 @@ #include #include #include +#ifdef HAVE_HTTP_STORAGE_BACKEND #include +#endif #ifdef HAVE_REDIS_STORAGE_BACKEND # include #endif @@ -52,7 +54,9 @@ const std::unordered_map> k_remote_storage_implementations = { {"file", std::make_shared()}, +#ifdef HAVE_HTTP_STORAGE_BACKEND {"http", std::make_shared()}, +#endif #ifdef HAVE_REDIS_STORAGE_BACKEND {"redis", std::make_shared()}, {"redis+unix", std::make_shared()}, --- a/src/ccache/storage/remote/CMakeLists.txt +++ b/src/ccache/storage/remote/CMakeLists.txt @@ -1,10 +1,12 @@ set( sources FileStorage.cpp - HttpStorage.cpp RemoteStorage.cpp ) +if(HTTP_STORAGE_BACKEND) + list(APPEND sources HttpStorage.cpp) +endif() if(REDIS_STORAGE_BACKEND) list(APPEND sources RedisStorage.cpp) endif()