# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.

job-defaults:
    worker:
        docker-image: {in-tree: toolchain-build}

linux64-clang-3.9:
    description: "Clang 3.9 toolchain build"
    treeherder:
        kind: build
        platform: toolchains/opt
        symbol: TL(clang3.9)
        tier: 1
    worker-type: aws-provisioner-v1/gecko-{level}-b-linux
    worker:
        max-run-time: 7200
    run:
        using: toolchain-script
        script: build-clang-3.9-linux.sh
        resources:
            - 'build/build-clang/build-clang.py'
            - 'build/build-clang/clang-3.9-linux64.json'
            - 'taskcluster/scripts/misc/tooltool-download.sh'
        toolchain-alias: linux64-clang
        toolchain-artifact: public/build/clang.tar.xz
    toolchains:
        - linux64-gcc-4.9

linux64-clang-4:
    description: "Clang 4 toolchain build"
    treeherder:
        kind: build
        platform: toolchains/opt
        symbol: TL(clang4)
        tier: 1
    worker-type: aws-provisioner-v1/gecko-{level}-b-linux
    worker:
        max-run-time: 7200
    run:
        using: toolchain-script
        script: build-clang-4-linux.sh
        resources:
            - 'build/build-clang/build-clang.py'
            - 'build/build-clang/clang-4-linux64.json'
            - 'taskcluster/scripts/misc/tooltool-download.sh'
        toolchain-artifact: public/build/clang.tar.xz
    toolchains:
        - linux64-gcc-4.9

linux64-clang-5:
    description: "Clang 5 toolchain build"
    treeherder:
        kind: build
        platform: toolchains/opt
        symbol: TL(clang5)
        tier: 1
    worker-type: aws-provisioner-v1/gecko-{level}-b-linux
    worker:
        max-run-time: 7200
    run:
        using: toolchain-script
        script: build-clang-5-linux.sh
        resources:
            - 'build/build-clang/build-clang.py'
            - 'build/build-clang/clang-5-linux64.json'
            - 'taskcluster/scripts/misc/tooltool-download.sh'
        toolchain-artifact: public/build/clang.tar.xz
    toolchains:
        - linux64-gcc-4.9

linux64-clang-6-pre:
    description: "Clang 6 Pre toolchain build"
    treeherder:
        kind: build
        platform: toolchains/opt
        symbol: TL(clang6p)
        tier: 1
    worker-type: aws-provisioner-v1/gecko-{level}-b-linux
    worker:
        max-run-time: 7200
    run:
        using: toolchain-script
        script: build-clang-6-pre-linux.sh
        resources:
            - 'build/build-clang/build-clang.py'
            - 'build/build-clang/clang-6-pre-linux64.json'
            - 'taskcluster/scripts/misc/tooltool-download.sh'
        toolchain-artifact: public/build/clang.tar.xz
    toolchains:
        - linux64-gcc-4.9

linux64-clang-tidy:
    description: "Clang-tidy build"
    index:
        product: static-analysis
        job-name: linux64-clang-tidy
    treeherder:
        kind: build
        platform: toolchains/opt
        symbol: TL(clang-tidy)
        tier: 1
    worker-type: aws-provisioner-v1/gecko-{level}-b-linux
    worker:
        max-run-time: 36000
    run:
        using: toolchain-script
        script: build-clang-tidy-linux.sh
        resources:
            - 'build/clang-plugin/**'
            - 'build/build-clang/build-clang.py'
            - 'build/build-clang/clang-tidy-linux64.json'
            - 'taskcluster/scripts/misc/tooltool-download.sh'
        toolchain-artifact: public/build/clang-tidy.tar.xz
    run-on-projects:
        - trunk
        - try
    toolchains:
        - linux64-gcc-4.9

linux64-gcc-4.9:
    description: "GCC 4.9 toolchain build"
    treeherder:
        kind: build
        platform: toolchains/opt
        symbol: TL(gcc4.9)
        tier: 1
    worker-type: aws-provisioner-v1/gecko-{level}-b-linux
    worker:
        max-run-time: 36000
    run:
        using: toolchain-script
        script: build-gcc-4.9-linux.sh
        resources:
            - 'build/unix/build-gcc/build-gcc.sh'
        toolchain-artifact: public/build/gcc.tar.xz

linux64-gcc-6:
    description: "GCC 6 toolchain build"
    treeherder:
        kind: build
        platform: toolchains/opt
        symbol: TL(gcc6)
        tier: 1
    worker-type: aws-provisioner-v1/gecko-{level}-b-linux
    worker:
        max-run-time: 36000
    run:
        using: toolchain-script
        script: build-gcc-6-linux.sh
        resources:
            - 'build/unix/build-gcc/build-gcc.sh'
        toolchain-alias: linux64-gcc
        toolchain-artifact: public/build/gcc.tar.xz

linux64-sixgill:
    description: "sixgill GCC plugin build"
    treeherder:
        kind: build
        platform: toolchains/opt
        symbol: TL(sixgill)
        tier: 1
    worker-type: aws-provisioner-v1/gecko-{level}-b-linux
    worker:
        max-run-time: 3600
    run:
        using: toolchain-script
        script: build-gcc-sixgill-plugin-linux.sh
        resources:
            - 'build/unix/build-gcc/build-gcc.sh'
            - 'taskcluster/scripts/misc/build-gcc-sixgill-plugin-linux.sh'
        toolchain-artifact: public/build/sixgill.tar.xz
    toolchains:
        - linux64-gcc-4.9

linux64-llvm-dsymutil:
    description: "llvm-dsymutil toolchain build"
    treeherder:
        kind: build
        platform: toolchains/opt
        symbol: TL(dsymutil)
        tier: 1
    worker-type: aws-provisioner-v1/gecko-{level}-b-linux
    worker:
        max-run-time: 1800
    run:
        using: toolchain-script
        script: build-llvm-dsymutil.sh
        toolchain-artifact: public/build/llvm-dsymutil.tar.xz
    toolchains:
        - linux64-gcc-4.9

linux64-binutils:
    description: "Binutils toolchain build"
    treeherder:
        kind: build
        platform: toolchains/opt
        symbol: TL(binutil)
        tier: 1
    worker-type: aws-provisioner-v1/gecko-{level}-b-linux
    worker:
        max-run-time: 36000
    run:
        using: toolchain-script
        script: build-binutils-linux.sh
        resources:
            - 'build/unix/build-binutils/build-binutils.sh'
        toolchain-artifact: public/build/binutils.tar.xz

linux64-cctools-port:
    description: "cctools-port toolchain build"
    treeherder:
        kind: build
        platform: toolchains/opt
        symbol: TL(cctools)
        tier: 1
    worker-type: aws-provisioner-v1/gecko-{level}-b-linux
    worker:
        max-run-time: 36000
    run:
        using: toolchain-script
        script: build-cctools-port.sh
        resources:
            - 'taskcluster/scripts/misc/tooltool-download.sh'
        toolchain-artifact: public/build/cctools.tar.xz
    toolchains:
        - linux64-clang-3.9

linux64-hfsplus:
    description: "hfsplus toolchain build"
    treeherder:
        kind: build
        platform: toolchains/opt
        symbol: TL(hfs+)
        tier: 1
    worker-type: aws-provisioner-v1/gecko-{level}-b-linux
    worker:
        max-run-time: 36000
    run:
        using: toolchain-script
        script: build-hfsplus-linux.sh
        resources:
            - 'build/unix/build-hfsplus/build-hfsplus.sh'
            - 'taskcluster/scripts/misc/tooltool-download.sh'
        toolchain-artifact: public/build/hfsplus-tools.tar.xz
    toolchains:
        - linux64-clang-3.9

linux64-libdmg:
    description: "libdmg-hfsplus toolchain build"
    treeherder:
        kind: build
        platform: toolchains/opt
        symbol: TL(libdmg-hfs+)
        tier: 1
    worker-type: aws-provisioner-v1/gecko-{level}-b-linux
    worker:
        docker-image: {in-tree: desktop-build}
        max-run-time: 36000
    run:
        using: toolchain-script
        script: build-libdmg-hfsplus.sh
        toolchain-artifact: public/build/dmg.tar.xz

linux64-proguard-jar-repack:
    description: "proguard.jar repack toolchain build"
    treeherder:
        kind: build
        platform: toolchains/opt
        symbol: TL(proguard-jar)
        tier: 1
    worker-type: aws-provisioner-v1/gecko-{level}-b-linux
    worker:
        max-run-time: 36000
    run:
        using: toolchain-script
        script: repack-proguard-jar.sh
        toolchain-artifact: public/build/proguard-jar.tar.xz
        toolchain-alias: proguard-jar

linux64-android-sdk-linux-repack:
    description: "Android SDK (Linux) repack toolchain build"
    treeherder:
        kind: build
        platform: toolchains/opt
        symbol: TL(android-sdk-linux)
        tier: 1
    worker-type: aws-provisioner-v1/gecko-{level}-b-linux
    worker:
        docker-image: {in-tree: android-build}
        max-run-time: 36000
        artifacts:
            - name: project/gecko/android-sdk
              path: /builds/worker/project/gecko/android-sdk/
              type: directory
    run:
        using: toolchain-script
        script: repack-android-sdk-linux.sh
        resources:
            - 'python/mozboot/**/*android*'
        toolchain-artifact: project/gecko/android-sdk/android-sdk-linux.tar.xz
        toolchain-alias: android-sdk-linux

linux64-android-gradle-dependencies:
    description: "Android Gradle dependencies toolchain task"
    treeherder:
        kind: build
        platform: toolchains/opt
        symbol: TL(gradle-dependencies)
        tier: 1
    worker-type: aws-provisioner-v1/gecko-{level}-b-linux
    worker:
        docker-image: {in-tree: android-build}
        env:
            GRADLE_USER_HOME: "/builds/worker/workspace/build/src/mobile/android/gradle/dotgradle-online"
        max-run-time: 36000
    run:
        using: toolchain-script
        script: android-gradle-dependencies.sh
        sparse-profile: null
        resources:
            - 'taskcluster/scripts/misc/tooltool-download.sh'
            - 'taskcluster/scripts/misc/android-gradle-dependencies/**'
            - '*.gradle'
            - 'mobile/android/**/*.gradle'
            - 'mobile/android/config/mozconfigs/android-api-16-gradle-dependencies/**'
            - 'mobile/android/config/mozconfigs/common*'
            - 'mobile/android/gradle.configure'
        toolchain-artifact: public/build/android-gradle-dependencies.tar.xz
        toolchain-alias: android-gradle-dependencies
    toolchains:
        # Aliases aren't allowed for toolchains depending on toolchains.
        - linux64-android-sdk-linux-repack
        - linux64-proguard-jar-repack

linux64-rust-1.22:
    description: "rust repack"
    treeherder:
        kind: build
        platform: toolchains/opt
        symbol: TL(rust)
        tier: 1
    worker-type: aws-provisioner-v1/gecko-{level}-b-linux
    worker:
        max-run-time: 7200
        env:
            UPLOAD_DIR: artifacts
    run:
        using: toolchain-script
        script: repack_rust.py
        arguments: [
            '--channel', '1.22.1',
            '--host', 'x86_64-unknown-linux-gnu',
            '--target', 'x86_64-unknown-linux-gnu',
            '--target', 'i686-unknown-linux-gnu',
        ]
        toolchain-alias: linux64-rust
        toolchain-artifact: public/build/rustc.tar.xz

linux64-rust-1.19:
    description: "rust repack"
    treeherder:
        kind: build
        platform: toolchains/opt
        symbol: TL(rust-1.19)
        tier: 1
    worker-type: aws-provisioner-v1/gecko-{level}-b-linux
    worker:
        max-run-time: 7200
        env:
            UPLOAD_DIR: artifacts
    run:
        using: toolchain-script
        script: repack_rust.py
        arguments: [
            '--channel', '1.19.0',
            '--host', 'x86_64-unknown-linux-gnu',
            '--target', 'x86_64-unknown-linux-gnu',
            '--target', 'i686-unknown-linux-gnu',
        ]
        toolchain-artifact: public/build/rustc.tar.xz

linux64-rust-macos-1.22:
    description: "rust repack with macos-cross support"
    treeherder:
        kind: build
        platform: toolchains/opt
        symbol: TL(rust-macos)
        tier: 1
    worker-type: aws-provisioner-v1/gecko-{level}-b-linux
    worker:
        max-run-time: 7200
        env:
            UPLOAD_DIR: artifacts
    run:
        using: toolchain-script
        script: repack_rust.py
        arguments: [
            '--channel', '1.22.1',
            '--host', 'x86_64-unknown-linux-gnu',
            '--target', 'x86_64-unknown-linux-gnu',
            '--target', 'x86_64-apple-darwin',
        ]
        toolchain-alias: linux64-rust-macos
        toolchain-artifact: public/build/rustc.tar.xz

linux64-rust-android-1.22:
    description: "rust repack with android-cross support"
    treeherder:
        kind: build
        platform: toolchains/opt
        symbol: TL(rust-android)
        tier: 1
    worker-type: aws-provisioner-v1/gecko-{level}-b-linux
    worker:
        max-run-time: 7200
        env:
            UPLOAD_DIR: artifacts
    run:
        using: toolchain-script
        script: repack_rust.py
        arguments: [
            '--channel', '1.22.1',
            '--host', 'x86_64-unknown-linux-gnu',
            '--target', 'x86_64-unknown-linux-gnu',
            '--target', 'armv7-linux-androideabi',
            '--target', 'aarch64-linux-android',
            '--target', 'i686-linux-android',
        ]
        toolchain-alias: linux64-rust-android
        toolchain-artifact: public/build/rustc.tar.xz

linux64-sccache:
    description: "sccache toolchain build"
    treeherder:
        kind: build
        platform: toolchains/opt
        symbol: TL(sccache)
        tier: 1
    worker-type: aws-provisioner-v1/gecko-{level}-b-linux
    worker:
        max-run-time: 36000
    run:
        using: toolchain-script
        script: build-sccache.sh
        resources:
            - 'taskcluster/scripts/misc/tooltool-download.sh'
        toolchain-artifact: public/build/sccache2.tar.xz
    toolchains:
        - linux64-rust-1.19

linux64-gn:
    description: "gn toolchain build"
    treeherder:
        kind: build
        platform: toolchains/opt
        symbol: TL(gn)
        tier: 1
    worker-type: aws-provisioner-v1/gecko-{level}-b-linux
    worker:
        max-run-time: 36000
    run:
        using: toolchain-script
        script: build-gn-linux.sh
        tooltool-downloads: public
        resources:
            - 'taskcluster/scripts/misc/tooltool-download.sh'
            - 'taskcluster/scripts/misc/build-gn-common.sh'
        toolchain-artifact: public/build/gn.tar.xz
    run-on-projects:
        - trunk
        - try
    toolchains:
        - linux64-gcc-4.9

linux64-upx:
    description: "UPX build for MinGW32 Cross Compile"
    treeherder:
        kind: build
        platform: toolchains/opt
        symbol: TMW(upx)
        tier: 2
    worker-type: aws-provisioner-v1/gecko-{level}-b-linux
    worker:
        docker-image: {in-tree: desktop-build}
        max-run-time: 3600
    run:
        using: toolchain-script
        script: build-upx.sh
        toolchain-artifact: public/build/upx.tar.xz

linux64-wine:
    description: "Wine build for MinGW32 Cross Compile"
    treeherder:
        kind: build
        platform: toolchains/opt
        symbol: TMW(wine)
        tier: 2
    worker-type: aws-provisioner-v1/gecko-{level}-b-linux
    worker:
        docker-image: {in-tree: desktop-build}
        max-run-time: 10800
    run:
        using: toolchain-script
        script: build-wine.sh
        toolchain-artifact: public/build/wine.tar.xz

linux64-mingw32-gcc:
    description: "GCC toolchain build for MinGW32 Cross Compile"
    treeherder:
        kind: build
        platform: toolchains/opt
        symbol: TMW(mingw32-gcc)
        tier: 2
    worker-type: aws-provisioner-v1/gecko-{level}-b-linux
    worker:
        docker-image: {in-tree: desktop-build}
        max-run-time: 10800
    run:
        using: toolchain-script
        script: build-gcc-mingw32.sh
        resources:
            - 'build/unix/build-gcc/build-gcc.sh'
        toolchain-artifact: public/build/mingw32.tar.xz

linux64-mingw32-nsis:
    description: "NSIS build for MinGW32 Cross Compile"
    treeherder:
        kind: build
        platform: toolchains/opt
        symbol: TMW(mingw32-nsis)
        tier: 2
    worker-type: aws-provisioner-v1/gecko-{level}-b-linux
    worker:
        docker-image: {in-tree: desktop-build}
        max-run-time: 3600
    run:
        using: toolchain-script
        script: build-mingw32-nsis.sh
        toolchain-artifact: public/build/nsis.tar.xz
    toolchains:
        - linux64-mingw32-gcc

linux64-mingw32-fxc2:
    description: "fxc2.exe build for MinGW32 Cross Compile"
    treeherder:
        kind: build
        platform: toolchains/opt
        symbol: TMW(mingw32-fxc2)
        tier: 2
    worker-type: aws-provisioner-v1/gecko-{level}-b-linux
    worker:
        docker-image: {in-tree: desktop-build}
        max-run-time: 1800
    run:
        using: toolchain-script
        script: build-mingw32-fxc2.sh
        toolchain-artifact: public/build/fxc2.tar.xz
    toolchains:
        - linux64-mingw32-gcc
