mjpegtools: fix build with clang 16
Clang 16 defaults to C++17, causing the build to fail because the following has been removed from C++17: * `std::auto_ptr`; and * The `register` type class specifier.
This commit is contained in:
parent
a8be39d4a9
commit
9622ba47e9
2 changed files with 48 additions and 0 deletions
44
pkgs/tools/video/mjpegtools/c++-17-fixes.patch
Normal file
44
pkgs/tools/video/mjpegtools/c++-17-fixes.patch
Normal file
|
@ -0,0 +1,44 @@
|
||||||
|
diff -ur a/mplex/main.cpp b/mplex/main.cpp
|
||||||
|
--- a/mplex/main.cpp 2021-09-05 02:14:13.029372000 -0400
|
||||||
|
+++ b/mplex/main.cpp 2023-09-23 08:47:07.683450627 -0400
|
||||||
|
@@ -50,7 +50,7 @@
|
||||||
|
#include "multiplexor.hpp"
|
||||||
|
|
||||||
|
|
||||||
|
-using std::auto_ptr;
|
||||||
|
+using std::unique_ptr;
|
||||||
|
|
||||||
|
|
||||||
|
/*************************************************************************
|
||||||
|
@@ -138,7 +138,7 @@
|
||||||
|
void
|
||||||
|
FileOutputStream::NextSegment( )
|
||||||
|
{
|
||||||
|
- auto_ptr<char> prev_filename_buf( new char[strlen(cur_filename)+1] );
|
||||||
|
+ unique_ptr<char> prev_filename_buf( new char[strlen(cur_filename)+1] );
|
||||||
|
char *prev_filename = prev_filename_buf.get();
|
||||||
|
fclose(strm);
|
||||||
|
++segment_num;
|
||||||
|
diff -ur a/utils/fastintfns.h b/utils/fastintfns.h
|
||||||
|
--- a/utils/fastintfns.h 2021-09-05 02:14:13.033372000 -0400
|
||||||
|
+++ b/utils/fastintfns.h 2023-09-23 08:44:40.147112973 -0400
|
||||||
|
@@ -2,12 +2,17 @@
|
||||||
|
*
|
||||||
|
* WARNING: Assumes 2's complement arithmetic.
|
||||||
|
*/
|
||||||
|
-static inline int intmax( register int x, register int y )
|
||||||
|
+#ifdef __cplusplus
|
||||||
|
+#define REGISTER
|
||||||
|
+#else
|
||||||
|
+#define REGISTER register
|
||||||
|
+#endif
|
||||||
|
+static inline int intmax( REGISTER int x, REGISTER int y )
|
||||||
|
{
|
||||||
|
return x < y ? y : x;
|
||||||
|
}
|
||||||
|
|
||||||
|
-static inline int intmin( register int x, register int y )
|
||||||
|
+static inline int intmin( REGISTER int x, REGISTER int y )
|
||||||
|
{
|
||||||
|
return x < y ? x : y;
|
||||||
|
}
|
|
@ -16,6 +16,10 @@ stdenv.mkDerivation rec {
|
||||||
sha256 = "sha256-sYBTbX2ZYLBeACOhl7ANyxAJKaSaq3HRnVX0obIQ9Jo=";
|
sha256 = "sha256-sYBTbX2ZYLBeACOhl7ANyxAJKaSaq3HRnVX0obIQ9Jo=";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
# Clang 16 defaults to C++17. `std::auto_ptr` has been removed from C++17, and the
|
||||||
|
# `register` type class specifier is no longer allowed.
|
||||||
|
patches = [ ./c++-17-fixes.patch ];
|
||||||
|
|
||||||
hardeningDisable = [ "format" ];
|
hardeningDisable = [ "format" ];
|
||||||
|
|
||||||
nativeBuildInputs = [ pkg-config ];
|
nativeBuildInputs = [ pkg-config ];
|
||||||
|
|
Loading…
Reference in a new issue