File: 0001-Fix-building-in-ISO-C23.patch

package info (click to toggle)
libsdl-perl 2.548-6
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 5,972 kB
  • sloc: perl: 13,985; ansic: 583; makefile: 35
file content (68 lines) | stat: -rw-r--r-- 2,598 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
From 2a1eb99101a89e46c13b75b08a4c685e0f7425fe Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= <ppisar@redhat.com>
Date: Tue, 11 Feb 2025 12:14:27 +0100
Subject: [PATCH] Fix building in ISO C23
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Building with GCC 15, which defaults to ISO C23, failed like this:

    In file included from lib/SDL_perl.xs:32:
    lib/SDL_perl.c:654:13: error: conflicting types for ‘boot_SDL’; have ‘void(PerlInterpreter *, CV *)’ {aka ‘void(struct interpreter *, struct cv *)’}
      654 | XS_EXTERNAL(boot_SDL); /* prototype to pass -Wmissing-prototypes */
	  |             ^~~~~~~~
    /usr/lib64/perl5/CORE/XSUB.h:149:34: note: in definition of macro ‘XS_EXTERNAL’
      149 | #  define XS_EXTERNAL(name) void name(pTHX_ CV* cv __attribute__unused__)
	  |                                  ^~~~
    lib/SDL_perl.xs:147:6: note: previous declaration of ‘boot_SDL’ with type ‘void(void)’
      147 | void boot_SDL();
	  |      ^~~~~~~~
    lib/SDL_perl.c:655:13: error: conflicting types for ‘boot_SDL’; have ‘void(PerlInterpreter *, CV *)’ {aka ‘void(struct interpreter *, struct cv *)’}
      655 | XS_EXTERNAL(boot_SDL)
	  |             ^~~~~~~~
    /usr/lib64/perl5/CORE/XSUB.h:149:34: note: in definition of macro ‘XS_EXTERNAL’
      149 | #  define XS_EXTERNAL(name) void name(pTHX_ CV* cv __attribute__unused__)
	  |                                  ^~~~
    lib/SDL_perl.xs:147:6: note: previous declaration of ‘boot_SDL’ with type ‘void(void)’
      147 | void boot_SDL();
	  |      ^~~~~~~~

The cause is a mismatch between how boot_SDL() was declared and used
in src/SDL.xs and how Perl generates a boot function for XS packages.
This patch fixes it by passing current Perl interpreter and, probably
ignored, cv argument.

Bug: https://github.com/PerlGameDev/SDL/issues/294
Bug-Fedora: https://bugzilla.redhat.com/show_bug.cgi?id=2341036
Bug-Debian: https://bugs.debian.org/1097266

---
 src/SDL.xs | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/SDL.xs b/src/SDL.xs
index a13882c8..5856e3af 100644
--- a/src/SDL.xs
+++ b/src/SDL.xs
@@ -144,7 +144,7 @@ sdl_perl_atexit (void)
 	SDL_Quit();
 }
 
-void boot_SDL();
+XS(boot_SDL);
 void boot_SDL__OpenGL();
 
 XS(boot_SDL_perl)
@@ -155,7 +155,7 @@ XS(boot_SDL_perl)
 #endif
 	PL_perl_destruct_level = 2;
 	GET_TLS_CONTEXT
-	boot_SDL();
+	boot_SDL(aTHX_ cv);
 
 #if defined WINDOWS || defined WIN32
   SDL_RegisterApp ("SDLPerl App", 0, GetModuleHandle (NULL));
-- 
2.51.0