CMakeLists.txt 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  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. lwip/custom
  18. lwip/src/include
  19. lwip/src/include/ipv4
  20. )
  21. link_directories(
  22. ${LIBCRYPTO_LIBRARY_DIRS}
  23. ${NSPR_LIBRARY_DIRS}
  24. ${NSS_LIBRARY_DIRS}
  25. )
  26. test_big_endian(BIG_ENDIAN)
  27. add_definitions(-std=gnu99 -Werror=implicit-function-declaration -Wno-unused-value -Wno-parentheses -Wno-switch-enum -Wredundant-decls)
  28. # platform-specific stuff
  29. if (WIN32)
  30. add_definitions(-DBADVPN_USE_WINAPI -D_WIN32_WINNT=0x501 -DWIN32_LEAN_AND_MEAN)
  31. else ()
  32. link_libraries(rt)
  33. check_include_files(sys/signalfd.h HAVE_SYS_SIGNALFD_H)
  34. if (NOT ${HAVE_SYS_SIGNALFD_H})
  35. message(FATAL_ERROR "signalfd is required")
  36. endif ()
  37. check_include_files(sys/epoll.h HAVE_SYS_EPOLL_H)
  38. if (NOT ${HAVE_SYS_EPOLL_H})
  39. message(FATAL_ERROR "epoll is required")
  40. endif ()
  41. if (NOT DEFINED BADVPN_WITHOUT_CRYPTODEV)
  42. check_include_files(crypto/cryptodev.h HAVE_CRYPTO_CRYPTODEV_H)
  43. if (${HAVE_CRYPTO_CRYPTODEV_H})
  44. add_definitions(-DBADVPN_USE_CRYPTODEV)
  45. elseif (DEFINED BADVPN_WITH_CRYPTODEV)
  46. message(FATAL_ERROR "crypto/cryptodev.h not found")
  47. endif ()
  48. endif ()
  49. endif ()
  50. # add preprocessor definitions
  51. if (${BIG_ENDIAN})
  52. add_definitions(-DBADVPN_BIG_ENDIAN)
  53. else ()
  54. add_definitions(-DBADVPN_LITTLE_ENDIAN)
  55. endif ()
  56. # install man pages
  57. install(
  58. FILES badvpn.7
  59. DESTINATION share/man/man7
  60. )
  61. install(
  62. FILES badvpn-server.8 badvpn-client.8
  63. DESTINATION share/man/man8
  64. )
  65. # internal libraries
  66. add_subdirectory(system)
  67. add_subdirectory(flow)
  68. add_subdirectory(tuntap)
  69. add_subdirectory(predicate)
  70. add_subdirectory(nspr_support)
  71. add_subdirectory(server_connection)
  72. add_subdirectory(security)
  73. add_subdirectory(socksclient)
  74. add_subdirectory(lwip)
  75. add_subdirectory(dhcpclient)
  76. add_subdirectory(ncdconfig)
  77. if (NOT WIN32)
  78. add_subdirectory(ipc)
  79. endif ()
  80. # example programs
  81. add_subdirectory(examples)
  82. # tests
  83. add_subdirectory(tests)
  84. # server
  85. add_subdirectory(server)
  86. # client
  87. add_subdirectory(client)
  88. # flooder
  89. add_subdirectory(flooder)
  90. # tun2socks
  91. add_subdirectory(tun2socks)
  92. # ncd
  93. if (NOT WIN32)
  94. add_subdirectory(ncd)
  95. endif ()