CMakeLists.txt 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. cmake_minimum_required(VERSION 2.6)
  2. project(enet)
  3. # The "configure" step.
  4. include(CheckFunctionExists)
  5. include(CheckStructHasMember)
  6. include(CheckTypeSize)
  7. check_function_exists("fcntl" HAS_FCNTL)
  8. check_function_exists("poll" HAS_POLL)
  9. check_function_exists("getaddrinfo" HAS_GETADDRINFO)
  10. check_function_exists("getnameinfo" HAS_GETNAMEINFO)
  11. check_function_exists("gethostbyname_r" HAS_GETHOSTBYNAME_R)
  12. check_function_exists("gethostbyaddr_r" HAS_GETHOSTBYADDR_R)
  13. check_function_exists("inet_pton" HAS_INET_PTON)
  14. check_function_exists("inet_ntop" HAS_INET_NTOP)
  15. check_struct_has_member("struct msghdr" "msg_flags" "sys/types.h;sys/socket.h" HAS_MSGHDR_FLAGS)
  16. set(CMAKE_EXTRA_INCLUDE_FILES "sys/types.h" "sys/socket.h")
  17. check_type_size("socklen_t" HAS_SOCKLEN_T BUILTIN_TYPES_ONLY)
  18. unset(CMAKE_EXTRA_INCLUDE_FILES)
  19. if(MSVC)
  20. add_definitions(-W3)
  21. else()
  22. add_definitions(-Wno-error)
  23. endif()
  24. if(HAS_FCNTL)
  25. add_definitions(-DHAS_FCNTL=1)
  26. endif()
  27. if(HAS_POLL)
  28. add_definitions(-DHAS_POLL=1)
  29. endif()
  30. if(HAS_GETNAMEINFO)
  31. add_definitions(-DHAS_GETNAMEINFO=1)
  32. endif()
  33. if(HAS_GETADDRINFO)
  34. add_definitions(-DHAS_GETADDRINFO=1)
  35. endif()
  36. if(HAS_GETHOSTBYNAME_R)
  37. add_definitions(-DHAS_GETHOSTBYNAME_R=1)
  38. endif()
  39. if(HAS_GETHOSTBYADDR_R)
  40. add_definitions(-DHAS_GETHOSTBYADDR_R=1)
  41. endif()
  42. if(HAS_INET_PTON)
  43. add_definitions(-DHAS_INET_PTON=1)
  44. endif()
  45. if(HAS_INET_NTOP)
  46. add_definitions(-DHAS_INET_NTOP=1)
  47. endif()
  48. if(HAS_MSGHDR_FLAGS)
  49. add_definitions(-DHAS_MSGHDR_FLAGS=1)
  50. endif()
  51. if(HAS_SOCKLEN_T)
  52. add_definitions(-DHAS_SOCKLEN_T=1)
  53. endif()
  54. if (NOT DEFINED ENET_ONLY_CONFIG)
  55. include_directories(${PROJECT_SOURCE_DIR}/include)
  56. set(INCLUDE_FILES_PREFIX include/enet)
  57. set(INCLUDE_FILES
  58. ${INCLUDE_FILES_PREFIX}/callbacks.h
  59. ${INCLUDE_FILES_PREFIX}/enet.h
  60. ${INCLUDE_FILES_PREFIX}/list.h
  61. ${INCLUDE_FILES_PREFIX}/protocol.h
  62. ${INCLUDE_FILES_PREFIX}/time.h
  63. ${INCLUDE_FILES_PREFIX}/types.h
  64. ${INCLUDE_FILES_PREFIX}/unix.h
  65. ${INCLUDE_FILES_PREFIX}/utility.h
  66. ${INCLUDE_FILES_PREFIX}/win32.h
  67. )
  68. set(SOURCE_FILES
  69. src/callbacks.c
  70. src/compress.c
  71. src/host.c
  72. src/list.c
  73. src/packet.c
  74. src/peer.c
  75. src/protocol.c
  76. src/unix.c
  77. src/win32.c)
  78. source_group(include FILES ${INCLUDE_FILES})
  79. source_group(source FILES ${SOURCE_FILES})
  80. add_library(enet STATIC
  81. ${INCLUDE_FILES}
  82. ${SOURCE_FILES}
  83. )
  84. if (MINGW)
  85. target_link_libraries(enet winmm ws2_32)
  86. endif()
  87. endif()