name: CI
on: [push, pull_request]
jobs:

  build-osx:
    runs-on: macOS-10.14
    steps:
    - uses: actions/checkout@v1
    - uses: actions/setup-node@v1
      with:
        node-version: 12.x
    - name: Install dependencies
      run: |
        brew install freetype glfw openssl
        export LIBRARY_PATH="$LIBRARY_PATH:/usr/local/opt/openssl/lib/"
    - name: Build V
      run:  make && ./v -o v v.v
    - name: Build V using V
      run:  ./v -o v2 v.v && ./v2 -o v3 v.v
    - name: Test v->c
      run: ./v test v
#    - name: Test v->js
#      run: ./v -o hi.js examples/hello_v_js.v && node hi.js
    - name: Test vid
      run: |
        git clone --depth 1 https://github.com/vlang/vid.git
        cd vid && ../v -o vid .

  build-ubuntu:
    runs-on: ubuntu-18.04
    steps:
    - uses: actions/checkout@v1
    - uses: actions/setup-node@v1
      with:
        node-version: 12.x
    - name: Install dependencies
      run: sudo apt-get update; sudo apt-get install --quiet -y libglfw3 libglfw3-dev libfreetype6-dev libssl-dev sqlite3 libsqlite3-dev
    - name: Build v
      run: make && ./v -cc gcc -o v v.v
    - name: Test v->c
      run: ./v test v
#    - name: Test v->js
#      run: ./v -o hi.js examples/hello_v_js.v && node hi.js
    - name: Bare metal
      run: ./v -bare -o bare vlib/os/bare/bare_example_linux.v

  build-ubuntu-tcc:
    runs-on: ubuntu-18.04
    steps:
    - uses: actions/checkout@v1
    - name: Install dependencies
      run: sudo apt-get update; sudo apt-get install --quiet -y libglfw3 libglfw3-dev libfreetype6-dev libssl-dev sqlite3 libsqlite3-dev
    - name: Build v
      run: make && ./v -o v v.v
    - name: Test v->c with tcc
      env:
        VFLAGS: -cc tcc
      run: |
        sudo ln -s /var/tmp/tcc/bin/tcc /usr/local/bin/tcc
        tcc -version
        ./v -o v2 v.v # Make sure vtcc can build itself
        ./v test v

  build-ubuntu-musl:
    runs-on: ubuntu-18.04
    steps:
    - uses: actions/checkout@v1
    - uses: actions/setup-node@v1
      with:
        node-version: 12.x
    - name: Install dependencies
      run: sudo apt-get update; sudo apt-get install --quiet -y musl musl-tools
    - name: Build v
      run: make && ./v -cc musl-gcc -o v v.v
#    - name: Test v->c
#      run: ./v test v
#    - name: Test v->js
#      run: ./v -o hi.js examples/hello_v_js.v && node hi.js

  build-windows-gcc:
    runs-on: windows-2019
    steps:
    - uses: actions/checkout@v1
    #- uses: actions/setup-node@v1
    #  with:
    #    node-version: 12.x
    - name: Build
      run: |
        gcc --version
        git clone --depth=1 https://github.com/ubawurinna/freetype-windows-binaries.git thirdparty/freetype/
        .\make.bat -gcc
    - name: Test
      run: |
        .\v.exe test v
      ## v.js dosent work on windows
        #.\v.exe -o hi.js examples/hello_v_js.v
        #node hi.js

  build-windows-msvc:
    runs-on: windows-2019
    steps:
    - uses: actions/checkout@v1
    #- uses: actions/setup-node@v1
    #  with:
    #    node-version: 12.x
    - name: Build
      env:
        VFLAGS: -cc msvc
      run: |
        git clone --depth=1 https://github.com/ubawurinna/freetype-windows-binaries.git thirdparty/freetype/
        .\make.bat -msvc
    - name: Test
      env:
        VFLAGS: -cc msvc
      run: |
        .\v.exe test v
      ## v.js dosent work on windows
        #.\v.exe -o hi.js examples/hello_v_js.v
        #node hi.js