project Other is

   type A_Type is
      ("Devel", "Debug", "Release");
   A : A_Type := external ("A");
   type B_Type is
      ("Linux", "Windows");
   B : B_Type := external ("B");

   case A is

      when "Release" =>
         for Source_Dirs use ("..");

      when "Debug" =>
         for Source_Dirs use ("..");

      when "Devel" =>
         for Source_Dirs use (".");
   end case;

   package Compiler is

      case A is

         when "Release" =>

            case B is

               when "Windows" =>
                  for Default_Switches ("Ada") use ("-O2");

               when "Linux" =>
                  for Default_Switches ("Ada") use ("-O2");
                  for Switches ("Ada") use ("-mlinux");
            end case;

         when "Debug" =>

            case B is

               when "Windows" =>
                  for Default_Switches ("Ada") use ("-O2");

               when "Linux" =>
                  for Default_Switches ("Ada") use ("-O2");
                  for Switches ("Ada") use ("-mlinux");
            end case;

         when "Devel" =>
            for Default_Switches ("Ada") use ("-g");
      end case;
   end Compiler;

end Other;

