MCPcopy Create free account
hub / github.com/beefytech/Beef / Compile

Method Compile

BeefBoot/BootApp.cpp:785–964  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

783}
784
785bool BootApp::Compile()
786{
787 DWORD startTick = BFTickCount();
788
789 mSystem = BfSystem_Create();
790
791 mCompiler = BfSystem_CreateCompiler(mSystem, false);
792
793 String projectName = GetFileName(mTargetPath);
794 int dotPos = (int)projectName.IndexOf('.');
795 if (dotPos != -1)
796 projectName.RemoveToEnd(dotPos);
797 if (projectName.IsEmpty())
798 projectName.Append("BeefProject");
799
800 mProject = BfSystem_CreateProject(mSystem, projectName.c_str(), GetFileDir(mTargetPath).c_str());
801
802 if (mIsCERun)
803 {
804 mCELibProject = BfSystem_CreateProject(mSystem, "BeefLib", GetFileDir(mTargetPath).c_str());
805
806 BfProjectFlags flags = BfProjectFlags_None;
807 BfProject_SetOptions(mCELibProject, BfTargetType_BeefLib, "", mDefines.c_str(), mOptLevel, 0, 0, 0, flags);
808 }
809
810 if (!mDefines.IsEmpty())
811 mDefines.Append("\n");
812 mDefines.Append("BF_64_BIT");
813 mDefines.Append("\nBF_LITTLE_ENDIAN");
814 mDefines.Append("\n");
815 mDefines.Append(BF_PLATFORM_NAME);
816
817 int ltoType = 0;
818 BfProjectFlags flags = BfProjectFlags_None;
819 if (mIsCERun)
820 {
821 flags = (BfProjectFlags)(flags | BfProjectFlags_SingleModule | BfProjectFlags_AlwaysIncludeAll);
822 if (mAsmKind == BfAsmKind_ATT)
823 flags = (BfProjectFlags)(flags | BfProjectFlags_AsmOutput | BfProjectFlags_AsmOutput_ATT);
824 else if (mAsmKind == BfAsmKind_Intel)
825 flags = (BfProjectFlags)(flags | BfProjectFlags_AsmOutput);
826 }
827 BfProject_SetOptions(mProject, mTargetType, mStartupObject.c_str(), mDefines.c_str(), mOptLevel, ltoType, 0, 0, flags);
828
829 if (mCELibProject != NULL)
830 BfProject_AddDependency(mProject, mCELibProject);
831
832 mPassInstance = BfSystem_CreatePassInstance(mSystem);
833
834 Beefy::String exePath;
835 BfpGetStrHelper(exePath, [](char* outStr, int* inOutStrSize, BfpResult* result)
836 {
837 BfpSystem_GetExecutablePath(outStr, inOutStrSize, (BfpSystemResult*)result);
838 });
839 mBuildDir = GetFileDir(exePath) + "/build";
840
841 RecursiveCreateDirectory(mBuildDir + "/" + projectName);
842 if (mIsCERun)

Callers 1

mainFunction · 0.45

Calls 15

BfSystem_CreateCompilerFunction · 0.85
BfProject_SetOptionsFunction · 0.85
BfProject_AddDependencyFunction · 0.85
BfpGetStrHelperFunction · 0.85
BfCompiler_SetOptionsFunction · 0.85
BfPassInstance_DeleteFunction · 0.85
BfCompiler_DeleteFunction · 0.85
BfSystem_DeleteFunction · 0.85
AppendMethod · 0.80

Tested by

no test coverage detected