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.

304 lines
8.3KB

  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/juce-legacy'),
  65. include_directories('../libs/juce-legacy/source'),
  66. include_directories('../libs/juce-legacy/source/modules'),
  67. include_directories('../libs/juce-plugin'),
  68. include_directories('../libs/juce-plugin/juce-legacy'),
  69. ]
  70. ###############################################################################
  71. # dependencies
  72. dependencies_plugin = [
  73. ]
  74. if os_windows
  75. dependencies_plugin += [
  76. cc.find_library('comdlg32'),
  77. cc.find_library('gdi32'),
  78. cc.find_library('imm32'),
  79. cc.find_library('ole32'),
  80. cc.find_library('oleaut32'),
  81. cc.find_library('shlwapi'),
  82. cc.find_library('uuid'),
  83. cc.find_library('version'),
  84. cc.find_library('winmm'),
  85. cc.find_library('wininet'),
  86. cc.find_library('ws2_32'),
  87. ]
  88. endif
  89. ###############################################################################
  90. # build flags for plugins
  91. build_flags_plugin = [
  92. '-Werror=deprecated-declarations',
  93. ]
  94. build_flags_plugin_debug = [
  95. ]
  96. build_flags_plugin_release = [
  97. '-ffast-math',
  98. ]
  99. if optimizations and not linux_embed
  100. build_flags_plugin_release += [
  101. '-mfpmath=sse',
  102. ]
  103. endif
  104. ###############################################################################
  105. # link flags for plugins
  106. link_flags_plugin = [
  107. ]
  108. if os_darwin
  109. link_flags_plugin += [
  110. '-Wl,-export-symbols=' + meson.source_root() + '/scripts/plugin-symbols.txt',
  111. ]
  112. else
  113. link_flags_plugin += [
  114. '-Wl,--version-script=' + meson.source_root() + '/scripts/plugin-symbols.version',
  115. ]
  116. endif
  117. if os_darwin
  118. link_flags_plugin += [
  119. '-framework Accelerate',
  120. '-framework AudioToolbox',
  121. '-framework AudioUnit',
  122. '-framework Carbon',
  123. '-framework Cocoa',
  124. '-framework CoreAudio',
  125. '-framework CoreAudioKit',
  126. '-framework CoreMIDI',
  127. '-framework IOKit',
  128. '-framework QuartzCore',
  129. '-framework WebKit',
  130. ]
  131. endif
  132. ###############################################################################
  133. # combine flags depending on build type
  134. if buildtype == 'debug'
  135. build_flags_plugin += build_flags_plugin_debug
  136. else
  137. build_flags_plugin += build_flags_plugin_release
  138. endif
  139. ###############################################################################
  140. # format-specific flags
  141. build_flags_plugin_lv2 = [
  142. '-DJucePlugin_Build_AU=0',
  143. '-DJucePlugin_Build_LV2=1',
  144. '-DJucePlugin_Build_RTAS=0',
  145. '-DJucePlugin_Build_VST=0',
  146. '-DJucePlugin_Build_Standalone=0',
  147. '-DBINTYPE=@0@LV2'.format(bintype_prefix),
  148. '-Wno-parentheses',
  149. ]
  150. build_flags_plugin_vst2 = [
  151. '-DJucePlugin_Build_AU=0',
  152. '-DJucePlugin_Build_LV2=0',
  153. '-DJucePlugin_Build_RTAS=0',
  154. '-DJucePlugin_Build_VST=1',
  155. '-DJucePlugin_Build_Standalone=0',
  156. '-DBINTYPE=@0@VST2'.format(bintype_prefix),
  157. '-Wno-write-strings',
  158. ]
  159. ###############################################################################
  160. build_flags_drowaudio = [
  161. '-DUSE_DROWAUDIO=1',
  162. ]
  163. build_flags_juced = [
  164. '-DUSE_JUCED=1',
  165. ]
  166. ###############################################################################
  167. foreach plugin : plugins
  168. plugin_uses_drowaudio = false
  169. plugin_uses_juced = false
  170. plugin_uses_opengl = false
  171. plugin_extra_dependencies = []
  172. plugin_extra_include_dirs = []
  173. plugin_extra_build_flags = []
  174. plugin_extra_link_flags = []
  175. plugin_extra_format_specific_srcs = []
  176. subdir(plugin)
  177. plugin_extra_format_specific_srcs += files([
  178. '../libs/juce-plugin/JucePluginMain.cpp',
  179. '../libs/juce-plugin/JucePluginUtils.cpp',
  180. ])
  181. link_with_plugin = [
  182. lib_juce_legacy
  183. ]
  184. if plugin_uses_drowaudio
  185. link_with_plugin += lib_drowaudio
  186. endif
  187. if plugin_uses_juced
  188. link_with_plugin += lib_juced
  189. endif
  190. if plugin_uses_opengl
  191. if os_darwin
  192. plugin_extra_link_flags += [
  193. '-framework OpenGL',
  194. ]
  195. elif os_windows
  196. plugin_extra_dependencies += [
  197. cc.find_library('opengl32'),
  198. ]
  199. elif not linux_embed
  200. plugin_extra_dependencies += [
  201. dependency('gl')
  202. ]
  203. endif
  204. endif
  205. plugin_lib = static_library(plugin_name + '_lib',
  206. name_prefix: '',
  207. sources: plugin_srcs,
  208. include_directories: [
  209. include_directories(plugin / 'source'),
  210. plugin_include_dirs,
  211. plugin_extra_include_dirs,
  212. ],
  213. c_args: build_flags + build_flags_plugin + plugin_extra_build_flags,
  214. cpp_args: build_flags_cpp + build_flags_plugin + plugin_extra_build_flags,
  215. dependencies: dependencies_plugin + plugin_extra_dependencies,
  216. pic: true,
  217. install: false,
  218. )
  219. link_with_plugin += plugin_lib
  220. if build_lv2
  221. plugin_lv2_lib = shared_library(plugin_name + '_lv2',
  222. name_prefix: '',
  223. sources: plugin_extra_format_specific_srcs,
  224. include_directories: [
  225. include_directories(plugin / 'source'),
  226. plugin_include_dirs,
  227. plugin_extra_include_dirs,
  228. ],
  229. c_args: build_flags + build_flags_plugin + build_flags_plugin_lv2 + plugin_extra_build_flags,
  230. cpp_args: build_flags_cpp + build_flags_plugin + build_flags_plugin_lv2 + plugin_extra_build_flags,
  231. link_args: link_flags + link_flags_plugin,
  232. link_with: link_with_plugin,
  233. )
  234. plugin_lv2_dir = meson.current_build_dir() / plugin_name + '.lv2'
  235. plugin_lv2_ttl = custom_target(plugin_name + '_lv2-ttl',
  236. output: plugin_name + '.lv2',
  237. input: plugin_lv2_lib,
  238. command: [
  239. 'mkdir', '-p', plugin_lv2_dir, '&&',
  240. 'cd', plugin_lv2_dir, '&&',
  241. 'cp', plugin_lv2_lib.full_path(), plugin_lv2_dir / plugin_name + lib_suffix, '&&',
  242. (meson.is_cross_build() ? 'wine' : 'env'), lv2_ttl_generator, '.' / plugin_name + lib_suffix,
  243. ],
  244. install: true,
  245. install_dir: lv2dir,
  246. )
  247. endif
  248. if build_vst2
  249. plugin_vst2_lib = shared_library(plugin_name,
  250. name_prefix: '',
  251. sources: plugin_extra_format_specific_srcs,
  252. include_directories: [
  253. include_directories(plugin / 'source'),
  254. plugin_include_dirs,
  255. plugin_extra_include_dirs,
  256. ],
  257. c_args: build_flags + build_flags_plugin + build_flags_plugin_vst2 + plugin_extra_build_flags,
  258. cpp_args: build_flags_cpp + build_flags_plugin + build_flags_plugin_vst2 + plugin_extra_build_flags,
  259. link_args: link_flags + link_flags_plugin,
  260. link_with: link_with_plugin,
  261. install: true,
  262. install_dir: vst2dir,
  263. )
  264. endif
  265. endforeach
  266. ###############################################################################