Working
This commit is contained in:
parent
422e75c5d4
commit
c1f961b96b
26
packages/Dockerfile
Normal file
26
packages/Dockerfile
Normal file
@ -0,0 +1,26 @@
|
||||
FROM ubuntu:22.04
|
||||
|
||||
# Set up architectures first
|
||||
RUN dpkg --add-architecture arm64 && \
|
||||
sed -i 's/deb http/deb [arch=amd64] http/g' /etc/apt/sources.list && \
|
||||
echo "deb [arch=arm64] http://ports.ubuntu.com/ubuntu-ports/ jammy main restricted universe multiverse" >> /etc/apt/sources.list && \
|
||||
echo "deb [arch=arm64] http://ports.ubuntu.com/ubuntu-ports/ jammy-updates main restricted universe multiverse" >> /etc/apt/sources.list && \
|
||||
echo "deb [arch=arm64] http://ports.ubuntu.com/ubuntu-ports/ jammy-security main restricted universe multiverse" >> /etc/apt/sources.list && \
|
||||
echo "deb [arch=arm64] http://ports.ubuntu.com/ubuntu-ports/ jammy-backports main restricted universe multiverse" >> /etc/apt/sources.list
|
||||
|
||||
# Install build dependencies for both architectures
|
||||
RUN apt-get update && \
|
||||
apt-get install -y \
|
||||
cmake \
|
||||
make \
|
||||
g++ \
|
||||
musl-tools \
|
||||
g++-aarch64-linux-gnu \
|
||||
crossbuild-essential-arm64 \
|
||||
libtbb-dev \
|
||||
libxxhash-dev \
|
||||
libtbb-dev:arm64 \
|
||||
libxxhash-dev:arm64 && \
|
||||
rm -rf /var/lib/apt/lists/*
|
||||
|
||||
WORKDIR /src
|
@ -1,6 +1,42 @@
|
||||
# This script uses debian docker containers (not the host!) to do the following:
|
||||
# 1. builds two executables from ../CMakeLists.txt (a C++ project)
|
||||
# a) dropshell-x86_64, using musl and static linking
|
||||
# b) dropshell-arm64, using musl and static linking
|
||||
# This script uses a pre-built docker container to build two executables:
|
||||
# 1. dropshell-x86_64, using musl and static linking
|
||||
# 2. dropshell-arm64, using musl and static linking
|
||||
|
||||
# the executables are copied to ./output, with the ownership changed to current user.
|
||||
# The executables are copied to ./output, with the ownership changed to current user.
|
||||
|
||||
#!/bin/bash
|
||||
set -e
|
||||
|
||||
# Create output directory if it doesn't exist
|
||||
mkdir -p output
|
||||
|
||||
# Build Docker image if it doesn't exist
|
||||
if ! docker image inspect dropshell-builder:latest >/dev/null 2>&1; then
|
||||
echo "Building builder image..."
|
||||
docker build -t dropshell-builder:latest .
|
||||
fi
|
||||
|
||||
# Build x86_64 executable
|
||||
docker run --rm -v "$(pwd)/..:/src" dropshell-builder:latest bash -c '
|
||||
rm -rf build && \
|
||||
mkdir -p build && \
|
||||
cd build && \
|
||||
cmake -DCMAKE_BUILD_TYPE=Release .. && \
|
||||
make && \
|
||||
cp dropshell ../packages/output/dropshell-x86_64
|
||||
'
|
||||
|
||||
# Build arm64 executable
|
||||
docker run --rm -v "$(pwd)/..:/src" dropshell-builder:latest bash -c '
|
||||
rm -rf build && \
|
||||
mkdir -p build && \
|
||||
cd build && \
|
||||
cmake -DCMAKE_C_COMPILER=aarch64-linux-gnu-gcc \
|
||||
-DCMAKE_CXX_COMPILER=aarch64-linux-gnu-g++ \
|
||||
-DCMAKE_BUILD_TYPE=Release .. && \
|
||||
make && \
|
||||
cp dropshell ../packages/output/dropshell-arm64
|
||||
'
|
||||
|
||||
# Change ownership to current user
|
||||
chown $(id -u):$(id -g) output/dropshell-*
|
||||
|
BIN
packages/output/dropshell-arm64
Executable file
BIN
packages/output/dropshell-arm64
Executable file
Binary file not shown.
BIN
packages/output/dropshell-x86_64
Executable file
BIN
packages/output/dropshell-x86_64
Executable file
Binary file not shown.
Loading…
x
Reference in New Issue
Block a user