03c98557b543de5434173fb7763b0890f79bfef8
[feed/packages.git] / multimedia / ffmpeg / Makefile
1 #
2 # Copyright (C) 2017-2020 Ian Leonard <antonlacon@gmail.com>
3 # Copyright (C) 2018 Ted Hess <thess@kitschensync.net>
4 #
5 # This is free software, licensed under the GNU General Public License v2.
6 # See /LICENSE for more information.
7 #
8
9 include $(TOPDIR)/rules.mk
10
11 PKG_NAME:=ffmpeg
12 PKG_VERSION:=4.3.3
13 PKG_RELEASE:=1
14
15 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
16 PKG_SOURCE_URL:=https://ffmpeg.org/releases/
17 PKG_HASH:=9f0a68fbd74feb4e50dc220bddd59d84626774a53687fb737806ae00e5c6e9e6
18 PKG_MAINTAINER:=Ted Hess <thess@kitschensync.net>, \
19 Ian Leonard <antonlacon@gmail.com>
20
21 PKG_LICENSE:=LGPL-2.1-or-later GPL-2.0-or-later LGPL-3.0-or-later
22 PKG_LICENSE_FILES:=COPYING.GPLv2 COPYING.GPLv3 COPYING.LGPLv2.1 COPYING.LGPLv3
23 PKG_CPE_ID:=cpe:/a:ffmpeg:ffmpeg
24
25 PKG_BUILD_PARALLEL:=1
26
27 FFMPEG_CUSTOM_ENCODERS:= \
28 ac3 \
29 jpegls \
30 mpeg1video \
31 mpeg2video \
32 mpeg4 \
33 pcm_s16be \
34 pcm_s16le \
35 png \
36 vorbis \
37 zlib \
38
39 FFMPEG_CUSTOM_DECODERS:= \
40 aac \
41 ac3 \
42 alac \
43 amrnb \
44 amrwb \
45 ape \
46 atrac3 \
47 flac \
48 gif \
49 h264 \
50 hevc \
51 jpegls \
52 mp2 \
53 mp3 \
54 mpeg1video \
55 mpeg2video \
56 mpeg4 \
57 mpegvideo \
58 mpc7 \
59 mpc8 \
60 pcm_s16be \
61 pcm_s16le \
62 png \
63 vc1 \
64 vorbis \
65 wavpack \
66 wmav1 \
67 wmav2 \
68 zlib \
69
70 FFMPEG_CUSTOM_MUXERS:= \
71 ac3 \
72 ffm \
73 h264 \
74 hevc \
75 mp3 \
76 mp4 \
77 mpeg1video \
78 mpeg2video \
79 mpegts \
80 ogg \
81 rtp \
82
83 FFMPEG_CUSTOM_DEMUXERS:= \
84 aac \
85 ac3 \
86 amr \
87 ape \
88 avi \
89 flac \
90 ffm \
91 h264 \
92 hevc \
93 matroska \
94 mov \
95 mp3 \
96 mpegps \
97 mpegts \
98 mpegvideo \
99 mpc \
100 mpc8 \
101 ogg \
102 rm \
103 rtsp \
104 rtp \
105 sdp \
106 v4l2 \
107 vc1 \
108 wav \
109 wv \
110
111 FFMPEG_CUSTOM_PARSERS:= \
112 aac \
113 flac \
114 ac3 \
115 h264 \
116 hevc \
117 mpegaudio \
118 mpeg4video \
119 mpegvideo \
120 vc1 \
121
122 FFMPEG_CUSTOM_PROTOCOLS:= \
123 file http icecast pipe rtp tcp udp
124
125 FFMPEG_MINI_DECODERS:= \
126 ac3 \
127 flac \
128 jpegls \
129 mp2 \
130 mp3 \
131 mpeg1video \
132 mpeg2video \
133 mpeg4 \
134 mpegvideo \
135 opus \
136 png \
137 vorbis \
138
139 FFMPEG_PATENTED_MINI_DECODERS:= \
140 h264 \
141 hevc \
142 vc1 \
143
144 FFMPEG_MINI_DEMUXERS:= \
145 avi \
146 flac \
147 matroska \
148 mov \
149 mp3 \
150 mpegps \
151 mpegts \
152 mpegvideo \
153 ogg \
154
155 FFMPEG_MINI_PROTOCOLS:= \
156 file
157
158 FFMPEG_AUDIO_DECODERS:= \
159 ac3 \
160 adpcm_* \
161 alac \
162 amrnb \
163 amrwb \
164 ape \
165 atrac3 \
166 flac \
167 mp2 \
168 mp3* \
169 mpc7 \
170 mpc8 \
171 opus \
172 pcm_* \
173 vorbis \
174 wavpack \
175 zlib \
176
177 FFMPEG_AUDIO_DEMUXERS:= \
178 ac3 \
179 aiff \
180 amr \
181 ape \
182 avi \
183 flac \
184 ffm \
185 matroska \
186 mp3 \
187 mov \
188 mpc \
189 mpc8 \
190 mpegts \
191 ogg \
192 rm \
193 rtsp \
194 rtp \
195 sdp \
196 wav \
197 wv \
198
199 FFMPEG_AUDIO_PROTOCOLS:= \
200 file http icecast rtp tcp udp
201
202 FFMPEG_PATENTED_DECODERS:= \
203 atrac3 \
204 h264 \
205 hevc \
206 vc1 \
207
208 FFMPEG_PATENTED_MUXERS:= \
209 h264 \
210 hevc \
211 vc1 \
212
213 FFMPEG_PATENTED_DEMUXERS:=$(FFMPEG_PATENTED_MUXERS)
214
215 FFMPEG_PATENTED_PARSERS:= \
216 h264 \
217 hevc \
218 vc1 \
219
220 PKG_CONFIG_DEPENDS:= \
221 $(patsubst %,CONFIG_FFMPEG_CUSTOM_ENCODER_%,$(FFMPEG_CUSTOM_ENCODERS)) \
222 $(patsubst %,CONFIG_FFMPEG_CUSTOM_DECODER_%,$(FFMPEG_CUSTOM_DECODERS)) \
223 $(patsubst %,CONFIG_FFMPEG_CUSTOM_MUXER_%,$(FFMPEG_CUSTOM_MUXERS)) \
224 $(patsubst %,CONFIG_FFMPEG_CUSTOM_DEMUXER_%,$(FFMPEG_CUSTOM_DEMUXERS)) \
225 $(patsubst %,CONFIG_FFMPEG_CUSTOM_PARSER_%,$(FFMPEG_CUSTOM_PARSERS)) \
226 $(patsubst %,CONFIG_FFMPEG_CUSTOM_PROTOCOL_%,$(FFMPEG_CUSTOM_PROTOCOLS))
227
228 include $(INCLUDE_DIR)/package.mk
229
230 define Package/ffmpeg/Default
231 TITLE:=FFmpeg
232 URL:=https://ffmpeg.org/
233 DEPENDS+= +libpthread
234 endef
235
236 define Package/ffmpeg/Default/description
237 FFmpeg is a a software package that can record, convert and stream digital
238 audio and video in numerous formats.
239
240 FFmpeg licensing / patent issues are complex. It is the reponsibility of the
241 user to understand any requirements in this regard with its usage. See:
242 https://ffmpeg.org/legal.html for further information.
243 endef
244
245
246 define Package/ffmpeg
247 $(call Package/ffmpeg/Default)
248 SECTION:=multimedia
249 CATEGORY:=Multimedia
250 TITLE+= program
251 DEPENDS+= +libffmpeg-full
252 VARIANT:=full
253 endef
254
255 define Package/ffmpeg-custom
256 $(call Package/ffmpeg/Default)
257 SECTION:=multimedia
258 CATEGORY:=Multimedia
259 TITLE+= program (custom)
260 DEPENDS+= @!ALL libffmpeg-custom
261 VARIANT:=custom
262 endef
263
264 define Package/ffmpeg/description
265 $(call Package/ffmpeg/Default/description)
266 .
267 This package contains the FFmpeg command line tool.
268 endef
269
270 Package/ffmpeg-custom/description = $(Package/ffmpeg/description)
271
272 define Package/ffprobe
273 $(call Package/ffmpeg/Default)
274 SECTION:=multimedia
275 CATEGORY:=Multimedia
276 TITLE+= CLI media identifier
277 DEPENDS+= +libffmpeg-full
278 VARIANT:=full
279 endef
280
281 define Package/ffprobe-custom
282 $(call Package/ffmpeg/Default)
283 SECTION:=multimedia
284 CATEGORY:=Multimedia
285 TITLE+= CLI media identifier (custom)
286 DEPENDS+= @!ALL libffmpeg-custom
287 VARIANT:=custom
288 endef
289
290 define Package/ffprobe/description
291 $(call Package/ffmpeg/Default/description)
292 .
293 This package contains the FFprobe command line tool.
294 endef
295
296 Package/ffprobe-custom/description = $(Package/ffprobe/description)
297
298 define Package/libffmpeg/Default
299 $(call Package/ffmpeg/Default)
300 SECTION:=libs
301 CATEGORY:=Libraries
302 TITLE+= libraries
303 DEPENDS+= +libpthread +zlib +libbz2
304 PROVIDES:= libffmpeg
305 endef
306
307
308 # Package build suppressed when CONFIG_ALL=y
309 define Package/libffmpeg-custom
310 $(call Package/libffmpeg/Default)
311 TITLE+= (custom)
312 DEPENDS+= @!ALL \
313 +FFMPEG_CUSTOM_SELECT_libopus:libopus \
314 +PACKAGE_libx264:libx264 +PACKAGE_lame-lib:lame-lib \
315 +FFMPEG_CUSTOM_SELECT_libshine:shine \
316 +PACKAGE_fdk-aac:fdk-aac
317 VARIANT:=custom
318 MENU:=1
319 endef
320
321 define Package/libffmpeg-custom/config
322 source "$(SOURCE)/Config.in"
323 endef
324
325 define Package/libffmpeg-custom/description
326 $(call Package/ffmpeg/Default/description)
327 .
328 This package contains customized FFmpeg shared libraries.
329 endef
330
331
332 define Package/libffmpeg-audio-dec
333 $(call Package/libffmpeg/Default)
334 TITLE+= (audio)
335 VARIANT:=audio-dec
336 endef
337
338 define Package/libffmpeg-audio-dec/description
339 $(call Package/ffmpeg/Default/description)
340 .
341 This package contains FFmpeg shared libraries for audio decoding
342 endef
343
344
345 define Package/libffmpeg-full
346 $(call Package/libffmpeg/Default)
347 TITLE+= (full)
348 DEPENDS+= +alsa-lib +libgnutls +PACKAGE_libopus:libopus \
349 +SOFT_FLOAT:shine \
350 +!SOFT_FLOAT:lame-lib \
351 +PACKAGE_libx264:libx264 \
352 +!PACKAGE_libx264:fdk-aac
353 VARIANT:=full
354 endef
355
356
357 define Package/libffmpeg-full/description
358 $(call Package/ffmpeg/Default/description)
359 .
360 This package contains full-featured FFmpeg shared libraries.
361 endef
362
363
364 define Package/libffmpeg-mini
365 $(call Package/libffmpeg/Default)
366 TITLE+= (mini)
367 VARIANT:=mini
368 endef
369
370 define Package/libffmpeg-mini/description
371 $(call Package/ffmpeg/Default/description)
372 .
373 This package contains minimal-featured FFmpeg shared libraries.
374 endef
375
376
377 # Strip off FPU notation
378 REAL_CPU_TYPE:=$(firstword $(subst +, ,$(CONFIG_CPU_TYPE)))
379 # Fixup cpu types recogized by ffmpeg configure
380 REAL_CPU_TYPE:=$(subst octeonplus,octeon+,$(REAL_CPU_TYPE))
381
382 FFMPEG_CONFIGURE:= \
383 CFLAGS="$(TARGET_CFLAGS) $(TARGET_CPPFLAGS) $(FPIC)" \
384 LDFLAGS="$(TARGET_LDFLAGS)" \
385 ./configure \
386 --enable-cross-compile \
387 --cross-prefix="$(TARGET_CROSS)" \
388 --arch="$(ARCH)" \
389 $(if $(REAL_CPU_TYPE),--cpu=$(call qstrip,$(REAL_CPU_TYPE)),) \
390 --target-os=linux \
391 --prefix="/usr" \
392 --pkg-config="pkg-config" \
393 --enable-shared \
394 --enable-static \
395 --enable-pthreads \
396 --enable-zlib \
397 --disable-doc \
398 --disable-debug \
399 \
400 --disable-lzma \
401 --disable-vaapi \
402 --disable-vdpau \
403 --disable-outdevs
404
405 ifeq ($(CONFIG_SOFT_FLOAT),y)
406 FFMPEG_CONFIGURE+= \
407 --disable-altivec \
408 --disable-vsx \
409 --disable-power8 \
410 --disable-armv5te \
411 --disable-armv6 \
412 --disable-armv6t2 \
413 --disable-fast-unaligned \
414 --disable-runtime-cpudetect
415
416 else ifneq ($(findstring arm,$(CONFIG_ARCH))$(findstring aarch64,$(CONFIG_ARCH)),)
417 FFMPEG_CONFIGURE+= \
418 --disable-runtime-cpudetect
419 # XXX: GitHub issue 3320 ppc cpu with fpu but no altivec (WNDR4700)
420 else ifneq ($(findstring powerpc,$(CONFIG_ARCH)),)
421 FFMPEG_CONFIGURE+= \
422 --disable-altivec
423 endif
424
425 # selectively disable optimizations according to arch/cpu type
426 ifneq ($(findstring arm,$(CONFIG_ARCH)),)
427 FFMPEG_CONFIGURE+= --enable-lto
428
429 ifneq ($(findstring vfp,$(CONFIG_CPU_TYPE)),)
430 FFMPEG_CONFIGURE+= --enable-vfp
431 else
432 FFMPEG_CONFIGURE+= --disable-vfp
433 endif
434 ifneq ($(findstring neon,$(CONFIG_CPU_TYPE)),)
435 FFMPEG_CONFIGURE+= \
436 --enable-neon \
437 --enable-vfp
438 else
439 FFMPEG_CONFIGURE+= --disable-neon
440 endif
441 endif
442
443 ifneq ($(findstring aarch64,$(CONFIG_ARCH)),)
444 FFMPEG_CONFIGURE+= \
445 --enable-lto \
446 --enable-neon \
447 --enable-vfp
448 endif
449
450 ifeq ($(ARCH),x86_64)
451 FFMPEG_CONFIGURE+= --enable-lto
452 endif
453
454 ifeq ($(CONFIG_FFMPEG_X86ASM),y)
455 FFMPEG_CONFIGURE += --enable-x86asm
456 else
457 FFMPEG_CONFIGURE += --disable-x86asm
458 endif
459
460 ifeq ($(BUILD_VARIANT),full)
461
462 FFMPEG_DISABLE= \
463 $(foreach c, $(2), \
464 --disable-$(1)="$(c)" \
465 )
466
467 FFMPEG_CONFIGURE+= \
468 --enable-gnutls \
469 $(if $(CONFIG_BUILD_PATENTED),, \
470 $(call FFMPEG_DISABLE,decoder,$(FFMPEG_PATENTED_DECODERS)) \
471 $(call FFMPEG_DISABLE,muxer,$(FFMPEG_PATENTED_MUXERS)) \
472 $(call FFMPEG_DISABLE,demuxer,$(FFMPEG_PATENTED_DEMUXERS)) \
473 $(call FFMPEG_DISABLE,parser,$(FFMPEG_PATENTED_PARSERS))) \
474 $(if $(CONFIG_PACKAGE_libopus),--enable-libopus)
475 ifeq ($(CONFIG_SOFT_FLOAT),y)
476 FFMPEG_CONFIGURE+= \
477 --enable-small \
478 \
479 $(if $(CONFIG_PACKAGE_shine),--enable-libshine)
480 else
481 ifeq ($(ARCH),x86_64)
482 FFMPEG_CONFIGURE+= --enable-hardcoded-tables
483 else
484 FFMPEG_CONFIGURE+= --enable-small
485 endif
486 FFMPEG_CONFIGURE+= $(if $(CONFIG_PACKAGE_lame-lib),--enable-libmp3lame)
487 endif
488 # x264 support and fdk-aac support can't coexist and be distributed.
489 # Prioritize x264 over fdk-aac in default builds (maintain status-quo).
490 ifneq ($(CONFIG_PACKAGE_libx264),)
491 FFMPEG_CONFIGURE+= \
492 --enable-gpl \
493 --enable-libx264
494 else
495 FFMPEG_CONFIGURE+= $(if $(CONFIG_PACKAGE_fdk-aac),--enable-libfdk-aac)
496 endif
497 endif
498
499 ifeq ($(BUILD_VARIANT),custom)
500
501 FFMPEG_ENABLE= \
502 $(foreach c, $(2), \
503 $(if $($(3)_$(c)),--enable-$(1)="$(c)") \
504 )
505
506 ifeq ($(CONFIG_FFMPEG_CUSTOM_LARGE),y)
507 FFMPEG_CONFIGURE+= \
508 --enable-hardcoded-tables
509 else
510 FFMPEG_CONFIGURE+= \
511 --enable-small
512 endif
513
514 ifeq ($(CONFIG_FFMPEG_CUSTOM_GPL),y)
515 FFMPEG_CONFIGURE+= --enable-gpl
516 endif
517
518 ifeq ($(CONFIG_FFMPEG_CUSTOM_GPLV3),y)
519 FFMPEG_CONFIGURE+= --enable-version3
520 endif
521
522 ifeq ($(CONFIG_FFMPEG_CUSTOM_NONFREE),y)
523 FFMPEG_CONFIGURE+= --enable-nonfree
524 endif
525
526 ifneq ($(CONFIG_FFMPEG_CUSTOM_PROGRAMS),y)
527 FFMPEG_CONFIGURE+= \
528 --disable-programs \
529 --disable-avfilter \
530 --disable-swresample
531 endif
532
533 FFMPEG_CONFIGURE+= \
534 --disable-swscale \
535 --disable-everything \
536 $(call FFMPEG_ENABLE,encoder,$(FFMPEG_CUSTOM_ENCODERS),CONFIG_FFMPEG_CUSTOM_ENCODER) \
537 $(call FFMPEG_ENABLE,decoder,$(FFMPEG_CUSTOM_DECODERS),CONFIG_FFMPEG_CUSTOM_DECODER) \
538 $(call FFMPEG_ENABLE,muxer,$(FFMPEG_CUSTOM_MUXERS),CONFIG_FFMPEG_CUSTOM_MUXER) \
539 $(call FFMPEG_ENABLE,demuxer,$(FFMPEG_CUSTOM_DEMUXERS),CONFIG_FFMPEG_CUSTOM_DEMUXER) \
540 $(call FFMPEG_ENABLE,parser,$(FFMPEG_CUSTOM_PARSERS),CONFIG_FFMPEG_CUSTOM_PARSER) \
541 $(call FFMPEG_ENABLE,protocol,$(FFMPEG_CUSTOM_PROTOCOLS),CONFIG_FFMPEG_CUSTOM_PROTOCOL) \
542
543 ifeq ($(CONFIG_FFMPEG_CUSTOM_SELECT_adpcm),y)
544 FFMPEG_CONFIGURE+= \
545 --enable-decoder=adpcm_ima_wav \
546 --enable-decoder=adpcm_ima_qt \
547 --enable-decoder=adpcm_ms
548 endif
549
550 ifeq ($(CONFIG_FFMPEG_CUSTOM_SELECT_libfdk-aac),y)
551 FFMPEG_CONFIGURE+= \
552 --enable-libfdk-aac --enable-encoder=libfdk_aac
553 endif
554
555 ifeq ($(CONFIG_FFMPEG_CUSTOM_SELECT_libmp3lame),y)
556 FFMPEG_CONFIGURE+= \
557 --enable-libmp3lame --enable-encoder=libmp3lame
558 endif
559
560 ifeq ($(CONFIG_FFMPEG_CUSTOM_SELECT_libopus),y)
561 FFMPEG_CONFIGURE+= \
562 --enable-libopus --enable-decoder=libopus --enable-encoder=libopus
563 endif
564
565 ifeq ($(CONFIG_FFMPEG_CUSTOM_SELECT_libshine),y)
566 FFMPEG_CONFIGURE+= \
567 --enable-libshine --enable-encoder=libshine
568 endif
569
570 ifeq ($(CONFIG_FFMPEG_CUSTOM_SELECT_libx264),y)
571 FFMPEG_CONFIGURE+= \
572 --enable-libx264 --enable-encoder=libx264
573 else
574 FFMPEG_CONFIGURE+= --disable-postproc
575 endif
576
577 endif
578
579 ifeq ($(BUILD_VARIANT),audio-dec)
580
581 FFMPEG_ENABLE= \
582 $(foreach c, $(2), \
583 --enable-$(1)="$(c)" \
584 )
585
586 FFMPEG_CONFIGURE+= \
587 --enable-small \
588 --enable-gpl \
589 \
590 --disable-programs \
591 --disable-avfilter \
592 --disable-postproc \
593 --disable-swresample \
594 --disable-swscale \
595 --disable-everything \
596 $(call FFMPEG_ENABLE,decoder,$(FFMPEG_AUDIO_DECODERS)) \
597 $(call FFMPEG_ENABLE,demuxer,$(FFMPEG_AUDIO_DEMUXERS)) \
598 $(call FFMPEG_ENABLE,protocol,$(FFMPEG_AUDIO_PROTOCOLS)) \
599 --disable-decoder=pcm_bluray,pcm_dvd
600 endif
601
602 ifeq ($(BUILD_VARIANT),mini)
603
604 FFMPEG_ENABLE= \
605 $(foreach c, $(2), \
606 --enable-$(1)="$(c)" \
607 )
608
609 FFMPEG_CONFIGURE+= \
610 --enable-small \
611 \
612 --disable-programs \
613 --disable-avdevice \
614 --disable-avfilter \
615 --disable-postproc \
616 --disable-swresample \
617 --disable-swscale \
618 --disable-everything \
619 $(call FFMPEG_ENABLE,decoder,$(FFMPEG_MINI_DECODERS)) \
620 $(call FFMPEG_ENABLE,demuxer,$(FFMPEG_MINI_DEMUXERS)) \
621 $(call FFMPEG_ENABLE,protocol,$(FFMPEG_MINI_PROTOCOLS)) \
622 $(if $(CONFIG_BUILD_PATENTED), \
623 $(call FFMPEG_ENABLE,decoder,$(FFMPEG_PATENTED_MINI_DECODERS)))
624 endif
625
626 ifneq ($(CONFIG_TARGET_x86),)
627 TARGET_CFLAGS+= -fomit-frame-pointer
628 endif
629
630 define Build/Configure
631 ( cd $(PKG_BUILD_DIR); $(FFMPEG_CONFIGURE) )
632 endef
633
634 define Build/Compile
635 +$(MAKE) $(PKG_JOBS) -C $(PKG_BUILD_DIR) \
636 DESTDIR="$(PKG_INSTALL_DIR)" \
637 all install
638 endef
639
640 define Build/InstallDev/custom
641 $(INSTALL_DIR) $(1)/usr/include
642 $(CP) $(PKG_INSTALL_DIR)/usr/include/lib{avcodec,avdevice,avformat,avutil} $(1)/usr/include/
643 $(INSTALL_DIR) $(1)/usr/lib
644 $(CP) $(PKG_INSTALL_DIR)/usr/lib/lib{avcodec,avdevice,avformat,avutil}.{a,so*} $(1)/usr/lib/
645 ifeq ($(CONFIG_FFMPEG_CUSTOM_PROGRAMS),y)
646 $(CP) $(PKG_INSTALL_DIR)/usr/lib/lib{avfilter,swresample}.{a,so*} $(1)/usr/lib/
647 endif
648 $(INSTALL_DIR) $(1)/usr/lib/pkgconfig
649 $(CP) $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/lib{avcodec,avdevice,avformat,avutil}.pc $(1)/usr/lib/pkgconfig/
650 ifeq ($(CONFIG_FFMPEG_CUSTOM_SELECT_libx264),y)
651 $(CP) $(PKG_INSTALL_DIR)/usr/include/libpostproc $(1)/usr/include/
652 $(CP) $(PKG_INSTALL_DIR)/usr/lib/libpostproc.{a,so*} $(1)/usr/lib/
653 $(CP) $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/libpostproc.pc $(1)/usr/lib/pkgconfig/
654 endif
655 endef
656
657 # Only ffmpeg with libx264 is GPL (yes libpostproc); all other builds are lgpl (no libpostproc)
658 define Build/InstallDev/full
659 $(INSTALL_DIR) $(1)/usr/include
660 $(INSTALL_DIR) $(1)/usr/lib
661 $(INSTALL_DIR) $(1)/usr/lib/pkgconfig
662 $(CP) $(PKG_INSTALL_DIR)/usr/include/lib{avcodec,avdevice,avfilter,avformat,avutil,swresample,swscale} $(1)/usr/include/
663 $(CP) $(PKG_INSTALL_DIR)/usr/lib/lib{avcodec,avdevice,avfilter,avformat,avutil,swresample,swscale}.{a,so*} $(1)/usr/lib/
664 $(CP) $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/lib{avcodec,avdevice,avfilter,avformat,avutil,swresample,swscale}.pc $(1)/usr/lib/pkgconfig/
665 ifneq ($(CONFIG_PACKAGE_libx264),)
666 $(CP) $(PKG_INSTALL_DIR)/usr/include/libpostproc $(1)/usr/include/
667 $(CP) $(PKG_INSTALL_DIR)/usr/lib/libpostproc.{a,so*} $(1)/usr/lib/
668 $(CP) $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/libpostproc.pc $(1)/usr/lib/pkgconfig/
669 endif
670 endef
671
672 define Build/InstallDev/mini
673 $(INSTALL_DIR) $(1)/usr/include
674 $(CP) $(PKG_INSTALL_DIR)/usr/include/lib{avcodec,avformat,avutil} $(1)/usr/include/
675 $(INSTALL_DIR) $(1)/usr/lib
676 $(CP) $(PKG_INSTALL_DIR)/usr/lib/lib{avcodec,avformat,avutil}.{a,so*} $(1)/usr/lib/
677 $(INSTALL_DIR) $(1)/usr/lib/pkgconfig
678 $(CP) $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/lib{avcodec,avformat,avutil}.pc $(1)/usr/lib/pkgconfig/
679 endef
680
681 Build/InstallDev/audio-dec = $(Build/InstallDev/custom)
682
683 # XXX: attempt at installing "best" dev files available
684 ifeq ($(BUILD_VARIANT),custom)
685 # XXX: only install "custom" dev files if -full & -mini are not selected
686 ifeq ($(CONFIG_PACKAGE_libffmpeg-full)$(CONFIG_PACKAGE_libffmpeg-mini),)
687 Build/InstallDev = $(Build/InstallDev/custom)
688 endif
689 endif
690 ifeq ($(BUILD_VARIANT),audio-dec)
691 # XXX: only install "audio-dec" dev files if -full & -mini are not selected
692 ifeq ($(CONFIG_PACKAGE_libffmpeg-full)$(CONFIG_PACKAGE_libffmpeg-mini),)
693 Build/InstallDev = $(Build/InstallDev/audio-dec)
694 endif
695 endif
696 ifeq ($(BUILD_VARIANT),full)
697 # XXX: always install "full" dev files if -full is selected
698 Build/InstallDev = $(Build/InstallDev/full)
699 endif
700 ifeq ($(BUILD_VARIANT),mini)
701 # XXX: only install "mini" dev files if -full is not selected
702 ifeq ($(CONFIG_PACKAGE_libffmpeg-full),)
703 Build/InstallDev = $(Build/InstallDev/mini)
704 endif
705 endif
706
707 define Package/ffmpeg/install
708 $(INSTALL_DIR) $(1)/usr/bin
709 $(CP) $(PKG_INSTALL_DIR)/usr/bin/ffmpeg $(1)/usr/bin/
710 endef
711
712 Package/ffmpeg-custom/install = $(Package/ffmpeg/install)
713
714 define Package/ffprobe/install
715 $(INSTALL_DIR) $(1)/usr/bin
716 $(CP) $(PKG_INSTALL_DIR)/usr/bin/ffprobe $(1)/usr/bin/
717 endef
718
719 Package/ffprobe-custom/install = $(Package/ffprobe/install)
720
721 define Package/libffmpeg-custom/install
722 $(INSTALL_DIR) $(1)/usr/lib
723 $(CP) $(PKG_INSTALL_DIR)/usr/lib/lib{avcodec,avdevice,avformat,avutil}.so.* $(1)/usr/lib/
724 ifeq ($(CONFIG_FFMPEG_CUSTOM_SELECT_libx264),y)
725 $(CP) $(PKG_INSTALL_DIR)/usr/lib/libpostproc.so.* $(1)/usr/lib/
726 endif
727 ifeq ($(CONFIG_FFMPEG_CUSTOM_PROGRAMS),y)
728 $(CP) $(PKG_INSTALL_DIR)/usr/lib/lib{avfilter,swresample}.so.* $(1)/usr/lib/
729 endif
730 endef
731
732 # Only ffmpeg with libx264 is GPL (yes libpostproc); all other builds are lgpl (no libpostproc)
733 define Package/libffmpeg-full/install
734 $(INSTALL_DIR) $(1)/usr/lib
735 $(CP) $(PKG_INSTALL_DIR)/usr/lib/lib{avcodec,avdevice,avfilter,avformat,avutil,swresample,swscale}.so.* $(1)/usr/lib/
736 ifneq ($(CONFIG_PACKAGE_libx264),)
737 $(CP) $(PKG_INSTALL_DIR)/usr/lib/libpostproc.so.* $(1)/usr/lib/
738 endif
739 endef
740
741 define Package/libffmpeg-mini/install
742 $(INSTALL_DIR) $(1)/usr/lib
743 $(CP) $(PKG_INSTALL_DIR)/usr/lib/lib{avcodec,avformat,avutil}.so.* $(1)/usr/lib/
744 endef
745
746 Package/libffmpeg-audio-dec/install = $(Package/libffmpeg-custom/install)
747
748 $(eval $(call BuildPackage,ffmpeg))
749 $(eval $(call BuildPackage,ffprobe))
750 $(eval $(call BuildPackage,ffmpeg-custom))
751 $(eval $(call BuildPackage,ffprobe-custom))
752 $(eval $(call BuildPackage,libffmpeg-audio-dec))
753 $(eval $(call BuildPackage,libffmpeg-full))
754 $(eval $(call BuildPackage,libffmpeg-mini))
755 $(eval $(call BuildPackage,libffmpeg-custom))