Collection of DPF-based plugins for packaging
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

79 lines
2.3KB

  1. add_library(projectM_shared SHARED
  2. projectM.h
  3. ProjectMCWrapper.cpp
  4. ProjectMCWrapper.hpp
  5. $<TARGET_OBJECTS:projectM_main>
  6. $<TARGET_OBJECTS:MilkdropPresetFactory>
  7. $<TARGET_OBJECTS:NativePresetFactory>
  8. $<TARGET_OBJECTS:Renderer>
  9. $<TARGET_OBJECTS:hlslparser>
  10. $<TARGET_OBJECTS:SOIL2>
  11. $<$<PLATFORM_ID:Windows>:$<TARGET_OBJECTS:dlfcn>>
  12. )
  13. target_compile_options(projectM_shared
  14. PRIVATE
  15. -DprojectM_main_EXPORTS
  16. )
  17. set_target_properties(projectM_shared PROPERTIES
  18. OUTPUT_NAME projectM
  19. VERSION "${PROJECTM_LIB_VERSION}"
  20. SOVERSION "${PROJECTM_SO_VERSION}"
  21. EXPORT_NAME shared
  22. FOLDER libprojectM
  23. )
  24. target_include_directories(projectM_shared
  25. PUBLIC
  26. "$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}/include/libprojectM>"
  27. "$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>"
  28. "$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/Renderer>"
  29. "$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/Renderer/hlslparser/src>"
  30. "$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/MilkdropPresetFactory>"
  31. "$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/NativePresetFactory>"
  32. "$<BUILD_INTERFACE:${MSVC_EXTRA_INCLUDE_DIR}>"
  33. "$<INSTALL_INTERFACE:${PROJECTM_INCLUDE_DIR}>"
  34. )
  35. target_link_libraries(projectM_shared
  36. PRIVATE
  37. GLM::GLM
  38. PUBLIC
  39. ${PROJECTM_OPENGL_LIBRARIES}
  40. ${CMAKE_DL_LIBS}
  41. )
  42. if(ENABLE_THREADING)
  43. target_link_libraries(projectM_shared
  44. PUBLIC
  45. Threads::Threads
  46. )
  47. endif()
  48. if(ENABLE_LLVM)
  49. target_link_libraries(projectM_shared
  50. PUBLIC
  51. LLVM::LLVM
  52. )
  53. endif()
  54. if(CMAKE_SYSTEM_NAME STREQUAL "Darwin")
  55. target_link_libraries(projectM_shared
  56. PUBLIC
  57. "-framework CoreFoundation"
  58. )
  59. endif()
  60. enable_target_linker_flags_if_supported(projectM_shared PRIVATE --no-undefined)
  61. install(TARGETS projectM_shared
  62. EXPORT libprojectMTargets
  63. LIBRARY DESTINATION "${PROJECTM_LIB_DIR}"
  64. RUNTIME DESTINATION "${PROJECTM_LIB_DIR}"
  65. ARCHIVE DESTINATION "${PROJECTM_LIB_DIR}"
  66. COMPONENT Runtime
  67. )
  68. set(EXPORT_SHARED_LIB_TARGET projectM_shared)