mirror of
https://github.com/ultimatepp/ultimatepp.git
synced 2026-08-25 14:22:54 -06:00
Core on Android compiles one more time - improvments in Android builder, code refactoring
git-svn-id: svn://ultimatepp.org/upp/trunk@10567 f0d560ea-af0d-0410-9eb7-867de7ffcac7
This commit is contained in:
parent
aae3c4a238
commit
61606fd866
11 changed files with 320 additions and 170 deletions
|
|
@ -104,26 +104,28 @@ protected:
|
|||
void AppendModules(String& makeFile) const;
|
||||
|
||||
private:
|
||||
String name;
|
||||
Vector<String> sourceFiles;
|
||||
Vector<String> includes;
|
||||
String name;
|
||||
Vector<String> sourceFiles;
|
||||
Index<String> includes;
|
||||
VectorMap<String, String> cppFlags;
|
||||
Vector<String> ldLibraries;
|
||||
Vector<String> staticLibraries;
|
||||
Vector<String> staticModuleLibraries;
|
||||
Vector<String> sharedLibraries;
|
||||
Vector<String> ldLibraries;
|
||||
Vector<String> staticLibraries;
|
||||
Vector<String> staticModuleLibraries;
|
||||
Vector<String> sharedLibraries;
|
||||
};
|
||||
|
||||
class AndroidMakeFile {
|
||||
public:
|
||||
static void AppendString(String& makeFile,
|
||||
const String& variable,
|
||||
const String& variableName);
|
||||
static void AppendStringVector(String& makeFile,
|
||||
const Vector<String>& vec,
|
||||
const String& variableName,
|
||||
const String& variablePrefix = "",
|
||||
const String& variableSuffix = "");
|
||||
static void AppendString(
|
||||
String& makeFile,
|
||||
const String& variable,
|
||||
const String& variableName);
|
||||
static void AppendStringVector(
|
||||
String& makeFile,
|
||||
const Vector<String>& vec,
|
||||
const String& variableName,
|
||||
const String& variablePrefix = "",
|
||||
const String& variableSuffix = "");
|
||||
|
||||
public:
|
||||
AndroidMakeFile();
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
#include "Builders.h"
|
||||
#include "AndroidBuilder.h"
|
||||
|
||||
const String AndroidBuilder::RES_PKG_FLAG = "ANDROID_RESOURCES_PACKAGE";
|
||||
|
||||
|
|
@ -21,11 +22,12 @@ String AndroidBuilder::GetTargetExt() const
|
|||
return ".apk";
|
||||
}
|
||||
|
||||
bool AndroidBuilder::BuildPackage(const String& package, Vector<String>& linkfile,
|
||||
Vector<String>& immfile, String& linkoptions,
|
||||
const Vector<String>& all_uses,
|
||||
const Vector<String>& all_libraries,
|
||||
int)
|
||||
bool AndroidBuilder::BuildPackage(
|
||||
const String& package, Vector<String>& linkfile,
|
||||
Vector<String>& immfile, String& linkoptions,
|
||||
const Vector<String>& all_uses,
|
||||
const Vector<String>& all_libraries,
|
||||
int)
|
||||
{
|
||||
InitProject();
|
||||
if(!ValidateBuilderEnviorement())
|
||||
|
|
@ -35,7 +37,7 @@ bool AndroidBuilder::BuildPackage(const String& package, Vector<String>& linkfil
|
|||
const bool isResourcesPackage = HasFlag(RES_PKG_FLAG);
|
||||
String uppManifestPath = PackagePath(package);
|
||||
String packageDir = GetFileFolder(uppManifestPath);
|
||||
String assemblyDir = GetAssemblyDir(packageDir, package);
|
||||
String assemblyDir = AndroidBuilderUtils::GetAssemblyDir(packageDir, package);
|
||||
|
||||
ChDir(packageDir);
|
||||
PutVerbose("cd " + packageDir);
|
||||
|
|
@ -209,39 +211,27 @@ bool AndroidBuilder::BuildPackage(const String& package, Vector<String>& linkfil
|
|||
}
|
||||
}
|
||||
|
||||
AndroidModuleMakeFile pkgMakeFile(NormalizeModuleName(package));
|
||||
for(int i = 0; i < nativeSourceFilesInPackage.GetCount(); i++)
|
||||
pkgMakeFile.AddSourceFile(nativeSourceFilesInPackage[i]);
|
||||
AndroidModuleMakeFileCreator creator(config);
|
||||
|
||||
// TODO: Check for path with space?
|
||||
pkgMakeFile.AddInclude(assemblyDir);
|
||||
pkgMakeFile.AddInclude(packageDir);
|
||||
for (int i = 0; i < pkg.uses.GetCount(); i++)
|
||||
pkgMakeFile.AddInclude(GetAssemblyDir(pkg.uses[i].text));
|
||||
creator.SetModuleName(NormalizeModuleName(package));
|
||||
creator.AddSources(nativeSourceFilesInPackage);
|
||||
creator.AddInclude(assemblyDir);
|
||||
creator.AddIncludeWithSubdirs(packageDir);
|
||||
creator.AddIncludes(pkg.uses);
|
||||
creator.AddFlags(pkg.flag);
|
||||
creator.AddLdLibraries(pkg.library);
|
||||
creator.AddStaticModuleLibrary(pkg.static_library);
|
||||
creator.AddSharedLibraries(pkg.uses);
|
||||
|
||||
for(int i = 0; i < pkg.flag.GetCount(); i++)
|
||||
pkgMakeFile.AddCppFlag(pkg.flag[i].text);
|
||||
|
||||
Vector<String> libs = Split(Gather(pkg.library, config.GetKeys()), ' ');
|
||||
for(int i = 0; i < libs.GetCount(); i++)
|
||||
pkgMakeFile.AddLdLibrary(libs[i]);
|
||||
|
||||
Vector<String> staticLibs = Split(Gather(pkg.static_library, config.GetKeys()), ' ');
|
||||
for(int i = 0; i < staticLibs.GetCount(); i++)
|
||||
pkgMakeFile.AddStaticModuleLibrary(staticLibs[i]);
|
||||
|
||||
for(int i = 0; i < pkg.uses.GetCount(); i++)
|
||||
pkgMakeFile.AddSharedLibrary(pkg.uses[i].text);
|
||||
|
||||
String pkgMakeFilePath = project.GetJniDir() + DIR_SEPS + package + DIR_SEPS + "Android.mk";
|
||||
UpdateFile(pkgMakeFilePath, pkgMakeFile.ToString());
|
||||
UpdateFile(GetModuleMakeFilePath(package), creator.Create());
|
||||
}
|
||||
|
||||
return !error;
|
||||
}
|
||||
|
||||
bool AndroidBuilder::Link(const Vector<String>& linkfile, const String& linkoptions,
|
||||
bool createmap)
|
||||
bool AndroidBuilder::Link(
|
||||
const Vector<String>& linkfile, const String& linkoptions,
|
||||
bool createmap)
|
||||
{
|
||||
InitProject();
|
||||
if(!ValidateBuilderEnviorement())
|
||||
|
|
@ -343,10 +333,11 @@ bool AndroidBuilder::Link(const Vector<String>& linkfile, const String& linkopti
|
|||
return true;
|
||||
}
|
||||
|
||||
bool AndroidBuilder::Preprocess(const String& package,
|
||||
const String& file,
|
||||
const String& target,
|
||||
bool asmout)
|
||||
bool AndroidBuilder::Preprocess(
|
||||
const String& package,
|
||||
const String& file,
|
||||
const String& target,
|
||||
bool asmout)
|
||||
{
|
||||
InitProject();
|
||||
|
||||
|
|
@ -411,8 +402,9 @@ void AndroidBuilder::ManageProjectCohesion()
|
|||
DetectAndManageUnusedPackages(project.GetJniDir(), packages);
|
||||
}
|
||||
|
||||
void AndroidBuilder::DetectAndManageUnusedPackages(const String& nest,
|
||||
const Index<String>& packages)
|
||||
void AndroidBuilder::DetectAndManageUnusedPackages(
|
||||
const String& nest,
|
||||
const Index<String>& packages)
|
||||
{
|
||||
for(FindFile ff(AppendFileName(nest, "*")); ff; ff.Next()) {
|
||||
if(!ff.IsHidden() && ff.IsDirectory()) {
|
||||
|
|
@ -423,10 +415,11 @@ void AndroidBuilder::DetectAndManageUnusedPackages(const String& nest,
|
|||
}
|
||||
}
|
||||
|
||||
void AndroidBuilder::DeleteUnusedSourceFiles(const String& nest,
|
||||
const Vector<String>& files,
|
||||
String exts,
|
||||
String excludedFiles)
|
||||
void AndroidBuilder::DeleteUnusedSourceFiles(
|
||||
const String& nest,
|
||||
const Vector<String>& files,
|
||||
String exts,
|
||||
String excludedFiles)
|
||||
{
|
||||
exts.Replace(" ", "");
|
||||
excludedFiles.Replace(" ", "");
|
||||
|
|
@ -437,28 +430,30 @@ void AndroidBuilder::DeleteUnusedSourceFiles(const String& nest,
|
|||
dirs.Add(nest);
|
||||
for(int i = 0; i < dirs.GetCount(); i++) {
|
||||
for(FindFile ff(AppendFileName(dirs[i], "*")); ff; ff.Next()) {
|
||||
if(!ff.IsHidden()) {
|
||||
String path = ff.GetPath();
|
||||
String name = ff.GetName();
|
||||
if(ff.IsFolder() && ff.IsSymLink())
|
||||
dirs.Add(ff.GetPath());
|
||||
else
|
||||
if(extsIdx.Find(GetFileExt(path)) == -1)
|
||||
continue;
|
||||
else
|
||||
if(excludedFilesIdx.Find(name) > -1)
|
||||
continue;
|
||||
else {
|
||||
bool exists = false;
|
||||
for(int j = 0; j < files.GetCount(); j++) {
|
||||
if(files[j] == path) {
|
||||
exists = true;
|
||||
break;
|
||||
}
|
||||
if(ff.IsHidden()) {
|
||||
continue;
|
||||
}
|
||||
|
||||
String path = ff.GetPath();
|
||||
String name = ff.GetName();
|
||||
if(ff.IsFolder() && ff.IsSymLink())
|
||||
dirs.Add(ff.GetPath());
|
||||
else
|
||||
if(extsIdx.Find(GetFileExt(path)) == -1)
|
||||
continue;
|
||||
else
|
||||
if(excludedFilesIdx.Find(name) > -1)
|
||||
continue;
|
||||
else {
|
||||
bool exists = false;
|
||||
for(int j = 0; j < files.GetCount(); j++) {
|
||||
if(files[j] == path) {
|
||||
exists = true;
|
||||
break;
|
||||
}
|
||||
if(!exists)
|
||||
DeleteFile(path);
|
||||
}
|
||||
if(!exists)
|
||||
DeleteFile(path);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -825,30 +820,12 @@ String AndroidBuilder::GetSandboxDir() const
|
|||
return GetFileFolder(target) + DIR_SEPS + "Sandbox" + DIR_SEPS + mainPackageName;
|
||||
}
|
||||
|
||||
String AndroidBuilder::GetAssemblyDir(const String& package)
|
||||
{
|
||||
String packageManifest = PackagePath(package);
|
||||
String packageDir = GetFileFolder(packageManifest);
|
||||
|
||||
return GetAssemblyDir(packageDir, package);
|
||||
}
|
||||
|
||||
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,
|
||||
const String& packageName,
|
||||
const String& fileName) const
|
||||
String AndroidBuilder::GetFilePathInAndroidProject(
|
||||
const String& nestDir,
|
||||
const String& packageName,
|
||||
const String& fileName) const
|
||||
{
|
||||
return nestDir + DIR_SEPS + packageName + DIR_SEPS + RemoveDirNameFromFileName(fileName);
|
||||
}
|
||||
|
|
@ -867,6 +844,11 @@ String AndroidBuilder::NormalizeModuleName(String moduleName) const
|
|||
return moduleName;
|
||||
}
|
||||
|
||||
String AndroidBuilder::GetModuleMakeFilePath(const String& package)
|
||||
{
|
||||
return project.GetJniDir() + DIR_SEPS + package + DIR_SEPS + "Android.mk";
|
||||
}
|
||||
|
||||
// -------------------------------------------------------------------
|
||||
|
||||
Builder *CreateAndroidBuilder()
|
||||
|
|
|
|||
47
uppsrc/ide/Builders/AndroidBuilder.h
Normal file
47
uppsrc/ide/Builders/AndroidBuilder.h
Normal file
|
|
@ -0,0 +1,47 @@
|
|||
#ifndef _ide_Builders_AndroidBuilder_h_
|
||||
#define _ide_Builders_AndroidBuilder_h_
|
||||
|
||||
#include "Android.h"
|
||||
|
||||
#include <ide/Core/Core.h>
|
||||
|
||||
namespace Upp {
|
||||
|
||||
class AndroidBuilderUtils final {
|
||||
public:
|
||||
AndroidBuilderUtils() = delete;
|
||||
AndroidBuilderUtils(AndroidBuilderUtils&) = delete;
|
||||
AndroidBuilderUtils& operator=(AndroidBuilderUtils&) = delete;
|
||||
~AndroidBuilderUtils() = delete;
|
||||
|
||||
static String GetAssemblyDir(const String& package);
|
||||
static String GetAssemblyDir(const String& packageDir, const String& package);
|
||||
};
|
||||
|
||||
class AndroidModuleMakeFileCreator {
|
||||
public:
|
||||
AndroidModuleMakeFileCreator(const Index<String>& builderConfig);
|
||||
virtual ~AndroidModuleMakeFileCreator() {}
|
||||
|
||||
void SetModuleName(const String& name) { makeFile.SetName(name); }
|
||||
|
||||
void AddSources(Vector<String>& sources);
|
||||
void AddInclude(const String& path);
|
||||
void AddIncludeWithSubdirs(const String& path);
|
||||
|
||||
void AddIncludes(const Array<OptItem>& uses);
|
||||
void AddFlags(const Array<OptItem>& flags);
|
||||
void AddLdLibraries(const Array<OptItem>& libraries);
|
||||
void AddStaticModuleLibrary(Array<OptItem>& staticLibraries);
|
||||
void AddSharedLibraries(const Array<OptItem>& uses);
|
||||
|
||||
String Create() { return makeFile.ToString(); }
|
||||
|
||||
private:
|
||||
AndroidModuleMakeFile makeFile;
|
||||
const Index<String>& config;
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
#endif
|
||||
24
uppsrc/ide/Builders/AndroidBuilderUtils.cpp
Normal file
24
uppsrc/ide/Builders/AndroidBuilderUtils.cpp
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
#include "AndroidBuilder.h"
|
||||
|
||||
namespace Upp {
|
||||
|
||||
String AndroidBuilderUtils::GetAssemblyDir(const String& package)
|
||||
{
|
||||
String packageManifest = PackagePath(package);
|
||||
String packageDir = GetFileFolder(packageManifest);
|
||||
|
||||
return GetAssemblyDir(packageDir, package);
|
||||
}
|
||||
|
||||
String AndroidBuilderUtils::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 : "";
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -2,29 +2,33 @@
|
|||
|
||||
namespace Upp {
|
||||
|
||||
void AndroidMakeFile::AppendString(String& makeFile,
|
||||
const String& variable,
|
||||
const String& variableName)
|
||||
void AndroidMakeFile::AppendString(
|
||||
String& makeFile,
|
||||
const String& variable,
|
||||
const String& variableName)
|
||||
{
|
||||
if(!variable.IsEmpty())
|
||||
makeFile << variableName << " := " << variable << "\n";
|
||||
}
|
||||
|
||||
void AndroidMakeFile::AppendStringVector(String& makeFile,
|
||||
const Vector<String>& vec,
|
||||
const String& variableName,
|
||||
const String& variablePrefix,
|
||||
const String& variableSuffix)
|
||||
void AndroidMakeFile::AppendStringVector(
|
||||
String& makeFile,
|
||||
const Vector<String>& vec,
|
||||
const String& variableName,
|
||||
const String& variablePrefix,
|
||||
const String& variableSuffix)
|
||||
{
|
||||
if(!vec.IsEmpty()) {
|
||||
makeFile << variableName << " := ";
|
||||
for(int i = 0; i < vec.GetCount(); i++) {
|
||||
makeFile << variablePrefix << vec[i] << variableSuffix;
|
||||
if(i + 1 < vec.GetCount())
|
||||
makeFile << " ";
|
||||
}
|
||||
makeFile << "\n";
|
||||
if(vec.IsEmpty()) {
|
||||
return;
|
||||
}
|
||||
|
||||
makeFile << variableName << " := ";
|
||||
for(int i = 0; i < vec.GetCount(); ++i) {
|
||||
makeFile << variablePrefix << vec[i] << variableSuffix;
|
||||
if(i + 1 < vec.GetCount())
|
||||
makeFile << " ";
|
||||
}
|
||||
makeFile << "\n";
|
||||
}
|
||||
|
||||
AndroidMakeFile::AndroidMakeFile()
|
||||
|
|
|
|||
|
|
@ -53,7 +53,7 @@ void AndroidModuleMakeFile::AddSourceFile(const String& path)
|
|||
|
||||
void AndroidModuleMakeFile::AddInclude(const String& includePath)
|
||||
{
|
||||
includes.Add(includePath);
|
||||
includes.FindAdd(includePath);
|
||||
}
|
||||
|
||||
void AndroidModuleMakeFile::AddCppFlag(const String& name, const String& value)
|
||||
|
|
@ -93,23 +93,25 @@ void AndroidModuleMakeFile::AppendSourceFiles(String& makeFile) const
|
|||
|
||||
void AndroidModuleMakeFile::AppendIncludes(String& makeFile) const
|
||||
{
|
||||
AndroidMakeFile::AppendStringVector(makeFile, includes, "LOCAL_C_INCLUDES");
|
||||
AndroidMakeFile::AppendStringVector(makeFile, includes.GetKeys(), "LOCAL_C_INCLUDES");
|
||||
}
|
||||
|
||||
void AndroidModuleMakeFile::AppendCppFlags(String& makeFile) const
|
||||
{
|
||||
if(!cppFlags.IsEmpty()) {
|
||||
makeFile << "LOCAL_CPPFLAGS := ";
|
||||
for(int i = 0; i < cppFlags.GetCount(); i++) {
|
||||
String value = cppFlags[i];
|
||||
makeFile << "-D" << cppFlags.GetKey(i);
|
||||
if(!value.IsEmpty())
|
||||
makeFile << "=" << value;
|
||||
if(i + 1 < sourceFiles.GetCount())
|
||||
makeFile << " ";
|
||||
}
|
||||
makeFile << "\n";
|
||||
if(cppFlags.IsEmpty()) {
|
||||
return;
|
||||
}
|
||||
|
||||
makeFile << "LOCAL_CPPFLAGS := ";
|
||||
for(int i = 0; i < cppFlags.GetCount(); i++) {
|
||||
String value = cppFlags[i];
|
||||
makeFile << "-D" << cppFlags.GetKey(i);
|
||||
if(!value.IsEmpty())
|
||||
makeFile << "=" << value;
|
||||
if(i + 1 < sourceFiles.GetCount())
|
||||
makeFile << " ";
|
||||
}
|
||||
makeFile << "\n";
|
||||
}
|
||||
|
||||
void AndroidModuleMakeFile::AppendLdLibraries(String& makeFile) const
|
||||
|
|
|
|||
81
uppsrc/ide/Builders/AndroidModuleMakeFileBuilder.cpp
Normal file
81
uppsrc/ide/Builders/AndroidModuleMakeFileBuilder.cpp
Normal file
|
|
@ -0,0 +1,81 @@
|
|||
#include "AndroidBuilder.h"
|
||||
|
||||
namespace Upp {
|
||||
|
||||
AndroidModuleMakeFileCreator::AndroidModuleMakeFileCreator(const Index<String>& builderConfig)
|
||||
: config(builderConfig)
|
||||
{
|
||||
}
|
||||
|
||||
void AndroidModuleMakeFileCreator::AddSources(Vector<String>& sources)
|
||||
{
|
||||
for(int i = 0; i < sources.GetCount(); ++i) {
|
||||
makeFile.AddSourceFile(sources[i]);
|
||||
}
|
||||
}
|
||||
|
||||
void AndroidModuleMakeFileCreator::AddInclude(const String& path)
|
||||
{
|
||||
makeFile.AddInclude(path);
|
||||
}
|
||||
|
||||
void AndroidModuleMakeFileCreator::AddIncludeWithSubdirs(const String& path)
|
||||
{
|
||||
BiVector<String> dirs { path };
|
||||
while(!dirs.IsEmpty()) {
|
||||
for(FindFile ff(AppendFileName(dirs.Head(), "*")); ff; ff.Next()) {
|
||||
if(ff.IsHidden() || ff.IsSymLink() || !ff.IsFolder()) {
|
||||
continue;
|
||||
}
|
||||
|
||||
String name = ff.GetName();
|
||||
if (name.EndsWith(".tpp")) {
|
||||
continue;
|
||||
}
|
||||
|
||||
dirs.AddTail(ff.GetPath());
|
||||
}
|
||||
|
||||
AddInclude(dirs.Head());
|
||||
dirs.DropHead();
|
||||
}
|
||||
}
|
||||
|
||||
void AndroidModuleMakeFileCreator::AddIncludes(const Array<OptItem>& uses)
|
||||
{
|
||||
for(int i = 0; i < uses.GetCount(); ++i) {
|
||||
makeFile.AddInclude(AndroidBuilderUtils::GetAssemblyDir(uses[i].text));
|
||||
}
|
||||
}
|
||||
|
||||
void AndroidModuleMakeFileCreator::AddFlags(const Array<OptItem>& flags)
|
||||
{
|
||||
for(int i = 0; i < flags.GetCount(); ++i) {
|
||||
makeFile.AddCppFlag(flags[i].text);
|
||||
}
|
||||
}
|
||||
|
||||
void AndroidModuleMakeFileCreator::AddLdLibraries(const Array<OptItem>& libraries)
|
||||
{
|
||||
Vector<String> libs = Split(Gather(libraries, config.GetKeys()), ' ');
|
||||
for(int i = 0; i < libs.GetCount(); ++i) {
|
||||
makeFile.AddLdLibrary(libs[i]);
|
||||
}
|
||||
}
|
||||
|
||||
void AndroidModuleMakeFileCreator::AddStaticModuleLibrary(Array<OptItem>& staticLibraries)
|
||||
{
|
||||
Vector<String> slibs = Split(Gather(staticLibraries, config.GetKeys()), ' ');
|
||||
for(int i = 0; i < slibs.GetCount(); ++i) {
|
||||
makeFile.AddStaticModuleLibrary(slibs[i]);
|
||||
}
|
||||
}
|
||||
|
||||
void AndroidModuleMakeFileCreator::AddSharedLibraries(const Array<OptItem>& uses)
|
||||
{
|
||||
for(int i = 0; i < uses.GetCount(); i++) {
|
||||
makeFile.AddSharedLibrary(uses[i].text);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -4,7 +4,6 @@
|
|||
#include <ide/Core/Core.h>
|
||||
#include <ide/Android/Android.h>
|
||||
#include <ide/Java/Java.h>
|
||||
//#include <coff/binobj/binobj.h>
|
||||
#include <plugin/bz2/bz2.h>
|
||||
|
||||
#include "Android.h"
|
||||
|
|
@ -162,9 +161,9 @@ private:
|
|||
|
||||
class AndroidBuilder : public Builder {
|
||||
public:
|
||||
AndroidSDK androidSDK;
|
||||
AndroidNDK androidNDK;
|
||||
Jdk jdk;
|
||||
AndroidSDK androidSDK;
|
||||
AndroidNDK androidNDK;
|
||||
Jdk jdk;
|
||||
|
||||
bool ndk_blitz;
|
||||
Vector<String> ndkArchitectures;
|
||||
|
|
@ -179,29 +178,33 @@ public:
|
|||
public:
|
||||
AndroidBuilder();
|
||||
|
||||
virtual String GetTargetExt() const;
|
||||
virtual bool BuildPackage(const String& packageName,
|
||||
Vector<String>& linkfile,
|
||||
Vector<String>& immfile,
|
||||
String& linkoptions,
|
||||
const Vector<String>& all_uses,
|
||||
const Vector<String>& all_libraries,
|
||||
int optimize);
|
||||
virtual bool Link(const Vector<String>& linkfile, const String& linkoptions, bool createmap);
|
||||
virtual bool Preprocess(const String& package,
|
||||
const String& file,
|
||||
const String& target,
|
||||
bool asmout);
|
||||
virtual void CleanPackage(const String& package, const String& outdir);
|
||||
virtual void AfterClean();
|
||||
virtual String GetTargetExt() const override;
|
||||
virtual bool BuildPackage(
|
||||
const String& packageName,
|
||||
Vector<String>& linkfile,
|
||||
Vector<String>& immfile,
|
||||
String& linkoptions,
|
||||
const Vector<String>& all_uses,
|
||||
const Vector<String>& all_libraries,
|
||||
int optimize) override;
|
||||
virtual bool Link(
|
||||
const Vector<String>& linkfile, const String& linkoptions, bool createmap) override;
|
||||
virtual bool Preprocess(
|
||||
const String& package,
|
||||
const String& file,
|
||||
const String& target,
|
||||
bool asmout) override;
|
||||
virtual void CleanPackage(const String& package, const String& outdir) override;
|
||||
virtual void AfterClean() override;
|
||||
|
||||
protected:
|
||||
void ManageProjectCohesion();
|
||||
void DetectAndManageUnusedPackages(const String& nest, const Index<String>& packages);
|
||||
void DeleteUnusedSourceFiles(const String& nest,
|
||||
const Vector<String>& files,
|
||||
String exts,
|
||||
String excludedFiles = "");
|
||||
void DeleteUnusedSourceFiles(
|
||||
const String& nest,
|
||||
const Vector<String>& files,
|
||||
String exts,
|
||||
String excludedFiles = "");
|
||||
bool MovePackageFileToAndroidProject(const String& src, const String& dest);
|
||||
bool RealizePackageJavaSourcesDirectory(const String& packageName);
|
||||
bool RealizeLinkDirectories() const;
|
||||
|
|
@ -224,20 +227,20 @@ protected:
|
|||
bool PreprocessJava(const String& package, const String& file, const String& target);
|
||||
|
||||
protected:
|
||||
String GetFilePathInAndroidProject(const String& nestDir,
|
||||
const String& packageName,
|
||||
const String& fileName) const;
|
||||
String GetFilePathInAndroidProject(
|
||||
const String& nestDir,
|
||||
const String& packageName,
|
||||
const String& fileName) const;
|
||||
|
||||
String RemoveDirNameFromFileName(String fileName) const;
|
||||
String NormalizeModuleName(String moduleName) const;
|
||||
|
||||
String GetModuleMakeFilePath(const String& packageName);
|
||||
|
||||
private:
|
||||
void InitProject();
|
||||
String GetSandboxDir() const;
|
||||
|
||||
static String GetAssemblyDir(const String& package);
|
||||
static String GetAssemblyDir(const String& packageDir, const String& package);
|
||||
|
||||
private:
|
||||
AndroidProject project;
|
||||
const Workspace& wspc;
|
||||
|
|
|
|||
|
|
@ -25,6 +25,10 @@ file
|
|||
AndroidApplicationMakeFile.cpp,
|
||||
AndroidMakeFile.cpp,
|
||||
AndroidModuleMakeFile.cpp,
|
||||
"Android Builder" readonly separator,
|
||||
AndroidBuilder.h,
|
||||
AndroidBuilderUtils.cpp,
|
||||
AndroidModuleMakeFileBuilder.cpp,
|
||||
Components readonly separator,
|
||||
BuilderComponents.h,
|
||||
Blitz.cpp,
|
||||
|
|
|
|||
|
|
@ -81,38 +81,38 @@ AndroidBuilderSetup::AndroidBuilderSetup()
|
|||
{
|
||||
CtrlLayout(*this);
|
||||
|
||||
sdk_path <<= THISBACK(OnSdkPathChange);
|
||||
sdk_path << [=] { OnSdkPathChange(); };
|
||||
|
||||
sdkDownload.SetImage(IdeImg::DownloadBlack());
|
||||
sdkDownload.Tip("Download");
|
||||
sdkDownload <<= callback1(LaunchWebBrowser, AndroidSDK::GetDownloadUrl());
|
||||
sdkDownload << [=] { LaunchWebBrowser(AndroidSDK::GetDownloadUrl()); };
|
||||
sdk_path.AddFrame(sdkDownload);
|
||||
|
||||
sdkBrowse.SetImage(CtrlImg::right_arrow());
|
||||
sdkBrowse.Tip("Select directory");
|
||||
sdkBrowse <<= THISBACK(OnSdkPathInsert);
|
||||
sdkBrowse << [=]{ OnSdkPathInsert(); };
|
||||
sdk_path.AddFrame(sdkBrowse);
|
||||
|
||||
ndk_path <<= THISBACK(OnNdkPathChange);
|
||||
ndk_path << [=] { OnNdkPathChange(); };
|
||||
|
||||
ndkDownload.SetImage(IdeImg::DownloadBlack());
|
||||
ndkDownload.Tip("Download");
|
||||
ndkDownload <<= callback1(LaunchWebBrowser, AndroidNDK::GetDownloadUrl());
|
||||
ndkDownload << [=] { LaunchWebBrowser(AndroidNDK::GetDownloadUrl()); };
|
||||
ndk_path.AddFrame(ndkDownload);
|
||||
|
||||
ndkBrowse.SetImage(CtrlImg::right_arrow());
|
||||
ndkBrowse.Tip("Select directory");
|
||||
ndkBrowse <<= THISBACK(OnNdkPathInsert);
|
||||
ndkBrowse << [=] { OnNdkPathInsert(); };
|
||||
ndk_path.AddFrame(ndkBrowse);
|
||||
|
||||
jdkDownload.SetImage(IdeImg::DownloadBlack());
|
||||
jdkDownload.Tip("Download");
|
||||
jdkDownload <<= callback1(LaunchWebBrowser, Jdk::GetDownloadUrl());
|
||||
jdkDownload << [=] { LaunchWebBrowser(Jdk::GetDownloadUrl()); };
|
||||
jdk_path.AddFrame(jdkDownload);
|
||||
|
||||
jdkBrowse.SetImage(CtrlImg::right_arrow());
|
||||
jdkBrowse.Tip("Select directory");
|
||||
jdkBrowse <<= callback1(InsertPath, &jdk_path);
|
||||
jdkBrowse << [=] { InsertPath(&jdk_path); };
|
||||
jdk_path.AddFrame(jdkBrowse);
|
||||
}
|
||||
|
||||
|
|
@ -256,7 +256,7 @@ void AndroidBuilderSetup::OnNdkPathChange0(const String& ndkPath)
|
|||
ndk_arch_armeabi.Set(1);
|
||||
ndk_arch_armeabi_v7a.Set(1);
|
||||
ndk_arch_arm64_v8a.Set(1);
|
||||
ndk_common_cpp_options.SetData("-std=c++11 -fexceptions -frtti");
|
||||
ndk_common_cpp_options.SetData("-std=c++14 -fexceptions -frtti");
|
||||
}
|
||||
else
|
||||
ClearNdkCtrls();
|
||||
|
|
@ -297,9 +297,10 @@ void AndroidBuilderSetup::LoadCppRuntimes(const AndroidNDK& ndk)
|
|||
LoadDropList(ndk_cpp_runtime, runtimes, ndk.FindDefaultCppRuntime());
|
||||
}
|
||||
|
||||
void AndroidBuilderSetup::LoadDropList(DropList& dropList,
|
||||
const Vector<String>& values,
|
||||
const String& defaultKey)
|
||||
void AndroidBuilderSetup::LoadDropList(
|
||||
DropList& dropList,
|
||||
const Vector<String>& values,
|
||||
const String& defaultKey)
|
||||
{
|
||||
dropList.Clear();
|
||||
|
||||
|
|
|
|||
|
|
@ -211,7 +211,7 @@ LAYOUT(BuildMethodsAndroidBuilderSetupLayout, 648, 500)
|
|||
ITEM(DropList, sdk_build_tools_release, LeftPosZ(340, 100).TopPosZ(124, 19))
|
||||
ITEM(LabelBox, dv___12, SetLabel(t_("Android NDK settings")).HSizePosZ(0, 0).TopPosZ(164, 164))
|
||||
ITEM(StaticText, dv___13, SetText(t_("BLITZ:")).LeftPosZ(8, 116).TopPosZ(180, 19))
|
||||
ITEM(TextOption, ndk_blitz, SetLabel(t_("&Use BLITZ")).LeftPosZ(128, 112).TopPosZ(180, 20))
|
||||
ITEM(TextOption, ndk_blitz, SetLabel(t_("&Use BLITZ (Experimental)")).LeftPosZ(128, 232).TopPosZ(180, 20))
|
||||
ITEM(StaticText, dv___15, SetText(t_("Target architectures:")).LeftPosZ(8, 116).TopPosZ(204, 19))
|
||||
ITEM(TextOption, ndk_arch_armeabi, SetLabel(t_("armeabi")).LeftPosZ(128, 68).TopPosZ(204, 20))
|
||||
ITEM(TextOption, ndk_arch_armeabi_v7a, SetLabel(t_("armeabi-v7a")).LeftPosZ(204, 84).TopPosZ(204, 20))
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue