From ba49561f9a596a9b4d95113c3b3db3518568dd51 Mon Sep 17 00:00:00 2001
From: Andrei Karas <akaras@inbox.ru>
Date: Mon, 26 Jun 2017 19:41:05 +0300
Subject: add gcc7 builds into .gitlab-ci.yml

---
 .gitlab-ci.yml                        | 451 ++++++++++++++++++++++++++++++----
 tools/ci/flags/gcc7.sh                |   3 +-
 tools/ci/jobs/gcc7_sdl2_tests_gcov.sh |  34 +++
 tools/ci/jobs/gcc7_silent.sh          |  32 +++
 tools/ci/jobs/gcc7_tests.sh           |  33 +++
 tools/ci/jobs/gcc7_tests_gcov.sh      |  34 +++
 tools/ci/jobs/gcc7_tests_simd.sh      |  38 +++
 7 files changed, 570 insertions(+), 55 deletions(-)
 create mode 100755 tools/ci/jobs/gcc7_sdl2_tests_gcov.sh
 create mode 100755 tools/ci/jobs/gcc7_silent.sh
 create mode 100755 tools/ci/jobs/gcc7_tests.sh
 create mode 100755 tools/ci/jobs/gcc7_tests_gcov.sh
 create mode 100755 tools/ci/jobs/gcc7_tests_simd.sh

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index ff8e62661..dd996ecc7 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -97,6 +97,22 @@ gcc-6-i386:
   tags:
     - docker
 
+gcc-7-i386:
+  stage: prebuild
+  script:
+  - ./tools/ci/jobs/gcc7.sh
+  - ./tools/ci/scripts/runtests.sh
+  image: vicamo/debian:sid-i386
+  <<: *job-push
+  variables:
+    PACKAGES: gcc-7 g++-7 
+              make autoconf automake autopoint gettext 
+              libxml2-dev libcurl4-gnutls-dev libpng-dev 
+              libsdl-gfx1.2-dev libsdl-image1.2-dev libsdl-mixer1.2-dev libsdl-net1.2-dev libsdl-ttf2.0-dev
+              gdb valgrind netcat-openbsd procps
+  tags:
+    - docker
+
 clang-3.9:
   stage: prebuild
   script:
@@ -123,6 +139,19 @@ gcc-6:
               libsdl-gfx1.2-dev libsdl-image1.2-dev libsdl-mixer1.2-dev libsdl-net1.2-dev libsdl-ttf2.0-dev
               gdb valgrind netcat-openbsd procps
 
+gcc-7:
+  stage: prebuild
+  script:
+  - ./tools/ci/jobs/gcc7.sh
+  - ./tools/ci/scripts/runtests.sh
+  <<: *job-push
+  variables:
+    PACKAGES: gcc-7 g++-7 
+              make autoconf automake autopoint gettext 
+              libxml2-dev libcurl4-gnutls-dev libpng-dev 
+              libsdl-gfx1.2-dev libsdl-image1.2-dev libsdl-mixer1.2-dev libsdl-net1.2-dev libsdl-ttf2.0-dev
+              gdb valgrind netcat-openbsd procps
+
 gcc-6_default:
   stage: prebuild
   script:
@@ -140,6 +169,23 @@ gcc-6_default:
               libsdl-gfx1.2-dev libsdl-image1.2-dev libsdl-mixer1.2-dev libsdl-net1.2-dev libsdl-ttf2.0-dev
               gdb valgrind netcat-openbsd procps
 
+gcc-7_default:
+  stage: prebuild
+  script:
+  - ./tools/ci/jobs/any_compiler.sh --enable-werror
+  - ./tools/ci/scripts/runtests.sh
+  <<: *job-push
+  variables:
+    LOGFILE: gcc6.log
+    CC: gcc-7
+    CXX: g++-7
+    CXXFLAGS: "-Wall -Wextra"
+    PACKAGES: gcc-7 g++-7 
+              make autoconf automake autopoint gettext 
+              libxml2-dev libcurl4-gnutls-dev libpng-dev 
+              libsdl-gfx1.2-dev libsdl-image1.2-dev libsdl-mixer1.2-dev libsdl-net1.2-dev libsdl-ttf2.0-dev
+              gdb valgrind netcat-openbsd procps
+
 gcc-4.4:
   stage: prebuild
   script:
@@ -237,37 +283,37 @@ gcc-5_sdl2:
               libsdl2-gfx-dev libsdl2-image-dev libsdl2-mixer-dev libsdl2-net-dev libsdl2-ttf-dev
               gdb valgrind netcat-openbsd procps
 
-gcc-6_game_only:
+gcc-7_game_only:
   stage: prebuild
   script:
-  - ./tools/ci/jobs/gcc6.sh --without-dyecmd
+  - ./tools/ci/jobs/gcc7.sh --without-dyecmd
   - ./tools/ci/scripts/runtests.sh
   <<: *job-push
   variables:
-    PACKAGES: gcc-6 g++-6 
+    PACKAGES: gcc-7 g++-7 
               make autoconf automake autopoint gettext 
               libxml2-dev libcurl4-gnutls-dev libpng-dev 
               libsdl-gfx1.2-dev libsdl-image1.2-dev libsdl-mixer1.2-dev libsdl-net1.2-dev libsdl-ttf2.0-dev
               gdb valgrind netcat-openbsd procps
 
-gcc-6_dyecmd_only:
+gcc-7_dyecmd_only:
   stage: prebuild
   script:
-  - ./tools/ci/jobs/gcc6.sh --without-manaplusgame
+  - ./tools/ci/jobs/gcc7.sh --without-manaplusgame
   <<: *job-push
   variables:
-    PACKAGES: gcc-6 g++-6 
+    PACKAGES: gcc-7 g++-7 
               make autoconf automake autopoint gettext 
               libxml2-dev libcurl4-gnutls-dev libpng-dev 
               libsdl-gfx1.2-dev libsdl-image1.2-dev libsdl-mixer1.2-dev libsdl-net1.2-dev libsdl-ttf2.0-dev
 
-gcc-6_unittestsbin:
+gcc-7_unittestsbin:
   stage: prebuild
   script:
-  - ./tools/ci/jobs/gcc6_silent.sh --enable-unittestsbin --without-manaplusgame --without-dyecmd
+  - ./tools/ci/jobs/gcc7_silent.sh --enable-unittestsbin --without-manaplusgame --without-dyecmd
   <<: *job-push
   variables:
-    PACKAGES: gcc-6 g++-6 
+    PACKAGES: gcc-7 g++-7 
               make autoconf automake autopoint gettext 
               libxml2-dev libcurl4-gnutls-dev libpng-dev 
               libsdl-gfx1.2-dev libsdl-image1.2-dev libsdl-mixer1.2-dev libsdl-net1.2-dev libsdl-ttf2.0-dev
@@ -472,6 +518,39 @@ gcc-6_sanitize_doctest_tests_i386:
   tags:
     - docker
 
+# out of memory
+.gcc-7_sanitize_doctest_tests:
+  stage: build
+  script:
+  - ./tools/ci/jobs/gcc7_sanitize_tests.sh --enable-unittests=doctest --without-dyecmd --without-manaplusgame
+  - ldd ./src/manaplustests | grep "libasan"
+  <<: *job-push
+  variables:
+    PACKAGES: gcc-7 g++-7 
+              make autoconf automake autopoint gettext 
+              libxml2-dev libcurl4-gnutls-dev libpng-dev 
+              libsdl-gfx1.2-dev libsdl-image1.2-dev libsdl-mixer1.2-dev libsdl-net1.2-dev libsdl-ttf2.0-dev 
+              valgrind
+  tags:
+    - docker
+
+# out of memory
+.gcc-7_sanitize_doctest_tests_i386:
+  stage: build
+  script:
+  - ./tools/ci/jobs/gcc7_sanitize_tests.sh --enable-unittests=doctest --without-dyecmd --without-manaplusgame
+  - ldd ./src/manaplustests | grep "libasan"
+  image: vicamo/debian:sid-i386
+  <<: *job-push
+  variables:
+    PACKAGES: gcc-7 g++-7 
+              make autoconf automake autopoint gettext 
+              libxml2-dev libcurl4-gnutls-dev libpng-dev 
+              libsdl-gfx1.2-dev libsdl-image1.2-dev libsdl-mixer1.2-dev libsdl-net1.2-dev libsdl-ttf2.0-dev 
+              valgrind
+  tags:
+    - docker
+
 gcc-5_sanitize_no_opengl_tests:
   stage: build
   script:
@@ -550,6 +629,38 @@ gcc-6_sanitize_i386:
   tags:
     - docker
 
+gcc-7_sanitize:
+  stage: build
+  script:
+  - ./tools/ci/jobs/gcc7_sanitize.sh
+  - ./tools/ci/scripts/runtests.sh
+  <<: *job-push
+  variables:
+    PACKAGES: gcc-7 g++-7 
+              make autoconf automake autopoint gettext 
+              libxml2-dev libcurl4-gnutls-dev libpng-dev 
+              libsdl-gfx1.2-dev libsdl-image1.2-dev libsdl-mixer1.2-dev libsdl-net1.2-dev libsdl-ttf2.0-dev
+              gdb valgrind netcat-openbsd procps
+  tags:
+    - docker
+
+# out of memory
+.gcc-7_sanitize_i386:
+  stage: build
+  script:
+  - ./tools/ci/jobs/gcc7_sanitize.sh
+  - ./tools/ci/scripts/runtests.sh
+  image: vicamo/debian:sid-i386
+  <<: *job-push
+  variables:
+    PACKAGES: gcc-7 g++-7 
+              make autoconf automake autopoint gettext 
+              libxml2-dev libcurl4-gnutls-dev libpng-dev 
+              libsdl-gfx1.2-dev libsdl-image1.2-dev libsdl-mixer1.2-dev libsdl-net1.2-dev libsdl-ttf2.0-dev
+              gdb valgrind netcat-openbsd procps
+  tags:
+    - docker
+
 .fedora_gcc-snapshot_sanitize_tests:
   stage: build
   script:
@@ -684,6 +795,20 @@ gcc-6_tests_simd:
   tags:
     - docker
 
+gcc-7_tests_simd:
+  stage: build
+  script:
+  - ./tools/ci/jobs/gcc7_tests_simd.sh --without-dyecmd --without-manaplusgame
+  <<: *job-push
+  variables:
+    PACKAGES: gcc-7 g++-7 
+              make autoconf automake autopoint gettext 
+              libxml2-dev libcurl4-gnutls-dev libpng-dev 
+              libsdl-gfx1.2-dev libsdl-image1.2-dev libsdl-mixer1.2-dev libsdl-net1.2-dev libsdl-ttf2.0-dev 
+              valgrind
+  tags:
+    - docker
+
 gcc-6_tests_lto:
   stage: build
   script:
@@ -715,6 +840,37 @@ gcc-6_tests_lto_i386:
   tags:
     - docker
 
+gcc-7_tests_lto:
+  stage: build
+  script:
+  - ./tools/ci/jobs/gcc7_tests.sh --without-dyecmd --without-manaplusgame
+  <<: *job-push
+  variables:
+    POST_CXXFLAGS: "-ffast-math -O9 -flto -fwhole-program -funswitch-loops"
+    PACKAGES: gcc-7 g++-7 
+              make autoconf automake autopoint gettext 
+              libxml2-dev libcurl4-gnutls-dev libpng-dev 
+              libsdl-gfx1.2-dev libsdl-image1.2-dev libsdl-mixer1.2-dev libsdl-net1.2-dev libsdl-ttf2.0-dev 
+              valgrind
+  tags:
+    - docker
+
+gcc-7_tests_lto_i386:
+  stage: build
+  script:
+  - ./tools/ci/jobs/gcc7_tests.sh --without-dyecmd --without-manaplusgame
+  <<: *job-push
+  image: vicamo/debian:sid-i386
+  variables:
+    POST_CXXFLAGS: "-ffast-math -O9 -flto -fwhole-program -funswitch-loops"
+    PACKAGES: gcc-7 g++-7 
+              make autoconf automake autopoint gettext 
+              libxml2-dev libcurl4-gnutls-dev libpng-dev 
+              libsdl-gfx1.2-dev libsdl-image1.2-dev libsdl-mixer1.2-dev libsdl-net1.2-dev libsdl-ttf2.0-dev 
+              valgrind
+  tags:
+    - docker
+
 gcc-5_tests:
   stage: build
   script:
@@ -744,13 +900,13 @@ gcc-5_tests_i386:
   tags:
     - docker
 
-gcc-6_tests_gcov:
+gcc-7_tests_gcov:
   stage: build
   script:
-  - ./tools/ci/jobs/gcc6_tests_gcov.sh --without-dyecmd --without-manaplusgame
+  - ./tools/ci/jobs/gcc7_tests_gcov.sh --without-dyecmd --without-manaplusgame
   <<: *job-push
   variables:
-    PACKAGES: gcc-6 g++-6 
+    PACKAGES: gcc-7 g++-7 
               make autoconf automake autopoint gettext 
               libxml2-dev libcurl4-gnutls-dev libpng-dev 
               libsdl-gfx1.2-dev libsdl-image1.2-dev libsdl-mixer1.2-dev libsdl-net1.2-dev libsdl-ttf2.0-dev 
@@ -759,6 +915,35 @@ gcc-6_tests_gcov:
   tags:
     - docker
 
+gcc-7_tests_i386:
+  stage: build
+  script:
+  - ./tools/ci/jobs/gcc7_tests.sh --without-dyecmd --without-manaplusgame
+  image: vicamo/debian:sid-i386
+  <<: *job-push
+  variables:
+    PACKAGES: gcc-7 g++-7 
+              make autoconf automake autopoint gettext 
+              libxml2-dev libcurl4-gnutls-dev libpng-dev 
+              libsdl-gfx1.2-dev libsdl-image1.2-dev libsdl-mixer1.2-dev libsdl-net1.2-dev libsdl-ttf2.0-dev 
+              valgrind
+  tags:
+    - docker
+
+gcc-6_tests:
+  stage: build
+  script:
+  - ./tools/ci/jobs/gcc6_tests.sh --without-dyecmd --without-manaplusgame
+  <<: *job-push
+  variables:
+    PACKAGES: gcc-6 g++-6 
+              make autoconf automake autopoint gettext 
+              libxml2-dev libcurl4-gnutls-dev libpng-dev 
+              libsdl-gfx1.2-dev libsdl-image1.2-dev libsdl-mixer1.2-dev libsdl-net1.2-dev libsdl-ttf2.0-dev 
+              valgrind
+  tags:
+    - docker
+
 gcc-6_tests_i386:
   stage: build
   script:
@@ -788,13 +973,27 @@ gcc-6_tests_glibcdebug:
   tags:
     - docker
 
-gcc-6_pugixml_tests:
+gcc-7_tests_glibcdebug:
   stage: build
   script:
-  - ./tools/ci/jobs/gcc6_tests.sh --without-dyecmd --without-manaplusgame --enable-libxml=pugixml
+  - ./tools/ci/jobs/gcc7_tests.sh --without-dyecmd --without-manaplusgame --enable-glibcdebug
   <<: *job-push
   variables:
-    PACKAGES: gcc-6 g++-6 
+    PACKAGES: gcc-7 g++-7 
+              make autoconf automake autopoint gettext 
+              libxml2-dev libcurl4-gnutls-dev libpng-dev 
+              libsdl-gfx1.2-dev libsdl-image1.2-dev libsdl-mixer1.2-dev libsdl-net1.2-dev libsdl-ttf2.0-dev 
+              valgrind
+  tags:
+    - docker
+
+gcc-7_pugixml_tests:
+  stage: build
+  script:
+  - ./tools/ci/jobs/gcc7_tests.sh --without-dyecmd --without-manaplusgame --enable-libxml=pugixml
+  <<: *job-push
+  variables:
+    PACKAGES: gcc-7 g++-7 
               make autoconf automake autopoint gettext 
               libpugixml-dev libcurl4-gnutls-dev libpng-dev 
               libsdl-gfx1.2-dev libsdl-image1.2-dev libsdl-mixer1.2-dev libsdl-net1.2-dev libsdl-ttf2.0-dev 
@@ -802,14 +1001,14 @@ gcc-6_pugixml_tests:
   tags:
     - docker
 
-gcc-6_pugixml_tests_i386:
+gcc-7_pugixml_tests_i386:
   stage: build
   script:
-  - ./tools/ci/jobs/gcc6_tests.sh --without-dyecmd --without-manaplusgame --enable-libxml=pugixml
+  - ./tools/ci/jobs/gcc7_tests.sh --without-dyecmd --without-manaplusgame --enable-libxml=pugixml
   image: vicamo/debian:sid-i386
   <<: *job-push
   variables:
-    PACKAGES: gcc-6 g++-6 
+    PACKAGES: gcc-7 g++-7 
               make autoconf automake autopoint gettext 
               libpugixml-dev libcurl4-gnutls-dev libpng-dev 
               libsdl-gfx1.2-dev libsdl-image1.2-dev libsdl-mixer1.2-dev libsdl-net1.2-dev libsdl-ttf2.0-dev 
@@ -832,10 +1031,40 @@ gcc-6_tests_glibcdebug_i386:
   tags:
     - docker
 
-gcc-6_sdl2_tests_gcov:
+gcc-7_tests_glibcdebug_i386:
+  stage: build
+  script:
+  - ./tools/ci/jobs/gcc7_tests.sh --without-dyecmd --without-manaplusgame --enable-glibcdebug
+  image: vicamo/debian:sid-i386
+  <<: *job-push
+  variables:
+    PACKAGES: gcc-7 g++-7 
+              make autoconf automake autopoint gettext 
+              libxml2-dev libcurl4-gnutls-dev libpng-dev 
+              libsdl-gfx1.2-dev libsdl-image1.2-dev libsdl-mixer1.2-dev libsdl-net1.2-dev libsdl-ttf2.0-dev 
+              valgrind
+  tags:
+    - docker
+
+gcc-7_sdl2_tests_gcov:
+  stage: build
+  script:
+  - ./tools/ci/jobs/gcc7_sdl2_tests_gcov.sh --without-dyecmd --without-manaplusgame
+  <<: *job-push
+  variables:
+    PACKAGES: gcc-7 g++-7 
+              make autoconf automake autopoint gettext 
+              libxml2-dev libcurl4-gnutls-dev libpng-dev 
+              libsdl2-dev libsdl2-gfx-dev libsdl2-image-dev libsdl2-mixer-dev libsdl2-net-dev libsdl2-ttf-dev 
+              gcovr
+              valgrind
+  tags:
+    - docker
+
+gcc-6_sdl2_tests:
   stage: build
   script:
-  - ./tools/ci/jobs/gcc6_sdl2_tests_gcov.sh --without-dyecmd --without-manaplusgame
+  - ./tools/ci/jobs/gcc6_sdl2_tests.sh --without-dyecmd --without-manaplusgame
   <<: *job-push
   variables:
     PACKAGES: gcc-6 g++-6 
@@ -862,6 +1091,21 @@ gcc-6_sdl2_tests_i386:
   tags:
     - docker
 
+gcc-7_sdl2_tests_i386:
+  stage: build
+  script:
+  - ./tools/ci/jobs/gcc7_tests.sh --with-sdl2 --without-dyecmd --without-manaplusgame
+  image: vicamo/debian:sid-i386
+  <<: *job-push
+  variables:
+    PACKAGES: gcc-7 g++-7 
+              make autoconf automake autopoint gettext 
+              libxml2-dev libcurl4-gnutls-dev libpng-dev 
+              libsdl2-dev libsdl2-gfx-dev libsdl2-image-dev libsdl2-mixer-dev libsdl2-net-dev libsdl2-ttf-dev 
+              valgrind
+  tags:
+    - docker
+
 gcc-5_sdl2_tests_glibcdebug:
   stage: build
   script:
@@ -992,14 +1236,49 @@ gcc-6_tests_valgrind_i386:
   tags:
     - docker
 
-gcc-6_tests_jmalloc:
+gcc-7_tests_valgrind:
+  stage: build
+  script:
+  - ./tools/ci/jobs/gcc7_tests.sh --without-dyecmd --without-manaplusgame || true
+  - echo test valgrind
+  - valgrind -q --read-var-info=yes --track-origins=yes --malloc-fill=11 --free-fill=55 --show-reachable=yes --leak-check=full --leak-resolution=high --partial-loads-ok=yes --error-limit=no ./src/manaplustests 2>logs/valg.log
+  - grep "invalid" logs/valg.log && exit 1 || true
+  <<: *job-push
+  variables:
+    PACKAGES: gcc-7 g++-7 
+              make autoconf automake autopoint gettext 
+              libxml2-dev libcurl4-gnutls-dev libpng-dev 
+              libsdl-gfx1.2-dev libsdl-image1.2-dev libsdl-mixer1.2-dev libsdl-net1.2-dev libsdl-ttf2.0-dev 
+              valgrind
+  tags:
+    - docker
+
+gcc-7_tests_valgrind_i386:
+  stage: build
+  script:
+  - ./tools/ci/jobs/gcc7_tests.sh --without-dyecmd --without-manaplusgame || true
+  - echo test valgrind
+  - valgrind -q --read-var-info=yes --track-origins=yes --malloc-fill=11 --free-fill=55 --show-reachable=yes --leak-check=full --leak-resolution=high --partial-loads-ok=yes --error-limit=no ./src/manaplustests 2>logs/valg.log
+  - grep "invalid" logs/valg.log && exit 1 || true
+  image: vicamo/debian:sid-i386
+  <<: *job-push
+  variables:
+    PACKAGES: gcc-7 g++-7 
+              make autoconf automake autopoint gettext 
+              libxml2-dev libcurl4-gnutls-dev libpng-dev 
+              libsdl-gfx1.2-dev libsdl-image1.2-dev libsdl-mixer1.2-dev libsdl-net1.2-dev libsdl-ttf2.0-dev 
+              valgrind
+  tags:
+    - docker
+
+gcc-7_tests_jmalloc:
   stage: build
   script:
   - ls ${MALLOC}
-  - LD_PRELOAD=${MALLOC} ./tools/ci/jobs/gcc6_tests.sh --without-dyecmd --without-manaplusgame
+  - LD_PRELOAD=${MALLOC} ./tools/ci/jobs/gcc7_tests.sh --without-dyecmd --without-manaplusgame
   <<: *job-push
   variables:
-    PACKAGES: gcc-6 g++-6 
+    PACKAGES: gcc-7 g++-7 
               make autoconf automake autopoint gettext 
               libxml2-dev libcurl4-gnutls-dev libpng-dev 
               libsdl-gfx1.2-dev libsdl-image1.2-dev libsdl-mixer1.2-dev libsdl-net1.2-dev libsdl-ttf2.0-dev 
@@ -1008,15 +1287,15 @@ gcc-6_tests_jmalloc:
   tags:
     - docker
 
-gcc-6_tests_jmalloc_i386:
+gcc-7_tests_jmalloc_i386:
   stage: build
   script:
   - ls ${MALLOC}
-  - LD_PRELOAD=${MALLOC} ./tools/ci/jobs/gcc6_tests.sh --without-dyecmd --without-manaplusgame
+  - LD_PRELOAD=${MALLOC} ./tools/ci/jobs/gcc7_tests.sh --without-dyecmd --without-manaplusgame
   <<: *job-push
   image: vicamo/debian:sid-i386
   variables:
-    PACKAGES: gcc-6 g++-6 
+    PACKAGES: gcc-7 g++-7 
               make autoconf automake autopoint gettext 
               libxml2-dev libcurl4-gnutls-dev libpng-dev 
               libsdl-gfx1.2-dev libsdl-image1.2-dev libsdl-mixer1.2-dev libsdl-net1.2-dev libsdl-ttf2.0-dev 
@@ -1025,6 +1304,37 @@ gcc-6_tests_jmalloc_i386:
   tags:
     - docker
 
+gcc-7_lto:
+  stage: build
+  script:
+  - ./tools/ci/jobs/gcc7_lto.sh
+  - ./tools/ci/scripts/runtests.sh
+  <<: *job-push
+  variables:
+    PACKAGES: gcc-7 g++-7 
+              make autoconf automake autopoint gettext 
+              libxml2-dev libcurl4-gnutls-dev libpng-dev 
+              libsdl-gfx1.2-dev libsdl-image1.2-dev libsdl-mixer1.2-dev libsdl-net1.2-dev libsdl-ttf2.0-dev
+              gdb valgrind netcat-openbsd procps
+    POST_CXXFLAGS: "-Wno-null-dereference"
+
+gcc-7_lto_i386:
+  stage: build
+  script:
+  - ./tools/ci/jobs/gcc7_lto.sh
+  - ./tools/ci/scripts/runtests.sh
+  image: vicamo/debian:sid-i386
+  <<: *job-push
+  variables:
+    PACKAGES: gcc-7 g++-7 
+              make autoconf automake autopoint gettext 
+              libxml2-dev libcurl4-gnutls-dev libpng-dev 
+              libsdl-gfx1.2-dev libsdl-image1.2-dev libsdl-mixer1.2-dev libsdl-net1.2-dev libsdl-ttf2.0-dev
+              gdb valgrind netcat-openbsd procps
+    POST_CXXFLAGS: "-Wno-null-dereference"
+  tags:
+    - docker
+
 gcc-6_lto:
   stage: build
   script:
@@ -1573,14 +1883,14 @@ clang-3.8_i386:
   tags:
     - docker
 
-gcc-6_all_and_unittestsbin:
+gcc-7_all_and_unittestsbin:
   stage: build
   script:
-  - ./tools/ci/jobs/gcc6_silent.sh --enable-unittestsbin
+  - ./tools/ci/jobs/gcc7_silent.sh --enable-unittestsbin
   - ./tools/ci/scripts/runtests.sh
   <<: *job-push
   variables:
-    PACKAGES: gcc-6 g++-6 
+    PACKAGES: gcc-7 g++-7 
               make autoconf automake autopoint gettext 
               libxml2-dev libcurl4-gnutls-dev libpng-dev 
               libsdl-gfx1.2-dev libsdl-image1.2-dev libsdl-mixer1.2-dev libsdl-net1.2-dev libsdl-ttf2.0-dev
@@ -1867,54 +2177,67 @@ gcc-6_cilkplus:
               libsdl-gfx1.2-dev libsdl-image1.2-dev libsdl-mixer1.2-dev libsdl-net1.2-dev libsdl-ttf2.0-dev
               gdb valgrind netcat-openbsd procps
 
-gcc-6_pugixml:
+gcc-7_cilkplus:
   stage: build
   script:
-  - ./tools/ci/jobs/gcc6.sh --enable-libxml=pugixml
+  - ./tools/ci/jobs/gcc7.sh --enable-cilkplus
   - ./tools/ci/scripts/runtests.sh
   <<: *job-push
   variables:
-    PACKAGES: gcc-6 g++-6 
+    PACKAGES: gcc-7 g++-7 
+              make autoconf automake autopoint gettext 
+              libxml2-dev libcurl4-gnutls-dev libpng-dev 
+              libsdl-gfx1.2-dev libsdl-image1.2-dev libsdl-mixer1.2-dev libsdl-net1.2-dev libsdl-ttf2.0-dev
+              gdb valgrind netcat-openbsd procps
+
+gcc-7_pugixml:
+  stage: build
+  script:
+  - ./tools/ci/jobs/gcc7.sh --enable-libxml=pugixml
+  - ./tools/ci/scripts/runtests.sh
+  <<: *job-push
+  variables:
+    PACKAGES: gcc-7 g++-7 
               make autoconf automake autopoint gettext 
               libpugixml-dev libcurl4-gnutls-dev libpng-dev 
               libsdl-gfx1.2-dev libsdl-image1.2-dev libsdl-mixer1.2-dev libsdl-net1.2-dev libsdl-ttf2.0-dev
               gdb valgrind netcat-openbsd procps
 
-gcc-6_pugixml_i386:
+gcc-7_pugixml_i386:
   stage: build
   script:
-  - ./tools/ci/jobs/gcc6.sh --enable-libxml=pugixml
+  - ./tools/ci/jobs/gcc7.sh --enable-libxml=pugixml
   - ./tools/ci/scripts/runtests.sh
   image: vicamo/debian:sid-i386
   <<: *job-push
   variables:
-    PACKAGES: gcc-6 g++-6 
+    PACKAGES: gcc-7 g++-7 
               make autoconf automake autopoint gettext 
               libpugixml-dev libcurl4-gnutls-dev libpng-dev 
               libsdl-gfx1.2-dev libsdl-image1.2-dev libsdl-mixer1.2-dev libsdl-net1.2-dev libsdl-ttf2.0-dev
               gdb valgrind netcat-openbsd procps
 
-gcc-6_pugixml_sdl2:
+gcc-7_pugixml_sdl2:
   stage: build
   script:
-  - ./tools/ci/jobs/gcc6.sh --with-sdl2 --enable-libxml=pugixml
+  - ./tools/ci/jobs/gcc7.sh --with-sdl2 --enable-libxml=pugixml
   - ./tools/ci/scripts/runtests.sh
   <<: *job-push
   variables:
-    PACKAGES: gcc-6 g++-6 
+    PACKAGES: gcc-7 g++-7 
               make autoconf automake autopoint gettext 
               libpugixml-dev libcurl4-gnutls-dev libpng-dev 
               libsdl2-gfx-dev libsdl2-image-dev libsdl2-mixer-dev libsdl2-net-dev libsdl2-ttf-dev
               gdb valgrind netcat-openbsd procps
 
-gcc-6_pugixml_sdl2_i386:
+gcc-7_pugixml_sdl2_i386:
   stage: build
   script:
-  - ./tools/ci/jobs/gcc6.sh --with-sdl2 --enable-libxml=pugixml
+  - ./tools/ci/jobs/gcc7.sh --with-sdl2 --enable-libxml=pugixml
   - ./tools/ci/scripts/runtests.sh
   <<: *job-push
   variables:
-    PACKAGES: gcc-6 g++-6 
+    PACKAGES: gcc-7 g++-7 
               make autoconf automake autopoint gettext 
               libpugixml-dev libcurl4-gnutls-dev libpng-dev 
               libsdl2-gfx-dev libsdl2-image-dev libsdl2-mixer-dev libsdl2-net-dev libsdl2-ttf-dev
@@ -1923,11 +2246,11 @@ gcc-6_pugixml_sdl2_i386:
 gcc_portable:
   stage: build
   script:
-  - ./tools/ci/jobs/gcc6.sh --with-opengl --enable-tmwa --enable-portable=yes
+  - ./tools/ci/jobs/gcc7.sh --with-opengl --enable-tmwa --enable-portable=yes
   - ./tools/ci/scripts/runtests.sh
   <<: *job-push
   variables:
-    PACKAGES: gcc-6 g++-6 
+    PACKAGES: gcc-7 g++-7 
               make autoconf automake autopoint gettext 
               libxml2-dev libcurl4-gnutls-dev libpng-dev 
               libsdl-gfx1.2-dev libsdl-image1.2-dev libsdl-mixer1.2-dev libsdl-net1.2-dev libsdl-ttf2.0-dev
@@ -1946,14 +2269,14 @@ clang-3.9_sdl2:
               libsdl2-gfx-dev libsdl2-image-dev libsdl2-mixer-dev libsdl2-net-dev libsdl2-ttf-dev
               gdb valgrind netcat-openbsd procps
 
-gcc-6_no_asserts:
+gcc-7_no_asserts:
   stage: build
   script:
-  - ./tools/ci/jobs/gcc6.sh --disable-asserts
+  - ./tools/ci/jobs/gcc7.sh --disable-asserts
   - ./tools/ci/scripts/runtests.sh
   <<: *job-push
   variables:
-    PACKAGES: gcc-6 g++-6 
+    PACKAGES: gcc-7 g++-7 
               make autoconf automake autopoint gettext 
               libxml2-dev libcurl4-gnutls-dev libpng-dev 
               libsdl-gfx1.2-dev libsdl-image1.2-dev libsdl-mixer1.2-dev libsdl-net1.2-dev libsdl-ttf2.0-dev
@@ -2007,6 +2330,26 @@ gcc-6_default_i386:
   tags:
     - docker
 
+gcc-7_default_i386:
+  stage: build
+  script:
+  - ./tools/ci/jobs/any_compiler.sh --enable-werror
+  - ./tools/ci/scripts/runtests.sh
+  <<: *job-push
+  image: vicamo/debian:sid-i386
+  variables:
+    LOGFILE: gcc7.log
+    CC: gcc-7
+    CXX: g++-7
+    CXXFLAGS: "-Wall -Wextra"
+    PACKAGES: gcc-7 g++-7 
+              make autoconf automake autopoint gettext 
+              libxml2-dev libcurl4-gnutls-dev libpng-dev 
+              libsdl-gfx1.2-dev libsdl-image1.2-dev libsdl-mixer1.2-dev libsdl-net1.2-dev libsdl-ttf2.0-dev
+              gdb valgrind netcat-openbsd procps
+  tags:
+    - docker
+
 gcc-5_default:
   stage: build
   script:
@@ -2868,28 +3211,28 @@ clang-tidy_sdl2:
   tags:
     - docker
 
-gcc-6_openglerrors_i386:
+gcc-7_openglerrors_i386:
   stage: build
   script:
-  - ./tools/ci/jobs/gcc6.sh --enable-openglerrors
+  - ./tools/ci/jobs/gcc7.sh --enable-openglerrors
   - ./tools/ci/scripts/runtests.sh
   <<: *job-push
   image: vicamo/debian:sid-i386
   variables:
-    PACKAGES: gcc-6 g++-6 
+    PACKAGES: gcc-7 g++-7 
               make autoconf automake autopoint gettext 
               libxml2-dev libcurl4-gnutls-dev libpng-dev 
               libsdl-gfx1.2-dev libsdl-image1.2-dev libsdl-mixer1.2-dev libsdl-net1.2-dev libsdl-ttf2.0-dev
               gdb valgrind netcat-openbsd procps
 
-gcc-6_openglerrors:
+gcc-7_openglerrors:
   stage: build
   script:
-  - ./tools/ci/jobs/gcc6.sh --enable-openglerrors
+  - ./tools/ci/jobs/gcc7.sh --enable-openglerrors
   - ./tools/ci/scripts/runtests.sh
   <<: *job-push
   variables:
-    PACKAGES: gcc-6 g++-6 
+    PACKAGES: gcc-7 g++-7 
               make autoconf automake autopoint gettext 
               libxml2-dev libcurl4-gnutls-dev libpng-dev 
               libsdl-gfx1.2-dev libsdl-image1.2-dev libsdl-mixer1.2-dev libsdl-net1.2-dev libsdl-ttf2.0-dev
@@ -5083,8 +5426,8 @@ pages:
   dependencies:
     - doxygen
     - gitstats
-    - gcc-6_tests_gcov
-    - gcc-6_sdl2_tests_gcov
+    - gcc-7_tests_gcov
+    - gcc-7_sdl2_tests_gcov
   variables:
     PACKAGES: git-core python
   artifacts:
diff --git a/tools/ci/flags/gcc7.sh b/tools/ci/flags/gcc7.sh
index 8acc95740..cbe3022b8 100755
--- a/tools/ci/flags/gcc7.sh
+++ b/tools/ci/flags/gcc7.sh
@@ -78,7 +78,8 @@ export CXXFLAGS="${CXXFLAGS} -Wdeprecated"
 export CXXFLAGS="${CXXFLAGS} -Wdeprecated-declarations"
 # not for C++
 #export CXXFLAGS="${CXXFLAGS} -Wdesignated-init"
-export CXXFLAGS="${CXXFLAGS} -Wdisabled-optimization"
+# show useless warnings
+#export CXXFLAGS="${CXXFLAGS} -Wdisabled-optimization"
 # not for C++
 #export CXXFLAGS="${CXXFLAGS} -Wdiscarded-array-qualifiers"
 #export CXXFLAGS="${CXXFLAGS} -Wdiscarded-qualifiers"
diff --git a/tools/ci/jobs/gcc7_sdl2_tests_gcov.sh b/tools/ci/jobs/gcc7_sdl2_tests_gcov.sh
new file mode 100755
index 000000000..c6d1bcba9
--- /dev/null
+++ b/tools/ci/jobs/gcc7_sdl2_tests_gcov.sh
@@ -0,0 +1,34 @@
+#!/bin/bash
+
+export CC=gcc-7
+export CXX=g++-7
+
+if [ "$NEWCC" != "" ]; then
+    export CC="$NEWCC"
+fi
+if [ "$NEWCXX" != "" ]; then
+    export CXX="$NEWCXX"
+fi
+
+export LOGFILE=gcc7.log
+
+source ./tools/ci/scripts/init.sh
+
+export CXXFLAGS="$CXXFLAGS -pedantic -ggdb3 -O2 -pipe -Wstrict-aliasing=2 \
+-Wstrict-overflow=1 -Wformat=1 -D_FORTIFY_SOURCE=2 \
+-std=gnu++1z -Wformat=1 \
+-Wno-attributes"
+
+source ./tools/ci/flags/gcc7.sh
+
+export CXXFLAGS="$CXXFLAGS $POST_CXXFLAGS"
+
+do_init
+run_configure --enable-unittests=yes --with-sdl2 --with-gcov $*
+export SDL_VIDEODRIVER=dummy
+run_make_check
+run_gcov gcov-7 gcc-7_SDL2
+
+source ./tools/ci/scripts/exit.sh
+
+exit 0
diff --git a/tools/ci/jobs/gcc7_silent.sh b/tools/ci/jobs/gcc7_silent.sh
new file mode 100755
index 000000000..cf4397004
--- /dev/null
+++ b/tools/ci/jobs/gcc7_silent.sh
@@ -0,0 +1,32 @@
+#!/bin/bash
+
+export CC=gcc-7
+export CXX=g++-7
+
+if [ "$NEWCC" != "" ]; then
+    export CC="$NEWCC"
+fi
+if [ "$NEWCXX" != "" ]; then
+    export CXX="$NEWCXX"
+fi
+
+export LOGFILE=gcc7.log
+
+source ./tools/ci/scripts/init.sh
+
+export CXXFLAGS="$CXXFLAGS -pedantic -ggdb3 -O2 -pipe -Wstrict-aliasing=2 \
+-Wstrict-overflow=1 -Wformat=1 -D_FORTIFY_SOURCE=2 \
+-std=gnu++1z -Wformat=1 \
+-Wno-attributes -fno-omit-frame-pointer"
+
+source ./tools/ci/flags/gcc7.sh
+
+export CXXFLAGS="$CXXFLAGS $POST_CXXFLAGS"
+
+do_init
+run_configure $*
+run_make
+
+source ./tools/ci/scripts/exit.sh
+
+exit 0
diff --git a/tools/ci/jobs/gcc7_tests.sh b/tools/ci/jobs/gcc7_tests.sh
new file mode 100755
index 000000000..0354f82f7
--- /dev/null
+++ b/tools/ci/jobs/gcc7_tests.sh
@@ -0,0 +1,33 @@
+#!/bin/bash
+
+export CC=gcc-7
+export CXX=g++-7
+
+if [ "$NEWCC" != "" ]; then
+    export CC="$NEWCC"
+fi
+if [ "$NEWCXX" != "" ]; then
+    export CXX="$NEWCXX"
+fi
+
+export LOGFILE=gcc7.log
+
+source ./tools/ci/scripts/init.sh
+
+export CXXFLAGS="$CXXFLAGS -pedantic -ggdb3 -O2 -pipe -Wstrict-aliasing=2 \
+-Wstrict-overflow=1 -Wformat=1 -D_FORTIFY_SOURCE=2 \
+-std=gnu++1z -Wformat=1 \
+-Wno-attributes"
+
+source ./tools/ci/flags/gcc7.sh
+
+export CXXFLAGS="$CXXFLAGS $POST_CXXFLAGS"
+
+do_init
+run_configure --enable-unittests=yes $*
+export SDL_VIDEODRIVER=dummy
+run_make_check
+
+source ./tools/ci/scripts/exit.sh
+
+exit 0
diff --git a/tools/ci/jobs/gcc7_tests_gcov.sh b/tools/ci/jobs/gcc7_tests_gcov.sh
new file mode 100755
index 000000000..a0619d86b
--- /dev/null
+++ b/tools/ci/jobs/gcc7_tests_gcov.sh
@@ -0,0 +1,34 @@
+#!/bin/bash
+
+export CC=gcc-7
+export CXX=g++-7
+
+if [ "$NEWCC" != "" ]; then
+    export CC="$NEWCC"
+fi
+if [ "$NEWCXX" != "" ]; then
+    export CXX="$NEWCXX"
+fi
+
+export LOGFILE=gcc7.log
+
+source ./tools/ci/scripts/init.sh
+
+export CXXFLAGS="$CXXFLAGS -pedantic -ggdb3 -O2 -pipe -Wstrict-aliasing=2 \
+-Wstrict-overflow=1 -Wformat=1 -D_FORTIFY_SOURCE=2 \
+-std=gnu++1z -Wformat=1 \
+-Wno-attributes"
+
+source ./tools/ci/flags/gcc7.sh
+
+export CXXFLAGS="$CXXFLAGS $POST_CXXFLAGS"
+
+do_init
+run_configure --enable-unittests=yes --with-gcov $*
+export SDL_VIDEODRIVER=dummy
+run_make_check
+run_gcov gcov-7 gcc-7
+
+source ./tools/ci/scripts/exit.sh
+
+exit 0
diff --git a/tools/ci/jobs/gcc7_tests_simd.sh b/tools/ci/jobs/gcc7_tests_simd.sh
new file mode 100755
index 000000000..4809cb27a
--- /dev/null
+++ b/tools/ci/jobs/gcc7_tests_simd.sh
@@ -0,0 +1,38 @@
+#!/bin/bash
+
+export CC=gcc-7
+export CXX=g++-7
+
+if [ "$NEWCC" != "" ]; then
+    export CC="$NEWCC"
+fi
+if [ "$NEWCXX" != "" ]; then
+    export CXX="$NEWCXX"
+fi
+
+export LOGFILE=gcc7.log
+
+source ./tools/ci/scripts/init.sh
+
+# remove -flto -fwhole-program because gcc bug with lto + target attribute
+
+export CXXFLAGS="$CXXFLAGS -pedantic -ggdb3 -O5 -pipe -Wstrict-aliasing=2 \
+-Wstrict-overflow=1 -Wformat=1 -D_FORTIFY_SOURCE=2 \
+-ffast-math -funswitch-loops \
+-funsafe-loop-optimizations \
+-march=native -fsched-pressure
+-std=gnu++1z -Wformat=1 \
+-fno-var-tracking -Wno-attributes"
+
+source ./tools/ci/flags/gcc7.sh
+
+export CXXFLAGS="$CXXFLAGS $POST_CXXFLAGS"
+
+do_init
+run_configure --enable-unittests=yes $*
+export SDL_VIDEODRIVER=dummy
+run_make_check
+
+source ./tools/ci/scripts/exit.sh
+
+exit 0
-- 
cgit v1.2.3-70-g09d2