svn commit: r510083 - in head/devel/abseil: . files

Piotr Kubaj pkubaj at FreeBSD.org
Wed Aug 28 17:15:46 UTC 2019


Author: pkubaj
Date: Wed Aug 28 17:15:45 2019
New Revision: 510083
URL: https://svnweb.freebsd.org/changeset/ports/510083

Log:
  devel/abseil: fix build on powerpc*
  
  Implement logic for querying TBR and TBR frequency to fix build.
  
  PR:		239423
  Approved by:	danfe (maintainer), tcberner (mentor)
  Differential Revision:	https://reviews.freebsd.org/D21430

Added:
  head/devel/abseil/files/
  head/devel/abseil/files/patch-absl_base_internal_unscaledcycleclock.cc   (contents, props changed)
Modified:
  head/devel/abseil/Makefile

Modified: head/devel/abseil/Makefile
==============================================================================
--- head/devel/abseil/Makefile	Wed Aug 28 17:07:37 2019	(r510082)
+++ head/devel/abseil/Makefile	Wed Aug 28 17:15:45 2019	(r510083)
@@ -11,8 +11,6 @@ COMMENT=	Abseil Common Libraries (C++)
 
 LICENSE=	APACHE20
 
-BROKEN_powerpc=	fatal error: sys/platform/ppc.h: No such file or directory
-
 USES=		cmake compiler:c++11-lang
 USE_GITHUB=	yes
 GH_PROJECT=	${PORTNAME}-cpp

Added: head/devel/abseil/files/patch-absl_base_internal_unscaledcycleclock.cc
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/devel/abseil/files/patch-absl_base_internal_unscaledcycleclock.cc	Wed Aug 28 17:15:45 2019	(r510083)
@@ -0,0 +1,54 @@
+--- absl/base/internal/unscaledcycleclock.cc.orig	2019-07-24 12:47:23 UTC
++++ absl/base/internal/unscaledcycleclock.cc
+@@ -20,10 +20,15 @@
+ #include <intrin.h>
+ #endif
+ 
+-#if defined(__powerpc__) || defined(__ppc__)
++#if (defined(__powerpc__) || defined(__ppc__)) && !defined(__FreeBSD__)
+ #include <sys/platform/ppc.h>
+ #endif
+ 
++#ifdef __FreeBSD__
++#include <sys/types.h>
++#include <sys/sysctl.h>
++#endif
++
+ #include "absl/base/internal/sysinfo.h"
+ 
+ namespace absl {
+@@ -56,11 +61,34 @@ double UnscaledCycleClock::Frequency() {
+ #elif defined(__powerpc__) || defined(__ppc__)
+ 
+ int64_t UnscaledCycleClock::Now() {
++#ifndef __FreeBSD__
+   return __ppc_get_timebase();
++#else
++  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() {
++#ifndef __FreeBSD__
+   return __ppc_get_timebase_freq();
++#else
++  long timebaseFrequency = 0;
++  size_t length = sizeof(timebaseFrequency);
++  sysctlbyname("kern.timecounter.tc.timebase.frequency", &timebaseFrequency, &length, NULL, 0);
++  return timebaseFrequency;
++#endif
+ }
+ 
+ #elif defined(__aarch64__)


More information about the svn-ports-head mailing list