CMakeLists.txt 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. cmake_minimum_required(VERSION 3.2)
  2. project(ZeroTierOneJNI)
  3. find_package(Java COMPONENTS Development)
  4. message("JAVA_HOME: $ENV{JAVA_HOME}")
  5. if(WIN32)
  6. set(Java_INCLUDE_DIRS $ENV{JAVA_HOME}/include)
  7. endif()
  8. if(APPLE)
  9. set(Java_INCLUDE_DIRS "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/System/Library/Frameworks/JavaVM.framework/Headers")
  10. endif()
  11. message("Java Include Dirs: ${Java_INCLUDE_DIRS}")
  12. if(WIN32)
  13. add_definitions(-DNOMINMAX)
  14. set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /EHsc /W3 /MP")
  15. endif()
  16. if(APPLE)
  17. set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -arch i386 -arch x86_64 -Wall -O3 -flto -fPIE -fvectorize -fstack-protector -mmacosx-version-min=10.7 -Wno-unused-private-field")
  18. set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${CMAKE_C_FLAGS} -fno-rtti")
  19. endif()
  20. set(src_files
  21. ../ext/lz4/lz4.c
  22. ../ext/json-parser/json.c
  23. ../ext/http-parser/http_parser.c
  24. ../node/C25519.cpp
  25. ../node/CertificateOfMembership.cpp
  26. ../node/Defaults.cpp
  27. ../node/Dictionary.cpp
  28. ../node/Identity.cpp
  29. ../node/IncomingPacket.cpp
  30. ../node/InetAddress.cpp
  31. ../node/Multicaster.cpp
  32. ../node/Network.cpp
  33. ../node/NetworkConfig.cpp
  34. ../node/Node.cpp
  35. ../node/OutboundMulticast.cpp
  36. ../node/Packet.cpp
  37. ../node/Peer.cpp
  38. ../node/Poly1305.cpp
  39. ../node/Salsa20.cpp
  40. ../node/SelfAwareness.cpp
  41. ../node/SHA512.cpp
  42. ../node/Switch.cpp
  43. ../node/Topology.cpp
  44. ../node/Utils.cpp
  45. ../osdep/Http.cpp
  46. ../osdep/OSUtils.cpp
  47. jni/com_zerotierone_sdk_Node.cpp
  48. jni/ZT_jniutils.cpp
  49. jni/ZT_jnicache.cpp
  50. )
  51. set(include_dirs
  52. ${CMAKE_CURRENT_SOURCE_DIR}/../include/
  53. ${Java_INCLUDE_DIRS})
  54. if(WIN32)
  55. set(include_dirs
  56. ${include_dirs}
  57. ${Java_INCLUDE_DIRS}/win32)
  58. endif()
  59. include_directories(
  60. ${include_dirs}
  61. )
  62. add_library(${PROJECT_NAME} SHARED ${src_files})
  63. if(APPLE)
  64. set_target_properties(${PROJECT_NAME} PROPERTIES SUFFIX ".jnilib")
  65. endif()
  66. set(link_libs )
  67. if(WIN32)
  68. set(link_libs
  69. wsock32
  70. ws2_32
  71. )
  72. endif()
  73. target_link_libraries(${PROJECT_NAME} ${link_libs})