Skip to content
Snippets Groups Projects
configure 94.4 KiB
Newer Older
  • Learn to ignore specific revisions
  •         tools
        "
        FILES="
            Makefile
            common.mak
            subdir.mak
            doc/texi2pod.pl
            libavcodec/Makefile
    
            libavcodec/${arch}/Makefile
    
    Stefano Sabatini's avatar
    Stefano Sabatini committed
            libavcore/Makefile
    
            libavdevice/Makefile
            libavfilter/Makefile
            libavformat/Makefile
            libavutil/Makefile
            libpostproc/Makefile
            libswscale/Makefile
        "
    
        map 'mkdir -p $v' $DIRS;
    
        map 'test -f "$source_path/$v" && $ln_s "$source_path/$v" $v' $FILES
    
    enabled stripping || strip="echo skipping strip"
    
    
    cat > config.mak <<EOF
    # Automatically generated by configure - do not modify!
    ifndef FFMPEG_CONFIG_MAK
    FFMPEG_CONFIG_MAK=1
    FFMPEG_CONFIGURATION=$FFMPEG_CONFIGURATION
    prefix=$prefix
    LIBDIR=\$(DESTDIR)$libdir
    SHLIBDIR=\$(DESTDIR)$shlibdir
    INCDIR=\$(DESTDIR)$incdir
    BINDIR=\$(DESTDIR)$bindir
    DATADIR=\$(DESTDIR)$datadir
    MANDIR=\$(DESTDIR)$mandir
    SRC_PATH="$source_path"
    SRC_PATH_BARE=$source_path
    BUILD_ROOT="$PWD"
    
    ARCH=$arch
    CC=$cc
    AS=$as
    LD=$ld
    DEPCC=$dep_cc
    YASM=$yasmexe
    
    Måns Rullgård's avatar
    Måns Rullgård committed
    CP=cp -p
    
    LN_S=$ln_s
    STRIP=$strip
    CPPFLAGS=$CPPFLAGS
    CFLAGS=$CFLAGS
    ASFLAGS=$ASFLAGS
    CC_O=$CC_O
    LDFLAGS=$LDFLAGS
    FFSERVERLDFLAGS=$FFSERVERLDFLAGS
    SHFLAGS=$SHFLAGS
    YASMFLAGS=$YASMFLAGS
    BUILDSUF=$build_suffix
    FULLNAME=$FULLNAME
    LIBPREF=$LIBPREF
    LIBSUF=$LIBSUF
    LIBNAME=$LIBNAME
    SLIBPREF=$SLIBPREF
    SLIBSUF=$SLIBSUF
    EXESUF=$EXESUF
    EXTRA_VERSION=$extra_version
    DEPFLAGS=$DEPFLAGS
    CCDEP=$CCDEP
    ASDEP=$ASDEP
    CC_DEPFLAGS=$CC_DEPFLAGS
    AS_DEPFLAGS=$AS_DEPFLAGS
    HOSTCC=$host_cc
    HOSTCFLAGS=$host_cflags
    HOSTEXESUF=$HOSTEXESUF
    HOSTLDFLAGS=$host_ldflags
    HOSTLIBS=$host_libs
    TARGET_EXEC=$target_exec
    TARGET_PATH=$target_path
    SDL_LIBS=$sdl_libs
    SDL_CFLAGS=$sdl_cflags
    LIB_INSTALL_EXTRA_CMD=$LIB_INSTALL_EXTRA_CMD
    EXTRALIBS=$extralibs
    
    INSTALL=install
    
    LIBTARGET=${LIBTARGET}
    SLIBNAME=${SLIBNAME}
    SLIBNAME_WITH_VERSION=${SLIBNAME_WITH_VERSION}
    SLIBNAME_WITH_MAJOR=${SLIBNAME_WITH_MAJOR}
    SLIB_CREATE_DEF_CMD=${SLIB_CREATE_DEF_CMD}
    SLIB_EXTRA_CMD=${SLIB_EXTRA_CMD}
    SLIB_INSTALL_EXTRA_CMD=${SLIB_INSTALL_EXTRA_CMD}
    SLIB_UNINSTALL_EXTRA_CMD=${SLIB_UNINSTALL_EXTRA_CMD}
    
    Måns Rullgård's avatar
    Måns Rullgård committed
    SAMPLES=$samples
    
    get_version(){
        name=$1
        file=$source_path/$2
    
        eval $(grep "#define ${name}_VERSION_M" "$file" | awk '{ print $2"="$3 }')
        eval ${name}_VERSION=\$${name}_VERSION_MAJOR.\$${name}_VERSION_MINOR.\$${name}_VERSION_MICRO
    
        lcname=$(tolower $name)
        eval echo "${lcname}_VERSION=\$${name}_VERSION" >> config.mak
        eval echo "${lcname}_VERSION_MAJOR=\$${name}_VERSION_MAJOR" >> config.mak
    
    get_version LIBSWSCALE  libswscale/swscale.h
    get_version LIBPOSTPROC libpostproc/postprocess.h
    get_version LIBAVCODEC  libavcodec/avcodec.h
    
    Stefano Sabatini's avatar
    Stefano Sabatini committed
    get_version LIBAVCORE   libavcore/avcore.h
    
    get_version LIBAVDEVICE libavdevice/avdevice.h
    get_version LIBAVFORMAT libavformat/avformat.h
    get_version LIBAVUTIL   libavutil/avutil.h
    
    get_version LIBAVFILTER libavfilter/avfilter.h
    
    cat > $TMPH <<EOF
    /* Automatically generated by configure - do not modify! */
    #ifndef FFMPEG_CONFIG_H
    #define FFMPEG_CONFIG_H
    #define FFMPEG_CONFIGURATION "$(c_escape $FFMPEG_CONFIGURATION)"
    
    #define FFMPEG_LICENSE "$(c_escape $license)"
    
    #define FFMPEG_DATADIR "$(eval c_escape $datadir)"
    #define CC_TYPE "$cc_type"
    #define CC_VERSION $cc_version
    #define restrict $_restrict
    
    #define ASMALIGN(ZEROBITS) ".p2align " #ZEROBITS "\\n\\t"
    
    #define EXTERN_PREFIX "${extern_prefix}"
    #define EXTERN_ASM ${extern_prefix}
    EOF
    
    test -n "$malloc_prefix" &&
        echo "#define MALLOC_PREFIX $malloc_prefix" >>$TMPH
    
    
    if enabled small || disabled optimizations; then
    
        echo "#undef  av_always_inline"  >> $TMPH
    
        echo "#define av_always_inline"  >> $TMPH
    fi
    
    
    print_config ARCH_   $TMPH config.mak $ARCH_LIST
    print_config HAVE_   $TMPH config.mak $HAVE_LIST
    
    print_config CONFIG_ $TMPH config.mak $CONFIG_LIST       \
    
                                          $PARSER_LIST       \
                                          $BSF_LIST          \
                                          $DEMUXER_LIST      \
                                          $MUXER_LIST        \
    
    cat >>config.mak <<EOF
    ACODEC_TESTS=$(print_enabled -n _test $ACODEC_TESTS)
    VCODEC_TESTS=$(print_enabled -n _test $VCODEC_TESTS)
    LAVF_TESTS=$(print_enabled   -n _test $LAVF_TESTS)
    
    LAVFI_TESTS=$(print_enabled  -n _test $LAVFI_TESTS)
    
    SEEK_TESTS=$(print_enabled   -n _test $SEEK_TESTS)
    
    echo "#endif /* FFMPEG_CONFIG_H */" >> $TMPH
    
    echo "endif # FFMPEG_CONFIG_MAK" >> config.mak
    
    Diego Biurrun's avatar
    Diego Biurrun committed
    # Do not overwrite an unchanged config.h to avoid superfluous rebuilds.
    
    cp_if_changed $TMPH config.h
    
    cat > $TMPH <<EOF
    /* Generated by ffconf */
    #ifndef AVUTIL_AVCONFIG_H
    #define AVUTIL_AVCONFIG_H
    EOF
    
    print_config AV_HAVE_ $TMPH /dev/null $HAVE_LIST_PUB
    
    echo "#endif /* AVUTIL_AVCONFIG_H */" >> $TMPH
    
    cp_if_changed $TMPH libavutil/avconfig.h
    
    
    echo "config:$arch:$subarch:$cpu:$target_os:$cc_ident:$FFMPEG_CONFIGURATION" >config.fate
    
    
    test -n "$WARNINGS" && printf "\n$WARNINGS"
    
    
    # build pkg-config files
    
    pkgconfig_generate(){
    name=$1
    
    shortname=${name#lib}${build_suffix}
    
    comment=$2
    version=$3
    libs=$4
    requires=$5
    
    exec_prefix=\${prefix}
    
    Name: $name
    Description: $comment
    Version: $version
    
    Requires: $(enabled shared || echo $requires)
    
    Requires.private: $(enabled shared && echo $requires)
    
    Libs: -L\${libdir} -l${shortname} $(enabled shared || echo $libs)
    
    Libs.private: $(enabled shared && echo $libs)
    
    Cflags: -I\${includedir}
    
    cat <<EOF > $name/$name-uninstalled.pc
    
    libdir=\${pcfiledir}
    
    includedir=${source_path}
    
    Name: $name
    Description: $comment
    Version: $version
    Requires: $requires
    
    Libs: \${libdir}/${LIBPREF}${shortname}${LIBSUF} $libs
    
    pkgconfig_generate libavutil "FFmpeg utility library" "$LIBAVUTIL_VERSION"
    
    pkgconfig_generate libavcore "FFmpeg multimedia shared core utilities library" "$LIBAVCORE_VERSION" "" "libavutil = $LIBAVUTIL_VERSION"
    
    pkgconfig_generate libavcodec "FFmpeg codec library" "$LIBAVCODEC_VERSION" "$extralibs" "libavcore = $LIBAVCORE_VERSION"
    
    pkgconfig_generate libavformat "FFmpeg container format library" "$LIBAVFORMAT_VERSION" "$extralibs" "libavcodec = $LIBAVCODEC_VERSION"
    pkgconfig_generate libavdevice "FFmpeg device handling library" "$LIBAVDEVICE_VERSION" "$extralibs" "libavformat = $LIBAVFORMAT_VERSION"
    
    Stefano Sabatini's avatar
    Stefano Sabatini committed
    pkgconfig_generate libavfilter "FFmpeg video filtering library" "$LIBAVFILTER_VERSION" "$extralibs" "libavcore = $LIBAVCORE_VERSION"
    pkgconfig_generate libpostproc "FFmpeg post processing library" "$LIBPOSTPROC_VERSION"
    
    pkgconfig_generate libswscale "FFmpeg image rescaling library" "$LIBSWSCALE_VERSION" "" "libavutil = $LIBAVUTIL_VERSION"