Skip to content

Commit 27aca93

Browse files
authored
Locate C++ toolchain path dynamically (#1390)
1 parent 7a39cd5 commit 27aca93

File tree

21 files changed

+104
-21
lines changed

21 files changed

+104
-21
lines changed

src/azurelinux/3.0/net10.0/cross/amd64-musl/Dockerfile

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,10 @@ ARG ROOTFS_DIR
66
RUN /scripts/eng/common/cross/build-rootfs.sh x64 alpine3.17 --skipunmount
77

88
RUN TARGET_TRIPLE="x86_64-alpine-linux-musl" && \
9+
GCC_VER=$(basename "$(find "$ROOTFS_DIR/usr/include/c++/" -mindepth 1 -maxdepth 1 -type d | sort -V | head -n1)") && \
10+
CPP_INCLUDES="$ROOTFS_DIR/usr/include/c++/$GCC_VER" && \
11+
TRIPLET_INCLUDES=$([ -e "$CPP_INCLUDES/$TARGET_TRIPLE" ] && echo "$CPP_INCLUDES/$TARGET_TRIPLE" || echo "$(realpath "$CPP_INCLUDES/../../$TARGET_TRIPLE");$(realpath "$CPP_INCLUDES/../../$TARGET_TRIPLE/c++/$GCC_VER")") && \
12+
echo "Using C++ includes $CPP_INCLUDES and $TRIPLET_INCLUDES to build for $TARGET_TRIPLE" && \
913
cmake -S llvm-project.src/runtimes -B runtimes \
1014
-DCMAKE_BUILD_TYPE=Release \
1115
-DCMAKE_ASM_COMPILER=clang \
@@ -26,7 +30,7 @@ RUN TARGET_TRIPLE="x86_64-alpine-linux-musl" && \
2630
-DLIBCXX_ENABLE_SHARED=OFF \
2731
-DLIBCXX_HAS_MUSL_LIBC=ON \
2832
-DLIBCXX_CXX_ABI=libstdc++ \
29-
-DLIBCXX_CXX_ABI_INCLUDE_PATHS="$ROOTFS_DIR/usr/include/c++/12.2.1/;$ROOTFS_DIR/usr/include/c++/12.2.1/$TARGET_TRIPLE" && \
33+
-DLIBCXX_CXX_ABI_INCLUDE_PATHS="$CPP_INCLUDES;$TRIPLET_INCLUDES" && \
3034
cmake --build runtimes -j $(getconf _NPROCESSORS_ONLN) && \
3135
cmake --install runtimes --prefix "$ROOTFS_DIR/usr"
3236

src/azurelinux/3.0/net10.0/cross/amd64-sanitizer/Dockerfile

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,10 @@ ARG ROOTFS_DIR
88
RUN /scripts/eng/common/cross/build-rootfs.sh x64 bionic --skipunmount
99

1010
RUN TARGET_TRIPLE="x86_64-linux-gnu" && \
11+
GCC_VER=$(basename "$(find "$ROOTFS_DIR/usr/include/c++/" -mindepth 1 -maxdepth 1 -type d | sort -V | head -n1)") && \
12+
CPP_INCLUDES="$ROOTFS_DIR/usr/include/c++/$GCC_VER" && \
13+
TRIPLET_INCLUDES=$([ -e "$CPP_INCLUDES/$TARGET_TRIPLE" ] && echo "$CPP_INCLUDES/$TARGET_TRIPLE" || echo "$(realpath "$CPP_INCLUDES/../../$TARGET_TRIPLE");$(realpath "$CPP_INCLUDES/../../$TARGET_TRIPLE/c++/$GCC_VER")") && \
14+
echo "Using C++ includes $CPP_INCLUDES and $TRIPLET_INCLUDES to build for $TARGET_TRIPLE" && \
1115
CLANG_MAJOR_VERSION=$(clang --version | grep -oP "(?<=version )\d+") && \
1216
cmake -S llvm-project.src/runtimes -B runtimes \
1317
-DCMAKE_BUILD_TYPE=Release \
@@ -28,7 +32,7 @@ RUN TARGET_TRIPLE="x86_64-linux-gnu" && \
2832
-DLLVM_ENABLE_RUNTIMES="compiler-rt;libcxx" \
2933
-DLIBCXX_ENABLE_SHARED=OFF \
3034
-DLIBCXX_CXX_ABI="libstdc++" \
31-
-DLIBCXX_CXX_ABI_INCLUDE_PATHS="$ROOTFS_DIR/usr/include/c++/7.5.0/;$ROOTFS_DIR/usr/include/$TARGET_TRIPLE" \
35+
-DLIBCXX_CXX_ABI_INCLUDE_PATHS="$CPP_INCLUDES;$TRIPLET_INCLUDES" \
3236
-DCOMPILER_RT_CXX_LIBRARY="libcxx" \
3337
-DCOMPILER_RT_STATIC_CXX_LIBRARY=ON \
3438
-DSANITIZER_CXX_ABI_LIBNAME="libstdc++" \

src/azurelinux/3.0/net10.0/cross/amd64/Dockerfile

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,9 @@ ARG ROOTFS_DIR
66
RUN /scripts/eng/common/cross/build-rootfs.sh x64 bionic --skipunmount
77

88
RUN TARGET_TRIPLE="x86_64-linux-gnu" && \
9+
GCC_VER=$(basename "$(find "$ROOTFS_DIR/usr/include/c++/" -mindepth 1 -maxdepth 1 -type d | sort -V | head -n1)") && \
10+
CPP_INCLUDES="$ROOTFS_DIR/usr/include/c++/$GCC_VER" && \
11+
TRIPLET_INCLUDES=$([ -e "$CPP_INCLUDES/$TARGET_TRIPLE" ] && echo "$CPP_INCLUDES/$TARGET_TRIPLE" || echo "$(realpath "$CPP_INCLUDES/../../$TARGET_TRIPLE");$(realpath "$CPP_INCLUDES/../../$TARGET_TRIPLE/c++/$GCC_VER")") && \
912
CLANG_MAJOR_VERSION=$(clang --version | grep -oP "(?<=version )\d+") && \
1013
cmake -S llvm-project.src/runtimes -B runtimes \
1114
-DCMAKE_BUILD_TYPE=Release \
@@ -26,7 +29,7 @@ RUN TARGET_TRIPLE="x86_64-linux-gnu" && \
2629
-DLLVM_ENABLE_RUNTIMES="libcxx;compiler-rt" \
2730
-DLIBCXX_ENABLE_SHARED=OFF \
2831
-DLIBCXX_CXX_ABI=libstdc++ \
29-
-DLIBCXX_CXX_ABI_INCLUDE_PATHS="$ROOTFS_DIR/usr/include/c++/7.5.0/;$ROOTFS_DIR/usr/include/$TARGET_TRIPLE" \
32+
-DLIBCXX_CXX_ABI_INCLUDE_PATHS="$CPP_INCLUDES;$TRIPLET_INCLUDES" \
3033
-DCOMPILER_RT_CXX_LIBRARY="libcxx" \
3134
-DCOMPILER_RT_STATIC_CXX_LIBRARY=ON \
3235
-DCOMPILER_RT_BUILD_SANITIZERS=OFF \

src/azurelinux/3.0/net10.0/cross/arm-musl/Dockerfile

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,10 @@ ARG ROOTFS_DIR
66
RUN /scripts/eng/common/cross/build-rootfs.sh arm alpine3.17 --skipunmount
77

88
RUN TARGET_TRIPLE="armv7-alpine-linux-musleabihf" && \
9+
GCC_VER=$(basename "$(find "$ROOTFS_DIR/usr/include/c++/" -mindepth 1 -maxdepth 1 -type d | sort -V | head -n1)") && \
10+
CPP_INCLUDES="$ROOTFS_DIR/usr/include/c++/$GCC_VER" && \
11+
TRIPLET_INCLUDES=$([ -e "$CPP_INCLUDES/$TARGET_TRIPLE" ] && echo "$CPP_INCLUDES/$TARGET_TRIPLE" || echo "$(realpath "$CPP_INCLUDES/../../$TARGET_TRIPLE");$(realpath "$CPP_INCLUDES/../../$TARGET_TRIPLE/c++/$GCC_VER")") && \
12+
echo "Using C++ includes $CPP_INCLUDES and $TRIPLET_INCLUDES to build for $TARGET_TRIPLE" && \
913
cmake -S llvm-project.src/runtimes -B runtimes \
1014
-DCMAKE_BUILD_TYPE=Release \
1115
-DCMAKE_ASM_COMPILER=clang \
@@ -26,7 +30,7 @@ RUN TARGET_TRIPLE="armv7-alpine-linux-musleabihf" && \
2630
-DLIBCXX_ENABLE_SHARED=OFF \
2731
-DLIBCXX_HAS_MUSL_LIBC=ON \
2832
-DLIBCXX_CXX_ABI=libstdc++ \
29-
-DLIBCXX_CXX_ABI_INCLUDE_PATHS="$ROOTFS_DIR/usr/include/c++/12.2.1/;$ROOTFS_DIR/usr/include/c++/12.2.1/$TARGET_TRIPLE" && \
33+
-DLIBCXX_CXX_ABI_INCLUDE_PATHS="$CPP_INCLUDES;$TRIPLET_INCLUDES" && \
3034
cmake --build runtimes -j $(getconf _NPROCESSORS_ONLN) && \
3135
cmake --install runtimes --prefix "$ROOTFS_DIR/usr"
3236

src/azurelinux/3.0/net10.0/cross/arm/Dockerfile

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,10 @@ ARG ROOTFS_DIR
88
RUN /scripts/eng/common/cross/build-rootfs.sh arm jammy no-lldb --skipunmount
99

1010
RUN TARGET_TRIPLE="arm-linux-gnueabihf" && \
11+
GCC_VER=$(basename "$(find "$ROOTFS_DIR/usr/include/c++/" -mindepth 1 -maxdepth 1 -type d | sort -V | head -n1)") && \
12+
CPP_INCLUDES="$ROOTFS_DIR/usr/include/c++/$GCC_VER" && \
13+
TRIPLET_INCLUDES=$([ -e "$CPP_INCLUDES/$TARGET_TRIPLE" ] && echo "$CPP_INCLUDES/$TARGET_TRIPLE" || echo "$(realpath "$CPP_INCLUDES/../../$TARGET_TRIPLE");$(realpath "$CPP_INCLUDES/../../$TARGET_TRIPLE/c++/$GCC_VER")") && \
14+
echo "Using C++ includes $CPP_INCLUDES and $TRIPLET_INCLUDES to build for $TARGET_TRIPLE" && \
1115
CLANG_MAJOR_VERSION=$(clang --version | grep -oP "(?<=version )\d+") && \
1216
cmake -S llvm-project.src/runtimes -B runtimes \
1317
-DCMAKE_BUILD_TYPE=Release \
@@ -28,7 +32,7 @@ RUN TARGET_TRIPLE="arm-linux-gnueabihf" && \
2832
-DLLVM_ENABLE_RUNTIMES="libcxx;compiler-rt" \
2933
-DLIBCXX_ENABLE_SHARED=OFF \
3034
-DLIBCXX_CXX_ABI=libstdc++ \
31-
-DLIBCXX_CXX_ABI_INCLUDE_PATHS="$ROOTFS_DIR/usr/include/c++/11/;$ROOTFS_DIR/usr/include/$TARGET_TRIPLE" \
35+
-DLIBCXX_CXX_ABI_INCLUDE_PATHS="$CPP_INCLUDES;$TRIPLET_INCLUDES" \
3236
-DCOMPILER_RT_CXX_LIBRARY="libcxx" \
3337
-DCOMPILER_RT_STATIC_CXX_LIBRARY=ON \
3438
-DCOMPILER_RT_BUILD_SANITIZERS=OFF \

src/azurelinux/3.0/net10.0/cross/arm64-musl/Dockerfile

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,10 @@ ARG ROOTFS_DIR
66
RUN /scripts/eng/common/cross/build-rootfs.sh arm64 alpine3.17 --skipunmount
77

88
RUN TARGET_TRIPLE="aarch64-alpine-linux-musl" && \
9+
GCC_VER=$(basename "$(find "$ROOTFS_DIR/usr/include/c++/" -mindepth 1 -maxdepth 1 -type d | sort -V | head -n1)") && \
10+
CPP_INCLUDES="$ROOTFS_DIR/usr/include/c++/$GCC_VER" && \
11+
TRIPLET_INCLUDES=$([ -e "$CPP_INCLUDES/$TARGET_TRIPLE" ] && echo "$CPP_INCLUDES/$TARGET_TRIPLE" || echo "$(realpath "$CPP_INCLUDES/../../$TARGET_TRIPLE");$(realpath "$CPP_INCLUDES/../../$TARGET_TRIPLE/c++/$GCC_VER")") && \
12+
echo "Using C++ includes $CPP_INCLUDES and $TRIPLET_INCLUDES to build for $TARGET_TRIPLE" && \
913
cmake -S llvm-project.src/runtimes -B runtimes \
1014
-DCMAKE_BUILD_TYPE=Release \
1115
-DCMAKE_ASM_COMPILER=clang \
@@ -26,7 +30,7 @@ RUN TARGET_TRIPLE="aarch64-alpine-linux-musl" && \
2630
-DLIBCXX_ENABLE_SHARED=OFF \
2731
-DLIBCXX_HAS_MUSL_LIBC=ON \
2832
-DLIBCXX_CXX_ABI=libstdc++ \
29-
-DLIBCXX_CXX_ABI_INCLUDE_PATHS="$ROOTFS_DIR/usr/include/c++/12.2.1/;$ROOTFS_DIR/usr/include/c++/12.2.1/$TARGET_TRIPLE" && \
33+
-DLIBCXX_CXX_ABI_INCLUDE_PATHS="$CPP_INCLUDES;$TRIPLET_INCLUDES" && \
3034
cmake --build runtimes -j $(getconf _NPROCESSORS_ONLN) && \
3135
cmake --install runtimes --prefix "$ROOTFS_DIR/usr"
3236

src/azurelinux/3.0/net10.0/cross/arm64/Dockerfile

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,10 @@ ARG ROOTFS_DIR
66
RUN /scripts/eng/common/cross/build-rootfs.sh arm64 bionic --skipunmount
77

88
RUN TARGET_TRIPLE="aarch64-linux-gnu" && \
9+
GCC_VER=$(basename "$(find "$ROOTFS_DIR/usr/include/c++/" -mindepth 1 -maxdepth 1 -type d | sort -V | head -n1)") && \
10+
CPP_INCLUDES="$ROOTFS_DIR/usr/include/c++/$GCC_VER" && \
11+
TRIPLET_INCLUDES=$([ -e "$CPP_INCLUDES/$TARGET_TRIPLE" ] && echo "$CPP_INCLUDES/$TARGET_TRIPLE" || echo "$(realpath "$CPP_INCLUDES/../../$TARGET_TRIPLE");$(realpath "$CPP_INCLUDES/../../$TARGET_TRIPLE/c++/$GCC_VER")") && \
12+
echo "Using C++ includes $CPP_INCLUDES and $TRIPLET_INCLUDES to build for $TARGET_TRIPLE" && \
913
CLANG_MAJOR_VERSION=$(clang --version | grep -oP "(?<=version )\d+") && \
1014
cmake -S llvm-project.src/runtimes -B runtimes \
1115
-DCMAKE_BUILD_TYPE=Release \
@@ -28,7 +32,7 @@ RUN TARGET_TRIPLE="aarch64-linux-gnu" && \
2832
-DLIBCXXABI_ENABLE_SHARED=OFF \
2933
-DLIBCXXABI_USE_LLVM_UNWINDER=OFF \
3034
-DLIBCXX_CXX_ABI=libstdc++ \
31-
-DLIBCXX_CXX_ABI_INCLUDE_PATHS="$ROOTFS_DIR/usr/include/c++/7.5.0/;$ROOTFS_DIR/usr/include/$TARGET_TRIPLE" \
35+
-DLIBCXX_CXX_ABI_INCLUDE_PATHS="$CPP_INCLUDES;$TRIPLET_INCLUDES" \
3236
-DCOMPILER_RT_CXX_LIBRARY="libcxx" \
3337
-DCOMPILER_RT_STATIC_CXX_LIBRARY=ON \
3438
-DCOMPILER_RT_BUILD_SANITIZERS=OFF \

src/azurelinux/3.0/net10.0/cross/loongarch64-musl/Dockerfile

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,10 @@ ARG ROOTFS_DIR
66
RUN /scripts/eng/common/cross/build-rootfs.sh loongarch64 alpineedge --skipemulation
77

88
RUN TARGET_TRIPLE="loongarch64-alpine-linux-musl" && \
9+
GCC_VER=$(basename "$(find "$ROOTFS_DIR/usr/include/c++/" -mindepth 1 -maxdepth 1 -type d | sort -V | head -n1)") && \
10+
CPP_INCLUDES="$ROOTFS_DIR/usr/include/c++/$GCC_VER" && \
11+
TRIPLET_INCLUDES=$([ -e "$CPP_INCLUDES/$TARGET_TRIPLE" ] && echo "$CPP_INCLUDES/$TARGET_TRIPLE" || echo "$(realpath "$CPP_INCLUDES/../../$TARGET_TRIPLE");$(realpath "$CPP_INCLUDES/../../$TARGET_TRIPLE/c++/$GCC_VER")") && \
12+
echo "Using C++ includes $CPP_INCLUDES and $TRIPLET_INCLUDES to build for $TARGET_TRIPLE" && \
913
cmake -S llvm-project.src/runtimes -B runtimes \
1014
-DCMAKE_BUILD_TYPE=Release \
1115
-DCMAKE_ASM_COMPILER=clang \
@@ -26,7 +30,7 @@ RUN TARGET_TRIPLE="loongarch64-alpine-linux-musl" && \
2630
-DLIBCXX_ENABLE_SHARED=OFF \
2731
-DLIBCXX_HAS_MUSL_LIBC=ON \
2832
-DLIBCXX_CXX_ABI=libstdc++ \
29-
-DLIBCXX_CXX_ABI_INCLUDE_PATHS="$ROOTFS_DIR/usr/include/c++/14.2.0/;$ROOTFS_DIR/usr/include/c++/14.2.0/$TARGET_TRIPLE" && \
33+
-DLIBCXX_CXX_ABI_INCLUDE_PATHS="$CPP_INCLUDES;$TRIPLET_INCLUDES" && \
3034
cmake --build runtimes -j $(getconf _NPROCESSORS_ONLN) && \
3135
cmake --install runtimes --prefix "$ROOTFS_DIR/usr"
3236

src/azurelinux/3.0/net10.0/cross/loongarch64/Dockerfile

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,10 @@ RUN rootfsEnv="/usr/local/share/rootfs" && \
99
PYTHON_EXECUTABLE="$rootfsEnv/bin/python" /scripts/eng/common/cross/build-rootfs.sh loongarch64 sid --skipunmount --skipemulation
1010

1111
RUN TARGET_TRIPLE="loongarch64-linux-gnu" && \
12+
GCC_VER=$(basename "$(find "$ROOTFS_DIR/usr/include/c++/" -mindepth 1 -maxdepth 1 -type d | sort -V | head -n1)") && \
13+
CPP_INCLUDES="$ROOTFS_DIR/usr/include/c++/$GCC_VER" && \
14+
TRIPLET_INCLUDES=$([ -e "$CPP_INCLUDES/$TARGET_TRIPLE" ] && echo "$CPP_INCLUDES/$TARGET_TRIPLE" || echo "$(realpath "$CPP_INCLUDES/../../$TARGET_TRIPLE");$(realpath "$CPP_INCLUDES/../../$TARGET_TRIPLE/c++/$GCC_VER")") && \
15+
echo "Using C++ includes $CPP_INCLUDES and $TRIPLET_INCLUDES to build for $TARGET_TRIPLE" && \
1216
CLANG_MAJOR_VERSION=$(clang --version | grep -oP "(?<=version )\d+") && \
1317
cmake -S llvm-project.src/runtimes -B runtimes \
1418
-DCMAKE_BUILD_TYPE=Release \
@@ -29,7 +33,7 @@ RUN TARGET_TRIPLE="loongarch64-linux-gnu" && \
2933
-DLLVM_ENABLE_RUNTIMES="libcxx;compiler-rt" \
3034
-DLIBCXX_ENABLE_SHARED=OFF \
3135
-DLIBCXX_CXX_ABI=libstdc++ \
32-
-DLIBCXX_CXX_ABI_INCLUDE_PATHS="$ROOTFS_DIR/usr/include/c++/14/;$ROOTFS_DIR/usr/include/$TARGET_TRIPLE;$ROOTFS_DIR/usr/include/$TARGET_TRIPLE/c++/14" \
36+
-DLIBCXX_CXX_ABI_INCLUDE_PATHS="$CPP_INCLUDES;$TRIPLET_INCLUDES" \
3337
-DCOMPILER_RT_CXX_LIBRARY="libcxx" \
3438
-DCOMPILER_RT_STATIC_CXX_LIBRARY=ON \
3539
-DCOMPILER_RT_BUILD_SANITIZERS=OFF \

src/azurelinux/3.0/net10.0/cross/riscv64-musl/Dockerfile

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,10 @@ ARG ROOTFS_DIR
66
RUN /scripts/eng/common/cross/build-rootfs.sh riscv64 alpine3.20 --skipunmount
77

88
RUN TARGET_TRIPLE="riscv64-alpine-linux-musl" && \
9+
GCC_VER=$(basename "$(find "$ROOTFS_DIR/usr/include/c++/" -mindepth 1 -maxdepth 1 -type d | sort -V | head -n1)") && \
10+
CPP_INCLUDES="$ROOTFS_DIR/usr/include/c++/$GCC_VER" && \
11+
TRIPLET_INCLUDES=$([ -e "$CPP_INCLUDES/$TARGET_TRIPLE" ] && echo "$CPP_INCLUDES/$TARGET_TRIPLE" || echo "$(realpath "$CPP_INCLUDES/../../$TARGET_TRIPLE");$(realpath "$CPP_INCLUDES/../../$TARGET_TRIPLE/c++/$GCC_VER")") && \
12+
echo "Using C++ includes $CPP_INCLUDES and $TRIPLET_INCLUDES to build for $TARGET_TRIPLE" && \
913
cmake -S llvm-project.src/runtimes -B runtimes \
1014
-DCMAKE_BUILD_TYPE=Release \
1115
-DCMAKE_ASM_COMPILER=clang \
@@ -26,7 +30,7 @@ RUN TARGET_TRIPLE="riscv64-alpine-linux-musl" && \
2630
-DLIBCXX_ENABLE_SHARED=OFF \
2731
-DLIBCXX_HAS_MUSL_LIBC=ON \
2832
-DLIBCXX_CXX_ABI=libstdc++ \
29-
-DLIBCXX_CXX_ABI_INCLUDE_PATHS="$ROOTFS_DIR/usr/include/c++/14.2.0/;$ROOTFS_DIR/usr/include/c++/14.2.0/$TARGET_TRIPLE" && \
33+
-DLIBCXX_CXX_ABI_INCLUDE_PATHS="$CPP_INCLUDES;$TRIPLET_INCLUDES" && \
3034
cmake --build runtimes -j $(getconf _NPROCESSORS_ONLN) && \
3135
cmake --install runtimes --prefix "$ROOTFS_DIR/usr"
3236

0 commit comments

Comments
 (0)