From 187f4b569b4abde4586e530e9d17b0419a195a08 Mon Sep 17 00:00:00 2001 From: czjaso Date: Mon, 26 Jan 2026 11:48:46 -0800 Subject: [PATCH 1/4] Add CMakeLists.txt for coreHTTP library --- CMakeLists.txt | 27 +++++++++++++++++++++++++++ httpFilePaths.cmake | 14 +++++++++++--- 2 files changed, 38 insertions(+), 3 deletions(-) create mode 100644 CMakeLists.txt diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 00000000..3792cff6 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,27 @@ +cmake_minimum_required(VERSION 3.15) + +project(coreHTTP LANGUAGES C) + +# ------------------------------------------------------------------------------ +# Includes +# ------------------------------------------------------------------------------ + +include(${CMAKE_CURRENT_LIST_DIR}/httpFilePaths.cmake) + +# ------------------------------------------------------------------------------ +# Library targets +# ------------------------------------------------------------------------------ + +add_library(core_http INTERFACE) + +target_sources(core_http INTERFACE ${HTTP_SOURCES}) + +target_include_directories(core_http INTERFACE ${HTTP_INCLUDE_NO_INTERFACE_PUBLIC_DIRS}) + +# Separate transport interface library +if(NOT TARGET coremqtt_corehttp_transport_interface) + add_library(coremqtt_corehttp_transport_interface INTERFACE) + + target_include_directories(coremqtt_corehttp_transport_interface INTERFACE + ${HTTP_TRANSPORT_INTERFACE_INCLUDE_DIRS}) +endif() diff --git a/httpFilePaths.cmake b/httpFilePaths.cmake index 38418f96..68e70ccf 100644 --- a/httpFilePaths.cmake +++ b/httpFilePaths.cmake @@ -12,8 +12,16 @@ set( HTTP_SOURCES ${CMAKE_CURRENT_LIST_DIR}/source/dependency/3rdparty/llhttp/src/llhttp.c ${CMAKE_CURRENT_LIST_DIR}/source/dependency/3rdparty/llhttp/src/http.c ) -# HTTP library public include directories. -set( HTTP_INCLUDE_PUBLIC_DIRS +# HTTP library public include directories without transport interface. +set( HTTP_INCLUDE_NO_INTERFACE_PUBLIC_DIRS ${CMAKE_CURRENT_LIST_DIR}/source/include - ${CMAKE_CURRENT_LIST_DIR}/source/interface ${CMAKE_CURRENT_LIST_DIR}/source/dependency/3rdparty/llhttp/include ) + +# Transport interface include directory. +set( HTTP_TRANSPORT_INTERFACE_INCLUDE_DIRS + ${CMAKE_CURRENT_LIST_DIR}/source/interface ) + +# HTTP library public include directories. +set( HTTP_INCLUDE_PUBLIC_DIRS + ${HTTP_INCLUDE_NO_INTERFACE_PUBLIC_DIRS} + ${HTTP_TRANSPORT_INTERFACE_INCLUDE_DIRS} ) From b1fd51bd3761db5f0911f435a28b423f67ec2327 Mon Sep 17 00:00:00 2001 From: czjaso Date: Mon, 26 Jan 2026 12:23:33 -0800 Subject: [PATCH 2/4] Fix formatting. --- CMakeLists.txt | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 3792cff6..f58b4c75 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -16,12 +16,13 @@ add_library(core_http INTERFACE) target_sources(core_http INTERFACE ${HTTP_SOURCES}) -target_include_directories(core_http INTERFACE ${HTTP_INCLUDE_NO_INTERFACE_PUBLIC_DIRS}) +target_include_directories(core_http + INTERFACE ${HTTP_INCLUDE_NO_INTERFACE_PUBLIC_DIRS}) -# Separate transport interface library +# Separate transport interface library to prevent conflicts with coreMQTT if(NOT TARGET coremqtt_corehttp_transport_interface) - add_library(coremqtt_corehttp_transport_interface INTERFACE) + add_library(coremqtt_corehttp_transport_interface INTERFACE) - target_include_directories(coremqtt_corehttp_transport_interface INTERFACE - ${HTTP_TRANSPORT_INTERFACE_INCLUDE_DIRS}) + target_include_directories(coremqtt_corehttp_transport_interface + INTERFACE ${HTTP_TRANSPORT_INTERFACE_INCLUDE_DIRS}) endif() From a451ed6bfa359656652f27076d5596a43301231b Mon Sep 17 00:00:00 2001 From: czjaso Date: Mon, 26 Jan 2026 13:25:12 -0800 Subject: [PATCH 3/4] Update core_http target to link to transport interface. --- CMakeLists.txt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index f58b4c75..ee99f796 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -26,3 +26,5 @@ if(NOT TARGET coremqtt_corehttp_transport_interface) target_include_directories(coremqtt_corehttp_transport_interface INTERFACE ${HTTP_TRANSPORT_INTERFACE_INCLUDE_DIRS}) endif() + +target_link_libraries(core_http PUBLIC coremqtt_corehttp_transport_interface) From b3c4dacd95826c42e0a5fe6f7fd4dac5a68daedf Mon Sep 17 00:00:00 2001 From: czjaso Date: Mon, 26 Jan 2026 13:26:45 -0800 Subject: [PATCH 4/4] Fix INTERFACE library link --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index ee99f796..7d693d28 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -27,4 +27,4 @@ if(NOT TARGET coremqtt_corehttp_transport_interface) INTERFACE ${HTTP_TRANSPORT_INTERFACE_INCLUDE_DIRS}) endif() -target_link_libraries(core_http PUBLIC coremqtt_corehttp_transport_interface) +target_link_libraries(core_http INTERFACE coremqtt_corehttp_transport_interface)