diff --git a/examples/DemoRunner/Builds/Android/app/CMakeLists.txt b/examples/DemoRunner/Builds/Android/app/CMakeLists.txt
index 4c393c9152..9be7793125 100644
--- a/examples/DemoRunner/Builds/Android/app/CMakeLists.txt
+++ b/examples/DemoRunner/Builds/Android/app/CMakeLists.txt
@@ -1058,6 +1058,7 @@ add_library( ${BINARY_NAME}
"../../../../../modules/juce_core/javascript/choc/text/choc_JSON.h"
"../../../../../modules/juce_core/javascript/choc/text/choc_StringUtilities.h"
"../../../../../modules/juce_core/javascript/choc/text/choc_UTF8.h"
+ "../../../../../modules/juce_core/javascript/choc/JUCE_CHANGES.txt"
"../../../../../modules/juce_core/javascript/juce_Javascript.cpp"
"../../../../../modules/juce_core/javascript/juce_Javascript.h"
"../../../../../modules/juce_core/javascript/juce_JSON.cpp"
@@ -3555,6 +3556,7 @@ set_source_files_properties(
"../../../../../modules/juce_core/javascript/choc/text/choc_JSON.h"
"../../../../../modules/juce_core/javascript/choc/text/choc_StringUtilities.h"
"../../../../../modules/juce_core/javascript/choc/text/choc_UTF8.h"
+ "../../../../../modules/juce_core/javascript/choc/JUCE_CHANGES.txt"
"../../../../../modules/juce_core/javascript/juce_Javascript.cpp"
"../../../../../modules/juce_core/javascript/juce_Javascript.h"
"../../../../../modules/juce_core/javascript/juce_JSON.cpp"
diff --git a/examples/DemoRunner/Builds/VisualStudio2017/DemoRunner_App.vcxproj b/examples/DemoRunner/Builds/VisualStudio2017/DemoRunner_App.vcxproj
index 9f04bfd065..8c426daa6d 100644
--- a/examples/DemoRunner/Builds/VisualStudio2017/DemoRunner_App.vcxproj
+++ b/examples/DemoRunner/Builds/VisualStudio2017/DemoRunner_App.vcxproj
@@ -4563,6 +4563,7 @@
+
diff --git a/examples/DemoRunner/Builds/VisualStudio2017/DemoRunner_App.vcxproj.filters b/examples/DemoRunner/Builds/VisualStudio2017/DemoRunner_App.vcxproj.filters
index 016f39545f..53bccb7f21 100644
--- a/examples/DemoRunner/Builds/VisualStudio2017/DemoRunner_App.vcxproj.filters
+++ b/examples/DemoRunner/Builds/VisualStudio2017/DemoRunner_App.vcxproj.filters
@@ -8297,6 +8297,9 @@
JUCE Modules\juce_box2d\box2d
+
+ JUCE Modules\juce_core\javascript\choc
+
JUCE Modules\juce_core\native\java
diff --git a/examples/DemoRunner/Builds/VisualStudio2019/DemoRunner_App.vcxproj b/examples/DemoRunner/Builds/VisualStudio2019/DemoRunner_App.vcxproj
index a99b40d601..96d47aa137 100644
--- a/examples/DemoRunner/Builds/VisualStudio2019/DemoRunner_App.vcxproj
+++ b/examples/DemoRunner/Builds/VisualStudio2019/DemoRunner_App.vcxproj
@@ -4563,6 +4563,7 @@
+
diff --git a/examples/DemoRunner/Builds/VisualStudio2019/DemoRunner_App.vcxproj.filters b/examples/DemoRunner/Builds/VisualStudio2019/DemoRunner_App.vcxproj.filters
index 5869ebb31e..262132f675 100644
--- a/examples/DemoRunner/Builds/VisualStudio2019/DemoRunner_App.vcxproj.filters
+++ b/examples/DemoRunner/Builds/VisualStudio2019/DemoRunner_App.vcxproj.filters
@@ -8297,6 +8297,9 @@
JUCE Modules\juce_box2d\box2d
+
+ JUCE Modules\juce_core\javascript\choc
+
JUCE Modules\juce_core\native\java
diff --git a/examples/DemoRunner/Builds/VisualStudio2022/DemoRunner_App.vcxproj b/examples/DemoRunner/Builds/VisualStudio2022/DemoRunner_App.vcxproj
index 7c2866a07c..dab88ade68 100644
--- a/examples/DemoRunner/Builds/VisualStudio2022/DemoRunner_App.vcxproj
+++ b/examples/DemoRunner/Builds/VisualStudio2022/DemoRunner_App.vcxproj
@@ -4563,6 +4563,7 @@
+
diff --git a/examples/DemoRunner/Builds/VisualStudio2022/DemoRunner_App.vcxproj.filters b/examples/DemoRunner/Builds/VisualStudio2022/DemoRunner_App.vcxproj.filters
index 4a8b95ff58..e45326514e 100644
--- a/examples/DemoRunner/Builds/VisualStudio2022/DemoRunner_App.vcxproj.filters
+++ b/examples/DemoRunner/Builds/VisualStudio2022/DemoRunner_App.vcxproj.filters
@@ -8297,6 +8297,9 @@
JUCE Modules\juce_box2d\box2d
+
+ JUCE Modules\juce_core\javascript\choc
+
JUCE Modules\juce_core\native\java
diff --git a/extras/AudioPerformanceTest/Builds/Android/app/CMakeLists.txt b/extras/AudioPerformanceTest/Builds/Android/app/CMakeLists.txt
index 60cac35a1a..a525369550 100644
--- a/extras/AudioPerformanceTest/Builds/Android/app/CMakeLists.txt
+++ b/extras/AudioPerformanceTest/Builds/Android/app/CMakeLists.txt
@@ -917,6 +917,7 @@ add_library( ${BINARY_NAME}
"../../../../../modules/juce_core/javascript/choc/text/choc_JSON.h"
"../../../../../modules/juce_core/javascript/choc/text/choc_StringUtilities.h"
"../../../../../modules/juce_core/javascript/choc/text/choc_UTF8.h"
+ "../../../../../modules/juce_core/javascript/choc/JUCE_CHANGES.txt"
"../../../../../modules/juce_core/javascript/juce_Javascript.cpp"
"../../../../../modules/juce_core/javascript/juce_Javascript.h"
"../../../../../modules/juce_core/javascript/juce_JSON.cpp"
@@ -3096,6 +3097,7 @@ set_source_files_properties(
"../../../../../modules/juce_core/javascript/choc/text/choc_JSON.h"
"../../../../../modules/juce_core/javascript/choc/text/choc_StringUtilities.h"
"../../../../../modules/juce_core/javascript/choc/text/choc_UTF8.h"
+ "../../../../../modules/juce_core/javascript/choc/JUCE_CHANGES.txt"
"../../../../../modules/juce_core/javascript/juce_Javascript.cpp"
"../../../../../modules/juce_core/javascript/juce_Javascript.h"
"../../../../../modules/juce_core/javascript/juce_JSON.cpp"
diff --git a/extras/AudioPerformanceTest/Builds/VisualStudio2022/AudioPerformanceTest_App.vcxproj b/extras/AudioPerformanceTest/Builds/VisualStudio2022/AudioPerformanceTest_App.vcxproj
index 21e38471dd..886039ea34 100644
--- a/extras/AudioPerformanceTest/Builds/VisualStudio2022/AudioPerformanceTest_App.vcxproj
+++ b/extras/AudioPerformanceTest/Builds/VisualStudio2022/AudioPerformanceTest_App.vcxproj
@@ -3981,6 +3981,7 @@
+
diff --git a/extras/AudioPerformanceTest/Builds/VisualStudio2022/AudioPerformanceTest_App.vcxproj.filters b/extras/AudioPerformanceTest/Builds/VisualStudio2022/AudioPerformanceTest_App.vcxproj.filters
index 308c120ec4..24b5b8d1a9 100644
--- a/extras/AudioPerformanceTest/Builds/VisualStudio2022/AudioPerformanceTest_App.vcxproj.filters
+++ b/extras/AudioPerformanceTest/Builds/VisualStudio2022/AudioPerformanceTest_App.vcxproj.filters
@@ -7193,6 +7193,9 @@
JUCE Modules\juce_audio_processors\format_types\VST3_SDK
+
+ JUCE Modules\juce_core\javascript\choc
+
JUCE Modules\juce_core\native\java
diff --git a/extras/AudioPluginHost/Builds/Android/app/CMakeLists.txt b/extras/AudioPluginHost/Builds/Android/app/CMakeLists.txt
index 08696309f0..0731a732c4 100644
--- a/extras/AudioPluginHost/Builds/Android/app/CMakeLists.txt
+++ b/extras/AudioPluginHost/Builds/Android/app/CMakeLists.txt
@@ -950,6 +950,7 @@ add_library( ${BINARY_NAME}
"../../../../../modules/juce_core/javascript/choc/text/choc_JSON.h"
"../../../../../modules/juce_core/javascript/choc/text/choc_StringUtilities.h"
"../../../../../modules/juce_core/javascript/choc/text/choc_UTF8.h"
+ "../../../../../modules/juce_core/javascript/choc/JUCE_CHANGES.txt"
"../../../../../modules/juce_core/javascript/juce_Javascript.cpp"
"../../../../../modules/juce_core/javascript/juce_Javascript.h"
"../../../../../modules/juce_core/javascript/juce_JSON.cpp"
@@ -3282,6 +3283,7 @@ set_source_files_properties(
"../../../../../modules/juce_core/javascript/choc/text/choc_JSON.h"
"../../../../../modules/juce_core/javascript/choc/text/choc_StringUtilities.h"
"../../../../../modules/juce_core/javascript/choc/text/choc_UTF8.h"
+ "../../../../../modules/juce_core/javascript/choc/JUCE_CHANGES.txt"
"../../../../../modules/juce_core/javascript/juce_Javascript.cpp"
"../../../../../modules/juce_core/javascript/juce_Javascript.h"
"../../../../../modules/juce_core/javascript/juce_JSON.cpp"
diff --git a/extras/AudioPluginHost/Builds/VisualStudio2017/AudioPluginHost_App.vcxproj b/extras/AudioPluginHost/Builds/VisualStudio2017/AudioPluginHost_App.vcxproj
index 2853c7fb37..d5f63c294f 100644
--- a/extras/AudioPluginHost/Builds/VisualStudio2017/AudioPluginHost_App.vcxproj
+++ b/extras/AudioPluginHost/Builds/VisualStudio2017/AudioPluginHost_App.vcxproj
@@ -4247,6 +4247,7 @@
+
diff --git a/extras/AudioPluginHost/Builds/VisualStudio2017/AudioPluginHost_App.vcxproj.filters b/extras/AudioPluginHost/Builds/VisualStudio2017/AudioPluginHost_App.vcxproj.filters
index be308e9786..aa8e1b8637 100644
--- a/extras/AudioPluginHost/Builds/VisualStudio2017/AudioPluginHost_App.vcxproj.filters
+++ b/extras/AudioPluginHost/Builds/VisualStudio2017/AudioPluginHost_App.vcxproj.filters
@@ -7727,6 +7727,9 @@
JUCE Modules\juce_audio_processors\format_types\VST3_SDK
+
+ JUCE Modules\juce_core\javascript\choc
+
JUCE Modules\juce_core\native\java
diff --git a/extras/AudioPluginHost/Builds/VisualStudio2019/AudioPluginHost_App.vcxproj b/extras/AudioPluginHost/Builds/VisualStudio2019/AudioPluginHost_App.vcxproj
index 1f9eb56139..1b3599e8c4 100644
--- a/extras/AudioPluginHost/Builds/VisualStudio2019/AudioPluginHost_App.vcxproj
+++ b/extras/AudioPluginHost/Builds/VisualStudio2019/AudioPluginHost_App.vcxproj
@@ -4247,6 +4247,7 @@
+
diff --git a/extras/AudioPluginHost/Builds/VisualStudio2019/AudioPluginHost_App.vcxproj.filters b/extras/AudioPluginHost/Builds/VisualStudio2019/AudioPluginHost_App.vcxproj.filters
index 45760539fb..a57019c982 100644
--- a/extras/AudioPluginHost/Builds/VisualStudio2019/AudioPluginHost_App.vcxproj.filters
+++ b/extras/AudioPluginHost/Builds/VisualStudio2019/AudioPluginHost_App.vcxproj.filters
@@ -7727,6 +7727,9 @@
JUCE Modules\juce_audio_processors\format_types\VST3_SDK
+
+ JUCE Modules\juce_core\javascript\choc
+
JUCE Modules\juce_core\native\java
diff --git a/extras/AudioPluginHost/Builds/VisualStudio2022/AudioPluginHost_App.vcxproj b/extras/AudioPluginHost/Builds/VisualStudio2022/AudioPluginHost_App.vcxproj
index ef9100de71..6e7cefc864 100644
--- a/extras/AudioPluginHost/Builds/VisualStudio2022/AudioPluginHost_App.vcxproj
+++ b/extras/AudioPluginHost/Builds/VisualStudio2022/AudioPluginHost_App.vcxproj
@@ -4247,6 +4247,7 @@
+
diff --git a/extras/AudioPluginHost/Builds/VisualStudio2022/AudioPluginHost_App.vcxproj.filters b/extras/AudioPluginHost/Builds/VisualStudio2022/AudioPluginHost_App.vcxproj.filters
index ac20556c15..7a7305c103 100644
--- a/extras/AudioPluginHost/Builds/VisualStudio2022/AudioPluginHost_App.vcxproj.filters
+++ b/extras/AudioPluginHost/Builds/VisualStudio2022/AudioPluginHost_App.vcxproj.filters
@@ -7727,6 +7727,9 @@
JUCE Modules\juce_audio_processors\format_types\VST3_SDK
+
+ JUCE Modules\juce_core\javascript\choc
+
JUCE Modules\juce_core\native\java
diff --git a/extras/BinaryBuilder/Builds/VisualStudio2022/BinaryBuilder_ConsoleApp.vcxproj b/extras/BinaryBuilder/Builds/VisualStudio2022/BinaryBuilder_ConsoleApp.vcxproj
index 420ae0b099..e4dc3995e0 100644
--- a/extras/BinaryBuilder/Builds/VisualStudio2022/BinaryBuilder_ConsoleApp.vcxproj
+++ b/extras/BinaryBuilder/Builds/VisualStudio2022/BinaryBuilder_ConsoleApp.vcxproj
@@ -674,6 +674,7 @@
+
diff --git a/extras/BinaryBuilder/Builds/VisualStudio2022/BinaryBuilder_ConsoleApp.vcxproj.filters b/extras/BinaryBuilder/Builds/VisualStudio2022/BinaryBuilder_ConsoleApp.vcxproj.filters
index 41770e8b3c..9d3c4f09f4 100644
--- a/extras/BinaryBuilder/Builds/VisualStudio2022/BinaryBuilder_ConsoleApp.vcxproj.filters
+++ b/extras/BinaryBuilder/Builds/VisualStudio2022/BinaryBuilder_ConsoleApp.vcxproj.filters
@@ -1001,6 +1001,9 @@
+
+ JUCE Modules\juce_core\javascript\choc
+
JUCE Modules\juce_core\native\java
diff --git a/extras/NetworkGraphicsDemo/Builds/Android/app/CMakeLists.txt b/extras/NetworkGraphicsDemo/Builds/Android/app/CMakeLists.txt
index c20ebfa6c5..45c37721ec 100644
--- a/extras/NetworkGraphicsDemo/Builds/Android/app/CMakeLists.txt
+++ b/extras/NetworkGraphicsDemo/Builds/Android/app/CMakeLists.txt
@@ -921,6 +921,7 @@ add_library( ${BINARY_NAME}
"../../../../../modules/juce_core/javascript/choc/text/choc_JSON.h"
"../../../../../modules/juce_core/javascript/choc/text/choc_StringUtilities.h"
"../../../../../modules/juce_core/javascript/choc/text/choc_UTF8.h"
+ "../../../../../modules/juce_core/javascript/choc/JUCE_CHANGES.txt"
"../../../../../modules/juce_core/javascript/juce_Javascript.cpp"
"../../../../../modules/juce_core/javascript/juce_Javascript.h"
"../../../../../modules/juce_core/javascript/juce_JSON.cpp"
@@ -3180,6 +3181,7 @@ set_source_files_properties(
"../../../../../modules/juce_core/javascript/choc/text/choc_JSON.h"
"../../../../../modules/juce_core/javascript/choc/text/choc_StringUtilities.h"
"../../../../../modules/juce_core/javascript/choc/text/choc_UTF8.h"
+ "../../../../../modules/juce_core/javascript/choc/JUCE_CHANGES.txt"
"../../../../../modules/juce_core/javascript/juce_Javascript.cpp"
"../../../../../modules/juce_core/javascript/juce_Javascript.h"
"../../../../../modules/juce_core/javascript/juce_JSON.cpp"
diff --git a/extras/NetworkGraphicsDemo/Builds/VisualStudio2022/NetworkGraphicsDemo_App.vcxproj b/extras/NetworkGraphicsDemo/Builds/VisualStudio2022/NetworkGraphicsDemo_App.vcxproj
index 50ace81780..5b2d126669 100644
--- a/extras/NetworkGraphicsDemo/Builds/VisualStudio2022/NetworkGraphicsDemo_App.vcxproj
+++ b/extras/NetworkGraphicsDemo/Builds/VisualStudio2022/NetworkGraphicsDemo_App.vcxproj
@@ -4115,6 +4115,7 @@
+
diff --git a/extras/NetworkGraphicsDemo/Builds/VisualStudio2022/NetworkGraphicsDemo_App.vcxproj.filters b/extras/NetworkGraphicsDemo/Builds/VisualStudio2022/NetworkGraphicsDemo_App.vcxproj.filters
index 64d712a014..b7423ac10d 100644
--- a/extras/NetworkGraphicsDemo/Builds/VisualStudio2022/NetworkGraphicsDemo_App.vcxproj.filters
+++ b/extras/NetworkGraphicsDemo/Builds/VisualStudio2022/NetworkGraphicsDemo_App.vcxproj.filters
@@ -7463,6 +7463,9 @@
JUCE Modules\juce_audio_processors\format_types\VST3_SDK
+
+ JUCE Modules\juce_core\javascript\choc
+
JUCE Modules\juce_core\native\java
diff --git a/extras/Projucer/Builds/VisualStudio2017/Projucer_App.vcxproj b/extras/Projucer/Builds/VisualStudio2017/Projucer_App.vcxproj
index 9c58274290..cad76a7b4b 100644
--- a/extras/Projucer/Builds/VisualStudio2017/Projucer_App.vcxproj
+++ b/extras/Projucer/Builds/VisualStudio2017/Projucer_App.vcxproj
@@ -2910,6 +2910,7 @@
+
diff --git a/extras/Projucer/Builds/VisualStudio2017/Projucer_App.vcxproj.filters b/extras/Projucer/Builds/VisualStudio2017/Projucer_App.vcxproj.filters
index 057a7c1d17..a607d7f8d9 100644
--- a/extras/Projucer/Builds/VisualStudio2017/Projucer_App.vcxproj.filters
+++ b/extras/Projucer/Builds/VisualStudio2017/Projucer_App.vcxproj.filters
@@ -5375,6 +5375,9 @@
Projucer\BinaryData
+
+ JUCE Modules\juce_core\javascript\choc
+
JUCE Modules\juce_core\native\java
diff --git a/extras/Projucer/Builds/VisualStudio2019/Projucer_App.vcxproj b/extras/Projucer/Builds/VisualStudio2019/Projucer_App.vcxproj
index a4b6f2b89b..7898049d44 100644
--- a/extras/Projucer/Builds/VisualStudio2019/Projucer_App.vcxproj
+++ b/extras/Projucer/Builds/VisualStudio2019/Projucer_App.vcxproj
@@ -2910,6 +2910,7 @@
+
diff --git a/extras/Projucer/Builds/VisualStudio2019/Projucer_App.vcxproj.filters b/extras/Projucer/Builds/VisualStudio2019/Projucer_App.vcxproj.filters
index 456c389778..01cf2bb5cd 100644
--- a/extras/Projucer/Builds/VisualStudio2019/Projucer_App.vcxproj.filters
+++ b/extras/Projucer/Builds/VisualStudio2019/Projucer_App.vcxproj.filters
@@ -5375,6 +5375,9 @@
Projucer\BinaryData
+
+ JUCE Modules\juce_core\javascript\choc
+
JUCE Modules\juce_core\native\java
diff --git a/extras/Projucer/Builds/VisualStudio2022/Projucer_App.vcxproj b/extras/Projucer/Builds/VisualStudio2022/Projucer_App.vcxproj
index 7ef37203b1..ce1522f845 100644
--- a/extras/Projucer/Builds/VisualStudio2022/Projucer_App.vcxproj
+++ b/extras/Projucer/Builds/VisualStudio2022/Projucer_App.vcxproj
@@ -2910,6 +2910,7 @@
+
diff --git a/extras/Projucer/Builds/VisualStudio2022/Projucer_App.vcxproj.filters b/extras/Projucer/Builds/VisualStudio2022/Projucer_App.vcxproj.filters
index 9b659e8580..76fb0204cc 100644
--- a/extras/Projucer/Builds/VisualStudio2022/Projucer_App.vcxproj.filters
+++ b/extras/Projucer/Builds/VisualStudio2022/Projucer_App.vcxproj.filters
@@ -5375,6 +5375,9 @@
Projucer\BinaryData
+
+ JUCE Modules\juce_core\javascript\choc
+
JUCE Modules\juce_core\native\java
diff --git a/extras/UnitTestRunner/Builds/VisualStudio2017/UnitTestRunner_ConsoleApp.vcxproj b/extras/UnitTestRunner/Builds/VisualStudio2017/UnitTestRunner_ConsoleApp.vcxproj
index 99243189d0..f05f0c535e 100644
--- a/extras/UnitTestRunner/Builds/VisualStudio2017/UnitTestRunner_ConsoleApp.vcxproj
+++ b/extras/UnitTestRunner/Builds/VisualStudio2017/UnitTestRunner_ConsoleApp.vcxproj
@@ -4382,6 +4382,7 @@
+
diff --git a/extras/UnitTestRunner/Builds/VisualStudio2017/UnitTestRunner_ConsoleApp.vcxproj.filters b/extras/UnitTestRunner/Builds/VisualStudio2017/UnitTestRunner_ConsoleApp.vcxproj.filters
index 0491187ce6..c53d7183d0 100644
--- a/extras/UnitTestRunner/Builds/VisualStudio2017/UnitTestRunner_ConsoleApp.vcxproj.filters
+++ b/extras/UnitTestRunner/Builds/VisualStudio2017/UnitTestRunner_ConsoleApp.vcxproj.filters
@@ -7958,6 +7958,9 @@
JUCE Modules\juce_audio_processors\format_types\VST3_SDK
+
+ JUCE Modules\juce_core\javascript\choc
+
JUCE Modules\juce_core\native\java
diff --git a/extras/UnitTestRunner/Builds/VisualStudio2019/UnitTestRunner_ConsoleApp.vcxproj b/extras/UnitTestRunner/Builds/VisualStudio2019/UnitTestRunner_ConsoleApp.vcxproj
index 07b149efcf..8f480df4e0 100644
--- a/extras/UnitTestRunner/Builds/VisualStudio2019/UnitTestRunner_ConsoleApp.vcxproj
+++ b/extras/UnitTestRunner/Builds/VisualStudio2019/UnitTestRunner_ConsoleApp.vcxproj
@@ -4382,6 +4382,7 @@
+
diff --git a/extras/UnitTestRunner/Builds/VisualStudio2019/UnitTestRunner_ConsoleApp.vcxproj.filters b/extras/UnitTestRunner/Builds/VisualStudio2019/UnitTestRunner_ConsoleApp.vcxproj.filters
index abc9640153..b7132958e6 100644
--- a/extras/UnitTestRunner/Builds/VisualStudio2019/UnitTestRunner_ConsoleApp.vcxproj.filters
+++ b/extras/UnitTestRunner/Builds/VisualStudio2019/UnitTestRunner_ConsoleApp.vcxproj.filters
@@ -7958,6 +7958,9 @@
JUCE Modules\juce_audio_processors\format_types\VST3_SDK
+
+ JUCE Modules\juce_core\javascript\choc
+
JUCE Modules\juce_core\native\java
diff --git a/extras/UnitTestRunner/Builds/VisualStudio2022/UnitTestRunner_ConsoleApp.vcxproj b/extras/UnitTestRunner/Builds/VisualStudio2022/UnitTestRunner_ConsoleApp.vcxproj
index 44949d1f77..ff30c749a5 100644
--- a/extras/UnitTestRunner/Builds/VisualStudio2022/UnitTestRunner_ConsoleApp.vcxproj
+++ b/extras/UnitTestRunner/Builds/VisualStudio2022/UnitTestRunner_ConsoleApp.vcxproj
@@ -4382,6 +4382,7 @@
+
diff --git a/extras/UnitTestRunner/Builds/VisualStudio2022/UnitTestRunner_ConsoleApp.vcxproj.filters b/extras/UnitTestRunner/Builds/VisualStudio2022/UnitTestRunner_ConsoleApp.vcxproj.filters
index 89a70a0f51..1c23e847ac 100644
--- a/extras/UnitTestRunner/Builds/VisualStudio2022/UnitTestRunner_ConsoleApp.vcxproj.filters
+++ b/extras/UnitTestRunner/Builds/VisualStudio2022/UnitTestRunner_ConsoleApp.vcxproj.filters
@@ -7958,6 +7958,9 @@
JUCE Modules\juce_audio_processors\format_types\VST3_SDK
+
+ JUCE Modules\juce_core\javascript\choc
+
JUCE Modules\juce_core\native\java
diff --git a/extras/WindowsDLL/Builds/VisualStudio2022/WindowsDLL_StaticLibrary.vcxproj b/extras/WindowsDLL/Builds/VisualStudio2022/WindowsDLL_StaticLibrary.vcxproj
index de89bb8e70..70d1338b5a 100644
--- a/extras/WindowsDLL/Builds/VisualStudio2022/WindowsDLL_StaticLibrary.vcxproj
+++ b/extras/WindowsDLL/Builds/VisualStudio2022/WindowsDLL_StaticLibrary.vcxproj
@@ -4091,6 +4091,7 @@
+
diff --git a/extras/WindowsDLL/Builds/VisualStudio2022/WindowsDLL_StaticLibrary.vcxproj.filters b/extras/WindowsDLL/Builds/VisualStudio2022/WindowsDLL_StaticLibrary.vcxproj.filters
index 70954c5b39..7a78cf4855 100644
--- a/extras/WindowsDLL/Builds/VisualStudio2022/WindowsDLL_StaticLibrary.vcxproj.filters
+++ b/extras/WindowsDLL/Builds/VisualStudio2022/WindowsDLL_StaticLibrary.vcxproj.filters
@@ -7430,6 +7430,9 @@
JUCE Modules\juce_audio_processors\format_types\VST3_SDK
+
+ JUCE Modules\juce_core\javascript\choc
+
JUCE Modules\juce_core\native\java
diff --git a/modules/juce_core/javascript/choc/JUCE_CHANGES.txt b/modules/juce_core/javascript/choc/JUCE_CHANGES.txt
new file mode 100644
index 0000000000..343f6f777b
--- /dev/null
+++ b/modules/juce_core/javascript/choc/JUCE_CHANGES.txt
@@ -0,0 +1,12 @@
+The files in this directory were downloaded from the choc repository at
+https://github.com/Tracktion/choc.
+
+In order to avoid exposing any symbols in the choc implementation, the files were modified by
+prepending all `namespace choc...` lines with `namespace {`, and by adding corresponding closing
+brackets as well.
+
+Enclosing all choc definitions in an anonymous namespace allows JUCE based projects to use an
+external copy of choc without running into multiply defined symbol compilation errors.
+
+By placing the anonymous namespace encapsulation inside the choc header files we avoid the issue of
+including the system headers in the namespace as well.
diff --git a/modules/juce_core/javascript/choc/containers/choc_Value.h b/modules/juce_core/javascript/choc/containers/choc_Value.h
index ea8d97fd2d..101b212f9d 100644
--- a/modules/juce_core/javascript/choc/containers/choc_Value.h
+++ b/modules/juce_core/javascript/choc/containers/choc_Value.h
@@ -27,6 +27,8 @@
#include
#include "../platform/choc_Assert.h"
+namespace
+{
namespace choc::value
{
@@ -3236,5 +3238,6 @@ inline std::string_view SimpleStringDictionary::getStringForHandle (Handle handl
inline void SimpleStringDictionary::clear() { strings.clear(); }
} // namespace choc::value
+} // anonymous namespace
#endif // CHOC_VALUE_POOL_HEADER_INCLUDED
diff --git a/modules/juce_core/javascript/choc/javascript/choc_javascript.h b/modules/juce_core/javascript/choc/javascript/choc_javascript.h
index c1e87b3081..6f3e63d6d2 100644
--- a/modules/juce_core/javascript/choc/javascript/choc_javascript.h
+++ b/modules/juce_core/javascript/choc/javascript/choc_javascript.h
@@ -33,6 +33,8 @@
choc::javascript::createQuickJSContext() to create a context for running
javascript code.
*/
+namespace
+{
namespace choc::javascript
{
/// This is thrown by any javascript functions that need to report an error
@@ -171,6 +173,7 @@ namespace choc::javascript
/// search path, and that you statically link the appropriate V8 libs.
Context createV8Context();
}
+} // anonymous namespace
//==============================================================================
@@ -184,6 +187,8 @@ namespace choc::javascript
//
//==============================================================================
+namespace
+{
namespace choc::javascript
{
@@ -290,6 +295,7 @@ Context::Pimpl* Context::getPimpl() const
}
} // namespace choc::javascript
+} // anonymous namespace
#endif // CHOC_JAVASCRIPT_HEADER_INCLUDED
diff --git a/modules/juce_core/javascript/choc/javascript/choc_javascript_QuickJS.h b/modules/juce_core/javascript/choc/javascript/choc_javascript_QuickJS.h
index 2d4704d5ea..97ede47dfc 100644
--- a/modules/juce_core/javascript/choc/javascript/choc_javascript_QuickJS.h
+++ b/modules/juce_core/javascript/choc/javascript/choc_javascript_QuickJS.h
@@ -77,6 +77,8 @@
#include
#endif
+namespace
+{
namespace choc::javascript
{
@@ -64343,5 +64345,6 @@ Context createQuickJSContext()
}
} // namespace choc::javascript
+} // anonymous namespace
#endif // CHOC_JAVASCRIPT_QUICKJS_HEADER_INCLUDED
diff --git a/modules/juce_core/javascript/choc/math/choc_MathHelpers.h b/modules/juce_core/javascript/choc/math/choc_MathHelpers.h
index fedcf3ca6c..99810423af 100644
--- a/modules/juce_core/javascript/choc/math/choc_MathHelpers.h
+++ b/modules/juce_core/javascript/choc/math/choc_MathHelpers.h
@@ -36,6 +36,8 @@
#endif
#endif
+namespace
+{
namespace choc::math
{
@@ -114,5 +116,6 @@ inline Int128 multiply128 (uint64_t a, uint64_t b)
} // namespace choc::math
+} // anonymous namespace
#endif
diff --git a/modules/juce_core/javascript/choc/text/choc_FloatToString.h b/modules/juce_core/javascript/choc/text/choc_FloatToString.h
index bf8993321b..bc13c53f32 100644
--- a/modules/juce_core/javascript/choc/text/choc_FloatToString.h
+++ b/modules/juce_core/javascript/choc/text/choc_FloatToString.h
@@ -23,6 +23,8 @@
#include
#include "../math/choc_MathHelpers.h"
+namespace
+{
namespace choc::text
{
@@ -393,5 +395,6 @@ inline std::string floatToString (float value, int maxDecimals, bool omitPointIf
inline std::string floatToString (double value, int maxDecimals, bool omitPointIfPossible) { return FloatToStringBuffer (value, maxDecimals, omitPointIfPossible).toString(); }
} // namespace choc::text
+} // anonymous namespace
#endif
diff --git a/modules/juce_core/javascript/choc/text/choc_JSON.h b/modules/juce_core/javascript/choc/text/choc_JSON.h
index 0349677f9c..056aae4c3f 100644
--- a/modules/juce_core/javascript/choc/text/choc_JSON.h
+++ b/modules/juce_core/javascript/choc/text/choc_JSON.h
@@ -31,6 +31,8 @@
#undef max // It's never a smart idea to include any C headers before your C++ ones, as it
#undef min // risks polluting your namespace with all kinds of dangerous macros like these ones.
+namespace
+{
namespace choc::json
{
@@ -557,5 +559,6 @@ value::Value create (Properties&&... properties)
} // namespace choc::json
+} // anonymous namespace
#endif
diff --git a/modules/juce_core/javascript/choc/text/choc_StringUtilities.h b/modules/juce_core/javascript/choc/text/choc_StringUtilities.h
index 3122f832d1..831fd16bad 100644
--- a/modules/juce_core/javascript/choc/text/choc_StringUtilities.h
+++ b/modules/juce_core/javascript/choc/text/choc_StringUtilities.h
@@ -29,6 +29,8 @@
#include
#include "../platform/choc_Assert.h"
+namespace
+{
namespace choc::text
{
@@ -593,5 +595,6 @@ inline std::string percentEncodeURI (std::string_view text)
} // namespace choc::text
+} // anonymous namespace
#endif
diff --git a/modules/juce_core/javascript/choc/text/choc_UTF8.h b/modules/juce_core/javascript/choc/text/choc_UTF8.h
index eb1f59fb97..6e62e986e5 100644
--- a/modules/juce_core/javascript/choc/text/choc_UTF8.h
+++ b/modules/juce_core/javascript/choc/text/choc_UTF8.h
@@ -22,6 +22,8 @@
#include
#include "choc_StringUtilities.h"
+namespace
+{
namespace choc::text
{
@@ -651,5 +653,6 @@ inline std::string convertUTF8ToCESU8 (UTF8Pointer utf8)
} // namespace choc::text
+} // anonymous namespace
#endif
diff --git a/modules/juce_core/javascript/juce_Javascript.cpp b/modules/juce_core/javascript/juce_Javascript.cpp
index 85f507fd10..c4da5d25c5 100644
--- a/modules/juce_core/javascript/juce_Javascript.cpp
+++ b/modules/juce_core/javascript/juce_Javascript.cpp
@@ -34,10 +34,11 @@
JUCE_BEGIN_IGNORE_WARNINGS_GCC_LIKE ("-Wdeprecated-copy-with-dtor",
"-Wunused-but-set-variable",
- "-Wdeprecated")
+ "-Wdeprecated",
+ "-Wunused-function")
JUCE_BEGIN_IGNORE_WARNINGS_MSVC (6011 6246 6255 6262 6297 6308 6323 6340 6385 6386 28182)
- #include "choc/javascript/choc_javascript_QuickJS.h"
- #include "choc/javascript/choc_javascript.h"
+#include
+#include
JUCE_END_IGNORE_WARNINGS_MSVC
JUCE_END_IGNORE_WARNINGS_GCC_LIKE