stages: [build, test, deploy]

variables:
  GIT_SUBMODULE_STRATEGY: normal

.build_template: &build_definition
  stage: build
  artifacts:
    paths: ["build/", ".lock-waf*"]

.test_template: &test_definition
  stage: test
  artifacts:
    paths: [build/coverage]


arm32_dbg:
  <<: *build_definition
  image: lv2plugin/debian-arm32
  script: python ./waf configure build -dsT
  variables:
    CC: "arm-linux-gnueabihf-gcc"
    CXX: "arm-linux-gnueabihf-g++"

test:arm32_dbg:
  <<: *test_definition
  image: lv2plugin/debian-arm32
  script: python ./waf test --wrapper=qemu-arm
  needs: [arm32_dbg]


arm32_rel:
  <<: *build_definition
  image: lv2plugin/debian-arm32
  script: python ./waf configure build -sT
  variables:
    CC: "arm-linux-gnueabihf-gcc"
    CXX: "arm-linux-gnueabihf-g++"

test:arm32_rel:
  <<: *test_definition
  image: lv2plugin/debian-arm32
  script: python ./waf test --wrapper=qemu-arm
  needs: [arm32_rel]


arm64_dbg:
  <<: *build_definition
  image: lv2plugin/debian-arm64
  script: python ./waf configure build -dsT
  variables:
    CC: "aarch64-linux-gnu-gcc"
    CXX: "aarch64-linux-gnu-g++"

test:arm64_dbg:
  <<: *test_definition
  image: lv2plugin/debian-arm64
  script: python ./waf test --wrapper=qemu-aarch64
  needs: [arm64_dbg]


arm64_rel:
  <<: *build_definition
  image: lv2plugin/debian-arm64
  script: python ./waf configure build -sT
  variables:
    CC: "aarch64-linux-gnu-gcc"
    CXX: "aarch64-linux-gnu-g++"

test:arm64_rel:
  <<: *test_definition
  image: lv2plugin/debian-arm64
  script: python ./waf test --wrapper=qemu-aarch64
  needs: [arm64_rel]


x64_dbg:
  <<: *build_definition
  image: lv2plugin/debian-x64
  script: python ./waf configure build -dsT

test:x64_dbg:
  <<: *test_definition
  image: lv2plugin/debian-x64
  script: python ./waf test
  needs: [x64_dbg]


x64_rel:
  <<: *build_definition
  image: lv2plugin/debian-x64
  script: python ./waf configure build -sT

test:x64_rel:
  <<: *test_definition
  image: lv2plugin/debian-x64
  script: python ./waf test
  needs: [x64_rel]


mac_dbg:
  <<: *build_definition
  script: python ./waf configure build -dsT --no-coverage
  tags: [macos]

test:mac_dbg:
  <<: *test_definition
  script: python ./waf test
  needs: [mac_dbg]
  tags: [macos]


mac_rel:
  <<: *build_definition
  script: python ./waf configure build -sT --no-coverage
  tags: [macos]

test:mac_rel:
  <<: *test_definition
  script: python ./waf test
  needs: [mac_rel]
  tags: [macos]


win_dbg:
  <<: *build_definition
  script: python ./waf configure build -dT --no-coverage
  tags: [windows,msvc,python]

test:win_dbg:
  <<: *test_definition
  script: python ./waf test
  needs: [win_dbg]
  tags: [windows,msvc,python]


win_rel:
  <<: *build_definition
  script: python ./waf configure build -T --no-coverage
  tags: [windows,msvc,python]

test:win_rel:
  <<: *test_definition
  script: python ./waf test
  needs: [win_rel]
  tags: [windows,msvc,python]


pages:
  stage: deploy
  script: mv build/coverage/ public/
  needs: ["test:x64_dbg"]
  artifacts:
    expire_in: 30 days
    paths: [public]
  rules:
    - if: $CI_MERGE_REQUEST_ID
      when: never
    - when: on_success