CMakeLists.txt 5.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. # external dependencies
  2. # NOTE FetchContent is so frigging slow that we just run git directly
  3. set(dcimgui_dir ${CMAKE_BINARY_DIR}/../_deps/dcimgui)
  4. set(spineruntimes_dir ${CMAKE_BINARY_DIR}/../_deps/spineruntimes)
  5. if (IS_DIRECTORY ${dcimgui_dir})
  6. message("### ${dcimgui_dir} exists...")
  7. else()
  8. message("### Fetching dcimgui to ${dcimgui_dir} (this may take a while...)")
  9. execute_process(COMMAND git clone --depth=1 --recursive https://github.com/floooh/dcimgui ${dcimgui_dir})
  10. endif()
  11. if (IS_DIRECTORY ${spineruntimes_dir})
  12. message("### ${spineruntimes_dir} exists...")
  13. else()
  14. message("### Fetching spine runtimes to ${spineruntimes_dir} (this may take a while...)")
  15. execute_process(COMMAND git clone --depth=1 --branch 4.2 --recursive https://github.com/EsotericSoftware/spine-runtimes ${spineruntimes_dir})
  16. endif()
  17. add_library(imgui
  18. ${dcimgui_dir}/src/cimgui.cpp
  19. ${dcimgui_dir}/src/imgui.cpp
  20. ${dcimgui_dir}/src/imgui_demo.cpp
  21. ${dcimgui_dir}/src/imgui_draw.cpp
  22. ${dcimgui_dir}/src/imgui_tables.cpp
  23. ${dcimgui_dir}/src/imgui_widgets.cpp)
  24. target_include_directories(imgui SYSTEM PUBLIC ${dcimgui_dir}/src)
  25. add_library(spine
  26. ${spineruntimes_dir}/spine-c/spine-c/src/spine/Animation.c
  27. ${spineruntimes_dir}/spine-c/spine-c/src/spine/AnimationState.c
  28. ${spineruntimes_dir}/spine-c/spine-c/src/spine/AnimationStateData.c
  29. ${spineruntimes_dir}/spine-c/spine-c/src/spine/Array.c
  30. ${spineruntimes_dir}/spine-c/spine-c/src/spine/Atlas.c
  31. ${spineruntimes_dir}/spine-c/spine-c/src/spine/AtlasAttachmentLoader.c
  32. ${spineruntimes_dir}/spine-c/spine-c/src/spine/Attachment.c
  33. ${spineruntimes_dir}/spine-c/spine-c/src/spine/AttachmentLoader.c
  34. ${spineruntimes_dir}/spine-c/spine-c/src/spine/Bone.c
  35. ${spineruntimes_dir}/spine-c/spine-c/src/spine/BoneData.c
  36. ${spineruntimes_dir}/spine-c/spine-c/src/spine/BoundingBoxAttachment.c
  37. ${spineruntimes_dir}/spine-c/spine-c/src/spine/ClippingAttachment.c
  38. ${spineruntimes_dir}/spine-c/spine-c/src/spine/Color.c
  39. ${spineruntimes_dir}/spine-c/spine-c/src/spine/Debug.c
  40. ${spineruntimes_dir}/spine-c/spine-c/src/spine/Event.c
  41. ${spineruntimes_dir}/spine-c/spine-c/src/spine/EventData.c
  42. ${spineruntimes_dir}/spine-c/spine-c/src/spine/IkConstraint.c
  43. ${spineruntimes_dir}/spine-c/spine-c/src/spine/IkConstraintData.c
  44. ${spineruntimes_dir}/spine-c/spine-c/src/spine/Json.c
  45. ${spineruntimes_dir}/spine-c/spine-c/src/spine/Json.h
  46. ${spineruntimes_dir}/spine-c/spine-c/src/spine/MeshAttachment.c
  47. ${spineruntimes_dir}/spine-c/spine-c/src/spine/PathAttachment.c
  48. ${spineruntimes_dir}/spine-c/spine-c/src/spine/PathConstraint.c
  49. ${spineruntimes_dir}/spine-c/spine-c/src/spine/PathConstraintData.c
  50. ${spineruntimes_dir}/spine-c/spine-c/src/spine/PhysicsConstraint.c
  51. ${spineruntimes_dir}/spine-c/spine-c/src/spine/PhysicsConstraintData.c
  52. ${spineruntimes_dir}/spine-c/spine-c/src/spine/PointAttachment.c
  53. ${spineruntimes_dir}/spine-c/spine-c/src/spine/RegionAttachment.c
  54. ${spineruntimes_dir}/spine-c/spine-c/src/spine/Sequence.c
  55. ${spineruntimes_dir}/spine-c/spine-c/src/spine/Skeleton.c
  56. ${spineruntimes_dir}/spine-c/spine-c/src/spine/SkeletonBinary.c
  57. ${spineruntimes_dir}/spine-c/spine-c/src/spine/SkeletonBounds.c
  58. ${spineruntimes_dir}/spine-c/spine-c/src/spine/SkeletonClipping.c
  59. ${spineruntimes_dir}/spine-c/spine-c/src/spine/SkeletonData.c
  60. ${spineruntimes_dir}/spine-c/spine-c/src/spine/SkeletonJson.c
  61. ${spineruntimes_dir}/spine-c/spine-c/src/spine/Skin.c
  62. ${spineruntimes_dir}/spine-c/spine-c/src/spine/Slot.c
  63. ${spineruntimes_dir}/spine-c/spine-c/src/spine/SlotData.c
  64. ${spineruntimes_dir}/spine-c/spine-c/src/spine/TransformConstraint.c
  65. ${spineruntimes_dir}/spine-c/spine-c/src/spine/TransformConstraintData.c
  66. ${spineruntimes_dir}/spine-c/spine-c/src/spine/Triangulator.c
  67. ${spineruntimes_dir}/spine-c/spine-c/src/spine/VertexAttachment.c
  68. ${spineruntimes_dir}/spine-c/spine-c/src/spine/extension.c)
  69. target_include_directories(spine SYSTEM PUBLIC ${spineruntimes_dir}/spine-c/spine-c/include)
  70. if (CMAKE_CXX_COMPILER_ID MATCHES "MSVC")
  71. target_compile_options(spine PRIVATE /wd4267 /wd4244) # conversion from 'x' to 'y' possible loss of data
  72. endif()
  73. if (CMAKE_CXX_COMPILER_ID MATCHES "Clang")
  74. target_compile_options(spine PRIVATE -Wno-shorten-64-to-32)
  75. endif()
  76. file(COPY ${spineruntimes_dir}/examples/spineboy/export/spineboy-pro.json DESTINATION ${CMAKE_BINARY_DIR})
  77. file(COPY ${spineruntimes_dir}/examples/spineboy/export/spineboy-pro.skel DESTINATION ${CMAKE_BINARY_DIR})
  78. file(COPY ${spineruntimes_dir}/examples/spineboy/export/spineboy.atlas DESTINATION ${CMAKE_BINARY_DIR})
  79. file(COPY ${spineruntimes_dir}/examples/spineboy/export/spineboy.png DESTINATION ${CMAKE_BINARY_DIR})
  80. file(COPY ${spineruntimes_dir}/examples/spineboy/export/spineboy-pro.json DESTINATION ${CMAKE_BINARY_DIR}/Debug)
  81. file(COPY ${spineruntimes_dir}/examples/spineboy/export/spineboy-pro.skel DESTINATION ${CMAKE_BINARY_DIR}/Debug)
  82. file(COPY ${spineruntimes_dir}/examples/spineboy/export/spineboy.atlas DESTINATION ${CMAKE_BINARY_DIR}/Debug)
  83. file(COPY ${spineruntimes_dir}/examples/spineboy/export/spineboy.png DESTINATION ${CMAKE_BINARY_DIR}/Debug)
  84. add_library(nuklear nuklear.c)
  85. if (CMAKE_CXX_COMPILER_ID MATCHES "MSVC")
  86. # NOTE: must propagate to upstream includers
  87. target_compile_options(nuklear PUBLIC /wd5287)
  88. endif()