Add ARM platforms to the build script
This commit is contained in:
parent
1503fb4ebc
commit
96943eb68b
24 changed files with 125 additions and 13 deletions
|
@ -9,10 +9,11 @@
|
|||
# If run without arguments, the script asks for required arguments one
|
||||
# by one, which includes the above two (--compiler and --build-type).
|
||||
#
|
||||
# Optional arguments include the version of compiler and additional
|
||||
# build modifiers such as link-time-optimizations (--modifier lto),
|
||||
# feedback-directed-optimizations (--modifier fdo), and taking advantage
|
||||
# of the building-machine's full instructions sets (--modifier native).
|
||||
# Optional arguments allow specifying the version of compiler,
|
||||
# machine type, and applying build modifiers such as:
|
||||
# - link-time-optimizations (--modifier lto),
|
||||
# - feedback-directed-optimizations (--modifier fdo)
|
||||
# - current processor instructions sets (--modifier native)
|
||||
# All modifiers are available simulatenously.
|
||||
#
|
||||
# Usage examples:
|
||||
|
@ -25,6 +26,73 @@
|
|||
#
|
||||
set -euo pipefail
|
||||
|
||||
# Detects the machine type and sets the 'machine' variable
|
||||
function query_machine() {
|
||||
# Start with a sane and safe default
|
||||
machine="$(uname -m | sed 's/-.*//')"
|
||||
|
||||
# Only attempt further detection on Linux-based systems
|
||||
if [[ ! -f /proc/cpuinfo ]]; then
|
||||
return
|
||||
fi
|
||||
# ARM differentiation based on
|
||||
# https://github.com/RetroPie/RetroPie-Setup/blob/master/scriptmodules/system.sh
|
||||
case "$(sed -n '/^Hardware/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo)" in
|
||||
BCM*)
|
||||
# calculated based on information from
|
||||
# https://github.com/AndrewFromMelbourne/raspberry_pi_revision
|
||||
local rev
|
||||
rev="0x$(sed -n '/^Revision/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo)"
|
||||
# if bit 23 is not set, we are on a rpi1
|
||||
# (bit 23 means the revision is a bitfield)
|
||||
if [[ $((("$rev" >> 23) & 1)) -eq 0 ]]; then
|
||||
machine="rpi1"
|
||||
else
|
||||
# if bit 23 is set, get the cpu from bits 12-15
|
||||
local cpu
|
||||
cpu=$((("$rev" >> 12) & 15))
|
||||
case $cpu in
|
||||
0)
|
||||
machine="rpi1"
|
||||
;;
|
||||
1)
|
||||
machine="rpi2"
|
||||
;;
|
||||
2)
|
||||
machine="rpi3"
|
||||
;;
|
||||
3)
|
||||
machine="rpi4"
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
;;
|
||||
ODROIDC)
|
||||
machine="odroid_c1"
|
||||
;;
|
||||
ODROID-C2)
|
||||
machine="odroid_c2"
|
||||
;;
|
||||
"Freescale i.MX6 Quad/DualLite (Device Tree)")
|
||||
machine="imx6"
|
||||
;;
|
||||
ODROID-XU[34])
|
||||
machine="odroid_xu"
|
||||
;;
|
||||
"Rockchip (Device Tree)")
|
||||
machine="tinker"
|
||||
;;
|
||||
Vero4K|Vero4KPlus)
|
||||
machine="vero4k"
|
||||
;;
|
||||
"Allwinner sun8i Family")
|
||||
machine="armv7_mali"
|
||||
;;
|
||||
*)
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
function parse_args() {
|
||||
# Gather the parameters that define this build
|
||||
postfix=""
|
||||
|
@ -36,19 +104,32 @@ function parse_args() {
|
|||
-t|--build-type) selected_type="${2}"; shift 2;;
|
||||
-m|--modifier) modifiers+=("${2}"); shift 2;;
|
||||
-p|--bin-path) PATH="${2}:${PATH}"; shift 2;;
|
||||
-a|--machine) machine="${2}"; shift 2;;
|
||||
*) configure_additions+=("${1}"); shift;;
|
||||
esac; done
|
||||
|
||||
# Import our settings and report missing values
|
||||
machine="$(uname -m | sed 's/-.*//')"; import machine "${machine}"
|
||||
os="$(uname -s | sed 's/-.*//')"; import os "${os}"
|
||||
# Determine and import machine-specific rules
|
||||
if [[ -z "${machine:-}" ]]; then
|
||||
query_machine
|
||||
fi
|
||||
import machine "${machine}"
|
||||
|
||||
# Determine and import OS-specific rules
|
||||
os="$(uname -s | sed 's/-.*//')"
|
||||
import os "${os}"
|
||||
|
||||
# Import compiler rules, plus any OS + machine customizations
|
||||
import compiler "${compiler:-}"
|
||||
import "${compiler:-}" "${os}_${machine}"
|
||||
if [[ -z "${selected_type:-}" ]]; then arg_error "--build-type" "${TYPES[*]}"; fi
|
||||
if [[ -z "${selected_type:-}" ]]; then
|
||||
arg_error "--build-type" "${TYPES[*]}"
|
||||
fi
|
||||
|
||||
# Create a pretty modifier string that we can add to our build-type
|
||||
printf -v mod_string '+%s' "${modifiers[@]:1}"
|
||||
if [[ "${mod_string}" == "+" ]]; then mod_string=""; fi
|
||||
if [[ "${mod_string}" == "+" ]]; then
|
||||
mod_string=""
|
||||
fi
|
||||
|
||||
# Print a summary of our build configuration
|
||||
underline "Compiling a ${selected_type}${mod_string} build using "`
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue