From c1bfee87440bdac6dcd3d92ac45ad7ae614b7fca Mon Sep 17 00:00:00 2001 From: Daniel O'Connor Date: Mon, 20 Jan 2025 23:09:36 +1030 Subject: [PATCH] volk: Update to 3.1.2, add Python 3.11 and 3.12 variants. --- science/volk/Portfile | 24 +- ...ch-cpu_features-add-support-for-ARM64.diff | 276 ------------------ 2 files changed, 10 insertions(+), 290 deletions(-) delete mode 100644 science/volk/files/patch-cpu_features-add-support-for-ARM64.diff diff --git a/science/volk/Portfile b/science/volk/Portfile index 78b642d66e97c..3ff9a02dda321 100644 --- a/science/volk/Portfile +++ b/science/volk/Portfile @@ -25,8 +25,8 @@ license GPL-3 homepage https://libvolk.org/ github.setup gnuradio volk 2.5.0 v -# Change github.tarball_from to 'releases' or 'archive' next update -github.tarball_from tarball +github.tarball_from releases +github.setup gnuradio volk 3.1.2 v revision 0 epoch 2 @@ -53,7 +53,7 @@ epoch 2 set cpu_features_github_author google set cpu_features_github_project cpu_features -set cpu_features_github_branch a8397ba4591237c17d18e4acc091f5f3ebe7391e +set cpu_features_github_branch ba4bffa86cbb5456bdb34426ad22b9551278e2c0 set main_distname ${distname} set main_distfile ${distfiles} @@ -68,13 +68,13 @@ master_sites ${github.homepage}/archive/${git.branch}:tagone \ https://github.com/${cpu_features_github_author}/${cpu_features_github_project}/archive/${cpu_features_github_branch}:tagtwo checksums ${main_distfile} \ - rmd160 e109ad2361dfa2ab8908aff644b067fcd832028d \ - sha256 468bebdb8c2ae9b82837ad08abd146dd9a9a48d3de7bea2d0095e4b1557b5299 \ - size 357828 \ + rmd160 b49e02fcac2b98c226b804bb0659468dfb1f3727 \ + sha256 90082bf68d76d00aa6c35f8bff0e93891b4204d817e1a3ba829486b445f715dc \ + size 382769 \ ${cpu_features_distfile} \ - rmd160 7221e014514170ed24a1d0294b8195cecd9b7465 \ - sha256 b47031a2a9ab04cb6514285103e51ba92c8f0bf28470cce911ac0c9af781c307 \ - size 63263 + rmd160 8a398e527b7f095c2f6f8c5633528085687cc03e \ + sha256 1f7ef67bdb0797f55e9d69340bcb16685de75fbd22a0c92f4443f09f171c0e2c \ + size 109281 post-extract { # put the cpu_features_github_project directory into position @@ -85,10 +85,6 @@ post-extract { move ${workpath}/${cpu_features_distname} ${worksrcpath}/cpu_features } -# fix cpu_features to work with ARM64 - -patchfiles-append patch-cpu_features-add-support-for-ARM64.diff - # We can add a proper support for ppc into cpu_features library, # however for volk it seems inconsequential presently, since it # does not have dedicated code for ppc; cpu_features are used @@ -128,7 +124,7 @@ configure.cppflags-delete -I${prefix}/include # specify the Python dependencies; these are checked for at configure, # then used for building, but not at runtime. -set pythons_suffixes {35 36 37 38 39 310} +set pythons_suffixes {39 310 311 312} set pythons_ports {} foreach s ${pythons_suffixes} { diff --git a/science/volk/files/patch-cpu_features-add-support-for-ARM64.diff b/science/volk/files/patch-cpu_features-add-support-for-ARM64.diff deleted file mode 100644 index 3613d6def57cb..0000000000000 --- a/science/volk/files/patch-cpu_features-add-support-for-ARM64.diff +++ /dev/null @@ -1,276 +0,0 @@ ---- cpu_features/CMakeLists.txt.orig -+++ cpu_features/CMakeLists.txt -@@ -57,10 +57,10 @@ - - if(CMAKE_SYSTEM_PROCESSOR MATCHES "^mips") - set(PROCESSOR_IS_MIPS TRUE) -+elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "(^aarch64)|(arm64)") -+ set(PROCESSOR_IS_AARCH64 TRUE) - elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "^arm") - set(PROCESSOR_IS_ARM TRUE) --elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "^aarch64") -- set(PROCESSOR_IS_AARCH64 TRUE) - elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "(x86_64)|(AMD64|amd64)|(^i.86$)") - set(PROCESSOR_IS_X86 TRUE) - elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "^(powerpc|ppc)") -@@ -146,10 +146,8 @@ - target_include_directories(cpu_features - PUBLIC $ - ) --if(PROCESSOR_IS_X86) -- if(APPLE) -- target_compile_definitions(cpu_features PRIVATE HAVE_SYSCTLBYNAME) -- endif() -+if(APPLE AND (PROCESSOR_IS_X86 OR PROCESSOR_IS_AARCH64)) -+ target_compile_definitions(cpu_features PRIVATE HAVE_SYSCTLBYNAME) - endif() - add_library(CpuFeature::cpu_features ALIAS cpu_features) - ---- cpu_features/README.md.orig -+++ cpu_features/README.md -@@ -146,7 +146,7 @@ - | Android | yes² | yes¹ | yes¹ | yes¹ | N/A | - | iOS | N/A | not yet | not yet | N/A | N/A | - | Linux | yes² | yes¹ | yes¹ | yes¹ | yes¹ | --| MacOs | yes² | N/A | not yet | N/A | no | -+| macOS | yes² | N/A | yes² | N/A | no | - | Windows | yes² | not yet | not yet | N/A | N/A | - - 1. **Features revealed from Linux.** We gather data from several sources ---- cpu_features/include/cpu_features_macros.h.orig -+++ cpu_features/include/cpu_features_macros.h -@@ -39,7 +39,7 @@ - #define CPU_FEATURES_ARCH_ARM - #endif - --#if defined(__aarch64__) -+#if (defined(__aarch64__) || (defined(__APPLE__) && defined(__arm64__))) - #define CPU_FEATURES_ARCH_AARCH64 - #endif - ---- cpu_features/src/cpuinfo_aarch64.c.orig -+++ cpu_features/src/cpuinfo_aarch64.c -@@ -22,6 +22,31 @@ - #include "internal/stack_line_reader.h" - #include "internal/string_view.h" - -+#if defined(CPU_FEATURES_OS_DARWIN) -+#if !defined(HAVE_SYSCTLBYNAME) -+#error "Darwin needs support for sysctlbyname" -+#endif -+#include -+ -+#if defined(CPU_FEATURES_MOCK_CPUID_ARM64) -+extern bool GetDarwinSysCtlByName(const char*); -+extern int GetDarwinSysCtlByNameValue(const char*); -+#else // CPU_FEATURES_MOCK_CPUID_ARM64 -+static bool GetDarwinSysCtlByName(const char* name) { -+ int enabled; -+ size_t enabled_len = sizeof(enabled); -+ const int failure = sysctlbyname(name, &enabled, &enabled_len, NULL, 0); -+ return failure ? false : enabled; -+} -+static int GetDarwinSysCtlByNameValue(const char* name) { -+ int enabled; -+ size_t enabled_len = sizeof(enabled); -+ const int failure = sysctlbyname(name, &enabled, &enabled_len, NULL, 0); -+ return failure ? 0 : enabled; -+} -+#endif -+#endif // CPU_FEATURES_OS_DARWIN -+ - // Generation of feature's getters/setters functions and kGetters, kSetters, - // kCpuInfoFlags and kHardwareCapabilities global tables. - #define DEFINE_TABLE_FEATURES \ -@@ -79,6 +104,8 @@ - #define DEFINE_TABLE_FEATURE_TYPE Aarch64Features - #include "define_tables.h" - -+#if !defined(CPU_FEATURES_OS_DARWIN) -+ - static bool HandleAarch64Line(const LineResult result, - Aarch64Info* const info) { - StringView line = result.line; -@@ -116,6 +143,8 @@ - } - } - -+#endif /* !CPU_FEATURES_OS_DARWIN */ -+ - static const Aarch64Info kEmptyAarch64Info; - - Aarch64Info GetAarch64Info(void) { -@@ -124,6 +153,24 @@ - // /proc/cpuinfo). - Aarch64Info info = kEmptyAarch64Info; - -+#if defined(CPU_FEATURES_OS_DARWIN) -+ -+ // Handling Darwin platform through sysctlbyname -+ info.implementer = GetDarwinSysCtlByNameValue("hw.cputype"); -+ info.variant = GetDarwinSysCtlByNameValue("hw.cpusubtype"); -+ info.part = GetDarwinSysCtlByNameValue("hw.cpufamily"); -+ info.revision = GetDarwinSysCtlByNameValue("hw.cpusubfamily"); -+ -+ info.features.fp = GetDarwinSysCtlByName("hw.optional.floatingpoint"); -+ info.features.fphp = GetDarwinSysCtlByName("hw.optional.neon_hpfp"); -+ info.features.sha512 = GetDarwinSysCtlByName("hw.optional.armv8_2_sha512"); -+ info.features.atomics = GetDarwinSysCtlByName("hw.optional.armv8_1_atomics"); -+ info.features.asimdfhm = GetDarwinSysCtlByName("hw.optional.armv8_2_fhm"); -+ info.features.sha3 = GetDarwinSysCtlByName("hw.optional.armv8_2_sha3"); -+ info.features.crc32 = GetDarwinSysCtlByName("hw.optional.armv8_crc32"); -+ -+#else -+ - FillProcCpuInfoData(&info); - const HardwareCapabilities hwcaps = CpuFeatures_GetHardwareCapabilities(); - for (size_t i = 0; i < AARCH64_LAST_; ++i) { -@@ -132,6 +179,8 @@ - } - } - -+#endif -+ - return info; - } - ---- cpu_features/test/CMakeLists.txt.orig -+++ cpu_features/test/CMakeLists.txt -@@ -66,6 +66,10 @@ - ## cpuinfo_aarch64_test - if(PROCESSOR_IS_AARCH64) - add_executable(cpuinfo_aarch64_test cpuinfo_aarch64_test.cc ../src/cpuinfo_aarch64.c) -+ if(APPLE) -+ target_compile_definitions(cpuinfo_aarch64_test PUBLIC CPU_FEATURES_MOCK_CPUID_ARM64) -+ target_compile_definitions(cpuinfo_aarch64_test PRIVATE HAVE_SYSCTLBYNAME) -+ endif() - target_link_libraries(cpuinfo_aarch64_test all_libraries) - add_test(NAME cpuinfo_aarch64_test COMMAND cpuinfo_aarch64_test) - endif() ---- cpu_features/test/cpuinfo_aarch64_test.cc.orig -+++ cpu_features/test/cpuinfo_aarch64_test.cc -@@ -21,6 +21,116 @@ - namespace cpu_features { - namespace { - -+#if defined(CPU_FEATURES_OS_DARWIN) -+ -+class FakeCpu { -+ public: -+ bool GetDarwinSysCtlByName(std::string name) const { -+ return darwin_sysctlbyname_.count(name); -+ } -+ -+ int GetDarwinSysCtlByNameValue(std::string name) const { -+ std::map::const_iterator iter = -+ darwin_sysctlbynamevalue_.find(name); -+ if (iter != std::end(darwin_sysctlbynamevalue_)) { -+ return iter->second; -+ } -+ -+ return 0; -+ } -+ -+ void SetDarwinSysCtlByName(std::string name) { -+ darwin_sysctlbyname_.insert(name); -+ } -+ -+ void SetDarwinSysCtlByNameValue(std::string name, int value) { -+ darwin_sysctlbynamevalue_[name] = value; -+ } -+ -+ private: -+ std::set darwin_sysctlbyname_; -+ std::map darwin_sysctlbynamevalue_; -+}; -+ -+FakeCpu* g_fake_cpu = nullptr; -+ -+extern "C" bool GetDarwinSysCtlByName(const char* name) { -+ return g_fake_cpu->GetDarwinSysCtlByName(name); -+} -+ -+extern "C" int GetDarwinSysCtlByNameValue(const char* name) { -+ return g_fake_cpu->GetDarwinSysCtlByNameValue(name); -+} -+ -+class CpuinfoAarch64Test : public ::testing::Test { -+ protected: -+ void SetUp() override { g_fake_cpu = new FakeCpu(); } -+ void TearDown() override { delete g_fake_cpu; } -+}; -+ -+TEST_F(CpuinfoAarch64Test, FromDarwinSysctlFromName) { -+ g_fake_cpu->SetDarwinSysCtlByName("hw.optional.floatingpoint"); -+ g_fake_cpu->SetDarwinSysCtlByName("hw.optional.neon"); -+ g_fake_cpu->SetDarwinSysCtlByName("hw.optional.neon_hpfp"); -+ g_fake_cpu->SetDarwinSysCtlByName("hw.optional.neon_fp16"); -+ g_fake_cpu->SetDarwinSysCtlByName("hw.optional.armv8_1_atomics"); -+ g_fake_cpu->SetDarwinSysCtlByName("hw.optional.armv8_crc32"); -+ g_fake_cpu->SetDarwinSysCtlByName("hw.optional.armv8_2_fhm"); -+ g_fake_cpu->SetDarwinSysCtlByName("hw.optional.armv8_2_sha512"); -+ g_fake_cpu->SetDarwinSysCtlByName("hw.optional.armv8_2_sha3"); -+ g_fake_cpu->SetDarwinSysCtlByName("hw.optional.amx_version"); -+ g_fake_cpu->SetDarwinSysCtlByName("hw.optional.ucnormal_mem"); -+ g_fake_cpu->SetDarwinSysCtlByName("hw.optional.arm64"); -+ -+ g_fake_cpu->SetDarwinSysCtlByNameValue("hw.cputype", 16777228); -+ g_fake_cpu->SetDarwinSysCtlByNameValue("hw.cpusubtype", 2); -+ g_fake_cpu->SetDarwinSysCtlByNameValue("hw.cpu64bit", 1); -+ g_fake_cpu->SetDarwinSysCtlByNameValue("hw.cpufamily", 458787763); -+ g_fake_cpu->SetDarwinSysCtlByNameValue("hw.cpusubfamily", 2); -+ -+ const auto info = GetAarch64Info(); -+ -+ EXPECT_EQ(info.implementer, 0x100000C); -+ EXPECT_EQ(info.variant, 2); -+ EXPECT_EQ(info.part, 0x1B588BB3); -+ EXPECT_EQ(info.revision, 2); -+ -+ EXPECT_TRUE(info.features.fp); -+ EXPECT_FALSE(info.features.asimd); -+ EXPECT_FALSE(info.features.evtstrm); -+ EXPECT_FALSE(info.features.aes); -+ EXPECT_FALSE(info.features.pmull); -+ EXPECT_FALSE(info.features.sha1); -+ EXPECT_FALSE(info.features.sha2); -+ EXPECT_TRUE(info.features.crc32); -+ EXPECT_TRUE(info.features.atomics); -+ EXPECT_TRUE(info.features.fphp); -+ EXPECT_FALSE(info.features.asimdhp); -+ EXPECT_FALSE(info.features.cpuid); -+ EXPECT_FALSE(info.features.asimdrdm); -+ EXPECT_FALSE(info.features.jscvt); -+ EXPECT_FALSE(info.features.fcma); -+ EXPECT_FALSE(info.features.lrcpc); -+ EXPECT_FALSE(info.features.dcpop); -+ EXPECT_TRUE(info.features.sha3); -+ EXPECT_FALSE(info.features.sm3); -+ EXPECT_FALSE(info.features.sm4); -+ EXPECT_FALSE(info.features.asimddp); -+ EXPECT_TRUE(info.features.sha512); -+ EXPECT_FALSE(info.features.sve); -+ EXPECT_TRUE(info.features.asimdfhm); -+ EXPECT_FALSE(info.features.dit); -+ EXPECT_FALSE(info.features.uscat); -+ EXPECT_FALSE(info.features.ilrcpc); -+ EXPECT_FALSE(info.features.flagm); -+ EXPECT_FALSE(info.features.ssbs); -+ EXPECT_FALSE(info.features.sb); -+ EXPECT_FALSE(info.features.paca); -+ EXPECT_FALSE(info.features.pacg); -+} -+ -+#else -+ - void DisableHardwareCapabilities() { SetHardwareCapabilities(0, 0); } - - TEST(CpuinfoAarch64Test, FromHardwareCap) { -@@ -167,5 +277,7 @@ - EXPECT_FALSE(info.features.bti); - } - -+#endif -+ - } // namespace - } // namespace cpu_features