libx264 fails to build on a raspberry pi2
Mark Millard
markmi at dsl-only.net
Sat Oct 15 06:55:25 UTC 2016
On 2016-Oct-14, at 9:50 AM, Bernd Walter <ticso at cicely7.cicely.de> wrote:
> This seems to be a new problem, as I've installed the port before
> on another Pi2 System (11-RC1):
> libx264-0.144.2533_1 H.264/MPEG-4 AVC Video Encoding (Library)
>
> System is the official FreeBSD 11-RELEASE image for Pi2.
> FreeBSD rpi2 11.0-RELEASE-p1 FreeBSD 11.0-RELEASE-p1 #0 r306420: Thu Sep 29 13:01:42 UTC 2016 root at releng2.nyi.freebsd.org:/usr/obj/arm.armv6/usr/src/sys/RPI2 arm
>
> [61]cicely1# svn info /usr/ports/multimedia/libx264
> Path: multimedia/libx264
> Working Copy Root Path: /usr/ports
> URL: file:///data/freebsd-svn/ports/head/multimedia/libx264
> Relative URL: ^/head/multimedia/libx264
> Repository Root: file:///data/freebsd-svn/ports
> Repository UUID: 35697150-7ecd-e111-bb59-0022644237b5
> Revision: 423971
> Node Kind: directory
> Schedule: normal
> Last Changed Author: jbeich
> Last Changed Rev: 422675
> Last Changed Date: 2016-09-23 15:15:06 +0200 (Fri, 23 Sep 2016)
>
> ...
> cc -Wshadow -O3 -ffast-math -O -pipe -isystem /usr/local/include -fno-strict-aliasing -mcpu=arm1136jf-s -Wall -I. -I. -isystem /usr/local/include -O -pipe -isystem /usr/local/include -fno-strict-aliasing -mcpu=arm1136jf-s -std=gnu99 -D_GNU_SOURCE -fPIC -fomit-frame-pointer -fno-tree-vectorize -isystem /usr/local/include -c -o encoder/encoder.o encoder/encoder.c
Above (and later below) -mcpu=arm1136jf-s is odd for an rpi2b. Is "36jf" right for any raspberry pi version? "76jzf" I'm aware of for older rpi's (if I remember right).
-mcpu=cortex-a7 would match an rpi2b as I understand.
For rpi2b I by default use:
# more /etc/make.conf
DEFAULT_VERSIONS+=perl5=5.22
WRKDIRPREFIX=/usr/obj/portswork
WITH_DEBUG=
WITH_DEBUG_FILES=
MALLOC_PRODUCTION=
CFLAGS+= -mcpu=cortex-a7
CXXFLAGS+= -mcpu=cortex-a7
CPPFLAGS+= -mcpu=cortex-a7
(and similarly for buildworld and buildkernel as well, not just ports).
But figuring out why -mcpu=arm1136jf-s is in use for your rpi2b targeted build would seem to be a direction to go for what you were building.
> cc -Wshadow -O3 -ffast-math -O -pipe -isystem /usr/local/include -fno-strict-aliasing -mcpu=arm1136jf-s -Wall -I. -I. -isystem /usr/local/include -O -pipe -isystem /usr/local/include -fno-strict-aliasing -mcpu=arm1136jf-s -std=gnu99 -D_GNU_SOURCE -fPIC -fomit-frame-pointer -fno-tree-vectorize -isystem /usr/local/include -c -o encoder/lookahead.o encoder/lookahead.c
> cc -Wshadow -O3 -ffast-math -O -pipe -isystem /usr/local/include -fno-strict-aliasing -mcpu=arm1136jf-s -Wall -I. -I. -isystem /usr/local/include -O -pipe -isystem /usr/local/include -fno-strict-aliasing -mcpu=arm1136jf-s -std=gnu99 -D_GNU_SOURCE -fPIC -fomit-frame-pointer -fno-tree-vectorize -isystem /usr/local/include -c -o common/threadpool.o common/threadpool.c
> cc -Wshadow -O3 -ffast-math -O -pipe -isystem /usr/local/include -fno-strict-aliasing -mcpu=arm1136jf-s -Wall -I. -I. -isystem /usr/local/include -O -pipe -isystem /usr/local/include -fno-strict-aliasing -mcpu=arm1136jf-s -std=gnu99 -D_GNU_SOURCE -fPIC -fomit-frame-pointer -fno-tree-vectorize -isystem /usr/local/include -c -o common/arm/mc-c.o common/arm/mc-c.c
> cc -Wshadow -O3 -ffast-math -O -pipe -isystem /usr/local/include -fno-strict-aliasing -mcpu=arm1136jf-s -Wall -I. -I. -isystem /usr/local/include -O -pipe -isystem /usr/local/include -fno-strict-aliasing -mcpu=arm1136jf-s -std=gnu99 -D_GNU_SOURCE -fPIC -fomit-frame-pointer -fno-tree-vectorize -isystem /usr/local/include -c -o common/arm/predict-c.o common/arm/predict-c.c
> cc -Wshadow -O3 -ffast-math -O -pipe -isystem /usr/local/include -fno-strict-aliasing -mcpu=arm1136jf-s -Wall -I. -I. -isystem /usr/local/include -O -pipe -isystem /usr/local/include -fno-strict-aliasing -mcpu=arm1136jf-s -std=gnu99 -D_GNU_SOURCE -fPIC -fomit-frame-pointer -fno-tree-vectorize -isystem /usr/local/include -c -o common/opencl.o common/opencl.c
> cc -Wshadow -O3 -ffast-math -O -pipe -isystem /usr/local/include -fno-strict-aliasing -mcpu=arm1136jf-s -Wall -I. -I. -isystem /usr/local/include -O -pipe -isystem /usr/local/include -fno-strict-aliasing -mcpu=arm1136jf-s -std=gnu99 -D_GNU_SOURCE -fPIC -fomit-frame-pointer -fno-tree-vectorize -isystem /usr/local/include -c -o encoder/slicetype-cl.o encoder/slicetype-cl.c
> cc -I. -I. -c -DSTACK_ALIGNMENT=4 -DPIC -DHIGH_BIT_DEPTH=0 -DBIT_DEPTH=8 -o common/arm/cpu-a.o common/arm/cpu-a.S
> cc -I. -I. -c -DSTACK_ALIGNMENT=4 -DPIC -DHIGH_BIT_DEPTH=0 -DBIT_DEPTH=8 -o common/arm/pixel-a.o common/arm/pixel-a.S
> cc -I. -I. -c -DSTACK_ALIGNMENT=4 -DPIC -DHIGH_BIT_DEPTH=0 -DBIT_DEPTH=8 -o common/arm/mc-a.o common/arm/mc-a.S
> cc -I. -I. -c -DSTACK_ALIGNMENT=4 -DPIC -DHIGH_BIT_DEPTH=0 -DBIT_DEPTH=8 -o common/arm/dct-a.o common/arm/dct-a.S
> cc -I. -I. -c -DSTACK_ALIGNMENT=4 -DPIC -DHIGH_BIT_DEPTH=0 -DBIT_DEPTH=8 -o common/arm/quant-a.o common/arm/quant-a.S
> <instantiation>:29:5: error: instruction requires: armv6t2
> rbit r1, r1
> ^
> common/arm/quant-a.S:362:1: note: while in macro instantiation
> decimate_score_1x 15
> ^
> <instantiation>:29:5: error: instruction requires: armv6t2
> rbit r1, r1
> ^
> /tmp/quant-a-6e019c.s:515:1: note: while in macro instantiation
> decimate_score_1x 16
> ^
Whatever caused the -mcpu=arm1136jf-s usage earlier above might also cause misclassification here as well, so it is not even targeting an armv6t2 (armv6 with Thumb-2 if I understand right), much less a armv-7a (march)? "ARM1136 does not support Neon or Thumb-2 instructions from the Cortex-A series": see https://www.arm.com/products/processors/classic/arm11/arm1136.php ).
> cc -I. -I. -c -DSTACK_ALIGNMENT=4 -DPIC -DHIGH_BIT_DEPTH=0 -DBIT_DEPTH=8 -o common/arm/deblock-a.o common/arm/deblock-a.S
> gmake[4]: *** [Makefile:217: common/arm/quant-a.o] Error 1
> gmake[4]: *** Waiting for unfinished jobs....
> gmake[4]: Leaving directory '/usr/obj/usr/ports/multimedia/libx264/work/x264-snapshot-20160921-2245-stable'
> ===> Compilation failed unexpectedly.
> Try to set MAKE_JOBS_UNSAFE=yes and rebuild before reporting the failure to
> the maintainer.
> *** Error code 1
>
> Stop.
> make[3]: stopped in /usr/ports/multimedia/libx264
> *** Error code 1
>
> Stop.
> make[2]: stopped in /usr/ports/multimedia/libx264
> *** Error code 1
>
> Stop.
> make[1]: stopped in /usr/ports/multimedia/ffmpeg
> *** Error code 1
>
> Stop.
> make: stopped in /usr/ports/multimedia/ffmpeg
> 377.491u 24.840s 2:59.62 223.9% 47346+407k 1+72io 17pf+0w
> Exit 1
>
> --
> B.Walter <bernd at bwct.de> http://www.bwct.de
> Modbus/TCP Ethernet I/O Baugruppen, ARM basierte FreeBSD Rechner uvm.
===
Mark Millard
markmi at dsl-only.net
More information about the freebsd-arm
mailing list