CMakeLists.txt 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. cmake_minimum_required(VERSION 2.6)
  2. project(BADVPN C)
  3. set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake/modules")
  4. include(TestBigEndian)
  5. include(CheckIncludeFiles)
  6. find_package(OpenSSL REQUIRED)
  7. set(LIBCRYPTO_INCLUDE_DIRS "${OpenSSL_INCLUDE_DIRS}")
  8. set(LIBCRYPTO_LIBRARY_DIRS "${OpenSSL_LIBRARY_DIRS}")
  9. set(LIBCRYPTO_LIBRARIES "${OpenSSL_LIBRARIES}")
  10. find_package(NSPR REQUIRED)
  11. find_package(NSS REQUIRED)
  12. include_directories(
  13. ${CMAKE_CURRENT_SOURCE_DIR}
  14. ${LIBCRYPTO_INCLUDE_DIRS}
  15. ${NSPR_INCLUDE_DIRS}
  16. ${NSS_INCLUDE_DIRS}
  17. )
  18. link_directories(
  19. ${LIBCRYPTO_LIBRARY_DIRS}
  20. ${NSPR_LIBRARY_DIRS}
  21. ${NSS_LIBRARY_DIRS}
  22. )
  23. test_big_endian(BIG_ENDIAN)
  24. add_definitions(-std=gnu99 -Werror=implicit-function-declaration -Wno-unused-value -Wno-parentheses -Wno-switch-enum)
  25. # platform-specific stuff
  26. if (WIN32)
  27. add_definitions(-DBADVPN_USE_WINAPI -D_WIN32_WINNT=0x501 -DWIN32_LEAN_AND_MEAN)
  28. else ()
  29. link_libraries(rt)
  30. check_include_files(sys/signalfd.h HAVE_SYS_SIGNALFD_H)
  31. if (NOT ${HAVE_SYS_SIGNALFD_H})
  32. message(FATAL_ERROR "signalfd is required")
  33. endif ()
  34. check_include_files(sys/epoll.h HAVE_SYS_EPOLL_H)
  35. if (NOT ${HAVE_SYS_EPOLL_H})
  36. message(FATAL_ERROR "epoll is required")
  37. endif ()
  38. if (NOT DEFINED BADVPN_WITHOUT_CRYPTODEV)
  39. check_include_files(crypto/cryptodev.h HAVE_CRYPTO_CRYPTODEV_H)
  40. if (${HAVE_CRYPTO_CRYPTODEV_H})
  41. add_definitions(-DBADVPN_USE_CRYPTODEV)
  42. elseif (DEFINED BADVPN_WITH_CRYPTODEV)
  43. message(FATAL_ERROR "crypto/cryptodev.h not found")
  44. endif ()
  45. endif ()
  46. endif ()
  47. # add preprocessor definitions
  48. if (${BIG_ENDIAN})
  49. add_definitions(-DBADVPN_BIG_ENDIAN)
  50. else ()
  51. add_definitions(-DBADVPN_LITTLE_ENDIAN)
  52. endif ()
  53. # install man pages
  54. install(
  55. FILES badvpn.7
  56. DESTINATION share/man/man7
  57. )
  58. install(
  59. FILES badvpn-server.8 badvpn-client.8
  60. DESTINATION share/man/man8
  61. )
  62. # internal libraries
  63. add_subdirectory(system)
  64. add_subdirectory(flow)
  65. add_subdirectory(tuntap)
  66. add_subdirectory(predicate)
  67. add_subdirectory(nspr_support)
  68. add_subdirectory(server_connection)
  69. add_subdirectory(listener)
  70. # example programs
  71. add_subdirectory(examples)
  72. # tests
  73. add_subdirectory(tests)
  74. # server
  75. add_subdirectory(server)
  76. # client
  77. add_subdirectory(client)
  78. # flooder
  79. add_subdirectory(flooder)