Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 4 Dec 2018 00:51:30 +0000 (UTC)
From:      Jan Beich <jbeich@FreeBSD.org>
To:        ports-committers@freebsd.org, svn-ports-all@freebsd.org, svn-ports-head@freebsd.org
Subject:   svn commit: r486564 - in head/multimedia: aom/files libvpx/files
Message-ID:  <201812040051.wB40pUTY034777@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: jbeich
Date: Tue Dec  4 00:51:30 2018
New Revision: 486564
URL: https://svnweb.freebsd.org/changeset/ports/486564

Log:
  multimedia/libvpx: simplify NEON/VSX detection on FreeBSD 12

Modified:
  head/multimedia/aom/files/patch-aom__ports_arm__cpudetect.c   (contents, props changed)
  head/multimedia/aom/files/patch-aom__ports_ppc__cpudetect.c   (contents, props changed)
  head/multimedia/libvpx/files/patch-vpx__ports_arm__cpudetect.c   (contents, props changed)
  head/multimedia/libvpx/files/patch-vpx__ports_ppc__cpudetect.c   (contents, props changed)

Modified: head/multimedia/aom/files/patch-aom__ports_arm__cpudetect.c
==============================================================================
--- head/multimedia/aom/files/patch-aom__ports_arm__cpudetect.c	Tue Dec  4 00:51:15 2018	(r486563)
+++ head/multimedia/aom/files/patch-aom__ports_arm__cpudetect.c	Tue Dec  4 00:51:30 2018	(r486564)
@@ -12,16 +12,14 @@
  
  int aom_arm_cpu_caps(void) {
    /* This function should actually be a no-op. There is no way to adjust any of
-@@ -143,7 +143,61 @@ int aom_arm_cpu_caps(void) {
+@@ -143,7 +143,57 @@ int aom_arm_cpu_caps(void) {
    }
    return flags & mask;
  }
 -#else  /* end __linux__ */
 +#elif defined(__FreeBSD__)
 +
-+#if 0 // __has_include(<sys/auxv.h>)
-+#include <sys/auxv.h>
-+#else
++#if __FreeBSD__ < 12
 +#include <sys/param.h>
 +#include <sys/sysctl.h>
 +#include <elf.h>
@@ -47,31 +45,29 @@
 +  }
 +  return 0;
 +}
++#else
++#include <sys/auxv.h>
 +#endif
 +
-+#ifndef AT_HWCAP
-+#define AT_HWCAP 25 /* 16 on Linux */
-+#endif
-+
-+#ifndef HWCAP_NEON
-+#define HWCAP_NEON (1 << 12)
-+#endif
-+
 +int aom_arm_cpu_caps(void) {
 +  int flags;
 +  int mask;
-+  unsigned long hwcaps;
++  u_long hwcaps = 0;
 +  if (!arm_cpu_env_flags(&flags)) {
 +    return flags;
 +  }
 +  mask = arm_cpu_env_mask();
++#if __FreeBSD__ < 12
 +  hwcaps = getauxval(AT_HWCAP);
++#else
++  elf_aux_info(AT_HWCAP, &hwcaps, sizeof(hwcaps));
++#endif
 +#if HAVE_NEON
 +  if (hwcaps & HWCAP_NEON) flags |= HAS_NEON;
 +#endif
 +  return flags & mask;
 +}
-+#else /* end __FreeBSD__ */
++#else  /* end __FreeBSD__ */
  #error \
      "--enable-runtime-cpu-detect selected, but no CPU detection method " \
  "available for your platform. Reconfigure with --disable-runtime-cpu-detect."

Modified: head/multimedia/aom/files/patch-aom__ports_ppc__cpudetect.c
==============================================================================
--- head/multimedia/aom/files/patch-aom__ports_ppc__cpudetect.c	Tue Dec  4 00:51:15 2018	(r486563)
+++ head/multimedia/aom/files/patch-aom__ports_ppc__cpudetect.c	Tue Dec  4 00:51:30 2018	(r486564)
@@ -29,20 +29,23 @@
  int ppc_simd_caps(void) {
    int flags;
    int mask;
-@@ -75,6 +76,36 @@ out_close:
+@@ -75,6 +76,44 @@ out_close:
    close(fd);
    return flags & mask;
  }
 +#elif defined(__FreeBSD__)
++#if __FreeBSD__ < 12
 +#include <sys/types.h>
 +#include <sys/sysctl.h>
++#else
++#include <sys/auxv.h>
++#endif
 +#include <machine/cpu.h>
 +
 +int ppc_simd_caps(void) {
 +  int flags;
 +  int mask;
 +  u_long cpu_features = 0;
-+  size_t sz = sizeof(cpu_features);
 +
 +  // If AOM_SIMD_CAPS is set then allow only those capabilities.
 +  if (!cpu_env_flags(&flags)) {
@@ -51,7 +54,12 @@
 +
 +  mask = cpu_env_mask();
 +
++#if __FreeBSD__ < 12
++  size_t sz = sizeof(cpu_features);
 +  sysctlbyname("hw.cpu_features", &cpu_features, &sz, NULL, 0);
++#else
++  elf_aux_info(AT_HWCAP, &cpu_features, sizeof(cpu_features));
++#endif
 +#if HAVE_VSX
 +  if (cpu_features & PPC_FEATURE_HAS_VSX) flags |= HAS_VSX;
 +#endif

Modified: head/multimedia/libvpx/files/patch-vpx__ports_arm__cpudetect.c
==============================================================================
--- head/multimedia/libvpx/files/patch-vpx__ports_arm__cpudetect.c	Tue Dec  4 00:51:15 2018	(r486563)
+++ head/multimedia/libvpx/files/patch-vpx__ports_arm__cpudetect.c	Tue Dec  4 00:51:30 2018	(r486564)
@@ -1,14 +1,13 @@
 --- vpx_ports/arm_cpudetect.c.orig	2017-01-12 20:27:27 UTC
 +++ vpx_ports/arm_cpudetect.c
-@@ -147,6 +147,60 @@ int arm_cpu_caps(void) {
+@@ -147,7 +147,57 @@ int arm_cpu_caps(void) {
    }
    return flags & mask;
  }
+-#else  /* end __linux__ */
 +#elif defined(__FreeBSD__)
 +
-+#if 0 // __has_include(<sys/auxv.h>)
-+#include <sys/auxv.h>
-+#else
++#if __FreeBSD__ < 12
 +#include <sys/param.h>
 +#include <sys/sysctl.h>
 +#include <elf.h>
@@ -34,30 +33,29 @@
 +  }
 +  return 0;
 +}
++#else
++#include <sys/auxv.h>
 +#endif
 +
-+#ifndef AT_HWCAP
-+#define AT_HWCAP 25 /* 16 on Linux */
-+#endif
-+
-+#ifndef HWCAP_NEON
-+#define HWCAP_NEON (1 << 12)
-+#endif
-+
 +int arm_cpu_caps(void) {
 +  int flags;
 +  int mask;
-+  unsigned long hwcaps;
++  u_long hwcaps = 0;
 +  if (!arm_cpu_env_flags(&flags)) {
 +    return flags;
 +  }
 +  mask = arm_cpu_env_mask();
++#if __FreeBSD__ < 12
 +  hwcaps = getauxval(AT_HWCAP);
++#else
++  elf_aux_info(AT_HWCAP, &hwcaps, sizeof(hwcaps));
++#endif
 +#if HAVE_NEON || HAVE_NEON_ASM
 +  if (hwcaps & HWCAP_NEON) flags |= HAS_NEON;
 +#endif
 +  return flags & mask;
 +}
- #else  /* end __linux__ */
++#else  /* end __FreeBSD__ */
  #error \
      "--enable-runtime-cpu-detect selected, but no CPU detection method " \
+ "available for your platform. Reconfigure with --disable-runtime-cpu-detect."

Modified: head/multimedia/libvpx/files/patch-vpx__ports_ppc__cpudetect.c
==============================================================================
--- head/multimedia/libvpx/files/patch-vpx__ports_ppc__cpudetect.c	Tue Dec  4 00:51:15 2018	(r486563)
+++ head/multimedia/libvpx/files/patch-vpx__ports_ppc__cpudetect.c	Tue Dec  4 00:51:30 2018	(r486564)
@@ -27,20 +27,23 @@
  int ppc_simd_caps(void) {
    int flags;
    int mask;
-@@ -73,6 +74,36 @@ out_close:
+@@ -73,6 +74,44 @@ out_close:
    close(fd);
    return flags & mask;
  }
 +#elif defined(__FreeBSD__)
++#if __FreeBSD__ < 12
 +#include <sys/types.h>
 +#include <sys/sysctl.h>
++#else
++#include <sys/auxv.h>
++#endif
 +#include <machine/cpu.h>
 +
 +int ppc_simd_caps(void) {
 +  int flags;
 +  int mask;
 +  u_long cpu_features = 0;
-+  size_t sz = sizeof(cpu_features);
 +
 +  // If VPX_SIMD_CAPS is set then allow only those capabilities.
 +  if (!cpu_env_flags(&flags)) {
@@ -49,7 +52,12 @@
 +
 +  mask = cpu_env_mask();
 +
++#if __FreeBSD__ < 12
++  size_t sz = sizeof(cpu_features);
 +  sysctlbyname("hw.cpu_features", &cpu_features, &sz, NULL, 0);
++#else
++  elf_aux_info(AT_HWCAP, &cpu_features, sizeof(cpu_features));
++#endif
 +#if HAVE_VSX
 +  if (cpu_features & PPC_FEATURE_HAS_VSX) flags |= HAS_VSX;
 +#endif
@@ -60,7 +68,7 @@
 +#error \
 +    "--enable-runtime-cpu-detect selected, but no CPU detection method " \
 +"available for your platform. Reconfigure with --disable-runtime-cpu-detect."
-+#endif   /* end __linux__ */
++#endif   /* end __FreeBSD__ */
  #else
  // If there is no RTCD the function pointers are not used and can not be
  // changed.



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201812040051.wB40pUTY034777>