|
|
Home » U++ Library support » U++ Library : Other (not classified elsewhere) » umk got changed....
Re: umk got changed.... [message #34803 is a reply to message #34802] |
Tue, 13 December 2011 02:07 |
nixnixnix
Messages: 415 Registered: February 2007 Location: Kelowna, British Columbia
|
Senior Member |
|
|
Hi Honza,
If you could replace the ":" with ";" to make umk windows compatible the only problem then the fact that umk.exe does not recognise the output path.
Two reasonably small problems?
Nick
CONSOLE_APP_MAIN
{
Ide ide;
TheIde(&ide);
ide.console.SetSlots(CPU_Cores());
ide.console.console = true;
bool clset = false;
const Vector<String>& arg = CommandLine();
if(arg.GetCount() >= 3) {
for(int i = 3; i < arg.GetCount(); i++)
if(arg[i][0] == '-') {
String x = arg[i];
for(int i = 1; i < x.GetCount(); i++) {
if(x[i] == 'l')
SilentMode = true;
if(x[i] == 'v')
ide.console.verbosebuild = true;
}
}
String v = GetUmkFile(arg[0] + ".var");
if(!FileExists(v)) {
Vector<String> h = Split(arg[0], ';'); // this change makes it windows compatible ?
for(int i = 0; i < h.GetCount(); i++)
h[i] = GetFullPath(TrimBoth(h[i]));
String x = Join(h, ";");
SetVar("UPP", x, false);
PutVerbose("Inline assembly: " + x);
String outdir = ConfigFile("_out"); // this line makes the output path not work?
RealizeDirectory(outdir);
SetVar("OUTPUT", outdir, false);
}
else {
if(!LoadVars(v)) {
Puts("Invalid assembly\n");
SetExitCode(2);
return;
}
PutVerbose("Assembly file: " + v);
PutVerbose("Assembly: " + GetVar("UPP"));
}
PutVerbose("Output directory: " + GetVar("OUTPUT"));
v = SourcePath(arg[1], GetFileTitle(arg[1]) + ".upp");
PutVerbose("Main package: " + v);
if(!FileExists(v)) {
Puts("Package does not exist\n");
SetExitCode(2);
return;
}
ide.main = arg[1];
ide.wspc.Scan(ide.main);
clset = true;
bool stoponerror = false;
const Workspace& wspc = ide.IdeWorkspace();
if(!wspc.GetCount()) {
Puts("Empty assembly\n");
SetExitCode(4);
return;
}
const Array<Package::Config>& f = wspc.GetPackage(0).config;
if(f.GetCount())
ide.mainconfigparam = f[0].param;
String m = arg[2];
String bp = GetBuildMethodPath(m);
PutVerbose("Build method: " + bp);
if(bp.GetCount() == 0) {
SilentMode = false;
Puts("Invalid build method\n");
SetExitCode(3);
return;
}
ide.method <<= m;
ide.debug.def.blitz = ide.release.def.blitz = 0;
ide.debug.def.debug = 2;
ide.release.def.debug = 0;
ide.debug.package.Clear();
ide.release.package.Clear();
ide.debug.linkmode = ide.release.linkmode = 0;
ide.release.createmap = ide.debug.createmap = false;
ide.targetmode = 0;
bool clean = false;
bool makefile = false;
int exporting = 0;
String mkf;
for(int i = 3; i < arg.GetCount(); i++)
if(arg[i][0] == '+' || arg[i][0] == '>')
ide.mainconfigparam = Filter(~arg[i] + 1, CommaSpace);
else
if(arg[i][0] == '-') {
String x = arg[i];
for(int i = 1; i < x.GetCount(); i++)
switch(x[i]) {
case 'a':
clean = true;
break;
case 'r':
ide.targetmode = 1;
break;
case '1':
ide.targetmode = 2;
break;
case '2':
ide.targetmode = 3;
break;
case 'm':
ide.release.createmap = ide.debug.createmap = true;
break;
case 'b':
ide.release.def.blitz = ide.debug.def.blitz = 1;
break;
case 's':
ide.debug.linkmode = ide.release.linkmode = 1;
break;
case 'd':
ide.debug.def.debug = 0;
break;
case 'S':
ide.debug.linkmode = ide.release.linkmode = 2;
break;
case 'e':
stoponerror = true;
break;
case 'M':
makefile = true;
break;
case 'v':
ide.console.verbosebuild = true;
break;
case 'l':
break;
case 'x':
exporting = 1;
break;
case 'X':
exporting = 2;
break;
case 'H':
if(i + 1 < x.GetCount() && x[i + 1] >= '1' && x[i + 1] <= '9')
ide.console.SetSlots(x[++i] - '0');
else
ide.console.SetSlots(1);
break;
default:
SilentMode = false;
Puts("Invalid build option(s)");
SetExitCode(3);
return;
}
}
else {
ide.debug.target_override = ide.release.target_override = true;
ide.debug.target = ide.release.target = mkf = arg[i];
}
if(clean)
ide.Clean();
if(exporting) {
mkf = GetFullPath(mkf);
Cout() << mkf << '\n';
RealizeDirectory(mkf);
if(makefile)
ide.ExportMakefile(mkf);
else
ide.ExportProject(mkf, exporting == 2);
}
else
if(makefile) {
ide.SaveMakeFile(IsNull(mkf) ? "Makefile" : mkf, false);
SetExitCode(0);
}
else
if(ide.Build())
SetExitCode(0);
else
SetExitCode(1);
}
else
Puts("Usage: umk assembly main_package build_method -options [+flags] [output]\n"
"Examples: umk examples Bombs GCC -ab +GUI,SHARED ~/bombs\n"
" umk examples:uppsrc Bombs ~/GCC.bm -rv +GUI,SHARED ~/bin\n"
"See http://www.ultimatepp.org/app$ide$umk$en-us.html for details\n");
}
[Updated on: Tue, 13 December 2011 02:17] Report message to a moderator
|
|
|
Goto Forum:
Current Time: Sun May 05 05:09:59 CEST 2024
Total time taken to generate the page: 0.02709 seconds
|
|
|