mirror of
https://git.planet-casio.com/Lephenixnoir/sh-elf-binutils.git
synced 2025-01-05 08:23:37 +01:00
initial building script
This commit is contained in:
commit
11fc5fc354
7 changed files with 162 additions and 0 deletions
9
.gitignore
vendored
Normal file
9
.gitignore
vendored
Normal file
|
@ -0,0 +1,9 @@
|
|||
# Everything but the scripts
|
||||
*
|
||||
!giteapc.make
|
||||
!configure.sh
|
||||
!build.sh
|
||||
!install.sh
|
||||
!uninstall.sh
|
||||
!util.sh
|
||||
!.gitignore
|
8
build.sh
Executable file
8
build.sh
Executable file
|
@ -0,0 +1,8 @@
|
|||
#! /usr/bin/env bash
|
||||
|
||||
source util.sh
|
||||
cd build
|
||||
|
||||
echo "$TAG Compiling binutils (usually 5-10 minutes)..."
|
||||
run_quietly giteapc-build.log \
|
||||
make -j$(nproc)
|
82
configure.sh
Executable file
82
configure.sh
Executable file
|
@ -0,0 +1,82 @@
|
|||
#! /usr/bin/env bash
|
||||
|
||||
source util.sh
|
||||
|
||||
VERSION=$1
|
||||
URL="https://ftp.gnu.org/gnu/binutils/binutils-$VERSION.tar.xz"
|
||||
ARCHIVE=$(basename "$URL")
|
||||
|
||||
# Check dependencies for binutils and GCC
|
||||
|
||||
if command -v apt >/dev/null 2>&1; then
|
||||
deps="libmpfr-dev libmpc-dev libgmp-dev libpng-dev libppl-dev flex g++ git texinfo xz-utils"
|
||||
pm=apt
|
||||
pm_has="apt show"
|
||||
pm_install="sudo apt install"
|
||||
elif command -v pacman >/dev/null 2>&1; then
|
||||
deps="mpfr mpc gmp libpng ppl flex gcc git texinfo xz"
|
||||
pm=pacman
|
||||
pm_has="pacman -Qi"
|
||||
pm_install="sudo pacman -S"
|
||||
else
|
||||
trust_deps=1
|
||||
fi
|
||||
|
||||
missing=""
|
||||
if [[ -z "$trust_deps" ]]; then
|
||||
for d in $deps; do
|
||||
if ! $pm_has $d >/dev/null 2>&1; then
|
||||
missing="$missing $d"
|
||||
fi
|
||||
done
|
||||
fi
|
||||
|
||||
# Offer to install dependencies
|
||||
|
||||
if [[ ! -z "$missing" ]]; then
|
||||
echo "$TAG Based on $pm, some dependencies are missing: $missing"
|
||||
echo -n "$TAG Do you want to run '$pm_install' to install them (Y/n)? "
|
||||
|
||||
read do_install
|
||||
if [[ "$do_install" == "y" || "$do_install" == "Y" || "$do_install" == "" ]]; then
|
||||
$pm_install
|
||||
else
|
||||
echo "$TAG Skipping dependencies, hoping it will build anyway."
|
||||
fi
|
||||
fi
|
||||
|
||||
# Download archive
|
||||
|
||||
if [[ -f "$ARCHIVE" ]]; then
|
||||
echo "$TAG Found $ARCHIVE, skipping download"
|
||||
else
|
||||
echo "$TAG Downloading $URL..."
|
||||
if command -v curl >/dev/null 2>&1; then
|
||||
curl $URL -o $ARCHIVE
|
||||
elif command -v wget >/dev/null 2>&1; then
|
||||
wget -q --show-progress $URL -O $ARCHIVE
|
||||
else
|
||||
echo "$TAG error: no curl or wget; install one or download archive yourself" >&2
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
# Extract archive
|
||||
|
||||
echo "$TAG Extracting $ARCHIVE..."
|
||||
tar -xJf $ARCHIVE
|
||||
|
||||
# Create build folder
|
||||
|
||||
[[ -d "build" ]] && rm -rf build
|
||||
mkdir build
|
||||
|
||||
# Configure. binutils does not support the uninstall target (wow) so we just
|
||||
# install in this directory and later symlink executables to $PREFIX/bin.
|
||||
|
||||
PREFIX="$(pwd)"
|
||||
cd build
|
||||
|
||||
echo "$TAG Configuring binutils..."
|
||||
run_quietly giteapc-configure.log \
|
||||
../binutils-$VERSION/configure --prefix="$PREFIX" --target=sh3eb-elf --with-multilib-list=m3,m4-nofpu --program-prefix=sh-elf- --enable-libssp --enable-lto
|
17
giteapc.make
Normal file
17
giteapc.make
Normal file
|
@ -0,0 +1,17 @@
|
|||
# giteapc: version=1
|
||||
|
||||
VERSION=2.35.1
|
||||
|
||||
configure:
|
||||
@ ./configure.sh $(VERSION)
|
||||
|
||||
build:
|
||||
@ ./build.sh
|
||||
|
||||
install:
|
||||
@ ./install.sh "$(GITEAPC_PREFIX)"
|
||||
|
||||
uninstall:
|
||||
@ ./uninstall.sh "$(GITEAPC_PREFIX)"
|
||||
|
||||
.PHONY: configure build install uninstall
|
21
install.sh
Executable file
21
install.sh
Executable file
|
@ -0,0 +1,21 @@
|
|||
#! /usr/bin/env bash
|
||||
|
||||
source util.sh
|
||||
PREFIX=$1
|
||||
|
||||
cd build
|
||||
echo "$TAG Installing to local folder..."
|
||||
run_quietly giteapc-install.log \
|
||||
make install-strip
|
||||
cd ..
|
||||
|
||||
# Symbolic link executables to $PREFIX/bin
|
||||
echo "$TAG Symlinking binaries..."
|
||||
for x in bin/*; do
|
||||
ln -s $(pwd)/$x $PREFIX/$x
|
||||
done
|
||||
|
||||
# Cleanup build files
|
||||
echo "$TAG Cleaning up build files..."
|
||||
rm -rf binutils-*/ binutils-*.tar.*
|
||||
rm -rf build/
|
14
uninstall.sh
Executable file
14
uninstall.sh
Executable file
|
@ -0,0 +1,14 @@
|
|||
#! /usr/bin/env bash
|
||||
|
||||
source util.sh
|
||||
PREFIX=$1
|
||||
|
||||
# Remove symlinks
|
||||
echo "$TAG Removing symlinks to binaries..."
|
||||
for x in bin/*; do
|
||||
rm $PREFIX/$x
|
||||
done
|
||||
|
||||
# Remove local files
|
||||
echo "$TAG Removing installed files..."
|
||||
rm -rf bin/ sh3eb-elf/ share/
|
11
util.sh
Normal file
11
util.sh
Normal file
|
@ -0,0 +1,11 @@
|
|||
TAG="<sh-elf-binutils>"
|
||||
|
||||
run_quietly() {
|
||||
out="$1"
|
||||
shift 1
|
||||
"$@" >$out 2>&1
|
||||
if [[ "$?" != 0 ]]; then
|
||||
echo "$tag error: build failed, please check $(pwd)/$out o(x_x)o"
|
||||
exit 1
|
||||
fi
|
||||
}
|
Loading…
Reference in a new issue