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:
Randy Eckenrode 2023-09-23 08:51:20 -04:00
parent a8be39d4a9
commit 9622ba47e9
No known key found for this signature in database
GPG key ID: 64C1CD4EC2A600D9
2 changed files with 48 additions and 0 deletions

View 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;
}

View file

@ -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 ];