Provide control over -fcallgraph-info in project wizard.

In [GCC PR 104342](https://gcc.gnu.org/bugzilla/show_bug.cgi?id=104342)
we can see that, if checking out a non-release compiler (e.g. GCC
14.0.1), having `-gnata` and `-fcallgraph-info=su` will cause a crash
(in stm32 code, anyway).

`-gnata` is used when Build is Debug.

This patch amends the Project Wizard so you can specify `CALLGRAPHS=Disabled`.

  * scripts/project_wizard.py (Build_Checks_Type): renamed to
      Disabled_Or_Enabled_Type.
    (Build_Checks): now Disabled_Or_Enabled_Type.
    (Callgraphs): new, checks external CALLGRAPHS, default Enabled. Used
      to decide whether to include -fcallgraph-info=su even if Target
      isn't riscv32-unknown-elf.
This commit is contained in:
Simon Wright 2024-02-27 15:52:11 +00:00
parent c45af336d0
commit eca308e040
1 changed files with 13 additions and 6 deletions

View File

@ -188,8 +188,9 @@ def ADL_configuration(config, project_directory, project_name,
type Build_Type is ("Debug", "Production");
Build : Build_Type := external ("ADL_BUILD", "Debug");
type Build_Checks_Type is ("Disabled", "Enabled");
Build_Checks : Build_Checks_Type := external ("ADL_BUILD_CHECKS", "Disabled");
type Disabled_Or_Enabled_Type is ("Disabled", "Enabled");
Build_Checks : Disabled_Or_Enabled_Type := external ("ADL_BUILD_CHECKS", "Disabled");
Callgraphs : Disabled_Or_Enabled_Type := external ("CALLGRAPHS", "Enabled");
-- Target architecture
"""
@ -199,11 +200,17 @@ def ADL_configuration(config, project_directory, project_name,
gpr += """
Target := Project'Target;
-- Callgraph info is not available on all architectures
-- Callgraph info is not available on all architectures, and not always
-- desired
Callgraph_Switch := ();
case Target is
when "riscv32-unknown-elf" => null;
when others => Callgraph_Switch := ("-fcallgraph-info=su");
case Callgraphs is
when "Enabled" =>
case Target is
when "riscv32-unknown-elf" => null;
when others => Callgraph_Switch := ("-fcallgraph-info=su");
end case;
when "Disabled" =>
null;
end case;
Build_Checks_Switches := ();