summaryrefslogtreecommitdiff
path: root/scripts/build
diff options
context:
space:
mode:
authorDimitar Dimitrov <dimitar@dinux.eu>2021-01-15 18:23:10 (GMT)
committerDimitar Dimitrov <dimitar@dinux.eu>2021-01-19 19:18:55 (GMT)
commite7d0485ca2fece06e66e22162805b0e388bcc449 (patch)
tree609bb14b6579c036d5a1201d5dc1d64c02cf0b2a /scripts/build
parentc800bc8c82710757d347d1a1b5cf3359d3f71433 (diff)
Add package with PRU linker scripts and headers
Include the gnuprumcu package in PRU cross toolchain. Toolchain is somewhat useless without device specs and linker scripts for the various SoCs. Signed-off-by: Dimitar Dimitrov <dimitar@dinux.eu>
Diffstat (limited to 'scripts/build')
-rw-r--r--scripts/build/companion_libs/400-gnuprumcu.sh89
1 files changed, 89 insertions, 0 deletions
diff --git a/scripts/build/companion_libs/400-gnuprumcu.sh b/scripts/build/companion_libs/400-gnuprumcu.sh
new file mode 100644
index 0000000..14546f3
--- /dev/null
+++ b/scripts/build/companion_libs/400-gnuprumcu.sh
@@ -0,0 +1,89 @@
+# Build script for gnuprumcu
+
+do_gnuprumcu_get() { :; }
+do_gnuprumcu_extract() { :; }
+do_gnuprumcu_for_build() { :; }
+do_gnuprumcu_for_host() { :; }
+do_gnuprumcu_for_target() { :; }
+
+if [ "${CT_COMP_LIBS_GNUPRUMCU}" = "y" ]; then
+
+do_gnuprumcu_get() {
+ CT_Fetch GNUPRUMCU
+}
+
+do_gnuprumcu_extract() {
+ CT_ExtractPatch GNUPRUMCU
+}
+
+
+do_gnuprumcu_for_target() {
+ local -a gnuprumcu_opts
+
+ CT_DoStep INFO "Installing gnuprumcu for the target"
+ CT_mkdir_pushd "${CT_BUILD_DIR}/build-gnuprumcu-target-${CT_TARGET}"
+
+ gnuprumcu_opts+=( "destdir=${CT_SYSROOT_DIR}" )
+ gnuprumcu_opts+=( "host=${CT_HOST}" )
+
+ gnuprumcu_opts+=( "cflags=${CT_ALL_TARGET_CFLAGS}" )
+ gnuprumcu_opts+=( "prefix=${CT_PREFIX_DIR}" )
+ do_gnuprumcu_backend "${gnuprumcu_opts[@]}"
+
+ CT_Popd
+ CT_EndStep
+}
+
+
+# Build gnuprumcu
+# Parameter : description : type : default
+# destdir : out-of-tree install dir : string : /
+# host : machine to run on : tuple : (none)
+# prefix : prefix to install into : dir : (none)
+# cflags : cflags to use : string : (empty)
+# ldflags : ldflags to use : string : (empty)
+# shared : also buils shared lib : bool : n
+do_gnuprumcu_backend() {
+ local destdir="/"
+ local host
+ local prefix
+ local cflags
+ local ldflags
+ local shared
+ local -a extra_config
+ local arg
+
+ for arg in "$@"; do
+ eval "${arg// /\\ }"
+ done
+
+ CT_DoLog EXTRA "Configuring gnuprumcu"
+
+ CT_DoExecLog CFG \
+ CC="${host}-gcc" \
+ RANLIB="${host}-ranlib" \
+ CFLAGS="${cflags}" \
+ LDFLAGS="${ldflags}" \
+ ${CONFIG_SHELL} \
+ "${CT_SRC_DIR}/gnuprumcu/configure" \
+ --build=${CT_BUILD} \
+ --host=${host} \
+ --target=${CT_TARGET} \
+ --prefix="${prefix}" \
+ "${extra_config[@]}"
+
+ CT_DoLog EXTRA "Building gnuprumcu"
+ CT_DoExecLog ALL make
+
+ CT_DoLog EXTRA "Installing gnuprumcu"
+
+ # Guard against $destdir$prefix == //
+ # which is a UNC path on Cygwin/MSYS2
+ if [[ ${destdir} == / ]] && [[ ${prefix} == /* ]]; then
+ destdir=
+ fi
+
+ CT_DoExecLog ALL make instroot="${destdir}" install
+}
+
+fi # CT_COMP_LIBS_GNUPRUMCU