From 23fb54ebfb0526459e54f178c8f20e77046404ec Mon Sep 17 00:00:00 2001
From: Brendan Bartels <bbartels@iastate.edu>
Date: Sat, 25 Feb 2017 12:58:05 -0600
Subject: [PATCH] quad: add script to build Xilinx project from command line

This makes building the project on CI trivial, so also added to CI.
---
 .gitlab-ci.yml                           |  4 +--
 ci-build.sh                              |  7 +++++
 test-ci.sh => ci-test.sh                 |  2 +-
 quad/ci-build.sh                         |  8 +++++
 quad/{test-ci.sh => ci-test.sh}          |  2 ++
 quad/sw/modular_quad_pid/.build_app.tcl  |  3 ++
 quad/sw/modular_quad_pid/.build_bsp.tcl  |  3 ++
 quad/sw/modular_quad_pid/.create_bsp.tcl |  3 ++
 quad/sw/modular_quad_pid/build.sh        | 40 ++++++++++++++++++++++++
 9 files changed, 69 insertions(+), 3 deletions(-)
 create mode 100644 ci-build.sh
 rename test-ci.sh => ci-test.sh (66%)
 create mode 100644 quad/ci-build.sh
 rename quad/{test-ci.sh => ci-test.sh} (81%)
 create mode 100644 quad/sw/modular_quad_pid/.build_app.tcl
 create mode 100644 quad/sw/modular_quad_pid/.build_bsp.tcl
 create mode 100644 quad/sw/modular_quad_pid/.create_bsp.tcl
 create mode 100644 quad/sw/modular_quad_pid/build.sh

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 8e53db85b..13bc283c7 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -1,10 +1,10 @@
 build:
   stage: build
   script:
-    - echo "It works."
+    - bash ci-build.sh
 
 # run tests using the binary built before
 test:
   stage: test
   script:
-    - bash test-ci.sh
+    - bash ci-test.sh
diff --git a/ci-build.sh b/ci-build.sh
new file mode 100644
index 000000000..af6f06ee2
--- /dev/null
+++ b/ci-build.sh
@@ -0,0 +1,7 @@
+#!/bin/bash
+
+PROJECT_ROOT=$(pwd)
+export PROJECT_ROOT
+
+# Quad
+bash quad/ci-build.sh || exit 1
diff --git a/test-ci.sh b/ci-test.sh
similarity index 66%
rename from test-ci.sh
rename to ci-test.sh
index 8278c9352..5542a1b99 100644
--- a/test-ci.sh
+++ b/ci-test.sh
@@ -4,4 +4,4 @@ PROJECT_ROOT=$(pwd)
 export PROJECT_ROOT
 
 # Quad
-bash quad/test-ci.sh || exit 1
+bash quad/ci-test.sh || exit 1
diff --git a/quad/ci-build.sh b/quad/ci-build.sh
new file mode 100644
index 000000000..36ff958b1
--- /dev/null
+++ b/quad/ci-build.sh
@@ -0,0 +1,8 @@
+#!/bin/bash
+
+QUAD_ROOT=$PROJECT_ROOT/quad
+export QUAD_ROOT
+
+# Build Quad code
+cd $QUAD_ROOT/sw/modular_quad_pid/
+bash build.sh || exit 1
diff --git a/quad/test-ci.sh b/quad/ci-test.sh
similarity index 81%
rename from quad/test-ci.sh
rename to quad/ci-test.sh
index c35802b39..bb2cc1666 100644
--- a/quad/test-ci.sh
+++ b/quad/ci-test.sh
@@ -3,9 +3,11 @@
 QUAD_ROOT=$PROJECT_ROOT/quad
 export QUAD_ROOT
 
+# Build Test Library
 cd $QUAD_ROOT/lib/test
 make || exit 1
 
+# Test UART buffer
 cd $QUAD_ROOT/sw/modular_quad_pid/test
 make || exit 1
 ./test_uart_buff || exit 1
diff --git a/quad/sw/modular_quad_pid/.build_app.tcl b/quad/sw/modular_quad_pid/.build_app.tcl
new file mode 100644
index 000000000..ae51135bb
--- /dev/null
+++ b/quad/sw/modular_quad_pid/.build_app.tcl
@@ -0,0 +1,3 @@
+cd ..
+sdk set_workspace .
+sdk build_project -type app -name modular_quad_pid
diff --git a/quad/sw/modular_quad_pid/.build_bsp.tcl b/quad/sw/modular_quad_pid/.build_bsp.tcl
new file mode 100644
index 000000000..6188f060a
--- /dev/null
+++ b/quad/sw/modular_quad_pid/.build_bsp.tcl
@@ -0,0 +1,3 @@
+cd ..
+sdk set_workspace .
+sdk build_project -type bsp -name system_bsp
diff --git a/quad/sw/modular_quad_pid/.create_bsp.tcl b/quad/sw/modular_quad_pid/.create_bsp.tcl
new file mode 100644
index 000000000..48668ef35
--- /dev/null
+++ b/quad/sw/modular_quad_pid/.create_bsp.tcl
@@ -0,0 +1,3 @@
+cd ..
+sdk set_workspace .
+sdk create_bsp_project -name system_bsp -hwproject system_hw_platform -proc ps7_cortexa9_0 -os standalone
diff --git a/quad/sw/modular_quad_pid/build.sh b/quad/sw/modular_quad_pid/build.sh
new file mode 100644
index 000000000..16f728e1c
--- /dev/null
+++ b/quad/sw/modular_quad_pid/build.sh
@@ -0,0 +1,40 @@
+#!/bin/bash
+
+source /remote/Xilinx/2015.4/SDK/2015.4/settings64.sh
+
+echo "Building modular_quad_pid"
+
+if [ ! -d ../.metadata ]; then
+    # Haven't configured XSDK environment yet. Do that now
+
+    ECLIPSE=/remote/Xilinx/2015.4/SDK/2015.4/eclipse/lnx64.o/eclipse
+    VM=/remote/Xilinx/2015.4/SDK/2015.4/tps/lnx64/jre/bin
+    WSPACE=$(dirname $0)/..
+    HW=$WSPACE/system_hw_platform
+    BSP=$WSPACE/system_bsp
+    APP=$WSPACE/modular_quad_pid
+
+    echo "Setting up dependencies for modular_quad_pid"
+
+    # Import the system_hw_platform into the workspace
+    $ECLIPSE -vm $VM -nosplash -application org.eclipse.cdt.managedbuilder.core.headlessbuild \
+        -import $HW \
+        -data $WSPACE \
+        -vmargs -Dorg.eclipse.cdt.core.console=org.eclipse.cdt.core.systemConsole || exit 1
+
+    # Create the BSP
+    xsct .create_bsp.tcl || exit 1
+
+    # Import the system_bsp and modular_quad_pid into workspace
+    $ECLIPSE -vm $VM -nosplash -application org.eclipse.cdt.managedbuilder.core.headlessbuild \
+        -import $BSP \
+        -import $APP \
+        -data $WSPACE \
+        -vmargs -Dorg.eclipse.cdt.core.console=org.eclipse.cdt.core.systemConsole || exit 1
+
+    # Build the BSP
+    xsct .build_bsp.tcl || exit 1
+
+fi
+
+xsct .build_app.tcl || exit 1
-- 
GitLab