Przeglądaj źródła

Specify the output file for GNU-style deps

default_compile_flags
vector-of-bool 5 lat temu
rodzic
commit
9de9bbb7d6
3 zmienionych plików z 27 dodań i 13 usunięć
  1. +2
    -1
      src/dds/build/plan/compile_exec.cpp
  2. +19
    -11
      src/dds/toolchain/from_dds.test.cpp
  3. +6
    -1
      src/dds/toolchain/toolchain.cpp

+ 2
- 1
src/dds/build/plan/compile_exec.cpp Wyświetl plik

@@ -100,7 +100,8 @@ std::optional<deps_info> do_compile(const compile_file_full& cf, build_env_ref e
"file to exist: [{}])",
df_path.string());
} else {
auto dep_info = dds::parse_mkfile_deps_file(df_path);
auto dep_info = dds::parse_mkfile_deps_file(df_path);
assert(dep_info.output == cf.object_file_path);
dep_info.command = quote_command(cf.cmd_info.command);
dep_info.command_output = compile_res.output;
ret_deps_info = std::move(dep_info);

+ 19
- 11
src/dds/toolchain/from_dds.test.cpp Wyświetl plik

@@ -45,25 +45,26 @@ void check_tc_compile(std::string_view tc_content,

TEST_CASE("Generating toolchain commands") {
check_tc_compile("Compiler-ID: GNU",
"g++ -fPIC -fdiagnostics-color -pthread -MD -MF foo.o.d -c foo.cpp -ofoo.o",
"g++ -fPIC -fdiagnostics-color -pthread -MD -MF foo.o.d -MT foo.o -c foo.cpp -ofoo.o",
"g++ -fPIC -fdiagnostics-color -pthread -Wall -Wextra -Wpedantic -Wconversion "
"-MD -MF foo.o.d -c foo.cpp -ofoo.o",
"-MD -MF foo.o.d -MT foo.o -c foo.cpp -ofoo.o",
"ar rcs stuff.a foo.o bar.o",
"g++ -fPIC -fdiagnostics-color foo.o bar.a -pthread -lstdc++fs -omeow.exe");

check_tc_compile(
"Compiler-ID: GNU\nDebug: True",
"g++ -g -fPIC -fdiagnostics-color -pthread -MD -MF foo.o.d -c foo.cpp -ofoo.o",
"g++ -g -fPIC -fdiagnostics-color -pthread -MD -MF foo.o.d -MT foo.o -c foo.cpp -ofoo.o",
"g++ -g -fPIC -fdiagnostics-color -pthread -Wall -Wextra -Wpedantic -Wconversion "
"-MD -MF foo.o.d -c foo.cpp -ofoo.o",
"-MD -MF foo.o.d -MT foo.o -c foo.cpp -ofoo.o",
"ar rcs stuff.a foo.o bar.o",
"g++ -fPIC -fdiagnostics-color foo.o bar.a -pthread -lstdc++fs -omeow.exe -g");

check_tc_compile(
"Compiler-ID: GNU\nDebug: True\nOptimize: True",
"g++ -O2 -g -fPIC -fdiagnostics-color -pthread -MD -MF foo.o.d -c foo.cpp -ofoo.o",
"g++ -O2 -g -fPIC -fdiagnostics-color -pthread -MD -MF foo.o.d -MT foo.o -c foo.cpp "
"-ofoo.o",
"g++ -O2 -g -fPIC -fdiagnostics-color -pthread -Wall -Wextra -Wpedantic -Wconversion "
"-MD -MF foo.o.d -c foo.cpp -ofoo.o",
"-MD -MF foo.o.d -MT foo.o -c foo.cpp -ofoo.o",
"ar rcs stuff.a foo.o bar.o",
"g++ -fPIC -fdiagnostics-color foo.o bar.a -pthread -lstdc++fs -omeow.exe -O2 -g");

@@ -73,11 +74,12 @@ TEST_CASE("Generating toolchain commands") {
"lib /nologo /OUT:stuff.a foo.o bar.o",
"cl.exe /nologo /EHsc foo.o bar.a /Femeow.exe /MT");

check_tc_compile("Compiler-ID: MSVC\nDebug: True",
"cl.exe /Z7 /DEBUG /MTd /EHsc /nologo /permissive- /showIncludes /c foo.cpp /Fofoo.o",
"cl.exe /Z7 /DEBUG /MTd /EHsc /nologo /permissive- /W4 /showIncludes /c foo.cpp /Fofoo.o",
"lib /nologo /OUT:stuff.a foo.o bar.o",
"cl.exe /nologo /EHsc foo.o bar.a /Femeow.exe /Z7 /DEBUG /MTd");
check_tc_compile(
"Compiler-ID: MSVC\nDebug: True",
"cl.exe /Z7 /DEBUG /MTd /EHsc /nologo /permissive- /showIncludes /c foo.cpp /Fofoo.o",
"cl.exe /Z7 /DEBUG /MTd /EHsc /nologo /permissive- /W4 /showIncludes /c foo.cpp /Fofoo.o",
"lib /nologo /OUT:stuff.a foo.o bar.o",
"cl.exe /nologo /EHsc foo.o bar.a /Femeow.exe /Z7 /DEBUG /MTd");

auto tc = dds::parse_toolchain_dds(R"(
Compiler-ID: GNU
@@ -95,6 +97,8 @@ TEST_CASE("Generating toolchain commands") {
"-MD",
"-MF",
"foo.o.d",
"-MT",
"foo.o",
"-c",
"foo.cpp",
"-ofoo.o"});
@@ -111,6 +115,8 @@ TEST_CASE("Generating toolchain commands") {
"-MD",
"-MF",
"foo.o.d",
"-MT",
"foo.o",
"-c",
"foo.cpp",
"-ofoo.o"});
@@ -129,6 +135,8 @@ TEST_CASE("Generating toolchain commands") {
"-MD",
"-MF",
"foo.o.d",
"-MT",
"foo.o",
"-c",
"foo.cpp",
"-ofoo.o"});

+ 6
- 1
src/dds/toolchain/toolchain.cpp Wyświetl plik

@@ -80,7 +80,12 @@ compile_command_info toolchain::create_compile_command(const compile_file_spec&
if (_deps_mode == deps_mode::gnu) {
gnu_depfile_path = spec.out_path;
gnu_depfile_path->replace_extension(gnu_depfile_path->extension().string() + ".d");
extend(flags, {"-MD"sv, "-MF"sv, std::string_view(gnu_depfile_path->string())});
extend(flags,
{"-MD"sv,
"-MF"sv,
std::string_view(gnu_depfile_path->string()),
"-MT"sv,
std::string_view(spec.out_path.string())});
} else if (_deps_mode == deps_mode::msvc) {
flags.push_back("/showIncludes");
}

Ładowanie…
Anuluj
Zapisz