Date: Sun, 9 Feb 2020 17:20:06 +0000 (UTC) From: Piotr Kubaj <pkubaj@FreeBSD.org> To: ports-committers@freebsd.org, svn-ports-all@freebsd.org, svn-ports-head@freebsd.org Subject: svn commit: r525666 - head/devel/pecl-grpc/files Message-ID: <202002091720.019HK6qR095296@repo.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: pkubaj Date: Sun Feb 9 17:20:05 2020 New Revision: 525666 URL: https://svnweb.freebsd.org/changeset/ports/525666 Log: devel/pecl-grpc: fix build on powerpc64 elfv2 Clang doesn't have sys/platform/ppc.h: /wrkdirs/usr/ports/devel/pecl-grpc/work-php74/grpc-1.27.0/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.cc:24:10: fatal error: 'sys/platform/ppc.h' file not found #include <sys/platform/ppc.h> ^~~~~~~~~~~~~~~~~~~~ 1 error generated. __ppc_get_timebase() and __ppc_get_timebase_freq() are not supported on FreeBSD. PR: 243995 Approved by: vanilla (maintainer) Added: head/devel/pecl-grpc/files/patch-third__party_abseil-cpp_absl_base_internal_unscaledcycleclock.cc (contents, props changed) Added: head/devel/pecl-grpc/files/patch-third__party_abseil-cpp_absl_base_internal_unscaledcycleclock.cc ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/devel/pecl-grpc/files/patch-third__party_abseil-cpp_absl_base_internal_unscaledcycleclock.cc Sun Feb 9 17:20:05 2020 (r525666) @@ -0,0 +1,55 @@ +--- third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.cc.orig 2020-02-04 17:37:57 UTC ++++ third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.cc +@@ -20,10 +20,16 @@ + #include <intrin.h> + #endif + +-#if defined(__powerpc__) || defined(__ppc__) ++#if (defined(__powerpc__) || defined(__ppc__)) && !defined(__clang__) + #include <sys/platform/ppc.h> ++ + #endif + ++#if (defined(__powerpc__) || defined(__ppc__)) && defined(__clang__) && defined(__FreeBSD__) ++#include <sys/types.h> ++#include <sys/sysctl.h> ++#endif ++ + #include "absl/base/internal/sysinfo.h" + + namespace absl { +@@ -57,11 +62,34 @@ double UnscaledCycleClock::Frequency() { + #elif defined(__powerpc__) || defined(__ppc__) + + int64_t UnscaledCycleClock::Now() { ++#ifdef __GLIBC__ + return __ppc_get_timebase(); ++#elif defined(__FreeBSD__) ++ union { long long complete; unsigned int part[2]; } ticks; ++ unsigned int tmp; ++ asm volatile( ++ "0:\n" ++ "mftbu %[hi32]\n" ++ "mftb %[lo32]\n" ++ "mftbu %[tmp]\n" ++ "cmpw %[tmp],%[hi32]\n" ++ "bne 0b\n" ++ : [hi32] "=r"(ticks.part[0]), [lo32] "=r"(ticks.part[1]), ++ [tmp] "=r"(tmp) ++ ); ++ return ticks.complete; ++#endif + } + + double UnscaledCycleClock::Frequency() { ++#ifdef __GLIBC__ + return __ppc_get_timebase_freq(); ++#elif defined(__FreeBSD__) ++ double timebaseFrequency = 0; ++ size_t length = sizeof(timebaseFrequency); ++ sysctlbyname("kern.timecounter.tc.timebase.frequency", &timebaseFrequency, &length, NULL, 0); ++ return timebaseFrequency; ++#endif + } + + #elif defined(__aarch64__)
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202002091720.019HK6qR095296>