2
2
3
3
ARG ARCH=
4
4
ARG TOOLCHAIN=
5
+ ARG TOOLCHAIN_PREFIX=
5
6
ARG OPENSSL_TARGET=
6
7
7
8
ARG OPENSSL_VERSION=
@@ -17,9 +18,9 @@ ARG HAPROXY_SHA256=
17
18
ARG LUA_VERSION=
18
19
ARG LUA_MD5=
19
20
20
- # Build using cross-compilation, with amd64 as the build arch and $ARCH as the host
21
+ # Build using cross-compilation, using $TOOLCHAIN to target $ARCH
21
22
22
- FROM --platform=linux/amd64 $OS as builder
23
+ FROM $OS as builder
23
24
24
25
ARG ARCH
25
26
ARG TOOLCHAIN
@@ -28,14 +29,16 @@ ARG ARCH_FLAGS
28
29
RUN dpkg --add-architecture "${ARCH}" && \
29
30
apt-get update && \
30
31
apt-get install --no-install-recommends -y \
31
- gcc-10-${TOOLCHAIN} libc6-dev-${ARCH}-cross make file libc6-dev perl libtext-template-perl libreadline-dev curl ca-certificates libcrypt-dev:${ARCH}
32
+ gcc-10-${TOOLCHAIN} libc6-dev-${ARCH}-cross make file libc6-dev perl libtext-template-perl \
33
+ libreadline-dev curl ca-certificates libcrypt-dev:${ARCH} gcc-10 binutils-${TOOLCHAIN} binutils
32
34
33
35
### OpenSSL
34
36
35
- FROM --platform=linux/amd64 builder as ssl
37
+ FROM builder as ssl
36
38
37
39
ARG ARCH
38
40
ARG TOOLCHAIN
41
+ ARG TOOLCHAIN_PREFIX
39
42
ARG ARCH_FLAGS
40
43
41
44
ARG OPENSSL_VERSION
@@ -46,18 +49,19 @@ RUN curl -OJL https://www.openssl.org/source/openssl-${OPENSSL_VERSION}.tar.gz &
46
49
echo ${OPENSSL_SHA256} openssl-${OPENSSL_VERSION}.tar.gz | sha256sum -c && \
47
50
tar zxvf openssl-${OPENSSL_VERSION}.tar.gz && \
48
51
cd openssl-${OPENSSL_VERSION} && \
49
- ./Configure ${OPENSSL_TARGET} --cross-compile-prefix=/usr/bin/${TOOLCHAIN }- CC=gcc-10 \
52
+ ./Configure ${OPENSSL_TARGET} --cross-compile-prefix=/usr/bin/${TOOLCHAIN_PREFIX }- CC=gcc-10 \
50
53
-march=${ARCH_FLAGS} enable-ec_nistp_64_gcc_128 \
51
- no-shared --prefix=/tmp/openssl --openssldir=/tmp/openssl && \
54
+ no-shared --prefix=/tmp/openssl --openssldir=/tmp/openssl --libdir=lib && \
52
55
make && \
53
56
make install_sw
54
57
55
58
### PCRE2
56
59
57
- FROM --platform=linux/amd64 builder as pcre2
60
+ FROM builder as pcre2
58
61
59
62
ARG ARCH
60
63
ARG TOOLCHAIN
64
+ ARG TOOLCHAIN_PREFIX
61
65
ARG ARCH_FLAGS
62
66
63
67
ARG PCRE2_VERSION
@@ -67,7 +71,7 @@ RUN curl -OJL "https://github.com/PhilipHazel/pcre2/releases/download/pcre2-${PC
67
71
echo ${PCRE2_SHA256} pcre2-${PCRE2_VERSION}.tar.gz | sha256sum -c && \
68
72
tar zxvf pcre2-${PCRE2_VERSION}.tar.gz && \
69
73
cd pcre2-${PCRE2_VERSION} && \
70
- CC=/usr/bin/${TOOLCHAIN }-gcc-10 CFLAGS="-O3 -march=${ARCH_FLAGS} -g" \
74
+ CC=/usr/bin/${TOOLCHAIN_PREFIX }-gcc-10 CFLAGS="-O3 -march=${ARCH_FLAGS} -g" \
71
75
./configure --prefix=/tmp/pcre2 --disable-shared --enable-jit --host=${TOOLCHAIN} && \
72
76
make install
73
77
@@ -77,6 +81,7 @@ FROM builder as lua
77
81
78
82
ARG ARCH
79
83
ARG TOOLCHAIN
84
+ ARG TOOLCHAIN_PREFIX
80
85
ARG ARCH_FLAGS
81
86
82
87
ARG LUA_VERSION
@@ -86,22 +91,23 @@ RUN curl -OJL "http://www.lua.org/ftp/lua-${LUA_VERSION}.tar.gz" && \
86
91
echo "${LUA_MD5} lua-${LUA_VERSION}.tar.gz" | md5sum -c && \
87
92
tar zxf lua-${LUA_VERSION}.tar.gz && \
88
93
cd lua-${LUA_VERSION} && \
89
- make CC="/usr/bin/${TOOLCHAIN }-gcc-10" \
94
+ make CC="/usr/bin/${TOOLCHAIN_PREFIX }-gcc-10" \
90
95
MYCFLAGS="-march=${ARCH_FLAGS} -g" \
91
- AR="/usr/bin/${TOOLCHAIN }-ar rcu" \
92
- RANLIB=/usr/bin/${TOOLCHAIN }-ranlib && \
96
+ AR="/usr/bin/${TOOLCHAIN_PREFIX }-ar rcu" \
97
+ RANLIB=/usr/bin/${TOOLCHAIN_PREFIX }-ranlib && \
93
98
make install INSTALL_TOP=/tmp/lua
94
99
95
100
### HAProxy
96
101
97
- FROM --platform=linux/amd64 builder as haproxy
102
+ FROM builder as haproxy
98
103
99
104
COPY --from=ssl /tmp/openssl /tmp/openssl
100
105
COPY --from=pcre2 /tmp/pcre2 /tmp/pcre2
101
106
COPY --from=lua /tmp/lua /tmp/lua
102
107
103
108
ARG ARCH
104
109
ARG TOOLCHAIN
110
+ ARG TOOLCHAIN_PREFIX
105
111
ARG ARCH_FLAGS
106
112
107
113
ARG HAPROXY_MAJOR
@@ -114,7 +120,7 @@ RUN curl -OJL "http://www.haproxy.org/download/${HAPROXY_MAJOR}/src/haproxy-${HA
114
120
make -C haproxy-${HAPROXY_VERSION} \
115
121
TARGET=linux-glibc \
116
122
ARCH_FLAGS="-march=${ARCH_FLAGS}" \
117
- CC=/usr/bin/${TOOLCHAIN }-gcc-10 \
123
+ CC=/usr/bin/${TOOLCHAIN_PREFIX }-gcc-10 \
118
124
USE_SLZ=1 \
119
125
USE_STATIC_PCRE2=1 USE_PCRE2_JIT=1 PCRE2DIR=/tmp/pcre2 \
120
126
USE_OPENSSL=1 SSL_INC=/tmp/openssl/include SSL_LIB=/tmp/openssl/lib \
0 commit comments