#ifndef MAKEFILE_GENERATOR
CompilerConfig compiler = null;
if(ide && ide.workspace)
- compiler = ideSettings.GetCompilerConfig(ide.workspace.compiler);
+ compiler = ideSettings.GetCompilerConfig(ide.workspace.activeCompiler);
return compiler;
#else
incref defaultCompiler;
const char * PlatformToMakefileTargetVariable(Platform platform)
{
- return platform == win32 ? "WINDOWS_TARGET" :
- platform == tux ? "LINUX_TARGET" :
- platform == apple ? "OSX_TARGET" :
- "ERROR_BAD_TARGET";
+ return platform == win32 ? "WINDOWS_TARGET" :
+ platform == tux ? "LINUX_TARGET" :
+ platform == apple ? "OSX_TARGET" :
+ platform == emscripten ? "EMSCRIPTEN_TARGET" :
+ platform == pnacl ? "PNACL_TARGET" :
+ "ERROR_BAD_TARGET";
}
const char * TargetTypeToMakefileVariable(TargetTypes targetType)
if(projectView)
{
- CompilerConfig compiler = ideSettings.GetCompilerConfig(projectView.workspace.compiler);
+ CompilerConfig compiler = ideSettings.GetCompilerConfig(projectView.workspace.activeCompiler);
projectView.AddNode(topNode, null);
topNode.row.Move(prev);
bool Save(const char * fileName)
{
File f;
- /*char output[MAX_LOCATION];
- ChangeExtension(fileName, "json", output);
- f = FileOpen(output, write);*/
f = FileOpen(fileName, write);
if(f)
{
message = $"Linker ";
numWarnings++;
}
- else if(!strstr(line, "error:"))
+ else if(strstr(line, "error:"))
{
message = $"Linker Error: ";
numErrors++;
}
}
- bool Build(BuildType buildType, List<ProjectNode> onlyNodes, CompilerConfig compiler, ProjectConfig config, int bitDepth, bool justPrint, SingleFileCompileMode mode)
+ bool Build(BuildType buildType, List<ProjectNode> onlyNodes, CompilerConfig compiler, ProjectConfig config, int bitDepth, bool justPrint, bool raw, SingleFileCompileMode mode)
{
bool result = false;
DualPipe f;
bool eC_Debug = mode.eC_ToolsDebug;
bool singleProjectOnlyNode = onlyNodes && onlyNodes.count == 1 && onlyNodes[0].type == project;
- int numJobs = compiler.numJobs;
+ int numJobs = ide.toolBar.forceSingleJob.checked == true ? 1 : compiler.numJobs;
char command[MAX_F_STRING*4];
char * compilerName = CopyString(compiler.name);
Map<String, NameCollisionInfo> cfgNameCollisions;
compilerName,
objFileExt ? " O=." : "", objFileExt ? objFileExt : "",
topNode.path, justPrint ? " -n" : "", makeFilePath);
- if(justPrint)
+ if(justPrint || raw)
ide.outputView.buildBox.Logf("%s\n", command);
Execute(command);
}
// TODO: support justPrint
sprintf(command, "%s /useenv /nologo /logcommands %s.sln %s|Win32", compiler.makeCommand, name, config.name);
- if(justPrint)
+ if(justPrint || raw)
ide.outputView.buildBox.Logf("%s\n", command);
if((f = DualPipeOpen(PipeOpenMode { output = true, error = true/*, input = true*/ }, command)))
{
(compiler.ccacheEnabled && !eC_Debug) ? "CCACHE=y " : "",
(compiler.distccEnabled && !eC_Debug) ? "DISTCC=y " : "",
(String)makeTargets, topNode.path, (justPrint || eC_Debug) ? " -n" : "", makeFilePath);
- if(justPrint)
+ if(justPrint || raw)
ide.outputView.buildBox.Logf("%s\n", command);
if((f = DualPipeOpen(PipeOpenMode { output = true, error = true, input = true }, command)))
if(found)
result = true;
}
- else if(justPrint)
+ else if(justPrint || raw)
result = ProcessPipeOutputRaw(f);
else
result = ProcessBuildPipeOutput(f, objDirExp, buildType, onlyNodes, compiler, config, bitDepth);
return result;
}
- void Clean(CompilerConfig compiler, ProjectConfig config, int bitDepth, CleanType cleanType, bool justPrint)
+ void Clean(CompilerConfig compiler, ProjectConfig config, int bitDepth, CleanType cleanType, bool justPrint, bool raw)
{
char makeFile[MAX_LOCATION];
char makeFilePath[MAX_LOCATION];
// TODO: justPrint support
sprintf(command, "%s /useenv /clean /nologo /logcommands %s.sln %s|Win32", compiler.makeCommand, name, config.name);
- if(justPrint)
+ if(justPrint || raw)
ide.outputView.buildBox.Logf("%s\n", command);
if((f = DualPipeOpen(PipeOpenMode { output = true, error = true, input = true }, command)))
{
objFileExt ? " O=." : "", objFileExt ? objFileExt : "",
cleanType == realClean ? "real" : "", cleanType == cleanTarget ? "target" : "",
topNode.path, justPrint ? " -n": "", makeFilePath);
- if(justPrint)
+ if(justPrint || raw)
ide.outputView.buildBox.Logf("%s\n", command);
if((f = DualPipeOpen(PipeOpenMode { output = true, error = true, input = true }, command)))
{
ide.outputView.buildBox.Tellf($"Deleting %s%s...",
cleanType == realClean ? $"intermediate objects directory" : $"target",
cleanType == clean ? $" and object files" : "");
- if(justPrint)
+ if(justPrint || raw)
ProcessPipeOutputRaw(f);
else
ProcessCleanPipeOutput(f, compiler, config);
sprintf(target, "%s %s", target, args);
GetWorkingDir(oldDirectory, MAX_LOCATION);
- if(strlen(ide.workspace.debugDir))
+ if(ide.workspace.debugDir && strlen(ide.workspace.debugDir))
{
char temp[MAX_LOCATION];
strcpy(temp, topNode.path);
delete target;
}
- bool Compile(List<ProjectNode> nodes, CompilerConfig compiler, ProjectConfig config, int bitDepth, bool justPrint, SingleFileCompileMode mode)
+ bool Compile(List<ProjectNode> nodes, CompilerConfig compiler, ProjectConfig config, int bitDepth, bool justPrint, bool raw, SingleFileCompileMode mode)
{
- return Build(build, nodes, compiler, config, bitDepth, justPrint, mode);
+ return Build(build, nodes, compiler, config, bitDepth, justPrint, raw, mode);
}
#endif
f.Puts("ifdef WINDOWS_TARGET\n");
f.Puts("WINDRES := $(GCC_PREFIX)windres\n");
f.Puts(" ifdef ARCH\n");
- f.Puts(" ifeq \"$(ARCH)\" \"x32\"\n");
+ f.Puts(" ifeq ($(ARCH),x32)\n");
f.Puts("WINDRES_FLAGS := -F pe-i386\n");
f.Puts(" else\n");
- f.Puts(" ifeq \"$(ARCH)\" \"x64\"\n");
+ f.Puts(" ifeq ($(ARCH),x64)\n");
f.Puts("WINDRES_FLAGS := -F pe-x86-64\n");
f.Puts(" endif\n");
f.Puts(" endif\n");
// Important: We cannot use this ifdef anymore, EXECUTABLE_TARGET is not yet defined. It's embedded in the crossplatform.mk EXECUTABLE
//f.Puts("ifdef EXECUTABLE_TARGET\n");
+ f.Puts("ifneq ($(COMPILER),pnacl)\n");
f.Printf("CONSOLE = %s\n", GetConsole(config) ? "-mconsole" : "-mwindows");
+ f.Puts("endif\n");
//f.Puts("endif\n");
f.Puts("\n");
if(ifCount)
f.Puts("else\n");
ifCount++;
- f.Printf("ifeq \"$(TARGET_TYPE)\" \"%s\"\n", TargetTypeToMakefileVariable(type));
+ f.Printf("ifeq ($(TARGET_TYPE),%s)\n", TargetTypeToMakefileVariable(type));
GetMakefileTargetFileName(type, target, config);
strcpy(temp, targetDir);
f.Puts("\t$(UPX) $(UPXFLAGS) $(TARGET)\n");
f.Puts("endif\n");
f.Puts("else\n");
- //f.Puts("ifneq \"$(TARGET_ARCH)\" \"x86_64\"\n");
+ //f.Puts("ifneq ($(TARGET_ARCH),x86_64)\n");
f.Puts("\t$(UPX) $(UPXFLAGS) $(TARGET)\n");
//f.Puts("endif\n");
f.Puts("endif\n");