# Gitlab CI file for vulkan spec and header generation # Build the vulkan specification and generate any associated files (such as vulkan.h) spec-generate: stage: build before_script: - apt-get update -qq - apt-get install -y -qq gcc git python3 python3-termcolor python3-pytest ruby jing - apt-get install -y -qq cmake bison flex libffi-dev libxml2-dev libgdk-pixbuf2.0-dev libcairo2-dev libpango1.0-dev ttf-lyx # Force-install an older version of i18n so the 1.5.2 version, which # won't work with ruby 2.1, doesn't abort the CI job when installing # other gems which need it. - gem install i18n -v 1.5.1 - gem install asciidoctor asciidoctor-mathematical coderay json-schema script: # Internal self-test of the check_spec_links script - ( cd scripts && py.test-3 test*.py ) - mkdir -p out/checks - scripts/check_spec_links.py --html=out/checks/problems.html > /dev/null || true # Breaking the build if # of errors increases. We should manually ratchet ignore_count down as errors get fixed. # If there are unfixable errors, add '--ignore_count #' where '#' is the # number of them. This is a slightly crude way of enforcing "don't add # errors" but simpler than the alternatives (running against master, # diff, etc) - scripts/check_spec_links.py -Werror --ignore_count 0 -Wno_refpage_missing_desc -Wno_refpage_xrefs -Wno_refpage_name -Wno_refpage_unknown_attrib # Build the actual spec - ./makeAllExts QUIET= -j${nproc} -Otarget validusage html styleguide registry manhtmlpages # Build headers, for use by all later stages - ( cd xml && make validate test install ) artifacts: when: always paths: - include/ - src/ - out/ expire_in: 1 month # Generate the vulkan C++ header (vulkan.hpp) hpp-generate: stage: build image: ubuntu:16.04 before_script: - SPEC_DIR="${PWD}" - apt-get update -qq - apt-get install -y -qq cmake git g++ - cd /tmp - rm -rf Vulkan-Hpp - git clone https://github.com/KhronosGroup/Vulkan-Hpp.git - cd Vulkan-Hpp - git submodule update --init --recursive -- tinyxml2 - rm -rf Vulkan-Docs - cp -r "${SPEC_DIR}" Vulkan-Docs # Copy Vulkan C headers into subdir copy used by Vulkan-Hpp - cp -p ${SPEC_DIR}/include/vulkan/*.h Vulkan-Docs/include/vulkan/ script: - cd /tmp/Vulkan-Hpp - cmake -H. -Bbuild - make -C build - cd build - ./VulkanHppGenerator "${SPEC_DIR}"/xml/vk.xml after_script: - mkdir -p Vulkan-Hpp/vulkan/ - cp /tmp/Vulkan-Hpp/vulkan/vulkan.hpp Vulkan-Hpp/vulkan/ artifacts: paths: - Vulkan-Hpp/vulkan/ expire_in: 1 month allow_failure: true # Compile a simple test program that uses vulkan.h # The fake platform headers in tests/ allow compiling with all Vulkan # platforms at once. h-compile: stage: test dependencies: - spec-generate before_script: - apt-get update -qq - apt-get install -y -qq gcc clang script: - gcc -c -std=c11 -Iinclude -Itests -Wall -Wextra -Werror tests/htest.c - clang -c -std=c11 -Iinclude -Itests -Wall -Wextra -Werror tests/htest.c # Compile a simple test program that uses vulkan.hpp hpp-compile: stage: test dependencies: - spec-generate - hpp-generate before_script: - apt-get update -qq - apt-get install -y -qq g++ clang script: - g++ -c -std=c++11 -Iinclude -IVulkan-Hpp -Wall -Wextra -Werror tests/hpptest.cpp - clang++ -c -std=c++11 -Iinclude -IVulkan-Hpp -Wall -Wextra -Werror tests/hpptest.cpp allow_failure: true