1
0
Fork 0
mirror of https://github.com/beefytech/Beef.git synced 2025-06-08 03:28:20 +02:00
Beef/BeefBoot/BootApp.h

88 lines
1.6 KiB
C
Raw Normal View History

2019-08-23 11:56:54 -07:00
#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;
bool mHadCmdLine;
bool mShowedHelp;
bool mHadErrors;
Array<String> mRequestedSrc;
BfOptLevel mOptLevel;
BfToolsetType mToolset;
2019-08-23 11:56:54 -07:00
bool mEmitIR;
String mBuildDir;
String mWorkingDir;
String mDefines;
String mStartupObject;
String mTargetPath;
String mLinkParams;
BfAsmKind mAsmKind;
2019-08-23 11:56:54 -07:00
void* mSystem;
void* mCompiler;
void* mProject;
2019-08-23 11:56:54 -07:00
void* mPassInstance;
bool mIsCERun;
void* mCELibProject;
String mCESrc;
String mCEDest;
2019-08-23 11:56:54 -07:00
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);
2019-08-23 11:56:54 -07:00
void QueueFile(const StringImpl& path, void* project);
2019-08-23 11:56:54 -07:00
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