#! /bin/sh if test x"$1" = x"-h" -o x"$1" = x"--help" ; then echo "Usage: ./configure [options]" echo "" echo "available options:" echo "" echo " --help print this message" echo " --enable-avis-input enables avisynth input (win32 only)" echo " --enable-mp4-output enables mp4 output (using gpac)" echo " --enable-vfw compiles the VfW frontend" echo " --enable-pthread enables multithreaded encoding" echo " --enable-debug adds -g, doesn't strip" echo " --enable-gprof adds -pg, doesn't strip" echo " --enable-visualize enables visualization (X11 only)" echo " --enable-pic build position-independent code" echo " --enable-shared build libx264.so" echo " --extra-asflags=EASFLAGS add EASFLAGS to ASFLAGS" echo " --extra-cflags=ECFLAGS add ECFLAGS to CFLAGS" echo " --extra-ldflags=ELDFLAGS add ELDFLAGS to LDFLAGS" echo "" exit 1 fi cc_check() { rm -f conftest* cat > conftest.c << EOF #include <$1> int main () { $3 return 0; } EOF $CC $CFLAGS $LDFLAGS $2 conftest.c -o conftest 2>$DEVNULL TMP="$?" rm -f conftest.c conftest* return $TMP } rm -f config.h config.mak x264.pc prefix='/usr/local' exec_prefix='${prefix}' bindir='${exec_prefix}/bin' libdir='${exec_prefix}/lib' includedir='${prefix}/include' DEVNULL='/dev/null' avis_input="auto" mp4_output="auto" pthread="auto" debug="no" gprof="no" pic="no" vfw="no" vis="no" shared="no" CC="${CC-gcc}" CFLAGS="-Wall -I. -O4 -ffast-math -D__X264__" LDFLAGS="" HAVE_GETOPT_LONG=1 AS="nasm" ASFLAGS="" EXE="" UNAMES="`uname -s`" case "$UNAMES" in BeOS) SYS="BEOS" CFLAGS="$CFLAGS -DHAVE_MALLOC_H" ;; Darwin) SYS="MACOSX" CFLAGS="$CFLAGS -falign-loops=16" LDFLAGS="$LDFLAGS -lm -lmx" ;; FreeBSD) SYS="FREEBSD" LDFLAGS="$LDFLAGS -lm" ;; NetBSD) SYS="NETBSD" LDFLAGS="$LDFLAGS -lm" ;; OpenBSD) SYS="OPENBSD" CFLAGS="$CFLAGS -I/usr/X11R6/include" LDFLAGS="$LDFLAGS -lm" ;; Linux) SYS="LINUX" CFLAGS="$CFLAGS -DHAVE_MALLOC_H" LDFLAGS="$LDFLAGS -lm" ;; CYGWIN*) SYS="CYGWIN" CFLAGS="$CFLAGS -mno-cygwin" LDFLAGS="$LDFLAGS -mno-cygwin" EXE=".exe" DEVNULL="NUL" ;; MINGW*) SYS="MINGW" EXE=".exe" DEVNULL="NUL" ;; SunOS) SYS="SunOS" CFLAGS="$CFLAGS -DHAVE_MALLOC_H" LDFLAGS="$LDFLAGS -lm" HAVE_GETOPT_LONG=0 ;; *) echo "Unknown system $UNAMES, edit the configure" exit 1 ;; esac UNAMEM="`uname -m`" case "$UNAMEM" in i386|i486|i586|i686|BePC) ARCH="X86" CFLAGS="$CFLAGS -DHAVE_MMXEXT -DHAVE_SSE2" AS="nasm" ASFLAGS="-O2" if [ "$SYS" = MACOSX ]; then ASFLAGS="$ASFLAGS -f macho -DPREFIX" elif [ "$SYS" = CYGWIN -o "$SYS" = MINGW ]; then ASFLAGS="$ASFLAGS -f win32 -DPREFIX" elif [ "$SYS" = NETBSD ]; then ASFLAGS="$ASFLAGS -f aoutb" else ASFLAGS="$ASFLAGS -f elf" fi ;; x86_64) ARCH="X86_64" CFLAGS="$CFLAGS -DHAVE_MMXEXT -DHAVE_SSE2" AS="yasm" ASFLAGS="-f elf -m amd64" ;; "Power Macintosh"|ppc|ppc64) ARCH="PPC" if [ $SYS = MACOSX ] then CFLAGS="$CFLAGS -faltivec -fastf -mcpu=G4" else CFLAGS="$CFLAGS -maltivec -mabi=altivec" fi ;; sun4m|sun4d|sparc|sparc64) ARCH="Sparc" ;; sun4u) ARCH="UltraSparc" CFLAGS="$CFLAGS -mcpu=ultrasparc" LDFLAGS="$LDFLAGS -mcpu=ultrasparc" AS="as" ASFLAGS="-xarch=v8plusa" ;; ia64) ARCH="IA64" ;; alpha) ARCH="ALPHA" ;; mips|mipsel|mips64) ARCH="MIPS" ;; m68k) ARCH="M68K" ;; arm|armv5tel|armv4l) ARCH="ARM" ;; s390|s390x) ARCH="S390" ;; parisc|parisc64) ARCH="PARISC" ;; *) echo "Unknown platform $UNAMEM, edit the configure" exit 1 ;; esac CFLAGS="$CFLAGS -DARCH_$ARCH -DSYS_$SYS" # parse options for opt do optarg="${opt#*=}" case "$opt" in --prefix=*) prefix="$optarg" ;; --exec-prefix=*) exec_prefix="$optarg" ;; --bindir=*) bindir="$optarg" ;; --libdir=*) libdir="$optarg" ;; --includedir=*) includedir="$optarg" ;; --enable-avis-input) avis_input="yes" ;; --disable-avis-input) avis_input="no" ;; --enable-mp4-output) mp4_output="yes" ;; --disable-mp4-output) mp4_output="no" ;; --extra-asflags=*) ASFLAGS="$ASFLAGS ${opt#--extra-asflags=}" ;; --extra-cflags=*) CFLAGS="$CFLAGS ${opt#--extra-cflags=}" VFW_CFLAGS="${opt#--extra-cflags=}" ;; --extra-ldflags=*) LDFLAGS="$LDFLAGS ${opt#--extra-ldflags=}" VFW_LDFLAGS="${opt#--extra-ldflags=}" ;; --enable-pthread) pthread="yes" ;; --disable-pthread) pthread="no" ;; --enable-debug) CFLAGS="$CFLAGS -g" debug="yes" ;; --enable-gprof) CFLAGS="$CFLAGS -pg" LDFLAGS="$LDFLAGS -pg" gprof="yes" ;; --enable-pic) pic="yes" ;; --enable-vfw) vfw="yes" ;; --disable-vfw) vfw="no" ;; --enable-shared) shared="yes" if [ $ARCH = "X86_64" -o $ARCH = "PPC" -o $ARCH = "ALPHA" ] ; then pic="yes" fi ;; --enable-visualize) LDFLAGS="$LDFLAGS -L/usr/X11R6/lib -lX11" CFLAGS="$CFLAGS -DVISUALIZE=1" vis="yes" ;; *) echo "Unknown option $opt, ignored" ;; esac done # autodetect options that weren't forced nor disabled if test "$pthread" = "auto" ; then case $SYS in MINGW|CYGWIN|BEOS) pthread="yes" ;; *) pthread="no" cc_check pthread.h -lpthread && pthread="yes" ;; esac fi if test "$pthread" = "yes" ; then CFLAGS="$CFLAGS -DHAVE_PTHREAD" case $SYS in MINGW|CYGWIN|BEOS) ;; *) LDFLAGS="$LDFLAGS -lpthread" ;; esac fi MP4_LDFLAGS="-lgpac_static" if [ $SYS = CYGWIN -o $SYS = MINGW ]; then MP4_LDFLAGS="$MP4_LDFLAGS -lwinmm" fi if [ "$mp4_output" = "auto" ] ; then mp4_output="no" cc_check gpac/isomedia.h "$MP4_LDFLAGS" && mp4_output="yes" fi if [ "$mp4_output" = "yes" ] ; then echo "#define MP4_OUTPUT" >> config.h LDFLAGS="$LDFLAGS $MP4_LDFLAGS" fi if [ "$avis_input" = "auto" ] ; then if [ $SYS = CYGWIN -o $SYS = MINGW ]; then avis_input="yes" else avis_input="no"; fi fi if [ "$avis_input" = "yes" ] ; then echo "#define AVIS_INPUT" >> config.h LDFLAGS="$LDFLAGS -lvfw32" fi if [ "$pic" = "yes" ] ; then CFLAGS="$CFLAGS -fPIC" ASFLAGS="$ASFLAGS -D__PIC__" fi if [ "$debug" != "yes" -a "$gprof" != "yes" ]; then CFLAGS="$CFLAGS -s -fomit-frame-pointer" LDFLAGS="$LDFLAGS -s" VFW_LDFLAGS="$VFW_LDFLAGS -s" fi if cc_check "stdio.h" "" "fseeko(stdin,0,0);" ; then echo "#define fseek fseeko" >> config.h echo "#define ftell ftello" >> config.h elif cc_check "stdio.h" "" "fseeko64(stdin,0,0);" ; then echo "#define fseek fseeko64" >> config.h echo "#define ftell ftello64" >> config.h fi # generate config files cat > config.mak << EOF prefix=$prefix exec_prefix=$exec_prefix bindir=$bindir libdir=$libdir includedir=$includedir ARCH=$ARCH SYS=$SYS CC=$CC CFLAGS=$CFLAGS LDFLAGS=$LDFLAGS AS=$AS ASFLAGS=$ASFLAGS VFW=$vfw EXE=$EXE VIS=$vis HAVE_GETOPT_LONG=$HAVE_GETOPT_LONG DEVNULL=$DEVNULL EOF echo -n 'CONFIGURE_ARGS=' >> config.mak for A in "$@" ; do echo -n " '$A'" >> config.mak done echo '' >> config.mak cp config.mak gtk/config.mak if [ "$vfw" = "yes" ]; then rm -f vfw/build/cygwin/config.mak cat > vfw/build/cygwin/config.mak << EOF CFLAGS=$VFW_CFLAGS LDFLAGS=$VFW_LDFLAGS EOF echo "default: x264vfw.dll" >> config.mak fi if [ "$shared" = "yes" ]; then API=`grep '#define X264_BUILD' < x264.h | cut -f 3 -d ' '` echo "SONAME=libx264.so.$API" >> config.mak echo 'default: $(SONAME)' >> config.mak fi ./version.sh pclibs="-L$libdir -lx264" if test "$pthread" = "yes" ; then case $SYS in MINGW|CYGWIN|BEOS) ;; *) pclibs="$pclibs -lpthread" ;; esac fi cat > x264.pc << EOF prefix=$prefix exec_prefix=$exec_prefix libdir=$libdir includedir=$includedir Name: x264 Description: H.264 (MPEG4 AVC) encoder library Version: $(grep POINTVER < config.h | sed -e 's/.* "//; s/".*//') Libs: $pclibs Cflags: -I$includedir EOF echo "Platform: $ARCH" echo "System: $SYS" echo "avis input: $avis_input" echo "mp4 output: $mp4_output" echo "pthread: $pthread" echo "vfw: $vfw" echo "debug: $debug" echo "gprof: $gprof" echo "PIC: $pic" echo "shared: $shared" echo "visualize: $vis" echo echo "You can run 'make' or 'make fprofiled' now."