aboutsummaryrefslogtreecommitdiff
path: root/Src/external_dependencies/cpr/cmake
diff options
context:
space:
mode:
Diffstat (limited to 'Src/external_dependencies/cpr/cmake')
-rw-r--r--Src/external_dependencies/cpr/cmake/FindMbedTLS.cmake14
-rw-r--r--Src/external_dependencies/cpr/cmake/clang-tidy.cmake13
-rw-r--r--Src/external_dependencies/cpr/cmake/clear_variable.cmake11
-rw-r--r--Src/external_dependencies/cpr/cmake/code_coverage.cmake29
-rw-r--r--Src/external_dependencies/cpr/cmake/cppcheck.cmake10
-rw-r--r--Src/external_dependencies/cpr/cmake/cprConfig.cmake.in8
-rw-r--r--Src/external_dependencies/cpr/cmake/cprver.h.in30
-rw-r--r--Src/external_dependencies/cpr/cmake/mongoose.CMakeLists.txt12
-rw-r--r--Src/external_dependencies/cpr/cmake/sanitizer.cmake73
-rw-r--r--Src/external_dependencies/cpr/cmake/zlib_external.cmake22
10 files changed, 222 insertions, 0 deletions
diff --git a/Src/external_dependencies/cpr/cmake/FindMbedTLS.cmake b/Src/external_dependencies/cpr/cmake/FindMbedTLS.cmake
new file mode 100644
index 00000000..61ec4641
--- /dev/null
+++ b/Src/external_dependencies/cpr/cmake/FindMbedTLS.cmake
@@ -0,0 +1,14 @@
+# Source: https://github.com/curl/curl/blob/curl-7_82_0/CMake/FindMbedTLS.cmake
+find_path(MBEDTLS_INCLUDE_DIRS mbedtls/ssl.h)
+
+find_library(MBEDTLS_LIBRARY mbedtls)
+find_library(MBEDX509_LIBRARY mbedx509)
+find_library(MBEDCRYPTO_LIBRARY mbedcrypto)
+
+set(MBEDTLS_LIBRARIES "${MBEDTLS_LIBRARY}" "${MBEDX509_LIBRARY}" "${MBEDCRYPTO_LIBRARY}")
+
+include(FindPackageHandleStandardArgs)
+find_package_handle_standard_args(MbedTLS DEFAULT_MSG
+ MBEDTLS_INCLUDE_DIRS MBEDTLS_LIBRARY MBEDX509_LIBRARY MBEDCRYPTO_LIBRARY)
+
+mark_as_advanced(MBEDTLS_INCLUDE_DIRS MBEDTLS_LIBRARY MBEDX509_LIBRARY MBEDCRYPTO_LIBRARY)
diff --git a/Src/external_dependencies/cpr/cmake/clang-tidy.cmake b/Src/external_dependencies/cpr/cmake/clang-tidy.cmake
new file mode 100644
index 00000000..26defad2
--- /dev/null
+++ b/Src/external_dependencies/cpr/cmake/clang-tidy.cmake
@@ -0,0 +1,13 @@
+if (NOT ${CMAKE_SYSTEM_NAME} STREQUAL "Windows")
+ find_program(CLANG_TIDY_EXECUTABLE NAMES clang-tidy)
+ mark_as_advanced(CLANG_TIDY_EXECUTABLE)
+
+ if (${CLANG_TIDY_EXECUTABLE})
+ message(FATAL_ERROR "Clang-tidy not found")
+ else()
+ message(STATUS "Enabling clang-tidy")
+ set(CMAKE_CXX_CLANG_TIDY "${CLANG_TIDY_EXECUTABLE};-warnings-as-errors=*")
+ endif()
+else()
+ message(FATAL_ERROR "Clang-tidy is not supported when building for windows")
+endif()
diff --git a/Src/external_dependencies/cpr/cmake/clear_variable.cmake b/Src/external_dependencies/cpr/cmake/clear_variable.cmake
new file mode 100644
index 00000000..469ac827
--- /dev/null
+++ b/Src/external_dependencies/cpr/cmake/clear_variable.cmake
@@ -0,0 +1,11 @@
+macro(clear_variable)
+ cmake_parse_arguments(CLEAR_VAR "" "DESTINATION;BACKUP;REPLACE" "" ${ARGN})
+ set(${CLEAR_VAR_BACKUP} ${${CLEAR_VAR_DESTINATION}})
+ set(${CLEAR_VAR_DESTINATION} ${CLEAR_VAR_REPLACE})
+endmacro()
+
+macro(restore_variable)
+ cmake_parse_arguments(CLEAR_VAR "" "DESTINATION;BACKUP" "" ${ARGN})
+ set(${CLEAR_VAR_DESTINATION} ${${CLEAR_VAR_BACKUP}})
+ unset(${CLEAR_VAR_BACKUP})
+endmacro()
diff --git a/Src/external_dependencies/cpr/cmake/code_coverage.cmake b/Src/external_dependencies/cpr/cmake/code_coverage.cmake
new file mode 100644
index 00000000..eefc4fb3
--- /dev/null
+++ b/Src/external_dependencies/cpr/cmake/code_coverage.cmake
@@ -0,0 +1,29 @@
+# Code coverage
+if(CPR_BUILD_TESTS AND CPR_GENERATE_COVERAGE)
+ set(CMAKE_BUILD_TYPE COVERAGE CACHE INTERNAL "Coverage enabled build")
+ message(STATUS "Enabling gcov support")
+ if(NOT "${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
+ set(COVERAGE_FLAG "--coverage")
+ endif()
+ set(CMAKE_CXX_FLAGS_COVERAGE
+ "-g -O0 ${COVERAGE_FLAG} -fprofile-arcs -ftest-coverage"
+ CACHE STRING "Flags used by the C++ compiler during coverage builds."
+ FORCE)
+ set(CMAKE_C_FLAGS_COVERAGE
+ "-g -O0 ${COVERAGE_FLAG} -fprofile-arcs -ftest-coverage"
+ CACHE STRING "Flags used by the C compiler during coverage builds."
+ FORCE)
+ set(CMAKE_EXE_LINKER_FLAGS_COVERAGE
+ ""
+ CACHE STRING "Flags used for linking binaries during coverage builds."
+ FORCE)
+ set(CMAKE_SHARED_LINKER_FLAGS_COVERAGE
+ ""
+ CACHE STRING "Flags used by the shared libraries linker during coverage builds."
+ FORCE)
+ mark_as_advanced(
+ CMAKE_CXX_FLAGS_COVERAGE
+ CMAKE_C_FLAGS_COVERAGE
+ CMAKE_EXE_LINKER_FLAGS_COVERAGE
+ CMAKE_SHARED_LINKER_FLAGS_COVERAGE)
+endif()
diff --git a/Src/external_dependencies/cpr/cmake/cppcheck.cmake b/Src/external_dependencies/cpr/cmake/cppcheck.cmake
new file mode 100644
index 00000000..8ef46880
--- /dev/null
+++ b/Src/external_dependencies/cpr/cmake/cppcheck.cmake
@@ -0,0 +1,10 @@
+find_program(CMAKE_CXX_CPPCHECK NAMES cppcheck)
+if(CMAKE_CXX_CPPCHECK)
+ list(APPEND CMAKE_CXX_CPPCHECK
+ "--error-exitcode=1"
+ "--enable=warning,style"
+ "--force"
+ "--inline-suppr"
+ "--std=c++${CMAKE_CXX_STANDARD}"
+ "--suppressions-list=${CMAKE_SOURCE_DIR}/CppCheckSuppressions.txt")
+endif()
diff --git a/Src/external_dependencies/cpr/cmake/cprConfig.cmake.in b/Src/external_dependencies/cpr/cmake/cprConfig.cmake.in
new file mode 100644
index 00000000..9c0bda5f
--- /dev/null
+++ b/Src/external_dependencies/cpr/cmake/cprConfig.cmake.in
@@ -0,0 +1,8 @@
+include(CMakeFindDependencyMacro)
+@PACKAGE_INIT@
+
+find_dependency(CURL REQUIRED)
+
+include(${CMAKE_CURRENT_LIST_DIR}/cprTargets.cmake)
+
+check_required_components(cpr) \ No newline at end of file
diff --git a/Src/external_dependencies/cpr/cmake/cprver.h.in b/Src/external_dependencies/cpr/cmake/cprver.h.in
new file mode 100644
index 00000000..e3533249
--- /dev/null
+++ b/Src/external_dependencies/cpr/cmake/cprver.h.in
@@ -0,0 +1,30 @@
+#ifndef CPR_CPRVER_H
+#define CPR_CPRVER_H
+
+/**
+ * CPR version as a string.
+ **/
+#define CPR_VERSION "${cpr_VERSION}"
+
+/**
+ * CPR version split up into parts.
+ **/
+#define CPR_VERSION_MAJOR ${cpr_VERSION_MAJOR}
+#define CPR_VERSION_MINOR ${cpr_VERSION_MINOR}
+#define CPR_VERSION_PATCH ${cpr_VERSION_PATCH}
+
+/**
+ * CPR version as a single hex digit.
+ * it can be split up into three parts:
+ * 0xAABBCC
+ * AA: The current CPR major version number in a hex format.
+ * BB: The current CPR minor version number in a hex format.
+ * CC: The current CPR patch version number in a hex format.
+ *
+ * Examples:
+ * '0x010702' -> 01.07.02 -> CPR_VERSION: 1.7.2
+ * '0xA13722' -> A1.37.22 -> CPR_VERSION: 161.55.34
+ **/
+#define CPR_VERSION_NUM ${cpr_VERSION_NUM}
+
+#endif
diff --git a/Src/external_dependencies/cpr/cmake/mongoose.CMakeLists.txt b/Src/external_dependencies/cpr/cmake/mongoose.CMakeLists.txt
new file mode 100644
index 00000000..f46a3d49
--- /dev/null
+++ b/Src/external_dependencies/cpr/cmake/mongoose.CMakeLists.txt
@@ -0,0 +1,12 @@
+cmake_minimum_required(VERSION 3.15)
+project(mongoose C)
+
+
+add_library(mongoose STATIC mongoose.c)
+target_include_directories(mongoose PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})
+
+if(ENABLE_SSL_TESTS)
+ # Enable mongoose SSL
+ target_compile_definitions(mongoose PUBLIC MG_ENABLE_OPENSSL)
+ target_link_libraries(mongoose PRIVATE OpenSSL::SSL)
+endif()
diff --git a/Src/external_dependencies/cpr/cmake/sanitizer.cmake b/Src/external_dependencies/cpr/cmake/sanitizer.cmake
new file mode 100644
index 00000000..09095980
--- /dev/null
+++ b/Src/external_dependencies/cpr/cmake/sanitizer.cmake
@@ -0,0 +1,73 @@
+include(CheckCXXCompilerFlag)
+include(CheckCXXSourceRuns)
+
+set(ALLOWED_BUILD_TYPES Debug Release RelWithDebInfo MinSizeRel)
+set(ALL_SAN_FLAGS "")
+
+ # No sanitizers when cross compiling to prevent stuff like this: https://github.com/whoshuu/cpr/issues/582
+if(NOT CMAKE_CROSSCOMPILING)
+ # Thread sanitizer
+ set(THREAD_SAN_FLAGS "-fsanitize=thread")
+ set(PREV_FLAG ${CMAKE_REQUIRED_FLAGS})
+ set(CMAKE_REQUIRED_FLAGS "${THREAD_SAN_FLAGS}")
+ check_cxx_source_runs("int main() { return 0; }" THREAD_SANITIZER_AVAILABLE)
+ set(CMAKE_REQUIRED_FLAGS ${PREV_FLAG})
+ if(THREAD_SANITIZER_AVAILABLE)
+ list(APPEND ALLOWED_BUILD_TYPES ThreadSan)
+ # Do not add Thread sanitizer to all sanitizer because it is incompatible with other sanitizer
+ endif()
+ set(CMAKE_C_FLAGS_THREADSAN "${CMAKE_C_FLAGS_DEBUG} ${THREAD_SAN_FLAGS}" CACHE INTERNAL "Flags used by the C compiler during thread sanitizer builds." FORCE)
+ set(CMAKE_CXX_FLAGS_THREADSAN "${CMAKE_CXX_FLAGS_DEBUG} ${THREAD_SAN_FLAGS}" CACHE INTERNAL "Flags used by the C++ compiler during thread sanitizer builds." FORCE)
+ set(CMAKE_SHARED_LINKER_FLAGS_THREADSAN "${CMAKE_SHARED_LINKER_FLAGS_DEBUG}" CACHE INTERNAL "Flags used for the linker during thread sanitizer builds" FORCE)
+
+ # Address sanitizer
+ set(ADDR_SAN_FLAGS "-fsanitize=address")
+ set(PREV_FLAG ${CMAKE_REQUIRED_FLAGS})
+ set(CMAKE_REQUIRED_FLAGS "${ADDR_SAN_FLAGS}")
+ check_cxx_source_runs("int main() { return 0; }" ADDRESS_SANITIZER_AVAILABLE)
+ set(CMAKE_REQUIRED_FLAGS ${PREV_FLAG})
+ if(ADDRESS_SANITIZER_AVAILABLE)
+ list(APPEND ALLOWED_BUILD_TYPES AddrSan)
+ set(ALL_SAN_FLAGS "${ALL_SAN_FLAGS} ${ADDR_SAN_FLAGS}")
+ endif()
+ set(CMAKE_C_FLAGS_ADDRSAN "${CMAKE_C_FLAGS_DEBUG} ${ADDR_SAN_FLAGS} -fno-omit-frame-pointer -fno-optimize-sibling-calls" CACHE INTERNAL "Flags used by the C compiler during address sanitizer builds." FORCE)
+ set(CMAKE_CXX_FLAGS_ADDRSAN "${CMAKE_CXX_FLAGS_DEBUG} ${ADDR_SAN_FLAGS} -fno-omit-frame-pointer -fno-optimize-sibling-calls" CACHE INTERNAL "Flags used by the C++ compiler during address sanitizer builds." FORCE)
+ set(CMAKE_SHARED_LINKER_FLAGS_ADDRSAN "${CMAKE_SHARED_LINKER_FLAGS_DEBUG}" CACHE INTERNAL "Flags used for the linker during address sanitizer builds" FORCE)
+
+ # Leak sanitizer
+ set(LEAK_SAN_FLAGS "-fsanitize=leak")
+ check_cxx_compiler_flag(${LEAK_SAN_FLAGS} LEAK_SANITIZER_AVAILABLE)
+ if(LEAK_SANITIZER_AVAILABLE)
+ list(APPEND ALLOWED_BUILD_TYPES LeakSan)
+ set(ALL_SAN_FLAGS "${ALL_SAN_FLAGS} ${LEAK_SAN_FLAGS}")
+ endif()
+ set(CMAKE_C_FLAGS_LEAKSAN "${CMAKE_C_FLAGS_DEBUG} ${LEAK_SAN_FLAGS} -fno-omit-frame-pointer" CACHE INTERNAL "Flags used by the C compiler during leak sanitizer builds." FORCE)
+ set(CMAKE_CXX_FLAGS_LEAKSAN "${CMAKE_CXX_FLAGS_DEBUG} ${LEAK_SAN_FLAGS} -fno-omit-frame-pointer" CACHE INTERNAL "Flags used by the C++ compiler during leak sanitizer builds." FORCE)
+ set(CMAKE_SHARED_LINKER_FLAGS_LEAKSAN "${CMAKE_SHARED_LINKER_FLAGS_DEBUG}" CACHE INTERNAL "Flags used for the linker during leak sanitizer builds" FORCE)
+
+ # Undefined behavior sanitizer
+ set(UDEF_SAN_FLAGS "-fsanitize=undefined")
+ check_cxx_compiler_flag(${UDEF_SAN_FLAGS} UNDEFINED_BEHAVIOUR_SANITIZER_AVAILABLE)
+ if(UNDEFINED_BEHAVIOUR_SANITIZER_AVAILABLE)
+ list(APPEND ALLOWED_BUILD_TYPES UdefSan)
+ set(ALL_SAN_FLAGS "${ALL_SAN_FLAGS} ${UDEF_SAN_FLAGS}")
+ endif()
+ set(CMAKE_C_FLAGS_UDEFSAN "${CMAKE_C_FLAGS_DEBUG} ${UDEF_SAN_FLAGS}" CACHE INTERNAL "Flags used by the C compiler during undefined behaviour sanitizer builds." FORCE)
+ set(CMAKE_CXX_FLAGS_UDEFSAN "${CMAKE_CXX_FLAGS_DEBUG} ${UDEF_SAN_FLAGS}" CACHE INTERNAL "Flags used by the C++ compiler during undefined behaviour sanitizer builds." FORCE)
+ set(CMAKE_SHARED_LINKER_FLAGS_UDEFSAN "${CMAKE_SHARED_LINKER_FLAGS_DEBUG}" CACHE INTERNAL "Flags used for the linker during undefined behaviour sanitizer builds" FORCE)
+
+ # All sanitizer (without thread sanitizer)
+ if(NOT ALL_SAN_FLAGS STREQUAL "")
+ set(PREV_FLAG ${CMAKE_REQUIRED_FLAGS})
+ set(CMAKE_REQUIRED_FLAGS "${ALL_SAN_FLAGS}")
+ check_cxx_source_runs("int main() { return 0; }" ALL_SANITIZERS_AVAILABLE)
+ set(CMAKE_REQUIRED_FLAGS ${PREV_FLAG})
+ if(ALL_SANITIZERS_AVAILABLE)
+ list(APPEND ALLOWED_BUILD_TYPES AllSan)
+ endif()
+ endif()
+
+ set(CMAKE_C_FLAGS_ALLSAN "${CMAKE_C_FLAGS_DEBUG} ${ALL_SAN_FLAGS} -fno-omit-frame-pointer -fno-optimize-sibling-calls" CACHE INTERNAL "Flags used by the C compiler during most possible sanitizer builds." FORCE)
+ set(CMAKE_CXX_FLAGS_ALLSAN "${CMAKE_CXX_FLAGS_DEBUG} ${ALL_SAN_FLAGS} -fno-omit-frame-pointer -fno-optimize-sibling-calls" CACHE INTERNAL "Flags used by the C++ compiler during most possible sanitizer builds." FORCE)
+ set(CMAKE_SHARED_LINKER_FLAGS_ALLSAN "${CMAKE_SHARED_LINKER_FLAGS_DEBUG}" CACHE INTERNAL "Flags used for the linker during most possible sanitizer builds" FORCE)
+endif()
diff --git a/Src/external_dependencies/cpr/cmake/zlib_external.cmake b/Src/external_dependencies/cpr/cmake/zlib_external.cmake
new file mode 100644
index 00000000..0b494f14
--- /dev/null
+++ b/Src/external_dependencies/cpr/cmake/zlib_external.cmake
@@ -0,0 +1,22 @@
+# ZLIB
+
+# Fix Windows missing "zlib.dll":
+if(WIN32 AND (${CMAKE_PROJECT_NAME} STREQUAL ${PROJECT_NAME}))
+ set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${EXECUTABLE_OUTPUT_PATH}/$<CONFIG> CACHE INTERNAL "" FORCE)
+endif()
+
+set(ZLIB_COMPAT ON CACHE INTERNAL "" FORCE)
+set(ZLIB_ENABLE_TESTS OFF CACHE INTERNAL "" FORCE)
+
+FetchContent_Declare(zlib
+ GIT_REPOSITORY https://github.com/zlib-ng/zlib-ng
+ GIT_TAG 2.0.6
+ USES_TERMINAL_DOWNLOAD TRUE)
+FetchContent_MakeAvailable(zlib)
+
+# Fix Windows zlib dll names from "zlibd1.dll" to "zlib.dll":
+if(WIN32)
+ set_target_properties(zlib PROPERTIES OUTPUT_NAME "zlib")
+ set_target_properties(zlib PROPERTIES DEBUG_POSTFIX "")
+ set_target_properties(zlib PROPERTIES SUFFIX ".dll")
+endif()