From: Giovanni Mascellani gmascellani@codeweavers.com
--- .gitlab-ci.yml | 115 +++++++++++++++++++++++++++++++++++++++++ ci/Dockerfile | 25 +++++++++ ci/compile-widl.sh | 126 +++++++++++++++++++++++++++++++++++++++++++++ ci/config.h | 13 +++++ 4 files changed, 279 insertions(+) create mode 100644 .gitlab-ci.yml create mode 100644 ci/Dockerfile create mode 100644 ci/compile-widl.sh create mode 100644 ci/config.h
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 00000000..9e6bc895 --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,115 @@ +image: giomasce/vkd3d + +stages: + - build + - test + +build64: + stage: build + script: + - ./autogen.sh + - mkdir build + - cd build + - ../configure --enable-demos + - make -j$(nproc) + - make -j$(nproc) crosstest + artifacts: + when: always + paths: + - . + +test64-amd: + stage: test + dependencies: + - build64 + needs: + - build64 + tags: + - gpu + script: + - mkdir info + - cat /proc/cpuinfo > info/cpuinfo.txt + - cat /proc/meminfo > info/meminfo.txt + - vulkaninfo > info/vulkaninfo.txt + - cd build + - VKD3D_VULKAN_DEVICE_FILTER=AMD VKD3D_VULKAN_DEVICE=0 make -j$(nproc) check + artifacts: + when: always + paths: + - info + - build + +test64-llvmpipe: + stage: test + dependencies: + - build64 + needs: + - build64 + allow_failure: true + script: + - mkdir info + - cat /proc/cpuinfo > info/cpuinfo.txt + - cat /proc/meminfo > info/meminfo.txt + - vulkaninfo > info/vulkaninfo.txt + - cd build + - VKD3D_VULKAN_DEVICE_FILTER=llvmpipe VKD3D_VULKAN_DEVICE=0 make -j$(nproc) check + artifacts: + when: always + paths: + - info + - build + +build32: + stage: build + script: + - ./autogen.sh + - mkdir build + - cd build + - ../configure --enable-demos CFLAGS=-m32 + - make -j$(nproc) + - make -j$(nproc) crosstest + artifacts: + when: always + paths: + - . + +test32-amd: + stage: test + dependencies: + - build32 + needs: + - build32 + tags: + - gpu + script: + - mkdir info + - cat /proc/cpuinfo > info/cpuinfo.txt + - cat /proc/meminfo > info/meminfo.txt + - vulkaninfo > info/vulkaninfo.txt + - cd build + - VKD3D_VULKAN_DEVICE_FILTER=AMD VKD3D_VULKAN_DEVICE=0 make -j$(nproc) check + artifacts: + when: always + paths: + - info + - build + +test32-llvmpipe: + stage: test + dependencies: + - build32 + needs: + - build32 + allow_failure: true + script: + - mkdir info + - cat /proc/cpuinfo > info/cpuinfo.txt + - cat /proc/meminfo > info/meminfo.txt + - vulkaninfo > info/vulkaninfo.txt + - cd build + - VKD3D_VULKAN_DEVICE_FILTER=llvmpipe VKD3D_VULKAN_DEVICE=0 make -j$(nproc) check + artifacts: + when: always + paths: + - info + - build diff --git a/ci/Dockerfile b/ci/Dockerfile new file mode 100644 index 00000000..73702105 --- /dev/null +++ b/ci/Dockerfile @@ -0,0 +1,25 @@ +FROM debian:unstable +ENV DEBIAN_FRONTEND=noninteractive + +RUN rm /etc/apt/sources.list.d/* +RUN dpkg --add-architecture i386 +RUN printf "deb [arch=amd64,i386] http://deb.debian.org/debian unstable main\ndeb-src [arch=amd64,i386] http://deb.debian.org/debian unstable main\n" > /etc/apt/sources.list +RUN apt-get update +RUN apt-get install -y eatmydata +RUN eatmydata apt-get dist-upgrade -y +RUN eatmydata apt-get install -y build-essential pkg-config locales mesa-vulkan-drivers vulkan-tools autoconf automake libtool flex bison libvulkan-dev spirv-headers gcc-mingw-w64 libncurses-dev libxcb1-dev gcc-multilib doxygen doxygen-latex graphviz libvulkan-dev:i386 mesa-vulkan-drivers:i386 libncurses-dev:i386 libxcb-util-dev libxcb-icccm4-dev libxcb-keysyms1-dev libxcb1-dev:i386 libxcb-util-dev:i386 libxcb-icccm4-dev:i386 libxcb-keysyms1-dev:i386 +RUN echo 'en_US.UTF-8 UTF-8' >> /etc/locale.gen && locale-gen +ENV LANG=en_US.UTF-8 + +# Installing widl from the repositories or compiling Wine with its +# build system would bring in a lot of useless (for us) dependencies, +# easily making the image 1 GB larger; so we just build widl with a +# custom list of gcc calls dumped from an actual Wine build +RUN eatmydata apt-get install -y git +RUN mkdir -p /root/build/include +RUN mkdir -p /root/build/tools/widl +COPY compile-widl.sh /root/build +COPY config.h /root/build/include +# Join everything in a single RUN so that the intermediate state with +# the Wine sources is not saved +RUN git clone --depth 1 https://gitlab.winehq.org/wine/wine.git /root/wine && cd /root/build && bash -v compile-widl.sh && cp /root/build/tools/widl/widl /usr/local/bin && rm -fr /root/wine /root/build diff --git a/ci/compile-widl.sh b/ci/compile-widl.sh new file mode 100644 index 00000000..c75fe4f4 --- /dev/null +++ b/ci/compile-widl.sh @@ -0,0 +1,126 @@ +bison -o tools/widl/parser.tab.c -d ../wine/tools/widl/parser.y +gcc -m64 -c -o tools/widl/attribute.o ../wine/tools/widl/attribute.c -Itools/widl -I../wine/tools/widl -I../wine/tools/wrc \ + -Iinclude -I../wine/include -D__WINESRC__ -DWINE_UNIX_LIB -Wall -pipe -fcf-protection=none \ + -fno-stack-protector -fno-strict-aliasing -Wdeclaration-after-statement -Wempty-body \ + -Wignored-qualifiers -Winit-self -Wno-packed-not-aligned -Wshift-overflow=2 -Wstrict-prototypes \ + -Wtype-limits -Wunused-but-set-parameter -Wvla -Wwrite-strings -Wpointer-arith -Wlogical-op \ + -gdwarf-4 -g -O2 +gcc -m64 -c -o tools/widl/client.o ../wine/tools/widl/client.c -Itools/widl -I../wine/tools/widl -I../wine/tools/wrc \ + -Iinclude -I../wine/include -D__WINESRC__ -DWINE_UNIX_LIB -Wall -pipe -fcf-protection=none \ + -fno-stack-protector -fno-strict-aliasing -Wdeclaration-after-statement -Wempty-body \ + -Wignored-qualifiers -Winit-self -Wno-packed-not-aligned -Wshift-overflow=2 -Wstrict-prototypes \ + -Wtype-limits -Wunused-but-set-parameter -Wvla -Wwrite-strings -Wpointer-arith -Wlogical-op \ + -gdwarf-4 -g -O2 +gcc -m64 -c -o tools/widl/expr.o ../wine/tools/widl/expr.c -Itools/widl -I../wine/tools/widl -I../wine/tools/wrc \ + -Iinclude -I../wine/include -D__WINESRC__ -DWINE_UNIX_LIB -Wall -pipe -fcf-protection=none \ + -fno-stack-protector -fno-strict-aliasing -Wdeclaration-after-statement -Wempty-body \ + -Wignored-qualifiers -Winit-self -Wno-packed-not-aligned -Wshift-overflow=2 -Wstrict-prototypes \ + -Wtype-limits -Wunused-but-set-parameter -Wvla -Wwrite-strings -Wpointer-arith -Wlogical-op \ + -gdwarf-4 -g -O2 +gcc -m64 -c -o tools/widl/hash.o ../wine/tools/widl/hash.c -Itools/widl -I../wine/tools/widl -I../wine/tools/wrc \ + -Iinclude -I../wine/include -D__WINESRC__ -DWINE_UNIX_LIB -Wall -pipe -fcf-protection=none \ + -fno-stack-protector -fno-strict-aliasing -Wdeclaration-after-statement -Wempty-body \ + -Wignored-qualifiers -Winit-self -Wno-packed-not-aligned -Wshift-overflow=2 -Wstrict-prototypes \ + -Wtype-limits -Wunused-but-set-parameter -Wvla -Wwrite-strings -Wpointer-arith -Wlogical-op \ + -gdwarf-4 -g -O2 +gcc -m64 -c -o tools/widl/header.o ../wine/tools/widl/header.c -Itools/widl -I../wine/tools/widl -I../wine/tools/wrc \ + -Iinclude -I../wine/include -D__WINESRC__ -DWINE_UNIX_LIB -Wall -pipe -fcf-protection=none \ + -fno-stack-protector -fno-strict-aliasing -Wdeclaration-after-statement -Wempty-body \ + -Wignored-qualifiers -Winit-self -Wno-packed-not-aligned -Wshift-overflow=2 -Wstrict-prototypes \ + -Wtype-limits -Wunused-but-set-parameter -Wvla -Wwrite-strings -Wpointer-arith -Wlogical-op \ + -gdwarf-4 -g -O2 +gcc -m64 -c -o tools/widl/proxy.o ../wine/tools/widl/proxy.c -Itools/widl -I../wine/tools/widl -I../wine/tools/wrc \ + -Iinclude -I../wine/include -D__WINESRC__ -DWINE_UNIX_LIB -Wall -pipe -fcf-protection=none \ + -fno-stack-protector -fno-strict-aliasing -Wdeclaration-after-statement -Wempty-body \ + -Wignored-qualifiers -Winit-self -Wno-packed-not-aligned -Wshift-overflow=2 -Wstrict-prototypes \ + -Wtype-limits -Wunused-but-set-parameter -Wvla -Wwrite-strings -Wpointer-arith -Wlogical-op \ + -gdwarf-4 -g -O2 +gcc -m64 -c -o tools/widl/register.o ../wine/tools/widl/register.c -Itools/widl -I../wine/tools/widl -I../wine/tools/wrc \ + -Iinclude -I../wine/include -D__WINESRC__ -DWINE_UNIX_LIB -Wall -pipe -fcf-protection=none \ + -fno-stack-protector -fno-strict-aliasing -Wdeclaration-after-statement -Wempty-body \ + -Wignored-qualifiers -Winit-self -Wno-packed-not-aligned -Wshift-overflow=2 -Wstrict-prototypes \ + -Wtype-limits -Wunused-but-set-parameter -Wvla -Wwrite-strings -Wpointer-arith -Wlogical-op \ + -gdwarf-4 -g -O2 +gcc -m64 -c -o tools/widl/server.o ../wine/tools/widl/server.c -Itools/widl -I../wine/tools/widl -I../wine/tools/wrc \ + -Iinclude -I../wine/include -D__WINESRC__ -DWINE_UNIX_LIB -Wall -pipe -fcf-protection=none \ + -fno-stack-protector -fno-strict-aliasing -Wdeclaration-after-statement -Wempty-body \ + -Wignored-qualifiers -Winit-self -Wno-packed-not-aligned -Wshift-overflow=2 -Wstrict-prototypes \ + -Wtype-limits -Wunused-but-set-parameter -Wvla -Wwrite-strings -Wpointer-arith -Wlogical-op \ + -gdwarf-4 -g -O2 +gcc -m64 -c -o tools/widl/typegen.o ../wine/tools/widl/typegen.c -Itools/widl -I../wine/tools/widl -I../wine/tools/wrc \ + -Iinclude -I../wine/include -D__WINESRC__ -DWINE_UNIX_LIB -Wall -pipe -fcf-protection=none \ + -fno-stack-protector -fno-strict-aliasing -Wdeclaration-after-statement -Wempty-body \ + -Wignored-qualifiers -Winit-self -Wno-packed-not-aligned -Wshift-overflow=2 -Wstrict-prototypes \ + -Wtype-limits -Wunused-but-set-parameter -Wvla -Wwrite-strings -Wpointer-arith -Wlogical-op \ + -gdwarf-4 -g -O2 +gcc -m64 -c -o tools/widl/typelib.o ../wine/tools/widl/typelib.c -Itools/widl -I../wine/tools/widl -I../wine/tools/wrc \ + -Iinclude -I../wine/include -D__WINESRC__ -DWINE_UNIX_LIB -Wall -pipe -fcf-protection=none \ + -fno-stack-protector -fno-strict-aliasing -Wdeclaration-after-statement -Wempty-body \ + -Wignored-qualifiers -Winit-self -Wno-packed-not-aligned -Wshift-overflow=2 -Wstrict-prototypes \ + -Wtype-limits -Wunused-but-set-parameter -Wvla -Wwrite-strings -Wpointer-arith -Wlogical-op \ + -gdwarf-4 -g -O2 +gcc -m64 -c -o tools/widl/typetree.o ../wine/tools/widl/typetree.c -Itools/widl -I../wine/tools/widl -I../wine/tools/wrc \ + -Iinclude -I../wine/include -D__WINESRC__ -DWINE_UNIX_LIB -Wall -pipe -fcf-protection=none \ + -fno-stack-protector -fno-strict-aliasing -Wdeclaration-after-statement -Wempty-body \ + -Wignored-qualifiers -Winit-self -Wno-packed-not-aligned -Wshift-overflow=2 -Wstrict-prototypes \ + -Wtype-limits -Wunused-but-set-parameter -Wvla -Wwrite-strings -Wpointer-arith -Wlogical-op \ + -gdwarf-4 -g -O2 +gcc -m64 -c -o tools/widl/utils.o ../wine/tools/widl/utils.c -Itools/widl -I../wine/tools/widl -I../wine/tools/wrc \ + -Iinclude -I../wine/include -D__WINESRC__ -DWINE_UNIX_LIB -Wall -pipe -fcf-protection=none \ + -fno-stack-protector -fno-strict-aliasing -Wdeclaration-after-statement -Wempty-body \ + -Wignored-qualifiers -Winit-self -Wno-packed-not-aligned -Wshift-overflow=2 -Wstrict-prototypes \ + -Wtype-limits -Wunused-but-set-parameter -Wvla -Wwrite-strings -Wpointer-arith -Wlogical-op \ + -gdwarf-4 -g -O2 +gcc -m64 -c -o tools/widl/widl.o ../wine/tools/widl/widl.c -Itools/widl -I../wine/tools/widl -I../wine/tools/wrc \ + -Iinclude -I../wine/include -D__WINESRC__ -DINCLUDEDIR=""/usr/local/include"" \ + -DDLLDIR=""/usr/local/lib/wine"" -DBIN_TO_INCLUDEDIR="`tools/makedep -R /usr/local/bin /usr/local/include`" \ + -DBIN_TO_DLLDIR="`tools/makedep -R /usr/local/bin /usr/local/lib/wine`" -DWINE_UNIX_LIB -Wall -pipe \ + -fcf-protection=none -fno-stack-protector -fno-strict-aliasing -Wdeclaration-after-statement \ + -Wempty-body -Wignored-qualifiers -Winit-self -Wno-packed-not-aligned -Wshift-overflow=2 \ + -Wstrict-prototypes -Wtype-limits -Wunused-but-set-parameter -Wvla -Wwrite-strings -Wpointer-arith \ + -Wlogical-op -gdwarf-4 -g -O2 +gcc -m64 -c -o tools/widl/wpp.o ../wine/tools/wrc/wpp.c -Itools/widl -I../wine/tools/widl -I../wine/tools/wrc \ + -Iinclude -I../wine/include -D__WINESRC__ -DWINE_UNIX_LIB -Wall -pipe -fcf-protection=none \ + -fno-stack-protector -fno-strict-aliasing -Wdeclaration-after-statement -Wempty-body \ + -Wignored-qualifiers -Winit-self -Wno-packed-not-aligned -Wshift-overflow=2 -Wstrict-prototypes \ + -Wtype-limits -Wunused-but-set-parameter -Wvla -Wwrite-strings -Wpointer-arith -Wlogical-op \ + -gdwarf-4 -g -O2 +gcc -m64 -c -o tools/widl/write_msft.o ../wine/tools/widl/write_msft.c -Itools/widl -I../wine/tools/widl \ + -I../wine/tools/wrc -Iinclude -I../wine/include -D__WINESRC__ -DWINE_UNIX_LIB -Wall -pipe \ + -fcf-protection=none -fno-stack-protector -fno-strict-aliasing -Wdeclaration-after-statement \ + -Wempty-body -Wignored-qualifiers -Winit-self -Wno-packed-not-aligned -Wshift-overflow=2 \ + -Wstrict-prototypes -Wtype-limits -Wunused-but-set-parameter -Wvla -Wwrite-strings -Wpointer-arith \ + -Wlogical-op -gdwarf-4 -g -O2 +gcc -m64 -c -o tools/widl/parser.tab.o tools/widl/parser.tab.c -Itools/widl -I../wine/tools/widl -I../wine/tools/wrc \ + -Iinclude -I../wine/include -D__WINESRC__ -DWINE_UNIX_LIB -Wall -pipe -fcf-protection=none \ + -fno-stack-protector -fno-strict-aliasing -Wdeclaration-after-statement -Wempty-body \ + -Wignored-qualifiers -Winit-self -Wno-packed-not-aligned -Wshift-overflow=2 -Wstrict-prototypes \ + -Wtype-limits -Wunused-but-set-parameter -Wvla -Wwrite-strings -Wpointer-arith -Wlogical-op \ + -gdwarf-4 -g -O2 +bison -o tools/widl/ppy.tab.c -d ../wine/tools/wrc/ppy.y +bison -o tools/widl/ppy.tab.c ../wine/tools/wrc/ppy.y +gcc -m64 -c -o tools/widl/ppy.tab.o tools/widl/ppy.tab.c -Itools/widl -I../wine/tools/widl -I../wine/tools/wrc -Iinclude \ + -I../wine/include -D__WINESRC__ -DWINE_UNIX_LIB -Wall -pipe -fcf-protection=none \ + -fno-stack-protector -fno-strict-aliasing -Wdeclaration-after-statement -Wempty-body \ + -Wignored-qualifiers -Winit-self -Wno-packed-not-aligned -Wshift-overflow=2 -Wstrict-prototypes \ + -Wtype-limits -Wunused-but-set-parameter -Wvla -Wwrite-strings -Wpointer-arith -Wlogical-op \ + -gdwarf-4 -g -O2 +flex -otools/widl/parser.yy.c ../wine/tools/widl/parser.l +gcc -m64 -c -o tools/widl/parser.yy.o tools/widl/parser.yy.c -Itools/widl -I../wine/tools/widl -I../wine/tools/wrc \ + -Iinclude -I../wine/include -D__WINESRC__ -DWINE_UNIX_LIB -Wall -pipe -fcf-protection=none \ + -fno-stack-protector -fno-strict-aliasing -Wdeclaration-after-statement -Wempty-body \ + -Wignored-qualifiers -Winit-self -Wno-packed-not-aligned -Wshift-overflow=2 -Wstrict-prototypes \ + -Wtype-limits -Wunused-but-set-parameter -Wvla -Wwrite-strings -Wpointer-arith -Wlogical-op \ + -gdwarf-4 -g -O2 +flex -otools/widl/ppl.yy.c ../wine/tools/wrc/ppl.l +gcc -m64 -c -o tools/widl/ppl.yy.o tools/widl/ppl.yy.c -Itools/widl -I../wine/tools/widl -I../wine/tools/wrc -Iinclude \ + -I../wine/include -D__WINESRC__ -DWINE_UNIX_LIB -Wall -pipe -fcf-protection=none \ + -fno-stack-protector -fno-strict-aliasing -Wdeclaration-after-statement -Wempty-body \ + -Wignored-qualifiers -Winit-self -Wno-packed-not-aligned -Wshift-overflow=2 -Wstrict-prototypes \ + -Wtype-limits -Wunused-but-set-parameter -Wvla -Wwrite-strings -Wpointer-arith -Wlogical-op \ + -gdwarf-4 -g -O2 +gcc -m64 -o tools/widl/widl tools/widl/attribute.o tools/widl/client.o tools/widl/expr.o tools/widl/hash.o \ + tools/widl/header.o tools/widl/proxy.o tools/widl/register.o tools/widl/server.o \ + tools/widl/typegen.o tools/widl/typelib.o tools/widl/typetree.o tools/widl/utils.o \ + tools/widl/widl.o tools/widl/wpp.o tools/widl/write_msft.o tools/widl/parser.tab.o \ + tools/widl/ppy.tab.o tools/widl/parser.yy.o tools/widl/ppl.yy.o diff --git a/ci/config.h b/ci/config.h new file mode 100644 index 00000000..f995c85e --- /dev/null +++ b/ci/config.h @@ -0,0 +1,13 @@ +#ifndef __WINE_CONFIG_H +#define __WINE_CONFIG_H + +/* vkd3d wants version at least 3.20 */ + +#define PACKAGE_BUGREPORT "fake build, do not report bugs" +#define PACKAGE_NAME "Fake Wine" +#define PACKAGE_STRING "Fake Wine 8.0" +#define PACKAGE_TARNAME "fakewine" +#define PACKAGE_URL "fake build, do not report bugs" +#define PACKAGE_VERSION "8.0" + +#endif /* __WINE_CONFIG_H */