#! /bin/sh
#
# Script to generate the NEWS file from online release notes.
# Contributed by Joseph Myers <jsm28@cam.ac.uk>.
#
# Copyright (C) 2000-2022 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-12/index.html gcc-12/changes.html
    gcc-11/index.html gcc-11/changes.html
    gcc-10/index.html gcc-10/changes.html
    gcc-9/index.html gcc-9/changes.html
    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
