diff --git a/Userland/DevTools/HackStudio/ProjectBuilder.cpp b/Userland/DevTools/HackStudio/ProjectBuilder.cpp index 1052fd3ed2..39a156398e 100644 --- a/Userland/DevTools/HackStudio/ProjectBuilder.cpp +++ b/Userland/DevTools/HackStudio/ProjectBuilder.cpp @@ -40,6 +40,7 @@ ErrorOr ProjectBuilder::build(StringView active_file) } if (m_is_serenity == IsSerenityRepo::No) { + TRY(verify_make_is_installed()); TRY(m_terminal->run_command("make")); return {}; } @@ -65,6 +66,7 @@ ErrorOr ProjectBuilder::run(StringView active_file) } if (m_is_serenity == IsSerenityRepo::No) { + TRY(verify_make_is_installed()); TRY(m_terminal->run_command("make run")); return {}; } @@ -102,6 +104,7 @@ ErrorOr ProjectBuilder::update_active_file(StringView active_file) ErrorOr ProjectBuilder::build_serenity_component() { + TRY(verify_make_is_installed()); TRY(m_terminal->run_command(String::formatted("make {}", m_serenity_component_name), build_directory(), TerminalWrapper::WaitForExit::Yes, "Make failed"sv)); return {}; } @@ -255,6 +258,14 @@ ErrorOr ProjectBuilder::verify_cmake_is_installed() return Error::from_string_literal("CMake port is not installed"sv); } +ErrorOr ProjectBuilder::verify_make_is_installed() +{ + auto res = Core::command("make --version", {}); + if (!res.is_error() && res.value().exit_code == 0) + return {}; + return Error::from_string_literal("Make port is not installed"sv); +} + String ProjectBuilder::build_directory() const { return LexicalPath::join(m_project_root, "Build"sv).string(); diff --git a/Userland/DevTools/HackStudio/ProjectBuilder.h b/Userland/DevTools/HackStudio/ProjectBuilder.h index 22766788e4..bb2d97da21 100644 --- a/Userland/DevTools/HackStudio/ProjectBuilder.h +++ b/Userland/DevTools/HackStudio/ProjectBuilder.h @@ -47,6 +47,7 @@ private: static void for_each_library_dependencies(Function)>); static ErrorOr component_name(StringView cmake_file_path); static ErrorOr verify_cmake_is_installed(); + static ErrorOr verify_make_is_installed(); String m_project_root; Project const& m_project;