CMakeLists.txt 3.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. #
  2. # First download and extract SFML 2.5.1 for the respective OS we are on
  3. #
  4. set(DEPS_DIR "${CMAKE_CURRENT_LIST_DIR}/dependencies/")
  5. if (${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
  6. set(SFML_URL "https://www.sfml-dev.org/files/SFML-2.5.1-macOS-clang.tar.gz")
  7. set(SFML_DIR ${DEPS_DIR}/SFML-2.5.1-macos-clang)
  8. if (NOT EXISTS "${SFML_DIR}")
  9. message("Downloading SFML for Mac OS X")
  10. file(DOWNLOAD "${SFML_URL}" "${DEPS_DIR}/sfml.tar.gz")
  11. execute_process(
  12. COMMAND ${CMAKE_COMMAND} -E tar xzf ${DEPS_DIR}/sfml.tar.gz
  13. WORKING_DIRECTORY ${DEPS_DIR}
  14. )
  15. # copy freetype over to Frameworks/ so rpath resoultion works
  16. execute_process(
  17. COMMAND ${CMAKE_COMMAND} -E copy_directory ${SFML_DIR}/extlibs/freetype.framework ${SFML_DIR}/Frameworks/freetype.framework
  18. WORKING_DIRECTORY ${SFML_DIR}
  19. )
  20. endif()
  21. elseif (${CMAKE_SYSTEM_NAME} MATCHES "Linux")
  22. set(SFML_URL "https://www.sfml-dev.org/files/SFML-2.5.1-linux-gcc-64-bit.tar.gz")
  23. set(SFML_DIR ${DEPS_DIR}/SFML-2.5.1)
  24. if (NOT EXISTS ${SFML_DIR})
  25. message("Downloading SFML for Linux 64-bit")
  26. file(DOWNLOAD "${SFML_URL}" "${DEPS_DIR}/sfml.tar.gz")
  27. execute_process(
  28. COMMAND ${CMAKE_COMMAND} -E tar xzf ${DEPS_DIR}/sfml.tar.gz
  29. WORKING_DIRECTORY ${DEPS_DIR}
  30. )
  31. endif()
  32. else()
  33. set(SFML_URL "https://www.sfml-dev.org/files/SFML-2.5.1-windows-vc14-32-bit.zip")
  34. set(SFML_DIR ${DEPS_DIR}/SFML-2.5.1)
  35. if (NOT EXISTS ${SFML_DIR})
  36. message("Downloading SFML for Windows 32-bit")
  37. file(DOWNLOAD "${SFML_URL}" "${DEPS_DIR}/sfml.zip")
  38. execute_process(
  39. COMMAND ${CMAKE_COMMAND} -E tar x ${DEPS_DIR}/sfml.zip
  40. WORKING_DIRECTORY ${DEPS_DIR}
  41. )
  42. endif()
  43. endif()
  44. # Define spine-sfml library
  45. include_directories(src ${SFML_DIR}/include)
  46. file(GLOB INCLUDES "src/**/*.h")
  47. file(GLOB SOURCES "src/**/*.cpp")
  48. add_library(spine-sfml STATIC ${SOURCES} ${INCLUDES})
  49. target_link_libraries(spine-sfml LINK_PUBLIC spine-c)
  50. install(TARGETS spine-sfml DESTINATION dist/lib)
  51. install(FILES ${INCLUDES} DESTINATION dist/include)
  52. # Define spine-sfml example executable
  53. add_executable(spine-sfml-example example/main.cpp)
  54. # Link in SFML libraries and OS dependencies like OpenGL
  55. if (${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
  56. find_library(SFML SFML PATHS ${SFML_DIR}/Frameworks)
  57. find_library(SFML_SYSTEM "sfml-system" PATHS ${SFML_DIR}/Frameworks)
  58. find_library(SFML_WINDOW sfml-window PATHS ${SFML_DIR}/Frameworks)
  59. find_library(SFML_GRAPHICS sfml-graphics PATHS ${SFML_DIR}/Frameworks)
  60. target_link_libraries(spine-sfml-example ${SFML} ${SFML_SYSTEM} ${SFML_WINDOW} ${SFML_GRAPHICS})
  61. elseif (${CMAKE_SYSTEM_NAME} MATCHES "Linux")
  62. target_link_libraries(spine-sfml-example sfml-graphics sfml-window sfml-system)
  63. else()
  64. set(SFML_LIBS ${SFML_DIR}/lib)
  65. target_link_libraries(spine-sfml-example ${SFML_LIBS}/sfml-main-d.lib)
  66. target_link_libraries(spine-sfml-example ${SFML_LIBS}/sfml-graphics-s-d.lib)
  67. target_link_libraries(spine-sfml-example ${SFML_LIBS}/sfml-window-s-d.lib)
  68. target_link_libraries(spine-sfml-example ${SFML_LIBS}/sfml-system-s-d.lib)
  69. target_link_libraries(spine-sfml-example ${SFML_LIBS}/freetype.lib)
  70. target_link_libraries(spine-sfml-example ${SFML_LIBS}/jpeg.lib)
  71. target_link_libraries(spine-sfml-example opengl32)
  72. target_link_libraries(spine-sfml-example gdi32)
  73. target_link_libraries(spine-sfml-example winmm)
  74. add_definitions(-DSFML_STATIC)
  75. endif()
  76. # copy data to build directory
  77. add_custom_command(TARGET spine-sfml-example PRE_BUILD
  78. COMMAND ${CMAKE_COMMAND} -E copy_directory
  79. ${CMAKE_CURRENT_LIST_DIR}/data $<TARGET_FILE_DIR:spine-sfml-example>/data)
  80. target_link_libraries(spine-sfml-example spine-c)
  81. target_link_libraries(spine-sfml-example spine-sfml)