env:
- BTYPE="BINARY=32 FC=gfortran-8"
+ - <<: *test-macos
+ osx_image: xcode10.1
+ env:
+ - COMMON_FLAGS="NUM_THREADS=32"
+ - CC="/Applications/Xcode-10.1.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -isysroot /Applications/Xcode-10.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.1.sdk"
+ - CFLAGS="-O2 -isysroot /Applications/Xcode-10.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.1.sdk -arch arm64 -miphoneos-version-min=10.0"
+ - BTYPE="TARGET=ARMV8 BINARY=64 HOSTCC=clang"
+
# whitelist
branches:
only:
$cross = 1 if ($os ne $hostos);
+# rework cross suffix and architecture if we are on OSX cross-compiling for ARMV8-based IOS
+# the initial autodetection will have been confused by the command-line arguments to clang
+# and the cross-compiler apparently still claims to build for x86_64 in its CC -E output
+if (($os eq "Darwin") && ($cross_suffix ne "")) {
+ my $tmpnam = `xcrun --sdk iphoneos --find clang`;
+ $cross_suffix = substr($tmpnam, 0, rindex($tmpnam, "/")+1 );
+# this should produce something like $cross_suffix="/Applications/Xcode-10.1.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/";
+ $cross =1;
+ $architecture = arm64;
+}
+
+
+
$openmp = "" if $ENV{USE_OPENMP} != 1;
$linker_L = "";
.text ;
.p2align 2 ;
.global REALNAME ;
+#ifndef __APPLE__
.type REALNAME, %function ;
+#endif
REALNAME:
.endm
/*********************************************************************/
#include "common.h"
+#if (defined OS_LINUX || defined OS_ANDROID)
#include <asm/hwcap.h>
#include <sys/auxv.h>
+#endif
extern gotoblas_t gotoblas_ARMV8;
extern gotoblas_t gotoblas_CORTEXA57;
static gotoblas_t *get_coretype(void) {
int implementer, variant, part, arch, revision, midr_el1;
-
+
+#if (defined OS_LINUX || defined OS_ANDROID)
if (!(getauxval(AT_HWCAP) & HWCAP_CPUID)) {
char coremsg[128];
snprintf(coremsg, 128, "Kernel lacks cpuid feature support. Auto detection of core type failed !!!\n");
openblas_warning(1, coremsg);
return NULL;
}
+#else
+ return NULL;
+#endif
get_cpu_ftr(MIDR_EL1, midr_el1);
/*