| 
				
				
					
				
				
				 | 
			
			 | 
			@@ -105,7 +105,7 @@ public: | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                                 androidReadMediaVideoPermission, androidExternalWritePermission,
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                                 androidInAppBillingPermission, androidVibratePermission, androidOtherPermissions, androidPushNotifications,
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                                 androidEnableRemoteNotifications, androidRemoteNotificationsConfigFile, androidEnableContentSharing, androidKeyStore,
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                                 androidKeyStorePass, androidKeyAlias, androidKeyAliasPass, gradleVersion, gradleToolchain, androidPluginVersion;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                                 androidKeyStorePass, androidKeyAlias, androidKeyAliasPass, gradleVersion, gradleToolchain, gradleClangTidy, androidPluginVersion;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    //==============================================================================
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    AndroidProjectExporter (Project& p, const ValueTree& t)
 | 
		
		
	
	
		
			
				| 
				
					
				
				
					
				
				
				 | 
			
			 | 
			@@ -151,6 +151,7 @@ public: | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			          androidKeyAliasPass                  (settings, Ids::androidKeyAliasPass,                  getUndoManager(), "android"),
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			          gradleVersion                        (settings, Ids::gradleVersion,                        getUndoManager(), "7.5.1"),
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			          gradleToolchain                      (settings, Ids::gradleToolchain,                      getUndoManager(), "clang"),
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			          gradleClangTidy                      (settings, Ids::gradleClangTidy,                      getUndoManager(), false),
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			          androidPluginVersion                 (settings, Ids::androidPluginVersion,                 getUndoManager(), "7.3.0"),
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			          AndroidExecutable                    (getAppSettings().getStoredPath (Ids::androidStudioExePath, TargetOS::getThisOS()).get().toString())
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    {
 | 
		
		
	
	
		
			
				| 
				
				
				
					
				
				 | 
			
			 | 
			@@ -171,6 +172,9 @@ public: | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                                                { "clang", "gcc" },
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                                                { "clang", "gcc" }),
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                   "The toolchain that gradle should invoke for NDK compilation (variable model.android.ndk.tooclhain in app/build.gradle)");
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        props.add (new ChoicePropertyComponent (gradleClangTidy, "Use Clang-Tidy"),
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                   "If enabled and the toolchain is clang this will run clang-tidy when compiling.");
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    }
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    //==============================================================================
 | 
		
		
	
	
		
			
				| 
				
					
				
				
					
				
				
				 | 
			
			 | 
			@@ -680,10 +684,22 @@ private: | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        mo << "apply plugin: 'com.android." << (isLibrary() ? "library" : "application") << "'" << newLine << newLine;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        // CMake 3.22 will fail to build Android projects that set ANDROID_ARM_MODE unless NDK 24+ is used
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        mo << "def ndkVersionString = \"25.2.9519653\"" << newLine << newLine;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        if (gradleClangTidy.get() && gradleToolchain.get().toString() == "clang")
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            mo << "Properties properties = new Properties()" << newLine
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			               << "properties.load(project.rootProject.file(\"local.properties\").newDataInputStream())" << newLine
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			               << "def llvmDir = \"${properties.getProperty('sdk.dir')}/ndk/${ndkVersionString}/toolchains/llvm\"" << newLine
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			               << "def clangTidySearch = fileTree(llvmDir).filter { file -> file.name.matches('^clang-tidy(.exe)?$') }" << newLine
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			               << "if (clangTidySearch.size() != 1) {" << newLine
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			               << "    throw new GradleException(\"Could not locate a unique clang-tidy in ${llvmDir}\")" << newLine
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			               << "}" << newLine
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			               << "def clangTidy = clangTidySearch.getSingleFile().getAbsolutePath()" << newLine << newLine;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        mo << "android {"                                                                    << newLine;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        mo << "    compileSdkVersion " << static_cast<int> (androidTargetSDK.get())          << newLine;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        // CMake 3.22 will fail to build Android projects that set ANDROID_ARM_MODE unless NDK 24+ is used
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        mo << "    ndkVersion \"25.2.9519653\""                                              << newLine;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        mo << "    ndkVersion ndkVersionString"                                              << newLine;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        mo << "    namespace " << project.getBundleIdentifierString().toLowerCase().quoted() << newLine;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        mo << "    externalNativeBuild {"                                                    << newLine;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        mo << "        cmake {"                                                              << newLine;
 | 
		
		
	
	
		
			
				| 
				
					
				
				
					
				
				
				 | 
			
			 | 
			@@ -1488,6 +1504,9 @@ private: | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        cmakeArgs.add ("\"-DANDROID_ARM_MODE=arm\"");
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        cmakeArgs.add ("\"-DANDROID_ARM_NEON=TRUE\"");
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        if (isClang && gradleClangTidy.get())
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            cmakeArgs.add ("\"-DCMAKE_CXX_CLANG_TIDY=${clangTidy}\"");
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        auto cppStandard = [this]
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        {
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            auto projectStandard = project.getCppStandardString();
 | 
		
		
	
	
		
			
				| 
				
					
				
				
				
				 | 
			
			 | 
			
  |