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.

291 lines
9.1KB

  1. ###############################################################################
  2. if linux_embed
  3. plugins = [
  4. 'arctican-function',
  5. 'arctican-pilgrim',
  6. 'drowaudio-distortion',
  7. 'drowaudio-distortionshaper',
  8. 'drowaudio-flanger',
  9. 'drowaudio-reverb',
  10. 'drowaudio-tremolo',
  11. 'luftikus',
  12. 'obxd',
  13. 'tal-dub-3',
  14. 'tal-filter',
  15. 'tal-filter-2',
  16. 'tal-noisemaker',
  17. 'tal-reverb',
  18. 'tal-reverb-2',
  19. 'tal-reverb-3',
  20. 'tal-vocoder-2',
  21. 'temper',
  22. 'vex',
  23. 'wolpertinger',
  24. ]
  25. else
  26. plugins = [
  27. 'arctican-function',
  28. 'arctican-pilgrim',
  29. 'dexed',
  30. 'drowaudio-distortion',
  31. 'drowaudio-distortionshaper',
  32. 'drowaudio-flanger',
  33. 'drowaudio-reverb',
  34. 'drowaudio-tremolo',
  35. 'drumsynth',
  36. 'easySSP',
  37. 'eqinox',
  38. 'HiReSam',
  39. 'juce-opl',
  40. 'klangfalter',
  41. 'LUFSMeter',
  42. 'LUFSMeter-Multi',
  43. 'luftikus',
  44. 'obxd',
  45. 'pitchedDelay',
  46. 'refine',
  47. 'stereosourceseparation',
  48. 'tal-dub-3',
  49. 'tal-filter',
  50. 'tal-filter-2',
  51. 'tal-noisemaker',
  52. 'tal-reverb',
  53. 'tal-reverb-2',
  54. 'tal-reverb-3',
  55. 'tal-vocoder-2',
  56. 'temper',
  57. 'vex',
  58. 'wolpertinger',
  59. ]
  60. endif
  61. plugin_include_dirs = [
  62. include_directories('../libs/drowaudio/source'),
  63. include_directories('../libs/juced/source'),
  64. include_directories('../libs/juce5'),
  65. include_directories('../libs/juce5/source'),
  66. include_directories('../libs/juce5/source/modules'),
  67. include_directories('../libs/juce-plugin'),
  68. ]
  69. ###############################################################################
  70. # dependencies
  71. if os_linux and not linux_embed
  72. dependencies_plugin = [
  73. dependency('x11'),
  74. dependency('xext'),
  75. ]
  76. else
  77. dependencies_plugin = [
  78. ]
  79. endif
  80. ###############################################################################
  81. # build flags for plugins
  82. build_flags_plugin = [
  83. '-Werror=deprecated-declarations',
  84. ]
  85. ###############################################################################
  86. # format-specific build flags
  87. build_flags_plugin_lv2 = [
  88. '-DJucePlugin_Build_AU=0',
  89. '-DJucePlugin_Build_LV2=1',
  90. '-DJucePlugin_Build_RTAS=0',
  91. '-DJucePlugin_Build_VST=0',
  92. '-DJucePlugin_Build_Standalone=0',
  93. '-DBINTYPE=@0@LV2'.format(bintype_prefix),
  94. '-Wno-parentheses',
  95. ]
  96. build_flags_plugin_vst2 = [
  97. '-DJucePlugin_Build_AU=0',
  98. '-DJucePlugin_Build_LV2=0',
  99. '-DJucePlugin_Build_RTAS=0',
  100. '-DJucePlugin_Build_VST=1',
  101. '-DJucePlugin_Build_Standalone=0',
  102. '-DBINTYPE=@0@VST2'.format(bintype_prefix),
  103. '-Wno-write-strings',
  104. ]
  105. ###############################################################################
  106. # format-specific link flags
  107. link_flags_plugin_common = [
  108. ]
  109. if os_darwin
  110. link_flags_plugin_common += [
  111. '-framework', 'Accelerate',
  112. '-framework', 'AudioToolbox',
  113. '-framework', 'AudioUnit',
  114. '-framework', 'Carbon',
  115. '-framework', 'Cocoa',
  116. '-framework', 'CoreAudio',
  117. '-framework', 'CoreAudioKit',
  118. '-framework', 'CoreMIDI',
  119. '-framework', 'IOKit',
  120. '-framework', 'QuartzCore',
  121. '-framework', 'WebKit',
  122. ]
  123. link_flags_plugin_lv2 = [
  124. '-Wl,-exported_symbol,_lv2_generate_ttl',
  125. '-Wl,-exported_symbol,_lv2_descriptor',
  126. '-Wl,-exported_symbol,_lv2ui_descriptor',
  127. ]
  128. link_flags_plugin_vst2 = [
  129. '-Wl,-exported_symbol,_VSTPluginMain',
  130. ]
  131. else
  132. link_flags_plugin_lv2 = [
  133. '-Wl,--version-script=' + meson.source_root() + '/scripts/plugin-symbols-lv2.version',
  134. ]
  135. link_flags_plugin_vst2 = [
  136. '-Wl,--version-script=' + meson.source_root() + '/scripts/plugin-symbols-vst2.version',
  137. ]
  138. endif
  139. ###############################################################################
  140. build_flags_drowaudio = [
  141. '-DUSE_DROWAUDIO=1',
  142. ]
  143. build_flags_juced = [
  144. '-DUSE_JUCED=1',
  145. ]
  146. ###############################################################################
  147. if build_lv2 or build_vst2
  148. foreach plugin : plugins
  149. if plugin in get_option('plugins')
  150. plugin_uses_drowaudio = false
  151. plugin_uses_juced = false
  152. plugin_uses_devices = false
  153. plugin_uses_opengl = false
  154. plugin_extra_dependencies = []
  155. plugin_extra_include_dirs = []
  156. plugin_extra_build_flags = []
  157. plugin_extra_link_flags = []
  158. plugin_extra_format_specific_srcs = []
  159. subdir(plugin)
  160. plugin_extra_format_specific_srcs += files([
  161. '../libs/juce-plugin/JucePluginMain.cpp',
  162. '../libs/juce-plugin/JucePluginUtils.cpp',
  163. ])
  164. link_with_plugin = [
  165. lib_juce5
  166. ]
  167. if plugin_uses_drowaudio
  168. link_with_plugin += lib_drowaudio
  169. endif
  170. if plugin_uses_juced
  171. link_with_plugin += lib_juced
  172. endif
  173. if plugin_uses_devices
  174. link_with_plugin += lib_juce5_devices
  175. if os_linux
  176. plugin_extra_dependencies += [
  177. dependency('alsa'),
  178. ]
  179. endif
  180. endif
  181. if plugin_uses_opengl or buildtype == 'debug'
  182. if os_darwin
  183. plugin_extra_link_flags += [
  184. '-framework', 'OpenGL',
  185. ]
  186. elif os_windows
  187. plugin_extra_dependencies += [
  188. cc.find_library('opengl32'),
  189. ]
  190. elif not linux_embed
  191. plugin_extra_dependencies += [
  192. dependency('gl')
  193. ]
  194. endif
  195. endif
  196. plugin_lib = static_library(plugin_name + '_lib',
  197. name_prefix: '',
  198. sources: plugin_srcs,
  199. include_directories: [
  200. include_directories(plugin / 'source'),
  201. plugin_include_dirs,
  202. plugin_extra_include_dirs,
  203. ],
  204. c_args: build_flags + build_flags_plugin + plugin_extra_build_flags,
  205. cpp_args: build_flags_cpp + build_flags_plugin + plugin_extra_build_flags,
  206. dependencies: dependencies_plugin + plugin_extra_dependencies,
  207. pic: true,
  208. install: false,
  209. )
  210. link_with_plugin += plugin_lib
  211. if build_lv2
  212. plugin_lv2_lib = shared_library(plugin_name + '_lv2',
  213. name_prefix: '',
  214. sources: plugin_extra_format_specific_srcs,
  215. include_directories: [
  216. include_directories(plugin / 'source'),
  217. plugin_include_dirs,
  218. plugin_extra_include_dirs,
  219. ],
  220. c_args: build_flags + build_flags_plugin + build_flags_plugin_lv2 + plugin_extra_build_flags,
  221. cpp_args: build_flags_cpp + build_flags_plugin + build_flags_plugin_lv2 + plugin_extra_build_flags,
  222. link_args: link_flags + link_flags_plugin_common + link_flags_plugin_lv2 + plugin_extra_link_flags,
  223. link_with: link_with_plugin,
  224. )
  225. plugin_lv2_dir = meson.current_build_dir() / plugin_name + '.lv2'
  226. plugin_lv2_ttl = custom_target(plugin_name + '_lv2-ttl',
  227. output: plugin_name + '.lv2',
  228. input: plugin_lv2_lib,
  229. command: [
  230. 'mkdir', '-p', plugin_lv2_dir, '&&',
  231. 'cd', plugin_lv2_dir, '&&',
  232. 'cp', plugin_lv2_lib.full_path(), plugin_lv2_dir / plugin_name + lib_suffix, '&&',
  233. (meson.is_cross_build() ? 'wine' : 'env'), lv2_ttl_generator, '.' / plugin_name + lib_suffix,
  234. ],
  235. install: true,
  236. install_dir: lv2dir,
  237. )
  238. endif
  239. if build_vst2
  240. plugin_vst2_lib = shared_library(plugin_name,
  241. name_prefix: '',
  242. sources: plugin_extra_format_specific_srcs,
  243. include_directories: [
  244. include_directories(plugin / 'source'),
  245. plugin_include_dirs,
  246. plugin_extra_include_dirs,
  247. ],
  248. c_args: build_flags + build_flags_plugin + build_flags_plugin_vst2 + plugin_extra_build_flags,
  249. cpp_args: build_flags_cpp + build_flags_plugin + build_flags_plugin_vst2 + plugin_extra_build_flags,
  250. link_args: link_flags + link_flags_plugin_common + link_flags_plugin_vst2 + plugin_extra_link_flags,
  251. link_with: link_with_plugin,
  252. install: true,
  253. install_dir: vst2dir,
  254. )
  255. endif
  256. endif
  257. endforeach
  258. endif
  259. ###############################################################################