mirror of
https://github.com/ultimatepp/ultimatepp.git
synced 2026-05-15 14:16:07 -06:00
110 lines
2.8 KiB
C++
110 lines
2.8 KiB
C++
#include <Core/Core.h>
|
|
#include <plugin/bz2/bz2.h>
|
|
|
|
using namespace Upp;
|
|
|
|
void Log(const char *txt)
|
|
{
|
|
Cout() << txt << "\r\n";
|
|
}
|
|
|
|
void Error(const char *e)
|
|
{
|
|
Log(e);
|
|
abort();
|
|
}
|
|
|
|
String Syx(const char *s)
|
|
{
|
|
Log(s);
|
|
String r = Sys(s);
|
|
if(r.IsVoid())
|
|
Error("Failed: " + String(s));
|
|
return r;
|
|
}
|
|
|
|
void CopyFolder(const char *src, const char *dst, bool deep = true)
|
|
{
|
|
Cout() << Sprintf("Directory %s\n", src);
|
|
RealizeDirectory(dst);
|
|
FindFile ff(String(src) + "/*.*");
|
|
while(ff) {
|
|
String s = AppendFileName(src, ff.GetName());
|
|
String d = AppendFileName(dst, ff.GetName());
|
|
if(ff.IsFile()) {
|
|
String q = LoadFile(s);
|
|
String ext = ToLower(GetFileExt(s));
|
|
if(ext != ".aux" && ext != ".$old")
|
|
SaveFile(d, q);
|
|
}
|
|
else
|
|
if(ff.IsFolder() && *ff.GetName() != '.') {
|
|
if(deep || *GetFileExt(s))
|
|
CopyFolder(s, d, deep);
|
|
}
|
|
ff.Next();
|
|
}
|
|
}
|
|
|
|
int CrLfSm(int c)
|
|
{
|
|
return c == ';' || c == '\r' || c == '\n';
|
|
}
|
|
|
|
void CopyFolders(const char *src, const char *dst, const char *folders, bool deep = true)
|
|
{
|
|
Vector<String> folder = Split(LoadFile(folders), CrLfSm);
|
|
for(int i = 0; i < folder.GetCount(); i++)
|
|
CopyFolder(AppendFileName(src, folder[i]), AppendFileName(dst, folder[i]), deep);
|
|
}
|
|
|
|
String tmp = "u:/upp.tmp";
|
|
String upptmp = tmp + "/u";
|
|
String upp = "u:/upp.src";
|
|
String uppsrc = upp + "/uppsrc";
|
|
String win32 = "u:/theide";
|
|
|
|
void CopyIdeFile(const String& fn)
|
|
{
|
|
SaveFile(upptmp + '/' + fn, LoadFile(win32 + '/' + fn));
|
|
}
|
|
|
|
int NoDigit(int c) { return IsDigit(c) ? 0 : c; }
|
|
int FilterVersion(int c) { return c == ':' ? '_' : c; }
|
|
|
|
CONSOLE_APP_MAIN
|
|
{
|
|
if(FileExists("u:/theide/theide.exe"))
|
|
win32 = "u:/theide";
|
|
else
|
|
win32 = "u:/Win32/theide";
|
|
|
|
Vector<String> s = Split(Syx("svnversion " + upp), NoDigit);
|
|
if(s.GetCount() == 0)
|
|
Error("Invalid version");
|
|
String version = s.Top();
|
|
Log("version: " + version);
|
|
|
|
DeleteFolderDeep(tmp);
|
|
RealizeDirectory(tmp);
|
|
|
|
CopyFolders(uppsrc, upptmp + "/uppsrc", uppsrc + "/packages");
|
|
CopyFolders(uppsrc, upptmp + "/uppsrc", uppsrc + "/packages1", false);
|
|
CopyFolders(upp, upptmp, uppsrc + "/assemblies");
|
|
SaveFile(upptmp + "/uppsrc/ide/version.h", "#define IDE_VERSION \"" + version + "\"");
|
|
Syx(win32 + "/umk upptmp ide MSC9 -ar " + upptmp + "/theide.exe");
|
|
Syx(win32 + "/umk upptmp umk MSC9 -ar " + upptmp + "/umk.exe");
|
|
|
|
CopyIdeFile("dbghelp.dll");
|
|
CopyIdeFile("en-us.scd");
|
|
CopyIdeFile("en-gb.scd");
|
|
|
|
SetCurrentDirectory(upptmp);
|
|
|
|
SaveFile("install.upp", LoadFile(uppsrc + "/install.upp"));
|
|
SaveFile("license.chk", "1");
|
|
|
|
Syx(win32 + "/7za/7za.exe a " + tmp + "/upp.7z * -r -mx -m0fb=255 -mf=off");
|
|
SetCurrentDirectory(tmp);
|
|
Syx(win32 + "/umk uppbox WinInstaller2 MSC9 -ar u:/upp-win32-" + Filter(version, FilterVersion) + ".exe");
|
|
}
|