> Mark Millard <marklmi at yahoo.com> writes:
> 
> > For some reason security/nss tried to build "-march=armv8-a 
> > -mfpu=crypto-neon-fp-armv8 aes-armv8.c"
> > material when targeting armv7 (cortex-a7). This did not go well . . .
> 
> ARMv8 isn't limited to 64-bit mode. NSS 3.47 builds fine on 12.0 armv7, see
> http://www.ipv6proxy.net/go.php?u=http://beefy13.nyi.freebsd.org/data/120armv7-quarterly/515271/logs/nss-3.47.log
> 
> $ clang -target armv7-unknown-freebsd13.0-gnueabihf \
>   -march=armv8-a -mfpu=crypto-neon-fp-armv8 \
>   -dM -E -</dev/null | fgrep -i feature
> #define __ARM_FEATURE_CLZ 1
> #define __ARM_FEATURE_CRC32 1
> #define __ARM_FEATURE_CRYPTO 1   <-- Required by NSS
> #define __ARM_FEATURE_DIRECTED_ROUNDING 1
> #define __ARM_FEATURE_DSP 1
> #define __ARM_FEATURE_FMA 1
> #define __ARM_FEATURE_IDIV 1
> #define __ARM_FEATURE_LDREX 0xf
> #define __ARM_FEATURE_NUMERIC_MAXMIN 1
> #define __ARM_FEATURE_QBIT 1
> #define __ARM_FEATURE_SAT 1
> #define __ARM_FEATURE_SIMD32 1
> 
> > /nxb-bin/usr/bin/cc ... -O2 -pipe -mcpu=cortex-a7 ...
> > aes-armv8.c:13:2: error: "Compiler option is invalid"
> > #error "Compiler option is invalid"
> >  ^
> > aes-armv8.c:65:17: error: implicit declaration of function 'vaeseq_u8' is 
> > invalid in C99 [-Werror,-Wimplicit-function-declaration]
> >         state = vaeseq_u8(state, key1);
> >                 ^
> 
> -mcpu=cortex-a7 is not part of vendor CFLAGS. Did you define CPUTYPE or
> similar in make.conf(5) ?
> 

Sure enough, -mcpu=cortex-a7 removes:

#define __ARM_FEATURE_CRC32 1
#define __ARM_FEATURE_CRYPTO 1
#define __ARM_FEATURE_DIRECTED_ROUNDING 1
#define __ARM_FEATURE_NUMERIC_MAXMIN 1

As shown:

# clang -target armv7-unknown-freebsd13.0-gnueabihf -mcpu=cortex-a7 
-march=armv8-a -mfpu=crypto-neon-fp-armv8 -dM -E - < /dev/null | fgrep -i 
feature
#define __ARM_FEATURE_CLZ 1
#define __ARM_FEATURE_DSP 1
#define __ARM_FEATURE_FMA 1
#define __ARM_FEATURE_IDIV 1
#define __ARM_FEATURE_LDREX 0xf
#define __ARM_FEATURE_QBIT 1
#define __ARM_FEATURE_SAT 1
#define __ARM_FEATURE_SIMD32 1

(This was under the interactive stage of: poudriere bulk -jFBSDFSSDjailArmV7 -w 
-i ports-mgmt/pkg
used for cross building, just in case the context mattered.)

I did use (and have for some years):

# more /usr/local/etc/poudriere.d/FBSDFSSDjailArmV7-make.conf
CFLAGS+= -mcpu=cortex-a7
CXXFLAGS+= -mcpu=cortex-a7
CPPFLAGS+= -mcpu=cortex-a7

I also do such in /etc/make.conf on the actual cortex-a7
contexts that I have access to.

And my buildworld buildkernel cross-build context also does
such:

/root/src.configs/src.conf.armv7-clang-bootstrap.aarch64-host:XCFLAGS+= 
-mcpu=cortex-a7
/root/src.configs/src.conf.armv7-clang-bootstrap.aarch64-host:XCXXFLAGS+= 
-mcpu=cortex-a7

(There is no XCPPFLAGS to set, last I checked.)

I've done such specific matching for low end machines
historically. (And for armv7, I only deal with cortex-a7
contexts.)

If disallowing such specific targeting is to happen, then
I'll have to figure out what I'm going to do. The security/nss
is involved indirectly, not because I've directly tried to
use it. So its failure under my contextual oddities blocks
other things in my context.


===
Mark Millard
marklmi at yahoo.com
( dsl-only.net went
away in early 2018-Mar)

_______________________________________________
freebsd-ports@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/freebsd-ports
To unsubscribe, send any mail to "freebsd-ports-unsubscr...@freebsd.org"

Reply via email to