Bug 220794 - [NEW PORT] lang/gcc7: Create port, update Mk/bsd.gcc.mk and Mk/bsd.default-versions.mk
Summary: [NEW PORT] lang/gcc7: Create port, update Mk/bsd.gcc.mk and Mk/bsd.default-ve...
Status: Closed FIXED
Alias: None
Product: Ports & Packages
Classification: Unclassified
Component: Individual Port(s) (show other bugs)
Version: Latest
Hardware: Any Any
: --- Affects Some People
Assignee: Gerald Pfeifer
URL:
Keywords: feature
Depends on:
Blocks:
 
Reported: 2017-07-17 10:24 UTC by Anton Shterenlikht
Modified: 2017-08-15 12:45 UTC (History)
0 users

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Anton Shterenlikht 2017-07-17 10:24:23 UTC
GCC7 has been released a few months ago,
so would be great to have lang/gcc7 port
with a corresponding upgrade to
Mk/bsd.gcc.mk and Mk/bsd.default-versions.mk

This would help build ports such as lang/opencoarrays,
which is developing rapidly and uses the latest GCC fortran features,
using etc/make.conf DEFAULT_VERSIONS option.
Comment 1 Gerald Pfeifer freebsd_committer freebsd_triage 2017-07-17 14:06:29 UTC
Absolutely!  In fact, I have had this ready for a month or two
already, just got stuck on writing a comprehensive commit log
(and my notebook turning into a brick on a three week trip due
to loss of the power adapter did not help).

In other words: just increased priority and hope to have done in
the next few days.
Comment 2 commit-hook freebsd_committer freebsd_triage 2017-08-14 23:21:13 UTC
A commit references this bug:

Author: gerald
Date: Mon Aug 14 23:20:35 UTC 2017
New revision: 447971
URL: https://svnweb.freebsd.org/changeset/ports/447971

Log:
  Welcome GCC 7.1, the first release of the GCC 7 series!

  In terms of optimizations, GCC now uses a new local register allocator
  (LRA) for most targets (now also including PowerPC and SPARC), a new
  store merging pass, is able to determine the return value or range of
  return values of some calls to the sprintf family of functions as
  input for futher passes, features improved code hoisting, new
  interprocedural bitwise constant propagation, interprocedural value
  range propagation, new loop splitting, improved shrink-wrapping that
  separates portions of prologues and epilogues, and many more.

  DWARF 5 is supported through the -gdwarf-5, while DWARF 4 remains the
  default for the time being.

  The C and C++ frontends have gained a large number of additional
  warnings such as -Wpointer-compare, -Wduplicated-branches, -Wrestrict,
  -Wmemset-elt-size, -Wint-in-bool-context, -Wswitch-unreachable,
  -Wexpansion-to-defined, -Wregister, -Wvla-larger-than=N,
  -Wduplicate-decl-specifier, -Wdangling-else, many of which are
  enabled by default or at least with -Wall.

  The -Wshadow warning has been split into -Wshadow=global, -Wshadow=local,
  and -Wshadow=compatible-local .

  GCC 7 also brings a number of enhancements that help detect buffer
  overflow and other forms of invalid memory accesses, among others
  enabled by the -Walloc-size-larger-than= -Walloc-zero, -Walloca, and
  -Walloca-larger-than= command-line options.

  -Wformat-overflow=level option detects certain and likely buffer
  overflow in calls to the sprintf family of formatted output functions;
  and -Wformat-truncation= and -Wstringop-overflow= have been added as
  well and -Wnunnull enahcned.

  So-called fixit hints, that is, notes on how to possibly address
  a warning or error have seen signficant improvements.

  The command-line option -fdiagnostics-generate-patch will print a
  patch in "unified" format after any diagnostics are printed, showing
  the result of applying all fix-it hints.

  The C front end now supports type names _FloatN for floating-point
  types with IEEE interchange formats and _FloatNx for floating-point
  types with IEEE extended formats.

  The C++ front end has experimental support for all of the current
  C++17 draft with the -std=c++1z or -std=gnu++1z flags, including if
  constexpr, class template argument deduction, auto template parameters,
  and structured bindings. Experimental support for C++17 is in libstdc++
  with lots of new features.

  libstdc++ Profile Mode and Cilk+ extensions to the C and C++ languages
  have been deprecated.

  Fortran added a number of extensions for compatibility with legacy code
  and improved and add various features.

  GCC 7 provides a complete implementation of the Go 1.8.1 user package.

  Notably this release ends the history of Java (GCJ and libgcj) as part
  of GCC; all traces thereof and options have been removed in favor of
  OpenJDK, quite simplifying and streamlining building this port,

  Many new processors such as ARM Cortex-A73, Broadcom Vulcan, Cavium
  ThunderX models, Qualcomm Falkor (all on the ARM side) and features
  such as AVX-512 enhancements (on x86-64) as well as optimization
  changes have been added.

  On ARM targets (arm*-*-*), a bug introduced in GCC 5 that affects
  conformance to the procedure call standard (AAPCS) has been fixed. The
  bug affects some C++ code where class objects are passed by value to
  functions and could result in incorrect or inconsistent code being
  generated. This is an ABI change. If the option -Wpsabi is enabled
  (on by default) the compiler will emit a diagnostic note for code that
  might be affected.

  https://gcc.gnu.org/gcc-7/changes.html has a comprehensive set of
  changes and https://gcc.gnu.org/gcc-7/porting_to.html has a helpful
  overview of issue you may encountering porting to this new version.

  PR:		220794

Changes:
  head/lang/Makefile
  head/lang/gcc7/
  head/lang/gcc7/Makefile
  head/lang/gcc7/distinfo
Comment 3 Gerald Pfeifer freebsd_committer freebsd_triage 2017-08-14 23:22:42 UTC
That's been a long few days, I'm afraid, but it's finally in place 
(and Mk/bsd.gcc.mk will be updated shortly).
Comment 4 commit-hook freebsd_committer freebsd_triage 2017-08-15 12:45:04 UTC
A commit references this bug:

Author: gerald
Date: Tue Aug 15 12:44:17 UTC 2017
New revision: 447982
URL: https://svnweb.freebsd.org/changeset/ports/447982

Log:
  Connect the new lang/gcc7 port into the infrastructure of Mk/bsd.gcc.mk
  (providing USE_GCC) and Mk/bsd.default-versions.mk.

  PR:		220794

Changes:
  head/Mk/bsd.default-versions.mk
  head/Mk/bsd.gcc.mk