abstract project Config is for Source_Dirs use (); type Yes_No is ("yes", "no"); type Library_Type_Type is ("relocatable", "static"); type Mode_Type is ("distrib", "debug", "optimize", "profile"); Mode : Mode_Type := external ("MODE", "debug"); Coverage : Yes_No := External ("COVERAGE", "no"); Processors := External ("PROCESSORS", "1"); package Builder is case Mode is when "debug" => for Default_Switches ("Ada") use ("-g", "-j" & Processors); when others => for Default_Switches ("Ada") use ("-g", "-O2", "-j" & Processors); end case; end Builder; package compiler is warnings := ("-gnatwua"); defaults := ("-gnat2012"); case Mode is when "distrib" => for Default_Switches ("Ada") use defaults & ("-gnatafno", "-gnatVa", "-gnatwa"); when "debug" => for Default_Switches ("Ada") use defaults & warnings & ("-gnata", "-gnatVaMI", "-gnaty3abcefhiklmnprstxM99"); when "optimize" => for Default_Switches ("Ada") use defaults & warnings & ("-gnatn", "-gnatp", "-fdata-sections", "-ffunction-sections"); when "profile" => for Default_Switches ("Ada") use defaults & warnings & ("-pg"); end case; case Coverage is when "yes" => for Default_Switches ("ada") use Compiler'Default_Switches ("Ada") & ("-fprofile-arcs", "-ftest-coverage"); when others => end case; end compiler; package binder is case Mode is when "debug" => for Default_Switches ("Ada") use ("-E"); when others => for Default_Switches ("Ada") use ("-E"); end case; end binder; package linker is case Mode is when "profile" => for Default_Switches ("Ada") use ("-pg"); when "distrib" => for Default_Switches ("Ada") use ("-s"); when "optimize" => for Default_Switches ("Ada") use ("-Wl,--gc-sections"); when others => null; end case; case Coverage is when "yes" => for Default_Switches ("ada") use Linker'Default_Switches ("ada") & ("-fprofile-arcs"); when others => end case; end linker; package Ide is for VCS_Kind use "git"; end Ide; end Config;