Makefile 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232
  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:= 2.8.5
  6. PKG_RELEASE:= 1
  7. PKG_HASH:= 3b6d9951533323ee64a21d0aa7667a780b3470bfe4e0fb7c1b33307ce290615a
  8. PKG_DESCR:= record, convert and stream audio & video
  9. PKG_SECTION:= libs/video
  10. PKG_NEEDS:= threads
  11. PKG_URL:= http://www.ffmpeg.org/
  12. PKG_SITES:= http://www.ffmpeg.org/releases/
  13. PKG_LIBNAME:= libffmpeg
  14. PKG_OPTS:= dev
  15. PKG_SUBPKGS:= LIBFFMPEG FFSERVER FFPROBE FFMPEG
  16. PKGSD_FFMPEG:= video converter
  17. PKGSC_FFMPEG:= mm/video
  18. PKGSS_FFMPEG:= libffmpeg
  19. PKGSD_FFSERVER:= streaming server
  20. PKGSC_FFSERVER:= mm/video
  21. PKGSS_FFSERVER:= libffmpeg
  22. PKGSD_FFPROBE:= simple multimedia stream analyzer
  23. PKGSC_FFPROBE:= mm/video
  24. PKGSS_FFPROBE:= libffmpeg
  25. PKGSD_LIBFFMPEG:= video library
  26. PKGSC_LIBFFMPEG:= libs/video
  27. PKG_FLAVOURS_LIBFFMPEG:= WITH_AAC WITH_MP3 WITH_VP8 WITH_THEORA
  28. PKG_FLAVOURS_LIBFFMPEG+= WITH_XVID WITH_VORBIS WITH_X264
  29. PKGFD_WITH_X264:= with X264 decoding support
  30. PKGFS_WITH_X264:= libx264
  31. PKGFB_WITH_X264:= libx264
  32. ifeq ($(ADK_PACKAGE_LIBFFMPEG_WITH_X264),y)
  33. PKG_FDEPENDS+= libx264
  34. endif
  35. PKGFD_WITH_AAC:= with AAC encoding support
  36. PKGFS_WITH_AAC:= libfaac
  37. PKGFB_WITH_AAC:= faac
  38. ifeq ($(ADK_PACKAGE_LIBFFMPEG_WITH_AAC),y)
  39. PKG_FDEPENDS+= libfaac
  40. endif
  41. PKGFD_WITH_MP3:= with MP3 encoding support
  42. PKGFS_WITH_MP3:= libmp3lame
  43. PKGFB_WITH_MP3:= lame
  44. ifeq ($(ADK_PACKAGE_LIBFFMPEG_WITH_MP3),y)
  45. PKG_FDEPENDS+= libmp3lame
  46. endif
  47. PKGFD_WITH_VP8:= with VP8 encoding support
  48. PKGFS_WITH_VP8:= libvpx
  49. PKGFB_WITH_VP8:= libvpx
  50. ifeq ($(ADK_PACKAGE_LIBFFMPEG_WITH_VP8),y)
  51. PKG_FDEPENDS+= libvpx
  52. endif
  53. PKGFD_WITH_THEORA:= with Theora encoding support
  54. PKGFS_WITH_THEORA:= libtheora
  55. PKGFB_WITH_THEORA:= libtheora
  56. ifeq ($(ADK_PACKAGE_LIBFFMPEG_WITH_THEORA),y)
  57. PKG_FDEPENDS+= libtheora
  58. endif
  59. PKGFD_WITH_XVID:= with Xvid encoding support
  60. PKGFS_WITH_XVID:= libxvid
  61. PKGFB_WITH_XVID:= xvidcore
  62. ifeq ($(ADK_PACKAGE_LIBFFMPEG_WITH_XVID),y)
  63. PKG_FDEPENDS+= libxvid
  64. endif
  65. PKGFD_WITH_VORBIS:= with Vorbis encoding support
  66. PKGFS_WITH_VORBIS:= libvorbisenc
  67. PKGFB_WITH_VORBIS:= libvorbis
  68. ifeq ($(ADK_PACKAGE_LIBFFMPEG_WITH_VORBIS),y)
  69. PKG_FDEPENDS+= libvorbisenc
  70. endif
  71. DISTFILES:= ${PKG_NAME}-${PKG_VERSION}.tar.bz2
  72. include ${ADK_TOPDIR}/mk/package.mk
  73. $(eval $(call PKG_template,LIBFFMPEG,libffmpeg,${PKG_VERSION}-${PKG_RELEASE},${PKG_FDEPENDS},${PKGSD_LIBFFMPEG},${PKGSC_LIBFFMPEG},${PKG_OPTS}))
  74. $(eval $(call PKG_template,FFMPEG,ffmpeg,${PKG_VERSION}-${PKG_RELEASE},${PKG_DEPENDS},${PKGSD_FFMPEG},${PKGSC_FFMPEG}))
  75. $(eval $(call PKG_template,FFSERVER,ffserver,${PKG_VERSION}-${PKG_RELEASE},${PKG_DEPENDS},${PKGSD_FFSERVER},${PKGSC_FFSERVER}))
  76. $(eval $(call PKG_template,FFPROBE,ffprobe,${PKG_VERSION}-${PKG_RELEASE},${PKG_DEPENDS},${PKGSD_FFPROBE},${PKGSC_FFPROBE}))
  77. ifeq ($(ADK_DEBUG),y)
  78. TARGET_CFLAGS:= $(subst O0,O2,$(TARGET_CFLAGS))
  79. else
  80. TARGET_CFLAGS:= $(subst Os,O2,$(TARGET_CFLAGS))
  81. endif
  82. TARGET_CPPFLAGS+= -D_POSIX_SOURCE -D_GNU_SOURCE
  83. ifeq ($(ADK_TARGET_CPU_WITH_MMX),y)
  84. CONFIGURE_CPU_OPTS+= --enable-mmx
  85. else
  86. CONFIGURE_CPU_OPTS+= --disable-mmx
  87. endif
  88. ifeq ($(ADK_TARGET_CPU_WITH_MMXEXT),y)
  89. CONFIGURE_CPU_OPTS+= --enable-mmxext
  90. else
  91. CONFIGURE_CPU_OPTS+= --disable-mmxext
  92. endif
  93. ifeq (${ADK_TARGET_CPU_WITH_SSE4_2},y)
  94. CONFIGURE_CPU_OPTS+= --enable-sse42 \
  95. --disable-sse4 \
  96. --disable-ssse3 \
  97. --disable-sse3 \
  98. --disable-sse2 \
  99. --disable-sse
  100. else
  101. CONFIGURE_CPU_OPTS+= --disable-sse42
  102. ifeq (${ADK_TARGET_CPU_WITH_SSE4_1},y)
  103. CONFIGURE_CPU_OPTS+= --enable-sse4 \
  104. --disable-ssse3 \
  105. --disable-sse3 \
  106. --disable-sse2 \
  107. --disable-sse
  108. else
  109. CONFIGURE_CPU_OPTS+= --disable-sse4
  110. ifeq (${ADK_TARGET_CPU_WITH_SSSE3},y)
  111. CONFIGURE_CPU_OPTS+= --enable-ssse3 \
  112. --disable-sse3 \
  113. --disable-sse2 \
  114. --disable-sse
  115. else
  116. CONFIGURE_CPU_OPTS+= --disable-ssse3
  117. ifeq (${ADK_TARGET_CPU_WITH_SSE3},y)
  118. CONFIGURE_CPU_OPTS+= --enable-sse3 \
  119. --disable-sse2 \
  120. --disable-sse
  121. else
  122. CONFIGURE_CPU_OPTS+= --disable-sse3
  123. ifeq (${ADK_TARGET_CPU_WITH_SSE2},y)
  124. CONFIGURE_CPU_OPTS+= --enable-sse2 \
  125. --disable-sse
  126. else
  127. CONFIGURE_CPU_OPTS+= --disable-sse2
  128. ifeq (${ADK_TARGET_CPU_WITH_SSE},y)
  129. CONFIGURE_CPU_OPTS+= --enable-sse
  130. else
  131. CONFIGURE_CPU_OPTS+= --disable-sse
  132. endif
  133. endif
  134. endif
  135. endif
  136. endif
  137. endif
  138. ifeq ($(ADK_TARGET_SYSTEM_RASPBERRY_PI),y)
  139. CONFIGURE_CPU_OPTS:= --enable-armv6
  140. endif
  141. ifeq ($(ADK_TARGET_CPU_MIPS_MIPS32),y)
  142. CONFIGURE_CPU_OPTS+= --disable-mipsdspr1 --disable-mipsdspr2
  143. endif
  144. CONFIG_STYLE:= minimal
  145. CONFIGURE_ARGS:= --prefix=/usr \
  146. --target-os=linux \
  147. --arch=${ADK_TARGET_CPU_ARCH} \
  148. --enable-cross-compile \
  149. --sysroot=${STAGING_TARGET_DIR} \
  150. --cross-prefix=${TARGET_CROSS} \
  151. --cc='$(TARGET_CC)' \
  152. --host-cc=$(HOST_CC) \
  153. --disable-bzlib \
  154. --disable-doc \
  155. --disable-debug \
  156. --disable-iconv \
  157. --disable-yasm \
  158. --disable-optimizations \
  159. --disable-stripping \
  160. --enable-shared \
  161. --enable-static \
  162. --enable-gpl \
  163. --enable-nonfree \
  164. --enable-swscale \
  165. --enable-postproc \
  166. ${CONFIGURE_CPU_OPTS}
  167. ifeq ($(ADK_PACKAGE_LIBFFMPEG_WITH_X264),y)
  168. CONFIGURE_ARGS+= --enable-libx264
  169. endif
  170. ifeq ($(ADK_PACKAGE_LIBFFMPEG_WITH_AAC),y)
  171. CONFIGURE_ARGS+= --enable-libfaac
  172. endif
  173. ifeq ($(ADK_PACKAGE_LIBFFMPEG_WITH_MP3),y)
  174. CONFIGURE_ARGS+= --enable-libmp3lame
  175. endif
  176. ifeq ($(ADK_PACKAGE_LIBFFMPEG_WITH_VP8),y)
  177. CONFIGURE_ARGS+= --enable-libvpx
  178. endif
  179. ifeq ($(ADK_PACKAGE_LIBFFMPEG_WITH_THEORA),y)
  180. CONFIGURE_ARGS+= --enable-libtheora
  181. endif
  182. ifeq ($(ADK_PACKAGE_LIBFFMPEG_WITH_XVID),y)
  183. CONFIGURE_ARGS+= --enable-libxvid
  184. endif
  185. ifeq ($(ADK_PACKAGE_LIBFFMPEG_WITH_VORBIS),y)
  186. CONFIGURE_ARGS+= --enable-libvorbis
  187. endif
  188. libffmpeg-install:
  189. ${INSTALL_DIR} ${IDIR_LIBFFMPEG}/usr/lib
  190. ${CP} ${WRKINST}/usr/lib/libavdevice.so* ${IDIR_LIBFFMPEG}/usr/lib
  191. ${CP} ${WRKINST}/usr/lib/libavformat.so* ${IDIR_LIBFFMPEG}/usr/lib
  192. ${CP} ${WRKINST}/usr/lib/libavfilter.so* ${IDIR_LIBFFMPEG}/usr/lib
  193. ${CP} ${WRKINST}/usr/lib/libavcodec.so* ${IDIR_LIBFFMPEG}/usr/lib
  194. ${CP} ${WRKINST}/usr/lib/libavutil.so* ${IDIR_LIBFFMPEG}/usr/lib
  195. ${CP} ${WRKINST}/usr/lib/libpostproc.so* ${IDIR_LIBFFMPEG}/usr/lib
  196. ${CP} ${WRKINST}/usr/lib/libswscale.so* ${IDIR_LIBFFMPEG}/usr/lib
  197. ${CP} ${WRKINST}/usr/lib/libswresample.so* ${IDIR_LIBFFMPEG}/usr/lib
  198. ffmpeg-install:
  199. ${INSTALL_DIR} ${IDIR_FFMPEG}/usr/bin
  200. ${INSTALL_BIN} ${WRKINST}/usr/bin/ffmpeg ${IDIR_FFMPEG}/usr/bin
  201. ffserver-install:
  202. ${INSTALL_DIR} ${IDIR_FFSERVER}/etc
  203. $(INSTALL_DATA) $(WRKBUILD)/doc/ffserver.conf ${IDIR_FFSERVER}/etc
  204. ${INSTALL_DIR} ${IDIR_FFSERVER}/usr/bin
  205. ${INSTALL_BIN} ${WRKINST}/usr/bin/ffserver ${IDIR_FFSERVER}/usr/bin
  206. ffprobe-install:
  207. ${INSTALL_DIR} ${IDIR_FFPROBE}/usr/bin
  208. ${INSTALL_BIN} ${WRKINST}/usr/bin/ffprobe ${IDIR_FFPROBE}/usr/bin
  209. include ${ADK_TOPDIR}/mk/pkg-bottom.mk