blob: 56c7add69b580efa9e96c61eed66fc39750287a6 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
|
four things will affect general binary compatibility:
CPU architecture (microprocessor ISAs, co-processors, byte order, ABIs, ...)
initial options:
cortexa8 (any SoC with an ARM Cortex-A8 core)
ISAs: ARMv7-A, Thumb, Thumb-2, NEON SIMD
byte order: little-endian
ABI: GNU EABI
floating-point ABI: hardware
CFLAGS: -O3 -fsingle-precision-constant
GCC configure options: --with-arch=armv7-a \
--with-cpu=cortex-a8 --with-tune=cortex-a8 \
--with-mode=thumb --with-fpu=neon --with-float=hard
planned future options:
i486 (any CPU with Intel 80486 microarchitecture)
i586 (any CPU with Intel P5 microarchitecture)
i686 (any CPU with Intel P6 or any successive microarchitecture)
amd64 (any CPU with AMD64 or Intel 64 architecture)
other ARM cores
mips*
powerpc*
kernel
initial options:
linux
different hardware targets will be built with different configs
planned future options:
kfreebsd
knetbsd
system libraries
initial options:
eglibc
portable C/C++ library: works with almost any kernel
optimized for speed rather than for space (big and fast)
planned future options:
uclibc
different configurations of uClibc can be ABI-incompatible
only works with Linux
optimized for space rather than for speed (small and slow)
example architecture string:
cortexa8-linux-eglibc
GCC package build system:
include architecture mk file, which set architecture-specific configure opts
opkhelper build flags system:
read CFLAGS et al from e.g. <file:///usr/share/opkhelper/buildflags/${arch}>
|