Files
lace/0-floor/lace_shared/lace_shared.gpr
2022-07-31 17:34:54 +10:00

168 lines
5.6 KiB
Plaintext

abstract
project Lace_shared
is
-- Scenario Variables
--
type Os_Type is
("Windows_NT", "Linux", "MacOSX");
lace_OS : Os_Type := external ("Lace_OS", "Linux");
type Restrictions_Type is
("xgc", "ravenscar");
lace_Restrictions : Restrictions_Type := external ("Lace_Restrictions", "xgc");
type Build_Mode_Type is
("debug", "fast", "small");
lace_Build_Mode : Build_Mode_Type := external ("Lace_Build_Mode", "debug");
-- Declare various options.
--
Binder_Options := ();
Style_Options := ("-gnatyk", -- Check casings: a:attribute, k:keywords, n:package Standard identifiers, p:pragma, r:identifier references.
"-gnatybfhi", -- Check b:no blanks at end of lines, f:no ff/vtabs, h: no htabs, i:if-then layout, u:no unnecessary blank lines.
"-gnatyO", -- Check that overriding subprograms are explicitly marked as such.
"-gnatye", -- Check that labels on end statements (ending subprograms), and on exit statements (exiting named loops), are present.
"-gnatyx"); -- Check x:no extra parens.
Compiler_Options := ("-gnat2022",
"-gnatwa",
"-fno-strict-aliasing")
& Style_Options;
Fast_Options := ("-O2",
"-gnatn",
"-gnatp",
"-funroll-loops",
"-fpeel-loops",
"-ftracer",
"-funswitch-loops",
"-fweb",
"-frename-registers");
Small_Options := ("-Os",
"-gnatp",
"-fno-inline",
"-march=i386",
"-ffunction-sections",
"-falign-jumps=0",
"-falign-loops=0",
"-falign-functions=0",
"-mpreferred-stack-boundary=2");
-- Modify options to cater for the build mode.
--
case lace_Build_Mode
is
when "debug" =>
Binder_Options := Binder_Options & "-Es";
Compiler_Options := Compiler_Options & "-O0"
& "-gnato"
& "-fstack-check"
& "-g";
case lace_OS
is
when "Linux" =>
Compiler_Options := Compiler_Options & "-gnatVa";
when "Windows_NT" =>
Compiler_Options := Compiler_Options & "-fno-inline"
& "-gnatVcdeimoprst";
-- & "-gnatVf" -- (2016) turned off floating point validity check, seems to give
-- false positives on a scalar product for collision detection
when "MacOSX" =>
null;
end case;
when "fast" =>
case lace_OS
is
when "Linux" =>
Compiler_Options := Compiler_Options & Fast_Options
& "-fomit-frame-pointer";
when "Windows_NT" =>
Compiler_Options := Compiler_Options & Fast_Options
& "-fipa-cp-clone"
& "-fgcse-after-reload"
& "-ftree-vectorize"
& "-mfpmath=sse"
& "-msse3";
when "MacOSX" =>
null;
end case;
when "small" =>
case lace_OS
is
when "Linux" =>
Compiler_Options := Compiler_Options & Small_Options
& "-fdata-sections";
when "Windows_NT" =>
Compiler_Options := Compiler_Options & Small_Options;
when "MacOSX" =>
null;
end case;
end case;
-- Modify options to cater for the operating system.
--
case lace_OS
is
when "MacOSX" =>
Compiler_Options := Compiler_Options & "-gnatf"
& "-gnatE"
& "-gnatVcfimorst"
& "-gnatyhiknp";
when "Linux" =>
Binder_Options := Binder_Options & "-static";
when "Windows_NT" =>
null;
end case;
-- Define the packages.
--
package Ide is
case lace_OS
is
when "Linux" => for Default_Switches ("adacontrol") use ("-Ftgnat_short");
when "Windows_NT" => for Default_Switches ("adacontrol") use ("-F", "gnat_short");
when "MacOSX" => for Default_Switches ("adacontrol") use ();
end case;
end Ide;
package Builder is
for Default_Switches ("ada") use ("-C", "-j0");
case lace_Build_Mode
is
when "debug" => for Global_Configuration_Pragmas use "debug.pra";
for Default_Switches ("ada") use ("-C", "-j0", "-gnat2022"); -- TODO: Create and use a Builder_Options variable ?
when "fast" => null;
when "small" => null;
end case;
end Builder;
package Compiler is
for Default_Switches ("ada") use Compiler_Options;
end Compiler;
package Binder is
for Default_Switches ("ada") use Binder_Options;
end Binder;
end Lace_shared;