-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathDockerfile.64
More file actions
54 lines (49 loc) · 1.89 KB
/
Dockerfile.64
File metadata and controls
54 lines (49 loc) · 1.89 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
FROM ubuntu:20.04
ENV DEBIAN_FRONTEND=noninteractive
# Ubuntu 20.04 (focal) provides glibc 2.31 — oldest among 64-bit SpruceOS devices
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 focal main restricted universe multiverse" >> /etc/apt/sources.list && \
echo "deb [arch=arm64] http://ports.ubuntu.com/ubuntu-ports focal-updates main restricted universe multiverse" >> /etc/apt/sources.list && \
apt-get update && \
apt-get install -y --no-install-recommends \
build-essential \
gcc-aarch64-linux-gnu \
g++-aarch64-linux-gnu \
pkg-config \
git \
ca-certificates \
python3 \
wget \
ccache \
cmake \
libsdl2-dev:arm64 \
libasound2-dev:arm64 \
libgles2-mesa-dev:arm64 \
libegl1-mesa-dev:arm64 \
libpng-dev:arm64 \
zlib1g-dev:arm64 \
libglew-dev:arm64 \
libzip-dev:arm64 \
&& rm -rf /var/lib/apt/lists/*
# Create CMake toolchain file for aarch64 cross-compilation
RUN printf '\
set(CMAKE_SYSTEM_NAME Linux)\n\
set(CMAKE_SYSTEM_PROCESSOR aarch64)\n\
set(CMAKE_C_COMPILER aarch64-linux-gnu-gcc)\n\
set(CMAKE_CXX_COMPILER aarch64-linux-gnu-g++)\n\
set(CMAKE_FIND_ROOT_PATH /usr/aarch64-linux-gnu /usr/lib/aarch64-linux-gnu /usr)\n\
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)\n\
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY BOTH)\n\
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE BOTH)\n\
set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE BOTH)\n\
set(PKG_CONFIG_EXECUTABLE /usr/bin/pkg-config)\n\
set(ENV{PKG_CONFIG_PATH} "/usr/lib/aarch64-linux-gnu/pkgconfig")\n\
set(ENV{PKG_CONFIG_LIBDIR} "/usr/lib/aarch64-linux-gnu/pkgconfig")\n\
set(CMAKE_INTERPROCEDURAL_OPTIMIZATION TRUE)\n\
' > /tmp/aarch64-toolchain.cmake
COPY build-64.sh /build-64.sh
RUN chmod +x /build-64.sh
COPY patches/ /patches/
WORKDIR /build
ENTRYPOINT ["/build-64.sh"]