1
0
Fork 0
mirror of https://github.com/beefytech/Beef.git synced 2025-06-07 19:18:19 +02:00
Beef/BeefBoot/BootApp.h

88 lines
1.7 KiB
C++

#pragma once
#include "BeefBoot.h"
#include "BeefySysLib/FileStream.h"
#include "BeefySysLib/util/CritSect.h"
#include "BeefySysLib/util/String.h"
#include "BeefySysLib/util/Array.h"
#include "Compiler/BfSystem.h"
NS_BF_BEGIN
enum OutputPri
{
OutputPri_Low,
OutputPri_Normal,
OutputPri_High,
OutputPri_Warning,
OutputPri_Error,
OutputPri_Critical
};
enum Verbosity
{
Verbosity_Quiet,
Verbosity_Minimal,
Verbosity_Normal,
Verbosity_Detailed,
Verbosity_Diagnostic,
};
class BootApp
{
public:
CritSect mLogCritSect;
FileStream mLogFile;
Verbosity mVerbosity;
BfTargetType mTargetType;
String mTargetTriple;
bool mHadCmdLine;
bool mShowedHelp;
bool mHadErrors;
Array<String> mRequestedSrc;
BfOptLevel mOptLevel;
BfToolsetType mToolset;
bool mEmitIR;
String mBuildDir;
String mWorkingDir;
String mDefines;
String mStartupObject;
String mTargetPath;
String mLinkParams;
BfAsmKind mAsmKind;
void* mSystem;
void* mCompiler;
void* mProject;
void* mPassInstance;
bool mIsCERun;
void* mCELibProject;
String mCESrc;
String mCEDest;
public:
void Fail(const String & error);
void OutputLine(const String& text, OutputPri outputPri = OutputPri_Normal);
bool QueueRun(const String& fileName, const String& args, const String& workingDir, BfpSpawnFlags extraFlags);
bool CopyFile(const StringImpl& srcPath, const StringImpl& destPath);
void QueueFile(const StringImpl& path, void* project);
void QueuePath(const StringImpl& path);
void DoCompile();
void DoLinkMS();
void DoLinkGNU();
public:
BootApp();
~BootApp();
bool HandleCmdLine(const String& cmd, const String& param);
bool Init();
bool Compile();
};
extern BootApp* gApp;
NS_BF_END