diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 00000000..7d693d28 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,30 @@ +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 to prevent conflicts with coreMQTT +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() + +target_link_libraries(core_http INTERFACE coremqtt_corehttp_transport_interface) 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} )