Vulkan-Docs/.gitlab-ci.yml

97 lines
3.5 KiB
YAML

# 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