diff --git a/uppsrc/ide/Builders/Android.h b/uppsrc/ide/Builders/Android.h index 532deef82..d062fa9a8 100644 --- a/uppsrc/ide/Builders/Android.h +++ b/uppsrc/ide/Builders/Android.h @@ -83,18 +83,20 @@ public: public: void AddSourceFile(const String& path); + void AddInclude(const String& includePath); void AddCppFlag(const String& name, const String& value = ""); void AddLdLibrary(const String& ldLibrary); void AddStaticLibrary(const String& staticLibrary); void AddStaticModuleLibrary(const String& staticModuleLibrary); void AddSharedLibrary(const String& sharedLibrary); - String GetName() const { return this->name; } + String GetName() const { return this->name; } void SetName(const String& name) { this->name = name; } protected: void AppendName(String& makeFile) const; void AppendSourceFiles(String& makeFile) const; + void AppendIncludes(String& makeFile) const; void AppendCppFlags(String& makeFile) const; void AppendLdLibraries(String& makeFile) const; void AppendStaticLibraries(String& makeFile) const; @@ -104,6 +106,7 @@ protected: private: String name; Vector sourceFiles; + Vector includes; VectorMap cppFlags; Vector ldLibraries; Vector staticLibraries; diff --git a/uppsrc/ide/Builders/AndroidBuilder.icpp b/uppsrc/ide/Builders/AndroidBuilder.icpp index 3369e21c2..dcd0b0c1d 100644 --- a/uppsrc/ide/Builders/AndroidBuilder.icpp +++ b/uppsrc/ide/Builders/AndroidBuilder.icpp @@ -35,6 +35,7 @@ bool AndroidBuilder::BuildPackage(const String& package, Vector& linkfil const bool isResourcesPackage = HasFlag(RES_PKG_FLAG); String uppManifestPath = PackagePath(package); String packageDir = GetFileFolder(uppManifestPath); + String assemblyDir = GetAssemblyDir(packageDir, package); ChDir(packageDir); PutVerbose("cd " + packageDir); @@ -216,6 +217,8 @@ bool AndroidBuilder::BuildPackage(const String& package, Vector& linkfil for(int i = 0; i < nativeSourceFilesInPackage.GetCount(); i++) pkgMakeFile.AddSourceFile(nativeSourceFilesInPackage[i]); + pkgMakeFile.AddInclude(assemblyDir); + for(int i = 0; i < pkg.flag.GetCount(); i++) pkgMakeFile.AddCppFlag(pkg.flag[i].text); @@ -822,6 +825,17 @@ String AndroidBuilder::GetSandboxDir() const return GetFileFolder(target) + DIR_SEPS + "Sandbox" + DIR_SEPS + mainPackageName; } +String AndroidBuilder::GetAssemblyDir(const String& packageDir, const String& package) +{ + String assemblyDir = packageDir; + + int pos = packageDir.GetCount() - package.GetCount() - 1; + if (pos >= 0 && pos < assemblyDir.GetCount()) + assemblyDir.Trim(pos); + + return assemblyDir != packageDir ? assemblyDir : ""; +} + // ------------------------------------------------------------------- String AndroidBuilder::GetFilePathInAndroidProject(const String& nestDir, diff --git a/uppsrc/ide/Builders/AndroidMakeFile.cpp b/uppsrc/ide/Builders/AndroidMakeFile.cpp index 66d2e0329..21e8d45b6 100644 --- a/uppsrc/ide/Builders/AndroidMakeFile.cpp +++ b/uppsrc/ide/Builders/AndroidMakeFile.cpp @@ -91,7 +91,7 @@ void AndroidMakeFile::AppendImportedModules(String& makeFile) const { if(!importedModules.IsEmpty()) makeFile << "\n"; - for(int i = 0; i < importedModules.GetCount(); i++) + for(int i = 0; i < importedModules.GetCount(); i++) makeFile << "$(call import-module, " << importedModules[i] << ")\n"; } diff --git a/uppsrc/ide/Builders/AndroidModuleMakeFile.cpp b/uppsrc/ide/Builders/AndroidModuleMakeFile.cpp index 31f428742..ef17dda1d 100644 --- a/uppsrc/ide/Builders/AndroidModuleMakeFile.cpp +++ b/uppsrc/ide/Builders/AndroidModuleMakeFile.cpp @@ -21,6 +21,7 @@ void AndroidModuleMakeFile::Clear() { name.Clear(); sourceFiles.Clear(); + includes.Clear(); cppFlags.Clear(); ldLibraries.Clear(); staticLibraries.Clear(); @@ -34,6 +35,7 @@ String AndroidModuleMakeFile::ToString() const makeFile << "include $(CLEAR_VARS)\n"; AppendName(makeFile); AppendSourceFiles(makeFile); + AppendIncludes(makeFile); AppendCppFlags(makeFile); AppendLdLibraries(makeFile); AppendStaticLibraries(makeFile); @@ -49,6 +51,11 @@ void AndroidModuleMakeFile::AddSourceFile(const String& path) sourceFiles.Add(path); } +void AndroidModuleMakeFile::AddInclude(const String& includePath) +{ + includes.Add(includePath); +} + void AndroidModuleMakeFile::AddCppFlag(const String& name, const String& value) { cppFlags.Add(name, value); @@ -84,6 +91,11 @@ void AndroidModuleMakeFile::AppendSourceFiles(String& makeFile) const AndroidMakeFile::AppendStringVector(makeFile, sourceFiles, "LOCAL_SRC_FILES"); } +void AndroidModuleMakeFile::AppendIncludes(String& makeFile) const +{ + AndroidMakeFile::AppendStringVector(makeFile, includes, "LOCAL_C_INCLUDES"); +} + void AndroidModuleMakeFile::AppendCppFlags(String& makeFile) const { if(!cppFlags.IsEmpty()) { diff --git a/uppsrc/ide/Builders/Builders.h b/uppsrc/ide/Builders/Builders.h index 44d3b5f60..3d49272f8 100644 --- a/uppsrc/ide/Builders/Builders.h +++ b/uppsrc/ide/Builders/Builders.h @@ -233,6 +233,7 @@ protected: private: void InitProject(); String GetSandboxDir() const; + String GetAssemblyDir(const String& packageDir, const String& package); private: AndroidProject project;