diff --git a/examples/Demo/Builds/Android/AndroidManifest.xml b/examples/Demo/Builds/Android/AndroidManifest.xml
index 426e0ccc3a..6ef840f4f1 100644
--- a/examples/Demo/Builds/Android/AndroidManifest.xml
+++ b/examples/Demo/Builds/Android/AndroidManifest.xml
@@ -9,7 +9,7 @@
-
diff --git a/modules/juce_audio_devices/juce_audio_devices.cpp b/modules/juce_audio_devices/juce_audio_devices.cpp
index 172b0e557a..e5717830e6 100644
--- a/modules/juce_audio_devices/juce_audio_devices.cpp
+++ b/modules/juce_audio_devices/juce_audio_devices.cpp
@@ -31,7 +31,12 @@
#error "Incorrect use of JUCE cpp file"
#endif
-#include "../juce_core/native/juce_BasicNativeHeaders.h"
+#define JUCE_CORE_INCLUDE_OBJC_HELPERS 1
+#define JUCE_CORE_INCLUDE_COM_SMART_PTR 1
+#define JUCE_CORE_INCLUDE_JNI_HELPERS 1
+#define JUCE_CORE_INCLUDE_NATIVE_HEADERS 1
+#define JUCE_EVENTS_INCLUDE_WIN32_MESSAGE_WINDOW 1
+
#include "juce_audio_devices.h"
//==============================================================================
@@ -141,7 +146,6 @@ namespace juce
//==============================================================================
#if JUCE_MAC
- #include "../juce_core/native/juce_osx_ObjCHelpers.h"
#include "native/juce_mac_CoreAudio.cpp"
#include "native/juce_mac_CoreMidi.cpp"
@@ -160,8 +164,6 @@ namespace juce
//==============================================================================
#elif JUCE_WINDOWS
- #include "../juce_core/native/juce_win32_ComSmartPtr.h"
- #include "../juce_events/native/juce_win32_HiddenMessageWindow.h"
#if JUCE_WASAPI
#include "native/juce_win32_WASAPI.cpp"
@@ -203,7 +205,6 @@ namespace juce
//==============================================================================
#elif JUCE_ANDROID
- #include "../juce_core/native/juce_android_JNIHelpers.h"
#include "native/juce_android_Audio.cpp"
#include "native/juce_android_Midi.cpp"
diff --git a/modules/juce_audio_formats/juce_audio_formats.cpp b/modules/juce_audio_formats/juce_audio_formats.cpp
index 856e82019a..499fae1bc0 100644
--- a/modules/juce_audio_formats/juce_audio_formats.cpp
+++ b/modules/juce_audio_formats/juce_audio_formats.cpp
@@ -31,7 +31,10 @@
#error "Incorrect use of JUCE cpp file"
#endif
-#include "../juce_core/native/juce_BasicNativeHeaders.h"
+#define JUCE_CORE_INCLUDE_COM_SMART_PTR 1
+#define JUCE_CORE_INCLUDE_JNI_HELPERS 1
+#define JUCE_CORE_INCLUDE_NATIVE_HEADERS 1
+
#include "juce_audio_formats.h"
//==============================================================================
@@ -81,14 +84,9 @@ namespace juce
{
#if JUCE_ANDROID
- #include "../juce_core/native/juce_android_JNIHelpers.h"
#undef JUCE_QUICKTIME
#endif
-#if JUCE_WINDOWS
- #include "../juce_core/native/juce_win32_ComSmartPtr.h"
-#endif
-
#include "format/juce_AudioFormat.cpp"
#include "format/juce_AudioFormatManager.cpp"
#include "format/juce_AudioFormatReader.cpp"
diff --git a/modules/juce_audio_plugin_client/AU/juce_AU_Wrapper.mm b/modules/juce_audio_plugin_client/AU/juce_AU_Wrapper.mm
index 532ac3bd24..354d56b13c 100644
--- a/modules/juce_audio_plugin_client/AU/juce_AU_Wrapper.mm
+++ b/modules/juce_audio_plugin_client/AU/juce_AU_Wrapper.mm
@@ -71,12 +71,12 @@
#endif
#define JUCE_MAC_WINDOW_VISIBITY_BODGE 1
+#define JUCE_CORE_INCLUDE_OBJC_HELPERS 1
#include "../utility/juce_IncludeModuleHeaders.h"
#include "../utility/juce_FakeMouseMoveGenerator.h"
#include "../utility/juce_CarbonVisibility.h"
#include "../utility/juce_PluginBusUtilities.h"
-#include "../../juce_core/native/juce_osx_ObjCHelpers.h"
//==============================================================================
static Array activePlugins, activeUIs;
diff --git a/modules/juce_audio_processors/juce_audio_processors.cpp b/modules/juce_audio_processors/juce_audio_processors.cpp
index dbefccbfb4..59db73571e 100644
--- a/modules/juce_audio_processors/juce_audio_processors.cpp
+++ b/modules/juce_audio_processors/juce_audio_processors.cpp
@@ -31,7 +31,8 @@
#error "Incorrect use of JUCE cpp file"
#endif
-#include "../juce_core/native/juce_BasicNativeHeaders.h"
+#define JUCE_CORE_INCLUDE_NATIVE_HEADERS 1
+
#include "juce_audio_processors.h"
#include "../juce_gui_extra/juce_gui_extra.h"
diff --git a/modules/juce_audio_utils/juce_audio_utils.cpp b/modules/juce_audio_utils/juce_audio_utils.cpp
index fc845b66b9..37a2dc3aae 100644
--- a/modules/juce_audio_utils/juce_audio_utils.cpp
+++ b/modules/juce_audio_utils/juce_audio_utils.cpp
@@ -31,7 +31,9 @@
#error "Incorrect use of JUCE cpp file"
#endif
-#include "../juce_core/native/juce_BasicNativeHeaders.h"
+#define JUCE_CORE_INCLUDE_JNI_HELPERS 1
+#define JUCE_CORE_INCLUDE_NATIVE_HEADERS 1
+
#include "juce_audio_utils.h"
namespace juce
@@ -54,7 +56,6 @@ namespace juce
#elif JUCE_IOS
#include "native/juce_ios_BluetoothMidiDevicePairingDialogue.mm"
#elif JUCE_ANDROID
- #include "../juce_core/native/juce_android_JNIHelpers.h"
#include "native/juce_android_BluetoothMidiDevicePairingDialogue.cpp"
#elif JUCE_LINUX
#include "native/juce_linux_BluetoothMidiDevicePairingDialogue.cpp"
diff --git a/modules/juce_core/juce_core.cpp b/modules/juce_core/juce_core.cpp
index c43d0cd8e3..516aafa4a7 100644
--- a/modules/juce_core/juce_core.cpp
+++ b/modules/juce_core/juce_core.cpp
@@ -35,7 +35,10 @@
#error "Incorrect use of JUCE cpp file"
#endif
-#include "native/juce_BasicNativeHeaders.h"
+#define JUCE_CORE_INCLUDE_OBJC_HELPERS 1
+#define JUCE_CORE_INCLUDE_COM_SMART_PTR 1
+#define JUCE_CORE_INCLUDE_NATIVE_HEADERS 1
+
#include "juce_core.h"
#include
@@ -180,10 +183,6 @@ namespace juce
#include "files/juce_WildcardFileFilter.cpp"
//==============================================================================
-#if JUCE_MAC || JUCE_IOS
-#include "native/juce_osx_ObjCHelpers.h"
-#endif
-
#if JUCE_ANDROID
#include "native/juce_android_JNIHelpers.h"
#endif
@@ -203,7 +202,6 @@ namespace juce
//==============================================================================
#elif JUCE_WINDOWS
-#include "native/juce_win32_ComSmartPtr.h"
#include "native/juce_win32_Files.cpp"
#include "native/juce_win32_Network.cpp"
#include "native/juce_win32_Registry.cpp"
diff --git a/modules/juce_core/juce_core.h b/modules/juce_core/juce_core.h
index e9beac3d38..1a782b11ba 100644
--- a/modules/juce_core/juce_core.h
+++ b/modules/juce_core/juce_core.h
@@ -133,6 +133,10 @@
//=============================================================================
//=============================================================================
+#if JUCE_CORE_INCLUDE_NATIVE_HEADERS
+ #include "native/juce_BasicNativeHeaders.h"
+#endif
+
#include "system/juce_StandardHeader.h"
namespace juce
@@ -269,6 +273,19 @@ extern JUCE_API void JUCE_CALLTYPE logAssertion (const char* file, int line) noe
#include "containers/juce_PropertySet.h"
#include "memory/juce_SharedResourcePointer.h"
+#if JUCE_CORE_INCLUDE_OBJC_HELPERS && (JUCE_MAC || JUCE_IOS)
+ #include "native/juce_osx_ObjCHelpers.h"
+#endif
+
+#if JUCE_CORE_INCLUDE_COM_SMART_PTR && JUCE_WINDOWS
+ #include "native/juce_win32_ComSmartPtr.h"
+#endif
+
+#if JUCE_CORE_INCLUDE_JNI_HELPERS && JUCE_ANDROID
+ #include "native/juce_android_JNIHelpers.h"
+#endif
+
+
#ifndef DOXYGEN
/*
As the very long class names here try to explain, the purpose of this code is to cause
diff --git a/modules/juce_core/native/juce_BasicNativeHeaders.h b/modules/juce_core/native/juce_BasicNativeHeaders.h
index 6a52ce7fe9..5f778827c7 100644
--- a/modules/juce_core/native/juce_BasicNativeHeaders.h
+++ b/modules/juce_core/native/juce_BasicNativeHeaders.h
@@ -29,7 +29,6 @@
#ifndef JUCE_BASICNATIVEHEADERS_H_INCLUDED
#define JUCE_BASICNATIVEHEADERS_H_INCLUDED
-#include "../system/juce_TargetPlatform.h"
#undef T
//==============================================================================
diff --git a/modules/juce_events/juce_events.cpp b/modules/juce_events/juce_events.cpp
index 89adf04dcc..5514be444e 100644
--- a/modules/juce_events/juce_events.cpp
+++ b/modules/juce_events/juce_events.cpp
@@ -31,7 +31,11 @@
#error "Incorrect use of JUCE cpp file"
#endif
-#include "../juce_core/native/juce_BasicNativeHeaders.h"
+#define JUCE_CORE_INCLUDE_OBJC_HELPERS 1
+#define JUCE_CORE_INCLUDE_JNI_HELPERS 1
+#define JUCE_CORE_INCLUDE_NATIVE_HEADERS 1
+#define JUCE_EVENTS_INCLUDE_WIN32_MESSAGE_WINDOW 1
+
#include "juce_events.h"
//==============================================================================
@@ -69,17 +73,14 @@ namespace juce
//==============================================================================
#if JUCE_MAC
- #include "../juce_core/native/juce_osx_ObjCHelpers.h"
#include "native/juce_osx_MessageQueue.h"
#include "native/juce_mac_MessageManager.mm"
#elif JUCE_IOS
- #include "../juce_core/native/juce_osx_ObjCHelpers.h"
#include "native/juce_osx_MessageQueue.h"
#include "native/juce_ios_MessageManager.mm"
#elif JUCE_WINDOWS
- #include "native/juce_win32_HiddenMessageWindow.h"
#include "native/juce_win32_Messaging.cpp"
#elif JUCE_LINUX
@@ -87,7 +88,6 @@ namespace juce
#include "native/juce_linux_Messaging.cpp"
#elif JUCE_ANDROID
- #include "../juce_core/native/juce_android_JNIHelpers.h"
#include "native/juce_android_Messaging.cpp"
#endif
diff --git a/modules/juce_events/juce_events.h b/modules/juce_events/juce_events.h
index 357df2de15..ffe6e24b66 100644
--- a/modules/juce_events/juce_events.h
+++ b/modules/juce_events/juce_events.h
@@ -52,6 +52,10 @@ namespace juce
#include "interprocess/juce_ConnectedChildProcess.h"
#include "native/juce_ScopedXLock.h"
+#if JUCE_EVENTS_INCLUDE_WIN32_MESSAGE_WINDOW && JUCE_WINDOWS
+ #include "native/juce_win32_HiddenMessageWindow.h"
+#endif
+
}
#endif // JUCE_EVENTS_H_INCLUDED
diff --git a/modules/juce_graphics/juce_graphics.cpp b/modules/juce_graphics/juce_graphics.cpp
index 4c0b2e0aa9..a87a166393 100644
--- a/modules/juce_graphics/juce_graphics.cpp
+++ b/modules/juce_graphics/juce_graphics.cpp
@@ -31,7 +31,12 @@
#error "Incorrect use of JUCE cpp file"
#endif
-#include "../juce_core/native/juce_BasicNativeHeaders.h"
+#define JUCE_CORE_INCLUDE_OBJC_HELPERS 1
+#define JUCE_CORE_INCLUDE_COM_SMART_PTR 1
+#define JUCE_CORE_INCLUDE_JNI_HELPERS 1
+#define JUCE_CORE_INCLUDE_NATIVE_HEADERS 1
+#define JUCE_GRAPHICS_INCLUDE_COREGRAPHICS_HELPERS 1
+
#include "juce_graphics.h"
//==============================================================================
@@ -127,13 +132,10 @@ namespace juce
//==============================================================================
#if JUCE_MAC || JUCE_IOS
- #include "../juce_core/native/juce_osx_ObjCHelpers.h"
- #include "native/juce_mac_CoreGraphicsHelpers.h"
#include "native/juce_mac_Fonts.mm"
#include "native/juce_mac_CoreGraphicsContext.mm"
#elif JUCE_WINDOWS
- #include "../juce_core/native/juce_win32_ComSmartPtr.h"
#include "native/juce_win32_DirectWriteTypeface.cpp"
#include "native/juce_win32_DirectWriteTypeLayout.cpp"
#include "native/juce_win32_Fonts.cpp"
@@ -145,7 +147,6 @@ namespace juce
#include "native/juce_linux_Fonts.cpp"
#elif JUCE_ANDROID
- #include "../juce_core/native/juce_android_JNIHelpers.h"
#include "native/juce_android_GraphicsContext.cpp"
#include "native/juce_android_Fonts.cpp"
diff --git a/modules/juce_graphics/juce_graphics.h b/modules/juce_graphics/juce_graphics.h
index 3aa7a16e5c..c6956d17bb 100644
--- a/modules/juce_graphics/juce_graphics.h
+++ b/modules/juce_graphics/juce_graphics.h
@@ -108,6 +108,11 @@ class LowLevelGraphicsContext;
#include "effects/juce_DropShadowEffect.h"
#include "effects/juce_GlowEffect.h"
+#if JUCE_GRAPHICS_INCLUDE_COREGRAPHICS_HELPERS && JUCE_MAC
+ #include "native/juce_mac_CoreGraphicsHelpers.h"
+ #include "native/juce_mac_CoreGraphicsContext.h"
+#endif
+
}
#endif // JUCE_GRAPHICS_H_INCLUDED
diff --git a/modules/juce_gui_basics/juce_gui_basics.cpp b/modules/juce_gui_basics/juce_gui_basics.cpp
index 33a5955438..b65ae42509 100644
--- a/modules/juce_gui_basics/juce_gui_basics.cpp
+++ b/modules/juce_gui_basics/juce_gui_basics.cpp
@@ -33,7 +33,13 @@
#define NS_FORMAT_FUNCTION(F,A) // To avoid spurious warnings from GCC
-#include "../juce_core/native/juce_BasicNativeHeaders.h"
+#define JUCE_CORE_INCLUDE_OBJC_HELPERS 1
+#define JUCE_CORE_INCLUDE_COM_SMART_PTR 1
+#define JUCE_CORE_INCLUDE_JNI_HELPERS 1
+#define JUCE_CORE_INCLUDE_NATIVE_HEADERS 1
+#define JUCE_EVENTS_INCLUDE_WIN32_MESSAGE_WINDOW 1
+#define JUCE_GRAPHICS_INCLUDE_COREGRAPHICS_HELPERS 1
+
#include "juce_gui_basics.h"
//==============================================================================
@@ -256,9 +262,6 @@ extern bool juce_areThereAnyAlwaysOnTopWindows();
#endif
#if JUCE_MAC || JUCE_IOS
- #include "../juce_core/native/juce_osx_ObjCHelpers.h"
- #include "../juce_graphics/native/juce_mac_CoreGraphicsHelpers.h"
- #include "../juce_graphics/native/juce_mac_CoreGraphicsContext.h"
#if JUCE_IOS
#include "native/juce_ios_UIViewComponentPeer.mm"
@@ -273,8 +276,6 @@ extern bool juce_areThereAnyAlwaysOnTopWindows();
#include "native/juce_mac_FileChooser.mm"
#elif JUCE_WINDOWS
- #include "../juce_core/native/juce_win32_ComSmartPtr.h"
- #include "../juce_events/native/juce_win32_HiddenMessageWindow.h"
#include "native/juce_win32_Windowing.cpp"
#include "native/juce_win32_DragAndDrop.cpp"
#include "native/juce_win32_FileChooser.cpp"
@@ -285,7 +286,6 @@ extern bool juce_areThereAnyAlwaysOnTopWindows();
#include "native/juce_linux_FileChooser.cpp"
#elif JUCE_ANDROID
- #include "../juce_core/native/juce_android_JNIHelpers.h"
#include "native/juce_android_Windowing.cpp"
#include "native/juce_android_FileChooser.cpp"
diff --git a/modules/juce_gui_basics/native/juce_mac_NSViewComponentPeer.mm b/modules/juce_gui_basics/native/juce_mac_NSViewComponentPeer.mm
index c0eb340076..e61568dd6a 100644
--- a/modules/juce_gui_basics/native/juce_mac_NSViewComponentPeer.mm
+++ b/modules/juce_gui_basics/native/juce_mac_NSViewComponentPeer.mm
@@ -792,7 +792,6 @@ public:
#if USE_COREGRAPHICS_RENDERING
if (usingCoreGraphics)
{
-
CoreGraphicsContext context (cg, (float) [view frame].size.height, displayScale);
insideDrawRect = true;
diff --git a/modules/juce_gui_extra/juce_gui_extra.cpp b/modules/juce_gui_extra/juce_gui_extra.cpp
index 96b15280ae..89c7397031 100644
--- a/modules/juce_gui_extra/juce_gui_extra.cpp
+++ b/modules/juce_gui_extra/juce_gui_extra.cpp
@@ -31,7 +31,12 @@
#error "Incorrect use of JUCE cpp file"
#endif
-#include "../juce_core/native/juce_BasicNativeHeaders.h"
+#define JUCE_CORE_INCLUDE_OBJC_HELPERS 1
+#define JUCE_CORE_INCLUDE_COM_SMART_PTR 1
+#define JUCE_CORE_INCLUDE_NATIVE_HEADERS 1
+#define JUCE_EVENTS_INCLUDE_WIN32_MESSAGE_WINDOW 1
+#define JUCE_GRAPHICS_INCLUDE_COREGRAPHICS_HELPERS 1
+
#include "juce_gui_extra.h"
//==============================================================================
@@ -69,10 +74,6 @@
namespace juce
{
-#if JUCE_MAC || JUCE_IOS
- #include "../juce_core/native/juce_osx_ObjCHelpers.h"
-#endif
-
#include "documents/juce_FileBasedDocument.cpp"
#include "code_editor/juce_CodeDocument.cpp"
#include "code_editor/juce_CodeEditorComponent.cpp"
@@ -98,9 +99,6 @@ namespace juce
//==============================================================================
#if JUCE_MAC || JUCE_IOS
- #include "../juce_core/native/juce_osx_ObjCHelpers.h"
- #include "../juce_graphics/native/juce_mac_CoreGraphicsHelpers.h"
-
#if JUCE_MAC
#include "native/juce_mac_NSViewComponent.mm"
#include "native/juce_mac_AppleRemote.mm"
@@ -117,8 +115,6 @@ namespace juce
//==============================================================================
#elif JUCE_WINDOWS
- #include "../juce_core/native/juce_win32_ComSmartPtr.h"
- #include "../juce_events/native/juce_win32_HiddenMessageWindow.h"
#include "native/juce_win32_ActiveXComponent.cpp"
#if JUCE_WEB_BROWSER
#include "native/juce_win32_WebBrowserComponent.cpp"
diff --git a/modules/juce_opengl/juce_opengl.cpp b/modules/juce_opengl/juce_opengl.cpp
index 7015b43265..1c8994fd47 100644
--- a/modules/juce_opengl/juce_opengl.cpp
+++ b/modules/juce_opengl/juce_opengl.cpp
@@ -31,7 +31,11 @@
#error "Incorrect use of JUCE cpp file"
#endif
-#include "../juce_core/native/juce_BasicNativeHeaders.h"
+#define JUCE_CORE_INCLUDE_OBJC_HELPERS 1
+#define JUCE_CORE_INCLUDE_JNI_HELPERS 1
+#define JUCE_CORE_INCLUDE_NATIVE_HEADERS 1
+#define JUCE_GRAPHICS_INCLUDE_COREGRAPHICS_HELPERS 1
+
#include "juce_opengl.h"
//==============================================================================
@@ -193,8 +197,6 @@ private:
//==============================================================================
#if JUCE_MAC || JUCE_IOS
- #include "../juce_core/native/juce_osx_ObjCHelpers.h"
- #include "../juce_graphics/native/juce_mac_CoreGraphicsHelpers.h"
#if JUCE_MAC
#include "native/juce_OpenGL_osx.h"
@@ -209,7 +211,6 @@ private:
#include "native/juce_OpenGL_linux.h"
#elif JUCE_ANDROID
- #include "../juce_core/native/juce_android_JNIHelpers.h"
#include "native/juce_OpenGL_android.h"
#endif
diff --git a/modules/juce_video/juce_video.cpp b/modules/juce_video/juce_video.cpp
index 45a44bef5a..2dcf036216 100644
--- a/modules/juce_video/juce_video.cpp
+++ b/modules/juce_video/juce_video.cpp
@@ -31,7 +31,10 @@
#error "Incorrect use of JUCE cpp file"
#endif
-#include "../juce_core/native/juce_BasicNativeHeaders.h"
+#define JUCE_CORE_INCLUDE_OBJC_HELPERS 1
+#define JUCE_CORE_INCLUDE_COM_SMART_PTR 1
+#define JUCE_CORE_INCLUDE_NATIVE_HEADERS 1
+
#include "../juce_gui_extra/juce_gui_extra.h"
#include "juce_video.h"
@@ -98,8 +101,6 @@ namespace juce
{
#if JUCE_MAC || JUCE_IOS
- #include "../juce_core/native/juce_osx_ObjCHelpers.h"
-
#if JUCE_USE_CAMERA
#include "native/juce_mac_CameraDevice.mm"
#endif
@@ -109,7 +110,6 @@ namespace juce
#endif
#elif JUCE_WINDOWS
- #include "../juce_core/native/juce_win32_ComSmartPtr.h"
#if JUCE_USE_CAMERA
#include "native/juce_win32_CameraDevice.cpp"