diplomska_naloga/build.cpp

78 lines
1.5 KiB
C++

#define EXT_LINK
#define EXT_INC
#include "build.hpp"
#include <unordered_set>
std::vector<std::string> LINK = {"raylib/lib/libraylib.a"};
std::vector<std::string> RAYINCLUDE = {"-Iraylib/include"};
std::filesystem::path RAYLIB_DIR = "raylib";
bool build = false;
bool clear = false;
bool run = false;
int main(int argc, char const *argv[])
{
if (rebuild_my_self(__FILE__, argc, argv))
return 0;
for (int i = 1; i < argc; ++i)
{
if (!std::strcmp(argv[i], "opt"))
opt_flags = "-O3";
if (!std::strcmp(argv[i], "build"))
build = true;
if (!std::strcmp(argv[i], "run"))
run = true;
if (!std::strcmp(argv[i], "clear"))
{
clear_all_build();
clear = true;
}
}
if (clear && !build)
{
return 0;
}
if (!std::filesystem::is_directory(RAYLIB_DIR))
{
command = {"wget", "https://github.com/raysan5/raylib/releases/download/5.5/raylib-5.5_linux_amd64.tar.gz"};
run_command(command);
command = {"tar", "-xzvf", "raylib-5.5_linux_amd64.tar.gz"};
run_command(command);
std::filesystem::rename("raylib-5.5_linux_amd64", "raylib");
std::filesystem::remove_all("raylib-5.5_linux_amd64.tar.gz");
}
if (!std::filesystem::is_directory(RAYLIB_DIR))
return 0;
std::filesystem::create_directory(OBJ_DIR);
int res = compile_src_dir(RAYINCLUDE);
switch (res)
{
case 1:
compile_obj_dir(LINK);
break;
case -1:
return 0;
}
if (!std::filesystem::exists(BUILD_FILE))
compile_obj_dir(LINK);
if (run)
{
run_main();
}
return 0;
}