AndroidBuilder now full independent from ide

git-svn-id: svn://ultimatepp.org/upp/trunk@9061 f0d560ea-af0d-0410-9eb7-867de7ffcac7
This commit is contained in:
klugier 2015-10-20 21:56:47 +00:00
parent d6c04cdb4c
commit a188d7d64a
14 changed files with 116 additions and 80 deletions

9
uppsrc/ide/Android.cpp Normal file
View file

@ -0,0 +1,9 @@
#include "ide.h"
String Ide::GetAndroidSdkPath()
{
VectorMap<String, String> bm = GetMethodVars(method);
if(bm.Get("BUILDER") == "ANDROID")
return bm.Get("SDK_PATH");
return String();
}

View file

@ -11,7 +11,6 @@ Index<String> AndroidBuilder::GetBuildersNames()
AndroidBuilder::AndroidBuilder()
{
androidSDK.SetPath(GetAndroidSDKPath());
}
String AndroidBuilder::GetTargetExt() const

View file

@ -140,6 +140,7 @@ One<Builder> MakeBuild::CreateBuilder(Host *host)
b->script = bm.Get("SCRIPT", "");
if(AndroidBuilder::GetBuildersNames().Find(builder) > -1) {
AndroidBuilder* ab = dynamic_cast<AndroidBuilder*>(b);
ab->androidSDK.SetPath((bm.Get("SDK_PATH", "")));
ab->androidNDK.SetPath((bm.Get("NDK_PATH", "")));
ab->jdk.SetPath((bm.Get("JDK_PATH", "")));

View file

@ -146,7 +146,7 @@ void Sentinel(Stream& s, const char *txt)
void Ide::Serialize(Stream& s)
{
int version = 7;
int version = 8;
Sentinel(s, "before 12341234");
s.Magic(0x12341234);
Sentinel(s, "after magic");
@ -244,8 +244,10 @@ void Ide::Serialize(Stream& s)
s % astyle_EmptyLineFill;
s % astyle_TabSpaceConversionMode;
s % astyle_TestBox;
if(version >= 6)
s % androidSDKPath;
if(version >= 6 && version < 8) {
String dummy;
s % dummy;
}
s % LinuxHostConsole;
editor.SerializeNavigator(s);
s % showtime;

View file

@ -201,7 +201,6 @@ String GetCurrentBuildMethod();
String GetCurrentMainPackage();
int GetHydraThreads();
String GetAndroidSDKPath();
String GetAnyFileName(const char *path);
String GetAnyFileTitle(const char *path);

View file

@ -192,7 +192,7 @@ void SelectAndroidDeviceDlg::LoadPhysicalDevices()
void Ide::ExecuteApk()
{
AndroidSDK sdk(androidSDKPath, true);
AndroidSDK sdk(GetAndroidSdkPath(), true);
if(!sdk.Validate())
return;
@ -213,8 +213,6 @@ void Ide::ExecuteApk()
if(!packageName.IsEmpty() && !activityName.IsEmpty())
host->Execute(adb.MakeLaunchOnDeviceCmd(packageName, activityName));
Cout() << "PID: " << adb.GetPid(packageName) << "\n";
}
void Ide::BuildAndDebug0(const String& srcfile)

View file

@ -81,6 +81,18 @@ AndroidBuilderSetup::AndroidBuilderSetup()
{
CtrlLayout(*this);
sdk_path <<= THISBACK(OnSdkPathChange);
sdkDownload.SetImage(IdeImg::DownloadBlack());
sdkDownload.Tip("Download");
sdkDownload <<= callback1(LaunchWebBrowser, AndroidSDK::GetDownloadUrl());
sdk_path.AddFrame(sdkDownload);
sdkBrowse.SetImage(CtrlImg::right_arrow());
sdkBrowse.Tip("Select directory");
sdkBrowse <<= THISBACK(OnSdkPathInsert);
sdk_path.AddFrame(sdkBrowse);
ndk_path <<= THISBACK(OnNdkPathChange);
ndkDownload.SetImage(IdeImg::DownloadBlack());
@ -106,6 +118,7 @@ AndroidBuilderSetup::AndroidBuilderSetup()
void AndroidBuilderSetup::InitSetupCtrlsMap(VectorMap<Id, Ctrl*>& map)
{
map.Add("SDK_PATH", &sdk_path);
map.Add("NDK_PATH", &ndk_path);
map.Add("JDK_PATH", &jdk_path);
map.Add("SDK_PLATFORM_VERSION", &sdk_platform_version);
@ -136,10 +149,7 @@ void AndroidBuilderSetup::New(const String& builder)
void AndroidBuilderSetup::OnLoad()
{
String sdkPath = GetAndroidSDKPath();
sdk_path.SetData(sdkPath);
OnSdkPathChange(sdkPath);
OnSdkPathChange();
OnNdkPathChange();
}
@ -150,6 +160,10 @@ void AndroidBuilderSetup::OnCtrlLoad(const String& ctrlKey, const String& value)
if(map.Find(ctrlKey) > -1) {
Ctrl* ctrl = map.Get(ctrlKey);
if(ctrl == &sdk_path) {
OnSdkPathChange0(value);
}
else
if(ctrl == &ndk_path) {
OnNdkPathChange0(value);
}
@ -164,10 +178,12 @@ void AndroidBuilderSetup::OnShow()
void AndroidBuilderSetup::OnSdkShow()
{
AndroidSDK sdk(GetAndroidSDKPath(), true);
AndroidSDK sdk(sdk_path.GetData(), true);
if(!sdk.Validate()) {
DisableSdkCtrls();
return;
}
EnableSdkCtrls();
if(sdk_platform_version.GetValue().IsNull())
sdk_platform_version.SetData(sdk.FindDefaultPlatform());
@ -175,13 +191,32 @@ void AndroidBuilderSetup::OnSdkShow()
sdk_build_tools_release.SetData(sdk.FindDefaultBuildToolsRelease());
}
void AndroidBuilderSetup::OnSdkPathChange(const String& sdkPath)
void AndroidBuilderSetup::OnSdkPathInsert()
{
String currentPath = sdk_path.GetData();
InsertPath(&sdk_path);
String newPath = sdk_path.GetData();
if(currentPath != newPath)
OnSdkPathChange();
}
void AndroidBuilderSetup::OnSdkPathChange()
{
OnSdkPathChange0(sdk_path.GetData());
OnSdkShow();
}
void AndroidBuilderSetup::OnSdkPathChange0(const String& sdkPath)
{
AndroidSDK sdk(sdkPath, true);
if(sdk.Validate()) {
LoadPlatforms(sdk);
LoadBuildTools(sdk);
}
else
ClearSdkCtrls();
}
void AndroidBuilderSetup::OnNdkShow()
@ -191,7 +226,6 @@ void AndroidBuilderSetup::OnNdkShow()
DisableNdkCtrls();
return;
}
EnableNdkCtrls();
}
@ -279,6 +313,23 @@ void AndroidBuilderSetup::LoadDropList(DropList& dropList,
}
}
void AndroidBuilderSetup::EnableSdkCtrls(bool enable)
{
sdk_platform_version.Enable(enable);
sdk_build_tools_release.Enable(enable);
}
void AndroidBuilderSetup::DisableSdkCtrls()
{
EnableSdkCtrls(false);
}
void AndroidBuilderSetup::ClearSdkCtrls()
{
sdk_platform_version.Clear();
sdk_build_tools_release.Clear();
}
void AndroidBuilderSetup::EnableNdkCtrls(bool enable)
{
ndk_blitz.Enable(enable);

View file

@ -55,6 +55,8 @@ class AndroidBuilderSetup : public WithBuildMethodsAndroidBuilderSetupLayout<Bui
typedef AndroidBuilderSetup CLASSNAME;
public:
FrameRight<Button> sdkBrowse;
FrameRight<Button> sdkDownload;
FrameRight<Button> ndkBrowse;
FrameRight<Button> ndkDownload;
FrameRight<Button> jdkBrowse;
@ -73,7 +75,9 @@ public:
private:
void OnSdkShow();
void OnSdkPathChange(const String& sdkPath);
void OnSdkPathInsert();
void OnSdkPathChange();
void OnSdkPathChange0(const String& sdkPath);
void OnNdkShow();
void OnNdkPathInsert();
void OnNdkPathChange();
@ -87,6 +91,10 @@ private:
void LoadDropList(DropList& dropList, const Vector<String>& values, const String& defaultKey = "");
private:
void EnableSdkCtrls(bool enable = true);
void DisableSdkCtrls();
void ClearSdkCtrls();
void EnableNdkCtrls(bool enable = true);
void DisableNdkCtrls();
void ClearNdkCtrls();

View file

@ -340,7 +340,6 @@ void Ide::SetupFormat() {
WithSetupEditorLayout<ParentCtrl> edt;
WithSetupIdeLayout<ParentCtrl> ide;
WithSetupAssistLayout<ParentCtrl> assist;
WithSetupMobilePlatformsLayout<ParentCtrl> mobile;
AStyleSetupDialog ast(this);
#ifdef PLATFORM_WIN32
ide.console_txt.Hide();
@ -380,7 +379,6 @@ void Ide::SetupFormat() {
dlg.Add(assist, "Assist");
dlg.Add(ide, "IDE");
dlg.Add(ast, "Code formatting");
dlg.Add(mobile, "Mobile platforms");
dlg.WhenClose = dlg.Acceptor(IDEXIT);
FontSelectManager ed, vf, con, f1, f2, tf;
ed.Set(fnt.face, fnt.height, fnt.bold, fnt.italic, fnt.naa);
@ -477,8 +475,6 @@ void Ide::SetupFormat() {
(ast.EmptyLineFill, astyle_EmptyLineFill)
(ast.TabSpaceConversionMode, astyle_TabSpaceConversionMode)
(ast.TestBox, astyle_TestBox)
(mobile.AndroidSDKPath, androidSDKPath)
;
hlt.hlstyle.AddColumn("Style");
hlt.hlstyle.AddColumn("Color").Ctrls(HlPusherFactory);
@ -506,19 +502,6 @@ void Ide::SetupFormat() {
ide.uscpath.AddFrame(uscBrowse);
ide.uscpath <<= LoadFile(GetHomeDirFile("usc.path"));
FrameRight<Button> androidSDKDownload;
androidSDKDownload.SetImage(IdeImg::DownloadBlack());
androidSDKDownload.Tip("Download");
androidSDKDownload <<= callback1(LaunchWebBrowser, AndroidSDK::GetDownloadUrl());
mobile.AndroidSDKPath.AddFrame(androidSDKDownload);
FrameRight<Button> androidSDKBrowse;
androidSDKBrowse.SetImage(CtrlImg::right_arrow());
androidSDKBrowse.Tip("Select directory");
androidSDKBrowse <<= callback1(InsertPath, &mobile.AndroidSDKPath);
mobile.AndroidSDKPath.AddFrame(androidSDKBrowse);
mobile.AndroidSDKPath <<= androidSDKPath;
for(;;) {
int c = dlg.Run();
Upp::SaveFile(GetHomeDirFile("usc.path"), ~ide.uscpath);

View file

@ -615,8 +615,6 @@ public:
bool astyle_TabSpaceConversionMode;
WString astyle_TestBox;
String androidSDKPath;
// Formats a string of code with a given formatter
WString FormatCodeString(WString const &Src, astyle::ASFormatter &Formatter);
@ -1127,7 +1125,9 @@ public:
void MacroCloseFile(EscEscape& e);
void MacroPackageFiles(EscEscape& e);
void MacroAllPackages(EscEscape& e);
String GetAndroidSdkPath();
typedef Ide CLASSNAME;
enum {

View file

@ -194,38 +194,37 @@ LAYOUT(BuildMethodsLayout, 812, 592)
END_LAYOUT
LAYOUT(BuildMethodsAndroidBuilderSetupLayout, 648, 500)
ITEM(LabelBox, dv___0, SetLabel(t_("Executable paths")).HSizePosZ(0, 0).TopPosZ(0, 124))
ITEM(LabelBox, dv___0, SetLabel(t_("Executable paths")).HSizePosZ(0, 0).TopPosZ(0, 96))
ITEM(StaticText, dv___1, SetText(t_("JDK path:")).LeftPosZ(8, 116).TopPosZ(20, 19))
ITEM(EditString, jdk_path, HSizePosZ(128, 8).TopPosZ(20, 19))
ITEM(StaticText, dv___3, SetText(t_("Android SDK path:")).LeftPosZ(8, 116).TopPosZ(44, 19))
ITEM(EditString, sdk_path, SetEditable(false).HSizePosZ(128, 8).TopPosZ(44, 19))
ITEM(StaticText, dv___5, SetText(t_("Info: use enviroment settings to edit above property (IDE -> Setup -> Enviorment -> Mobile platforms).")).SetFont(StdFont().Italic()).HSizePosZ(128, 8).TopPosZ(68, 19))
ITEM(StaticText, dv___6, SetText(t_("Android NDK path:")).LeftPosZ(8, 116).TopPosZ(92, 19))
ITEM(EditString, ndk_path, HSizePosZ(128, 8).TopPosZ(92, 19))
ITEM(LabelBox, dv___8, SetLabel(t_("Android SDK settings")).HSizePosZ(0, 0).TopPosZ(128, 52))
ITEM(StaticText, dv___9, SetText(t_("Platform version:")).LeftPosZ(8, 116).TopPosZ(148, 19))
ITEM(DropList, sdk_platform_version, LeftPosZ(128, 100).TopPosZ(148, 19))
ITEM(StaticText, dv___11, SetText(t_("Build tools version:")).LeftPosZ(236, 100).TopPosZ(148, 19))
ITEM(DropList, sdk_build_tools_release, LeftPosZ(340, 100).TopPosZ(148, 19))
ITEM(LabelBox, dv___13, SetLabel(t_("Android NDK settings")).HSizePosZ(0, 0).TopPosZ(188, 164))
ITEM(StaticText, dv___14, SetText(t_("BLITZ:")).LeftPosZ(8, 116).TopPosZ(204, 19))
ITEM(TextOption, ndk_blitz, SetLabel(t_("&Use BLITZ")).LeftPosZ(128, 112).TopPosZ(204, 20))
ITEM(StaticText, dv___16, SetText(t_("Target architectures:")).LeftPosZ(8, 116).TopPosZ(228, 19))
ITEM(TextOption, ndk_arch_armeabi, SetLabel(t_("armeabi")).LeftPosZ(128, 68).TopPosZ(228, 20))
ITEM(TextOption, ndk_arch_armeabi_v7a, SetLabel(t_("armeabi-v7a")).LeftPosZ(204, 84).TopPosZ(228, 20))
ITEM(TextOption, ndk_arch_arm64_v8a, SetLabel(t_("arm64-v8a")).LeftPosZ(296, 76).TopPosZ(228, 20))
ITEM(TextOption, ndk_arch_x86, SetLabel(t_("x86")).LeftPosZ(376, 48).TopPosZ(228, 20))
ITEM(TextOption, ndk_arch_x86_64, SetLabel(t_("x86-64")).LeftPosZ(432, 56).TopPosZ(228, 20))
ITEM(TextOption, ndk_arch_mips, SetLabel(t_("mips")).LeftPosZ(492, 56).TopPosZ(228, 20))
ITEM(TextOption, ndk_arch_mips64, SetLabel(t_("mips64")).LeftPosZ(552, 56).TopPosZ(228, 20))
ITEM(StaticText, dv___24, SetText(t_("Toolchain:")).LeftPosZ(8, 116).TopPosZ(252, 19))
ITEM(DropList, ndk_toolchain, LeftPosZ(128, 136).TopPosZ(252, 19))
ITEM(StaticText, dv___26, SetText(t_("C++ runtime:")).LeftPosZ(8, 116).TopPosZ(276, 19))
ITEM(DropList, ndk_cpp_runtime, LeftPosZ(128, 136).TopPosZ(276, 19))
ITEM(StaticText, dv___28, SetText(t_("Common C++ options:")).LeftPosZ(8, 116).TopPosZ(300, 19))
ITEM(EditString, ndk_common_cpp_options, HSizePosZ(128, 8).TopPosZ(300, 19))
ITEM(StaticText, dv___30, SetText(t_("Common C options:")).LeftPosZ(8, 116).TopPosZ(324, 19))
ITEM(EditString, ndk_common_c_options, HSizePosZ(128, 8).TopPosZ(324, 19))
ITEM(EditString, sdk_path, HSizePosZ(128, 8).TopPosZ(44, 19))
ITEM(StaticText, dv___5, SetText(t_("Android NDK path:")).LeftPosZ(8, 116).TopPosZ(68, 19))
ITEM(EditString, ndk_path, HSizePosZ(128, 8).TopPosZ(68, 19))
ITEM(LabelBox, dv___7, SetLabel(t_("Android SDK settings")).HSizePosZ(0, 0).TopPosZ(104, 52))
ITEM(StaticText, dv___8, SetText(t_("Platform version:")).LeftPosZ(8, 116).TopPosZ(124, 19))
ITEM(DropList, sdk_platform_version, LeftPosZ(128, 100).TopPosZ(124, 19))
ITEM(StaticText, dv___10, SetText(t_("Build tools version:")).LeftPosZ(236, 100).TopPosZ(124, 19))
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(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))
ITEM(TextOption, ndk_arch_arm64_v8a, SetLabel(t_("arm64-v8a")).LeftPosZ(296, 76).TopPosZ(204, 20))
ITEM(TextOption, ndk_arch_x86, SetLabel(t_("x86")).LeftPosZ(376, 48).TopPosZ(204, 20))
ITEM(TextOption, ndk_arch_x86_64, SetLabel(t_("x86-64")).LeftPosZ(432, 56).TopPosZ(204, 20))
ITEM(TextOption, ndk_arch_mips, SetLabel(t_("mips")).LeftPosZ(492, 56).TopPosZ(204, 20))
ITEM(TextOption, ndk_arch_mips64, SetLabel(t_("mips64")).LeftPosZ(552, 56).TopPosZ(204, 20))
ITEM(StaticText, dv___23, SetText(t_("Toolchain:")).LeftPosZ(8, 116).TopPosZ(228, 19))
ITEM(DropList, ndk_toolchain, LeftPosZ(128, 136).TopPosZ(228, 19))
ITEM(StaticText, dv___25, SetText(t_("C++ runtime:")).LeftPosZ(8, 116).TopPosZ(252, 19))
ITEM(DropList, ndk_cpp_runtime, LeftPosZ(128, 136).TopPosZ(252, 19))
ITEM(StaticText, dv___27, SetText(t_("Common C++ options:")).LeftPosZ(8, 116).TopPosZ(276, 19))
ITEM(EditString, ndk_common_cpp_options, HSizePosZ(128, 8).TopPosZ(276, 19))
ITEM(StaticText, dv___29, SetText(t_("Common C options:")).LeftPosZ(8, 116).TopPosZ(300, 19))
ITEM(EditString, ndk_common_c_options, HSizePosZ(128, 8).TopPosZ(300, 19))
END_LAYOUT
LAYOUT(BuildMethodsDefaultBuilderSetupLayout, 648, 500)
@ -643,12 +642,6 @@ LAYOUT(SetupAstyleLayout, 544, 288)
ITEM(Button, Defaults, SetLabel(t_("Upp defaults")).LeftPosZ(208, 72).TopPosZ(260, 23))
END_LAYOUT
LAYOUT(SetupMobilePlatformsLayout, 544, 288)
ITEM(LabelBox, dv___0, SetLabel(t_("Android")).LeftPosZ(4, 536).TopPosZ(4, 44))
ITEM(StaticText, dv___1, SetText(t_("Android SDK path:")).LeftPosZ(12, 120).TopPosZ(20, 19))
ITEM(EditString, AndroidSDKPath, HSizePosZ(140, 12).TopPosZ(20, 19))
END_LAYOUT
LAYOUT(GotoLayout, 796, 524)
ITEM(Label, dv___0, SetLabel(t_("Go to")).LeftPosZ(188, 40).TopPosZ(12, 19))
ITEM(EditString, target, HSizePosZ(228, 296).TopPosZ(12, 19))

View file

@ -63,6 +63,7 @@ file
idetool.cpp,
idebar.cpp,
idewin.cpp,
Android.cpp,
About.cpp,
Help.cpp,
Macro.cpp,

View file

@ -368,7 +368,7 @@ void Ide::Setup(Bar& menu)
void Ide::SetupMobilePlatforms(Bar& menu)
{
AndroidSDK androidSDK(androidSDKPath);
AndroidSDK androidSDK(GetAndroidSdkPath());
if(androidSDK.Validate()) {
menu.Separator();

View file

@ -213,12 +213,6 @@ int GetHydraThreads()
return ide ? ide->hydra1_threads : CPU_Cores();
}
String GetAndroidSDKPath()
{
Ide *ide = dynamic_cast<Ide *>(TheIde());
return ide ? ide->androidSDKPath : String();
}
void Ide::IdeEndDebug()
{
console.Kill();
@ -558,8 +552,6 @@ Ide::Ide()
astyle_TabSpaceConversionMode = false;
astyle_TestBox = "#include <stdio.h>\n#ifndef __abcd_h\n#include <abcd.h>\n#endif\n\nvoid test(int a, int b)\n{\n /* this is a switch */\n switch(a)\n\n {\n case 1:\n b = 2;\n break;\n case 2:\n b = 4;\n break;\n default:\n break;\n }\n\n /* this are more statements on one line */\n a = 2*a;b=-5;a=2*(b+2)*(a+3)/4;\n\n /* single line blocks */\n {int z;z = 2*a+b;}\n\n /* loop */\n for(int i = 0;i< 10;i++) { a = b+2*i;}\n\n}\n";
androidSDKPath = "";
console.WhenSelect = THISBACK(FindError);
console.SetSlots(hydra1_threads);