Cleanup, need to get non-UI stuff working first
[juce-lv2.git] / juce / source / juce_Config.h
blobe1019141f54498ca8b38ce4c39042194407e8e4f
1 /*
2 ==============================================================================
4 This file is part of the JUCE library - "Jules' Utility Class Extensions"
5 Copyright 2004-9 by Raw Material Software Ltd.
7 ------------------------------------------------------------------------------
9 JUCE can be redistributed and/or modified under the terms of the GNU General
10 Public License (Version 2), as published by the Free Software Foundation.
11 A copy of the license is included in the JUCE distribution, or can be found
12 online at www.gnu.org/licenses.
14 JUCE is distributed in the hope that it will be useful, but WITHOUT ANY
15 WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
16 A PARTICULAR PURPOSE. See the GNU General Public License for more details.
18 ------------------------------------------------------------------------------
20 To release a closed-source product which uses JUCE, commercial licenses are
21 available: visit www.rawmaterialsoftware.com/juce for more information.
23 ==============================================================================
26 #ifndef __JUCE_CONFIG_JUCEHEADER__
27 #define __JUCE_CONFIG_JUCEHEADER__
29 //==============================================================================
31 This file contains macros that enable/disable various JUCE features.
34 //=============================================================================
35 /** The name of the namespace that all Juce classes and functions will be
36 put inside. If this is not defined, no namespace will be used.
38 #ifndef JUCE_NAMESPACE
39 #define JUCE_NAMESPACE juce
40 #endif
42 //=============================================================================
43 /** JUCE_FORCE_DEBUG: Normally, JUCE_DEBUG is set to 1 or 0 based on compiler and
44 project settings, but if you define this value, you can override this to force
45 it to be true or false.
47 #ifndef JUCE_FORCE_DEBUG
48 //#define JUCE_FORCE_DEBUG 0
49 #endif
51 //=============================================================================
52 /** JUCE_LOG_ASSERTIONS: If this flag is enabled, the the jassert and jassertfalse
53 macros will always use Logger::writeToLog() to write a message when an assertion happens.
55 Enabling it will also leave this turned on in release builds. When it's disabled,
56 however, the jassert and jassertfalse macros will not be compiled in a
57 release build.
59 @see jassert, jassertfalse, Logger
61 #ifndef JUCE_LOG_ASSERTIONS
62 #define JUCE_LOG_ASSERTIONS 0
63 #endif
65 //=============================================================================
66 /** JUCE_ASIO: Enables ASIO audio devices (MS Windows only).
67 Turning this on means that you'll need to have the Steinberg ASIO SDK installed
68 on your Windows build machine.
70 See the comments in the ASIOAudioIODevice class's header file for more
71 info about this.
73 #ifndef JUCE_ASIO
74 #define JUCE_ASIO 0
75 #endif
77 /** JUCE_WASAPI: Enables WASAPI audio devices (Windows Vista and above).
79 #ifndef JUCE_WASAPI
80 #define JUCE_WASAPI 0
81 #endif
83 /** JUCE_DIRECTSOUND: Enables DirectSound audio (MS Windows only).
85 #ifndef JUCE_DIRECTSOUND
86 #define JUCE_DIRECTSOUND 1
87 #endif
89 /** JUCE_DIRECTSHOW: Enables DirectShow media-streaming architecture (MS Windows only).
91 #ifndef JUCE_DIRECTSHOW
92 #define JUCE_DIRECTSHOW 0
93 #endif
95 /** JUCE_MEDIAFOUNDATION: Enables Media Foundation multimedia platform (Windows Vista and above).
97 #ifndef JUCE_MEDIAFOUNDATION
98 #define JUCE_MEDIAFOUNDATION 0
99 #endif
101 #if ! JUCE_WINDOWS
102 #undef JUCE_DIRECTSHOW
103 #undef JUCE_MEDIAFOUNDATION
104 #endif
106 /** JUCE_ALSA: Enables ALSA audio devices (Linux only). */
107 #ifndef JUCE_ALSA
108 #define JUCE_ALSA 1
109 #endif
111 /** JUCE_JACK: Enables JACK audio devices (Linux only). */
112 #ifndef JUCE_JACK
113 #define JUCE_JACK 0
114 #endif
116 //=============================================================================
117 /** JUCE_QUICKTIME: Enables the QuickTimeMovieComponent class (Mac and Windows).
118 If you're building on Windows, you'll need to have the Apple QuickTime SDK
119 installed, and its header files will need to be on your include path.
121 #if ! (defined (JUCE_QUICKTIME) || JUCE_LINUX || JUCE_IOS || JUCE_ANDROID || (JUCE_WINDOWS && ! JUCE_MSVC))
122 #define JUCE_QUICKTIME 0
123 #endif
125 #if (JUCE_IOS || JUCE_LINUX) && JUCE_QUICKTIME
126 #undef JUCE_QUICKTIME
127 #endif
129 //=============================================================================
130 /** JUCE_OPENGL: Enables the OpenGLComponent class (available on all platforms).
131 If you're not using OpenGL, you might want to turn this off to reduce your binary's size.
133 #if ! (defined (JUCE_OPENGL) || JUCE_ANDROID)
134 #define JUCE_OPENGL 1
135 #endif
137 /** JUCE_DIRECT2D: Enables the Windows 7 Direct2D renderer.
138 If you're building on a platform older than Vista, you won't be able to compile with this feature.
140 #ifndef JUCE_DIRECT2D
141 #define JUCE_DIRECT2D 0
142 #endif
144 //=============================================================================
145 /** JUCE_USE_FLAC: Enables the FLAC audio codec classes (available on all platforms).
146 If your app doesn't need to read FLAC files, you might want to disable this to
147 reduce the size of your codebase and build time.
149 #ifndef JUCE_USE_FLAC
150 #define JUCE_USE_FLAC 1
151 #endif
153 /** JUCE_USE_OGGVORBIS: Enables the Ogg-Vorbis audio codec classes (available on all platforms).
154 If your app doesn't need to read Ogg-Vorbis files, you might want to disable this to
155 reduce the size of your codebase and build time.
157 #ifndef JUCE_USE_OGGVORBIS
158 #define JUCE_USE_OGGVORBIS 1
159 #endif
161 //=============================================================================
162 /** JUCE_USE_CDBURNER: Enables the audio CD reader code (Mac and Windows only).
163 Unless you're using CD-burning, you should probably turn this flag off to
164 reduce code size.
166 #if (! defined (JUCE_USE_CDBURNER)) && ! (JUCE_WINDOWS && ! JUCE_MSVC)
167 #define JUCE_USE_CDBURNER 1
168 #endif
170 /** JUCE_USE_CDREADER: Enables the audio CD reader code (Mac and Windows only).
171 Unless you're using CD-reading, you should probably turn this flag off to
172 reduce code size.
174 #ifndef JUCE_USE_CDREADER
175 #define JUCE_USE_CDREADER 1
176 #endif
178 //=============================================================================
179 /** JUCE_USE_CAMERA: Enables web-cam support using the CameraDevice class (Mac and Windows).
181 #if (JUCE_QUICKTIME || JUCE_WINDOWS) && ! defined (JUCE_USE_CAMERA)
182 #define JUCE_USE_CAMERA 0
183 #endif
185 //=============================================================================
186 /** JUCE_ENABLE_REPAINT_DEBUGGING: If this option is turned on, each area of the screen that
187 gets repainted will flash in a random colour, so that you can check exactly how much and how
188 often your components are being drawn.
190 #ifndef JUCE_ENABLE_REPAINT_DEBUGGING
191 #define JUCE_ENABLE_REPAINT_DEBUGGING 0
192 #endif
194 //=============================================================================
195 /** JUCE_USE_XINERAMA: Enables Xinerama multi-monitor support (Linux only).
196 Unless you specifically want to disable this, it's best to leave this option turned on.
198 #ifndef JUCE_USE_XINERAMA
199 #define JUCE_USE_XINERAMA 1
200 #endif
202 /** JUCE_USE_XSHM: Enables X shared memory for faster rendering on Linux. This is best left
203 turned on unless you have a good reason to disable it.
205 #ifndef JUCE_USE_XSHM
206 #define JUCE_USE_XSHM 1
207 #endif
209 /** JUCE_USE_XRENDER: Uses XRender to allow semi-transparent windowing on Linux.
211 #ifndef JUCE_USE_XRENDER
212 #define JUCE_USE_XRENDER 0
213 #endif
215 /** JUCE_USE_XCURSOR: Uses XCursor to allow ARGB cursor on Linux. This is best left turned on
216 unless you have a good reason to disable it.
218 #ifndef JUCE_USE_XCURSOR
219 #define JUCE_USE_XCURSOR 1
220 #endif
222 //=============================================================================
223 /** JUCE_PLUGINHOST_VST: Enables the VST audio plugin hosting classes. This requires the
224 Steinberg VST SDK to be installed on your machine, and should be left turned off unless
225 you're building a plugin hosting app.
227 @see VSTPluginFormat, AudioPluginFormat, AudioPluginFormatManager, JUCE_PLUGINHOST_AU
229 #ifndef JUCE_PLUGINHOST_VST
230 #define JUCE_PLUGINHOST_VST 0
231 #endif
233 /** JUCE_PLUGINHOST_AU: Enables the AudioUnit plugin hosting classes. This is Mac-only,
234 of course, and should only be enabled if you're building a plugin hosting app.
236 @see AudioUnitPluginFormat, AudioPluginFormat, AudioPluginFormatManager, JUCE_PLUGINHOST_VST
238 #ifndef JUCE_PLUGINHOST_AU
239 #define JUCE_PLUGINHOST_AU 0
240 #endif
242 //=============================================================================
243 /** JUCE_ONLY_BUILD_CORE_LIBRARY: Enabling this will avoid including any UI classes in the build.
244 This should be enabled if you're writing a console application.
246 #ifndef JUCE_ONLY_BUILD_CORE_LIBRARY
247 #define JUCE_ONLY_BUILD_CORE_LIBRARY 0
248 #endif
250 /** JUCE_WEB_BROWSER: This lets you disable the WebBrowserComponent class (Mac and Windows).
251 If you're not using any embedded web-pages, turning this off may reduce your code size.
253 #ifndef JUCE_WEB_BROWSER
254 #define JUCE_WEB_BROWSER 1
255 #endif
258 //=============================================================================
259 /** JUCE_SUPPORT_CARBON: Enabling this allows the Mac code to use old Carbon library functions.
261 Carbon isn't required for a normal app, but may be needed by specialised classes like
262 plugin-hosts, which support older APIs.
264 #if ! (defined (JUCE_SUPPORT_CARBON) || defined (__LP64__))
265 #define JUCE_SUPPORT_CARBON 1
266 #endif
268 //=============================================================================
269 /* JUCE_INCLUDE_ZLIB_CODE: Can be used to disable Juce's embedded 3rd-party zlib code.
270 You might need to tweak this if you're linking to an external zlib library in your app,
271 but for normal apps, this option should be left alone.
273 #ifndef JUCE_INCLUDE_ZLIB_CODE
274 #define JUCE_INCLUDE_ZLIB_CODE 1
275 #endif
277 #ifndef JUCE_INCLUDE_FLAC_CODE
278 #define JUCE_INCLUDE_FLAC_CODE 1
279 #endif
281 #ifndef JUCE_INCLUDE_OGGVORBIS_CODE
282 #define JUCE_INCLUDE_OGGVORBIS_CODE 1
283 #endif
285 #ifndef JUCE_INCLUDE_PNGLIB_CODE
286 #define JUCE_INCLUDE_PNGLIB_CODE 1
287 #endif
289 #ifndef JUCE_INCLUDE_JPEGLIB_CODE
290 #define JUCE_INCLUDE_JPEGLIB_CODE 1
291 #endif
293 //=============================================================================
294 /** JUCE_CHECK_MEMORY_LEAKS: Enables a memory-leak check for certain objects when
295 the app terminates. See the LeakedObjectDetector class and the JUCE_LEAK_DETECTOR
296 macro for more details about enabling leak checking for specific classes.
298 #if JUCE_DEBUG && ! defined (JUCE_CHECK_MEMORY_LEAKS)
299 #define JUCE_CHECK_MEMORY_LEAKS 1
300 #endif
302 /** JUCE_CATCH_UNHANDLED_EXCEPTIONS: Turn on juce's internal catching of exceptions
303 that are thrown by the message dispatch loop. With it enabled, any unhandled exceptions
304 are passed to the JUCEApplication::unhandledException() callback for logging.
306 #ifndef JUCE_CATCH_UNHANDLED_EXCEPTIONS
307 #define JUCE_CATCH_UNHANDLED_EXCEPTIONS 1
308 #endif
310 //=============================================================================
311 // If only building the core classes, we can explicitly turn off some features to avoid including them:
312 #if JUCE_ONLY_BUILD_CORE_LIBRARY
313 #undef JUCE_QUICKTIME
314 #define JUCE_QUICKTIME 0
315 #undef JUCE_OPENGL
316 #define JUCE_OPENGL 0
317 #undef JUCE_USE_CDBURNER
318 #define JUCE_USE_CDBURNER 0
319 #undef JUCE_USE_CDREADER
320 #define JUCE_USE_CDREADER 0
321 #undef JUCE_WEB_BROWSER
322 #define JUCE_WEB_BROWSER 0
323 #undef JUCE_PLUGINHOST_AU
324 #define JUCE_PLUGINHOST_AU 0
325 #undef JUCE_PLUGINHOST_VST
326 #define JUCE_PLUGINHOST_VST 0
327 #endif
329 #endif