aboutsummaryrefslogtreecommitdiff
path: root/projects/libpayload
diff options
context:
space:
mode:
authorPaul Kocialkowski <contact@paulk.fr>2016-12-23 14:20:24 +0100
committerLeah Rowe <info@minifree.org>2017-01-15 14:24:45 +0000
commit112003a55671ffa5285145280988dc1248b26b08 (patch)
treee103e0f21ac52c28056db6211758217a41b0b3fd /projects/libpayload
parent3d08effb91acf985bae9c4eb4386937ce7ed92a9 (diff)
downloadlibrebootfr-112003a55671ffa5285145280988dc1248b26b08.tar.gz
librebootfr-112003a55671ffa5285145280988dc1248b26b08.zip
Paper build system initial import into Libreboot
This is the initial import of the Paper build system into Libreboot. It was written as a flexible and painless replacement for the Libreboot build system, allowing to support many different configurations. It currently only supports the following CrOS devices: * Chromebook 13 CB5-311 (nyan big) * Chromebook 14 (nyan blaze) * Chromebook 11 (HiSense) (veyron jerry) * Chromebit CS10 (veyron mickey) * Chromebook Flip C100PA (veyron minnie) * Chromebook C201PA (veyron speedy) The build system also supports building various tools and provides various scripts to ease the installation on CrOS devices. Signed-off-by: Paul Kocialkowski <contact@paulk.fr>
Diffstat (limited to 'projects/libpayload')
-rw-r--r--projects/libpayload/configs/depthcharge/nyan/arch1
-rw-r--r--projects/libpayload/configs/depthcharge/nyan/config1
-rw-r--r--projects/libpayload/configs/depthcharge/targets2
-rw-r--r--projects/libpayload/configs/depthcharge/veyron/arch1
-rw-r--r--projects/libpayload/configs/depthcharge/veyron/config1
-rw-r--r--projects/libpayload/configs/install1
-rw-r--r--projects/libpayload/configs/targets1
-rwxr-xr-xprojects/libpayload/libpayload69
-rwxr-xr-xprojects/libpayload/libpayload-helper27
9 files changed, 104 insertions, 0 deletions
diff --git a/projects/libpayload/configs/depthcharge/nyan/arch b/projects/libpayload/configs/depthcharge/nyan/arch
new file mode 100644
index 00000000..fb05f39d
--- /dev/null
+++ b/projects/libpayload/configs/depthcharge/nyan/arch
@@ -0,0 +1 @@
+arm
diff --git a/projects/libpayload/configs/depthcharge/nyan/config b/projects/libpayload/configs/depthcharge/nyan/config
new file mode 100644
index 00000000..ddbb4f8d
--- /dev/null
+++ b/projects/libpayload/configs/depthcharge/nyan/config
@@ -0,0 +1 @@
+config.nyan
diff --git a/projects/libpayload/configs/depthcharge/targets b/projects/libpayload/configs/depthcharge/targets
new file mode 100644
index 00000000..792768c4
--- /dev/null
+++ b/projects/libpayload/configs/depthcharge/targets
@@ -0,0 +1,2 @@
+nyan
+veyron
diff --git a/projects/libpayload/configs/depthcharge/veyron/arch b/projects/libpayload/configs/depthcharge/veyron/arch
new file mode 100644
index 00000000..fb05f39d
--- /dev/null
+++ b/projects/libpayload/configs/depthcharge/veyron/arch
@@ -0,0 +1 @@
+arm
diff --git a/projects/libpayload/configs/depthcharge/veyron/config b/projects/libpayload/configs/depthcharge/veyron/config
new file mode 100644
index 00000000..2ddc22fb
--- /dev/null
+++ b/projects/libpayload/configs/depthcharge/veyron/config
@@ -0,0 +1 @@
+config.veyron
diff --git a/projects/libpayload/configs/install b/projects/libpayload/configs/install
new file mode 100644
index 00000000..1a513840
--- /dev/null
+++ b/projects/libpayload/configs/install
@@ -0,0 +1 @@
+install/libpayload/*:.
diff --git a/projects/libpayload/configs/targets b/projects/libpayload/configs/targets
new file mode 100644
index 00000000..d7e90413
--- /dev/null
+++ b/projects/libpayload/configs/targets
@@ -0,0 +1 @@
+depthcharge
diff --git a/projects/libpayload/libpayload b/projects/libpayload/libpayload
new file mode 100755
index 00000000..60cc43c9
--- /dev/null
+++ b/projects/libpayload/libpayload
@@ -0,0 +1,69 @@
+#!/bin/bash
+
+# Copyright (C) 2016 Paul Kocialkowski <contact@paulk.fr>
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+arguments() {
+ project_arguments_targets "$project" "$@"
+}
+
+usage() {
+ project_usage_actions "$project"
+ project_usage_arguments "$project" "$@"
+}
+
+build() {
+ local repository="coreboot"
+
+ project_sources_directory_missing_empty_error "$project" "$repository" "$@"
+
+ if git_project_check $repository
+ then
+ git_project_checkout "$repository" "$repository" "$@"
+ fi
+
+ local coreboot_sources_path=$( project_sources_path "$repository" "$repository" "$@" )
+ local sources_path="$coreboot_sources_path/payloads/libpayload/"
+ local build_path=$( project_build_path "$project" "$@" )
+ local build_install_path="$build_path/install"
+
+ local config=$( libpayload_config "$@" )
+ local config_path="configs/$config"
+
+ local arch=$( libpayload_arch "$@" )
+
+ local crossgcc_build_path=$( project_build_path "crossgcc" "$arch" )
+ local crossgcc_bin_path="$crossgcc_build_path/bin/"
+
+ project_action "build" "crossgcc" "$arch"
+
+ rm -f "$sources_path/.xcompile"
+
+ mkdir -p "$build_path"
+
+ make -C "$sources_path" obj="$build_path" DOTCONFIG="$build_path/.config" XGCCPATH="$crossgcc_bin_path" KBUILD_DEFCONFIG="$config_path" "defconfig"
+ make -C "$sources_path" obj="$build_path" DOTCONFIG="$build_path/.config" XGCCPATH="$crossgcc_bin_path" -j$TASKS
+ make -C "$sources_path" obj="$build_path" DOTCONFIG="$build_path/.config" XGCCPATH="$crossgcc_bin_path" DESTDIR="$build_install_path" "install"
+
+ rm -f "$sources_path/.xcompile"
+}
+
+build_check() {
+ project_build_check "$project" "$@"
+}
+
+clean() {
+ project_clean "$project" "$@"
+}
diff --git a/projects/libpayload/libpayload-helper b/projects/libpayload/libpayload-helper
new file mode 100755
index 00000000..05970932
--- /dev/null
+++ b/projects/libpayload/libpayload-helper
@@ -0,0 +1,27 @@
+#!/bin/bash
+
+# Copyright (C) 2016 Paul Kocialkowski <contact@paulk.fr>
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+CONFIG="config"
+ARCH="arch"
+
+libpayload_arch() {
+ project_file_contents "$project" "$CONFIGS" "$ARCH" "$@"
+}
+
+libpayload_config() {
+ project_file_contents "$project" "$CONFIGS" "$CONFIG" "$@"
+}