aboutsummaryrefslogtreecommitdiff
path: root/backend/BackendUtils.hpp
blob: 9992e5c57c7c3a7a523ba38aaaf106eb581fe801 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#pragma once

#include "../include/Conf.hpp"

namespace backend
{
    class Ninja;

    enum class RuntimeCompilerType
    {
        NONE,
        OTHER,
        CLANG,
        EMSCRIPTEN
    };
    
    class BackendUtils
    {
    public:
        static sibs::FileString getFileExtension(const sibs::FileString &filepath);
        static sibs::Language getFileLanguage(const _tinydir_char_t *extension);
        static sibs::Language getFileLanguage(tinydir_file *file);
        static void collectSourceFiles(const _tinydir_char_t *projectPath, Ninja *ninjaProject, const sibs::SibsConfig &sibsConfig, bool recursive = true);
        static std::vector<sibs::FileString> getCompilerCExecutable(sibs::Compiler compiler);
        static std::vector<sibs::FileString> getCompilerCppExecutable(sibs::Compiler compiler);
        static std::vector<sibs::FileString> getCompilerLinker(sibs::Compiler compiler);
        static RuntimeCompilerType getCCompilerType(sibs::Compiler compiler);
        static RuntimeCompilerType getCppCompilerType(sibs::Compiler compiler);
    };
}