Files
build-script/src/commands.cpp
Lyra 124560ac29
All checks were successful
Build / Build (linux) (push) Successful in 35s
Build / Build (windows) (push) Successful in 37s
Bug fixes + rework check dir
2026-06-29 08:18:23 -04:00

268 lines
10 KiB
C++

#include <stdexcept>
#include "app.h"
#include "types.h"
void Application::buildProject() {
auto checkBuildDirsTask =
m_Taskflow.emplace([this]() { this->checkBuildDirs(); })
.name("checkBuildDirs");
if (m_BuildType == BuildType::none) {
auto configureDirDebugTask =
m_Taskflow
.emplace(
[this]() { this->configureDir("build/debug", "debug"); })
.name("configureDir(build/debug)");
auto buildDirDebugTask =
m_Taskflow.emplace([this]() { this->buildDir("build/debug"); })
.name("buildDir(build/debug)");
configureDirDebugTask.precede(buildDirDebugTask);
checkBuildDirsTask.precede(configureDirDebugTask);
auto configureDirReleaseTask =
m_Taskflow
.emplace([this]() {
this->configureDir("build/release", "Release");
})
.name("configureDir(build/release)");
auto buildDirReleaseTask =
m_Taskflow.emplace([this]() { this->buildDir("build/release"); })
.name("buildDir(build/release)");
configureDirReleaseTask.precede(buildDirReleaseTask);
checkBuildDirsTask.precede(configureDirReleaseTask);
auto configureDirRelWithDebTask =
m_Taskflow
.emplace([this]() {
this->configureDir("build/relwithdeb", "RelWithDeb");
})
.name("configureDir(build/relwithdeb)");
auto buildDirRelWithDebTask =
m_Taskflow.emplace([this]() { this->buildDir("build/relwithdeb"); })
.name("buildDir(build/relwithdeb)");
configureDirRelWithDebTask.precede(buildDirRelWithDebTask);
checkBuildDirsTask.precede(configureDirRelWithDebTask);
auto configureDirMinSizeRelTask =
m_Taskflow
.emplace([this]() {
this->configureDir("build/minsizerel", "MinSizeRel");
})
.name("configureDir(build/minsizerel)");
auto buildDirMinSizeRelTask =
m_Taskflow.emplace([this]() { this->buildDir("build/minsizerel"); })
.name("buildDir(build/minsizerel)");
configureDirMinSizeRelTask.precede(buildDirMinSizeRelTask);
checkBuildDirsTask.precede(configureDirMinSizeRelTask);
} else if (m_BuildType == BuildType::debug) {
auto configureDirTask =
m_Taskflow
.emplace(
[this]() { this->configureDir("build/debug", "Debug"); })
.name("configureDir(build/debug)");
auto buildDirTask =
m_Taskflow.emplace([this]() { this->buildDir("build/debug"); })
.name("buildDir(build/debug)");
configureDirTask.precede(buildDirTask);
checkBuildDirsTask.precede(configureDirTask);
} else if (m_BuildType == BuildType::release) {
auto configureDirTask =
m_Taskflow
.emplace([this]() {
this->configureDir("build/release", "Release");
})
.name("configureDir(build/release)");
auto buildDirTask =
m_Taskflow.emplace([this]() { this->buildDir("build/release"); })
.name("buildDir(build/release)");
configureDirTask.precede(buildDirTask);
checkBuildDirsTask.precede(configureDirTask);
} else if (m_BuildType == BuildType::relwithdeb) {
auto configureDirTask =
m_Taskflow
.emplace([this]() {
this->configureDir("build/relwithdeb", "RelWithDeb");
})
.name("configureDir(build/relwithdeb)");
auto buildDirTask =
m_Taskflow.emplace([this]() { this->buildDir("build/relwithdeb"); })
.name("buildDir(build/relwithdeb)");
configureDirTask.precede(buildDirTask);
checkBuildDirsTask.precede(configureDirTask);
} else if (m_BuildType == BuildType::minsizerel) {
auto configureDirTask =
m_Taskflow
.emplace([this]() {
this->configureDir("build/minsizerel", "MinSizeRel");
})
.name("configureDir(build/minsizerel)");
auto buildDirTask =
m_Taskflow.emplace([this]() { this->buildDir("build/minsizerel"); })
.name("buildDir(build/minsizerel)");
configureDirTask.precede(buildDirTask);
checkBuildDirsTask.precede(configureDirTask);
}
}
void Application::configureProject() {
auto checkBuildDirsTask =
m_Taskflow.emplace([this]() { this->checkBuildDirs(); })
.name("checkBuildDirs");
if (m_BuildType == BuildType::none) {
auto configureDirDebugTask =
m_Taskflow
.emplace(
[this]() { this->configureDir("build/debug", "Debug"); })
.name("configureDir(build/debug)");
checkBuildDirsTask.precede(configureDirDebugTask);
auto configureDirReleaseTask =
m_Taskflow
.emplace([this]() {
this->configureDir("build/release", "Release");
})
.name("configureDir(build/release)");
checkBuildDirsTask.precede(configureDirReleaseTask);
auto configureDirRelWithDebTask =
m_Taskflow
.emplace([this]() {
this->configureDir("build/relwithdeb", "RelWithDeb");
})
.name("configureDir(build/relwithdeb)");
checkBuildDirsTask.precede(configureDirRelWithDebTask);
auto configureDirMinSizeRelTask =
m_Taskflow
.emplace([this]() {
this->configureDir("build/minsizerel", "MinSizeRel");
})
.name("configureDir(build/minsizerel)");
checkBuildDirsTask.precede(configureDirMinSizeRelTask);
} else if (m_BuildType == BuildType::debug) {
auto configureDirDebugTask =
m_Taskflow
.emplace(
[this]() { this->configureDir("build/debug", "Debug"); })
.name("configureDir(build/debug)");
checkBuildDirsTask.precede(configureDirDebugTask);
} else if (m_BuildType == BuildType::release) {
auto configureDirReleaseTask =
m_Taskflow
.emplace([this]() {
this->configureDir("build/release", "Release");
})
.name("configureDir(build/release)");
checkBuildDirsTask.precede(configureDirReleaseTask);
} else if (m_BuildType == BuildType::relwithdeb) {
auto configureDirRelWithDebTask =
m_Taskflow
.emplace([this]() {
this->configureDir("build/relwithdeb", "RelWithDeb");
})
.name("configureDir(build/relwithdeb)");
checkBuildDirsTask.precede(configureDirRelWithDebTask);
} else if (m_BuildType == BuildType::minsizerel) {
auto configureDirMinSizeRelTask =
m_Taskflow
.emplace([this]() {
this->configureDir("build/minsizerel", "MinSizeRel");
})
.name("configureDir(build/minsizerel)");
checkBuildDirsTask.precede(configureDirMinSizeRelTask);
}
}
void Application::cleanProject() {
auto checkBuildDirsTask =
m_Taskflow.emplace([this]() { this->checkBuildDirs(); })
.name("checkBuildDirs");
if (m_BuildType == BuildType::none) {
auto cleanDirDebugTask =
m_Taskflow.emplace([this]() { this->cleanDir("build/debug"); })
.name("cleanDir(build/debug)");
checkBuildDirsTask.precede(cleanDirDebugTask);
auto cleanDirReleaseTask =
m_Taskflow.emplace([this]() { this->cleanDir("build/release"); })
.name("cleanDir(build/release)");
checkBuildDirsTask.precede(cleanDirReleaseTask);
auto cleanDirRelWithDebTask =
m_Taskflow.emplace([this]() { this->cleanDir("build/relwithdeb"); })
.name("cleanDir(build/relwithdeb)");
checkBuildDirsTask.precede(cleanDirRelWithDebTask);
auto cleanDirMinSizeRelTask =
m_Taskflow.emplace([this]() { this->cleanDir("build/minsizerel"); })
.name("cleanDir(build/minsizerel)");
checkBuildDirsTask.precede(cleanDirMinSizeRelTask);
} else if (m_BuildType == BuildType::debug) {
auto cleanDirDebugTask =
m_Taskflow.emplace([this]() { this->cleanDir("build/debug"); })
.name("cleanDir(build/debug)");
checkBuildDirsTask.precede(cleanDirDebugTask);
} else if (m_BuildType == BuildType::release) {
auto cleanDirReleaseTask =
m_Taskflow.emplace([this]() { this->cleanDir("build/release"); })
.name("cleanDir(build/release)");
checkBuildDirsTask.precede(cleanDirReleaseTask);
} else if (m_BuildType == BuildType::relwithdeb) {
auto cleanDirRelWithDebTask =
m_Taskflow.emplace([this]() { this->cleanDir("build/relwithdeb"); })
.name("cleanDir(build/relwithdeb)");
checkBuildDirsTask.precede(cleanDirRelWithDebTask);
} else if (m_BuildType == BuildType::minsizerel) {
auto cleanDirMinSizeRelTask =
m_Taskflow.emplace([this]() { this->cleanDir("build/minsizerel"); })
.name("cleanDir(build/minsizerel)");
checkBuildDirsTask.precede(cleanDirMinSizeRelTask);
}
}
void Application::deleteProject() {
// No point in using taskflow for this...
// In all cases its just deleting a single directory...
// Bit overkill for that
switch (m_BuildType) {
case none:
deleteDir("build");
break;
case debug:
deleteDir("build/debug");
break;
case release:
deleteDir("build/release");
break;
case relwithdeb:
deleteDir("build/relwithdeb");
break;
case minsizerel:
deleteDir("build/minsizerel");
break;
}
}
void Application::rebuildProject() {
deleteProject();
buildProject();
}