aboutsummaryrefslogtreecommitdiff
path: root/tests/main.cpp
blob: e89eb19dc768ded2211980a4da5073cd48733350 (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
31
32
33
34
35
36
37
#include <cstdio>
#include <ninja/Ninja.hpp>

using namespace ninja;

int main(int argc, char **argv)
{
    NinjaBuildFile ninjaBuildFile;
    ninjaBuildFile.defineGlobalVariable("globalIncDir", "'-I/home/dec05eba/git/libninja/include'");

    NinjaVariable argsVar = { "ARGS" };
    NinjaVariable linkArgsVar = { "LINK_ARGS" };

    NinjaRule *compileCppRule = ninjaBuildFile.createRule("cpp_COMPILER", 
        { NinjaArg("c++"), NinjaArg(argsVar), NinjaArg("-c"), NinjaArg("$in"), NinjaArg("-o"), NinjaArg("$out") });
    compileCppRule->depFile = "$out.d";

    NinjaRule *buildExeRule = ninjaBuildFile.createRule("BUILD_EXEC", 
        { NinjaArg("c++"), NinjaArg(argsVar), NinjaArg("-o"), NinjaArg("$out"), NinjaArg("$in"), NinjaArg(linkArgsVar) });
    buildExeRule->depFile = "$out.d";

    NinjaRule *compileCRule = ninjaBuildFile.createRule("c_COMPILER", 
        { NinjaArg("cc"), NinjaArg(argsVar), NinjaArg("-c"), NinjaArg("$in"), NinjaArg("-o"), NinjaArg("$out") });
    buildExeRule->depFile = "$out.d";

    
    NinjaArgValue argsValue = { argsVar, "$globalIncDir -std=c++14 -pedantic -fpie -MMD -MP '-Itest@exe'  '-I..' -Wall -Wextra -Werror=return-type -fdiagnostics-show-option '-fdiagnostics-color=always' '-pipe' '-D_FILE_OFFSET_BITS=64' '-Winvalid-pch' -fstack-protector '-Og' -fexceptions -Wnon-virtual-dtor -g3 -D_FORTIFY_SOURCE=2 -D_GLIBCXX_ASSERTIONS -fasynchronous-unwind-tables" };
    compileCppRule->build("../../ma in\".cpp", "test@exe/main.cpp.o", { argsValue });

    NinjaArgValue linkArgsValue = { linkArgsVar, "-Wl,--no-undefined,--as-needed -ldl -lm -pthread -pthread \"/home/dec05eba/git/libninja/sibs-build/debug/liblibninja.so\"" };
    buildExeRule->build("test@exe/main.cpp.o", "test", { argsValue });

    std::string generatedNinjaFile = ninjaBuildFile.generate();

    printf("%s\n", generatedNinjaFile.c_str());
    return 0;
}