Audio plugin host https://kx.studio/carla
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.

AppConfig.h 15KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420
  1. /*
  2. * Carla Plugin Host
  3. * Copyright (C) 2011-2022 Filipe Coelho <falktx@falktx.com>
  4. *
  5. * This program is free software; you can redistribute it and/or
  6. * modify it under the terms of the GNU General Public License as
  7. * published by the Free Software Foundation; either version 2 of
  8. * the License, or any later version.
  9. *
  10. * This program is distributed in the hope that it will be useful,
  11. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  12. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  13. * GNU General Public License for more details.
  14. *
  15. * For a full copy of the GNU General Public License see the doc/GPL.txt file.
  16. */
  17. #ifndef CARLA_JUCE_APPCONFIG_H_INCLUDED
  18. #define CARLA_JUCE_APPCONFIG_H_INCLUDED
  19. // --------------------------------------------------------------------------------------------------------------------
  20. // Check OS
  21. #if defined(WIN64) || defined(_WIN64) || defined(__WIN64__)
  22. # define APPCONFIG_OS_WIN64
  23. #elif defined(WIN32) || defined(_WIN32) || defined(__WIN32__)
  24. # define APPCONFIG_OS_WIN32
  25. #elif defined(__APPLE__)
  26. # define APPCONFIG_OS_MAC
  27. #elif defined(__linux__) || defined(__linux)
  28. # define APPCONFIG_OS_LINUX
  29. #elif defined(__FreeBSD__)
  30. # define APPCONFIG_OS_FREEBSD
  31. #endif
  32. #if defined(APPCONFIG_OS_WIN32) || defined(APPCONFIG_OS_WIN64)
  33. # define APPCONFIG_OS_WIN
  34. #elif defined(APPCONFIG_OS_LINUX) || defined(APPCONFIG_OS_FREEBSD) || defined(APPCONFIG_OS_MAC)
  35. # define APPCONFIG_OS_UNIX
  36. #endif
  37. // --------------------------------------------------------------------------------------------------------------------
  38. // always enabled
  39. #define JUCE_MODULE_AVAILABLE_juce_audio_basics 1
  40. #define JUCE_MODULE_AVAILABLE_juce_audio_processors 1
  41. #define JUCE_MODULE_AVAILABLE_juce_core 1
  42. #define JUCE_MODULE_AVAILABLE_juce_data_structures 1
  43. #define JUCE_MODULE_AVAILABLE_juce_events 1
  44. #define JUCE_MODULE_AVAILABLE_juce_graphics 1
  45. #define JUCE_MODULE_AVAILABLE_juce_gui_basics 1
  46. #define JUCE_MODULE_AVAILABLE_juce_gui_extra 1
  47. // always disabled
  48. #define JUCE_MODULE_AVAILABLE_juce_audio_formats 0
  49. #define JUCE_MODULE_AVAILABLE_juce_audio_plugin_client 0
  50. #define JUCE_MODULE_AVAILABLE_juce_audio_utils 0
  51. #define JUCE_MODULE_AVAILABLE_juce_cryptography 0
  52. #define JUCE_MODULE_AVAILABLE_juce_opengl 0
  53. #define JUCE_MODULE_AVAILABLE_juce_video 0
  54. // conditional
  55. #if defined(USING_JUCE_AUDIO_DEVICES) && !defined(BUILD_BRIDGE)
  56. # define JUCE_MODULE_AVAILABLE_juce_audio_devices 1
  57. #else
  58. # define JUCE_MODULE_AVAILABLE_juce_audio_devices 0
  59. #endif
  60. // misc
  61. #define JUCE_DISABLE_JUCE_VERSION_PRINTING 1
  62. #define JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED 1
  63. #define JUCE_STANDALONE_APPLICATION 0
  64. #define JUCE_REPORT_APP_USAGE 0
  65. #define JUCE_DISPLAY_SPLASH_SCREEN 0
  66. #define JUCE_USE_DARK_SPLASH_SCREEN 0
  67. #define JUCE_STRING_UTF_TYPE 8
  68. #define JUCE_USE_VFORK 1
  69. #if defined(APPCONFIG_OS_LINUX) || defined(APPCONFIG_OS_FREEBSD)
  70. # define JUCE_DISABLE_NATIVE_FILECHOOSERS 1
  71. # define JUCE_MODAL_LOOPS_PERMITTED 0
  72. // # define JUCE_AUDIOPROCESSOR_NO_GUI 1
  73. #endif
  74. // --------------------------------------------------------------------------------------------------------------------
  75. // juce_audio_basics
  76. // nothing here
  77. // --------------------------------------------------------------------------------------------------------------------
  78. // juce_audio_devices
  79. //=============================================================================
  80. /** Config: JUCE_ASIO
  81. Enables ASIO audio devices (MS Windows only).
  82. Turning this on means that you'll need to have the Steinberg ASIO SDK installed
  83. on your Windows build machine.
  84. See the comments in the ASIOAudioIODevice class's header file for more
  85. info about this.
  86. */
  87. #ifdef APPCONFIG_OS_WIN
  88. #define JUCE_ASIO 1
  89. #else
  90. #define JUCE_ASIO 0
  91. #endif
  92. /** Config: JUCE_WASAPI
  93. Enables WASAPI audio devices (Windows Vista and above).
  94. */
  95. #if defined(APPCONFIG_OS_WIN) && !defined(BUILDING_CARLA_NOOPT)
  96. #define JUCE_WASAPI 1
  97. #else
  98. #define JUCE_WASAPI 0
  99. #endif
  100. /** Config: JUCE_DIRECTSOUND
  101. Enables DirectSound audio (MS Windows only).
  102. */
  103. #ifdef APPCONFIG_OS_WIN
  104. #define JUCE_DIRECTSOUND 1
  105. #else
  106. #define JUCE_DIRECTSOUND 0
  107. #endif
  108. /** Config: JUCE_ALSA
  109. Enables ALSA audio devices (Linux only).
  110. */
  111. #ifdef APPCONFIG_OS_LINUX
  112. #define JUCE_ALSA 1
  113. #define JUCE_ALSA_MIDI_NAME "Carla"
  114. #define JUCE_ALSA_MIDI_INPUT_NAME "Carla"
  115. #define JUCE_ALSA_MIDI_OUTPUT_NAME "Carla"
  116. #define JUCE_ALSA_MIDI_INPUT_PORT_NAME "Midi In"
  117. #define JUCE_ALSA_MIDI_OUTPUT_PORT_NAME "Midi Out"
  118. #else
  119. #define JUCE_ALSA 0
  120. #endif
  121. /** Config: JUCE_JACK
  122. Enables JACK audio devices (Linux only).
  123. */
  124. #if defined(APPCONFIG_OS_LINUX) || defined(APPCONFIG_OS_FREEBSD)
  125. #define JUCE_JACK 1
  126. #define JUCE_JACK_CLIENT_NAME "Carla"
  127. #else
  128. #define JUCE_JACK 0
  129. #endif
  130. //=============================================================================
  131. /** Config: JUCE_USE_CDREADER
  132. Enables the AudioCDReader class (on supported platforms).
  133. */
  134. #define JUCE_USE_CDREADER 0
  135. /** Config: JUCE_USE_CDBURNER
  136. Enables the AudioCDBurner class (on supported platforms).
  137. */
  138. #define JUCE_USE_CDBURNER 0
  139. // --------------------------------------------------------------------------------------------------------------------
  140. // juce_audio_formats
  141. //=============================================================================
  142. /** Config: JUCE_USE_FLAC
  143. Enables the FLAC audio codec classes (available on all platforms).
  144. If your app doesn't need to read FLAC files, you might want to disable this to
  145. reduce the size of your codebase and build time.
  146. */
  147. #define JUCE_USE_FLAC 1
  148. /** Config: JUCE_USE_OGGVORBIS
  149. Enables the Ogg-Vorbis audio codec classes (available on all platforms).
  150. If your app doesn't need to read Ogg-Vorbis files, you might want to disable this to
  151. reduce the size of your codebase and build time.
  152. */
  153. #define JUCE_USE_OGGVORBIS 1
  154. /** Config: JUCE_USE_MP3AUDIOFORMAT
  155. Enables the software-based MP3AudioFormat class.
  156. IMPORTANT DISCLAIMER: By choosing to enable the JUCE_USE_MP3AUDIOFORMAT flag and to compile
  157. this MP3 code into your software, you do so AT YOUR OWN RISK! By doing so, you are agreeing
  158. that Raw Material Software is in no way responsible for any patent, copyright, or other
  159. legal issues that you may suffer as a result.
  160. The code in juce_MP3AudioFormat.cpp is NOT guaranteed to be free from infringements of 3rd-party
  161. intellectual property. If you wish to use it, please seek your own independent advice about the
  162. legality of doing so. If you are not willing to accept full responsibility for the consequences
  163. of using this code, then do not enable this setting.
  164. */
  165. #define JUCE_USE_MP3AUDIOFORMAT 0
  166. /** Config: JUCE_USE_LAME_AUDIO_FORMAT
  167. Enables the LameEncoderAudioFormat class.
  168. */
  169. #define JUCE_USE_LAME_AUDIO_FORMAT 1
  170. /** Config: JUCE_USE_WINDOWS_MEDIA_FORMAT
  171. Enables the Windows Media SDK codecs.
  172. */
  173. #define JUCE_USE_WINDOWS_MEDIA_FORMAT 0
  174. // --------------------------------------------------------------------------------------------------------------------
  175. // juce_audio_processors
  176. #define JUCE_VST_FALLBACK_HOST_NAME "Carla"
  177. //=============================================================================
  178. /** Config: JUCE_PLUGINHOST_VST
  179. Enables the VST audio plugin hosting classes. This requires the Steinberg VST SDK to be
  180. installed on your machine.
  181. @see VSTPluginFormat, AudioPluginFormat, AudioPluginFormatManager, JUCE_PLUGINHOST_AU
  182. */
  183. #if defined(APPCONFIG_OS_MAC) || defined(APPCONFIG_OS_WIN)
  184. # define JUCE_PLUGINHOST_VST 1
  185. #else
  186. # define JUCE_PLUGINHOST_VST 0
  187. #endif
  188. /** Config: JUCE_PLUGINHOST_VST3
  189. Enables the VST3 audio plugin hosting classes. This requires the Steinberg VST3 SDK to be
  190. installed on your machine.
  191. @see VSTPluginFormat, VST3PluginFormat, AudioPluginFormat, AudioPluginFormatManager, JUCE_PLUGINHOST_VST, JUCE_PLUGINHOST_AU
  192. */
  193. #if defined(APPCONFIG_OS_LINUX) || defined(APPCONFIG_OS_MAC) || defined(APPCONFIG_OS_WIN)
  194. # define JUCE_PLUGINHOST_VST3 1
  195. #else
  196. # define JUCE_PLUGINHOST_VST3 0
  197. #endif
  198. /** Config: JUCE_PLUGINHOST_AU
  199. Enables the AudioUnit plugin hosting classes. This is Mac-only, of course.
  200. @see AudioUnitPluginFormat, AudioPluginFormat, AudioPluginFormatManager, JUCE_PLUGINHOST_VST
  201. */
  202. #ifdef APPCONFIG_OS_MAC
  203. # define JUCE_PLUGINHOST_AU 1
  204. #else
  205. # define JUCE_PLUGINHOST_AU 0
  206. #endif
  207. #define JUCE_PLUGINHOST_LADSPA 0
  208. // --------------------------------------------------------------------------------------------------------------------
  209. // juce_core
  210. //=============================================================================
  211. /** Config: JUCE_FORCE_DEBUG
  212. Normally, JUCE_DEBUG is set to 1 or 0 based on compiler and project settings,
  213. but if you define this value, you can override this to force it to be true or false.
  214. */
  215. #define JUCE_FORCE_DEBUG 0
  216. //=============================================================================
  217. /** Config: JUCE_LOG_ASSERTIONS
  218. If this flag is enabled, the the jassert and jassertfalse macros will always use Logger::writeToLog()
  219. to write a message when an assertion happens.
  220. Enabling it will also leave this turned on in release builds. When it's disabled,
  221. however, the jassert and jassertfalse macros will not be compiled in a
  222. release build.
  223. @see jassert, jassertfalse, Logger
  224. */
  225. #define JUCE_LOG_ASSERTIONS 1
  226. //=============================================================================
  227. /** Config: JUCE_CHECK_MEMORY_LEAKS
  228. Enables a memory-leak check for certain objects when the app terminates. See the LeakedObjectDetector
  229. class and the JUCE_LEAK_DETECTOR macro for more details about enabling leak checking for specific classes.
  230. */
  231. #ifdef DEBUG
  232. #define JUCE_CHECK_MEMORY_LEAKS 1
  233. // #define JUCE_DISABLE_ASSERTIONS 1
  234. #else
  235. #define JUCE_CHECK_MEMORY_LEAKS 0
  236. // #define JUCE_DISABLE_ASSERTIONS 0
  237. #endif
  238. //=============================================================================
  239. /** Config: JUCE_DONT_AUTOLINK_TO_WIN32_LIBRARIES
  240. In a Visual C++ build, this can be used to stop the required system libs being
  241. automatically added to the link stage.
  242. */
  243. #define JUCE_DONT_AUTOLINK_TO_WIN32_LIBRARIES 0
  244. /** Config: JUCE_INCLUDE_ZLIB_CODE
  245. This can be used to disable Juce's embedded 3rd-party zlib code.
  246. You might need to tweak this if you're linking to an external zlib library in your app,
  247. but for normal apps, this option should be left alone.
  248. If you disable this, you might also want to set a value for JUCE_ZLIB_INCLUDE_PATH, to
  249. specify the path where your zlib headers live.
  250. */
  251. #define JUCE_INCLUDE_ZLIB_CODE 1
  252. /** Config: JUCE_USE_CURL
  253. Enables http/https support via libcurl (Linux only). Enabling this will add an additional
  254. run-time dynmic dependency to libcurl.
  255. If you disable this then https/ssl support will not be available on linux.
  256. */
  257. #define JUCE_USE_CURL 0
  258. /* Config: JUCE_CATCH_UNHANDLED_EXCEPTIONS
  259. If enabled, this will add some exception-catching code to forward unhandled exceptions
  260. to your JUCEApplicationBase::unhandledException() callback.
  261. */
  262. #define JUCE_CATCH_UNHANDLED_EXCEPTIONS 0
  263. /** Config: JUCE_ALLOW_STATIC_NULL_VARIABLES
  264. If disabled, this will turn off dangerous static globals like String::empty, var::null, etc
  265. which can cause nasty order-of-initialisation problems if they are referenced during static
  266. constructor code.
  267. */
  268. #define JUCE_ALLOW_STATIC_NULL_VARIABLES 0
  269. // --------------------------------------------------------------------------------------------------------------------
  270. // juce_data_structures
  271. // nothing here
  272. // --------------------------------------------------------------------------------------------------------------------
  273. // juce_events
  274. // nothing here
  275. // --------------------------------------------------------------------------------------------------------------------
  276. // juce_graphics
  277. //=============================================================================
  278. /** Config: JUCE_USE_COREIMAGE_LOADER
  279. On OSX, enabling this flag means that the CoreImage codecs will be used to load
  280. PNG/JPEG/GIF files. It is enabled by default, but you may want to disable it if
  281. you'd rather use libpng, libjpeg, etc.
  282. */
  283. #define JUCE_USE_COREIMAGE_LOADER 1
  284. /** Config: JUCE_USE_DIRECTWRITE
  285. Enabling this flag means that DirectWrite will be used when available for font
  286. management and layout.
  287. */
  288. #define JUCE_USE_DIRECTWRITE 0
  289. #define JUCE_INCLUDE_PNGLIB_CODE 1
  290. #define JUCE_INCLUDE_JPEGLIB_CODE 1
  291. #define USE_COREGRAPHICS_RENDERING 0
  292. // --------------------------------------------------------------------------------------------------------------------
  293. // juce_gui_basics
  294. //=============================================================================
  295. /** Config: JUCE_ENABLE_REPAINT_DEBUGGING
  296. If this option is turned on, each area of the screen that gets repainted will
  297. flash in a random colour, so that you can see exactly which bits of your
  298. components are being drawn.
  299. */
  300. #define JUCE_ENABLE_REPAINT_DEBUGGING 0
  301. /** JUCE_USE_XRANDR: Enables Xrandr multi-monitor support (Linux only).
  302. Unless you specifically want to disable this, it's best to leave this option turned on.
  303. Note that your users do not need to have Xrandr installed for your JUCE app to run, as
  304. the availability of Xrandr is queried during runtime.
  305. */
  306. #define JUCE_USE_XRANDR 0
  307. /** JUCE_USE_XINERAMA: Enables Xinerama multi-monitor support (Linux only).
  308. Unless you specifically want to disable this, it's best to leave this option turned on.
  309. This will be used as a fallback if JUCE_USE_XRANDR not set or libxrandr cannot be found.
  310. Note that your users do not need to have Xrandr installed for your JUCE app to run, as
  311. the availability of Xinerama is queried during runtime.
  312. */
  313. #define JUCE_USE_XINERAMA 0
  314. /** Config: JUCE_USE_XSHM
  315. Enables X shared memory for faster rendering on Linux. This is best left turned on
  316. unless you have a good reason to disable it.
  317. */
  318. #define JUCE_USE_XSHM 1
  319. /** Config: JUCE_USE_XRENDER
  320. Enables XRender to allow semi-transparent windowing on Linux.
  321. */
  322. #define JUCE_USE_XRENDER 0
  323. /** Config: JUCE_USE_XCURSOR
  324. Uses XCursor to allow ARGB cursor on Linux. This is best left turned on unless you have
  325. a good reason to disable it.
  326. */
  327. #define JUCE_USE_XCURSOR 1
  328. // --------------------------------------------------------------------------------------------------------------------
  329. // juce_gui_extra
  330. //=============================================================================
  331. /** Config: JUCE_WEB_BROWSER
  332. This lets you disable the WebBrowserComponent class (Mac and Windows).
  333. If you're not using any embedded web-pages, turning this off may reduce your code size.
  334. */
  335. #define JUCE_WEB_BROWSER 0
  336. /** Config: JUCE_ENABLE_LIVE_CONSTANT_EDITOR
  337. This lets you turn on the JUCE_ENABLE_LIVE_CONSTANT_EDITOR support. See the documentation
  338. for that macro for more details.
  339. */
  340. #define JUCE_ENABLE_LIVE_CONSTANT_EDITOR 0
  341. // --------------------------------------------------------------------------------------------------------------------
  342. #endif // CARLA_JUCE_APPCONFIG_H_INCLUDED