When gnatmake is invoked with --subdirs=, but without -P, the binder
generated files and the executable are put by default in the specified
subdirectory.

Tested on x86_64-pc-linux-gnu, committed on trunk

2012-07-12  Vincent Celier  <cel...@adacore.com>

        * make.adb (Binding_Phase): If --subdirs was used, but not
        -P, change the working directory to the specified subdirectory
        before invoking gnatbind.
        (Linking_Phase): If --subdirs was used, but not -P, change the working
        directory to the specified subdirectory before invoking gnatlink.

Index: make.adb
===================================================================
--- make.adb    (revision 189432)
+++ make.adb    (working copy)
@@ -4435,6 +4435,13 @@
          declare
             Success : Boolean := False;
          begin
+            --  If gnatmake was invoked with --subdirs and no project file,
+            --  put the executable in the subdirectory specified.
+
+            if Prj.Subdirs /= null and then Main_Project = No_Project then
+               Change_Dir (Object_Directory_Path.all);
+            end if;
+
             Link (Main_ALI_File,
                   Link_With_Shared_Libgcc.all &
                   Args (Args'First .. Last_Arg),
@@ -4571,6 +4578,13 @@
          end if;
       end if;
 
+      --  If gnatmake was invoked with --subdirs and no project file, put the
+      --  binder generated files in the subdirectory specified.
+
+      if Main_Project = No_Project and then Prj.Subdirs /= null then
+         Change_Dir (Object_Directory_Path.all);
+      end if;
+
       begin
          Bind (Main_ALI_File,
                Bind_Shared.all & Args (Args'First .. Last_Arg));

Reply via email to