Skip to content

Commit 3d36cb1

Browse files
committed
Enable LTO
1 parent 56f981d commit 3d36cb1

4 files changed

Lines changed: 52 additions & 3 deletions

File tree

alpine/Dockerfile

Lines changed: 14 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

alpine/Dockerfile.j2

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@ ARG REDISJSON_VERSION
2424
ARG REDISBLOOM_VERSION
2525
ARG REDISTIMESERIES_VERSION
2626
{% endif -%}
27+
# 1 = enable link-time optimization for bundled modules (e.g. RediSearch), 0 = off. Override with: docker build --build-arg LTO=0
28+
ARG LTO=1
2729

2830
RUN set -eux; \
2931
\
@@ -62,6 +64,7 @@ RUN set -eux; \
6264
libgcc \
6365
libtool \
6466
llvm21-dev \
67+
lld21 \
6568
ncurses-dev \
6669
openssh \
6770
openssl \
@@ -122,7 +125,15 @@ RUN set -eux; \
122125
export RUST_DYN_CRT=1; \
123126
export PATH="/usr/lib/llvm21/bin:$PATH"; \
124127
export BUILD_TLS=yes; \
128+
if [ "$BUILD_WITH_MODULES" = "yes" ] && [ "${LTO}" = "1" ]; then \
129+
mkdir -p /usr/local/bin; \
130+
ln -sf /usr/lib/llvm21/bin/clang-21 /usr/local/bin/clang-21; \
131+
ln -sf /usr/lib/llvm21/bin/clang++-21 /usr/local/bin/clang++-21; \
132+
ln -sf /usr/lib/llvm21/bin/lld /usr/local/bin/lld; \
133+
[ -x /usr/lib/llvm21/bin/lld-21 ] && ln -sf /usr/lib/llvm21/bin/lld-21 /usr/local/bin/lld-21; \
134+
fi; \
125135
if [ "$BUILD_WITH_MODULES" = "yes" ]; then \
136+
export LTO=${LTO}; \
126137

127138
{%- if custom_build %}
128139

debian/Dockerfile

Lines changed: 14 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

debian/Dockerfile.j2

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@ ARG REDISJSON_VERSION
2424
ARG REDISBLOOM_VERSION
2525
ARG REDISTIMESERIES_VERSION
2626
{% endif %}
27+
# 1 = enable link-time optimization for bundled modules (e.g. RediSearch), 0 = off. Override with: docker build --build-arg LTO=0
28+
ARG LTO=1
2729

2830
RUN set -eux; \
2931
\
@@ -61,6 +63,14 @@ RUN set -eux; \
6163
autoconf \
6264
libtool \
6365
g++; \
66+
if [ "${LTO}" = "1" ]; then \
67+
install -d /etc/apt/keyrings; \
68+
wget -qO /etc/apt/keyrings/llvm.asc https://apt.llvm.org/llvm-snapshot.gpg.key; \
69+
echo "deb [signed-by=/etc/apt/keyrings/llvm.asc] http://apt.llvm.org/trixie/ llvm-toolchain-trixie-21 main" > /etc/apt/sources.list.d/llvm.list; \
70+
apt-get update; \
71+
apt-get install -y --no-install-recommends clang-21 lld-21 llvm-21; \
72+
export PATH="/usr/lib/llvm-21/bin:$PATH"; \
73+
fi; \
6474
fi; \
6575
\
6676
rm -rf /var/lib/apt/lists/*; \
@@ -121,6 +131,9 @@ RUN set -eux; \
121131
grep -F "cd jemalloc && ./configure $extraJemallocConfigureFlags " /usr/src/redis/deps/Makefile; \
122132
\
123133
export BUILD_TLS=yes; \
134+
if [ "$BUILD_WITH_MODULES" = "yes" ]; then \
135+
export LTO=${LTO}; \
136+
fi; \
124137
make -C /usr/src/redis -j "$(nproc)" all; \
125138
make -C /usr/src/redis install; \
126139
make -C /usr/src/redis distclean; \

0 commit comments

Comments
 (0)