Fixed kepler build error.
authorRamsey Harris <ramsey@ti.com>
Tue, 5 Mar 2013 23:58:53 +0000 (15:58 -0800)
committerRamsey Harris <ramsey@ti.com>
Tue, 5 Mar 2013 23:58:53 +0000 (15:58 -0800)
Custom build flow was making invalid assumption regarding
ti.sdo.ipc.Build participation. Cleaned up dependencies. Added
null makefile template to spoof the build (phase 7) when needed.

packages/ti/sdo/ipc/Build.xs
packages/ti/sdo/utils/Build.xdc
packages/ti/sdo/utils/Build.xdt
packages/ti/sdo/utils/Build.xs
packages/ti/sdo/utils/makefile_null.xdt [new file with mode: 0644]
packages/ti/sdo/utils/package.xs

index e0aca19c2cc389b123a8dff3104f31eff2be51de..a1a3c83078832ed630170f7ddaa052bde0ac1a78 100644 (file)
@@ -45,6 +45,9 @@ function module$use()
     BIOS = xdc.module("ti.sysbios.BIOS");
     Build = this;
 
+    /* inform ti.sdo.utils.Build *not* to contribute libraries */
+    xdc.module("ti.sdo.utils.Build").doBuild = false;
+
     /* inform getLibs() about location of library */
     switch (BIOS.libType) {
         case BIOS.LibType_Instrumented:
index 10129dca8501827425d3cf1d956288017f19547f..86ea6cd07f903b43862a7f845dec3b481dc22644 100644 (file)
 metaonly module Build
 {
 
+    /*!
+     *  ======== doBuild ========
+     */
+    config Bool doBuild = true;
+
     /*!
      *  ======== libDir ========
      */
-    metaonly config String libDir = null;
+    config String libDir = null;
 
     /*!
      *  ======== getDefs ========
      *  Get the compiler -D options necessary to build
      */
-    metaonly String getDefs();
+    String getDefs();
 
     /*!
      *  ======== getCFiles ========
      *  Get the library C source files.
      */
-    metaonly String getCFiles(String target);
+    String getCFiles(String target);
 
     /*!
      *  ======== getAsmFiles ========
      *  Get the library Asm source files.
      */
-    metaonly Any getAsmFiles(String target);
+    Any getAsmFiles(String target);
 
     /*
      *  ======== buildLibs ========
index cf71ecb6d6986f365367949cfb69267aeafc40cb..ef7fb4d00fd50c28accd8c126feb3d1050fc19b0 100644 (file)
  * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 %%}
-%/*
-% *  ======== Build.xdt ========
-% */
-%var BIOS = xdc.module("ti.sysbios.BIOS");
-%var Build = xdc.module("ti.sdo.utils.Build");
-%if ((BIOS.libType == BIOS.LibType_Custom)
-%      && (xdc.module('ti.sdo.ipc.Build').$used == false)) {
 %%{
-    /* get the specified output directory (saved when BIOS was "used") */
-    var outputDir = this.$private.outputDir;
+/*
+ *  ======== Build.xdt ========
+ */
+var BIOS = xdc.module("ti.sysbios.BIOS");
+var Build = xdc.module("ti.sdo.utils.Build");
+var tplt = "";
 
-    /* generate makefile from makefile.xdt
-     *    $args[0] = the RTSC target, so the makefile knows how to run the
-     *               compiler and archiver
-     */
-    print("generating custom ti.sdo.utils library makefile ... ");
-%%}
+if ((BIOS.libType == BIOS.LibType_Custom) &&
+        (Build.$private.outputDir != undefined)) {
 
-%if (Program.build.target.$name.match(/gnu/) &&
-%    (Program.build.target.name.match(/A15/) ||
-%     Program.build.target.name.match(/A9/)  ||
-%     Program.build.target.name.match(/A8/))) {
-%%{
-    var tplt = xdc.loadTemplate(this.$package.packageBase + "/makefile_gccArmLto.xdt");
-%%}
-%}
-%else {
-%%{
-    var tplt = xdc.loadTemplate(this.$package.packageBase + "/makefile.xdt");
-%%}
-%}
+    if (Build.doBuild) {
+        /* generate makefile from makefile.xdt
+         *    $args[0] = the RTSC target, so the makefile knows how to run the
+         *               compiler and archiver
+         */
+        print("generating custom ti.sdo.utils library makefile ... ");
 
-%%{
-    tplt.genFile(outputDir + "/makefile", this, [Program.build.target]);
-%%}
-%}
+        if (Program.build.target.$name.match(/gnu/) &&
+            (Program.build.target.name.match(/A15/) ||
+             Program.build.target.name.match(/A9/)  ||
+             Program.build.target.name.match(/A8/))) {
+
+            tplt = xdc.loadTemplate(this.$package.packageBase +
+                    "/makefile_gccArmLto.xdt");
+        }
+        else {
+            tplt = xdc.loadTemplate(this.$package.packageBase +
+                    "/makefile.xdt");
+        }
+    }
+    else {
+        /* Getting here means that this module should not have been
+         * instructed to build anything. It's too late to abort, so
+         * generate a makefile which will not actually build anything.
+         */
+        tplt = xdc.loadTemplate(this.$package.packageBase +
+                "/makefile_null.xdt");
+    }
+
+    /* use the output directory computed when Build was "used" */
+    tplt.genFile(Build.$private.outputDir + "/makefile", this,
+            [Program.build.target]);
+}
index c997f4eed82604a7f6f3f0a1b51e90b9c9cc808f..9b57a0ed3d43b1acfaff98ebe7c280df83239c3f 100644 (file)
@@ -45,7 +45,7 @@ function module$use()
     BIOS = xdc.module("ti.sysbios.BIOS");
     Build = this;
 
-    if (("ti.sdo.ipc" in xdc.om) || ("ti.sdo.io" in xdc.om)) {
+    if (!Build.doBuild) {
         return;
     }
 
@@ -227,7 +227,7 @@ function getDefs()
 function getLibs(pkg)
 {
     var BIOS = xdc.module("ti.sysbios.BIOS");
-print("In utils.Build.getLibs");
+
     if (BIOS.libType != BIOS.LibType_Debug) {
         return null;
     }
diff --git a/packages/ti/sdo/utils/makefile_null.xdt b/packages/ti/sdo/utils/makefile_null.xdt
new file mode 100644 (file)
index 0000000..3ce9525
--- /dev/null
@@ -0,0 +1,46 @@
+%%{
+/*
+ * Copyright (c) 2013, Texas Instruments Incorporated
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * *  Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *
+ * *  Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * *  Neither the name of Texas Instruments Incorporated nor the names of
+ *    its contributors may be used to endorse or promote products derived
+ *    from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+ * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+ * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+%%}
+%%{
+    var TARGET = $args[0];
+    var LIB = "utils.a" + TARGET.suffix;
+%%}
+
+
+all: `LIB`
+
+`LIB`:
+       @echo spoof $@
+
+clean:
+       @echo spoof $@
index e51f411a6849d15bfdfcea6604c17bfbc5c5762f..902956a1cbeaabf8903ae020a4391ab58718b021 100644 (file)
@@ -68,8 +68,7 @@ function getLibs(prog)
         case BIOS.LibType_Instrumented:
         case BIOS.LibType_NonInstrumented:
         case BIOS.LibType_Custom:
-            if ((xdc.module('ti.sdo.ipc.Build').$used == false)
-                 && (Build.$used == true)) {
+            if (Build.$used && Build.doBuild) {
                 lib = Build.$private.outputDir + Build.$private.libraryName;
                 return ("!" + String(java.io.File(lib).getCanonicalPath()));
             }