diff --git a/uppsrc/CodeEditor/CodeEditor.upp b/uppsrc/CodeEditor/CodeEditor.upp index c9861e2c3..da07287c2 100644 --- a/uppsrc/CodeEditor/CodeEditor.upp +++ b/uppsrc/CodeEditor/CodeEditor.upp @@ -7,7 +7,7 @@ uses plugin/pcre; file - CodeEditor.h, + CodeEditor.h options PCH, Syntax readonly separator, Syntax.h, hl_color.i, diff --git a/uppsrc/Core/Core.upp b/uppsrc/Core/Core.upp index 970a9a0c3..32bc65a6f 100644 --- a/uppsrc/Core/Core.upp +++ b/uppsrc/Core/Core.upp @@ -32,11 +32,12 @@ link(SOLARIS) "-Wl,-R -Wl,/usr/local/lib"; link(GCC POSIX STACKTRACE) -rdynamic; file - Core.h, + Core.h options PCH, config.h, Defs.h, - Cpu.cpp optimize_speed, + Cpu.cpp optimize_speed options NOPCH, Mt.h, + Core.upp, Mt.cpp, OL_Set.cpp, Global.h, diff --git a/uppsrc/CppBase/CppBase.upp b/uppsrc/CppBase/CppBase.upp index f9539e87b..d544adf16 100644 --- a/uppsrc/CppBase/CppBase.upp +++ b/uppsrc/CppBase/CppBase.upp @@ -6,7 +6,7 @@ uses Core; file - CppBase.h, + CppBase.h options PCH, keyword.i, Pre.cpp, cpplex.cpp, diff --git a/uppsrc/CtrlCore/CtrlCore.upp b/uppsrc/CtrlCore/CtrlCore.upp index d315e50eb..5b4a74c24 100644 --- a/uppsrc/CtrlCore/CtrlCore.upp +++ b/uppsrc/CtrlCore/CtrlCore.upp @@ -35,7 +35,7 @@ library(DRAGONFLY) "Xext Xinerama"; file Core readonly separator, - CtrlCore.h, + CtrlCore.h options PCH, MKeys.h, stdids.h, SystemDraw.cpp, diff --git a/uppsrc/CtrlLib/CtrlLib.upp b/uppsrc/CtrlLib/CtrlLib.upp index d17134919..5531482b1 100644 --- a/uppsrc/CtrlLib/CtrlLib.upp +++ b/uppsrc/CtrlLib/CtrlLib.upp @@ -9,7 +9,7 @@ uses uses(POSIX | LINUX | FREEBSD) PdfDraw; file - CtrlLib.h, + CtrlLib.h options PCH, CtrlLib readonly separator, LabelBase.h, LabelBase.cpp, diff --git a/uppsrc/Draw/Draw.upp b/uppsrc/Draw/Draw.upp index 42f5616e1..dafd23ef6 100644 --- a/uppsrc/Draw/Draw.upp +++ b/uppsrc/Draw/Draw.upp @@ -21,7 +21,7 @@ library(OSX11) "fontconfig freetype expat"; library(FREEBSD) xcb; file - Draw.h, + Draw.h options PCH, FontInt.h, Font.cpp, FontCR.cpp, diff --git a/uppsrc/Esc/Esc.upp b/uppsrc/Esc/Esc.upp index e97edf04a..045b19166 100644 --- a/uppsrc/Esc/Esc.upp +++ b/uppsrc/Esc/Esc.upp @@ -6,7 +6,7 @@ uses Core; file - Esc.h, + Esc.h options PCH, EscValue.cpp, EscArray.cpp, EscMap.cpp, diff --git a/uppsrc/IconDes/IconDes.upp b/uppsrc/IconDes/IconDes.upp index 46ed1a0e1..0920f0886 100644 --- a/uppsrc/IconDes/IconDes.upp +++ b/uppsrc/IconDes/IconDes.upp @@ -8,7 +8,7 @@ uses RichEdit; file - IconDes.h, + IconDes.h options PCH, IconDes.key, IconDraw.cpp, AlphaCtrl.cpp, diff --git a/uppsrc/Painter/Painter.upp b/uppsrc/Painter/Painter.upp index 4285d4ad7..79b2b4bf6 100644 --- a/uppsrc/Painter/Painter.upp +++ b/uppsrc/Painter/Painter.upp @@ -4,7 +4,7 @@ uses Draw; file - Painter.h, + Painter.h options PCH, Painter.hpp, Painter.cpp, SvgArc.cpp, diff --git a/uppsrc/PdfDraw/PdfDraw.upp b/uppsrc/PdfDraw/PdfDraw.upp index 3cfaca08f..df51f07bd 100644 --- a/uppsrc/PdfDraw/PdfDraw.upp +++ b/uppsrc/PdfDraw/PdfDraw.upp @@ -4,7 +4,7 @@ uses Draw; file - PdfDraw.h, + PdfDraw.h options PCH, TTFStream.cpp, TTFStruct.cpp, TTFReader.cpp, diff --git a/uppsrc/RichEdit/RichEdit.upp b/uppsrc/RichEdit/RichEdit.upp index bc8d2e558..19f7c3137 100644 --- a/uppsrc/RichEdit/RichEdit.upp +++ b/uppsrc/RichEdit/RichEdit.upp @@ -4,7 +4,7 @@ uses CtrlLib; file - RichEdit.h, + RichEdit.h options PCH, Ruler.cpp, UnitEdit.cpp, Editor.cpp, diff --git a/uppsrc/RichText/RichText.upp b/uppsrc/RichText/RichText.upp index ec06aedf2..081e58fdf 100644 --- a/uppsrc/RichText/RichText.upp +++ b/uppsrc/RichText/RichText.upp @@ -5,7 +5,7 @@ uses Draw; file - RichText.h, + RichText.h options PCH, Object.cpp, RichImage.icpp, Para.h, diff --git a/uppsrc/TextDiffCtrl/TextDiffCtrl.upp b/uppsrc/TextDiffCtrl/TextDiffCtrl.upp index a107009f7..b420fb1f1 100644 --- a/uppsrc/TextDiffCtrl/TextDiffCtrl.upp +++ b/uppsrc/TextDiffCtrl/TextDiffCtrl.upp @@ -2,7 +2,7 @@ uses CtrlLib; file - TextDiffCtrl.h, + TextDiffCtrl.h options PCH, TextDiff.cpp, TextCtrl.cpp, DiffCtrl.cpp, diff --git a/uppsrc/ide/AutoSetup.cpp b/uppsrc/ide/AutoSetup.cpp index 052f78aaa..11c27e372 100644 --- a/uppsrc/ide/AutoSetup.cpp +++ b/uppsrc/ide/AutoSetup.cpp @@ -312,6 +312,7 @@ void AutoSetup() "PATH = " + AsCString(AppendFileName(mingwdir, "bin") + exe) + ";\n" "INCLUDE = " + AsCString(AppendFileName(mingwdir, "include") + include) + ";\n" "LIB = " + AsCString(AppendFileName(mingwdir, "lib") + lib + mlib) + ";\n" + "ALLOW_PRECOMPILED_HEADERS = \"1\";\n" ); SaveFile(AppendFileName(dir, "default_method"), m); } @@ -345,6 +346,7 @@ void AutoSetup() "LIB = " + AsCString(AppendFileName(owcdir, "lib386") + ';' + AppendFileName(owcdir, "lib386\\nt") + lib + mlib) + ";\n" + "ALLOW_PRECOMPILED_HEADERS = \"1\";\n" ); SaveFile(AppendFileName(dir, "default_method"), m); } @@ -397,6 +399,7 @@ void AutoSetup() AppendFileName(sdk, "Lib\\winv6.3\\um\\x64") + lib ) + ";\n" + "ALLOW_PRECOMPILED_HEADERS = \"1\";\n" ); SaveFile(AppendFileName(dir, "default_method"), m); } @@ -441,6 +444,7 @@ void AutoSetup() AppendFileName(sdk, "Lib\\winv6.3\\um\\x86") + lib ) + ";\n" + "ALLOW_PRECOMPILED_HEADERS = \"1\";\n" ); SaveFile(AppendFileName(dir, "default_method"), m); } @@ -489,6 +493,7 @@ void AutoSetup() AppendFileName(sdk, "Lib\\win8\\um\\x64") + lib ) + ";\n" + "ALLOW_PRECOMPILED_HEADERS = \"1\";\n" ); SaveFile(AppendFileName(dir, "default_method"), m); } @@ -533,6 +538,7 @@ void AutoSetup() AppendFileName(sdk, "Lib\\win8\\um\\x86") + lib ) + ";\n" + "ALLOW_PRECOMPILED_HEADERS = \"1\";\n" ); SaveFile(AppendFileName(dir, "default_method"), m); } @@ -579,6 +585,7 @@ void AutoSetup() AppendFileName(sdk, "Lib\\x64") + lib ) + ";\n" + "ALLOW_PRECOMPILED_HEADERS = \"1\";\n" ); SaveFile(AppendFileName(dir, "default_method"), m); } @@ -621,6 +628,7 @@ void AutoSetup() AppendFileName(sdk, "Lib") + lib ) + ";\n" + "ALLOW_PRECOMPILED_HEADERS = \"1\";\n" ); SaveFile(AppendFileName(dir, "default_method"), m); } @@ -667,6 +675,7 @@ void AutoSetup() AppendFileName(sdk, "Lib\\x64") + lib ) + ";\n" + "ALLOW_PRECOMPILED_HEADERS = \"1\";\n" ); SaveFile(AppendFileName(dir, "default_method"), m); } @@ -709,6 +718,7 @@ void AutoSetup() AppendFileName(sdk, "Lib") + lib ) + ";\n" + "ALLOW_PRECOMPILED_HEADERS = \"1\";\n" ); SaveFile(AppendFileName(dir, "default_method"), m); } diff --git a/uppsrc/ide/Browser/Browser.upp b/uppsrc/ide/Browser/Browser.upp index 75c73b0df..39af5c19b 100644 --- a/uppsrc/ide/Browser/Browser.upp +++ b/uppsrc/ide/Browser/Browser.upp @@ -7,7 +7,7 @@ uses RichEdit; file - Browser.h, + Browser.h options PCH, Browser readonly separator, Lay.cpp, Iml.cpp, diff --git a/uppsrc/ide/Builders/Build.cpp b/uppsrc/ide/Builders/Build.cpp index 6eb042343..03a208903 100644 --- a/uppsrc/ide/Builders/Build.cpp +++ b/uppsrc/ide/Builders/Build.cpp @@ -224,6 +224,7 @@ struct OneFileHost : Host { virtual bool Run(const char *cmdline, Stream& out, int slot, String key, int blitz_count) { return host->Run(cmdline, out, slot, key, blitz_count); } virtual bool Wait() { return host->Wait(); } virtual bool Wait(int slot) { return host->Wait(slot); } + virtual void OnFinish(Callback cb) { return host->OnFinish(cb); } virtual One StartProcess(const char *c) { return host->StartProcess(c); } virtual void Launch(const char *cmdline, bool) { host->Launch(cmdline); } virtual void AddFlags(Index& cfg) { host->AddFlags(cfg); } diff --git a/uppsrc/ide/Builders/Builders.h b/uppsrc/ide/Builders/Builders.h index a6bc43d98..1b25c301b 100644 --- a/uppsrc/ide/Builders/Builders.h +++ b/uppsrc/ide/Builders/Builders.h @@ -50,6 +50,7 @@ struct CppBuilder : Builder { bool Run(const char *cmdline, Stream& out, int slot, String key, int blitz_count); bool Wait(); bool Wait(int slot); + void OnFinish(Callback cb); bool HasFlag(const char *f) const { return config.Find(f) >= 0; } bool Cp(const String& cmd, const String& package, bool& error); bool Cd(const String& cmd); @@ -77,7 +78,8 @@ struct CppBuilder : Builder { Blitz BlitzStep(Vector& sfile, Vector& soptions, Vector& obj, Vector& immfile, - const char *objext, Vector& optimize); + const char *objext, Vector& optimize, + const Index& noblitz); virtual void AddMakeFile(MakeFile& makefile, String package, const Vector& all_uses, const Vector& all_libraries, @@ -127,7 +129,7 @@ struct MscBuilder : CppBuilder { String CmdLine(const String& package, const Package& pkg); String MachineName() const; String LinkerName() const; - String PdbPch(String package, int slot, bool do_pch) const; + String Pdb(String package, int slot, bool separate_pdb) const; bool HasAnyDebug() const; void BinObjConsole(String c) { PutConsole(c); } bool IsMsc89() const; diff --git a/uppsrc/ide/Builders/Builders.upp b/uppsrc/ide/Builders/Builders.upp index 40d637c13..82626bdfa 100644 --- a/uppsrc/ide/Builders/Builders.upp +++ b/uppsrc/ide/Builders/Builders.upp @@ -6,7 +6,7 @@ uses ide\Core; file - Builders.h, + Builders.h options PCH, CppBuilder.cpp, MakeFile.cpp, GccBuilder.icpp, diff --git a/uppsrc/ide/Builders/CppBuilder.cpp b/uppsrc/ide/Builders/CppBuilder.cpp index ab8af6f07..7ae90c7f3 100644 --- a/uppsrc/ide/Builders/CppBuilder.cpp +++ b/uppsrc/ide/Builders/CppBuilder.cpp @@ -188,6 +188,11 @@ bool CppBuilder::Wait(int slot) return host->Wait(slot); } +void CppBuilder::OnFinish(Callback cb) +{ + host->OnFinish(cb); +} + void CppBuilder::ChDir(const String& path) { host->ChDir(path); @@ -386,7 +391,8 @@ Time BlitzBaseTime() Blitz CppBuilder::BlitzStep(Vector& sfile, Vector& soptions, Vector& obj, Vector& immfile, - const char *objext, Vector& optimize) + const char *objext, Vector& optimize, + const Index& noblitz) { Blitz b; Vector excluded; @@ -406,7 +412,8 @@ Blitz CppBuilder::BlitzStep(Vector& sfile, Vector& soptions, Time fntime = GetFileTime(fn); if((ext == ".cpp" || ext == ".cc" || ext == ".cxx") && HdependBlitzApproved(fn) && IsNull(soptions[i]) && !optimize[i] - && fntime < BlitzBaseTime()) { + && fntime < BlitzBaseTime() + && noblitz.Find(fn) < 0) { if(HdependFileTime(fn) > blitztime) b.build = true; blitz << "\r\n" diff --git a/uppsrc/ide/Builders/GccBuilder.icpp b/uppsrc/ide/Builders/GccBuilder.icpp index 1e4337d25..76e5b59e7 100644 --- a/uppsrc/ide/Builders/GccBuilder.icpp +++ b/uppsrc/ide/Builders/GccBuilder.icpp @@ -99,6 +99,7 @@ bool GccBuilder::BuildPackage(const String& package, Vector& linkfile, V Vector soptions, isoptions; Vector optimize, ioptimize; bool error = false; + Index nopch, noblitz; for(i = 0; i < pkg.GetCount(); i++) { if(!IdeIsBuilding()) @@ -135,7 +136,7 @@ bool GccBuilder::BuildPackage(const String& package, Vector& linkfile, V } if(HasFlag("BLITZ")) { - Blitz b = BlitzStep(sfile, soptions, obj, immfile, ".o", optimize); + Blitz b = BlitzStep(sfile, soptions, obj, immfile, ".o", optimize, noblitz); if(b.build) { PutConsole("BLITZ:" + b.info); int slot = AllocSlot(); diff --git a/uppsrc/ide/Builders/MscBuilder.icpp b/uppsrc/ide/Builders/MscBuilder.icpp index caa689858..2174aa554 100644 --- a/uppsrc/ide/Builders/MscBuilder.icpp +++ b/uppsrc/ide/Builders/MscBuilder.icpp @@ -159,15 +159,18 @@ bool MscBuilder::HasAnyDebug() const return HasFlag("DEBUG") || HasFlag("DEBUG_MINIMAL") || HasFlag("DEBUG_FULL"); } -String MscBuilder::PdbPch(String package, int slot, bool do_pch) const +String MscBuilder::Pdb(String package, int slot, bool separate_pdb) const { - String pkg_slot = NFormat("%s-%d", GetAnyFileName(package), slot + 1); - String pdb = GetHostPathQ(CatAnyPath(outdir, pkg_slot + ".pdb")); - String cc; - cc << " -Gy -Fd" << pdb << ' '; - if(do_pch && !IsMsc89()) // MSC8/9 does not support automatic precompiled headers... - cc << "-YX -Fp" << GetHostPathQ(CatAnyPath(outdir, pkg_slot + ".pch")) << ' '; - return cc; + String pdb_name = GetAnyFileName(package); + if(separate_pdb) + pdb_name << '-' << (slot + 1); + return " -Gy -Fd" + GetHostPathQ(CatAnyPath(outdir, pdb_name + ".pdb")); +} + +void DeletePCHFile(const String& pch_file) +{ + DeleteFile(pch_file); + PutVerbose("Deleting PCH: " + pch_file); } bool MscBuilder::BuildPackage(const String& package, Vector& linkfile, Vector& immfile, @@ -239,6 +242,7 @@ bool MscBuilder::BuildPackage(const String& package, Vector& linkfile, V String pch; +/* if(allow_pch && pkg.GetCount() && IsMsc86()) { String hdr_path = SourcePath(package, pkg[0]); if(IsCHeaderFile(hdr_path) && HdependBlitzApproved(hdr_path)) { @@ -268,6 +272,13 @@ bool MscBuilder::BuildPackage(const String& package, Vector& linkfile, V << " -Fp" << GetHostPathQ(pchfile); } } +*/ + + String pch_header; + + Index nopch, noblitz; + + bool blitz = HasFlag("BLITZ"); for(i = 0; i < pkg.GetCount(); i++) { if(!IdeIsBuilding()) @@ -277,19 +288,20 @@ bool MscBuilder::BuildPackage(const String& package, Vector& linkfile, V Vector srcfile = CustomStep(pkg[i], package, error); if(srcfile.GetCount() == 0) error = true; + bool speed = release && pkg[i].optimize_speed && opt == R_OPTIMAL; for(int j = 0; j < srcfile.GetCount(); j++) { String fn = srcfile[j]; String ext = ToLower(GetFileExt(fn)); if(ext == ".c" || ext == ".cpp" || ext == ".cc" || ext == ".cxx" || ext == ".rc" || ext == ".brc") { sfile.Add(fn); soptions.Add(gop); - optimize.Add(release && pkg[i].optimize_speed && opt == R_OPTIMAL); + optimize.Add(speed); } else if(ext == ".icpp") { isfile.Add(fn); isoptions.Add(gop); - ioptimize.Add(release && pkg[i].optimize_speed && opt == R_OPTIMAL); + ioptimize.Add(speed); } else if(ext == ".obj") @@ -297,21 +309,73 @@ bool MscBuilder::BuildPackage(const String& package, Vector& linkfile, V else if(ext == ".lib") linkfile.Add(fn); + else + if(findarg(ext, ".h", ".hpp", ".hh", ".hxx") >= 0 && pkg[i].pch && allow_pch && IsMsc89() && release && !HasAnyDebug() && !blitz) { + if(pch_header.GetCount()) + PutConsole(GetFileName(fn) + ": multiple PCH is not allowed. Check your package configuration"); + else + pch_header = fn; + } + if(pkg[i].nopch) { + nopch.Add(fn); + if(allow_pch && release) + noblitz.Add(fn); + } + if(pkg[i].noblitz) + noblitz.Add(fn); } } } + + int recompile = 0; + Blitz b; + if(blitz) { + b = BlitzStep(sfile, soptions, obj, immfile, ".obj", optimize, noblitz); + recompile = b.build; + } - if(HasFlag("BLITZ")) { - Blitz b = BlitzStep(sfile, soptions, obj, immfile, ".obj", optimize); - if(b.build) { - PutConsole("BLITZ:" + b.info); - int slot = AllocSlot(); - if(slot < 0 || - !Run(Join(cc, cpp_options) + PdbPch(package, slot, false) - + " -Tp " + GetHostPathQ(b.path) + " -Fo" + GetHostPathQ(b.object), - slot, GetHostPath(b.object), b.count)) + for(i = 0; i < sfile.GetCount(); i++) { + String fn = sfile[i]; + String ext = ToLower(GetFileExt(fn)); + if(findarg(ext, ".rc", ".brc") < 0 && HdependFileTime(sfile[i]) > GetFileTime(CatAnyPath(outdir, GetFileTitle(fn) + ".obj"))) + recompile++; + } + + String pch_use; + String pch_file; + + if(recompile > 1 && pch_header.GetCount()) { + String pch_obj = CatAnyPath(outdir, GetFileTitle(pch_header) + "$pch.obj"); + pch_file = CatAnyPath(outdir, GetFileTitle(pch_header) + ".pch"); + String pch_common = GetHostPathQ(pch_header) + " -Fp" + GetHostPathQ(pch_file) + " -FI" + GetHostPathQ(pch_header); + + if(blitz) // enable MK__s macros + pch_common.Cat(" -DBLITZ_INDEX__=FPCH"); + + if(HdependFileTime(pch_header) > GetFileTime(pch_obj)) { // check if PCH is up-to-date + int pch_slot = AllocSlot(); + StringBuffer sb; + sb << Join(cc, cpp_options) << Pdb(package, pch_slot, false) << " -Yc" << pch_common + << " -Tp " << GetHostPathQ(pch_header) << " -Fo" + GetHostPathQ(pch_obj); + PutConsole("PCH: " + GetFileName(pch_header)); + if(pch_slot < 0 || !Run(~sb, pch_slot, GetHostPath(pch_obj), 1)) error = true; + Wait(); } + pch_use = " -Yu" + pch_common; + obj.Add(pch_obj); + } + + if(blitz && b.build) { + PutConsole("BLITZ:" + b.info); + int slot = AllocSlot(); + String c = Join(cc, cpp_options); + if(HasAnyDebug()) + c << Pdb(package, slot, false); + if(slot < 0 || + !Run(c + " -Tp " + GetHostPathQ(b.path) + " -Fo" + GetHostPathQ(b.object) + pch_use, + slot, GetHostPath(b.object), b.count)) + error = true; } int first_ifile = sfile.GetCount(); @@ -321,9 +385,6 @@ bool MscBuilder::BuildPackage(const String& package, Vector& linkfile, V int ccount = 0; -// if(sContainsPchOptions(cc)) -// pch = Null; - for(i = 0; i < sfile.GetCount(); i++) { if(!IdeIsBuilding()) return false; @@ -357,8 +418,8 @@ bool MscBuilder::BuildPackage(const String& package, Vector& linkfile, V SaveFile(tmpfile, fo); int slot = AllocSlot(); StringBuffer cmdline; - cmdline << cc << PdbPch(package, slot, false) - << " -Tc " << GetHostPathQ(tmpfile) << " -Fo" << GetHostPathQ(objfile); + cmdline << cc << Pdb(package, slot, false) + << " -Tc " << GetHostPathQ(tmpfile) << " -Fo" << GetHostPathQ(objfile); if(slot < 0 || !Run(String(cmdline), slot, GetHostPath(objfile), 1)) throw Exc(NFormat("Error compiling binary object '%s'.", objfile)); } @@ -372,9 +433,13 @@ bool MscBuilder::BuildPackage(const String& package, Vector& linkfile, V if(optimize[i]) c = cc_speed; int slot = AllocSlot(); - if(slot < 0 || !Run(c + PdbPch(package, slot, !sContainsPchOptions(cc) && !sContainsPchOptions(soptions[i])) - + " " + soptions[i] + (ext == ".c" ? Join(" -Tc", c_options) : Join(" -Tp", cpp_options)) + ' ' - + GetHostPathQ(fn) + " -Fo" + GetHostPathQ(objfile) + pch, slot, GetHostPath(objfile), 1)) + if(HasAnyDebug()) + c << Pdb(package, slot, !sContainsPchOptions(cc) && !sContainsPchOptions(soptions[i])); + c << " " + soptions[i] + (ext == ".c" ? Join(" -Tc", c_options) : Join(" -Tp", cpp_options)) + ' ' + + GetHostPathQ(fn) + " -Fo" + GetHostPathQ(objfile); + if(nopch.Find(fn) < 0) + c << pch_use; + if(slot < 0 || !Run(c, slot, GetHostPath(objfile), 1)) execerr = true; } if(execerr) @@ -409,6 +474,9 @@ bool MscBuilder::BuildPackage(const String& package, Vector& linkfile, V linkfile.Add(libfile); } linkoptions << ' ' << Gather(pkg.link, config.GetKeys()); + + if(pch_file.GetCount()) + OnFinish(callback1(DeletePCHFile, pch_file)); int linktime = GetTickCount(); if(!HasFlag("MAIN")) { diff --git a/uppsrc/ide/Builders/OwcBuilder.icpp b/uppsrc/ide/Builders/OwcBuilder.icpp index 4d9521db9..221c8c374 100644 --- a/uppsrc/ide/Builders/OwcBuilder.icpp +++ b/uppsrc/ide/Builders/OwcBuilder.icpp @@ -82,7 +82,7 @@ bool OwcBuilder::BuildPackage(const String& package, Vector& linkfile, V } if (HasFlag("BLITZ")) { - Blitz b = BlitzStep(sfile, soptions, obj, immfile, ".obj", optimize); + Blitz b = BlitzStep(sfile, soptions, obj, immfile, ".obj", optimize, Index()); if (b.build) { PutConsole("BLITZ:" + b.info); int slot = AllocSlot(); diff --git a/uppsrc/ide/Common/ComDlg.cpp b/uppsrc/ide/Common/ComDlg.cpp index 747b702e5..fdce8cfaf 100644 --- a/uppsrc/ide/Common/ComDlg.cpp +++ b/uppsrc/ide/Common/ComDlg.cpp @@ -99,7 +99,7 @@ Image ImageOver(const Image& back, const Image& over) return MakeImage(h); } -Image IdeFileImage(const String& filename, bool fast, bool include_path) +Image IdeFileImage(const String& filename, bool fast, bool include_path, bool pch) { Image img = CtrlImg::File(); IdeFileIcon0(false, filename, img); @@ -107,6 +107,8 @@ Image IdeFileImage(const String& filename, bool fast, bool include_path) img = ImageOver(img, IdeCommonImg::Fast()); if(include_path) img = ImageOver(img, IdeCommonImg::IncludePath()); + if(pch) + img = ImageOver(img, IdeCommonImg::Precompile()); return img; } diff --git a/uppsrc/ide/Common/Common.h b/uppsrc/ide/Common/Common.h index 72365e5a0..5702eb826 100644 --- a/uppsrc/ide/Common/Common.h +++ b/uppsrc/ide/Common/Common.h @@ -29,7 +29,7 @@ FileSel& OutputFs(); void ShellOpenFolder(const String& dir); -Image IdeFileImage(const String& filename, bool fast = false, bool include_path = false); +Image IdeFileImage(const String& filename, bool fast, bool include_path, bool pch); bool FinishSave(String tmpfile, String outfile); void DeactivationSave(bool b); diff --git a/uppsrc/ide/Common/Common.upp b/uppsrc/ide/Common/Common.upp index d28100086..561cd5a60 100644 --- a/uppsrc/ide/Common/Common.upp +++ b/uppsrc/ide/Common/Common.upp @@ -5,7 +5,7 @@ uses CtrlLib; file - Common.h, + Common.h options PCH, ComDlg.cpp, Module.cpp, Util.cpp, diff --git a/uppsrc/ide/Common/common.iml b/uppsrc/ide/Common/common.iml index 48bbe87a2..dff30c6d1 100644 --- a/uppsrc/ide/Common/common.iml +++ b/uppsrc/ide/Common/common.iml @@ -13,6 +13,7 @@ IMAGE_ID(PackageNew) IMAGE_ID(FastPackage) IMAGE_ID(FFff) IMAGE_ID(Source) +IMAGE_ID(Precompile) IMAGE_ID(Fast) IMAGE_ID(ISource) IMAGE_ID(json) @@ -29,98 +30,100 @@ IMAGE_ID(IncludePath) IMAGE_ID(Qtf) IMAGE_BEGIN_DATA -IMAGE_DATA(120,156,237,154,93,104,29,69,20,199,247,213,183,162,68,9,10,62,68,65,182,162,72,236,83,36,141,130,248,144,88,17) -IMAGE_DATA(221,135,22,53,47,21,165,6,139,32,165,13,150,172,104,196,198,164,45,154,86,241,81,68,232,125,80,4,241,197,143,164) -IMAGE_DATA(36,144,20,154,154,54,91,155,216,214,40,182,213,24,219,98,98,165,138,233,223,153,189,119,238,157,157,157,51,59,187,119) -IMAGE_DATA(111,123,211,222,19,14,155,221,61,191,115,206,204,206,158,157,217,187,206,26,103,141,115,157,9,50,104,132,47,96,191,181) -IMAGE_DATA(82,252,224,224,32,196,255,34,142,124,156,111,77,188,156,135,238,127,197,119,106,62,41,127,149,145,143,251,190,95,117,252) -IMAGE_DATA(90,243,106,255,11,222,182,255,171,185,254,25,180,62,164,70,197,160,218,198,131,18,75,31,194,24,175,184,78,140,151,252) -IMAGE_DATA(100,226,45,218,66,242,26,95,13,62,129,215,169,45,79,170,13,159,32,38,62,133,214,143,212,112,102,224,57,230,78,240) -IMAGE_DATA(76,220,211,247,223,139,153,109,91,177,178,187,63,166,252,56,63,79,248,193,129,238,141,184,178,231,173,68,229,118,14,81) -IMAGE_DATA(217,83,196,143,241,132,13,116,190,41,222,86,27,249,231,159,63,21,87,151,135,134,175,118,252,70,252,24,148,226,178,75) -IMAGE_DATA(189,22,3,207,115,16,4,188,66,199,149,31,231,231,9,63,40,20,244,156,170,220,206,33,6,99,138,248,49,158,176,129) -IMAGE_DATA(206,55,197,219,106,35,255,252,243,167,226,234,242,208,240,213,142,223,136,31,131,222,56,197,224,38,239,17,220,26,124,130) -IMAGE_DATA(219,49,17,83,126,156,159,39,252,224,230,66,63,238,192,36,179,157,12,183,170,138,227,220,206,33,6,99,138,248,49,158) -IMAGE_DATA(176,129,206,55,197,219,106,35,255,252,243,167,226,234,242,208,240,213,142,223,136,31,131,214,166,24,160,47,119,183,57,9) -IMAGE_DATA(95,151,249,160,247,235,149,151,151,167,62,232,125,74,124,216,105,173,242,175,150,191,209,219,159,23,127,149,165,56,51,32) -IMAGE_DATA(47,140,174,250,82,21,89,203,107,94,180,36,189,124,17,162,86,70,93,124,83,117,100,203,128,130,182,170,74,241,77,57) -IMAGE_DATA(80,118,54,188,167,177,163,226,171,109,240,8,187,178,242,118,185,174,75,249,32,219,45,212,243,60,157,13,213,62,109,63) -IMAGE_DATA(107,108,180,124,19,99,251,216,214,119,194,103,78,121,235,26,174,175,196,135,236,176,203,166,214,108,73,87,240,138,91,190) -IMAGE_DATA(223,87,201,203,56,190,120,188,64,89,54,242,125,191,194,24,199,55,143,195,227,114,206,119,74,203,75,175,28,95,199,71) -IMAGE_DATA(196,34,190,81,18,218,159,40,174,185,255,163,146,125,153,32,42,92,214,74,151,149,79,126,82,116,118,118,162,171,171,43) -IMAGE_DATA(162,252,88,115,115,179,23,245,163,143,207,237,85,17,62,155,155,95,78,140,47,248,214,214,214,80,185,240,99,99,99,99) -IMAGE_DATA(37,31,60,143,108,241,249,150,171,13,47,199,151,133,159,55,245,176,46,126,22,94,196,87,243,184,86,241,229,107,81,203) -IMAGE_DATA(248,186,241,167,142,69,19,127,205,228,42,125,103,160,123,66,165,178,31,29,29,13,21,118,190,34,23,79,240,40,78,129) -IMAGE_DATA(202,79,93,126,204,204,87,94,50,9,182,188,143,202,239,237,214,60,172,120,237,211,188,204,66,127,94,230,69,95,9,21) -IMAGE_DATA(188,35,241,234,249,36,190,242,135,42,120,88,241,90,45,179,250,217,82,82,255,87,88,88,93,63,158,23,63,95,177,41) -IMAGE_DATA(178,34,223,232,185,56,31,87,168,237,181,189,23,168,62,201,95,50,20,131,196,27,49,73,239,196,71,104,193,103,228,133) -IMAGE_DATA(188,178,210,133,127,46,183,99,233,207,117,88,248,237,65,252,52,223,142,185,217,46,28,15,158,11,237,215,98,10,247,97) -IMAGE_DATA(142,228,255,190,244,0,254,90,110,195,133,243,235,113,246,204,163,56,125,234,9,198,62,139,233,239,122,66,251,117,184,132) -IMAGE_DATA(182,149,255,72,254,194,249,181,248,99,177,13,191,158,123,140,197,126,10,179,179,221,56,58,221,131,201,137,222,208,126,211) -IMAGE_DATA(50,240,252,69,114,169,128,115,103,239,193,153,95,30,198,252,252,147,152,155,235,198,204,76,15,14,31,222,129,241,241,55) -IMAGE_DATA(66,251,93,63,3,251,79,209,252,143,167,219,89,206,143,179,54,63,195,216,151,48,53,181,29,19,19,253,56,120,112,40) -IMAGE_DATA(180,255,60,88,196,151,193,73,146,63,249,67,39,78,124,191,9,51,199,94,196,145,169,109,56,116,232,77,140,143,237,197) -IMAGE_DATA(183,223,124,24,218,31,9,222,103,253,241,58,201,207,158,216,136,99,71,95,96,57,191,202,218,236,179,25,205,32,27,196) -IMAGE_DATA(31,48,254,227,208,126,49,88,143,229,224,110,109,33,178,81,76,223,2,76,181,16,69,111,94,210,139,177,167,114,104,51) -IMAGE_DATA(178,25,248,170,183,100,15,44,45,45,73,188,89,66,155,79,191,0,14,124,173,229,173,242,127,119,8,216,213,75,221,160) -IMAGE_DATA(24,126,111,55,246,238,121,39,212,161,161,1,12,12,188,141,157,59,95,195,142,29,219,139,252,214,135,128,205,45,42,103) -IMAGE_DATA(221,135,255,110,184,13,151,55,220,149,181,48,208,247,239,245,90,12,116,113,211,20,3,190,133,164,124,63,77,49,112,36) -IMAGE_DATA(78,104,154,98,160,139,159,166,24,232,226,167,41,6,50,223,40,6,53,47,6,169,250,80,83,12,210,20,132,92,139,129) -IMAGE_DATA(41,233,52,182,64,80,81,39,161,67,116,203,4,137,139,241,234,0,80,151,9,73,241,75,36,168,101,130,93,124,122,153) -IMAGE_DATA(160,240,201,125,213,88,38,52,150,9,217,110,126,123,169,241,59,3,72,219,212,29,32,221,56,78,202,119,6,90,94,46) -IMAGE_DATA(6,92,204,239,12,162,190,213,98,144,252,206,32,154,159,90,12,76,239,12,34,5,67,202,195,182,24,200,111,174,35,237) -IMAGE_DATA(72,46,6,177,28,99,172,249,102,38,115,79,83,12,138,125,163,180,203,190,24,16,109,183,46,6,113,54,93,49,136,141) -IMAGE_DATA(29,162,189,100,33,51,28,91,213,197,32,15,209,125,124,145,248,193,133,235,186,30,191,88,226,103,52,112,101,108,192,212) -IMAGE_DATA(179,232,80,206,46,44,44,20,57,215,141,76,217,133,150,6,131,54,103,30,87,102,11,60,15,166,11,77,77,234,12,69) -IMAGE_DATA(39,8,36,246,120,41,142,104,147,239,148,127,154,162,11,97,73,121,204,164,190,50,241,60,118,71,71,71,218,15,92,194) -IMAGE_DATA(126,230,252,239,29,29,17,31,225,181,96,146,144,191,231,73,57,8,31,97,65,151,250,197,192,71,114,160,212,112,253,194) -IMAGE_DATA(28,156,210,88,145,253,216,142,31,213,143,162,249,127,48,148,135,212,247,71,71,245,45,9,131,169,222,165,218,167,141,254) -IMAGE_DATA(9,156,146,95,237,241,51,112,101,62,99,220,218,201,42,40,6,185,204,12,10,65,0,167,175,15,206,150,45,112,42,31) -IMAGE_DATA(236,144,34,102,6,156,115,135,135,225,240,27,159,243,98,203,52,105,102,80,102,153,173,87,210,166,18,27,170,225,201,94) -IMAGE_DATA(24,25,41,179,126,241,3,161,84,51,3,17,195,43,198,73,43,149,54,178,216,89,102,6,97,63,243,25,193,190,125,17) -IMAGE_DATA(31,182,51,131,240,26,149,114,16,62,248,204,64,238,83,3,95,201,65,185,102,178,218,204,12,194,60,132,159,20,227,39) -IMAGE_DATA(230,103,21,204,12,254,7,139,53,205,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0) -IMAGE_END_DATA(1632, 16) +IMAGE_DATA(120,156,237,154,95,104,221,116,20,199,243,234,219,80,170,20,5,31,170,32,153,40,82,247,84,233,170,32,62,180,78,68) +IMAGE_DATA(243,176,161,246,101,162,96,113,8,50,214,226,104,68,43,174,182,219,208,49,197,71,17,97,247,65,17,196,23,255,117,180) +IMAGE_DATA(208,14,214,217,173,153,107,221,159,42,110,211,90,183,97,235,100,138,221,215,252,114,111,238,253,229,151,115,126,249,37,55) +IMAGE_DATA(89,187,245,158,114,72,147,156,207,57,231,247,39,39,249,229,198,90,103,173,179,110,48,65,6,141,240,37,236,55,86,142) +IMAGE_DATA(31,26,26,66,248,127,24,71,62,46,182,58,94,206,131,250,95,241,157,154,79,202,95,101,228,227,174,235,214,29,191,104) +IMAGE_DATA(94,237,255,144,55,237,255,122,198,63,131,174,14,41,168,24,212,219,120,112,98,232,35,52,198,43,182,21,227,37,63,153) +IMAGE_DATA(120,131,182,176,60,225,171,193,39,240,148,154,242,172,154,240,9,162,227,83,232,234,145,2,159,12,28,75,223,9,142,142) +IMAGE_DATA(123,250,254,123,49,189,125,27,150,119,15,196,84,28,23,231,25,63,56,208,189,25,87,247,188,149,168,194,206,98,42,123) +IMAGE_DATA(138,248,49,158,177,1,229,155,227,77,181,145,127,254,249,115,113,169,60,8,190,222,249,27,241,163,81,142,203,46,171,181) +IMAGE_DATA(24,56,142,5,207,19,21,58,174,226,184,56,207,248,65,169,68,115,170,10,59,139,153,140,41,226,199,120,198,6,148,111) +IMAGE_DATA(142,55,213,70,254,249,231,207,197,165,242,32,248,122,231,111,196,143,70,215,78,49,184,201,121,4,183,122,159,224,118,140) +IMAGE_DATA(199,84,28,23,231,25,63,184,185,52,128,59,48,225,219,78,4,91,85,195,227,194,206,98,38,99,138,248,49,158,177,1) +IMAGE_DATA(229,155,227,77,181,145,127,254,249,115,113,169,60,8,190,222,249,27,241,163,209,98,138,1,250,115,119,155,147,136,117,153) +IMAGE_DATA(11,126,127,181,242,242,242,212,5,191,207,137,11,51,45,42,255,122,249,181,222,254,188,248,107,44,229,39,3,118,96,168) +IMAGE_DATA(234,203,85,100,146,39,94,180,36,189,124,9,69,173,140,84,124,93,117,244,151,1,37,178,170,74,241,117,57,112,118,38) +IMAGE_DATA(188,67,216,113,241,213,54,56,140,93,85,69,187,108,219,230,124,176,237,14,213,113,28,202,134,107,31,217,207,132,13,201) +IMAGE_DATA(55,249,108,191,191,117,173,224,158,83,221,218,154,241,149,248,128,221,103,251,143,214,254,146,174,228,148,183,98,191,191,150) +IMAGE_DATA(151,118,126,137,120,158,178,108,20,251,110,141,209,206,111,17,71,196,21,156,107,85,150,151,78,53,62,197,71,196,32,190) +IMAGE_DATA(86,18,218,159,40,182,190,255,163,146,125,153,16,86,184,172,149,46,43,159,124,167,232,236,236,68,87,87,87,68,197,177) +IMAGE_DATA(230,230,102,39,234,135,142,47,236,85,9,125,54,55,191,156,24,63,228,91,91,91,3,21,34,142,141,142,142,86,124,136) +IMAGE_DATA(60,178,197,23,91,161,38,188,28,95,22,113,94,215,195,84,252,44,124,24,95,205,99,165,226,203,99,81,100,124,106,254) +IMAGE_DATA(169,115,81,199,175,152,92,163,239,12,168,59,84,42,251,145,145,145,64,97,230,43,50,120,33,143,242,35,80,245,174,43) +IMAGE_DATA(142,233,249,218,75,166,144,173,238,163,246,123,187,49,15,35,158,188,155,87,89,208,231,101,62,236,171,80,67,222,146,120) +IMAGE_DATA(245,124,18,95,251,67,29,60,140,120,82,171,44,253,180,148,212,255,53,22,70,227,39,242,18,231,107,54,101,54,204,55) +IMAGE_DATA(122,46,206,199,21,106,123,77,175,5,174,79,242,151,12,197,32,241,66,76,210,59,241,17,90,240,25,59,144,87,151,187) +IMAGE_DATA(240,207,149,118,44,254,185,1,243,191,61,136,159,230,218,49,59,211,133,227,222,115,129,253,122,76,226,62,204,178,252,223) +IMAGE_DATA(151,31,192,95,75,109,184,120,97,35,206,157,125,20,167,79,61,225,179,207,98,234,251,158,192,126,3,46,163,109,249,63) +IMAGE_DATA(150,191,120,97,61,254,88,104,195,175,231,31,243,99,63,133,153,153,110,28,157,234,193,196,120,95,96,191,101,9,120,254) +IMAGE_DATA(18,187,84,192,249,115,247,224,236,47,15,99,110,238,73,204,206,118,99,122,186,7,135,15,247,98,108,236,141,192,126,215) +IMAGE_DATA(207,192,254,83,60,127,230,116,187,159,243,227,126,155,159,241,217,151,48,57,185,3,227,227,3,56,120,112,56,176,255,220) +IMAGE_DATA(91,192,151,222,73,150,63,249,99,39,78,252,176,5,211,199,94,196,145,201,237,56,116,232,77,140,141,238,197,183,223,124) +IMAGE_DATA(24,216,31,241,222,247,251,227,117,150,159,57,177,25,199,142,190,224,231,252,170,223,102,215,127,162,25,242,39,241,7,62) +IMAGE_DATA(255,113,96,191,224,109,196,146,119,55,89,136,76,20,83,183,0,147,45,76,209,155,147,244,82,236,174,28,216,124,183,21) +IMAGE_DATA(248,170,175,98,15,44,46,46,74,188,94,2,155,79,191,0,14,124,77,242,70,249,191,59,12,236,234,227,46,80,236,123) +IMAGE_DATA(111,55,246,238,121,39,208,225,225,65,12,14,190,141,157,59,95,67,111,239,142,50,191,237,33,96,107,139,202,25,247,225) +IMAGE_DATA(191,155,110,195,149,77,119,101,45,12,252,245,123,163,22,3,42,110,154,98,32,182,144,84,236,167,41,6,150,196,133,154) +IMAGE_DATA(166,24,80,241,211,20,3,42,126,154,98,32,243,141,98,80,120,49,72,213,135,68,49,72,83,16,114,45,6,186,164,211) +IMAGE_DATA(216,2,94,77,173,132,14,161,150,9,18,23,227,213,9,160,46,19,146,226,87,72,112,203,4,179,248,252,50,65,225,147) +IMAGE_DATA(251,170,177,76,104,44,19,178,93,252,230,82,240,59,3,72,219,212,29,32,93,56,86,202,119,6,36,47,23,3,33,250) +IMAGE_DATA(119,6,81,223,106,49,72,126,103,16,205,79,45,6,186,119,6,145,130,33,229,97,90,12,228,55,215,145,118,36,23,131) +IMAGE_DATA(88,142,49,86,127,49,179,185,167,41,6,229,190,81,218,101,94,12,152,182,27,23,131,56,155,174,24,196,230,14,211,94) +IMAGE_DATA(182,144,105,142,93,215,197,32,15,161,62,190,72,252,224,194,182,109,71,12,86,248,51,26,132,250,172,231,171,99,208,161) +IMAGE_DATA(130,157,159,159,47,115,182,29,121,100,15,181,50,25,200,156,69,92,153,45,137,60,124,157,111,106,82,159,80,40,129,39) +IMAGE_DATA(177,199,43,113,194,54,185,86,245,167,41,190,16,86,84,196,76,234,43,29,47,98,119,116,116,164,253,192,37,232,103,193) +IMAGE_DATA(255,222,209,17,241,17,140,133,47,9,249,59,142,148,67,232,35,40,232,82,191,104,248,72,14,156,106,198,47,200,193,170) +IMAGE_DATA(204,21,217,143,233,252,81,253,40,154,255,7,67,121,72,142,203,132,244,188,116,167,200,224,163,198,214,124,172,76,252,122) +IMAGE_DATA(218,159,189,202,23,123,151,104,200,218,147,213,253,5,98,67,10,148,122,31,61,233,199,241,148,252,245,30,63,3,87,229) +IMAGE_DATA(51,198,45,76,254,7,251,86,63,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0) +IMAGE_END_DATA(1536, 16) IMAGE_BEGIN_DATA -IMAGE_DATA(120,156,237,154,61,104,28,71,20,199,167,76,145,194,149,136,131,93,73,133,81,149,210,164,217,246,192,112,56,196,131,81) -IMAGE_DATA(159,70,141,42,131,221,233,58,87,54,28,184,17,24,66,10,99,178,152,144,20,106,133,192,40,36,173,179,22,72,141,82) -IMAGE_DATA(132,128,2,33,216,238,108,172,241,254,119,245,230,222,204,206,231,238,29,186,24,63,243,152,207,223,123,51,111,102,103,71) -IMAGE_DATA(222,19,151,196,37,241,145,138,172,85,69,84,250,56,41,165,170,170,74,249,4,109,232,99,217,105,88,31,183,93,183,65) -IMAGE_DATA(61,118,26,118,111,111,207,235,211,197,147,13,154,83,72,124,60,100,81,60,103,82,120,59,118,143,214,215,13,30,101,91) -IMAGE_DATA(216,252,59,241,175,202,178,97,38,231,44,202,1,214,216,55,177,245,79,217,71,61,246,223,197,201,71,124,24,20,34,190) -IMAGE_DATA(24,133,143,43,138,66,157,156,156,120,55,3,218,208,199,178,83,196,184,128,157,198,47,177,66,76,140,180,40,190,87,251) -IMAGE_DATA(251,127,54,41,175,39,27,52,39,18,87,127,82,155,111,203,38,79,44,82,215,120,98,188,111,188,49,222,55,127,87,10) -IMAGE_DATA(109,253,236,235,117,200,141,63,88,22,255,161,235,63,143,253,119,113,146,113,24,208,73,215,231,52,147,242,150,80,229,143) -IMAGE_DATA(245,27,247,86,182,13,205,170,179,108,27,51,246,125,203,35,77,180,97,248,37,150,52,98,195,244,251,254,252,65,97,92) -IMAGE_DATA(32,30,206,49,55,124,157,31,143,205,54,135,13,115,204,103,93,255,46,27,162,93,91,239,188,137,135,86,127,180,62,3) -IMAGE_DATA(113,208,54,200,23,245,231,124,74,12,127,249,217,28,47,198,65,245,217,107,152,182,118,65,27,67,247,112,15,86,219,16) -IMAGE_DATA(139,190,77,44,232,102,16,59,17,99,147,10,158,230,9,54,162,124,89,95,23,3,54,82,253,243,135,40,153,119,216,114) -IMAGE_DATA(242,82,150,245,56,171,38,165,178,16,219,186,28,227,209,183,125,131,110,55,229,170,58,109,202,72,251,248,111,251,59,223) -IMAGE_DATA(232,11,153,63,124,61,123,118,234,189,77,164,240,183,111,255,219,155,231,113,55,227,57,73,226,135,204,63,83,231,35,159) -IMAGE_DATA(14,131,229,61,12,202,170,84,178,148,193,124,136,71,159,234,180,10,230,67,188,152,204,230,49,148,71,127,26,51,207,167) -IMAGE_DATA(142,191,15,207,227,132,20,101,59,191,168,245,203,212,229,144,11,58,12,98,87,157,88,240,123,31,38,34,126,16,164,250) -IMAGE_DATA(15,45,228,144,141,164,121,215,155,140,215,199,120,188,209,248,45,0,130,242,236,77,23,230,205,190,147,142,205,148,249,135) -IMAGE_DATA(254,175,32,133,231,183,147,238,45,37,206,131,25,143,159,26,105,14,31,146,16,159,161,203,35,139,56,12,54,54,54,84) -IMAGE_DATA(76,87,86,86,138,16,31,146,152,141,20,254,240,240,208,107,35,213,63,105,46,111,219,242,241,15,214,69,80,83,248,95) -IMAGE_DATA(61,154,202,15,241,63,116,254,87,182,69,80,83,248,235,165,91,83,249,33,254,135,204,63,71,109,190,183,224,48,192,55) -IMAGE_DATA(155,37,150,148,79,52,126,86,214,237,85,173,190,127,97,222,100,243,253,155,190,100,210,173,200,207,151,217,54,186,115,207) -IMAGE_DATA(179,209,198,175,180,108,84,89,111,53,183,141,188,183,98,107,35,103,221,92,154,62,126,255,126,169,146,226,55,244,102,124) -IMAGE_DATA(49,194,15,3,181,242,185,130,242,246,127,70,74,65,145,151,223,124,38,213,155,203,74,189,249,210,14,100,243,192,198,248) -IMAGE_DATA(150,189,172,96,199,102,69,55,88,77,254,241,87,165,26,127,209,126,135,135,223,14,123,243,107,37,126,184,211,225,240,29) -IMAGE_DATA(152,190,5,179,63,11,248,66,204,216,87,63,117,22,140,190,49,11,125,101,183,254,188,0,251,251,180,101,25,79,125,215) -IMAGE_DATA(207,191,135,243,58,74,53,11,69,254,117,215,191,199,111,171,228,247,218,213,182,204,248,163,163,35,181,187,187,171,214,214) -IMAGE_DATA(214,116,221,104,52,106,234,208,150,194,31,31,31,59,85,243,129,241,163,207,95,127,79,213,127,175,71,234,109,253,240,64) -IMAGE_DATA(145,71,157,230,3,241,131,31,244,255,182,126,224,222,169,86,145,71,29,218,140,56,144,111,139,127,123,206,145,127,202,107) -IMAGE_DATA(30,12,105,192,63,213,121,253,59,20,113,166,249,211,248,105,254,104,179,246,160,45,146,214,107,58,157,234,184,35,143,186) -IMAGE_DATA(8,219,177,99,105,156,179,110,6,209,201,138,200,137,250,252,133,84,55,238,41,157,42,108,106,166,49,30,204,141,187,170) -IMAGE_DATA(77,239,117,175,85,139,246,111,245,203,141,133,49,78,248,191,255,164,52,198,132,50,205,205,201,51,255,232,251,219,203,113) -IMAGE_DATA(203,220,85,102,217,195,115,133,191,205,135,149,246,103,143,39,22,11,107,156,217,177,160,249,146,173,231,47,252,215,101,23) -IMAGE_DATA(79,99,157,197,210,111,35,22,11,154,203,230,195,100,222,25,139,205,239,170,206,158,74,221,215,247,111,214,243,185,38,123) -IMAGE_DATA(243,62,54,133,79,210,37,253,209,209,176,223,52,72,188,77,241,43,194,108,27,154,173,35,220,199,134,102,73,81,22,225) -IMAGE_DATA(133,154,167,127,195,70,15,86,219,16,253,227,255,73,254,175,50,231,195,32,231,45,226,212,190,50,111,126,103,103,71,215) -IMAGE_DATA(173,174,174,158,249,56,180,217,227,7,203,153,173,173,173,179,250,154,215,148,15,14,14,154,50,229,169,158,243,46,127,168) -IMAGE_DATA(67,127,234,7,142,242,124,172,33,30,41,56,216,161,113,81,158,243,52,38,30,11,170,227,109,220,143,237,159,236,82,27) -IMAGE_DATA(149,83,120,94,230,44,213,211,28,184,45,215,250,99,220,20,107,91,208,6,13,241,52,70,222,143,132,199,46,196,167,202) -IMAGE_DATA(60,158,157,129,207,174,248,0,240,40,52,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0) -IMAGE_END_DATA(1280, 12) +IMAGE_DATA(120,156,237,154,61,104,28,71,20,128,167,76,145,194,77,68,28,146,74,42,204,85,41,77,154,85,121,96,56,28,226,193) +IMAGE_DATA(168,79,35,23,170,12,118,119,219,185,138,225,64,46,4,129,144,34,132,44,38,36,133,90,89,96,20,146,214,217,8,164) +IMAGE_DATA(70,41,66,224,2,33,196,238,28,172,201,188,157,123,115,111,102,231,119,247,142,59,27,63,241,216,153,217,249,222,123,243) +IMAGE_DATA(102,118,118,78,119,236,10,187,194,196,152,173,179,112,169,194,82,30,131,6,131,1,47,203,82,112,206,69,85,85,162,170) +IMAGE_DATA(107,193,198,99,193,238,220,17,242,38,218,241,10,176,211,233,180,225,6,251,251,66,54,40,30,175,82,161,143,47,230,198) +IMAGE_DATA(47,178,178,47,159,233,123,51,182,81,127,12,162,122,242,68,179,165,140,159,142,169,148,247,203,121,46,156,60,250,224,202) +IMAGE_DATA(79,174,204,199,40,125,111,111,111,71,243,221,226,33,207,50,214,237,71,143,12,27,48,23,32,145,248,121,51,71,179,24) +IMAGE_DATA(208,198,241,241,177,145,211,0,63,143,193,154,51,170,129,249,83,49,128,13,136,3,237,100,172,159,150,157,204,245,187,18) +IMAGE_DATA(129,205,224,13,21,215,36,164,76,74,195,193,195,92,203,133,231,19,184,7,125,44,59,13,235,227,228,158,219,168,199,78) +IMAGE_DATA(195,30,29,29,121,125,186,120,180,129,99,10,137,143,7,89,22,79,153,20,222,206,221,190,124,240,40,15,117,91,200,248) +IMAGE_DATA(91,249,175,229,38,2,76,57,99,235,217,102,228,97,141,117,19,155,255,148,117,212,97,253,173,78,222,224,205,160,96,241) +IMAGE_DATA(201,40,124,92,81,20,226,226,226,194,187,24,224,30,244,177,236,20,49,46,96,167,241,139,172,60,155,24,215,162,248,74) +IMAGE_DATA(190,25,127,111,174,180,29,109,224,152,80,92,253,81,109,94,213,77,30,89,184,186,226,137,241,190,120,99,188,111,252,174) +IMAGE_DATA(43,168,242,115,172,231,33,55,255,192,146,252,247,157,255,69,172,191,213,73,198,102,128,59,93,151,221,140,243,91,242,232) +IMAGE_DATA(251,157,124,227,222,202,182,161,89,113,153,109,99,206,190,82,60,92,19,109,24,126,145,69,141,216,48,253,190,154,61,40) +IMAGE_DATA(132,11,228,195,25,115,195,203,242,104,100,222,115,216,48,99,190,108,251,119,217,96,243,99,175,115,220,200,131,214,191,42) +IMAGE_DATA(159,129,60,104,27,232,11,251,83,62,37,135,63,254,96,198,11,113,96,123,246,28,166,205,93,208,70,223,53,220,129,213) +IMAGE_DATA(54,216,178,79,19,75,58,25,196,118,196,216,160,130,187,121,130,141,40,95,169,207,225,62,27,169,254,233,67,148,204,59) +IMAGE_DATA(108,57,121,206,43,25,103,221,92,177,206,216,88,215,99,60,244,85,111,208,113,83,175,235,105,83,135,107,23,255,170,191) +IMAGE_DATA(243,141,190,148,241,131,175,199,143,167,222,211,68,10,127,251,246,223,157,121,154,119,51,159,101,18,223,103,252,153,186,24) +IMAGE_DATA(121,187,25,172,239,102,80,213,149,224,21,15,150,67,60,244,169,167,117,176,28,226,89,57,31,71,95,30,250,99,204,180) +IMAGE_DATA(156,26,127,23,158,230,9,174,80,183,203,203,154,191,76,93,15,89,209,102,16,59,234,196,146,223,121,51,97,241,141,32) +IMAGE_DATA(213,127,104,34,251,44,36,205,187,222,100,180,61,198,195,27,141,158,2,64,160,62,127,211,133,121,179,111,217,178,153,50) +IMAGE_DATA(254,208,255,10,82,120,122,58,105,159,82,226,60,48,163,209,183,198,53,135,15,73,136,207,208,245,145,101,108,6,59,59) +IMAGE_DATA(59,34,166,27,27,27,69,136,15,73,204,70,10,127,122,122,234,181,145,234,31,53,151,183,109,249,248,47,6,44,168,41) +IMAGE_DATA(252,79,30,77,229,251,248,239,59,254,15,199,44,168,41,252,245,202,173,169,124,31,255,125,198,159,163,54,223,89,94,211) +IMAGE_DATA(223,25,164,238,174,92,254,9,86,75,245,253,133,121,147,205,247,111,250,226,73,167,34,63,95,101,219,104,143,61,207,134) +IMAGE_DATA(202,95,101,217,168,179,222,106,110,27,121,111,69,101,35,103,222,92,154,30,191,127,189,212,73,249,235,123,50,94,141,208) +IMAGE_DATA(205,64,108,188,43,64,233,253,191,134,66,128,66,153,127,250,14,23,47,174,10,241,226,3,59,145,205,3,27,227,21,123) +IMAGE_DATA(85,128,29,155,101,237,100,53,229,47,63,174,196,232,125,245,61,60,248,109,177,55,63,17,236,235,187,45,14,190,7,198) +IMAGE_DATA(239,130,201,199,2,58,17,115,246,223,239,91,19,134,223,49,51,125,100,183,62,94,0,251,203,68,177,132,199,190,131,217) +IMAGE_DATA(247,225,180,13,175,154,5,133,242,243,182,127,143,95,165,232,247,218,71,170,78,248,179,179,51,113,120,120,40,182,182,182) +IMAGE_DATA(116,219,112,56,108,218,224,94,10,127,126,126,238,84,205,7,226,135,62,127,252,57,17,255,60,31,138,151,242,225,1,133) +IMAGE_DATA(50,180,105,62,144,63,240,3,253,63,147,15,220,127,66,41,148,161,13,238,25,121,64,223,22,255,114,198,161,127,44,107) +IMAGE_DATA(30,24,212,128,127,108,243,250,119,40,228,25,199,143,241,227,248,225,158,181,6,109,225,56,95,147,201,68,231,29,202,208) +IMAGE_DATA(22,97,91,118,44,141,115,214,201,32,58,88,22,217,81,159,62,227,226,198,125,161,175,2,22,53,209,24,15,204,141,123) +IMAGE_DATA(66,93,239,183,143,85,203,246,111,245,203,205,133,17,39,248,127,240,77,101,196,4,117,28,155,147,39,254,161,239,207,191) +IMAGE_DATA(141,20,115,79,152,117,15,79,21,252,237,62,172,181,63,59,158,88,46,172,56,179,115,129,227,69,91,79,159,249,143,203) +IMAGE_DATA(46,30,99,157,231,210,111,35,150,11,28,203,238,195,100,222,153,139,221,207,235,214,154,74,93,215,15,110,202,241,92,227) +IMAGE_DATA(157,121,31,155,194,39,233,154,254,232,168,223,111,26,56,188,77,225,87,132,217,54,52,43,51,220,197,134,102,81,161,206) +IMAGE_DATA(194,19,181,72,255,134,141,14,172,182,193,186,231,255,173,188,174,178,224,205,32,231,45,226,212,174,178,104,254,224,224,64) +IMAGE_DATA(183,109,110,110,94,250,56,184,103,199,15,44,101,246,246,246,46,229,49,175,169,159,156,156,52,117,44,99,59,229,93,254) +IMAGE_DATA(160,13,250,99,63,224,176,76,99,13,241,112,5,14,236,96,92,88,166,60,198,68,115,129,109,244,30,245,99,251,71,187) +IMAGE_DATA(120,15,235,41,60,173,83,22,219,113,12,212,150,107,254,33,110,204,181,45,112,15,52,196,99,140,180,31,10,205,93,136) +IMAGE_DATA(79,149,69,60,59,61,159,93,246,63,119,138,237,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0) +IMAGE_END_DATA(1440, 13) diff --git a/uppsrc/ide/Console.cpp b/uppsrc/ide/Console.cpp index cb8f64668..cb2767142 100644 --- a/uppsrc/ide/Console.cpp +++ b/uppsrc/ide/Console.cpp @@ -21,6 +21,7 @@ Console::Console() { input.SetFrame(Single()); AddFrame(input); input.Hide(); + serial = 0; } void Console::LeftDouble(Point p, dword) { @@ -249,12 +250,20 @@ bool Console::Run(One pick_ process, const char *cmdline, Stream *out, pslot.key = key; pslot.group = current_group; pslot.last_msecs = msecs(); + pslot.serial = ++serial; groups.GetAdd(pslot.group).count += blitz_count; if(processes.GetCount() == 1) Wait(slot); return true; } +void Console::OnFinish(Callback cb) +{ + Finisher& f = finisher.Add(); + f.serial = serial; + f.cb = cb; +} + void Console::FlushConsole() { if(console_lock < 0) { @@ -334,6 +343,7 @@ void Console::Kill(int islot) if(slot.process->IsRunning()) slot.process->Kill(); slot.exitcode = slot.process->GetExitCode(); + slot.serial = INT_MAX; if(slot.exitcode != 0 && !IsNull(slot.key)) error_keys.Add(slot.key); slot.process.Clear(); @@ -345,6 +355,20 @@ void Console::Kill(int islot) FlushConsole(); } CheckEndGroup(); + + int minserial = INT_MAX; + for(int i = 0; i < processes.GetCount(); i++) + minserial = min(processes[i].serial, minserial); + int i = 0; + while(i < finisher.GetCount()) { + const Finisher& f = finisher[i]; + if(f.serial > minserial) + i++; + else { + f.cb(); + finisher.Remove(i); + } + } } void Console::SetSlots(int s) diff --git a/uppsrc/ide/Core/Core.cpp b/uppsrc/ide/Core/Core.cpp index d63beec69..83870f822 100644 --- a/uppsrc/ide/Core/Core.cpp +++ b/uppsrc/ide/Core/Core.cpp @@ -193,6 +193,11 @@ bool IdeConsoleWait(int slot) return the_ide && the_ide->IdeConsoleWait(slot); } +void IdeConsoleOnFinish(Callback cb) +{ + if(the_ide) the_ide->IdeConsoleOnFinish(cb); +} + void IdeGotoCodeRef(String s) { if(the_ide) the_ide->IdeGotoCodeRef(s); diff --git a/uppsrc/ide/Core/Core.h b/uppsrc/ide/Core/Core.h index ffe3d1e9b..d76182632 100644 --- a/uppsrc/ide/Core/Core.h +++ b/uppsrc/ide/Core/Core.h @@ -56,6 +56,7 @@ public: virtual void IdeConsoleEndGroup() = 0; virtual bool IdeConsoleWait() = 0; virtual bool IdeConsoleWait(int slot) = 0; + virtual void IdeConsoleOnFinish(Callback cb) = 0; virtual bool IdeIsDebug() const = 0; virtual void IdeEndDebug() = 0; @@ -111,6 +112,7 @@ void IdeConsoleBeginGroup(String group); void IdeConsoleEndGroup(); bool IdeConsoleWait(); bool IdeConsoleWait(int slot); +void IdeConsoleOnFinish(Callback cb); void IdeGotoCodeRef(String s); String GetDefaultMethod(); @@ -267,6 +269,7 @@ enum { CHARSET_UTF8_BOM = 250 }; // Same as TextCtrl::CHARSET_UTF8_BOM class Package { void Reset(); + void Option(bool& option, const char *name); public: struct File : public String { @@ -279,10 +282,11 @@ public: int font; String highlight; int optimize_speed; + bool pch, nopch, noblitz; void operator=(const String& s) { String::operator=(s); readonly = separator = false; } void Init() { readonly = separator = false; tabsize = Null; charset = 0; font = 0; - optimize_speed = false; } + optimize_speed = false; pch = nopch = noblitz = false; } File() { Init(); } File(const String& s) : String(s) { Init(); } diff --git a/uppsrc/ide/Core/Core.upp b/uppsrc/ide/Core/Core.upp index a6f09929c..23e73279d 100644 --- a/uppsrc/ide/Core/Core.upp +++ b/uppsrc/ide/Core/Core.upp @@ -5,7 +5,7 @@ uses plugin/bz2; file - Core.h, + Core.h options PCH, Core.cpp, Hdepend.cpp optimize_speed, Package.cpp, diff --git a/uppsrc/ide/Core/Host.cpp b/uppsrc/ide/Core/Host.cpp index d8b7fc3fa..900e5fe44 100644 --- a/uppsrc/ide/Core/Host.cpp +++ b/uppsrc/ide/Core/Host.cpp @@ -143,6 +143,11 @@ bool LocalHost::Wait(int slot) return IdeConsoleWait(slot); } +void LocalHost::OnFinish(Callback cb) +{ + IdeConsoleOnFinish(cb); +} + One LocalHost::StartProcess(const char *cmdline) { try { diff --git a/uppsrc/ide/Core/Host.h b/uppsrc/ide/Core/Host.h index 4a685c3ae..6be6bb5f3 100644 --- a/uppsrc/ide/Core/Host.h +++ b/uppsrc/ide/Core/Host.h @@ -25,6 +25,7 @@ struct Host { virtual bool Run(const char *cmdline, Stream& out, int slot, String key, int blitz_count) = 0; virtual bool Wait() = 0; virtual bool Wait(int slot) = 0; + virtual void OnFinish(Callback cb) = 0; virtual One StartProcess(const char *cmdline) = 0; virtual void Launch(const char *cmdline, bool console = false) = 0; virtual void AddFlags(Index& cfg) = 0; @@ -58,6 +59,7 @@ struct LocalHost : Host { virtual bool Run(const char *cmdline, Stream& out, int slot, String key, int blitz_count); virtual bool Wait(); virtual bool Wait(int slot); + virtual void OnFinish(Callback cb); virtual One StartProcess(const char *cmdline); virtual void Launch(const char *cmdline, bool console); virtual void AddFlags(Index& cfg); diff --git a/uppsrc/ide/Core/Package.cpp b/uppsrc/ide/Core/Package.cpp index d16a23bd6..12da93bfb 100644 --- a/uppsrc/ide/Core/Package.cpp +++ b/uppsrc/ide/Core/Package.cpp @@ -190,6 +190,17 @@ byte CharsetByNameX(const String& s) return s == "UTF-8-BOM" ? CHARSET_UTF8_BOM : CharsetByName(s); } +void Package::Option(bool& option, const char *name) +{ + File& f = file.Top(); + for(int i = 0; i < f.option.GetCount(); i++) // Ugly BW compatibility hack + if(f.option[i].text == name) { + f.option.Remove(i); + option = true; + break; + } +} + bool Package::Load(const char *path) { for(;;) { @@ -264,38 +275,51 @@ bool Package::Load(const char *path) else if(p.Id("file")) { do { - File f(ReadValue(p)); - file.Add() = pick(f); + File fv(ReadValue(p)); + File& f = file.Add(); + f = pick(fv); while(!p.IsChar(',') && !p.IsChar(';')) { - if(!LoadFOpt(p, "options", file.Top().option) && - !LoadFOpt(p, "depends", file.Top().depends)) { + if(!LoadFOpt(p, "options", f.option) && + !LoadFOpt(p, "depends", f.depends)) { if(p.Id("optimize_speed")) - file.Top().optimize_speed = true; + f.optimize_speed = true; else if(p.Id("optimize_size")) - file.Top().optimize_speed = false; + f.optimize_speed = false; + else + if(p.Id("pch")) + f.pch = true; + else + if(p.Id("nopch")) + f.nopch = true; + else + if(p.Id("noblitz")) + f.noblitz = true; else if(p.Id("readonly")) - file.Top().readonly = true; + f.readonly = true; else if(p.Id("separator")) - file.Top().separator = true; + f.separator = true; else if(p.Id("charset")) - file.Top().charset = CharsetByNameX(p.ReadString()); + f.charset = CharsetByNameX(p.ReadString()); else if(p.Id("tabsize")) - file.Top().tabsize = minmax(p.ReadInt(), 1, 20); + f.tabsize = minmax(p.ReadInt(), 1, 20); else if(p.Id("font")) - file.Top().font = minmax(p.ReadInt(), 0, 3); + f.font = minmax(p.ReadInt(), 0, 3); else if(p.Id("highlight")) - file.Top().highlight = p.ReadId(); + f.highlight = p.ReadId(); else - p.ThrowError("invalid keyword"); + p.SkipTerm(); } } + Option(f.pch, "PCH"); + Option(f.nopch, "NOPCH"); + Option(f.noblitz, "NOBLITZ"); } while(p.Char(',')); } @@ -319,7 +343,7 @@ bool Package::Load(const char *path) if(p.Id("custom")) custom.Add().Load(p); else - p.ThrowError("invalid keyword"); + p.SkipTerm(); } p.Char(';'); } @@ -424,6 +448,13 @@ bool Package::Save(const char *path) const { out << " font " << f.font; if(f.optimize_speed) out << " optimize_speed"; + if(f.pch) +// out << " pch"; // good solution, but not backward compatible + out << " options PCH"; + if(f.nopch) + out << " options NOPCH"; + if(f.noblitz) + out << " options NOBLITZ"; if(f.charset > 0 && f.charset < CharsetCount() || f.charset == CHARSET_UTF8) out << " charset " << AsCString(CharsetName(f.charset)); else diff --git a/uppsrc/ide/Debuggers/Debuggers.upp b/uppsrc/ide/Debuggers/Debuggers.upp index 79c3599dd..d5db62db4 100644 --- a/uppsrc/ide/Debuggers/Debuggers.upp +++ b/uppsrc/ide/Debuggers/Debuggers.upp @@ -6,7 +6,7 @@ uses HexView; file - Debuggers.h, + Debuggers.h options PCH, Debuggers.iml, Gdb.lay, Terminal.cpp, diff --git a/uppsrc/ide/LayDes/LayDes.upp b/uppsrc/ide/LayDes/LayDes.upp index 5fdb6ea6b..e2e9c110b 100644 --- a/uppsrc/ide/LayDes/LayDes.upp +++ b/uppsrc/ide/LayDes/LayDes.upp @@ -8,7 +8,7 @@ uses CodeEditor; file - LayDes.h, + LayDes.h options PCH, laydes.key, sdiff.cpp, laylib.cpp, diff --git a/uppsrc/ide/UppDlg.cpp b/uppsrc/ide/UppDlg.cpp index 3d784e694..3f53a8d5c 100644 --- a/uppsrc/ide/UppDlg.cpp +++ b/uppsrc/ide/UppDlg.cpp @@ -34,7 +34,7 @@ struct DependsDisplay : Display { WString txt = q; w.DrawRect(r, paper); w.Clipoff(r.left + 10, r.top, r.Width() - 20, r.Height()); - Image img = IdeFileImage(q); + Image img = IdeFileImage(q, false, false, false); Size isz = img.GetSize(); w.DrawImage(0, (r.Height() - isz.cy) / 2, img); int tcy = GetTLTextHeight(txt, StdFont()); @@ -93,8 +93,13 @@ void PackageEditor::SaveOptions() { actual.accepts = Split(accepts.GetText().ToString(), ' '); actual.optimize_speed = optimize_speed; actual.noblitz = noblitz; - if(IsActiveFile()) - ActiveFile().optimize_speed = optimize_speed_file; + if(IsActiveFile()) { + Package::File& f = ActiveFile(); + f.optimize_speed = optimize_speed_file; + f.pch = pch_file; + f.nopch = nopch_file; + f.noblitz = noblitz_file; + } SavePackage(); } } @@ -130,8 +135,12 @@ void PackageEditor::FileEmpty() fileoption.Disable(); optimize_speed_file = false; optimize_speed_file.Disable(); - include_path_file = false; - include_path_file.Disable(); + pch_file = false; + pch_file.Disable(); + nopch_file = false; + nopch_file.Disable(); + noblitz_file = false; + noblitz_file.Disable(); includeable_file = false; includeable_file.Disable(); } @@ -362,9 +371,17 @@ void PackageEditor::FileCursor() Package::File& f = ActiveFile(); if(!f.separator) { String p = GetActiveFilePath(); - bool tpp = GetFileExt(p) == ".tpp" && IsFolder(p); + String ext = ToLower(GetFileExt(p)); + bool tpp = ext == ".tpp" && IsFolder(p); + bool hdr = findarg(ext, ".h", ".hpp", ".hh", ".hxx") >= 0 && !tpp; optimize_speed_file.Enable(!tpp); - optimize_speed_file <<= actual.file[actualfileindex].optimize_speed; + optimize_speed_file <<= f.optimize_speed; + pch_file.Enable(hdr); + pch_file <<= f.pch; + nopch_file.Enable(!hdr); + nopch_file <<= f.nopch; + noblitz_file.Enable(!tpp); + noblitz_file <<= f.noblitz; includeable_file.Enable(tpp); includeable_file <<= FileExists(AppendFileName(p, "all.i")); fileoption.Enable(); @@ -577,7 +594,9 @@ PackageEditor::PackageEditor() noblitz <<= optimize_speed <<= optimize_speed_file <<= - include_path_file <<= THISBACK(SaveOptionsLoad); + pch_file <<= + nopch_file <<= + noblitz_file <<= THISBACK(SaveOptionsLoad); includeable_file <<= THISBACK(ToggleIncludeable); @@ -603,6 +622,8 @@ PackageEditor::PackageEditor() ink <<= bold <<= italic <<= THISBACK(SaveOptionsLoad); + + FileCursor(); } void EditPackages(const char *main, const char *startwith, String& cfg) { diff --git a/uppsrc/ide/UppWspc.cpp b/uppsrc/ide/UppWspc.cpp index 7546c28d3..87bd13b3c 100644 --- a/uppsrc/ide/UppWspc.cpp +++ b/uppsrc/ide/UppWspc.cpp @@ -257,7 +257,7 @@ void WorkspaceWork::LoadActualPackage() } } } - Image m = IdeFileImage(f, f.optimize_speed); + Image m = IdeFileImage(f, f.optimize_speed, false, f.pch); if(GetFileExt(p) == ".tpp" && IsFolder(p)) { if(FileExists(AppendFileName(p, "all.i"))) m = TopicImg::IGroup(); diff --git a/uppsrc/ide/ide.h b/uppsrc/ide/ide.h index 807a72c6f..1de4cfc10 100644 --- a/uppsrc/ide/ide.h +++ b/uppsrc/ide/ide.h @@ -55,7 +55,7 @@ public: protected: struct Slot { - Slot() : outfile(NULL), quiet(true), exitcode(Null) {} + Slot() : outfile(NULL), quiet(true), exitcode(Null) { serial = INT_MAX; } One process; String cmdline; @@ -66,6 +66,7 @@ protected: bool quiet; int exitcode; int last_msecs; + int serial; }; struct Group { @@ -77,9 +78,15 @@ protected: int msecs; int raw_msecs; }; + + struct Finisher { + int serial; + Callback cb; + }; Array processes; ArrayMap groups; + Array finisher; Vector error_keys; String current_group; String spooled_output; @@ -87,6 +94,7 @@ protected: bool wrap_text; FrameBottom input; String line; + int serial; void CheckEndGroup(); void FlushConsole(); @@ -121,6 +129,8 @@ public: Vector PickErrors() { Vector e = pick(error_keys); error_keys.Clear(); return pick(e); } void Wait(int slot); bool Wait(); + + void OnFinish(Callback cb); void WrapText(bool w) { wrap_text = w; } @@ -573,6 +583,7 @@ public: virtual void IdeConsoleEndGroup(); virtual bool IdeConsoleWait(); virtual bool IdeConsoleWait(int slot); + virtual void IdeConsoleOnFinish(Callback cb); virtual bool IdeIsDebug() const; virtual void IdeEndDebug(); diff --git a/uppsrc/ide/ide.lay b/uppsrc/ide/ide.lay index fc3131842..5dc07f150 100644 --- a/uppsrc/ide/ide.lay +++ b/uppsrc/ide/ide.lay @@ -106,28 +106,30 @@ LAYOUT(FindFileLayout, 450, 280) ITEM(Button, cancel, SetLabel(t_("Cancel")).RightPosZ(4, 80).BottomPosZ(4, 22)) END_LAYOUT -LAYOUT(UppLayout, 800, 576) +LAYOUT(UppLayout, 848, 576) UNTYPED(package, LeftPosZ(4, 240).VSizePosZ(4, 196)) - ITEM(Label, dv___1, SetLabel(t_("Description")).LeftPosZ(248, 64).TopPosZ(4, 19)) - ITEM(DataPusher, description, HSizePosZ(308, 212).TopPosZ(4, 20)) - ITEM(Option, optimize_speed, SetLabel(t_("Optimize for speed")).LeftPosZ(248, 120).TopPosZ(28, 20)) - ITEM(Label, dv___4, SetLabel(t_("&Accepts")).HSizePosZ(368, 388).TopPosZ(28, 19)) - ITEM(EditString, accepts, HSizePosZ(412, 272).TopPosZ(28, 19)) - ITEM(Label, dv___6, SetLabel(t_("Encoding")).RightPosZ(208, 48).TopPosZ(28, 19)) - ITEM(DropList, charset, RightPosZ(92, 112).TopPosZ(28, 19)) - ITEM(Option, noblitz, SetLabel(t_("No BLITZ")).RightPosZ(6, 76).TopPosZ(28, 20)) - ITEM(ArrayCtrl, option, HSizePosZ(248, 4).VSizePosZ(52, 128)) UNTYPED(filelist, LeftPosZ(4, 240).BottomPosZ(4, 188)) - ITEM(ArrayCtrl, fileoption, HSizePosZ(248, 4).BottomPosZ(32, 92)) - ITEM(Option, optimize_speed_file, SetLabel(t_("Optimize the file for speed")).LeftPosZ(248, 152).BottomPosZ(9, 19)) - ITEM(Option, include_path_file, SetLabel(t_("Add to include path")).RightPosZ(268, 124).BottomPosZ(9, 19)) - ITEM(Option, includeable_file, SetLabel(t_("Includeable group")).RightPosZ(140, 120).BottomPosZ(9, 19)) - ITEM(Button, ok, SetLabel(t_("OK")).RightPosZ(72, 64).BottomPosZ(6, 22)) - ITEM(Button, cancel, SetLabel(t_("Cancel")).RightPosZ(4, 64).BottomPosZ(6, 22)) - ITEM(Label, dv___17, SetLabel(t_("Highlight")).RightPosZ(156, 48).TopPosZ(4, 19)) - ITEM(ColorPusher, ink, RightPosZ(104, 52).TopPosZ(4, 20)) - ITEM(Option, bold, SetLabel(t_("Bold")).RightPosZ(56, 44).TopPosZ(4, 20)) - ITEM(Option, italic, SetLabel(t_("Italic")).RightPosZ(8, 44).TopPosZ(4, 20)) + ITEM(Label, dv___2, SetLabel(t_("Description")).LeftPosZ(248, 64).TopPosZ(4, 19)) + ITEM(DataPusher, description, HSizePosZ(308, 212).TopPosZ(4, 20)) + ITEM(Label, dv___4, SetLabel(t_("Highlight")).RightPosZ(160, 48).TopPosZ(4, 19)) + ITEM(ColorPusher, ink, RightPosZ(108, 52).TopPosZ(4, 20)) + ITEM(Option, bold, SetLabel(t_("Bold")).RightPosZ(60, 44).TopPosZ(4, 20)) + ITEM(Option, italic, SetLabel(t_("Italic")).RightPosZ(12, 44).TopPosZ(4, 20)) + ITEM(Option, optimize_speed, SetLabel(t_("Optimize for speed")).LeftPosZ(248, 120).TopPosZ(28, 20)) + ITEM(Label, dv___9, SetLabel(t_("&Accepts")).HSizePosZ(368, 436).TopPosZ(28, 19)) + ITEM(EditString, accepts, HSizePosZ(412, 268).TopPosZ(28, 19)) + ITEM(Label, dv___11, SetLabel(t_("Encoding")).RightPosZ(212, 48).TopPosZ(28, 19)) + ITEM(DropList, charset, RightPosZ(96, 112).TopPosZ(28, 19)) + ITEM(Option, noblitz, SetLabel(t_("No BLITZ")).RightPosZ(10, 76).TopPosZ(28, 20)) + ITEM(ArrayCtrl, option, HSizePosZ(248, 8).VSizePosZ(52, 152)) + ITEM(ArrayCtrl, fileoption, HSizePosZ(248, 8).BottomPosZ(48, 100)) + ITEM(Option, optimize_speed_file, SetLabel(t_("Optimize the file for speed")).LeftPosZ(248, 152).BottomPosZ(25, 19)) + ITEM(Option, includeable_file, SetLabel(t_("Includeable group")).LeftPosZ(404, 116).BottomPosZ(25, 19)) + ITEM(Option, pch_file, SetLabel(t_("Precompile header")).LeftPosZ(248, 120).BottomPosZ(5, 19)) + ITEM(Option, nopch_file, SetLabel(t_("Do not use precompiled header")).LeftPosZ(376, 180).BottomPosZ(5, 19)) + ITEM(Option, noblitz_file, SetLabel(t_("Exclude from BLITZ")).LeftPosZ(560, 132).BottomPosZ(5, 19)) + ITEM(Button, ok, SetLabel(t_("OK")).RightPosZ(76, 64).BottomPosZ(6, 22)) + ITEM(Button, cancel, SetLabel(t_("Cancel")).RightPosZ(8, 64).BottomPosZ(6, 22)) END_LAYOUT LAYOUT(NewPackageLayout, 728, 560) diff --git a/uppsrc/ide/ide.upp b/uppsrc/ide/ide.upp index 343a61b49..81f43f59e 100644 --- a/uppsrc/ide/ide.upp +++ b/uppsrc/ide/ide.upp @@ -25,7 +25,7 @@ link(WIN32 MSC) /MAP; file IDE readonly separator, - ide.h, + ide.h options PCH, version.h, UppDlg.h, BaseDlg.cpp, diff --git a/uppsrc/ide/idewin.cpp b/uppsrc/ide/idewin.cpp index 6051f861b..99688aeaa 100644 --- a/uppsrc/ide/idewin.cpp +++ b/uppsrc/ide/idewin.cpp @@ -162,6 +162,11 @@ bool Ide::IdeConsoleWait(int slot) return true; } +void Ide::IdeConsoleOnFinish(Callback cb) +{ + console.OnFinish(cb); +} + void Ide::IdeSetRight(Ctrl& ctrl) { right.Add(ctrl.SizePos()); diff --git a/uppsrc/usvn/usvn.upp b/uppsrc/usvn/usvn.upp index 6daf0c9ba..41f5c2254 100644 --- a/uppsrc/usvn/usvn.upp +++ b/uppsrc/usvn/usvn.upp @@ -4,7 +4,7 @@ uses TextDiffCtrl; file - usvn.h, + usvn.h options PCH, Console.cpp, SvnFs.cpp, SvnWorks.cpp,