#! /bin/sh
#
# Script to generate the NEWS file from online release notes.
# Contributed by Joseph Myers <jsm28@cam.ac.uk>.
#
# Copyright (C) 2000-2018 Free Software Foundation, Inc.
# This file is part of GCC.
#
# GCC is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 3, or (at your option)
# any later version.
#
# GCC is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with GCC; see the file COPYING.  If not, write to
# the Free Software Foundation, 51 Franklin Street, Fifth Floor,
# Boston, MA 02110-1301, USA.

website=http://gcc.gnu.org/
files="
    gcc-8/index.html gcc-8/changes.html
    gcc-7/index.html gcc-7/changes.html
    gcc-6/index.html gcc-6/changes.html
    gcc-5/index.html gcc-5/changes.html
    gcc-4.9/index.html gcc-4.9/changes.html
    gcc-4.8/index.html gcc-4.8/changes.html
    gcc-4.7/index.html gcc-4.7/changes.html
    gcc-4.6/index.html gcc-4.6/changes.html
    gcc-4.5/index.html gcc-4.5/changes.html
    gcc-4.4/index.html gcc-4.4/changes.html
    gcc-4.3/index.html gcc-4.3/changes.html
    gcc-4.2/index.html gcc-4.2/changes.html
    gcc-4.1/index.html gcc-4.1/changes.html
    gcc-4.0/index.html gcc-4.0/changes.html
    gcc-3.4/index.html gcc-3.4/changes.html
    gcc-3.3/index.html gcc-3.3/changes.html
    gcc-3.2/index.html gcc-3.2/changes.html
    gcc-3.1/index.html gcc-3.1/changes.html
    gcc-3.0/index.html gcc-3.0/features.html gcc-3.0/caveats.html
    gcc-2.95/index.html gcc-2.95/features.html gcc-2.95/caveats.html
    egcs-1.1/index.html egcs-1.1/features.html egcs-1.1/caveats.html
    egcs-1.0/index.html egcs-1.0/features.html egcs-1.0/caveats.html"

set -e

cat <<EOF
This file contains information about GCC releases which has been generated
automatically from the online release notes.  It covers releases of GCC
(and the former EGCS project) since EGCS 1.0, on the line of development
that led to GCC 3. For information on GCC 2.8.1 and older releases of GCC 2,
see ONEWS.

EOF

header="======================================================================"

echo $header

for file in $files; do
    wfile=$website$file
    echo $wfile
    # We lie to Lynx about the kind of terminal in use because we
    # want to get consistent output everywhere, and we want this
    # script to work even when it is not run interactively.
    env TERM=vt100 lynx -dump $wfile
    echo $header
done
