DISTRHO Plugin Framework
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.

157 lines
10KB

  1. # Sets GET_LIBS_AND_DEFINES_LIBS and GET_LIBS_AND_DEFINES_DEFINES variables in parentscope. Link to this !
  2. function(GET_LIBS_AND_DEFINES UI_BACKEND)
  3. if(NOT UI_BACKEND)
  4. set(UI_BACKEND NONE)
  5. endif(NOT UI_BACKEND)
  6. if(${UI_BACKEND} STREQUAL "NONE")
  7. set(GET_LIBS_AND_DEFINES_LIBS DPF PARENT_SCOPE)
  8. elseif(${UI_BACKEND} STREQUAL "OPENGL")
  9. set(GET_LIBS_AND_DEFINES_LIBS dgl-opengl DPF_UI PARENT_SCOPE)
  10. elseif(${UI_BACKEND} STREQUAL "CAIRO")
  11. set(GET_LIBS_AND_DEFINES_LIBS dgl-cairo DPF_UI PARENT_SCOPE)
  12. elseif(${UI_BACKEND} STREQUAL "EXTERNAL")
  13. set(GET_LIBS_AND_DEFINES_LIBS DPF_UI PARENT_SCOPE)
  14. set(GET_LIBS_AND_DEFINES_DEFINES DGL_EXTERNAL PARENT_SCOPE)
  15. else()
  16. message(ERROR "No vaild UI_BACKEND, choose NONE OPENGL CAIRO or EXTERNAL")
  17. endif(${UI_BACKEND} STREQUAL "NONE")
  18. endfunction(GET_LIBS_AND_DEFINES UI_BACKEND)
  19. function(BUILD_JACK)
  20. set(oneValueArgs TARGET UI_BACKEND)
  21. set(multiValueArgs SOURCES INCLUDE_DIRECTORIES DEFINES)
  22. cmake_parse_arguments(PLUGIN_PARAM "" "${oneValueArgs}" "${multiValueArgs}" ${ARGN} )
  23. GET_LIBS_AND_DEFINES(${PLUGIN_PARAM_UI_BACKEND} )
  24. add_executable(${PLUGIN_PARAM_TARGET} ${PLUGIN_PARAM_SOURCES})
  25. SET_TARGET_PROPERTIES(${PLUGIN_PARAM_TARGET} PROPERTIES PREFIX "")
  26. target_link_libraries(${PLUGIN_PARAM_TARGET} ${GET_LIBS_AND_DEFINES_LIBS} DPF ${JACK_LIBRARIES} )
  27. target_include_directories(${PLUGIN_PARAM_TARGET} PUBLIC ${PLUGIN_PARAM_INCLUDE_DIRECTORIES})
  28. target_compile_definitions(${PLUGIN_PARAM_TARGET} PUBLIC ${PLUGIN_PARAM_DEFINES} ${GET_LIBS_AND_DEFINES_DEFINES} DISTRHO_PLUGIN_TARGET_JACK)
  29. endfunction(BUILD_JACK)
  30. # Parameter to use:
  31. # TARGET: Name for the generated VST
  32. # UI_BACKEND; weather it should be NONE,EXTERNAL,OPENGL or CAIRO
  33. # SOURCES: Plugin Sources, to compile in the vst
  34. # INCLUDE_DIRECTORIES: Directories to include to the vst.
  35. # DEFINE: Define Preprocessor defines
  36. function(BUILD_VST2)
  37. set(oneValueArgs TARGET UI_BACKEND)
  38. set(multiValueArgs SOURCES INCLUDE_DIRECTORIES DEFINES)
  39. cmake_parse_arguments(PLUGIN_PARAM "" "${oneValueArgs}" "${multiValueArgs}" ${ARGN} )
  40. GET_LIBS_AND_DEFINES(${PLUGIN_PARAM_UI_BACKEND} )
  41. add_library(${PLUGIN_PARAM_TARGET} MODULE ${PLUGIN_PARAM_SOURCES})
  42. SET_TARGET_PROPERTIES(${PLUGIN_PARAM_TARGET} PROPERTIES PREFIX "")
  43. target_link_libraries(${PLUGIN_PARAM_TARGET} ${GET_LIBS_AND_DEFINES_LIBS} DPF)
  44. target_include_directories(${PLUGIN_PARAM_TARGET} PUBLIC ${PLUGIN_PARAM_INCLUDE_DIRECTORIES})
  45. target_compile_definitions(${PLUGIN_PARAM_TARGET} PUBLIC ${PLUGIN_PARAM_DEFINES} ${GET_LIBS_AND_DEFINES_DEFINES} DISTRHO_PLUGIN_TARGET_VST)
  46. endfunction(BUILD_VST2)
  47. # Parameter to use:
  48. # TARGET: Name for the generated VST
  49. # UI_BACKEND; weather it should be NONE,EXTERNAL,OPENGL or CAIRO because its an ladspa... set it to NONE or External...
  50. # SOURCES: Plugin Sources, to compile in the vst
  51. # INCLUDE_DIRECTORIES: Directories to include to the vst.
  52. # DEFINE: Define Preprocessor defines
  53. function(BUILD_LADSPA )
  54. set(oneValueArgs TARGET UI_BACKEND)
  55. set(multiValueArgs SOURCES INCLUDE_DIRECTORIES DEFINES)
  56. cmake_parse_arguments(PLUGIN_PARAM "" "${oneValueArgs}" "${multiValueArgs}" ${ARGN} )
  57. GET_LIBS_AND_DEFINES(${PLUGIN_PARAM_UI_BACKEND} )
  58. add_library(${PLUGIN_PARAM_TARGET} MODULE ${PLUGIN_PARAM_SOURCES})
  59. SET_TARGET_PROPERTIES(${PLUGIN_PARAM_TARGET} PROPERTIES PREFIX "")
  60. target_link_libraries(${PLUGIN_PARAM_TARGET} ${GET_LIBS_AND_DEFINES_LIBS} )
  61. target_include_directories(${PLUGIN_PARAM_TARGET} PUBLIC ${PLUGIN_PARAM_INCLUDE_DIRECTORIES})
  62. target_compile_definitions(${PLUGIN_PARAM_TARGET} PUBLIC ${PLUGIN_PARAM_DEFINES} ${GET_LIBS_AND_DEFINES_DEFINES} DISTRHO_PLUGIN_TARGET_LADSPA)
  63. endfunction(BUILD_LADSPA)
  64. # Parameter to use:
  65. # TARGET: Name for the generated VST
  66. # UI_BACKEND: weather it should be NONE,EXTERNAL,OPENGL or CAIRO
  67. # UI_SOURCES: Plugin UI Sources
  68. # SOURCES: Plugin Sources, to compile in the vst
  69. # INCLUDE_DIRECTORIES: Directories to include to the vst.
  70. # DEFINE: Define Preprocessor defines
  71. # fills the Variable ${TARGET}_TTL_FILES with the generated files.
  72. # if a ui is specified(with UI_SOURCES) 2 targets are build the TARGET and {TARGET}_ui
  73. function(BUILD_LV2 )
  74. set(oneValueArgs TARGET UI_BACKEND)
  75. set(multiValueArgs SOURCES UI_SOURCES INCLUDE_DIRECTORIES DEFINES)
  76. cmake_parse_arguments(PLUGIN_PARAM "" "${oneValueArgs}" "${multiValueArgs}" ${ARGN} )
  77. GET_LIBS_AND_DEFINES(${PLUGIN_PARAM_UI_BACKEND})
  78. if(PLUGIN_PARAM_UI_SOURCES) # IF UI Files are present, build seperated UI Files.
  79. add_library(${PLUGIN_PARAM_TARGET}_ui MODULE ${PLUGIN_PARAM_UI_SOURCES})
  80. SET_TARGET_PROPERTIES(${PLUGIN_PARAM_TARGET}_ui PROPERTIES PREFIX "")
  81. target_link_libraries(${PLUGIN_PARAM_TARGET}_ui ${GET_LIBS_AND_DEFINES_LIBS} )
  82. target_include_directories(${PLUGIN_PARAM_TARGET}_ui PUBLIC ${PLUGIN_PARAM_INCLUDE_DIRECTORIES})
  83. target_compile_definitions(${PLUGIN_PARAM_TARGET}_ui PUBLIC ${PLUGIN_PARAM_DEFINES} ${GET_LIBS_AND_DEFINES_DEFINES} DISTRHO_PLUGIN_TARGET_LV2)
  84. add_library(${PLUGIN_PARAM_TARGET} MODULE ${PLUGIN_PARAM_SOURCES} ${PLUGIN_PARAM_UI_SOURCES})
  85. SET_TARGET_PROPERTIES(${PLUGIN_PARAM_TARGET} PROPERTIES PREFIX "")
  86. target_link_libraries(${PLUGIN_PARAM_TARGET} ${GET_LIBS_AND_DEFINES_LIBS} DPF DPF_UI)
  87. target_include_directories(${PLUGIN_PARAM_TARGET} PUBLIC ${PLUGIN_PARAM_INCLUDE_DIRECTORIES})
  88. target_compile_definitions(${PLUGIN_PARAM_TARGET} PUBLIC ${PLUGIN_PARAM_DEFINES} ${GET_LIBS_AND_DEFINES_DEFINES} DISTRHO_PLUGIN_TARGET_LV2)
  89. set(${PLUGIN_PARAM_TARGET}_TTL_FILES
  90. $<TARGET_FILE_DIR:${PLUGIN_PARAM_TARGET}>/manifest.ttl
  91. $<TARGET_FILE_DIR:${PLUGIN_PARAM_TARGET}>/${PLUGIN_PARAM_TARGET}.ttl
  92. $<TARGET_FILE_DIR:${PLUGIN_PARAM_TARGET}>/${PLUGIN_PARAM_TARGET}_ui.ttl PARENT_SCOPE)
  93. else()
  94. GET_LIBS_AND_DEFINES(${PLUGIN_PARAM_UI_BACKEND} )
  95. add_library(${PLUGIN_PARAM_TARGET} MODULE ${PLUGIN_PARAM_SOURCES})
  96. SET_TARGET_PROPERTIES(${PLUGIN_PARAM_TARGET} PROPERTIES PREFIX "")
  97. target_link_libraries(${PLUGIN_PARAM_TARGET} ${GET_LIBS_AND_DEFINES_LIBS} )
  98. target_include_directories(${PLUGIN_PARAM_TARGET} PUBLIC ${PLUGIN_PARAM_INCLUDE_DIRECTORIES})
  99. target_compile_definitions(${PLUGIN_PARAM_TARGET} PUBLIC ${PLUGIN_PARAM_DEFINES} ${GET_LIBS_AND_DEFINES_DEFINES} DISTRHO_PLUGIN_TARGET_LV2)
  100. set(${PLUGIN_PARAM_TARGET}_TTL_FILES
  101. $<TARGET_FILE_DIR:${PLUGIN_PARAM_TARGET}>/manifest.ttl
  102. $<TARGET_FILE_DIR:${PLUGIN_PARAM_TARGET}>/${PLUGIN_PARAM_TARGET}.ttl PARENT_SCOPE)
  103. endif(PLUGIN_PARAM_UI_SOURCES)
  104. add_custom_command(TARGET ${PLUGIN_PARAM_TARGET} POST_BUILD COMMAND $<TARGET_FILE:lv2_ttl_generator> ARGS $<TARGET_FILE:${PLUGIN_PARAM_TARGET}> )
  105. endfunction(BUILD_LV2)
  106. function(BUILD_DSSI )
  107. set(oneValueArgs TARGET UI_BACKEND)
  108. set(multiValueArgs SOURCES UI_SOURCES INCLUDE_DIRECTORIES DEFINES)
  109. cmake_parse_arguments(PLUGIN_PARAM "" "${oneValueArgs}" "${multiValueArgs}" ${ARGN} )
  110. GET_LIBS_AND_DEFINES(${PLUGIN_PARAM_UI_BACKEND} )
  111. IF(PLUGIN_PARAM_UI_SOURCES)
  112. add_library(${PLUGIN_PARAM_TARGET}_ui MODULE ${PLUGIN_PARAM_UI_SOURCES})
  113. SET_TARGET_PROPERTIES(${PLUGIN_PARAM_TARGET}_ui PROPERTIES PREFIX "")
  114. target_link_libraries(${PLUGIN_PARAM_TARGET}_ui ${GET_LIBS_AND_DEFINES_LIBS} ${LIBLO_LIBRARIES})
  115. target_include_directories(${PLUGIN_PARAM_TARGET}_ui PUBLIC ${PLUGIN_PARAM_INCLUDE_DIRECTORIES} ${LIBLO_INCLUDE_DIRS})
  116. target_compile_definitions(${PLUGIN_PARAM_TARGET}_ui PUBLIC ${PLUGIN_PARAM_DEFINES} ${GET_LIBS_AND_DEFINES_DEFINES} DISTRHO_PLUGIN_TARGET_DSSI)
  117. add_library(${PLUGIN_PARAM_TARGET} MODULE ${PLUGIN_PARAM_SOURCES} ${PLUGIN_PARAM_UI_SOURCES})
  118. SET_TARGET_PROPERTIES(${PLUGIN_PARAM_TARGET} PROPERTIES PREFIX "")
  119. target_link_libraries(${PLUGIN_PARAM_TARGET} ${GET_LIBS_AND_DEFINES_LIBS} DPF DPF_UI ${LIBLO_LIBRARIES})
  120. target_include_directories(${PLUGIN_PARAM_TARGET} PUBLIC ${PLUGIN_PARAM_INCLUDE_DIRECTORIES} ${LIBLO_INCLUDE_DIRS})
  121. target_compile_definitions(${PLUGIN_PARAM_TARGET} PUBLIC ${PLUGIN_PARAM_DEFINES} ${GET_LIBS_AND_DEFINES_DEFINES} DISTRHO_PLUGIN_TARGET_DSSI)
  122. ELSE(PLUGIN_PARAM_UI_SOURCES)
  123. add_library(${PLUGIN_PARAM_TARGET} MODULE ${PLUGIN_PARAM_SOURCES})
  124. SET_TARGET_PROPERTIES(${PLUGIN_PARAM_TARGET} PROPERTIES PREFIX "")
  125. target_link_libraries(${PLUGIN_PARAM_TARGET} ${GET_LIBS_AND_DEFINES_LIBS} ${LIBLO_LIBRARIES})
  126. target_include_directories(${PLUGIN_PARAM_TARGET} PUBLIC ${PLUGIN_PARAM_INCLUDE_DIRECTORIES} ${LIBLO_INCLUDE_DIRS})
  127. target_compile_definitions(${PLUGIN_PARAM_TARGET} PUBLIC ${PLUGIN_PARAM_DEFINES} ${GET_LIBS_AND_DEFINES_DEFINES} DISTRHO_PLUGIN_TARGET_DSSI)
  128. ENDIF(PLUGIN_PARAM_UI_SOURCES)
  129. endfunction(BUILD_DSSI)
  130. #Are u so lazy, u have to call all functions? okay.... but declare erverything...
  131. function(BUILD_ALL_PLUGINS)
  132. set(oneValueArgs TARGET UI_BACKEND)
  133. set(multiValueArgs SOURCES INCLUDE_DIRECTORIES DEFINES)
  134. cmake_parse_arguments(PLUGIN_PARAM "" "${oneValueArgs}" "${multiValueArgs}" ${ARGN} )
  135. BUILD_LV2(TARGET ${PLUGIN_PARAM_TARGET}.lv2 UI_BACKEND ${PLUGIN_PARAM_UI_BACKEND} SOURCES ${PLUGIN_PARAM_SOURCES} INCLUDE_DIRECTORIES ${PLUGIN_PARAM_INCLUDE_DIRECTORIES} DEFINES ${PLUGIN_PARAM_DEFINES})
  136. BUILD_VST2(TARGET ${PLUGIN_PARAM_TARGET}.vst UI_BACKEND ${PLUGIN_PARAM_UI_BACKEND} SOURCES ${PLUGIN_PARAM_SOURCES} INCLUDE_DIRECTORIES ${PLUGIN_PARAM_INCLUDE_DIRECTORIES} DEFINES ${PLUGIN_PARAM_DEFINES})
  137. BUILD_DSSI(TARGET ${PLUGIN_PARAM_TARGET}.dssi UI_BACKEND ${PLUGIN_PARAM_UI_BACKEND} SOURCES ${PLUGIN_PARAM_SOURCES} INCLUDE_DIRECTORIES ${PLUGIN_PARAM_INCLUDE_DIRECTORIES} DEFINES ${PLUGIN_PARAM_DEFINES})
  138. IF(${PLUGIN_PARAM_UI_BACKEND} STREQUAL "NONE")
  139. BUILD_LADSPA(TARGET ${PLUGIN_PARAM_TARGET}.ladspa UI_BACKEND ${PLUGIN_PARAM_UI_BACKEND} SOURCES ${PLUGIN_PARAM_SOURCES} INCLUDE_DIRECTORIES ${PLUGIN_PARAM_INCLUDE_DIRECTORIES} DEFINES ${PLUGIN_PARAM_DEFINES})
  140. ENDIF(${PLUGIN_PARAM_UI_BACKEND} STREQUAL "NONE")
  141. endfunction(BUILD_ALL_PLUGINS)
  142. #TODO JACK USW HIERHIN