abstract project Bfdada_Config is
   for Source_Dirs use ();

   type Yes_No is ("yes", "no");

   type Library_Type_Type is ("relocatable", "static", "static-pic");
   for Languages    use ("Ada", "C");
   type Build_Type is ("distrib", "debug", "optimize", "profile", "coverage");
   Mode : Build_Type := external ("BFDADA_BUILD", "debug");

   Processors := External ("PROCESSORS", "1");

   package Builder is
       for Default_Switches ("Ada") use ("-j" & Processors);
   end Builder;

   package compiler is
      warnings := ("-gnatwua");
      defaults := ("-gnat2012");
      case Mode is
         when "distrib" =>
            for Default_Switches ("Ada") use defaults & ("-O2", "-gnatafno", "-gnatVa", "-gnatwa");

         when "debug" =>
            for Default_Switches ("Ada") use defaults & warnings
               & ("-g", "-gnata", "-gnatVaMI", "-gnaty3abcefhiklmnprstxM99OABu");
            for Default_Switches ("C") use ("-g");

         when "coverage" =>
            for Default_Switches ("Ada") use defaults & warnings
               & ("-g", "-O2", "-gnata", "-gnatVaMI", "-gnaty3abcefhiklmnprstxM99O",
                  "-fprofile-arcs", "-ftest-coverage");

         when "optimize" =>
            for Default_Switches ("Ada") use defaults & warnings
               & ("-O2", "-gnatn", "-gnatp", "-fdata-sections", "-ffunction-sections");

         when "profile" =>
            for Default_Switches ("Ada") use defaults & warnings & ("-pg");

      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 "coverage" =>
            for Default_Switches ("ada") use ("-fprofile-arcs");
	 
	 when others =>
	    null;
      end case;

   end linker;        
 
   package Ide is
      for VCS_Kind use "git";
   end Ide;

end Bfdada_Config;
