Merge remote-tracking branch 'origin/xdccore-A-sasha' into master_ggentree
diff --git a/README b/README
index 345345b..5ee546a 100644
--- a/README
+++ b/README
@@ -1,4 +1,4 @@
-             xdc-A68 (corevers:16.0.2.0; B:150,G:180,R:170)
+             xdc-A71 (corevers:16.0.2.0; B:150,G:180,R:170)
 
                        eXpanDed C Tools (XDCtools)
 
@@ -29,7 +29,6 @@
         # before making any changes that need to be pushed to eclipse
         cat config-dr >> ./.git/config
 
-
         # make sure the user email and name are your eclipse credentials 
         git merge origin/xdccore-A-dr
 
@@ -73,9 +72,16 @@
 
 CHANGES
 
-xdc.rov
-	added check for Module__root__V address == 0 
+xdc.cfg
+	added environment variable, XDCTOOLS_GMAKE, to allow user to set the
+        name of the GNU 3.81 compatible command name to use (but only if 
+        gmake is not found)
+
+	filter MAKFFLAGS to eliminate GNU make jobserver warnings when using 
+	xdc --jobs=4 to build executables that trigger the use of SourceDir
+	to create user-supplied makefiles to build libraries.
 
 MRS
 
-ECL464429 - ROV attempts to read *_Module__root__V symbol with address 0 ...
\ No newline at end of file
+ECL465257 - xdc.cfg.SourceDir should support locating "make" along the path
+ECL465351 - parallel builds of packages that use SourceDir generate make
diff --git a/ident.c b/ident.c
index e523730..8619ea4 100644
--- a/ident.c
+++ b/ident.c
@@ -2,7 +2,7 @@
  *  ======== ident.c ========
  */
 
-#define _VERS_ "@(#)*** xdc-A70"
+#define _VERS_ "@(#)*** xdc-A71"
 
 static char __NAME[] = _NAME_;
 static char __DATE[] = _DATE_;
diff --git a/src/packages/xdc/bld/_gen.xs b/src/packages/xdc/bld/_gen.xs
index 780977b..1579bd0 100644
--- a/src/packages/xdc/bld/_gen.xs
+++ b/src/packages/xdc/bld/_gen.xs
@@ -215,7 +215,7 @@
     for (var i in targs) {
         out.write(".PRECIOUS: $(XDCCFGDIR)/%.o" + i + "\n");
         out.write(".PHONY: all," + i + " .dlls," + i
-            + " .executables," + i + " test,"+ i + "\n");
+            + " .executables," + i + " test," + i + "\n");
         out.write("all," + i + ": .executables," + i + "\n");
         out.write(".executables," + i + ": .libraries," + i + "\n");
         out.write(".executables," + i + ": .dlls," + i + "\n");
@@ -1316,7 +1316,7 @@
      *  to every library.  This allows user's to embed version/meta data into
      *  the every library.
      */
-    objs["package/package_"+ pkg.name] = {
+    objs["package/package_" + pkg.name] = {
         noExtension: true,
         srcPrefix: "",
         srcSuffix: ".c",
diff --git a/src/packages/xdc/cfg/SourceDir.xs b/src/packages/xdc/cfg/SourceDir.xs
index 934a3ac..bf947e2 100644
--- a/src/packages/xdc/cfg/SourceDir.xs
+++ b/src/packages/xdc/cfg/SourceDir.xs
@@ -143,10 +143,14 @@
         gmake = gmake + ".exe";
     }
     if (!java.io.File(gmake).exists()) {
-        this.$logWarning("can't find gmake in XDCROOT ("
-            + environment["xdc.root"]
-            + "), trying gmake along your path ...", this);
-        gmake = "gmake";
+	gmake = java.lang.System.getenv("XDCTOOLS_GMAKE");
+	if (gmake == null) {
+	    gmake = "gmake";
+	    this.$logWarning("can't find gmake in $XDCROOT (" 
+                + environment["xdc.root"]
+                + "), trying " + gmake 
+	        + " along your path instead.\n    info: To eliminate this warning, set the environment variable 'XDCTOOLS_GMAKE' to the name of a GNU make 3.81 compatible command along your path.", this);
+	}
     }
 
     /* do the build ... */
@@ -168,11 +172,28 @@
         }
     }
     var status = {};
+
+    /* get MAKEFLAGS passed from make to underlying recursive make */
     var makeflags = String(java.lang.System.getenv("MAKEFLAGS"));
+
+    /* ensure directory changes are printed (to enable Eclipse error parser 
+     * to track location of source files that trigger errors/warnings)
+     */
     makeflags = makeflags.replace(/--no-print-directory/g, "");
+
+    /* remove -s option to enable verbose output from underlying make */
     makeflags = makeflags.replace(/-sRr/g, "-Rr");
+
+    /* remove jobserver options added by make when --jobs is used (to prevent
+     *     "jobserver unavailable: using -j1. ..." warnings from make)
+     */
+    makeflags = makeflags.replace(/--jobserver-fds=\d+,\d+ -j /, "");
+
     result = xdc.exec(buildCmd, {
-            /* re-define MAKEFLAGS/MAKELEVEL to enable make's directory output to assist error parsers locate the files named in compiler error messages */
+            /* re-define MAKEFLAGS/MAKELEVEL to enable make's directory output
+	     * to assist error parsers locate the files named in compiler
+	     * error messages
+	     */
             envs: ["MAKEFLAGS=" + makeflags, "MAKELEVEL=0"],
             useEnv: true,
             merge: false,