variables:
    GIT_SUBMODULE_STRATEGY: normal

stages:
    - test
    - build
    - pages

tests:
    stage: test
    before_script:
        - apt-get update -qq
        - apt-get install -y -qq libsdl1.2-dev libpng-dev libsdl-ttf2.0-dev libsdl-image1.2-dev liblua5.3-dev
    script:
        - "CFLAGS=-fsanitize=address LDFLAGS=-fsanitize=address OPTIM=0 make check || exit 1"
    artifacts:
        reports:
            junit: test-report.xml

checkversions:
    stage: test
    allow_failure: true
    before_script:
        - apt-get update -qq
        - apt-get install -y -qq jq
    script:
        - "make -C 3rdparty/ checkversions && test ! -f 3rdparty/check-version-failed || exit 1"

job_linux:
    stage: build
    before_script:
        - apt-get update -qq && apt-get install -y -qq zip jq
        - apt-get install -y -qq libsdl1.2-dev libpng-dev libsdl-ttf2.0-dev libsdl-image1.2-dev liblua5.3-dev
        - apt-get install -y -qq libsdl2-dev libsdl2-image-dev libsdl2-ttf-dev doxygen graphviz
    script:
        - "make -j3 || exit 1"
        - "make ziprelease || exit 1"
        - "API=sdl2 make -j3 && API=sdl2 make ziprelease || exit 1"
        - "make docarchive || exit 1"
    after_script:
        - "echo $CI_JOB_ID > LINUX_JOB_ID"
    artifacts:
        paths:
            - "*.zip"
            - "grafx2*.tgz"
            - "VERSION"
            - "LINUX_JOB_ID"

pages:
    stage: pages
    script:
        - "NOLUA=1 API=x11 make htmldoc"
        - "mkdir -p public/htmldoc && cp doc/html/* public/htmldoc/"
        - "cp share/grafx2/gfx2.png public/"
        - "./.gitlab-page.sh"
        - "cd public && tar xzf ../grafx2*doxygen.tgz"
    artifacts:
        paths:
            - public
    only:
        - master
        - gitlab-pages

job_win32:
    stage: build
    before_script:
        - apt-get update -qq && apt-get install -y -qq zip dos2unix gpg jq
        - apt-get install -y -qq gcc-mingw-w64-i686 g++-mingw-w64-i686 mingw-w64-tools nsis
    script:
        - "WIN32CROSS=1 make 3rdparty -j2 || exit 1"
        - "WIN32CROSS=1 make -j2 || exit 1"
        - "WIN32CROSS=1 make ziprelease || exit 1"
        - "WIN32CROSS=1 make win32installer || exit 1"
        - "WIN32CROSS=1 API=win32 make -j2 || exit 1"
        - "WIN32CROSS=1 API=win32 make ziprelease || exit 1"
        - "WIN32CROSS=1 API=win32 make win32installer || exit 1"
        - "WIN32CROSS=1 API=sdl2 make 3rdparty -j2 || exit 1"
        - "WIN32CROSS=1 API=sdl2 make -j2 || exit 1"
        - "WIN32CROSS=1 API=sdl2 make ziprelease || exit 1"
        - "WIN32CROSS=1 API=sdl2 make win32installer || exit 1"
    after_script:
        - "echo $CI_JOB_ID > WIN32_JOB_ID"
    artifacts:
        paths:
            - "*.zip"
            - "install/grafx2*.exe"
            - "WIN32_JOB_ID"

job_atari:
    stage: build
    before_script:
        - apt-get update -qq && apt-get install -y -qq zip dos2unix lsb-release gpg jq
        - "sh ./.install-cross-mint.sh"
    script:
        - "ATARICROSS=1 make 3rdparty -j2 || exit 1"
        - "ATARICROSS=1 make -j2 || exit 1"
        - "ATARICROSS=1 make ziprelease || exit 1"
    after_script:
        - "echo $CI_JOB_ID > ATARI_JOB_ID"
    artifacts:
        paths:
            - "*.zip"
            - "ATARI_JOB_ID"

job_gp2x:
    stage: build
    before_script:
        - dpkg --add-architecture i386
        - apt-get update -qq && apt-get install -y -qq zip dos2unix
        - apt-get install -y -qq libc6:i386
        - "sh ./.install-gp2x-toolchain.sh"
    script:
        - "NOLUA=1 GP2XCROSS=1 make -j2 grafx2 || exit 1"
        - "NOLUA=1 GP2XCROSS=1 make ziprelease || exit 1"
    after_script:
        - "echo $CI_JOB_ID > GP2X_JOB_ID"
    artifacts:
        paths:
            - "*.zip"
            - "GP2X_JOB_ID"

job_switch:
    stage: build
    image: devkitpro/devkita64
    before_script:
        - apt-get update -qq &&  apt-get install -y -qq build-essential libpng-dev zip dos2unix
        - "export PATH=$PATH:$DEVKITPRO/portlibs/switch/bin"
    script:
        - "SWITCH=1 make -j2 grafx2 || exit 1"
        - "SWITCH=1 make ziprelease || exit 1"
    after_script:
        - "echo $CI_JOB_ID > SWITCH_JOB_ID"
    artifacts:
        paths:
            - "*.zip"
            - "SWITCH_JOB_ID"
