summaryrefslogtreecommitdiff
path: root/.gitlab-ci.yml
blob: 8f4dc4dc7346c3de7ac2eddbf9607bfbd2be994c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
include:
  - template: 'Workflows/Branch-Pipelines.gitlab-ci.yml'

default:
  tags:
    - docker
  # Image from https://hub.docker.com/_/gcc/ based on Debian
  image: gcc:9

# https://docs.gitlab.com/ee/ci/yaml/yaml_optimization.html#reference-tags
.snippets:
  git_prep:
    # Make sure we have a recent annotated tag, otherwise meson/get-version.py
    # might fail later (e.g. shallow clone without enough history) or return
    # a bogus version based on a much older tag. This can happen in merge request
    # pipelines from a personal fork, as the fork might not have the latest
    # upstream tags if it has been forked a long time ago. Also affects the
    # git version picked up by autotools and cmake, not just meson.
    - git fetch https://gitlab.xiph.org/xiph/opus.git refs/tags/v1.4:refs/tags/v1.4
    - git describe

whitespace:
  stage: test
  script:
    - git diff-tree --check origin/master HEAD

autoconf:
  stage: build
  before_script:
    - apt-get update &&
      apt-get install -y zip doxygen git
    - !reference [.snippets, git_prep]
  script:
    - ./autogen.sh
    - ./configure
    - make -j4
    - make distcheck
  cache:
    paths:
      - "src/*.o"
      - "src/.libs/*.o"
      - "silk/*.o"
      - "silk/.libs/*.o"
      - "celt/*.o"
      - "celt/.libs/*.o"

cmake:
  stage: build
  before_script:
    - apt-get update &&
      apt-get install -y cmake ninja-build
    - !reference [.snippets, git_prep]
  script:
    - mkdir build
    - cmake -S . -B build -G "Ninja" -DCMAKE_BUILD_TYPE=Release -DOPUS_BUILD_TESTING=ON -DOPUS_BUILD_PROGRAMS=ON
    - cmake --build build
    - cd build && ctest --output-on-failure

.meson:
  image: 'debian:bookworm-slim'
  stage: build
  before_script:
    - apt-get update &&
      apt-get install -y ninja-build doxygen meson git
    - !reference [.snippets, git_prep]
  script:
    - mkdir builddir
    - meson setup -Dtests=enabled -Ddocs=enabled -Dbuildtype=release builddir ${MESON_EXTRA_ARGS}
    - meson compile -C builddir
    - meson test -C builddir
    #- meson dist --no-tests -C builddir

meson x86_64:
  extends: '.meson'
  variables:
    MESON_EXTRA_ARGS: '--werror'

meson arm64:
  extends: '.meson'
  tags:
    - 'gstreamer-arm64-linux-docker'
  variables:
    # arm64 build has a compiler warning still, so let's not use --werror for now
    MESON_EXTRA_ARGS: '-Dwerror=false'