mirror of
https://github.com/ilyakooo0/nixpkgs.git
synced 2024-11-14 15:36:47 +03:00
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
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=";
|
||||
};
|
||||
|
||||
# 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" ];
|
||||
|
||||
nativeBuildInputs = [ pkg-config ];
|
||||
|
Loading…
Reference in New Issue
Block a user