==========================================
GPR LIBRARY AND TOOLS 18 NEW FEATURES LIST
==========================================

Copyright (C) 2021, AdaCore

This file contains a complete list of new features in version 18 of the
GPR library and tools. A full description of all features can be found in
the GPRbuild and GPR Companion Tools User’s Guide.

An ISO date (YYYY-MM-DD) appears in parentheses after the description line.
This date shows the implementation date of the feature. Any 18.0w wavefront
subsequent to this date will contain the indicated feature, as will any
subsequent 18 or later release.

NF-Q925-015 Switch --keep-temp-files for gprbuild (2017-09-29)

  Switch --keep-temp-files has been implemented for gprbuild. When
  used, temporary files created by gprbuild are not deleted.

NF-Q829-035 List attributes configuration concatenable (2017-09-15)

  List attributes have a new characteristic: they are "configuration
  concatenable" or not. For those list attributes that are
  configuration concatenable, when the attribute is declared in bot
  the configuration project and the user project, the final value is
  the concatenation of both values, configuration then user. For the
  attributes that are not configuration concatenable, if the
  attribute is declared in the user project, then its value is as
  declared, regardless of a possible declaration in the
  configuration projects. The configuration concatenable attributes
  are all the list attributes with a name that end with Options or
  Switches.

NF-Q725-024 Wildcards in attribute Ignore_Source_Sub_Dirs (2017-08-14)

  Wildcards are now allowed in the value of attribute
  Ignore_Source_Sub_Dirs, allowing to exclude groups of directories
  from the source directories of the project.

NF-Q426-001 Avoid following too many symbolic links (2017-04-27)

  When gprbuild or gprclean were invoked without switch -eL, some
  symbolic links were still needlessly followed. Now, only the
  minimum number of symbolic links are followed.

NF-Q414-011 Improved gprconfig performance (2017-07-03)

  Gprconfig performance substantially improved by caching results of
  all external calls.

NF-Q407-019 Object files in alphabetical order in libraries (2017-07-18)

  To be able to reproduce the same executable and libraries on
  different machines, the object files are put in libraries in
  alphabetical order of their path names.

NF-Q406-005 Directory of gprbuild added to the PATH (2017-07-27)

  When gprbuild is invoked, it now adds the directory of its
  executable to PATH, so that gprconfig can be found when using
  auto-configuration.

NF-Q320-045 Allow binding switches for all SALs (2017-06-01)

  Binding switches (Binder'Default_Switches ("Ada")) are now allowed
  for all Stand-Alone Libraries, including sstatic SALs and
  aggregate SALs.

NF-Q320-035 Do not ignore sources when compiler cannot be found (2017-05-26)

  When the compiler for a language could not be found, sources of
  the language were ignored. This is no longer the case, but if one
  of these sources needs to be compiled, an error will be reported
  and the GPR tool will fail.

NF-Q317-025 Name of undefined external reference (2017-03-18)

  When the Project Manager is not able to find an external reference
  with no default, the error message now displays the name of the
  undefined external reference.

NF-Q227-004 Extending a package from a project being extended (2017-03-07)

  In an extending project A, it is now possible to extend a package
  P from the project being extended B, when project B is extending
  another project C and package P is not declared in project B but
  has only been inherited from project C.

NF-Q221-045 GPRbuild response files (2017-02-23)

  GPRbuild now supports response files. A response file is a text
  file, specified to gprbuild with argument '@<argument_file_path>'.
  The path is either absolute or relative to the current working
  directory. Each line in a response file is an argument for
  gprbuild. An argument '@<file>' is not allowed in a response file.

NF-Q126-041 New attribute Install_Project in package Install (2017-01-30)

  This new attribute controls whether to install a project file
  together with the sources and/or objects and libraries.

NF-Q123-019 New gprbuild switch --no-complete-output / -n (2017-02-01)

  A new switch is added to gprbuild, --no-complete-output or
  equivalent -n. This switch is only accepted on the command line,
  not in package Builder. When this switch is used, no files .stderr
  or .stdout are created by the compilers. This switch also cancels
  any previous switch --complete-output.

NF-Q120-027 Environment variables TEMP and TMP for temp dir (2017-02-28)

  In addition to environment variable TMPDIR, TEMP and TMP are
  potentially used by the Project Manager to store temporary files.
  If one of these environment variables designates the absolute path
  of a directory, this directory is used to store the temporaty
  files. TMPDIR is checked first, then TEMP, then TMP. If none of
  those designates the full path of a directory, then the temporary
  files are stored in object directories.

NF-Q106-002 New switches --no-project for gprbuild and gprclean (2017-08-31)

  A new command line only switch --no-project is added to gprbuild
  and gprclean. When this switch is used, the project file used by
  the tool is the default one in <prefix>/share/gpr/_default.gpr.

NF-PC16-023 Add support for skipping new project generation (2017-02-02)

  The new GPRinstall's --no-project command line option and install
  package attribute Install_Project can be used to disable
  generation and installation of the project file.

NF-PC08-065 New attribute Required_Artifacts (2016-12-14)

  A new attribute Required_Artifacts has been introduced. This new
  attribute complements the Artifacts attribute and is very similar
  except that the artifacts must exist or an error is reported.

NF-PC08-064 New GPRname switch --ignore-duplicate-files (2017-01-05)

  GPRname has a new switch --ignore-duplicate-files which will
  ignore identical basenames when scanning for sources. In addition,
  a warning is now emitted by default when not using this switch to
  warn about potential conflicts when duplicate filenames are found.

NF-PC08-062 New GPRname switch --ignore-predefined-units (2016-12-13)

  GPRname has a new switch --ignore-predefined-units which will not
  consider any predefined Ada unit (children of Ada, Interfaces and
  System packages) when scanning source files.

NF-PB17-029 SAL projects and -bargs (2016-11-19)

  When gprbuild is invoked with a main project that is a Stand-Alone
  Library project and with binding options specified on the command
  line after switch -bargs, a warning is displayed indicating that
  command line binding options are not taken into account when the
  main project is a SAL project.

NF-O817-030 Allow path of object file (O817-030) (2017-06-09)

  In .d dependency files for file-based languages, the beginning of
  the file line may be the full path of the object file, instead of
  its simple file name.
