CMakeLists.txt 3.6 KB

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