CMakeLists.txt 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. find_package(GTest)
  2. if(GTest_FOUND)
  3. if(NOT TARGET GTest::gtest_main AND TARGET GTest::Main)
  4. # CMake <3.20
  5. add_library(GTest::gtest_main INTERFACE IMPORTED)
  6. target_link_libraries(GTest::gtest_main INTERFACE GTest::Main)
  7. endif()
  8. else()
  9. if(POLICY CMP0135)
  10. cmake_policy(SET CMP0135 NEW)
  11. endif()
  12. include(FetchContent)
  13. set(BUILD_GMOCK OFF)
  14. set(INSTALL_GTEST OFF)
  15. set(gtest_force_shared_crt ON)
  16. FetchContent_Declare(
  17. gtest
  18. URL https://github.com/google/googletest/archive/main.tar.gz
  19. )
  20. FetchContent_MakeAvailable(gtest)
  21. endif()
  22. add_executable(httplib-test test.cc)
  23. target_compile_options(httplib-test PRIVATE "$<$<CXX_COMPILER_ID:MSVC>:/utf-8;/bigobj>")
  24. target_link_libraries(httplib-test PRIVATE httplib GTest::gtest_main)
  25. gtest_discover_tests(httplib-test)
  26. execute_process(
  27. COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_CURRENT_LIST_DIR}/www www
  28. COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_CURRENT_LIST_DIR}/www2 www2
  29. COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_CURRENT_LIST_DIR}/www3 www3
  30. COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_CURRENT_LIST_DIR}/ca-bundle.crt ca-bundle.crt
  31. COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_CURRENT_LIST_DIR}/image.jpg image.jpg
  32. WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
  33. COMMAND_ERROR_IS_FATAL ANY
  34. )
  35. if(HTTPLIB_IS_USING_OPENSSL)
  36. find_program(OPENSSL_COMMAND
  37. NAMES openssl
  38. PATHS ${OPENSSL_INCLUDE_DIR}/../bin
  39. REQUIRED
  40. )
  41. execute_process(
  42. COMMAND ${OPENSSL_COMMAND} genrsa 2048
  43. OUTPUT_FILE key.pem
  44. WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
  45. COMMAND_ERROR_IS_FATAL ANY
  46. )
  47. execute_process(
  48. COMMAND ${OPENSSL_COMMAND} req -new -batch -config ${CMAKE_CURRENT_LIST_DIR}/test.conf -key key.pem
  49. COMMAND ${OPENSSL_COMMAND} x509 -days 3650 -req -signkey key.pem
  50. OUTPUT_FILE cert.pem
  51. WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
  52. COMMAND_ERROR_IS_FATAL ANY
  53. )
  54. execute_process(
  55. COMMAND ${OPENSSL_COMMAND} req -x509 -new -config ${CMAKE_CURRENT_LIST_DIR}/test.conf -key key.pem -sha256 -days 3650 -nodes -out cert2.pem -extensions SAN
  56. WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
  57. COMMAND_ERROR_IS_FATAL ANY
  58. )
  59. execute_process(
  60. COMMAND ${OPENSSL_COMMAND} genrsa 2048
  61. OUTPUT_FILE rootCA.key.pem
  62. WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
  63. COMMAND_ERROR_IS_FATAL ANY
  64. )
  65. execute_process(
  66. COMMAND ${OPENSSL_COMMAND} req -x509 -new -batch -config ${CMAKE_CURRENT_LIST_DIR}/test.rootCA.conf -key rootCA.key.pem -days 1024
  67. OUTPUT_FILE rootCA.cert.pem
  68. WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
  69. COMMAND_ERROR_IS_FATAL ANY
  70. )
  71. execute_process(
  72. COMMAND ${OPENSSL_COMMAND} genrsa 2048
  73. OUTPUT_FILE client.key.pem
  74. WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
  75. COMMAND_ERROR_IS_FATAL ANY
  76. )
  77. execute_process(
  78. COMMAND ${OPENSSL_COMMAND} req -new -batch -config ${CMAKE_CURRENT_LIST_DIR}/test.conf -key client.key.pem
  79. COMMAND ${OPENSSL_COMMAND} x509 -days 370 -req -CA rootCA.cert.pem -CAkey rootCA.key.pem -CAcreateserial
  80. OUTPUT_FILE client.cert.pem
  81. WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
  82. COMMAND_ERROR_IS_FATAL ANY
  83. )
  84. execute_process(
  85. COMMAND ${OPENSSL_COMMAND} genrsa -passout pass:test123! 2048
  86. OUTPUT_FILE key_encrypted.pem
  87. WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
  88. COMMAND_ERROR_IS_FATAL ANY
  89. )
  90. execute_process(
  91. COMMAND ${OPENSSL_COMMAND} req -new -batch -config ${CMAKE_CURRENT_LIST_DIR}/test.conf -key key_encrypted.pem
  92. COMMAND ${OPENSSL_COMMAND} x509 -days 3650 -req -signkey key_encrypted.pem
  93. OUTPUT_FILE cert_encrypted.pem
  94. WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
  95. COMMAND_ERROR_IS_FATAL ANY
  96. )
  97. endif()