summaryrefslogtreecommitdiff
path: root/CMakeLists.txt
diff options
context:
space:
mode:
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r--CMakeLists.txt76
1 files changed, 76 insertions, 0 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
new file mode 100644
index 0000000..41fa3bc
--- /dev/null
+++ b/CMakeLists.txt
@@ -0,0 +1,76 @@
+cmake_minimum_required(VERSION 3.21 FATAL_ERROR)
+
+project(sqlite-http-c VERSION 0.1.0 LANGUAGES C)
+
+if(UNIX)
+ set(HTTP_BACKEND_CURL_DEFAULT TRUE)
+endif()
+
+if(WIN32)
+ set(HTTP_BACKEND_WINHTTP_DEFAULT TRUE)
+endif()
+
+option(HTTP_BACKEND_CURL "Enable curl backend" ${HTTP_BACKEND_CURL_DEFAULT})
+option(HTTP_BACKEND_WINHTTP "Enable WinHTTP backend" ${HTTP_BACKEND_WINHTTP_DEFAULT})
+option(HTTP_BUILD_STATIC "Build a static library" OFF)
+option(HTTP_BUILD_SHARED "Build a shared library" ON)
+
+if(PROJECT_IS_TOP_LEVEL)
+ add_executable(amalgamate src/amalgamate.c)
+
+ add_custom_command(
+ OUTPUT "${CMAKE_CURRENT_SOURCE_DIR}/http.c"
+ COMMAND amalgamate
+ DEPENDS
+ src/amalgamate.c
+ src/http.c
+ src/http.h
+ src/http_backend_curl.c
+ src/http_backend_dummy.c
+ src/http_backend_winhttp.c
+ src/http_next_header.c
+ WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
+ )
+endif()
+
+include(FetchContent)
+
+FetchContent_Declare(
+ sqlite
+ URL https://sqlite.org/2022/sqlite-amalgamation-3390200.zip
+ URL_HASH SHA3_256=deb2abef617b6305525e3b1a2b39a5dc095ffb62f243b4d1b468ba5f41900ce7
+)
+
+FetchContent_MakeAvailable(sqlite)
+
+if(HTTP_BUILD_STATIC)
+ add_library(sqlite-http-c-static STATIC "http.c")
+ target_include_directories(sqlite-http-c-static PRIVATE ${sqlite_SOURCE_DIR})
+ if(HTTP_BACKEND_CURL)
+ target_compile_definitions(sqlite-http-c-static PRIVATE HTTP_BACKEND_CURL)
+ endif()
+ if(HTTP_BACKEND_WINHTTP)
+ target_compile_definitions(sqlite-http-c-static PRIVATE HTTP_BACKEND_WINHTTP)
+ target_link_libraries(sqlite-http-c-static PUBLIC winhttp)
+ endif()
+ target_compile_definitions(sqlite-http-c-static PRIVATE SQLITE_CORE)
+endif()
+
+if(HTTP_BUILD_SHARED)
+ add_library(http SHARED "http.c")
+ target_include_directories(http PRIVATE ${sqlite_SOURCE_DIR})
+ if(HTTP_BACKEND_CURL)
+ target_compile_definitions(http PRIVATE HTTP_BACKEND_CURL)
+ endif()
+ if(HTTP_BACKEND_WINHTTP)
+ target_compile_definitions(http PRIVATE HTTP_BACKEND_WINHTTP)
+ target_link_libraries(http PRIVATE winhttp)
+ endif()
+endif()
+
+if(PROJECT_IS_TOP_LEVEL)
+ include(CTest)
+ if(BUILD_TESTING)
+ add_subdirectory(tests)
+ endif()
+endif()