One<Builder> MakeBuild::CreateBuilder(Host *host) { SetupDefaultMethod(); VectorMap<String, String> bm = GetMethodVars(method); String builder = bm.Get("BUILDER", "GCC"); int q = BuilderMap().Find(builder); if(q < 0) { PutConsole("Invalid builder " + builder); ConsoleShow(); return NULL; } One<Builder> b = (*BuilderMap().Get(builder))(); b->host = host; b->compiler = bm.Get("COMPILER", ""); b->include = SplitDirs(GetVar("UPP") + ';' + bm.Get("INCLUDE", "") + ';' + add_includes); const Workspace& wspc = GetIdeWorkspace(); for(int i = 0; i < wspc.GetCount(); i++) { const Package& pkg = wspc.GetPackage(i); for(int j = 0; j < pkg.include.GetCount(); j++) b->include.Add(SourcePath(wspc[i], pkg.include[j].text)); } b->libpath = SplitDirs(bm.Get("LIB", "")); b->debug_options = bm.Get("DEBUG_OPTIONS", ""); b->release_options = bm.Get("RELEASE_OPTIONS", ""); b->release_size_options = bm.Get("RELEASE_SIZE_OPTIONS", ""); b->debug_link = bm.Get("DEBUG_LINK", ""); b->release_link = bm.Get("RELEASE_LINK", ""); b->script = bm.Get("SCRIPT", ""); b->main_conf = !!main_conf.GetCount(); return b; }
void Ide::SetupOutputMode() { String prevmainconfig = mainconfigparam; SetupDefaultMethod(); OutMode m(*this); m.Load(); if(m.Execute() != IDOK) { mainconfigparam = prevmainconfig; return; } m.Save(); if(prevmainconfig != mainconfigparam) SetMainConfigList(); SyncBuildMode(); SetBar(); }
void Ide::SyncBuildMode() { SetupDefaultMethod(); Vector<String> bmlist; for(FindFile ff(ConfigFile("*.bm")); ff; ff.Next()) bmlist.Add(GetFileTitle(ff.GetName())); Sort(bmlist); methodlist.Clear(); Append(methodlist, bmlist); String h = method + ' '; switch(targetmode) { case 1: h << "Optimal"; break; case 2: h << "Speed"; break; case 3: h << "Size"; break; default: h << "Debug"; } buildmode <<= h; }
void Ide::BeginBuilding(bool sync_files, bool clear_console) { SetupDefaultMethod(); HdependTimeDirty(); Renumber(); StopDebug(); ShowConsole(); SaveFile(); SaveWorkspace(); SetIdeState(BUILDING); console.Kill(); console.ClearError(); error_cache.Clear(); error.Clear(); SyncErrorsMessage(); error_count = 0; warning_count = 0; if(clear_console) console.Clear(); build_time = GetTickCount(); CreateHost(sync_files); cmdout.Clear(); }
One<Host> MakeBuild::CreateHost(bool sync_files) { SetupDefaultMethod(); VectorMap<String, String> bm = GetMethodVars(method); One<Host> outhost; { One<LocalHost> host = new LocalHost; VectorMap<String, String> env(Environment(), 1); host->exedirs = SplitDirs(bm.Get("PATH", "") + ';' + env.Get("PATH", "")); env.GetAdd("PATH") = Join(host->exedirs, ";"); env.GetAdd("UPP_MAIN__") = GetFileDirectory(PackagePath(GetMain())); env.GetAdd("UPP_ASSEMBLY__") = GetVar("UPP"); for(int i = 0; i < env.GetCount(); i++) { LDUMP(env.GetKey(i)); LDUMP(env[i]); host->environment << env.GetKey(i) << '=' << env[i] << '\0'; } host->environment.Cat(0); host->cmdout = &cmdout; outhost = -host; } return outhost; }