#!/bin/bash

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 "  --disable-avs-input      disables avisynth input (win32 only)"
echo "  --disable-lavf-input     disables libavformat input"
echo "  --disable-ffms-input     disables ffmpegsource input"
echo "  --disable-mp4-output     disables mp4 output (using gpac)"
echo "  --disable-pthread        disables multithreaded encoding"
echo "  --disable-asm            disables platform-specific assembly optimizations"
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 "  --host=HOST              build programs to run on HOST"
echo "  --cross-prefix=PREFIX    use PREFIX for compilation tools"
echo "  --sysroot=SYSROOT        root of cross-build tree"
echo ""
exit 1
fi

log_check() {
    echo -n "checking $1... " >> config.log
}

log_ok() {
    echo "yes" >> config.log
}

log_fail() {
    echo "no" >> config.log
}

log_msg() {
    echo "$1" >> config.log
}

cc_check() {
    if [ -z "$3" ]; then
        if [ -z "$1$2" ]; then
            log_check "whether $CC works"
        elif [ -z "$1" ]; then
            log_check "for $2"
        else
            log_check "for $1"
        fi
    elif [ -z "$1" ]; then
        log_check "whether $CC supports $3"
    else
        log_check "for $3 in $1";
    fi
    rm -f conftest.c
    [ -n "$1" ] && echo "#include <$1>" > conftest.c
    echo "int main () { $3 return 0; }" >> conftest.c
    if $CC conftest.c $CFLAGS $LDFLAGS $LDFLAGSCLI $2 -o conftest >conftest.log 2>&1; then
        res=$?
        log_ok
    else
        res=$?
        log_fail
        log_msg "Failed commandline was:"
        log_msg "--------------------------------------------------"
        log_msg "$CC conftest.c $CFLAGS $LDFLAGS $LDFLAGSCLI $2"
        cat conftest.log >> config.log
        log_msg "--------------------------------------------------"
    fi
    return $res
}

as_check() {
    log_check "whether $AS supports $1"
    echo "$1" > conftest.asm
    if $AS conftest.asm $ASFLAGS $2 -o conftest.o >conftest.log 2>&1; then
        res=$?
        log_ok
    else
        res=$?
        log_fail
        log_msg "Failed commandline was:"
        log_msg "--------------------------------------------------"
        log_msg "$AS conftest.asm $ASFLAGS $2 -o conftest.o"
        cat conftest.log >> config.log
        log_msg "--------------------------------------------------"
    fi
    return $res
}

define() {
    echo "#define $1$([ -n "$2" ] && echo " $2")" >> config.h
}

die() {
    log_msg "DIED: $@"
    echo "$@"
    exit 1
}

rm -f config.h config.mak config.log x264.pc conftest*

prefix='/usr/local'
exec_prefix='${prefix}'
bindir='${exec_prefix}/bin'
libdir='${exec_prefix}/lib'
includedir='${prefix}/include'
DEVNULL='/dev/null'

avs_input="auto"
lavf_input="auto"
ffms_input="auto"
mp4_output="auto"
pthread="auto"
asm="yes"
debug="no"
gprof="no"
pic="no"
vis="no"
shared="no"

CFLAGS="$CFLAGS -Wall -I."
LDFLAGS="$LDFLAGS"
LDFLAGSCLI="$LDFLAGSCLI"
ASFLAGS="$ASFLAGS"
HAVE_GETOPT_LONG=1
cross_prefix=""

EXE=""

# 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-asm)
            asm="yes"
            ;;
        --disable-asm)
            asm="no"
            ;;
        --enable-avs-input)
            avs_input="auto"
            ;;
        --disable-avs-input)
            avs_input="no"
            ;;
        --enable-lavf-input)
            lavf_input="auto"
            ;;
        --disable-lavf-input)
            lavf_input="no"
            ;;
        --enable-ffms-input)
            ffms_input="auto"
            ;;
        --disable-ffms-input)
            ffms_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=}"
            ;;
        --extra-ldflags=*)
            LDFLAGS="$LDFLAGS ${opt#--extra-ldflags=}"
            ;;
        --enable-pthread)
            pthread="auto" # can't skip detection, since it differs by OS
            ;;
        --disable-pthread)
            pthread="no"
            ;;
        --enable-debug)
            debug="yes"
            ;;
        --enable-gprof)
            CFLAGS="$CFLAGS -pg"
            LDFLAGS="$LDFLAGS -pg"
            gprof="yes"
            ;;
        --enable-pic)
            pic="yes"
            ;;
        --enable-shared)
            shared="yes"
            ;;
        --enable-visualize)
            LDFLAGS="$LDFLAGS -L/usr/X11R6/lib -lX11"
            define HAVE_VISUALIZE
            vis="yes"
            ;;
        --host=*)
            host="${opt#--host=}"
            ;;
        --cross-prefix=*)
            cross_prefix="${opt#--cross-prefix=}"
            ;;
        --sysroot=*)
            CFLAGS="$CFLAGS --sysroot=${opt#--sysroot=}"
            LDFLAGS="$LDFLAGS --sysroot=${opt#--sysroot=}"
            ;;
        *)
            echo "Unknown option $opt, ignored"
            ;;
    esac
done

CC="${CC-${cross_prefix}gcc}"
AR="${AR-${cross_prefix}ar}"
RANLIB="${RANLIB-${cross_prefix}ranlib}"
STRIP="${STRIP-${cross_prefix}strip}"

if [ "x$host" = x ]; then
    host=`./config.guess`
fi
# normalize a triplet into a quadruplet
host=`./config.sub $host`

# split $host
host_cpu="${host%%-*}"
host="${host#*-}"
host_vendor="${host%%-*}"
host_os="${host#*-}"

case $host_os in
  beos*)
    SYS="BEOS"
    define HAVE_MALLOC_H
    ;;
  darwin*)
    SYS="MACOSX"
    CFLAGS="$CFLAGS -falign-loops=16"
    LDFLAGS="$LDFLAGS -lm"
    if [ "$pic" = "no" ]; then
        cc_check "" -mdynamic-no-pic && CFLAGS="$CFLAGS -mdynamic-no-pic"
    fi
    ;;
  freebsd*)
    SYS="FREEBSD"
    LDFLAGS="$LDFLAGS -lm"
    ;;
  kfreebsd*-gnu)
    SYS="FREEBSD"
    define HAVE_MALLOC_H
    LDFLAGS="$LDFLAGS -lm"
    ;;
  netbsd*)
    SYS="NETBSD"
    LDFLAGS="$LDFLAGS -lm"
    ;;
  openbsd*)
    SYS="OPENBSD"
    CFLAGS="$CFLAGS -I/usr/X11R6/include"
    LDFLAGS="$LDFLAGS -lm"
    ;;
  *linux*)
    SYS="LINUX"
    define HAVE_MALLOC_H
    LDFLAGS="$LDFLAGS -lm"
    ;;
  cygwin*)
    SYS="MINGW"
    EXE=".exe"
    DEVNULL="NUL"
    if cc_check "" -mno-cygwin; then
        CFLAGS="$CFLAGS -mno-cygwin"
        LDFLAGS="$LDFLAGS -mno-cygwin"
    fi
    ;;
  mingw*)
    SYS="MINGW"
    EXE=".exe"
    DEVNULL="NUL"
    ;;
  sunos*|solaris*)
    SYS="SunOS"
    define HAVE_MALLOC_H
    LDFLAGS="$LDFLAGS -lm"
    HAVE_GETOPT_LONG=0
    ;;
  *)
    die "Unknown system $host, edit the configure"
    ;;
esac

case $host_cpu in
  i*86)
    ARCH="X86"
    AS="yasm"
    ASFLAGS="$ASFLAGS -O2"
    if [[ "$asm" == yes && "$CFLAGS" != *-march* ]]; then
      CFLAGS="$CFLAGS -march=i686"
    fi
    if [[ "$asm" == yes && "$CFLAGS" != *-mfpmath* ]]; then
      CFLAGS="$CFLAGS -mfpmath=sse -msse"
    fi
    if [ "$SYS" = MACOSX ]; then
      ASFLAGS="$ASFLAGS -f macho -DPREFIX"
    elif [ "$SYS" = MINGW ]; then
      ASFLAGS="$ASFLAGS -f win32 -DPREFIX"
    else
      ASFLAGS="$ASFLAGS -f elf"
    fi
    ;;
  x86_64)
    ARCH="X86_64"
    AS="yasm"
    if [ "$SYS" = MACOSX ];then
      ASFLAGS="$ASFLAGS -f macho64 -m amd64 -DPIC -DPREFIX"
      if cc_check '' "-arch x86_64"; then
        CFLAGS="$CFLAGS -arch x86_64"
        LDFLAGS="$LDFLAGS -arch x86_64"
      fi
    elif [ "$SYS" = MINGW ]; then
      ASFLAGS="$ASFLAGS -f win32 -m amd64 -DPREFIX"
    else
      ASFLAGS="$ASFLAGS -f elf -m amd64"
    fi
    ;;
  powerpc|powerpc64)
    ARCH="PPC"
    if [ $asm = yes ] ; then
      define HAVE_ALTIVEC
      AS="${AS-${cross_prefix}gcc}"
      if [ $SYS = MACOSX ] ; then
        CFLAGS="$CFLAGS -faltivec -fastf -mcpu=G4"
      else
        CFLAGS="$CFLAGS -maltivec -mabi=altivec"
        define HAVE_ALTIVEC_H
      fi
    fi
    ;;
  sparc)
    if [ $asm = yes ] && test "$(uname -m)" = "sun4u"; then
      ARCH="UltraSparc"
      CFLAGS="$CFLAGS -mcpu=ultrasparc"
      LDFLAGS="$LDFLAGS -mcpu=ultrasparc"
      AS="${AS-${cross_prefix}as}"
      ASFLAGS="$ASFLAGS -xarch=v8plusa"
    else
      ARCH="Sparc"
    fi
    ;;
  mips|mipsel|mips64|mips64el)
    ARCH="MIPS"
    ;;
  arm*)
    ARCH="ARM"
    if [ "$SYS" = MACOSX ] ; then
      AS="${AS-extras/gas-preprocessor.pl $CC}"
      ASFLAGS="$ASFLAGS -DPREFIX -DPIC"  # apple's ld doesn't support movw/movt relocations at all
      # build for armv7 by default
      if ! echo $CFLAGS | grep -Eq '\-arch' ; then
        CFLAGS="$CFLAGS -arch armv7"
        LDFLAGS="$LDFLAGS -arch armv7"
      fi
    else
      AS="${AS-${cross_prefix}gcc}"
    fi
    ;;
  s390|s390x)
    ARCH="S390"
    ;;
  parisc|parisc64)
    ARCH="PARISC"
    ;;
  *)
    ARCH="$(echo $host_cpu | tr a-z A-Z)"
    ;;
esac

log_msg "x264 configure script"
if [ -n "$*" ]; then
    msg="Command line options:"
    for i in $@; do
        msg="$msg \"$i\""
    done
    log_msg "$msg"
fi
log_msg ""

# check requirements

cc_check || die "No working C compiler found."

if cc_check '' -std=gnu99 ; then
    CFLAGS="$CFLAGS -std=gnu99"
elif cc_check '' -std=c99 ; then
    CFLAGS="$CFLAGS -std=c99 -D_POSIX_C_SOURCE=200112L -D_BSD_SOURCE"
fi

if [ $shared = yes -a \( $ARCH = "X86_64" -o $ARCH = "PPC" -o $ARCH = "ALPHA" -o $ARCH = "ARM" \) ] ; then
    pic="yes"
fi

if [ $asm = yes -a \( $ARCH = X86 -o $ARCH = X86_64 \) ] ; then
    if ! as_check "lzcnt eax, eax" ; then
        VER=`($AS --version || echo no assembler) 2>$DEVNULL | head -n 1`
        echo "Found $VER"
        echo "Minimum version is yasm-0.6.2"
        echo "If you really want to compile without asm, configure with --disable-asm."
        exit 1
    fi
    if ! cc_check '' '' '__asm__("pabsw %xmm0, %xmm0");' ; then
        VER=`(as --version || echo no gnu as) 2>$DEVNULL | head -n 1`
        echo "Found $VER"
        echo "Minimum version is binutils-2.17"
        echo "Your compiler can't handle inline SSSE3 asm."
        echo "If you really want to compile without asm, configure with --disable-asm."
        exit 1
    fi
    define HAVE_MMX
fi

if [ $asm = yes -a $ARCH = ARM ] ; then
    # set flags so neon is built by default
    echo $CFLAGS | grep -Eq '(-mcpu|-march|-mfpu|-mfloat-abi)' || CFLAGS="$CFLAGS -mcpu=cortex-a8 -mfpu=neon -mfloat-abi=softfp"

    if  cc_check '' '' '__asm__("rev ip, ip");' ; then      define HAVE_ARMV6
        cc_check '' '' '__asm__("movt r0, #0");'         && define HAVE_ARMV6T2
        cc_check '' '' '__asm__("vadd.i16 q0, q0, q0");' && define HAVE_NEON
        ASFLAGS="$ASFLAGS $CFLAGS -c"
    else
        echo "You specified a pre-ARMv6 or Thumb-1 CPU in your CFLAGS."
        echo "If you really want to run on such a CPU, configure with --disable-asm."
        exit 1
    fi
fi

[ $asm = no ] && AS=""
[ "x$AS" = x ] && asm="no"

define ARCH_$ARCH
define SYS_$SYS

echo "int i = 0x42494745; double f = 0x1.0656e6469616ep+102;" > conftest.c
$CC $CFLAGS conftest.c -c -o conftest.o 2>$DEVNULL || die "endian test failed"
if grep -q BIGE conftest.o && grep -q FPendian conftest.o ; then
    define WORDS_BIGENDIAN
elif !(grep -q EGIB conftest.o && grep -q naidnePF conftest.o) ; then
    die "endian test failed"
fi

# autodetect options that weren't forced nor disabled

libpthread=""
if test "$pthread" = "auto" ; then
    pthread="no"
    case $SYS in
        BEOS)
            pthread="yes"
            ;;
        MINGW)
            if cc_check pthread.h -lpthread "pthread_create(0,0,0,0);" ; then
                pthread="yes"
                libpthread="-lpthread"
            elif cc_check pthread.h -lpthreadGC2 "pthread_create(0,0,0,0);" ; then
                pthread="yes"
                libpthread="-lpthreadGC2"
            elif cc_check pthread.h "-lpthreadGC2 -lwsock32 -DPTW32_STATIC_LIB" "pthread_create(0,0,0,0);" ; then
                pthread="yes"
                libpthread="-lpthreadGC2 -lwsock32"
                define PTW32_STATIC_LIB
            elif cc_check pthread.h "-lpthreadGC2 -lws2_32 -DPTW32_STATIC_LIB" "pthread_create(0,0,0,0);" ; then
                pthread="yes"
                libpthread="-lpthreadGC2 -lws2_32"
                define PTW32_STATIC_LIB
            fi
            ;;
        OPENBSD)
            cc_check pthread.h -pthread && pthread="yes" && libpthread="-pthread"
            ;;
        *)
            cc_check pthread.h -lpthread && pthread="yes" && libpthread="-lpthread"
            ;;
    esac
fi
if test "$pthread" = "yes" ; then
    define HAVE_PTHREAD
    LDFLAGS="$LDFLAGS $libpthread"
fi

if cc_check "math.h" "-Werror" "return log2f(2);" ; then
    define HAVE_LOG2F
fi

if [ "$lavf_input" = "auto" ] ; then
    lavf_input="no"
    if ${cross_prefix}pkg-config --exists libavformat libavcodec libswscale 2>$DEVNULL; then
        LAVF_LIBS="$LAVF_LIBS $(${cross_prefix}pkg-config --libs libavformat libavcodec libswscale)"
        LAVF_CFLAGS="$LAVF_CFLAGS $(${cross_prefix}pkg-config --cflags libavformat libavcodec libswscale)"
    fi
    if [ -z "$LAVF_LIBS" -a -z "$LAVF_CFLAGS" ]; then
        LAVF_LIBS="-lavformat -lswscale"
        for lib in -lpostproc -lavcodec -lavutil -lm -lz -lbz2 $libpthread -lavifil32; do
            cc_check "" $lib && LAVF_LIBS="$LAVF_LIBS $lib"
        done
    fi
    LAVF_LIBS="-L. $LAVF_LIBS"
    if cc_check libavformat/avformat.h "$LAVF_CFLAGS $LAVF_LIBS" && \
       cc_check libswscale/swscale.h "$LAVF_CFLAGS $LAVF_LIBS" ; then
        # avcodec_decode_video2 is currently the most recently added function that we use; it was added in r18351
        if cc_check libavformat/avformat.h "$LAVF_CFLAGS $LAVF_LIBS" "avcodec_decode_video2( NULL, NULL, NULL, NULL );" ; then
            lavf_input="yes"
            define LAVF_INPUT
        else
            echo "Warning: libavformat is too old, update to ffmpeg r18351+"
        fi
    fi
fi

if [ "$ffms_input" = "auto" ] ; then
    ffms_major="2"; ffms_minor="13"; ffms_micro="1"; ffms_bump="0"

    ffms_input="no"
    [ $ffms_micro -gt 0 -o $ffms_bump -gt 0 ] && vmicro=".$ffms_micro"
    [ $ffms_bump -gt 0 ] && vbump=".$ffms_bump"
    if ${cross_prefix}pkg-config --atleast-version="$ffms_major.$ffms_minor$vmicro$vbump" ffms2 2>$DEVNULL; then
        FFMS2_LIBS="$FFMS2_LIBS $(${cross_prefix}pkg-config --libs ffms2)"
        FFMS2_CFLAGS="$FFMS2_LIBS $(${cross_prefix}pkg-config --cflags ffms2)"
        api_check="no"
    else
        api_check="yes"
    fi
    [ -z "$FFMS2_LIBS" ] && FFMS2_LIBS="-lffms2"

    if cc_check ffms.h "$FFMS2_CFLAGS $FFMS2_LIBS" "FFMS_DestroyVideoSource(0);" ; then
        ffms_input="yes"
    elif cc_check ffms.h "$FFMS2_CFLAGS $FFMS2_LIBS -lstdc++ $LAVF_LIBS" "FFMS_DestroyVideoSource(0);" ; then
        ffms_input="yes"
        FFMS2_LIBS="$FFMS2_LIBS -lstdc++ $LAVF_LIBS"
    fi

    if [ $api_check = "yes" -a $ffms_input = "yes" ]; then
        log_check "whether ffms2 version is at least $ffms_major.$ffms_minor$vmicro$vbump"
        $CC $CFLAGS $FFMS2_CFLAGS -c -o conftest -x c - >$DEVNULL 2>&1 <<EOF
#include <ffms.h>
#if FFMS_VERSION < (($ffms_major << 24) | ($ffms_minor << 16) | ($ffms_micro << 8) | $ffms_bump)
#error Requires ffms2 version 2.13.1
#endif
EOF
        [ $? = 0 ] && log_ok || { ffms_input="no"; log_fail; }
    fi
fi

if [ "$ffms_input" = "yes" ]; then
    LDFLAGSCLI="$FFMS2_LIBS $LDFLAGSCLI"
    [ -n "$FFMS2_CFLAGS" ] && CFLAGS="$CFLAGS $FFMS2_CFLAGS"
    define FFMS_INPUT
elif [ "$lavf_input" = "yes" ]; then
    LDFLAGSCLI="$LAVF_LIBS $LDFLAGSCLI"
    [ -n "$LAVF_CFLAGS" ] && CFLAGS="$CFLAGS $LAVF_CFLAGS"
fi

MP4_LDFLAGS="-lgpac_static"
if [ $SYS = MINGW ]; then
    MP4_LDFLAGS="$MP4_LDFLAGS -lwinmm"
fi
if [ "$mp4_output" = "auto" ] ; then
    mp4_output="no"
    if cc_check gpac/isomedia.h "$MP4_LDFLAGS" ; then
        if cc_check gpac/isomedia.h "$MP4_LDFLAGS" "gf_isom_set_pixel_aspect_ratio(0,0,0,0,0);" ; then
            mp4_output="yes"
        else
            echo "Warning: gpac is too old, update to 2007-06-21 UTC or later"
        fi
    fi
fi
if [ "$mp4_output" = "yes" ] ; then
    define MP4_OUTPUT
    LDFLAGSCLI="$LDFLAGSCLI $MP4_LDFLAGS"
fi

if [ "$avs_input" = "auto" ] ; then
    avs_input=no
    if [ $SYS = MINGW ] && cc_check avisynth_c.h ; then
        avs_input="yes"
        define AVS_INPUT
        define HAVE_AVISYNTH_C_H
    elif [ $SYS = MINGW ] && cc_check extras/avisynth_c.h ; then
        avs_input="yes"
        define AVS_INPUT
    fi
fi

if [ "$pic" = "yes" ] ; then
    CFLAGS="$CFLAGS -fPIC"
    ASFLAGS="$ASFLAGS -DPIC"
    # resolve textrels in the x86 asm
    cc_check stdio.h -Wl,-Bsymbolic && LDFLAGS="$LDFLAGS -Wl,-Bsymbolic"
fi

if [ "$debug" != "yes" -a "$gprof" != "yes" ]; then
    CFLAGS="$CFLAGS -s -fomit-frame-pointer"
    LDFLAGS="$LDFLAGS -s"
fi

if [ "$debug" = "yes" ]; then
    CFLAGS="-O1 -g $CFLAGS"
elif [ $ARCH = ARM ]; then
    # arm-gcc-4.2 produces incorrect output with -ffast-math
    # and it doesn't save any speed anyway on 4.4, so disable it
    CFLAGS="-O3 -fno-fast-math $CFLAGS"
else
    CFLAGS="-O3 -ffast-math $CFLAGS"
fi

if cc_check "stdio.h" "" "fseeko(stdin,0,0);" ; then
    define fseek fseeko
    define ftell ftello
elif cc_check "stdio.h" "" "fseeko64(stdin,0,0);" ; then
    define fseek fseeko64
    define ftell ftello64
fi

rm -f conftest*

# 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
LDFLAGSCLI=$LDFLAGSCLI
AR=$AR
RANLIB=$RANLIB
STRIP=$STRIP
AS=$AS
ASFLAGS=$ASFLAGS
EXE=$EXE
VIS=$vis
HAVE_GETOPT_LONG=$HAVE_GETOPT_LONG
DEVNULL=$DEVNULL
EOF

if [ "$shared" = "yes" ]; then
    API=$(grep '#define X264_BUILD' < x264.h | cut -f 3 -d ' ')
    if [ "$SYS" = "MINGW" ]; then
        echo "SONAME=libx264-$API.dll" >> config.mak
        echo 'IMPLIBNAME=libx264.dll.a' >> config.mak
        echo 'SOFLAGS=-Wl,--out-implib,$(IMPLIBNAME) -Wl,--enable-auto-image-base' >> config.mak
    elif [ "$SYS" = "MACOSX" ]; then
        echo "SOSUFFIX=dylib" >> config.mak
        echo "SONAME=libx264.$API.dylib" >> config.mak
        echo 'SOFLAGS=-dynamiclib -Wl,-single_module -Wl,-read_only_relocs,suppress -install_name $(DESTDIR)$(libdir)/$(SONAME)' >> config.mak
    elif [ "$SYS" = "SunOS" ]; then
        echo "SOSUFFIX=so" >> config.mak
        echo "SONAME=libx264.so.$API" >> config.mak
        echo 'SOFLAGS=-Wl,-h,$(SONAME)' >> config.mak
    else
        echo "SOSUFFIX=so" >> config.mak
        echo "SONAME=libx264.so.$API" >> config.mak
        echo 'SOFLAGS=-Wl,-soname,$(SONAME)' >> config.mak
    fi
    echo 'default: $(SONAME)' >> config.mak
fi

./version.sh

pclibs="-L$libdir -lx264 $libpthread"

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

cat > conftest.log <<EOF
Platform:   $ARCH
System:     $SYS
asm:        $asm
avs input:  $avs_input
lavf input: $lavf_input
ffms input: $ffms_input
mp4 output: $mp4_output
pthread:    $pthread
debug:      $debug
gprof:      $gprof
PIC:        $pic
shared:     $shared
visualize:  $vis
EOF

echo >> config.log
cat conftest.log >> config.log
cat conftest.log
rm conftest.log

echo
echo "You can run 'make' or 'make fprofiled' now."

