diff --git a/tools/ci/amd64/Dockerfile b/tools/ci/amd64/Dockerfile index 1646e8f..70c3922 100644 --- a/tools/ci/amd64/Dockerfile +++ b/tools/ci/amd64/Dockerfile @@ -100,6 +100,15 @@ git clone \ --depth=1 \ https://github.com/llvm/llvm-project.git +RUN git clone \ + --branch='25.2'\ + --depth=1 \ + https://gitlab.freedesktop.org/mesa/mesa.git + +RUN wget https://x.org/releases/individual/lib/libxcb-1.17.0.tar.xz +RUN wget https://x.org/releases/individual/lib/libX11-1.8.12.tar.xz +RUN wget 'https://sdk.lunarg.com/sdk/download/1.4.328.1/linux/vulkansdk-linux-x86_64-1.4.328.1.tar.xz' + RUN cd llvm-project/ \ \ && cmake \ @@ -118,6 +127,7 @@ RUN cd llvm-project/ \ -D LIBCXX_INSTALL_MODULES=ON \ -D LIBCXXABI_USE_LLVM_UNWINDER=OFF \ -D LLVM_USE_SANITIZER=Leaks \ + -D LLVM_USE_LINKER="MOLD" \ && cd ./build-lsan/ && ninja cxx cxxabi && ninja install-cxx install-cxxabi && cd ../ \ \ && cmake \ @@ -136,12 +146,15 @@ RUN cd llvm-project/ \ -D LIBCXX_INSTALL_MODULES=ON \ -D LIBCXXABI_USE_LLVM_UNWINDER=OFF \ -D LLVM_USE_SANITIZER=MemoryWithOrigins \ + -D LLVM_USE_LINKER="MOLD" \ && cd ./build-msan/ && ninja cxx cxxabi && ninja install-cxx install-cxxabi && cd ../ +RUN cd llvm-project/ + + ## libxcb ## RUN \ -wget https://x.org/releases/individual/lib/libxcb-1.17.0.tar.xz \ -&& tar xf libxcb-1.17.0.tar.xz \ +tar xf libxcb-1.17.0.tar.xz \ && cd libxcb-1.17.0 \ && export CC=clang \ && export CFLAGS=" \ @@ -167,8 +180,7 @@ wget https://x.org/releases/individual/lib/libxcb-1.17.0.tar.xz \ ## libx11 ## RUN \ -wget https://x.org/releases/individual/lib/libX11-1.8.12.tar.xz \ -&& tar xf libX11-1.8.12.tar.xz \ +tar xf libX11-1.8.12.tar.xz \ && cd libX11-1.8.12 \ && export CC=clang \ && export CFLAGS=" \ @@ -192,12 +204,12 @@ wget https://x.org/releases/individual/lib/libX11-1.8.12.tar.xz \ && make && make install \ && cd .. && rm -rf libX11-1.8.12 libX11-1.8.12.tar.xz -RUN wget 'https://sdk.lunarg.com/sdk/download/1.4.328.1/linux/vulkansdk-linux-x86_64-1.4.328.1.tar.xz' -RUN tar xf vulkansdk-linux-x86_64-1.4.328.1.tar.xz + ## Vulkan SDK ## RUN \ -cd /1.4.328.1 \ +tar xf 'vulkansdk-linux-x86_64-1.4.328.1.tar.xz' \ +&& cd /1.4.328.1 \ && chmod +x ./vulkansdk \ && chmod +x ./setup-env.sh \ && export CC="$(which clang)" \ @@ -228,23 +240,39 @@ cd /1.4.328.1 \ -lc++abi" \ && ./vulkansdk \ --debug \ + --skip-installing-deps \ --numjobs `nproc` \ - vulkan-loader + vulkan-loader \ + spirv-tools ## Mesa ## -RUN git clone \ - --branch='25.2'\ - --depth=1 \ - https://gitlab.freedesktop.org/mesa/mesa.git + + RUN \ -export CXX=$(which clang++) \ -&& export CC=$(which clang) \ -&& export CXXFLAGS="\ +export build_llvm=/build-llvm \ +&& export build_path=/b_llvm_normal \ +&& export repo=/llvm-project \ +\ +&& cmake \ + -S $repo/llvm \ + -G Ninja \ + -B $build_path \ + -D CMAKE_BUILD_TYPE=Release \ + -D LLVM_ENABLE_PROJECTS="clang;lld;compiler-rt" \ + -D CMAKE_C_COMPILER=$(which clang) \ + -D CMAKE_CXX_COMPILER=$(which clang++) \ + -D CMAKE_INSTALL_PREFIX=/opt/llvm-normal \ +&& ninja -C $build_path install + +RUN \ +export CXXFLAGS="\ -fsanitize=memory \ -fsanitize-memory-track-origins \ + -fsanitize-ignorelist=/msan/ignorelist_all_sources \ -fno-omit-frame-pointer \ -g \ + -std=c++23 \ -nostdinc++ \ -isystem /libcxx_msan/include/c++/v1/"\ && export CFLAGS="\ @@ -255,47 +283,165 @@ export CXX=$(which clang++) \ && export LDFLAGS="\ -fsanitize=memory \ -fsanitize-memory-track-origins \ + -fsanitize-ignorelist=/msan/ignorelist_all_sources \ -g \ + -std=c++23 \ -L/msan/lib -Wl,-rpath,/msan/lib \ -L/libcxx_msan/lib -Wl,-rpath,/libcxx_msan/lib \ -lc++ \ -lc++abi" \ -&& meson setup ./ _build \ - -D build-tests=false \ - -D enable-glcpp-tests=false \ - -D build-radv-tests=false \ - -D build-aco-tests=false \ - -D install-intel-gpu-tests=false \ - -D gallium-mediafoundation-test=false \ - -D android-libbacktrace=disabled \ - -D split-debug=disabled \ - -D b_ndebug=true \ - -D b_lto=false \ - -D egl=enabled \ - -D gallium-drivers=r300,r600,radeonsi,nouveau,virgl,svga,softpipe,llvmpipe,i915,iris,crocus,zink \ - -D gallium-extra-hud=true \ - -D gallium-rusticl=true \ - -D gallium-va=enabled \ - -D gbm=enabled \ - -D gles1=disabled \ - -D gles2=enabled \ - -D glvnd=enabled \ - -D glx=dri \ - -D libunwind=enabled \ - -D llvm=enabled \ - -D lmsensors=disabled \ - -D microsoft-clc=disabled \ - -D platforms=x11,wayland \ - -D valgrind=disabled \ - -D video-codecs=all \ - -D vulkan-drivers=amd,intel,intel_hasvk,swrast,virtio,nouveau \ - -D vulkan-layers=device-select,intel-nullhw,overlay \ - -D tools='' \ - -D zstd=enabled \ - -D buildtype=plain \ - -D prefix=/usr \ - -D sysconfdir=/etc \ - --wrap-mode=nofallback \ - --force-fallback-for=syn,paste,rustc-hash \ +&& export build_path=/b_llvm_msan \ +&& export repo=/llvm-project \ +\ +&& cmake \ + -S $repo/llvm \ + -G Ninja \ + -B $build_path \ + -D CMAKE_BUILD_TYPE=Release \ + -D LLVM_ENABLE_PROJECTS="clang;lld" \ + -D LLVM_TARGETS_TO_BUILD="X86;SPIRV" \ + -D LLVM_ENABLE_PIC=ON \ + -D LLVM_NATIVE_TOOL_DIR=/opt/llvm-normal/bin/ \ + -D LLVM_USE_SANITIZER=MemoryWithOrigins \ + -D LLVM_TABLEGEN=/opt/llvm-normal/bin/llvm-tblgen \ + -D LLVM_CONFIG_PATH=/opt/llvm-normal/bin/llvm-config \ + -D CMAKE_C_COMPILER=/opt/llvm-normal/bin/clang \ + -D CMAKE_CXX_COMPILER=/opt/llvm-normal/bin/clang++ \ + -D CMAKE_INSTALL_PREFIX=/opt/llvm-msan \ +&& ninja -C $build_path install + +# && cmake \ +# -G Ninja \ +# -S $llvm/llvm \ +# -B $build_llvm \ +# -D LLVM_INSTALL_UTILS=ON \ +# -D CMAKE_INSTALL_PREFIX=$installprefix \ +# -D CMAKE_BUILD_TYPE=Release \ +# -D LLVM_TARGETS_TO_BUILD="X86;SPIRV" \ +# -D CMAKE_C_COMPILER=$(which clang) \ +# -D CMAKE_CXX_COMPILER=$(which clang++) \ +# \ +# -D LLVM_USE_SANITIZER=MemoryWithOrigins \ +# -D LIBCXXABI_USE_LLVM_UNWINDER=OFF \ +# \ +# && ninja -C $build_llvm install +# +# && cmake \ +# -G Ninja \ +# -S $llvm/clang \ +# -B $build_clang \ +# -D LLVM_EXTERNAL_LIT=$build_llvm/utils/lit \ +# -D LLVM_ROOT=$installprefix \ +# \ +# && ninja -C $build_clang + +RUN \ +cd /mesa \ +&& export CXX='clang++' \ +&& export CC='clang' \ +&& export CFLAGS="-fsanitize=memory -fsanitize-memory-track-origins -fno-omit-frame-pointer -g" \ +&& export CXXFLAGS="-fsanitize=memory -fsanitize-memory-track-origins -fno-omit-frame-pointer -g -nostdinc++ -isystem /libcxx_msan/include/c++/v1/" \ +&& export LDFLAGS="-fsanitize=memory -fsanitize-memory-track-origins -g -L/libcxx_msan/lib -Wl,-rpath,/libcxx_msan/lib -L/msan/lib -Wl,-rpath,/msan/lib -lc++ -lc++abi" \ +&& export PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:$PATH" \ +&& meson setup ./ _build \ + -D build-tests=false \ + -D enable-glcpp-tests=false \ + -D build-radv-tests=false \ + -D build-aco-tests=false \ + -D install-intel-gpu-tests=false \ + -D gallium-mediafoundation-test=false \ + -D android-libbacktrace=disabled \ + -D split-debug=disabled \ + -D b_ndebug=true \ + -D b_lto=false \ + -D egl=enabled \ + -D gallium-drivers=r300,r600,radeonsi,nouveau,virgl,svga,softpipe,llvmpipe,i915,iris,crocus,zink \ + -D gallium-extra-hud=true \ + -D gallium-rusticl=true \ + -D gallium-va=enabled \ + -D gbm=enabled \ + -D gles1=disabled \ + -D gles2=enabled \ + -D glvnd=enabled \ + -D glx=dri \ + -D libunwind=enabled \ + -D llvm=enabled \ + -D lmsensors=disabled \ + -D microsoft-clc=disabled \ + -D platforms=x11,wayland \ + -D valgrind=disabled \ + -D video-codecs=all \ + -D vulkan-drivers=amd,intel,intel_hasvk,swrast,virtio,nouveau \ + -D vulkan-layers=device-select,intel-nullhw,overlay \ + -D tools='' \ + -D zstd=enabled \ + -D buildtype=plain \ + -D prefix=/usr \ + -D sysconfdir=/etc \ + --wrap-mode=nofallback \ + --force-fallback-for=syn,paste,rustc-hash \ && ninja -C _build +# RUN cd mesa/ \ +# && source '/1.4.328.1/setup-env.sh' \ +# && export CXX='clang++' \ +# && export CC='clang' \ +# && export CFLAGS="\ +# -fsanitize=memory \ +# -fsanitize-memory-track-origins \ +# -fno-omit-frame-pointer \ +# -g" \ +# && export CXXFLAGS="\ +# -fsanitize=memory \ +# -fsanitize-memory-track-origins \ +# -fno-omit-frame-pointer \ +# -g \ +# -nostdinc++ \ +# -isystem /libcxx_msan/include/c++/v1/"\ +# && export LDFLAGS="\ +# -fsanitize=memory \ +# -fsanitize-memory-track-origins \ +# -g \ +# -L/libcxx_msan/lib -Wl,-rpath,/libcxx_msan/lib \ +# -L/msan/lib -Wl,-rpath,/msan/lib \ +# -lc++ \ +# -lc++abi" \ +# && meson setup ./ _build \ +# -D build-tests=false \ +# -D enable-glcpp-tests=false \ +# -D build-radv-tests=false \ +# -D build-aco-tests=false \ +# -D install-intel-gpu-tests=false \ +# -D gallium-mediafoundation-test=false \ +# -D android-libbacktrace=disabled \ +# -D split-debug=disabled \ +# -D b_ndebug=true \ +# -D b_lto=false \ +# -D egl=enabled \ +# -D gallium-drivers=r300,r600,radeonsi,nouveau,virgl,svga,softpipe,llvmpipe,i915,iris,crocus,zink \ +# -D gallium-extra-hud=true \ +# -D gallium-rusticl=true \ +# -D gallium-va=enabled \ +# -D gbm=enabled \ +# -D gles1=disabled \ +# -D gles2=enabled \ +# -D glvnd=enabled \ +# -D glx=dri \ +# -D libunwind=enabled \ +# -D llvm=enabled \ +# -D lmsensors=disabled \ +# -D microsoft-clc=disabled \ +# -D platforms=x11,wayland \ +# -D valgrind=disabled \ +# -D video-codecs=all \ +# -D vulkan-drivers=amd,intel,intel_hasvk,swrast,virtio,nouveau \ +# -D vulkan-layers=device-select,intel-nullhw,overlay \ +# -D tools='' \ +# -D zstd=enabled \ +# -D buildtype=plain \ +# -D prefix=/usr \ +# -D sysconfdir=/etc \ +# --wrap-mode=nofallback \ +# --force-fallback-for=syn,paste,rustc-hash \ +# && ninja -C _build +#