CMakeLists.txt 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. set(server_SRCS
  2. StdInc.cpp
  3. CGameHandler.cpp
  4. CQuery.cpp
  5. CVCMIServer.cpp
  6. NetPacksServer.cpp
  7. NetPacksLobbyServer.cpp
  8. )
  9. set(server_HEADERS
  10. StdInc.h
  11. CGameHandler.h
  12. CQuery.h
  13. CVCMIServer.h
  14. )
  15. if(APPLE_IOS)
  16. set(server_SRCS ${server_SRCS} ios/main.mm)
  17. endif(APPLE_IOS)
  18. assign_source_group(${server_SRCS} ${server_HEADERS})
  19. if(ANDROID) # android needs client/server to be libraries, not executables, so we can't reuse the build part of this script
  20. return()
  21. endif()
  22. add_executable(vcmiserver ${server_SRCS} ${server_HEADERS})
  23. set(server_LIBS vcmi)
  24. if(CMAKE_SYSTEM_NAME MATCHES FreeBSD)
  25. set(server_LIBS execinfo ${server_LIBS})
  26. elseif(APPLE_IOS)
  27. set(server_LIBS ${server_LIBS} "-framework UIKit")
  28. add_dependencies(vcmiserver BattleAI StupidAI VCAI)
  29. endif()
  30. target_link_libraries(vcmiserver PRIVATE ${server_LIBS} minizip::minizip)
  31. target_include_directories(vcmiserver
  32. PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}
  33. )
  34. if(WIN32)
  35. set_target_properties(vcmiserver
  36. PROPERTIES
  37. OUTPUT_NAME "VCMI_server"
  38. PROJECT_LABEL "VCMI_server"
  39. )
  40. elseif(APPLE_IOS)
  41. set(ENTITLEMENTS_OUT_PATH ${CMAKE_CURRENT_BINARY_DIR}/VCMI.entitlements)
  42. configure_file(ios/Entitlements.in ${ENTITLEMENTS_OUT_PATH} @ONLY)
  43. set_target_properties(vcmiserver PROPERTIES
  44. MACOSX_BUNDLE_INFO_PLIST "${CMAKE_CURRENT_LIST_DIR}/ios/Info.plist"
  45. SKIP_BUILD_RPATH 1
  46. XCODE_ATTRIBUTE_CODE_SIGNING_ALLOWED YES
  47. XCODE_ATTRIBUTE_ASSETCATALOG_COMPILER_APPICON_NAME AppIcon
  48. XCODE_ATTRIBUTE_CODE_SIGN_ENTITLEMENTS ${ENTITLEMENTS_OUT_PATH}
  49. )
  50. # TODO: move to a common dir / add macro?
  51. target_sources(vcmiserver PRIVATE ${CMAKE_SOURCE_DIR}/client/LaunchScreen.storyboard)
  52. set_source_files_properties(${CMAKE_SOURCE_DIR}/client/LaunchScreen.storyboard PROPERTIES MACOSX_PACKAGE_LOCATION "Resources")
  53. target_sources(vcmiserver PRIVATE ios/Images.xcassets)
  54. set_source_files_properties(ios/Images.xcassets PROPERTIES MACOSX_PACKAGE_LOCATION "Resources")
  55. endif()
  56. vcmi_set_output_dir(vcmiserver "")
  57. enable_pch(vcmiserver)
  58. if(APPLE_IOS)
  59. add_custom_command(TARGET vcmiserver POST_BUILD
  60. COMMAND ${CMAKE_COMMAND} --install "${CMAKE_BINARY_DIR}" --config "$<CONFIG>" --prefix "$<TARGET_BUNDLE_CONTENT_DIR:vcmiserver>"
  61. COMMAND ${CMAKE_INSTALL_NAME_TOOL} -add_rpath @executable_path/Frameworks $<TARGET_FILE:vcmiserver> || true
  62. COMMAND ${CMAKE_SOURCE_DIR}/apple_codesign.sh
  63. )
  64. else()
  65. install(TARGETS vcmiserver DESTINATION ${BIN_DIR})
  66. endif()