diff options
| author | Oskari Timperi <oskari.timperi@iki.fi> | 2022-09-15 19:35:27 +0300 |
|---|---|---|
| committer | Oskari Timperi <oskari.timperi@iki.fi> | 2022-09-15 19:39:50 +0300 |
| commit | ff34cebaa50ebac63643a5e58989e416e09de4b9 (patch) | |
| tree | 5118bf17a9ca08cad49388b8847c2c0e0f3d035e /CMakeLists.txt | |
| download | sqlite-http-c-ff34cebaa50ebac63643a5e58989e416e09de4b9.tar.gz sqlite-http-c-ff34cebaa50ebac63643a5e58989e416e09de4b9.zip | |
Initial commit
Diffstat (limited to 'CMakeLists.txt')
| -rw-r--r-- | CMakeLists.txt | 76 |
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() |
