acinclude.m4 6.85 KB
Newer Older
aymeric's avatar
aymeric committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
dnl -*- autoconf -*-
AC_DEFUN([MS_CHECK_DEP],[
	dnl $1=dependency description
	dnl $2=dependency short name, will be suffixed with _CFLAGS and _LIBS
	dnl $3=headers's place
	dnl $4=lib's place
	dnl $5=header to check
	dnl $6=lib to check
	dnl $7=function to check in library
	
	dep_name=$2
	dep_headersdir=$3
	dep_libsdir=$4
	dep_header=$5
	dep_lib=$6
	dep_funclib=$7
	other_libs=$8	
	
	CPPFLAGS_save=$CPPFLAGS
	LDFLAGS_save=$LDFLAGS
smorlat's avatar
smorlat committed
21
	LIBS_save=$LIBS
smorlat's avatar
smorlat committed
22 23 24 25 26 27 28 29 30 31 32 33 34 35 36

	case "$target_os" in
		*mingw*)
			ms_check_dep_mingw_found=yes
		;;
	esac
	if test "$ms_check_dep_mingw_found" != "yes" ; then
		CPPFLAGS=`echo "-I$dep_headersdir"|sed -e "s:-I/usr/include[\ ]*$::"`
		LDFLAGS=`echo "-L$dep_libsdir"|sed -e "s:-L/usr/lib\(64\)*[\ ]*::"`
	else
		CPPFLAGS="-I$dep_headersdir"	
		LDFLAGS="-L$dep_libsdir"
	fi


aymeric's avatar
aymeric committed
37
	LIBS="-l$dep_lib"
smorlat's avatar
smorlat committed
38

aymeric's avatar
aymeric committed
39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
	
	$2_CFLAGS="$CPPFLAGS"
	$2_LIBS="$LDFLAGS $LIBS"

	AC_CHECK_HEADERS([$dep_header],[AC_CHECK_LIB([$dep_lib],[$dep_funclib],found=yes,found=no, [$other_libs])
	],found=no)
	
	if test "$found" = "yes" ; then
		eval $2_found=yes
	else
		eval $2_found=no
		eval $2_CFLAGS=
		eval $2_LIBS=
	fi
	AC_SUBST($2_CFLAGS)
	AC_SUBST($2_LIBS)
	CPPFLAGS=$CPPFLAGS_save
	LDFLAGS=$LDFLAGS_save
smorlat's avatar
smorlat committed
57
	LIBS=$LIBS_save
aymeric's avatar
aymeric committed
58 59 60 61 62 63 64 65 66 67 68 69 70
])


AC_DEFUN([MS_CHECK_VIDEO],[

	dnl conditionnal build of video support
	AC_ARG_ENABLE(video,
		  [  --enable-video    Turn on video support compiling],
		  [case "${enableval}" in
			yes) video=true ;;
			no)  video=false ;;
			*) AC_MSG_ERROR(bad value ${enableval} for --enable-video) ;;
		  esac],[video=true])
71 72 73 74 75 76 77 78

	AC_ARG_ENABLE(ffmpeg,
		  [  --disable-ffmpeg    Disable ffmpeg support],
		  [case "${enableval}" in
			yes) ffmpeg=true ;;
			no)  ffmpeg=false ;;
			*) AC_MSG_ERROR(bad value ${enableval} for --disable-ffmpeg) ;;
		  esac],[ffmpeg=true])
aymeric's avatar
aymeric committed
79 80 81
	
	if test "$video" = "true"; then
		
82 83 84 85 86 87
		if test "$ffmpeg" = "true"; then
			dnl test for ffmpeg presence
			PKG_CHECK_MODULES(FFMPEG, [libavcodec >= 51.0.0 ],ffmpeg_found=yes , ffmpeg_found=no)
			if test x$ffmpeg_found = xno ; then
			   AC_MSG_ERROR([Could not find libavcodec (from ffmpeg) headers and library. This is mandatory for video support])
			fi
Simon Morlat's avatar
Simon Morlat committed
88 89 90
			
			FFMPEG_LIBS="$FFMPEG_LIBS -lavutil"
			
91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120
			PKG_CHECK_MODULES(SWSCALE, [libswscale >= 0.7.0 ],swscale_found=yes , swscale_found=no)
			if test x$swscale_found = xno ; then
			   AC_MSG_ERROR([Could not find libswscale (from ffmpeg) headers and library. This is mandatory for video support])
			fi

			dnl check for new/old ffmpeg header file layout
			CPPFLAGS_save=$CPPFLAGS
			CPPFLAGS="$FFMPEG_CFLAGS $CPPFLAGS"
			AC_CHECK_HEADERS(libavcodec/avcodec.h)
			CPPFLAGS=$CPPFLAGS_save

			dnl to workaround a bug on debian and ubuntu, check if libavcodec needs -lvorbisenc to compile	
			AC_CHECK_LIB(avcodec,avcodec_register_all, novorbis=yes , [
				LIBS="$LIBS -lvorbisenc"
				], $FFMPEG_LIBS )

			dnl when swscale feature is not provided by
			dnl libswscale, its features are swallowed by
			dnl libavcodec, but without swscale.h and without any
			dnl declaration into avcodec.h (this is to be
			dnl considered as an ffmpeg bug).
			dnl 
			dnl #if defined(HAVE_LIBAVCODEC_AVCODEC_H) && !defined(HAVE_LIBSWSCALE_SWSCALE_H)
			dnl # include "swscale.h" // private linhone swscale.h
			dnl #endif
			CPPFLAGS_save=$CPPFLAGS
			CPPFLAGS="$SWSCALE_CFLAGS $CPPFLAGS"
			AC_CHECK_HEADERS(libswscale/swscale.h)
			CPPFLAGS=$CPPFLAGS_save

121 122 123 124 125
			enable_sdl_default=false
			enable_x11_default=true
			if test "$macosx_found" = "yes" ; then
				enable_sdl_default=true
				enable_x11_default=false
126 127
				OBJCFLAGS="$OBJCFLAGS -framework QTKit"
				LIBS="$LIBS -framework QTKit -framework CoreVideo  -framework Foundation"
128 129 130 131
				dnl the following check is necessary but due to automake bug it forces every platform to have an objC compiler !
				dnl AC_LANG_PUSH([Objective C])
				dnl AC_CHECK_HEADERS([QTKit/QTKit.h],[],[AC_MSG_ERROR([QTKit framework not found, required for video support])])
				dnl AC_LANG_POP([Objective C])
132 133
			fi

134
			AC_ARG_ENABLE(sdl,
135
			  [  --disable-sdl    Disable SDL support (default: disabled except on macos)],
136 137 138 139
			  	  [case "${enableval}" in
				  yes) enable_sdl=true ;;
				  no)  enable_sdl=false ;;
			  *) AC_MSG_ERROR(bad value ${enableval} for --disable-sdl) ;;
140
		  	  esac],[enable_sdl=$enable_sdl_default])
141

142
			sdl_found=false
143
			if test "$enable_sdl" = "true"; then
Simon Morlat's avatar
Simon Morlat committed
144
				   PKG_CHECK_MODULES(SDL, [sdl >= 1.2.0 ],sdl_found=true,sdl_found=false)
145 146
			fi

147

148 149 150 151 152 153
			AC_ARG_ENABLE(x11,
			  [  --disable-x11    Disable X11 support],
		 	  [case "${enableval}" in
			  yes) enable_x11=true ;;
			  no)  enable_x11=false ;;
			  *) AC_MSG_ERROR(bad value ${enableval} for --disable-x11) ;;
154
		  	  esac],[enable_x11=$enable_x11_default])
155 156 157 158 159 160

			if test "$enable_x11" = "true"; then
			   AC_CHECK_HEADERS(X11/Xlib.h)
			fi

			AC_ARG_ENABLE(xv,
Simon Morlat's avatar
Simon Morlat committed
161
			  [  --enable-xv     Enable xv supportl],
162 163 164 165
			  [case "${enableval}" in
			  yes) enable_xv=true ;;
			  no)  enable_xv=false ;;
			  *) AC_MSG_ERROR(bad value ${enableval} for --enable-xv) ;;
166
		  	  esac],[enable_xv=$enable_x11_default])
167 168

			if test "$enable_xv" = "true"; then
169 170 171 172
				AC_CHECK_HEADERS(X11/extensions/Xv.h,[] ,[enable_xv=false])
				AC_CHECK_HEADERS(X11/extensions/Xvlib.h,[] ,[enable_xv=false],[
					#include <X11/Xlib.h>
				])
173
			   AC_CHECK_LIB(Xv,XvCreateImage,[LIBS="$LIBS -lXv"])
Simon Morlat's avatar
Simon Morlat committed
174 175 176 177
			 fi
		fi
		
		if ! test "$mingw_found" = "yes" ; then
178
			if test "$enable_xv$sdl_found" == "falsefalse" ; then
Simon Morlat's avatar
Simon Morlat committed
179 180
				AC_MSG_ERROR([No video output API found. Install either X11+Xv headers or SDL library.])
			fi
aymeric's avatar
aymeric committed
181 182
		fi

smorlat's avatar
smorlat committed
183 184 185 186 187 188 189 190 191
		AC_ARG_ENABLE(theora,
		  [  --disable-theora    Disable theora support],
		  [case "${enableval}" in
			yes) theora=true ;;
			no)  theora=false ;;
			*) AC_MSG_ERROR(bad value ${enableval} for --disable-theora) ;;
		  esac],[theora=true])

		if test x$theora = xtrue; then
aymeric's avatar
aymeric committed
192 193
		PKG_CHECK_MODULES(THEORA, [theora >= 1.0alpha7 ], [have_theora=yes],
					[have_theora=no])
smorlat's avatar
smorlat committed
194
		fi
195
		
196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214
		AC_ARG_ENABLE(vp8,
		  [  --disable-vp8    Disable vp8 support],
		  [case "${enableval}" in
			yes) vp8=true ;;
			no)  vp8=false ;;
			*) AC_MSG_ERROR(bad value ${enableval} for --disable-vp8) ;;
		  esac],[vp8=true])

		if test x$vp8 = xtrue; then
		PKG_CHECK_MODULES(VP8, [vpx >= 0.9.6 ], [have_vp8=yes],
					[have_vp8=no])
		PKG_CHECK_MODULES(SWSCALE, [libswscale >= 0.7.0 ],[have_vp8=$have_vp8] , have_vp8=no)
		fi

		if test "$have_vp8" = "true" ; then
			VIDEO_CFLAGS=" $VIDEO_CFLAGS $SWSCALE_CFLAGS"
			VIDEO_LIBS=" $VIDEO_LIBS $SWSCALE_LIBS"
		fi

215 216
		if test "$ffmpeg" = "false"; then
		   FFMPEG_CFLAGS=" $FFMPEG_CFLAGS -DNO_FFMPEG"
smorlat's avatar
smorlat committed
217
		fi
218

219 220 221
		VIDEO_CFLAGS=" $FFMPEG_CFLAGS -DVIDEO_ENABLED"
		VIDEO_LIBS=" $FFMPEG_LIBS $SWSCALE_LIBS"

Simon Morlat's avatar
Simon Morlat committed
222
		if test "$sdl_found" = "true" ; then
223 224 225
			VIDEO_CFLAGS="$VIDEO_CFLAGS $SDL_CFLAGS -DHAVE_SDL"
			VIDEO_LIBS="$VIDEO_LIBS $SDL_LIBS"
		fi
aymeric's avatar
aymeric committed
226 227 228 229

		if test "${ac_cv_header_X11_Xlib_h}" = "yes" ; then
			VIDEO_LIBS="$VIDEO_LIBS -lX11"
		fi
230 231

		if test "$mingw_found" = "yes" ; then
232
			VIDEO_LIBS="$VIDEO_LIBS -lvfw32 -lgdi32"
233
		fi
aymeric's avatar
aymeric committed
234 235 236 237 238
	fi
	
	AC_SUBST(VIDEO_CFLAGS)
	AC_SUBST(VIDEO_LIBS)
])