|
|
|
|
|
|
|
|
#endif |
|
|
#endif |
|
|
}); |
|
|
}); |
|
|
|
|
|
|
|
|
/// TODO: Handle base_warning_flags: |
|
|
|
|
|
tc.warning_flags = read_opt(warning_flags, [&]() -> string_seq { |
|
|
|
|
|
|
|
|
// `base_warning_flags` is loaded first, and switches based on compiler_id. |
|
|
|
|
|
// This one is "advanced," and sets a common base for warning sets |
|
|
|
|
|
tc.warning_flags = read_opt(base_warning_flags, [&]() -> string_seq { |
|
|
if (!compiler_id) { |
|
|
if (!compiler_id) { |
|
|
// No error. Just no warning flags |
|
|
// No error. Just no warning flags |
|
|
return {}; |
|
|
return {}; |
|
|
|
|
|
|
|
|
std::terminate(); |
|
|
std::terminate(); |
|
|
}); |
|
|
}); |
|
|
|
|
|
|
|
|
|
|
|
// `warning_flags` allows the user to provide additional warnings/errors |
|
|
|
|
|
if (warning_flags) { |
|
|
|
|
|
extend(tc.warning_flags, *warning_flags); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
tc.link_archive = read_opt(create_archive, [&]() -> string_seq { |
|
|
tc.link_archive = read_opt(create_archive, [&]() -> string_seq { |
|
|
if (!compiler_id) { |
|
|
if (!compiler_id) { |
|
|
fail(context, "Unable to deduce archive creation rules without a 'compiler_id'"); |
|
|
fail(context, "Unable to deduce archive creation rules without a 'compiler_id'"); |