mirror of
https://git.freebsd.org/ports.git
synced 2025-07-18 17:59:20 -04:00
audio/libaudiofile: fix build with clang 19, enable tests
Clang 19 has become more strict about initialization with undefined behavior, resulting in errors similar to: ./SimpleModule.h:126:40: error: in-class initializer for static data member is not a constant expression 126 | static const int kMinSignedValue = -1 << kScaleBits; | ~~~^~~~~~~~~~~~~ ./SimpleModule.h:176:22: note: in instantiation of template class 'signConverter<kInt8>' requested here 176 | transform<typename signConverter<Format>::signedToUnsigned>(src, dst, count); | ^ ./SimpleModule.h:183:5: note: in instantiation of function template specialization 'ConvertSign::convertSignedToUnsigned<kInt8>' requested here 183 | convertSignedToUnsigned<kInt8>(src, dst, count); | ^ This is because left-shifting negative values is undefined. Replace -1 with ~0u which results in the expected value. While here, add a few other patches to remove warnings about undefined left-shifts, and add support for the "make test" target. PR: 281477 Approved by: maintainer timeout (2 weeks) MFH: 2024Q3
This commit is contained in:
parent
5a269b5cd4
commit
7955b1d7ec
7 changed files with 96 additions and 0 deletions
|
@ -23,6 +23,9 @@ USE_LDCONFIG= yes
|
|||
GNU_CONFIGURE= yes
|
||||
GNU_CONFIGURE_MANPREFIX=${PREFIX}/share
|
||||
|
||||
do-test:
|
||||
cd ${WRKSRC} && ${MAKE} check
|
||||
|
||||
post-install:
|
||||
@${STRIP_CMD} ${STAGEDIR}${PREFIX}/lib/libaudiofile.so.1
|
||||
|
||||
|
|
11
audio/libaudiofile/files/patch-gtest_gtest.h
Normal file
11
audio/libaudiofile/files/patch-gtest_gtest.h
Normal file
|
@ -0,0 +1,11 @@
|
|||
--- gtest/gtest.h.orig 2013-02-11 17:23:26 UTC
|
||||
+++ gtest/gtest.h
|
||||
@@ -529,7 +529,7 @@
|
||||
// feature depending on tuple with be disabled in this mode).
|
||||
#ifndef GTEST_HAS_TR1_TUPLE
|
||||
// The user didn't tell us not to do it, so we assume it's OK.
|
||||
-# define GTEST_HAS_TR1_TUPLE 1
|
||||
+# define GTEST_HAS_TR1_TUPLE 0
|
||||
#endif // GTEST_HAS_TR1_TUPLE
|
||||
|
||||
// Determines whether Google Test's own tr1 tuple implementation
|
|
@ -0,0 +1,11 @@
|
|||
--- libaudiofile/modules/SimpleModule.h.orig 2013-03-06 05:30:03 UTC
|
||||
+++ libaudiofile/modules/SimpleModule.h
|
||||
@@ -123,7 +123,7 @@ struct signConverter
|
||||
typedef typename IntTypes<Format>::UnsignedType UnsignedType;
|
||||
|
||||
static const int kScaleBits = (Format + 1) * CHAR_BIT - 1;
|
||||
- static const int kMinSignedValue = -1 << kScaleBits;
|
||||
+ static const int kMinSignedValue = ~0u << kScaleBits;
|
||||
|
||||
struct signedToUnsigned : public std::unary_function<SignedType, UnsignedType>
|
||||
{
|
11
audio/libaudiofile/files/patch-test_FloatToInt.cpp
Normal file
11
audio/libaudiofile/files/patch-test_FloatToInt.cpp
Normal file
|
@ -0,0 +1,11 @@
|
|||
--- test/FloatToInt.cpp.orig 2013-02-11 17:23:26 UTC
|
||||
+++ test/FloatToInt.cpp
|
||||
@@ -115,7 +115,7 @@ TEST_F(FloatToIntTest, Int16)
|
||||
EXPECT_EQ(readData[i], expectedData[i]);
|
||||
}
|
||||
|
||||
-static const int32_t kMinInt24 = -1<<23;
|
||||
+static const int32_t kMinInt24 = ~0u<<23;
|
||||
static const int32_t kMaxInt24 = (1<<23) - 1;
|
||||
|
||||
TEST_F(FloatToIntTest, Int24)
|
11
audio/libaudiofile/files/patch-test_IntToFloat.cpp
Normal file
11
audio/libaudiofile/files/patch-test_IntToFloat.cpp
Normal file
|
@ -0,0 +1,11 @@
|
|||
--- test/IntToFloat.cpp.orig 2013-02-11 17:23:26 UTC
|
||||
+++ test/IntToFloat.cpp
|
||||
@@ -117,7 +117,7 @@ TEST_F(IntToFloatTest, Int16)
|
||||
EXPECT_EQ(readData[i], expectedData[i]);
|
||||
}
|
||||
|
||||
-static const int32_t kMinInt24 = -1<<23;
|
||||
+static const int32_t kMinInt24 = ~0u<<23;
|
||||
static const int32_t kMaxInt24 = (1<<23) - 1;
|
||||
|
||||
TEST_F(IntToFloatTest, Int24)
|
29
audio/libaudiofile/files/patch-test_NeXT.cpp
Normal file
29
audio/libaudiofile/files/patch-test_NeXT.cpp
Normal file
|
@ -0,0 +1,29 @@
|
|||
--- test/NeXT.cpp.orig 2013-02-11 17:23:26 UTC
|
||||
+++ test/NeXT.cpp
|
||||
@@ -37,7 +37,7 @@
|
||||
|
||||
#include "TestUtilities.h"
|
||||
|
||||
-const char kDataUnspecifiedLength[] =
|
||||
+const unsigned char kDataUnspecifiedLength[] =
|
||||
{
|
||||
'.', 's', 'n', 'd',
|
||||
0, 0, 0, 24, // offset of 24 bytes
|
||||
@@ -57,7 +57,7 @@ const char kDataUnspecifiedLength[] =
|
||||
0, 55
|
||||
};
|
||||
|
||||
-const char kDataTruncated[] =
|
||||
+const unsigned char kDataTruncated[] =
|
||||
{
|
||||
'.', 's', 'n', 'd',
|
||||
0, 0, 0, 24, // offset of 24 bytes
|
||||
@@ -152,7 +152,7 @@ TEST(NeXT, Truncated)
|
||||
ASSERT_EQ(::unlink(testFileName.c_str()), 0);
|
||||
}
|
||||
|
||||
-const char kDataZeroChannels[] =
|
||||
+const unsigned char kDataZeroChannels[] =
|
||||
{
|
||||
'.', 's', 'n', 'd',
|
||||
0, 0, 0, 24, // offset of 24 bytes
|
20
audio/libaudiofile/files/patch-test_Sign.cpp
Normal file
20
audio/libaudiofile/files/patch-test_Sign.cpp
Normal file
|
@ -0,0 +1,20 @@
|
|||
--- test/Sign.cpp.orig 2013-02-11 17:23:26 UTC
|
||||
+++ test/Sign.cpp
|
||||
@@ -116,7 +116,7 @@ TEST_F(SignConversionTest, Int16)
|
||||
EXPECT_EQ(readData[i], expectedData[i]);
|
||||
}
|
||||
|
||||
-static const int32_t kMinInt24 = -1<<23;
|
||||
+static const int32_t kMinInt24 = ~0u<<23;
|
||||
static const int32_t kMaxInt24 = (1<<23) - 1;
|
||||
static const uint32_t kMaxUInt24 = (1<<24) - 1;
|
||||
|
||||
@@ -157,7 +157,7 @@ TEST_F(SignConversionTest, Int32)
|
||||
AFframecount framesRead = afReadFrames(file, AF_DEFAULT_TRACK, readData, frameCount);
|
||||
ASSERT_EQ(framesRead, frameCount);
|
||||
afCloseFile(file);
|
||||
- const uint32_t expectedData[] = { 0, -kMinInt32, kMaxUInt32 };
|
||||
+ const uint32_t expectedData[] = { 0, -static_cast<uint32_t>(kMinInt32), kMaxUInt32 };
|
||||
for (int i=0; i<frameCount; i++)
|
||||
EXPECT_EQ(readData[i], expectedData[i]);
|
||||
}
|
Loading…
Add table
Reference in a new issue