mirror of
https://github.com/gentoo-mirror/gentoo.git
synced 2026-08-05 12:38:09 -07:00
dev-perl/TermReadKey: fix configure w/ clang 16
Signed-off-by: Sam James <sam@gentoo.org>
This commit is contained in:
@@ -16,3 +16,7 @@ KEYWORDS="~alpha amd64 arm arm64 hppa ~ia64 ~loong ~m68k ~mips ppc ppc64 ~riscv
|
||||
BDEPEND="
|
||||
>=virtual/perl-ExtUtils-MakeMaker-6.580.0
|
||||
"
|
||||
|
||||
PATCHES=(
|
||||
"${FILESDIR}"/${P}-configure-clang16.patch
|
||||
)
|
||||
@@ -0,0 +1,147 @@
|
||||
https://github.com/jonathanstowe/TermReadKey/commit/1e3455135ac17f25ce0c4f01722a184a1fb5c4d1
|
||||
|
||||
From 1e3455135ac17f25ce0c4f01722a184a1fb5c4d1 Mon Sep 17 00:00:00 2001
|
||||
From: Florian Weimer <fweimer@redhat.com>
|
||||
Date: Fri, 25 Nov 2022 17:28:56 +0100
|
||||
Subject: [PATCH] Configure.pm: Specify the return type of main as int
|
||||
|
||||
Implicit int is a language feature that was removed in the 1999
|
||||
version of the C language.
|
||||
|
||||
I could not fix DeducePrototype because I do not see how it
|
||||
can work reliably with this approach. I don't think TermReadKey
|
||||
uses this function.
|
||||
--- a/Configure.pm
|
||||
+++ b/Configure.pm
|
||||
@@ -503,7 +503,7 @@ by the compiler is returned.
|
||||
=cut
|
||||
|
||||
sub CheckHeader { #Find a header (or set of headers) that exists
|
||||
- ApplyHeaders("main(){}",@_);
|
||||
+ ApplyHeaders("int main(){}",@_);
|
||||
}
|
||||
|
||||
=head2 CheckStructure
|
||||
@@ -516,7 +516,7 @@ properly will be returned. B<undef> will be returned if nothing succeeds.
|
||||
|
||||
sub CheckStructure { # Check existance of a structure.
|
||||
my($structname,@headers) = @_;
|
||||
- ApplyHeaders("main(){ struct $structname s;}",@headers);
|
||||
+ ApplyHeaders("int main(){ struct $structname s;}",@headers);
|
||||
}
|
||||
|
||||
=head2 CheckField
|
||||
@@ -530,7 +530,7 @@ be returned if nothing succeeds.
|
||||
|
||||
sub CheckField { # Check for the existance of specified field in structure
|
||||
my($structname,$fieldname,@headers) = @_;
|
||||
- ApplyHeaders("main(){ struct $structname s1; struct $structname s2;
|
||||
+ ApplyHeaders("int main(){ struct $structname s1; struct $structname s2;
|
||||
s1.$fieldname = s2.$fieldname; }",@headers);
|
||||
}
|
||||
|
||||
@@ -544,7 +544,7 @@ that symbol will be returned. B<undef> will be returned if nothing succeeds.
|
||||
|
||||
sub CheckLSymbol { # Check for linkable symbol
|
||||
my($symbol,@libs) = @_;
|
||||
- ApplyLibs("main() { void * f = (void *)($symbol); }",@libs);
|
||||
+ ApplyLibs("int main() { void * f = (void *)($symbol); }",@libs);
|
||||
}
|
||||
|
||||
=head2 CheckSymbol
|
||||
@@ -558,7 +558,8 @@ B<undef> will be returned if nothing succeeds.
|
||||
|
||||
sub CheckSymbol { # Check for linkable/header symbol
|
||||
my($symbol,@lookup) = @_;
|
||||
- ApplyHeadersAndLibs("main() { void * f = (void *)($symbol); }",@lookup);
|
||||
+ ApplyHeadersAndLibs("int main() { void * f = (void *)($symbol); }",
|
||||
+ @lookup);
|
||||
}
|
||||
|
||||
=head2 CheckHSymbol
|
||||
@@ -571,7 +572,7 @@ that symbol will be returned. B<undef> will be returned if nothing succeeds.
|
||||
|
||||
sub CheckHSymbol { # Check for header symbol
|
||||
my($symbol,@headers) = @_;
|
||||
- ApplyHeaders("main() { void * f = (void *)($symbol); }",@headers);
|
||||
+ ApplyHeaders("int main() { void * f = (void *)($symbol); }",@headers);
|
||||
}
|
||||
|
||||
=head2 CheckHPrototype (unexported)
|
||||
@@ -591,7 +592,7 @@ sub CheckHPrototype { # Check for header prototype.
|
||||
# names function doesn't exist, this call will _succeed_. Caveat Utilitor.
|
||||
my($function,$proto,@headers) = @_;
|
||||
my(@proto) = @{$proto};
|
||||
- ApplyHeaders("main() { extern ".$proto[0]." $function(".
|
||||
+ ApplyHeaders("int main() { extern ".$proto[0]." $function(".
|
||||
join(",",@proto[1..$#proto])."); }",@headers);
|
||||
}
|
||||
|
||||
@@ -612,7 +613,8 @@ Example:
|
||||
sub GetSymbol { # Check for linkable/header symbol
|
||||
my($symbol,$printf,$cast,@lookup) = @_,"","";
|
||||
scalar(ApplyHeadersAndLibsAndExecute(
|
||||
- "main(){ printf(\"\%$printf\",($cast)($symbol));exit(0);}",@lookup));
|
||||
+ "int main(){ printf(\"\%$printf\",($cast)($symbol));exit(0);}",
|
||||
+ @lookup));
|
||||
}
|
||||
|
||||
=head2 GetTextSymbol
|
||||
@@ -768,7 +770,7 @@ main(){ }");
|
||||
"double","long double",
|
||||
"char","unsigned char","short int","unsigned short int");
|
||||
|
||||
- if(Compile("main(){flurfie a;}")) { @types = (); }
|
||||
+ if(Compile("int main(){flurfie a;}")) { @types = (); }
|
||||
|
||||
$Verbose=0;
|
||||
|
||||
@@ -781,7 +783,7 @@ main(){ }");
|
||||
if(Compile("
|
||||
extern void func($types[$i]);
|
||||
extern void func($types[$j]);
|
||||
-main(){}")) {
|
||||
+int main(){}")) {
|
||||
print "Removing type $types[$j] because it equals $types[$i]\n";
|
||||
splice(@types,$j,1);
|
||||
$j--;
|
||||
@@ -795,7 +797,7 @@ main(){}")) {
|
||||
if(Compile("
|
||||
$types[$i] func(void);
|
||||
extern $types[$j] func(void);
|
||||
-main(){}")) {
|
||||
+int main(){}")) {
|
||||
print "Removing type $types[$j] because it equals $types[$i]\n";
|
||||
splice(@types,$j,1);
|
||||
$j--;
|
||||
@@ -833,7 +835,7 @@ main(){}")) {
|
||||
# Can we check the return type without worry about arguements?
|
||||
if($checkreturn and (!$checknilargs or !$checkniletcargs)) {
|
||||
for (@types) {
|
||||
- if(ApplyHeaders("extern $_ $function(". ($checknilargs?"...":"").");main(){}",[@headers])) {
|
||||
+ if(ApplyHeaders("extern $_ $function(". ($checknilargs?"...":"").");int main(){}",[@headers])) {
|
||||
$rettype = $_; # Great, we found the return type.
|
||||
last;
|
||||
}
|
||||
@@ -847,9 +849,9 @@ main(){}")) {
|
||||
my $numargs=-1;
|
||||
my $varargs=0;
|
||||
for (0..32) {
|
||||
- if(ApplyHeaders("main(){ $function(".join(",",("0") x $_).");}",@headers)) {
|
||||
+ if(ApplyHeaders("int main(){ $function(".join(",",("0") x $_).");}",@headers)) {
|
||||
$numargs=$_;
|
||||
- if(ApplyHeaders("main(){ $function(".join(",",("0") x ($_+1)).");}",@headers)) {
|
||||
+ if(ApplyHeaders("int main(){ $function(".join(",",("0") x ($_+1)).");}",@headers)) {
|
||||
$varargs=1;
|
||||
}
|
||||
last
|
||||
@@ -865,7 +867,7 @@ main(){}")) {
|
||||
|
||||
if(@args>0 and !defined($rettype)) {
|
||||
for (@types) {
|
||||
- if(defined(ApplyHeaders("extern $_ $function(".join(",",@args).");main(){}",[@headers]))) {
|
||||
+ if(defined(ApplyHeaders("extern $_ $function(".join(",",@args).");int main(){}",[@headers]))) {
|
||||
$rettype = $_; # Great, we found the return type.
|
||||
last;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user