#include #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(); }