Makefile 7.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268
  1. # This file is part of the OpenADK project. OpenADK is copyrighted
  2. # material, please see the LICENCE file in the top-level directory.
  3. include $(ADK_TOPDIR)/rules.mk
  4. PKG_NAME:= ffmpeg
  5. PKG_VERSION:= 7.1.2
  6. PKG_RELEASE:= 1
  7. PKG_HASH:= 5eb62f529114778333b7eb0381cb16e2b8725ce2ae081d07b1082effe22b12e9
  8. PKG_DESCR:= record, convert and stream audio & video
  9. PKG_SECTION:= libs/video
  10. PKG_NEEDS:= threads
  11. PKG_DEPENDS:= libncurses
  12. PKG_BUILDDEP:= ncurses
  13. PKG_URL:= http://www.ffmpeg.org/
  14. PKG_SITES:= http://www.ffmpeg.org/releases/
  15. PKG_LIBNAME:= libffmpeg
  16. PKG_OPTS:= dev
  17. PKG_CHOICES_LIBFFMPEG:= WITH_OPENSSL WITH_LIBRESSL
  18. PKGCD_WITH_LIBRESSL:= use libressl for crypto
  19. PKGCS_WITH_LIBRESSL:= libressl ca-certificates
  20. PKGCB_WITH_LIBRESSL:= libressl
  21. PKGCD_WITH_OPENSSL:= use libopenssl for crypto
  22. PKGCS_WITH_OPENSSL:= libopenssl ca-certificates
  23. PKGCB_WITH_OPENSSL:= openssl
  24. PKG_SUBPKGS:= LIBFFMPEG FFPROBE FFMPEG
  25. PKGSD_FFMPEG:= video converter
  26. PKGSC_FFMPEG:= mm/video
  27. PKGSS_FFMPEG:= libffmpeg
  28. PKGSD_FFPROBE:= simple multimedia stream analyzer
  29. PKGSC_FFPROBE:= mm/video
  30. PKGSS_FFPROBE:= libffmpeg
  31. PKGSD_LIBFFMPEG:= video library
  32. PKGSC_LIBFFMPEG:= libs/video
  33. PKG_FLAVOURS_LIBFFMPEG:= WITH_MP3 WITH_VP8 WITH_THEORA
  34. PKG_FLAVOURS_LIBFFMPEG+= WITH_XVID WITH_VORBIS WITH_X264 WITH_X265
  35. PKG_FLAVOURS_LIBFFMPEG+= WITH_ZLIB WITH_BZIP2
  36. PKGFD_WITH_BZIP2:= with bzip2 compression support
  37. PKGFS_WITH_BZIP2:= bzip2
  38. PKGFB_WITH_BZIP2:= bzip2
  39. PKGFD_WITH_ZLIB:= with zlib compression support
  40. PKGFS_WITH_ZLIB:= zlib
  41. PKGFB_WITH_ZLIB:= zlib
  42. PKGFD_WITH_X264:= with x264 decoding support
  43. PKGFS_WITH_X264:= libx264
  44. PKGFB_WITH_X264:= libx264
  45. ifeq ($(ADK_PACKAGE_LIBFFMPEG_WITH_X264),y)
  46. PKG_FDEPENDS+= libx264
  47. endif
  48. PKGFD_WITH_X265:= with x265 decoding support
  49. PKGFS_WITH_X265:= libx265
  50. PKGFB_WITH_X265:= libx265
  51. ifeq ($(ADK_PACKAGE_LIBFFMPEG_WITH_X265),y)
  52. PKG_FDEPENDS+= libx265
  53. endif
  54. PKGFD_WITH_MP3:= with mp3 encoding support
  55. PKGFS_WITH_MP3:= libmp3lame
  56. PKGFB_WITH_MP3:= lame
  57. ifeq ($(ADK_PACKAGE_LIBFFMPEG_WITH_MP3),y)
  58. PKG_FDEPENDS+= libmp3lame
  59. endif
  60. PKGFD_WITH_VP8:= with vp8 encoding support
  61. PKGFS_WITH_VP8:= libvpx
  62. PKGFB_WITH_VP8:= libvpx
  63. ifeq ($(ADK_PACKAGE_LIBFFMPEG_WITH_VP8),y)
  64. PKG_FDEPENDS+= libvpx
  65. endif
  66. PKGFD_WITH_THEORA:= with theora encoding support
  67. PKGFS_WITH_THEORA:= libtheora
  68. PKGFB_WITH_THEORA:= libtheora
  69. ifeq ($(ADK_PACKAGE_LIBFFMPEG_WITH_THEORA),y)
  70. PKG_FDEPENDS+= libtheora
  71. endif
  72. PKGFD_WITH_XVID:= with xvid encoding support
  73. PKGFS_WITH_XVID:= libxvid
  74. PKGFB_WITH_XVID:= xvidcore
  75. ifeq ($(ADK_PACKAGE_LIBFFMPEG_WITH_XVID),y)
  76. PKG_FDEPENDS+= libxvid
  77. endif
  78. PKGFD_WITH_VORBIS:= with vorbis encoding support
  79. PKGFS_WITH_VORBIS:= libvorbisenc
  80. PKGFB_WITH_VORBIS:= libvorbis
  81. ifeq ($(ADK_PACKAGE_LIBFFMPEG_WITH_VORBIS),y)
  82. PKG_FDEPENDS+= libvorbisenc
  83. endif
  84. DISTFILES:= $(PKG_NAME)-$(PKG_VERSION).tar.bz2
  85. include $(ADK_TOPDIR)/mk/package.mk
  86. $(eval $(call PKG_template,LIBFFMPEG,libffmpeg,$(PKG_VERSION)-$(PKG_RELEASE),$(PKG_FDEPENDS),$(PKGSD_LIBFFMPEG),$(PKGSC_LIBFFMPEG),$(PKG_OPTS)))
  87. $(eval $(call PKG_template,FFMPEG,ffmpeg,$(PKG_VERSION)-$(PKG_RELEASE),$(PKG_DEPENDS),$(PKGSD_FFMPEG),$(PKGSC_FFMPEG)))
  88. $(eval $(call PKG_template,FFPROBE,ffprobe,$(PKG_VERSION)-$(PKG_RELEASE),$(PKG_DEPENDS),$(PKGSD_FFPROBE),$(PKGSC_FFPROBE)))
  89. ifeq ($(ADK_DEBUG),y)
  90. TARGET_CFLAGS:= $(subst O0,O2,$(TARGET_CFLAGS))
  91. else
  92. TARGET_CFLAGS:= $(subst Os,O2,$(TARGET_CFLAGS))
  93. endif
  94. TARGET_CPPFLAGS+= -D_POSIX_SOURCE -D_GNU_SOURCE
  95. TARGET_LDFLAGS+= -latomic
  96. ifeq ($(ADK_TARGET_CPU_WITH_MMX),y)
  97. CONFIGURE_CPU_OPTS+= --enable-mmx
  98. else
  99. CONFIGURE_CPU_OPTS+= --disable-mmx
  100. endif
  101. ifeq ($(ADK_TARGET_CPU_WITH_MMXEXT),y)
  102. CONFIGURE_CPU_OPTS+= --enable-mmxext
  103. else
  104. CONFIGURE_CPU_OPTS+= --disable-mmxext
  105. endif
  106. ifeq ($(ADK_TARGET_CPU_WITH_SSE4_2),y)
  107. CONFIGURE_CPU_OPTS+= --enable-sse42 \
  108. --disable-sse4 \
  109. --disable-ssse3 \
  110. --disable-sse3 \
  111. --disable-sse2 \
  112. --disable-sse
  113. else
  114. CONFIGURE_CPU_OPTS+= --disable-sse42
  115. ifeq ($(ADK_TARGET_CPU_WITH_SSE4_1),y)
  116. CONFIGURE_CPU_OPTS+= --enable-sse4 \
  117. --disable-ssse3 \
  118. --disable-sse3 \
  119. --disable-sse2 \
  120. --disable-sse
  121. else
  122. CONFIGURE_CPU_OPTS+= --disable-sse4
  123. ifeq ($(ADK_TARGET_CPU_WITH_SSSE3),y)
  124. CONFIGURE_CPU_OPTS+= --enable-ssse3 \
  125. --disable-sse3 \
  126. --disable-sse2 \
  127. --disable-sse
  128. else
  129. CONFIGURE_CPU_OPTS+= --disable-ssse3
  130. ifeq ($(ADK_TARGET_CPU_WITH_SSE3),y)
  131. CONFIGURE_CPU_OPTS+= --enable-sse3 \
  132. --disable-sse2 \
  133. --disable-sse
  134. else
  135. CONFIGURE_CPU_OPTS+= --disable-sse3
  136. ifeq ($(ADK_TARGET_CPU_WITH_SSE2),y)
  137. CONFIGURE_CPU_OPTS+= --enable-sse2 \
  138. --disable-sse
  139. else
  140. CONFIGURE_CPU_OPTS+= --disable-sse2
  141. ifeq ($(ADK_TARGET_CPU_WITH_SSE),y)
  142. CONFIGURE_CPU_OPTS+= --enable-sse
  143. else
  144. CONFIGURE_CPU_OPTS+= --disable-sse
  145. endif
  146. endif
  147. endif
  148. endif
  149. endif
  150. endif
  151. ifeq ($(ADK_TARGET_SYSTEM_RASPBERRY_PI),y)
  152. CONFIGURE_CPU_OPTS:= --enable-armv6
  153. endif
  154. ifeq ($(ADK_TARGET_CPU_MIPS_MIPS32),y)
  155. CONFIGURE_CPU_OPTS+= --disable-mipsdsp --disable-mipsdspr2
  156. endif
  157. ifeq ($(ADK_TARGET_ARCH_ARM_WITH_NEON),y)
  158. CONFIGURE_CPU_OPTS+= --enable-neon
  159. else ifeq ($(ADK_TARGET_ARCH_AARCH64),y)
  160. CONFIGURE_CPU_OPTS+= --enable-neon
  161. else
  162. CONFIGURE_CPU_OPTS+= --disable-neon
  163. endif
  164. CONFIG_STYLE:= minimal
  165. CONFIGURE_ARGS:= --prefix=/usr \
  166. --target-os=linux \
  167. --arch=$(ADK_TARGET_CPU_ARCH) \
  168. --enable-cross-compile \
  169. --sysroot=$(STAGING_TARGET_DIR) \
  170. --cross-prefix=$(TARGET_CROSS) \
  171. --cc='$(TARGET_CC)' \
  172. --host-cc='$(HOST_CC)' \
  173. --pkg-config='$(STAGING_HOST_DIR)/usr/bin/pkg-config' \
  174. --disable-doc \
  175. --disable-debug \
  176. --disable-iconv \
  177. --disable-optimizations \
  178. --disable-stripping \
  179. --enable-shared \
  180. --enable-static \
  181. --enable-gpl \
  182. --enable-nonfree \
  183. --enable-swscale \
  184. --enable-postproc \
  185. --enable-openssl \
  186. --disable-x86asm \
  187. $(CONFIGURE_CPU_OPTS)
  188. ifeq ($(ADK_PACKAGE_LIBFFMPEG_WITH_BZIP2),y)
  189. CONFIGURE_ARGS+= --enable-bzlib
  190. else
  191. CONFIGURE_ARGS+= --disable-bzlib
  192. endif
  193. ifeq ($(ADK_PACKAGE_LIBFFMPEG_WITH_ZLIB),y)
  194. CONFIGURE_ARGS+= --enable-zlib
  195. else
  196. CONFIGURE_ARGS+= --disable-zlib
  197. endif
  198. ifeq ($(ADK_PACKAGE_LIBFFMPEG_WITH_X264),y)
  199. CONFIGURE_ARGS+= --enable-libx264
  200. endif
  201. ifeq ($(ADK_PACKAGE_LIBFFMPEG_WITH_X265),y)
  202. CONFIGURE_ARGS+= --enable-libx265
  203. endif
  204. ifeq ($(ADK_PACKAGE_LIBFFMPEG_WITH_MP3),y)
  205. CONFIGURE_ARGS+= --enable-libmp3lame
  206. endif
  207. ifeq ($(ADK_PACKAGE_LIBFFMPEG_WITH_VP8),y)
  208. CONFIGURE_ARGS+= --enable-libvpx
  209. endif
  210. ifeq ($(ADK_PACKAGE_LIBFFMPEG_WITH_THEORA),y)
  211. CONFIGURE_ARGS+= --enable-libtheora
  212. endif
  213. ifeq ($(ADK_PACKAGE_LIBFFMPEG_WITH_XVID),y)
  214. CONFIGURE_ARGS+= --enable-libxvid
  215. endif
  216. ifeq ($(ADK_PACKAGE_LIBFFMPEG_WITH_VORBIS),y)
  217. CONFIGURE_ARGS+= --enable-libvorbis \
  218. --enable-muxer=ogg \
  219. --enable-encoder=libvorbis
  220. endif
  221. libffmpeg-install:
  222. $(INSTALL_DIR) $(IDIR_LIBFFMPEG)/usr/lib
  223. $(CP) $(WRKINST)/usr/lib/libavdevice.so* $(IDIR_LIBFFMPEG)/usr/lib
  224. $(CP) $(WRKINST)/usr/lib/libavformat.so* $(IDIR_LIBFFMPEG)/usr/lib
  225. $(CP) $(WRKINST)/usr/lib/libavfilter.so* $(IDIR_LIBFFMPEG)/usr/lib
  226. $(CP) $(WRKINST)/usr/lib/libavcodec.so* $(IDIR_LIBFFMPEG)/usr/lib
  227. $(CP) $(WRKINST)/usr/lib/libavutil.so* $(IDIR_LIBFFMPEG)/usr/lib
  228. $(CP) $(WRKINST)/usr/lib/libpostproc.so* $(IDIR_LIBFFMPEG)/usr/lib
  229. $(CP) $(WRKINST)/usr/lib/libswscale.so* $(IDIR_LIBFFMPEG)/usr/lib
  230. $(CP) $(WRKINST)/usr/lib/libswresample.so* $(IDIR_LIBFFMPEG)/usr/lib
  231. ffmpeg-install:
  232. $(INSTALL_DIR) $(IDIR_FFMPEG)/usr/bin
  233. $(INSTALL_BIN) $(WRKINST)/usr/bin/ffmpeg \
  234. $(IDIR_FFMPEG)/usr/bin
  235. ffprobe-install:
  236. $(INSTALL_DIR) $(IDIR_FFPROBE)/usr/bin
  237. $(INSTALL_BIN) $(WRKINST)/usr/bin/ffprobe \
  238. $(IDIR_FFPROBE)/usr/bin
  239. include $(ADK_TOPDIR)/mk/pkg-bottom.mk