develooper Front page | perl.perl5.changes | Postings from October 2021

[Perl/perl5] 0c7be1: Teach Configure and cflags.SH about C99

From:
Nicholas Clark via perl5-changes
Date:
October 13, 2021 06:59
Subject:
[Perl/perl5] 0c7be1: Teach Configure and cflags.SH about C99
Message ID:
Perl/perl5/push/refs/heads/blead/1a4dad-c44af6@github.com
  Branch: refs/heads/blead
  Home:   https://github.com/Perl/perl5
  Commit: 0c7be120244c1a6aae9b1ae30124265bcb8184da
      https://github.com/Perl/perl5/commit/0c7be120244c1a6aae9b1ae30124265bcb8184da
  Author: Nicholas Clark <nick@ccl4.org>
  Date:   2021-10-13 (Wed, 13 Oct 2021)

  Changed paths:
    M Configure
    M Cross/cflags-cross-arm
    M cflags.SH

  Log Message:
  -----------
  Teach Configure and cflags.SH about C99

Probe to see whether we need -std=gnu99 or -std=c99 to get C99 code to
compile. In cflags.SH, remove code that added gcc warning flags that were
compatible with C89 but are not compatible with C99.


  Commit: d34aca5e9e57e3f0b5d25d451759237b40647664
      https://github.com/Perl/perl5/commit/d34aca5e9e57e3f0b5d25d451759237b40647664
  Author: Nicholas Clark <nick@ccl4.org>
  Date:   2021-10-13 (Wed, 13 Oct 2021)

  Changed paths:
    M Configure

  Log Message:
  -----------
  Test declarations after statement in Configure's C99 probe code

Also ensure that the relevant failure error message is output even with
Configure's -s flag, as we shouldn't stay silent for a message that causes
Configure default to aborting.

With these changes, Configure will fail the C99 probe test if passed
-Accflags="-Werror=declaration-after-statement" or
-Accflags="-Werror=long-long"


  Commit: 694de2a9ab0f7acd2d3418a2031a022e0fd70ba7
      https://github.com/Perl/perl5/commit/694de2a9ab0f7acd2d3418a2031a022e0fd70ba7
  Author: Nicholas Clark <nick@ccl4.org>
  Date:   2021-10-13 (Wed, 13 Oct 2021)

  Changed paths:
    M cflags.SH

  Log Message:
  -----------
  cflags.sh should not add -std=c99 if -std=gnu99 is already set

Having both looks like it ought to cause the build to fail, as with -std=c99
second it will override any previous -std=gnu99, and some platforms need the
former to both compile C99 code and have correct includes during Configure
probing.

However testing on those platforms without this change doesn't show any
errors. So this change doesn't seem to strictly be necessary. But it does
prevent our generated compiler command lines having contradictory flags,
and hence looking daft.


  Commit: a66ca9982aad27a40050c19682786e25346fd8c4
      https://github.com/Perl/perl5/commit/a66ca9982aad27a40050c19682786e25346fd8c4
  Author: Nicholas Clark <nick@ccl4.org>
  Date:   2021-10-13 (Wed, 13 Oct 2021)

  Changed paths:
    M INSTALL
    M pod/perlhacktips.pod
    M t/porting/known_pod_issues.dat

  Log Message:
  -----------
  Update perlhack with details of the C99 features we can now use

Also update INSTALL to mention C99.


  Commit: 135ed90333defee1f5341979cabe475c9d418d74
      https://github.com/Perl/perl5/commit/135ed90333defee1f5341979cabe475c9d418d74
  Author: Nicholas Clark <nick@ccl4.org>
  Date:   2021-10-13 (Wed, 13 Oct 2021)

  Changed paths:
    M pod/perlhacktips.pod

  Log Message:
  -----------
  Note how best to confirm that other C99 features can be relied upon

If C99 functionality can't be emulated on platforms which don't provide it,
then one really needs to test whether MSVC and the VMS compiler support it.


  Commit: 4695dc7a419b3069e06d2051ff1a6c9daca6c881
      https://github.com/Perl/perl5/commit/4695dc7a419b3069e06d2051ff1a6c9daca6c881
  Author: Nicholas Clark <nick@ccl4.org>
  Date:   2021-10-13 (Wed, 13 Oct 2021)

  Changed paths:
    M README.win32

  Log Message:
  -----------
  Update README.win32 to the new C99/MSVC 12.0 requirements

* Remove specific notes related to Microsoft Visual C++ 2005 Express Edition
  and earlier
* Visual Studio 2013 is the only version that still has Express edition (in
  addition to Community), so simplify the text by only mentioning Community
* Remove the reference to IA64, and mention x86_64 along with x86
* In the context of x86_64, clarify that mingw's binaries can run on both
* Update the URL for mingw


  Commit: 632ce96a35d784df9e43bc8ad87b4e8f1f24a590
      https://github.com/Perl/perl5/commit/632ce96a35d784df9e43bc8ad87b4e8f1f24a590
  Author: Nicholas Clark <nick@ccl4.org>
  Date:   2021-10-13 (Wed, 13 Oct 2021)

  Changed paths:
    M inline.h

  Log Message:
  -----------
  Introduce a "declaration after statement" into inline.h

The core now permits some C99 code, so extensions need to ensure that any
C compiler flags they add or change permit C99 code.

This code is inlined by XS extensions in the core and on CPAN. The intent
is that this commit should show up for any failure bisection, making it
obvious what the cause is, and what the fix needs to be.


  Commit: 8db245dbe48e58e740f3138b49ea051b36e47b08
      https://github.com/Perl/perl5/commit/8db245dbe48e58e740f3138b49ea051b36e47b08
  Author: Nicholas Clark <nick@ccl4.org>
  Date:   2021-10-13 (Wed, 13 Oct 2021)

  Changed paths:
    M dist/Devel-PPPort/Makefile.PL

  Log Message:
  -----------
  Devel::PPPort shouldn't unconditionally -Wdeclaration-after-statement

Add the flag for gcc for perl v5.34.4 and earlier.


  Commit: 4214a5f7a04127ac82392db8df150746acd2355a
      https://github.com/Perl/perl5/commit/4214a5f7a04127ac82392db8df150746acd2355a
  Author: Nicholas Clark <nick@ccl4.org>
  Date:   2021-10-13 (Wed, 13 Oct 2021)

  Changed paths:
    M pod/perldelta.pod

  Log Message:
  -----------
  perldelta for C99 support


  Commit: c44af6e357f211a32d6942d405451f8003ff808c
      https://github.com/Perl/perl5/commit/c44af6e357f211a32d6942d405451f8003ff808c
  Author: Nicholas Clark <nick@ccl4.org>
  Date:   2021-10-13 (Wed, 13 Oct 2021)

  Changed paths:
    M INSTALL

  Log Message:
  -----------
  Add a section to INSTALL describing that we now rely on some C99

And the implications for XS authors writing code to work on both current and
earlier perl installations.


Compare: https://github.com/Perl/perl5/compare/1a4dad1b219e...c44af6e357f2



nntp.perl.org: Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at ask@perl.org | Group listing | About