代码拉取完成,页面将自动刷新
#!/bin/sh
#
# GPAC configure script
# (c) 2003-2022 Telecom ParisTech
# Authors: Jean Le Feuvre, Romain Bouqueau, Aurelien David
#
#set -v
#set temporary file name
if test ! -z "$TMPDIR" ; then
TMPDIR1="${TMPDIR}"
elif test ! -z "$TEMPDIR" ; then
TMPDIR1="${TEMPDIR}"
else
TMPDIR1="/tmp"
fi
#remember the ./configure command line
GPAC_CONFIGURATION="$@"
TMPC="${TMPDIR1}/gpac-conf-${RANDOM}-$$-${RANDOM}.c"
TMPH="${TMPDIR1}/gpac-conf-${RANDOM}-$$-${RANDOM}.h"
TMPCXX="${TMPDIR1}/gpac-conf-${RANDOM}-$$-${RANDOM}.cpp"
TMPE="${TMPDIR1}/gpac-conf-${RANDOM}-$$-${RANDOM}"
TMPO="${TMPDIR1}/gpac-conf-${RANDOM}-$$-${RANDOM}.o"
TMPS="${TMPDIR1}/gpac-conf-${RANDOM}-$$-${RANDOM}.S"
TMPL="${TMPDIR1}/gpac-conf-${RANDOM}-$$-${RANDOM}.LOG"
# DO NOT DECLARE variables called disable_, this is reserved for features:
#each feature FOO declare upon load the variable disable_FOO ('-' replaced with '_' in var name)
#default parameters
DESTDIR=""
prefix="/usr/local"
mandir=""
cross_prefix=""
targetos=""
dxsdk_path=""
cc_orig=$CC
if test "$cc_orig" = "" ; then
cc_orig="gcc"
fi
cxx_orig=$CXX
if test "$cxx_orig" = "" ; then
cxx_orig="g++"
fi
ar="ar"
ranlib="ranlib"
make="make"
strip="strip"
pkg_config="pkg-config"
windres="windres"
readelf="readelf"
install="${INSTALL:=install}"
instflags="${INSTFLAGS:=-p}"
cpu=`uname -m`
debuginfo="no"
sdl_path=""
sdl_local="no"
sdl_static="no"
verbose="no"
libdir="lib"
no_gcc_opt="no"
use_fixed_point="no"
use_memory_tracking="no"
gprof_build="no"
want_pic="no"
want_gcov="no"
enable_sanitizer="no"
libgpac_cflags=""
libgpac_extralibs=""
static_build="no"
static_bin="no"
static_modules="no"
lm_lib=""
has_directx="no"
win32="no"
mingw32="no"
cygwin="no"
linux="no"
freebsd="no"
darwin="no"
sunos="no"
alt_macosx_dir=""
Mac_Applications=""
extralibs="-lm"
bigendian="no"
SHFLAGS=-shared
need_inet_aton="no"
CFLAGS=""
CXXFLAGS=""
GPAC_SH_FLAGS=-lpthread
DYN_LIB_SUFFIX=".so"
X11_PATH="/usr/X11R6"
INSTFLAGS=""
is_64="no"
#flags not set by generic lib config
has_x11="no"
has_x11_shm="no"
has_x11_xv="no"
has_x11_glx="no"
ffmpeg_vvc="no"
has_strlcpy="no"
ffmpeg_extra_ldflags=""
nb_features=0
all_features=""
all_descs=""
push_feature()
{
name=$1
#var=${name//[-]/_}
var=$(printf '%s' "$name" | tr '-' '_')
desc="$2"
fc=`echo $desc | cut -c1-1`
if test "$fc" = "!" ; then
eval "disable_$var=\"yes\""
else
eval "disable_$var=\"no\""
fi
if [ -z $all_features ] ; then
all_features="$1"
all_descs="$desc"
else
all_features="$all_features|$1"
all_descs="$all_descs|$desc"
fi
nb_features=$((nb_features+1))
}
#all features enabled with --enable- or --disable-
#if first character is !, feature is disabled by default otherwise enabled by default
push_feature "log" "logging support"
push_feature "3d" "3D rendering"
push_feature "crypto" "crypto support"
push_feature "svg" "SVG 1.2 support"
push_feature "vrml" "MPEG-4/VRML/X3D support"
push_feature "x3d" "X3D-only support"
push_feature "depth" "!depth handling in the compositor"
push_feature "odf" "full support of MPEG-4 OD Framework"
push_feature "bifs" "MPEG-4 BIFS decoding"
push_feature "bifs-enc" "MPEG-4 BIFS encoding"
push_feature "laser" "MPEG-4 LaSer encode and decode"
push_feature "seng" "scene encoder engine"
push_feature "qtvr" "import of Cubic QTVR files"
push_feature "swf" "SWF import"
push_feature "scene-stats" "scene graph statistics"
push_feature "scene-dump" "scene graph dump"
push_feature "scene-encode" "BIFS & LASeR to ISOBMFF"
push_feature "loader-isoff" "scene loading from ISO File Format"
push_feature "loader-bt" "scene loading from BT/VRML files"
push_feature "loader-xmt" "scene loading from XMT/X3D files"
push_feature "od-dump" "MPEG-4 OD dump"
push_feature "od-parse" "MPEG-4 OD parse"
push_feature "scenegraph" "scenegraph, scene parsers and player (compositor)"
push_feature "smgr" "scene manager"
push_feature "codecs" "All audio and video codec support"
push_feature "parsers" "AV bitstream parsers"
push_feature "import" "media importers"
push_feature "export" "media exporters"
push_feature "avi" "AVI read and write"
push_feature "ogg" "OGG read and write"
push_feature "m2ps" "MPEG-2 PS read"
push_feature "m2ts" "MPEG-2 TS demultiplexer"
push_feature "m2ts-mux" "MPEG-2 TS multiplexer"
push_feature "saf" "SAF container"
push_feature "isom-dump" "ISOBMFF file dump"
push_feature "isoff" "ISOBMFF support"
push_feature "isoff-write" "ISOBMFF edit/write support"
push_feature "isoff-hint" "ISOBMFF hinting support"
push_feature "isoff-frag" "ISOBMFF fragments support"
push_feature "isoff-hds" "Adobe HDS in ISOBMFF support"
push_feature "streaming" "RTP/RTSP/SDP support"
push_feature "player" "player (compositor)"
push_feature "dvbx" "!DVB-specific tools (MPE, FEC, DSM-CC)"
push_feature "vobsub" "VobSub support"
push_feature "ttxt" "TTXT (3GPP / MPEG-4 Timed Text) support"
push_feature "ttml" "TTML/EBU TTD support"
push_feature "vtt" "WebVTT support"
push_feature "mpd" "DASH MPD read/write support"
push_feature "dash" "DASH and HLS support"
push_feature "hevc" "HEVC support"
push_feature "route" "ROUTE (ATSC3) support"
push_feature "qjs" "QuickJS support"
push_feature "qjs-libc" "QuickJS libc module support"
push_feature "qjs-stack" "!stack depth checking in QuickJS (WILL CRASH in multithreaded modes)"
push_feature "nvdec" "NVDec support"
push_feature "tinygl" "!TinyGL support"
ar_it=""
get_item()
{
idx=$1
IFS='|'
set -- $2
eval "ar_it=\${$idx}"
IFS=' '
}
get_item2()
{
idx=$1
set -- $2
eval "ar_it=\${$idx}"
}
nb_it=0
get_size()
{
nb_it=`echo "$1" | wc -w`
}
#zlib MUST be first
all_packages="zlib opensvc openhevc platinum freetype ssl jpeg openjpeg png mad a52 xvid faad ffmpeg freenect vorbis theora ogg nghttp2"
all_packages="$all_packages oss dvb4linux alsa pulseaudio jack directfb hid lzma tinygl vtb"
disabled_packages=""
#init all has_FOO=no and set FOO_cflags=
for pck in $all_packages ; do
eval "has_$pck=\"no\""
eval "cflags_$pck=\"\""
done
logs="config.log"
echo "Logs for GPAC configure $GPAC_CONFIGURATION" > $logs
#configure usage
if test x"$1" = x"-h" -o x"$1" = x"--help" ; then
cat << EOF
Usage: configure [options]
Options: [defaults in brackets after descriptions]
GPAC build options:
--help print this message
--prefix=PREFIX install in PREFIX [$prefix]
--libdir=DIR lib dir in DIR [$libdir]
--mandir=DIR man documentation in DIR [PREFIX/share/man]
--verbose enable verbose building [$verbose]
--source-path=PATH path of source code [$source_path]
--cross-prefix=PREFIX use PREFIX for compile tools [$cross_prefix]
--target-os=TARGETOS use TARGETOS for compile tools [$targetos]
--cc=CC use C compiler CC [$cc]
--cxx=CXX use C++ compiler CXX [$cxx] (also valid as --cpp=CXX)
--make=MAKE use specified make [$make]
--extra-cflags=ECFLAGS add ECFLAGS to CFLAGS [$CFLAGS]
--extra-ldflags=ELDFLAGS add ELDFLAGS to LDFLAGS [$LDFLAGS]
--extra-libs=ELIBS add ELIBS [$ELIBS]
--cpu=CPU force cpu to CPU [$cpu]
--enable-debug produce debug version
--enable-gprof enable profiling
--enable-gcov enable coverage
--enable-pic enable Position Independant Code for shared objects
--strip enable strip
--std-allocator uses standard lib memory allocator
--enable-sanitizer enable address sanitizer
--enable-afl enable instrumentation for American Fuzzy Lop
--enable-afl-clang enable instrumentation for American Fuzzy Lop using afl-clang(++)
--disable-opt disable GCC optimizations
--static-build link statically against libgpac but still allow dependencies to shared libraries (enable --static-modules)
--static-bin enable static linking of MP4Box and gpac only (will enable --static-build), disable all libraries not linkable statically.
--sdl-cfg=SDL_PATH specify path to sdl-config for local install [$sdl_path]
--enable-sdl-static use static SDL linking [default=no]
--X11-path=X11_PATH specify path for X11 includes and libraries [$X11_PATH]
--dxsdk-path=DX_PATH specify DirectX SDK for MinGW [$dxsdk_path]
--extra-ff-ldflags=EF add EF flags to FFMPEG LDFLAGS [$ffmpeg_extra_ldflags]
GPAC core configuration:
--static-modules embed modules in libgpac rather than using dynamic library modules
--enable-fixed-point enable fixed-point math
--disable-ipv6 disable IPV6 support
--enable-mem-track enable tracking of all memory allocated by gpac
--disable-x11 disable X11
--disable-x11-shm disable X11 shared memory support
--disable-x11-xv disable X11 Xvideo support
--enable-depth enables depth handling in the compositor (experimental for stereoscopic rendering)
--disable-all disables all features in libgpac (see below)
--isomedia-only disables all features except "parsers import export isom-dump isoff isoff-write isoff-hint isoff-frag isoff-hds ttxt ttml vtt mpd dash hevc"
Extra libraries configuration:
You can turn a library off or force using the local version in gpac/extra_lib/
--use-FOO=no disable library FOO
--use-FOO=local force use of library FOO in gpac/extra_lib/include, gpac/extra_lib/lib/gcc/bin/
--use-FOO=system force using system version only of library FOO
--use-FOO=PATH force use of library FOO in \$PATH/include, \$PATH/lib
Extra libraries used are: $all_packages
EOF
cat << EOF
Features for libgpac configuration:
Feature FOO can be enabled with --enable-FOO or disabled with --disable-FOO
EOF
idx=1
while [ $idx -le $nb_features ]; do
get_item $idx "$all_features"
name="$ar_it"
get_item $idx "$all_descs"
desc="$ar_it"
enabled="on"
fc=`echo $desc | cut -c1-1`
if test "$fc" = "!" ; then
enabled="disabled"
desc=`echo $desc | cut -c2-`
fi
while [ ${#name} -le 12 ]
do
name="$name "
done
echo " $name $desc (default: $enabled)"
idx=$((idx+1))
done
cat << EOF
NOTE: The object files are built at the place where configure is launched
EOF
exit 1
fi
#end help
#append $2 to $1 if not already present, or prepend if $3 is yes
append() {
if [ -z "$2" ] ; then
return
fi
prepend="no"
if test "$3" = "yes" ; then
prepend="yes"
fi
all_vars="$2"
get_size "$all_vars"
nb_items=$nb_it
skip="no"
var=$1
idx=1
while [ $idx -le $nb_items ]; do
get_item2 $idx "$all_vars"
n="$ar_it"
if test "$n" = "-framework" ; then
idx=$((idx+1))
get_item2 $idx "$all_vars"
n2="$ar_it"
n="$n $n2"
fi
eval "tmpv=\"\$$var\""
case "$tmpv" in
*"$n"*) idx=$((idx+1))
continue
;;
esac
if [ -z "$var" ] ; then
eval "$var=\"$n\""
elif test "$prepend" = "yes" ; then
eval "$var=\"$n \$$var\""
else
eval "$var=\"\$$var $n\""
fi
idx=$((idx+1))
done
}
#set feature $1 to $2 (yes or no)
set_feature()
{
name="$1"
disable_feat="$2"
idx=1
while [ $idx -le $nb_features ]; do
get_item $idx "$all_features"
iname="$ar_it"
if test "$iname" = "$name" ; then
var=$(printf '%s' "$name" | tr '-' '_')
eval "disable_$var=\"$disable_feat\""
return
fi
idx=$((idx+1))
done
#allow --disable for packages
if test "$disable_feat" = "yes" ; then
for i in $all_packages ; do
pck_name="$i"
case "$name" in
"$pck_name"*) append disabled_packages "$name "
return
;;
esac
done
fi
echo "! Unknown feature \"$name\", ignoring - please check help (-h) ! "
}
#disable all features
disable_all_features()
{
idx=1
while [ $idx -le $nb_features ]; do
get_item $idx "$all_features"
name="$ar_it"
var=$(printf '%s' "$name" | tr '-' '_')
eval "disable_$var=\"yes\""
idx=$((idx+1))
done
}
#enable all features in $1
enable_features ()
{
params="$1"
for i in $params ; do
set_feature "$i" "no"
done
}
#store $1 (FOO=BAR from --use-FOO=BAR) for later package check
lib_args=""
set_package ()
{
for i in $all_packages ; do
pck_name="$i="
case "$1" in
"$pck_name"*) opt=`echo $1 | cut -d '=' -f 2`
if [ "$opt" = "local" -o "$opt" = "system" -o "$opt" = "no" ] ; then
lib_args="$lib_args $1"
elif [ -d "$opt" ]; then
lib_args="$lib_args $1"
else
echo "Invalid package option $opt - please check help (-h)"
exit 1
fi
return
;;
esac
done
echo "no package pck $1 - please check help (-h)"
exit 1
}
#parse all options
for opt do
case "$opt" in
--prefix=*) prefix=`echo $opt | cut -d '=' -f 2`
;;
--libdir=*) libdir=`echo $opt | cut -d '=' -f 2`
;;
--mandir=*) mandir=`echo $opt | cut -d '=' -f 2`
;;
--cross-prefix=*) cross_prefix=`echo $opt | cut -d '=' -f 2` && echo "cross-prefix detected: $cross_prefix"
;;
--target-os=*) targetos=`echo $opt | cut -d '=' -f 2` && echo "target-os detected: $targetos"
;;
--cc=*) cc_orig=`echo $opt | cut -d '=' -f 2`
;;
--cxx=*) cxx_orig=`echo $opt | cut -d '=' -f 2`
;;
--cpp=*) cxx_orig=`echo $opt | cut -d '=' -f 2`
;;
--make=*) make=`echo $opt | cut -d '=' -f 2`
;;
--extra-cflags=*) CFLAGS="$CFLAGS ${opt#--extra-cflags=}"
;;
--extra-ldflags=*) LDFLAGS="$LDFLAGS ${opt#--extra-ldflags=}"
;;
--extra-ff-ldflags=*) ffmpeg_extra_ldflags=`echo $opt | cut -d '=' -f 2`
;;
--extra-libs=*) extralibs=${opt#--extra-libs=}
;;
--cpu=*) cpu=`echo $opt | cut -d '=' -f 2`
;;
--enable-debug) debuginfo="yes";
;;
--disable-opt) no_gcc_opt="yes"
;;
--enable-pic) want_pic="yes";
;;
--enable-gcov) want_gcov="yes";
;;
--enable-afl) cc_orig="afl-gcc"; cxx_orig="afl-g++"
;;
--enable-afl-clang) cc_orig="afl-clang"; cxx_orig="afl-clang++"
;;
--verbose) verbose="yes";
;;
--static-bin) static_bin="yes"
;;
--static-mp4box) echo "$opt deprecated, use --static-bin instead"
static_bin="yes"
;;
--enable-sanitizer) enable_sanitizer="yes"
;;
--static-modules) static_modules="yes"
;;
--sdl-cfg=*) sdl_path=`echo $opt | cut -d '=' -f 2`; sdl_local="yes"
;;
--enable-sdl-static=*) sdl_static="yes"
;;
--enable-jack) has_jack="yes"
;;
--X11-path=*) X11_PATH=`echo $opt | cut -d '=' -f 2`
;;
--dxsdk-path=*) dxsdk_path=`echo $opt | cut -d '=' -f 2`
;;
--disable-pulseaudio) has_pulseaudio="no"
;;
--disable-oggvorbis) has_oggvorbis="no"
;;
--disable-jack) has_jack="no"
;;
--disable-alsa) has_alsa="no"
;;
--enable-gprof) gprof_build="yes";
;;
--static-build) static_build="yes";
;;
--enable-static-bin)
echo "$opt deprecated, use --static-build instead"
static_build="yes";
;;
--enable-fixed-point) use_fixed_point="yes"
;;
--strip) INSTFLAGS="-s $INSTFLAGS"
;;
--enable-mem-track) use_memory_tracking="yes"
;;
--disable-x11) append disabled_packages "x11"
;;
--disable-x11-shm) append disabled_packages "x11_shm"
;;
--disable-x11-xv) append disabled_packages "x11_xv"
;;
--disable-all) disable_all_features
;;
--isomedia-only) disable_all_features
#disable all packages except first one "zlib"
disabled_packages=`echo $opt | cut -c6-`
append disabled_packages "x11 sdl directx "
#enable all parsers, dash and isobmff related
enable_features "parsers import export isom-dump isoff isoff-write isoff-hint isoff-frag isoff-hds ttxt ttml vtt mpd dash hevc"
;;
--use-*) v=`echo $opt | cut -c7-`
set_package "$v"
;;
--disable-ipv6) append disabled_packages "ipv6 "
;;
--disable-*) v=`echo $opt | cut -c11-`
set_feature "$v" "yes"
;;
--enable-*) v=`echo $opt | cut -c10-`
set_feature "$v" "no"
;;
*) echo "! Unrecognized option $opt, ignoring !"
;;
esac
done
cc="${cc_orig}"
cxx="${cxx_orig}"
case "$cpu" in
i386|i486|i586|i686|i86pc|BePC)
cpu="x86"
;;
x86_64|amd64)
cpu="x86"
if [ "$linux" = "yes" -o "$darwin" = "yes" ] ; then
is_64="yes"
fi
case `uname -s` in
SunOS)
canon_arch=`isainfo -n`
;;
Darwin)
canon_arch="x86_64"
;;
*)
canon_arch="`$cc -dumpmachine | sed -e 's,\([^-]*\)-.*,\1,'`"
;;
esac
if [ x"$canon_arch" = x"x86_64" -o x"$canon_arch" = x"amd64" ]; then
if [ -z "`echo $CFLAGS | grep -- -m32`" ]; then
cpu="x86_64"
want_pic="yes"
is_64="yes"
fi
fi
;;
armv4l|arm)
cpu="armv4l"
;;
aarch64)
cpu="aarch64"
if [ -z "`echo $CFLAGS | grep -- -m32`" ]; then
is_64="yes"
PIC_CFLAGS="-fPIC -DPIC"
want_pic="yes"
fi
;;
alpha)
cpu="alpha"
;;
ppc64)
cpu="powerpc"
;;
"Power Macintosh"|ppc)
cpu="powerpc"
;;
mips)
cpu="mips"
;;
sh4|sh4a|sh)
cpu="sh4"
;;
sun4u|sun4v)
cpu="sparc"
if [ -z "`echo $CFLAGS | grep -- -m32`" ]; then
is_64="yes"
PIC_CFLAGS="-fPIC -DPIC"
want_pic="yes"
fi
;;
*)
cpu="unknown"
;;
esac
#checking for CFLAGS
if test -z "$CFLAGS"; then
CFLAGS=""
fi
cc="${cross_prefix}${cc}"
#for ccache
cc="${cc}"
cxx="${cross_prefix}${cxx}"
ar="${cross_prefix}${ar}"
ranlib="${cross_prefix}${ranlib}"
strip="${cross_prefix}${strip}"
windres="${cross_prefix}${windres}"
if test "$enable_sanitizer" = "yes" ; then
if test "$static_bin" = "yes" ; then
echo "Cannot use static bin with sanitizer, disabling static bin"
static_bin="no"
fi
fi
if test "$static_bin" = "yes" ; then
pkg_config="${pkg_config} --static"
if test "$darwin" != "yes" ; then
LDFLAGS="-static $LDFLAGS"
fi
else
pkg_config="${pkg_config}"
fi
#check pkg_config
if test "$cross_prefix" = "" ; then
if ! $pkg_config --version >/dev/null 2>>$logs ; then
pkg_config="no"
fi
fi
#find source path
source_path="`echo $0 | sed -e 's#/configure##'`"
source_path_used="yes"
if test -z "$source_path" -o "$source_path" = "." ; then
source_path="`pwd`"
source_path_used="no"
build_path=$source_path
else
source_path="`cd \"$source_path\"; pwd`"
build_path="`pwd`"
fi
#OS specific
if test "$targetos" = "" ; then
targetos=`uname -s`
fi
case $targetos in
BeOS)
prefix="/boot/home/config"
CFLAGS="$CFLAGS -DPIC -fomit-frame-pointer"
# 3 gcc releases known for BeOS, each with ugly bugs
gcc_version="$($cc -v 2>>$logs | grep version | cut -d ' ' -f3-)"
case "$gcc_version" in
2.9-beos-991026*|2.9-beos-000224*) echo "R5/GG gcc"
;;
*20010315*) echo "BeBits gcc"
CFLAGS="$CFLAGS -fno-expensive-optimizations"
;;
esac
SHFLAGS=-nostart
#no need for libm, but the inet stuff
#check for BONE
if (echo $BEINCLUDES|grep 'headers/be/bone' >/dev/null); then
extralibs="-lbind -lsocket"
else
need_inet_aton="yes"
extralibs="-lnet"
fi
;;
SunOS)
make="gmake"
readelf="greadelf"
LDFLAGS="$LDFLAGS"
instflags=""
#check for 64-bit
cat > $TMPC << EOF
#include <stdio.h>
int main( void ) { return 0; }
EOF
CFLAGS_NO_LTO=$(echo ${CFLAGS} | sed -e 's/\ -flto[-A-Za-z0-9=]*//g')
$cc ${CFLAGS_NO_LTO} -o $TMPO $TMPC 2>>$logs && $($readelf -h $TMPO | grep "Class:.*ELF64$" >/dev/null 2>>$logs)
if test $? -eq 0; then
is_64="yes"
fi
if test "$is_64" = "yes"; then
if test "$cpu" = "x86_64"; then
libdir=lib/amd64
elif test "$cpu" = "sparc"; then
libdir=lib/sparcv9
fi
fi
sunos="yes"
need_inet_aton="yes"
extralibs="$extralibs -lsocket -lnsl"
;;
FreeBSD)
make="gmake"
LDFLAGS="$LDFLAGS -export-dynamic"
CFLAGS="$CFLAGS -pthread"
GPAC_SH_FLAGS=-pthread
freebsd="yes"
;;
BSD/OS)
extralibs="-lpoll -lgnugetopt -lm"
make="gmake"
;;
Darwin)
CFLAGS_DIR="-I$prefix/include"
if test "$static_bin" = "yes" ; then
LDFLAGS="-L$prefix/$libdir"
else
LDFLAGS="$LDFLAGS -L$prefix/$libdir"
fi
if test -d /sw/bin ; then
alt_macosx_dir="/sw"
CFLAGS_DIR="-I/sw/include $CFLAGS_DIR"
LDFLAGS="-L/sw/lib $LDFLAGS"
elif test -d /opt/local/bin ; then
alt_macosx_dir="/opt/local"
CFLAGS_DIR="-I/opt/local/include $CFLAGS_DIR"
LDFLAGS="-L/opt/local/lib $LDFLAGS"
fi
CFLAGS="$CFLAGS_DIR $CFLAGS"
Mac_Applications="/Applications"
SHFLAGS="-dynamiclib"
DYN_LIB_SUFFIX=".dylib"
extralibs=""
GPAC_SH_FLAGS=""
X11_PATH=""
strip="strip -x"
if test "$is_64" = "yes" ; then
LDFLAGS="$LDFLAGS"
fi
darwin="yes"
gcc_version=`$cc -v 2>>$logs | grep version | cut -d ' ' -f3`
case "$gcc_version" in
*2.95*)
CFLAGS="$CFLAGS -no-cpp-precomp -pipe -fomit-frame-pointer"
;;
3.*)
CFLAGS="$CFLAGS -no-cpp-precomp -pipe -fomit-frame-pointer -mdynamic-no-pic -fno-common"
;;
4.*)
CFLAGS="$CFLAGS -pipe -fomit-frame-pointer -fno-common"
;;
esac
;;
MINGW32*|mingw32|MINGW64*|mingw64|msys*|MSYS*)
mingw32="yes"
win32="yes"
want_pic="no"
#ugly patch for msys2 mingw32/mingw64 where toolchain is not properly setup
if [ x"$MSYSTEM" = x"MSYS" ] && [ -e /mingw64 ]; then
extralibs="$extralibs -lws2_32 -lwinmm -limagehlp"
CFLAGS="$CFLAGS -I/mingw64/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64"
LDFLAGS="$LDFLAGS -L/mingw64/lib"
elif [ x"$MSYSTEM" = x"MSYS" ] && [ -e /mingw32 ]; then
extralibs="-L/mingw32/lib $extralibs -lws2_32 -lwinmm -limagehlp"
CFLAGS="$CFLAGS -I/mingw32/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64"
LDFLAGS="$LDFLAGS -L/mingw32/lib"
else
extralibs="$extralibs -lws2_32 -lwinmm -limagehlp -ldbghelp"
CFLAGS="$CFLAGS -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64"
fi
LDFLAGS="$LDFLAGS"
if test "$cross_prefix" != "" ; then
GPAC_SH_FLAGS=""
fi
;;
CYGWIN*|cygwin*)
extralibs="$extralibs -lws2_32 -lwinmm"
cygwin="yes"
win32="yes"
;;
Linux|linux|android)
LDFLAGS="$LDFLAGS -Wl,--warn-common -Wl,-z,defs"
linux="yes"
case "$cpu" in
sh4)
CFLAGS="$CFLAGS -isystem \"$prefix/include\""
;;
esac
cat > $TMPC << EOF
#include <sys/cdefs.h>
#if !defined (__BIONIC__)
#error
#endif
EOF
if $cc -c $CFLAGS $TMPC 0>/dev/null 2>$TMPL ; then
#bionic libc (android)
CFLAGS="$CFLAGS -DPTHREAD_HAS_NO_CANCEL"
GPAC_SH_FLAGS=""
fi
;;
*) ;;
esac
#defines directory for binaries and libs (ex. for TinyGL)
target_bin_dir=""
if test "$cross_prefix" = "" ; then
target_bin_dir=`${cc} -v 2>>$logs | sed -n '2p' | awk ' {print $2}'`-${cc_orig}
else
target_bin_dir=${cross_prefix}${cc_orig}
fi
#if test "$source_path_used" = "yes" ; then
mkdir -p extra_lib
mkdir -p extra_lib/lib
mkdir -p extra_lib/lib/gcc
#fi
local_inc=$source_path/extra_lib/include
local_lib=$source_path/extra_lib/lib/gcc
execdir=$source_path/bin/gcc
dolog() {
rv=$?
if [ $rv -eq 0 ] ; then
return 0;
fi
echo "*** CC/CXX Test Failed (args $@) : ">>$logs
echo "">>$logs
cat $TMPL >> $logs
echo "">>$logs
echo "Source was: ">>$logs
cat $TMPC >> $logs
echo "">>$logs
echo "">>$logs
return 1;
}
docc() {
$cc -o $TMPO $TMPC $@ 0>/dev/null 2>$TMPL
dolog $@
}
docxx() {
#for logs
cat $TMPCXX > $TMPC
$cc -o $TMPO $TMPCXX $@ 0>/dev/null 2>$TMPL
dolog $@
}
#check GCC flags support
cat > $TMPC << EOF
#include <stdio.h>
int main( void ) { return 0; }
EOF
CFLAGS="$CFLAGS -Wall"
if docc -fno-strict-aliasing ; then
CFLAGS="$CFLAGS -fno-strict-aliasing"
fi
CXXFLAGS="$CFLAGS"
if docc -lz -Wno-pointer-sign ; then
CFLAGS="$CFLAGS -Wno-pointer-sign"
fi
#GCC opt
if test "$no_gcc_opt" = "no"; then
CFLAGS="-O2 $CFLAGS"
else
CFLAGS="-O0 $CFLAGS"
fi
#GCC PIC
if test "$cross_prefix" != "" ; then
want_pic="no"
fi
if test "$want_pic" = "yes" ; then
CFLAGS="$CFLAGS -fPIC -DPIC"
CXXFLAGS="$CXXFLAGS -fPIC -DPIC"
fi
if test "$want_gcov" = "yes" ; then
CFLAGS="$CFLAGS --coverage"
CXXFLAGS="$CXXFLAGS --coverage"
LDFLAGS="$LDFLAGS --coverage"
fi
#force use of cflags with cc
cc_naked=$cc
cxx_naked=$cxx
cc="$cc $CFLAGS"
cxx="$cxx $CXXFLAGS"
#check sse support
cat > $TMPC << EOF
#include <emmintrin.h>
int main( void ) { return 0; }
EOF
if docc -msse2 $LDFLAGS ; then
CFLAGS="$CFLAGS -msse2"
fi
#check dlopen support
has_dlopen="no"
cat > $TMPC << EOF
#include <dlfcn.h>
int main( void ) { dlopen("foo", 0); return 0; }
EOF
if docc ; then
has_dlopen="yes"
elif docc $LDFLAGS -ldl ; then
GPAC_SH_FLAGS="$GPAC_SH_FLAGS -ldl"
has_dlopen="yes"
fi
#check st_mtim.tv_nsec support
has_st_nsec="no"
cat > $TMPC << EOF
#include <sys/stat.h>
int main( void ) { struct stat st; st.st_mtim.tv_nsec = 0; return 0; }
EOF
if docc ; then
has_st_nsec="yes"
fi
#look for atomic.h support
cat > $TMPC << EOF
#include <pthread.h>
#include <stdatomic.h>
int main( void ) { return 0; }
EOF
has_atomic="no"
if docc $LDFLAGS ; then
has_atomic="yes"
else
CFLAGS="$CFLAGS -DGPAC_NO_STDATOMIC"
fi
#look for builtin atomic support
cat > $TMPC << EOF
#include <stdint.h>
int main(void) {
int i4 = 4;
__int64_t i8 = 8;
__sync_add_and_fetch(&i4, 12);
__sync_add_and_fetch(&i8, 12);
}
EOF
has_builtinatomic="no"
if docc ; then
has_builtinatomic="yes"
else
cat > $TMPC << EOF
#include <stdint.h>
int main(void) {
int i4 = 4;
__int64_t i8 = 8;
__atomic_add_fetch(&i4, 12, __ATOMIC_SEQ_CST);
__atomic_add_fetch(&i8, 12, __ATOMIC_SEQ_CST);
}
EOF
if docc -latomic ; then
CFLAGS="$CFLAGS -DGPAC_NEED_LIBATOMIC"
LDFLAGS="$LDFLAGS -latomic"
fi
fi
#look for strlcpy support
cat > $TMPC << EOF
#include <string.h>
int main( void ) {
char dest[1];
strlcpy(dest, "1", 1);
return 0;
}
EOF
has_strlcpy="no"
if docc $LDFLAGS ; then
has_strlcpy="yes"
fi
#look for sys/un.h support
cat > $TMPC << EOF
#include <sys/un.h>
int main( void ) { struct sockaddr_un serv_add; return 0; }
EOF
has_sock_un="no"
if docc $LDFLAGS ; then
has_sock_un="yes"
fi
#package config helpers
pck_cxx="no"
config_package_test ()
{
package_name=$1
pkg_cfg_name=$2
package_cflags=$3
package_ldflags=$4
local_inc_dir=$5
package_src="$6"
forced=""
custom="no"
optname="$package_name="
for opt in $lib_args ; do
case "$opt" in
$optname*) forced=`echo $opt | cut -d '=' -f 2`
;;
esac
done
if test "$forced" != "" ; then
case "$forced" in
"no")
if test "$package_name" = "zlib" ; then
has_pck="force-no"
fi
return
;;
"local") ;;
"system") ;;
"") ;;
*) if [ -d "$forced" ]; then
custom="yes"
else
echo "Invalid value $forced for $optname"
exit 1
fi
;;
esac
fi
#test pkgconfig
if test "$forced" != "local" -a "$custom" != "yes" ; then
if test "$cross_prefix" = "" -a "$pkg_config" != "no"; then
if $pkg_config --exists $pkg_cfg_name ; then
pck_cflags=`$pkg_config --cflags $pkg_cfg_name`
pck_ldflags=`$pkg_config --libs $pkg_cfg_name`
has_pck="system (pkgconfig)"
return
fi
fi
fi
if [ -z "$package_src" ] ; then
return
fi
#for now docc and docxx are the same, just using a different source
if test "$pck_cxx" = "yes" ; then
echo "$package_src" > $TMPCXX
if test "$forced" != "local" ; then
if docxx $package_cflags $LDFLAGS $package_ldflags ; then
pck_cflags="$package_cflags"
pck_ldflags="$package_ldflags"
has_pck="system"
return
fi
fi
if test "$forced" = "system" ; then
return
fi
if docxx -I"$local_inc/$local_inc_dir" -L$local_lib $package_ldflags ; then
pck_cflags="-I$local_inc/$local_inc_dir $package_cflags"
pck_ldflags="-L$local_lib $package_ldflags"
has_pck="local"
return
fi
if docxx -I"$local_inc/$local_inc_dir" -L$execdir $package_ldflags ; then
pck_cflags="-I$local_inc/$local_inc_dir $package_cflags"
pck_ldflags="-L$execdir $package_ldflags"
has_pck="local (bin dir)"
return
fi
return
fi
echo "$package_src" > $TMPC
if test "$custom" = "yes" ; then
if docc -I"$forced//include" -L$forced//lib $package_ldflags ; then
pck_cflags="-I$forced//include $package_cflags"
pck_ldflags="-L$forced//lib $package_ldflags"
has_pck="custom"
fi
return
fi
if test "$forced" != "local" ; then
if docc $package_cflags $LDFLAGS $package_ldflags ; then
pck_cflags="$package_cflags"
pck_ldflags="$package_ldflags"
has_pck="system"
return
fi
if test "$alt_macosx_dir" != "" ; then
if docc -I$alt_macosx_dir/include $package_cflags -L$alt_macosx_dir/lib $LDFLAGS $package_ldflags 2>>$logs ; then
pck_cflags="$package_cflags"
pck_ldflags="$package_ldflags"
has_pck="system"
return
fi
fi
fi
if test "$forced" = "system" ; then
return
fi
if docc -I"$local_inc/$local_inc_dir" -L$local_lib $package_ldflags ; then
pck_cflags="-I$local_inc/$local_inc_dir $package_cflags"
pck_ldflags="-L$local_lib $package_ldflags"
has_pck="local"
return
fi
if docc -I"$local_inc/$local_inc_dir" -L$execdir $package_ldflags ; then
pck_cflags="-I$local_inc/$local_inc_dir $package_cflags"
pck_ldflags="-L$execdir $package_ldflags"
has_pck="local"
return
fi
}
config_package ()
{
has_pck="no"
pck_cflags=""
pck_ldflags=""
pname="$1"
case "$disabled_packages" in
*"$pname "*) shift
eval "has_$pname=\"no\""
return
;;
esac
config_package_test "$1" "$2" "$3" "$4" "$5" "$6"
if test "$has_pck" != "no" ; then
eval "cflags_$pname=\"$pck_cflags\""
eval "ldflags_$pname=\"$pck_ldflags\""
fi
eval "has_$pname=\"$has_pck\""
pck_cxx="no"
}
check_has_lib ()
{
has_pck="no"
tmpv=$1
for pck in $disabled_packages ; do
case "$tmpv" in
$pck) shift
eval "has_$tmpv=\"no\""
return
;;
esac
done
echo "$3" > $TMPC
if docc $LDFLAGS $2 ; then
has_pck="yes"
fi
var=$1
shift
eval "has_$var=\"$has_pck\""
}
#end package config helpers
if test "$disable_codecs" = "yes"; then
append disabled_packages "jpeg png mad a52 faad xvid opensvc openjpeg ffmpeg ogg theora vorbis openhevc"
fi
if test "$static_bin" = "yes"; then
static_modules="yes"
static_build="yes"
#we cannot use these to produce a static bin, no static lib on most distributions
append disabled_packages "openjpeg ffmpeg ogg theora vorbis openhevc freenect platinum"
#we cannot use openssl vanilla since it is usually built with DSO and requires dlopen
append disabled_packages "ssl"
#we cannot use ipv6 due to getaddrinfo not being present
append disabled_packages "ipv6"
append disabled_packages "lzma vtb sdl oss alsa jack pulseaudio directfb x11 dvb4linux directx"
fi
if test "$disable_parsers" = "yes" ; then
append disabled_packages "jpeg png"
fi
#look for all packages
#start with zlib to disable png and freetype if forced to no
config_package zlib "zlib" "" "-lz" "zlib" '#include <string.h>
#include <stdio.h>
#include <zlib.h>
int main( void ) { if (strcmp(zlibVersion(), ZLIB_VERSION)) { puts("zlib version differs !!!"); return 1; } return 0; }'
if test "$has_zlib" = "force-no" ; then
# can't have libpng without zlib or freetype without libpng
append disabled_packages "png freetype"
fi
config_package opensvc "OpenSVC" "" "-lOpenSVCDec" "" '#include <OpenSVCDecoder/SVCDecoder_ietr_api.h>
int main( void ) { return 0; }'
#look for openhevc support
config_package openhevc "openhevc" "" "-lopenhevc -lm -lpthread" "" '#include <stdio.h>
#include <libopenhevc/openhevc.h>
int main( void ) { oh_init(1, 1); return 0; }
'
pck_cxx="yes"
config_package platinum "platinum" "" "-lPlatinum -lPltMediaServer -lPltMediaConnect -lPltMediaRenderer -lNeptune -lZlib -lpthread" "platinum" '#include <Platinum.h>
int main( void ) { return 0; }'
config_package freetype "freetype2" "" "-lfreetype" "freetype" '#include <ft2build.h>
#include FT_FREETYPE_H
#include FT_GLYPH_H
#include FT_OUTLINE_H
int main( void ) { return 0; }
'
if test "$mingw32" = "yes" ; then
ssl_lflags="-lssl -lcrypto"
elif test "$win32" = "yes" ; then
ssl_lflags="-lssleay32 -leay32"
else
ssl_lflags="-lssl -lcrypto"
fi
config_package ssl "openssl" "" "$ssl_lflags" "" '#include <openssl/ssl.h>
#include <openssl/x509.h>
#include <openssl/err.h>
#include <openssl/rand.h>
int main( void ) { return 0; }'
config_package jpeg "libjpeg" "" "-ljpeg" "jpeg" '#include <stdio.h>
#include <jpeglib.h>
int main( void ) { return 0; }'
config_package openjpeg "libopenjp2" "" "-lopenjp2" "openjp2" '#include <stdio.h>
#include <openjpeg.h>
int main( void ) { return 0; }'
if test "has_openjpeg" = "no" ; then
config_package openjpeg "libopenjpeg" "" "-lopenjpeg" "openjpeg" '#include <stdio.h>
#include <openjpeg.h>
int main( void ) { return 0; }'
fi
config_package png "libpng" "" "-lpng -lz" "png" '#include <png.h>
int main( void ) { return 0; }'
config_package mad "mad" "" "-lmad" "" '#include <mad.h>
int main( void ) { return 0; }'
config_package a52 "liba52" "" "-la52" "" '#include <inttypes.h>
#define uint32_t unsigned int
#define uint8_t unsigned char
#include <a52dec/mm_accel.h>
#include <a52dec/a52.h>
int main( void ) { return 0; }'
config_package xvid "xvid" "" "-lxvidcore -lpthread" "" '#include <xvid.h>
int main( void ) { return 0; }'
config_package faad "faad2" "" "-lfaad" "" '#include <faad.h>
int main( void ) { return 0; }'
ffmpeg_lflags="-lz -lavcodec -lavformat -lavutil -lavdevice -lswscale -lavfilter $ffmpeg_extra_ldflags"
config_package ffmpeg "libavcodec libavformat libswscale libavdevice libavutil libavfilter" "" "$ffmpeg_lflags" "" '#include <libavcodec/avcodec.h>
int main(void) {
return 0;
}'
if test "$has_ffmpeg" != no ; then
#detect vvc support in ffmpeg
cat > $TMPC << EOF
#include <libavcodec/avcodec.h>
int main(void) {
AVCodec *codec = avcodec_find_decoder(AV_CODEC_ID_VVC);
return 0;
}
EOF
#compile file but do not link
if $cc -o $TMPO -c $TMPC $ffmpeg_cflags 0>/dev/null 2>$TMPL ; then
ffmpeg_vvc="yes"
dolog $ffmpeg_cflags
else
dolog $ffmpeg_cflags
fi
fi
#end ffmpeg specific tests
config_package freenect "libfreenect" "" "-lfreenect" "freenect" '#include <libfreenect/libfreenect.h>
int main( void ) { return 0; }'
config_package vorbis "vorbis" "" "-lvorbis" "" '#include <vorbis/codec.h>
int main( void ) { return 0; }'
config_package theora "theora" "" "-ltheora -logg" "" '#include <theora/theora.h>
int main( void ) { return 0; }'
config_package ogg "ogg" "" "-logg" "" '#include <ogg/ogg.h>
int main( void ) { return 0; }'
config_package nghttp2 "libnghttp2" "" "-lnghttp2" "" '#include <stdio.h>
#include <nghttp2/nghttp2.h>
int main( void ) { return 0; }'
#look for VideoToolBox support
if test "$darwin" = "yes" ; then
ldflags_vtb="-framework CoreFoundation -framework CoreVideo -framework CoreMedia -framework VideoToolbox"
check_has_lib vtb "$ldflags_vtb" '#include <VideoToolbox/VideoToolbox.h>
int main( void ) { return 0; }'
fi
#look for OSS support
if test "$darwin" = "yes" ; then
cat > $TMPC << EOF
#include <soundcard.h>
int main( void ) { return 0; }
EOF
if docc -DLIBOSS_INTERNAL -I$alt_macosx_dir/include/ -I$alt_macosx_dir/include/liboss -L$alt_macosx_dir/lib -loss $LDFLAGS 2>>$logs ; then
has_oss="yes"
oss_cflags="-DLIBOSS_INTERNAL -I$alt_macosx_dir/include/ -I$alt_macosx_dir/include/liboss"
oss_ldflags="-L$alt_macosx_dir/lib -loss"
fi
else
check_has_lib oss "" '#include <sys/ioctl.h>
#include <unistd.h>
#include <fcntl.h>
#include <sys/soundcard.h>
int main( void ) { return 0; }'
if test "$has_oss" = "no" ; then
check_has_lib oss "" '#include <sys/ioctl.h>
#include <unistd.h>
#include <fcntl.h>
#include <soundcard.h>
int main( void ) { return 0; }'
fi
fi
#look for IPv6
check_has_lib ipv6 "$extralibs" '#include <string.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netdb.h>
int main( void ) {
struct sockaddr_storage saddr;
struct ipv6_mreq mreq6;
getaddrinfo(0,0,0,0);
getnameinfo(0,0,0,0,0,0,0);
memset(&saddr, 0, sizeof(saddr));
memset(&mreq6, 0, sizeof(mreq6));
IN6_IS_ADDR_MULTICAST( (struct in6_addr *) 0);
return 0;
}'
#look for poll
check_has_lib poll "$extralibs" '#include <poll.h>
int main( void ) {
struct pollfd fds;
int res = poll(&fds, 1, 1);
return 0;
}'
check_has_lib dvb4linux "" '#include <linux/dvb/dmx.h>
#include <linux/dvb/frontend.h>
int main( void ) {return 0;}'
check_has_lib alsa "" '#include <alsa/asoundlib.h>
int main( void ) {return 0;}'
check_has_lib pulseaudio "" '#include <pulse/pulseaudio.h>
int main( void ) {return 0;}'
check_has_lib jack "" '#include <jack/jack.h>
int main( void ) {return 0;}'
directfb_lib="-ldirectfb -lfusion -ldirect"
check_has_lib directfb "$directfb_lib" '#include <directfb.h>
int main( void ) {return 0;}'
#config X11
check_has_lib x11 "-I$X11_PATH/include -L$X11_PATH/lib" '#include <X11/Xlib.h>
int main( void ) { return 0; }'
if test "$has_x11" = "yes" ; then
#look for X11 shared memory support
check_has_lib x11_shm "-I$X11_PATH/include -L$X11_PATH/lib" '#include <X11/Xlib.h>
#include <X11/extensions/XShm.h>
#include <sys/ipc.h>
#include <sys/shm.h>
int main( void ) { return 0; }'
#look for XVideo support
check_has_lib x11_xv "-I$X11_PATH/include -L$X11_PATH/lib" '#include <X11/Xlib.h>
#include <X11/extensions/Xv.h>
#include <X11/extensions/Xvlib.h>
int main( void ) { return 0; }'
#look for glx support
check_has_lib x11_glx "-I$X11_PATH/include -L$X11_PATH/lib" '#include <X11/Xlib.h>
#include <GL/gl.h>
#include <GL/glx.h>
int main( void ) { return 0; }'
fi
#end x11 test
#look for hid support
hid_lib="-lhidapi-hidraw"
check_has_lib hid "$hid_lib" '#include <hidapi/hidapi.h>
int main( void ) { hid_init(); hid_exit(); return 0; }'
#look for lzma support
check_has_lib lzma "-llzma" '#include <lzma.h>
int main( void ) { lzma_options_lzma opt_lzma2; lzma_lzma_preset(&opt_lzma2, 9); return 0; }'
#look for joystick support
#check_has_lib joystick "" '#include <linux/joystick.h>
#int main( void ) { return 0; }'
#always force static modules when static build is used, we cannot have one exe with libgpac_static using a module with libgpac dynamic, this would cause bugs with gf_sys_init()
if test "$static_build" = "yes"; then
static_modules="yes"
if test "$has_openhevc" != "no" -a "$has_ffmpeg!=no"; then
#we cannot have both openhevc and ffmpeg in static build
has_openhevc="no"
fi
fi
if test "$has_zlib" = "no" ; then
echo "error: zlib not found on system or in local libs"
exit 1
fi
if test "$has_dlopen" = "no"; then
if test "$win32" = "no"; then
echo "error: dlopen not found on system"
exit 1
fi
fi
#look for OpenGL support or for TinyGL support
has_opengl="no"
LINK3D=""
INCL3D=""
DarwinGL="no"
if test "$darwin" = "yes" ; then
cat > $TMPC << EOF
#include <OpenGL/gl.h>
#include <OpenGL/glu.h>
int main( void ) { glEnable(GL_NORMALIZE); return 0; }
EOF
else
cat > $TMPC << EOF
#include <GL/gl.h>
#include <GL/glu.h>
int main( void ) { glEnable(GL_NORMALIZE); return 0; }
EOF
fi
#we cannot use openGL to produce a static bin
if test "$disable_3d" = "no" -a "$static_bin" = "no" ; then
if test "$win32" = "yes" ; then
if test "$cygwin" = "yes" ; then
LINK3D="-lw32api/opengl32 -lw32api/glu32"
else
LINK3D="-lopengl32 -lglu32"
fi
elif test "$darwin" = "yes" ; then
LINK3D="-framework OpenGL -framework GLUT"
DarwinGL="yes"
else
LINK3D="-lGL -lGLU -lX11"
fi
if docc $LINK3D $LDFLAGS ; then
has_opengl="yes"
elif docc -I$X11_PATH/include -L$X11_PATH/lib $LDFLAGS ; then
has_opengl="yes"
INCL3D="-I$X11_PATH/include"
LINK3D="-L$X11_PATH/lib $LINK3D"
fi
if test "$has_opengl" = "no" ; then
LINK3D=""
fi
fi
#look for tinyGL only if desired
has_tinygl=no
if test "$disable_tinygl" = "no" ;then
check_has_lib tinygl "-lTinyGL" '#include <GL/gl.h>
int main( void ) { int a ; a = TINYGL ; return 0;}'
if test "$has_tinygl" = "yes" ;then
has_opengl="yes"
LINK3D="-lTinyGL"
fi
fi
#look for DX support
dx_path="system"
has_directx="no"
if test "$win32" = "yes" ; then
check_has_lib directx "-lddraw" '#include <ddraw.h>
int main( void ) { return 0; }'
if test "has_directx" = "no" ; then
dx_path="$dxsdk_path"
check_has_lib directx "-I$dxsdk_path/include -L$dxsdk_path/lib -lddraw" '#include <ddraw.h>
int main( void ) { return 0; }'
fi
fi
#look for SDL support - we don't use check_has_lib for the time being
case "$disabled_packages" in
*"sdl "*) has_sdl=no
;;
*) sdl_too_old=no
has_sdl=no
sdl_config="sdl2-config"
if test "$sdl_local" = "yes"; then
sdl_config="$sdl_path/sdl2-config"
sdl_static="yes"
fi
if type $sdl_config >/dev/null 2>>$logs; then
cat > $TMPC << EOF
#include <SDL.h>
#undef main
int main( void ) { return SDL_Init (SDL_INIT_VIDEO); }
EOF
if test "$sdl_static" = "yes"; then
sdl_lib_flags=`$sdl_config --static-libs`
else
sdl_lib_flags=`$sdl_config --libs`
fi
sdl_cflags=`$sdl_config --cflags`
if docc $sdl_cflags $LDFLAGS $sdl_lib_flags ; then
_sdlversion=`$sdl_config --version | sed 's/[^0-9]//g'`
if test "$_sdlversion" -lt 121 ; then
sdl_too_old=yes
else
has_sdl=yes
fi
fi
fi
if test "$has_sdl" = "no" ; then
sdl_config="sdl-config"
if test "$sdl_local" = "yes"; then
sdl_config="$sdl_path/sdl-config"
sdl_static="yes"
fi
if test "$cross_prefix" = "" ; then
if type $sdl_config >/dev/null 2>>$logs; then
cat > $TMPC << EOF
#include <SDL.h>
#undef main
int main( void ) { return SDL_Init (SDL_INIT_VIDEO); }
EOF
if test "$sdl_static" = "yes"; then
sdl_lib_flags=`$sdl_config --static-libs`
else
sdl_lib_flags=`$sdl_config --libs`
fi
sdl_cflags=`$sdl_config --cflags`
if docc $sdl_cflags $LDFLAGS $sdl_lib_flags ; then
_sdlversion=`$sdl_config --version | sed 's/[^0-9]//g'`
if test "$_sdlversion" -lt 121 ; then
sdl_too_old=yes
else
has_sdl=yes
fi
fi
fi
fi
fi
;;
esac
#end SDL check
#look at endianess
if test -z "$cross_prefix" ; then
# big/little endian test
cat > $TMPC << EOF
#include <inttypes.h>
int main(int argc, char ** argv){
volatile uint32_t i=0x01234567;
return (*((uint8_t*)(&i))) == 0x67;
}
EOF
if docc $LDFLAGS 2>>$logs ; then
$TMPO && bigendian="yes"
else
echo big/little endian test failed
fi
else
# if cross compiling, cannot launch a program, so make a static guess
if test "$cpu" = "powerpc" -o "$cpu" = "mips" ; then
bigendian="yes"
fi
fi
if test "$debuginfo" = "no"; then
CFLAGS="$CFLAGS -DNDEBUG"
fi
#set gnu90 once all packages have been chcked, otherwise we will use it in docxx
if docc $CFLAGS -std=gnu99 ; then
CFLAGS="$CFLAGS -std=gnu99"
fi
#man dir
if test x"$mandir" = x""; then
mandir="share/man"
fi
if test "$disable_player" = "yes" ; then
disable_scenegraph="yes"
fi
if test "$disable_scenegraph" = "yes" ; then
disable_3d="yes"
disable_svg="yes"
disable_vrml="yes"
disable_x3d="yes"
disable_bifs="yes"
disable_bifs_enc="yes"
disable_laser="yes"
disable_seng="yes"
disable_qtvr="yes"
disable_swf="yes"
disable_scene_stats="yes"
disable_scene_dump="yes"
disable_scene_encode="yes"
disable_loader_isoff="yes"
disable_loader_bt="yes"
disable_loader_xmt="yes"
disable_streaming="yes"
disable_player="yes"
disable_smgr="yes"
disable_nvdec="yes"
fi
if test "$disable_mpd" = "yes"; then
disable_dash="yes"
fi
if test "$disable_od_parse" = "yes" ; then
disable_loader_isoff="yes"
disable_loader_bt="yes"
disable_loader_xmt="yes"
fi
if test "$has_lzma" = "yes"; then
GPAC_SH_FLAGS="$GPAC_SH_FLAGS -llzma"
if test "$win32" = "yes"; then
#add to extra lib for static mp4box build
extralibs="$extralibs -llzma"
fi
fi
#all done, prepare for config.h writing
TMPH="${TMPDIR1}/gpac-conf-${RANDOM}-$$-${RANDOM}.h"
echo "/* Automatically generated by configure */" > $TMPH
echo "#ifndef GF_CONFIG_H" >> $TMPH
echo "#define GF_CONFIG_H" >> $TMPH
echo "#define GPAC_CONFIGURATION \"$GPAC_CONFIGURATION\"" >> $TMPH
version="`grep '#define GPAC_VERSION ' \"$source_path/include/gpac/version.h\" | cut -d '"' -f 2`"
version_major=`grep '#define GPAC_VERSION_MAJOR ' $source_path/include/gpac/version.h | sed 's/[^0-9]*//g'`
version_minor=`grep '#define GPAC_VERSION_MINOR ' $source_path/include/gpac/version.h | sed 's/[^0-9]*//g'`
version_micro=`grep '#define GPAC_VERSION_MICRO ' $source_path/include/gpac/version.h | sed 's/[^0-9]*//g'`
soname_version="${version_major}.${version_minor}.${version_micro}"
#check revision.h
cd $source_path
. ./check_revision.sh
cd $build_path
echo ""
echo "** System Configuration"
echo "Install prefix: $prefix"
echo "Source path: $source_path"
echo "C compiler: $cc_naked"
echo "C++ compiler: $cxx_naked"
echo "make: $make"
echo "CPU: $cpu"
echo "Big Endian: $bigendian"
if test $cpu = "mips"; then
echo "MMI enabled: $mmi"
fi
echo ""
echo "** GPAC $version rev$revision Core Configuration **"
if test "$static_bin" = "yes" ; then
echo "Static binaries enabled"
echo "#define GPAC_STATIC_BUILD" >> $TMPH
elif test "$static_build" = "yes" ; then
echo "Static build enabled"
echo "#define GPAC_STATIC_BUILD" >> $TMPH
else
echo "Static Modules: $static_modules"
fi
echo "debug version: $debuginfo"
echo "GProf enabled: $gprof_build"
echo "Memory tracking enabled: $use_memory_tracking"
echo "Sanitizer enabled: $enable_sanitizer"
echo "Fixed-Point Version: $use_fixed_point"
echo "IPV6 Support: $has_ipv6"
if test $disable_qjs = "no" ; then
enable_qjs="yes"
if test $disable_qjs_libc = "no" ; then
echo "QuickJS Support: yes (with qjs-libc)"
else
echo "QuickJS Support: yes (no qjs-libc)"
fi
else
enable_qjs="no"
echo "QuickJS Support: no"
fi
if test "$disable_player" = "yes" ; then
echo "Player disabled"
echo "#define GPAC_DISABLE_PLAYER" >> $TMPH
disable_laser="yes"
fi
if test "$has_st_nsec" = "yes" ; then
echo "#define GPAC_HAS_MTIM_NSEC" >> $TMPH
fi
if test "$disable_smgr" = "yes" ; then
disable_seng="yes"
disable_qtvr="yes"
disable_swf="yes"
disable_scene_stats="yes"
disable_scene_dump="yes"
disable_scene_encode="yes"
disable_loader_isoff="yes"
disable_loader_bt="yes"
disable_loader_xmt="yes"
disable_svg="yes"
echo "Scene Manager disabled"
echo "#define GPAC_DISABLE_SMGR" >> $TMPH
fi
if test "$disable_svg" = "yes" ; then
echo "SVG disabled"
echo "#define GPAC_DISABLE_SVG" >> $TMPH
disable_laser="yes"
fi
if test "$disable_vrml" = "yes" ; then
echo "MPEG-4/VRML/X3D disabled"
echo "#define GPAC_DISABLE_VRML" >> $TMPH
fi
if test "$disable_x3d" = "yes" ; then
echo "X3D disabled"
echo "#define GPAC_DISABLE_X3D" >> $TMPH
fi
if test "$disable_odf" = "yes" ; then
echo "OD Full support disabled"
echo "#define GPAC_MINIMAL_ODF" >> $TMPH
fi
if test "$disable_od_parse" = "yes" ; then
echo "OD Parsing disabled"
echo "#define GPAC_DISABLE_OD_PARSE" >> $TMPH
fi
if test "$disable_bifs" = "yes" ; then
echo "BIFS coder disabled"
echo "#define GPAC_DISABLE_BIFS" >> $TMPH
fi
if test "$disable_bifs_enc" = "yes" ; then
echo "BIFS encoder disabled"
echo "#define GPAC_DISABLE_BIFS_ENC" >> $TMPH
fi
if test "$disable_laser" = "yes" ; then
echo "LASeR coder disabled"
echo "#define GPAC_DISABLE_LASER" >> $TMPH
fi
if test "$disable_saf" = "yes" ; then
echo "SAF container disabled"
echo "#define GPAC_DISABLE_SAF" >> $TMPH
fi
if test "$disable_seng" = "yes" ; then
echo "Scene encoder engine disabled"
echo "#define GPAC_DISABLE_SENG" >> $TMPH
fi
if test "$disable_qtvr" = "yes" ; then
echo "Cubic QTVR import disabled"
echo "#define GPAC_DISABLE_QTVR" >> $TMPH
fi
if test "$disable_avi" = "yes" ; then
echo "AVI disabled"
echo "#define GPAC_DISABLE_AVILIB" >> $TMPH
fi
if test "$disable_ogg" = "yes" ; then
echo "OGG disabled"
echo "#define GPAC_DISABLE_OGG" >> $TMPH
fi
if test "$disable_m2ps" = "yes" ; then
echo "MPEG-2 PS disabled"
echo "#define GPAC_DISABLE_MPEG2PS" >> $TMPH
fi
if test "$disable_m2ts" = "yes" ; then
echo "MPEG-2 TS disabled"
echo "#define GPAC_DISABLE_MPEG2TS" >> $TMPH
fi
if test "$disable_m2ts_mux" = "yes" ; then
echo "MPEG-2 TS Multiplexer disabled"
echo "#define GPAC_DISABLE_MPEG2TS_MUX" >> $TMPH
fi
if test "$disable_parsers" = "yes" ; then
echo "AV Parsers disabled"
echo "#define GPAC_DISABLE_AV_PARSERS" >> $TMPH
fi
if test "$disable_import" = "yes" ; then
echo "Media importers disabled"
echo "#define GPAC_DISABLE_MEDIA_IMPORT" >> $TMPH
fi
if test "$disable_export" = "yes" ; then
echo "Media exporters disabled"
echo "#define GPAC_DISABLE_MEDIA_EXPORT" >> $TMPH
fi
if test "$disable_swf" = "yes" ; then
echo "SWF import disabled"
echo "#define GPAC_DISABLE_SWF_IMPORT" >> $TMPH
fi
if test "$disable_scenegraph" = "yes" ; then
echo "Scene Graph disabled"
echo "#define GPAC_DISABLE_SCENEGRAPH" >> $TMPH
fi
if test "$disable_scene_stats" = "yes" ; then
echo "Scene statistics disabled"
echo "#define GPAC_DISABLE_SCENE_STATS" >> $TMPH
fi
if test "$disable_scene_dump" = "yes" ; then
echo "Scene dump disabled"
echo "#define GPAC_DISABLE_SCENE_DUMP" >> $TMPH
fi
if test "$disable_scene_encode" = "yes" ; then
echo "Scene encoder to ISO FF disabled"
echo "#define GPAC_DISABLE_SCENE_ENCODER" >> $TMPH
fi
if test "$disable_loader_isoff" = "yes" ; then
echo "Scene loader from ISO FF disabled"
echo "#define GPAC_DISABLE_LOADER_ISOM" >> $TMPH
fi
if test "$disable_loader_bt" = "yes" ; then
echo "BT/WRL Scene loader disabled"
echo "#define GPAC_DISABLE_LOADER_BT" >> $TMPH
fi
if test "$disable_loader_xmt" = "yes" ; then
echo "XMT/X3D Scene loader disabled"
echo "#define GPAC_DISABLE_LOADER_XMT" >> $TMPH
fi
if test "$disable_od_dump" = "yes" ; then
echo "OD dump disabled"
echo "#define GPAC_DISABLE_OD_DUMP" >> $TMPH
fi
if test "$disable_isom_dump" = "yes" ; then
echo "ISOM dump disabled"
echo "#define GPAC_DISABLE_ISOM_DUMP" >> $TMPH
fi
if test "$disable_crypto" = "yes" ; then
echo "Crypto tools disabled"
echo "#define GPAC_DISABLE_CRYPTO" >> $TMPH
fi
if test "$disable_isoff" = "yes" ; then
echo "ISO File Format disabled"
echo "#define GPAC_DISABLE_ISOM" >> $TMPH
fi
if test "$disable_isoff_write" = "yes" ; then
echo "ISO File Format write disabled"
echo "#define GPAC_DISABLE_ISOM_WRITE" >> $TMPH
fi
if test "$disable_isoff_hint" = "yes" ; then
echo "ISO File Format hinting disabled"
echo "#define GPAC_DISABLE_ISOM_HINTING" >> $TMPH
fi
if test "$disable_isoff_frag" = "yes" ; then
echo "ISO File Format fragments disabled"
echo "#define GPAC_DISABLE_ISOM_FRAGMENTS" >> $TMPH
fi
if test "$disable_isoff_hds" = "yes" ; then
echo "ISO File Format Adobe HDS disabled"
echo "#define GPAC_DISABLE_ISOM_ADOBE" >> $TMPH
fi
if test "$disable_streaming" = "yes" ; then
echo "RTP/RTSP/SDP streaming disabled"
echo "#define GPAC_DISABLE_STREAMING" >> $TMPH
fi
if test "$disable_dvbx" = "no" ; then
echo "DVB MPE and DSM-CC enabled"
echo "#define GPAC_ENABLE_MPE" >> $TMPH
echo "#define GPAC_ENABLE_DSMCC" >> $TMPH
fi
if test "$disable_vobsub" = "yes" ; then
echo "VobSub disabled"
echo "#define GPAC_DISABLE_VOBSUB" >> $TMPH
fi
if test "$disable_ttxt" = "yes" ; then
echo "3GPP/Apple TimedText disabled"
echo "#define GPAC_DISABLE_TTXT" >> $TMPH
fi
if test "$disable_ttml" = "yes" ; then
echo "TTML TimedText disabled"
echo "#define GPAC_DISABLE_TTML" >> $TMPH
fi
if test "$disable_vtt" = "yes" ; then
echo "WebVTT disabled"
echo "#define GPAC_DISABLE_VTT" >> $TMPH
fi
if test "$disable_depth_compositor" = "no" ; then
echo "Depth Compositor enabled"
echo "#define GF_SR_USE_DEPTH" >> $TMPH
fi
if test "$disable_qjs_stack" = "no" ; then
echo "#define GPAC_QJS_STACK_CHECK" >> $TMPH
fi
if test "$disable_mpd" = "yes" ; then
echo "HLS and DASH Manifest Disabled"
echo "#define GPAC_DISABLE_MPD" >> $TMPH
fi
if test "$disable_dash" = "yes" ; then
echo "Adaptive HTTP Streaming Client disabled"
echo "#define GPAC_DISABLE_DASH_CLIENT" >> $TMPH
fi
if test "$disable_hevc" = "yes" ; then
echo "HEVC Support disabled"
echo "#define GPAC_DISABLE_HEVC" >> $TMPH
fi
if test "$disable_route" = "yes" ; then
echo "ROUTE Support disabled"
echo "#define GPAC_DISABLE_ROUTE" >> $TMPH
fi
if test "$disable_crypto" = "yes" ; then
echo "CRYPTO Support disabled"
echo "#define GPAC_DISABLE_CRYPTO" >> $TMPH
fi
if test "$disable_log" = "yes" ; then
echo "Logging disabled"
echo "#define GPAC_DISABLE_LOG" >> $TMPH
fi
echo ""
echo "** Detected libraries **"
echo "zlib: $has_zlib"
echo "OpenGL support: $has_opengl"
if test "$disable_tinygl" = "no" ; then
echo "TinyGL support: $has_tinygl"
fi
echo "OpenSSL support: $has_ssl"
echo "nghttp2: $has_nghttp2"
if test "$win32" != "yes" ; then
echo "OSS Audio: $has_oss"
echo "ALSA Audio: $has_alsa"
echo "Jack Audio: $has_jack"
echo "Pulse Audio: $has_pulseaudio"
echo "DirectFB: $has_directfb"
if [ -z $X11_PATH ] ; then
echo "X11: $has_x11"
else
echo "X11: $has_x11 (path: $X11_PATH)"
fi
if test "$has_x11" != "no" ; then
echo "X11 Shared Memory support: $has_x11_shm"
echo "X11 XVideo support: $has_x11_xv"
fi
fi
echo "SDL: $has_sdl"
if test "$sdl_too_old" = "yes" ; then
echo "SDL Version too old - please upgrade for SDL support"
fi
if test "$win32" = "yes" ; then
echo "DirectX: $has_directx"
fi
if test "$linux" = "yes" ; then
echo "DVB for Linux: $has_dvb4linux"
fi
echo "FreeType: $has_freetype"
echo "JPEG: $has_jpeg"
echo "OpenJPEG: $has_openjpeg"
echo "PNG: $has_png"
echo "MAD: $has_mad"
echo "FAAD: $has_faad"
echo "XVID: $has_xvid"
ffopts=""
if test "$has_ffmpeg" != "no" ; then
if test "$ffmpeg_vvc" = "yes" ; then
ffopts="VVC $ffopts "
fi
fi
if [ -z $ffopts ] ; then
echo "FFMPEG: $has_ffmpeg"
else
echo "FFMPEG: $has_ffmpeg - "$ffopts"supported"
fi
echo "LZMA: $has_lzma"
echo "Xiph OGG: $has_ogg"
echo "Platinum UPnP: $has_platinum"
if test "$has_ogg" = "no"; then
has_ogg="no"
else
echo "Xiph Vorbis: $has_vorbis"
echo "Xiph Theora: $has_theora"
fi
echo "A52 (AC3): $has_a52"
echo "OpenSVCDecoder: $has_opensvc"
echo "OpenHEVCDecoder: $has_openhevc"
echo "Freenect: $has_freenect"
echo ""
#needs gmon for win32 gprof
if test "$gprof_build" = "yes"; then
if test "$win32" = "yes"; then
extralibs="$extralibs -lgmon"
fi
fi
#we add no deprecate by default on osx (due to opengl ...)
if test "$darwin" = "yes" ; then
CFLAGS="$CFLAGS -Wno-deprecated -Wno-deprecated-declarations"
else
CFLAGS="$CFLAGS -Wno-deprecated -Wno-deprecated-declarations -Wno-int-in-bool-context"
fi
if test "$enable_sanitizer" = "yes" ; then
CFLAGS="$CFLAGS -fsanitize=address,undefined -fno-sanitize-recover -g -fno-omit-frame-pointer -DASAN_ENABLED"
LDFLAGS="$LDFLAGS -fsanitize=address,undefined -ldl"
fi
ldir=`pwd`
CFLAGS="$CFLAGS -DGPAC_HAVE_CONFIG_H -I\"$ldir\""
if test "$win32" = "no" ; then
CFLAGS="$CFLAGS -fvisibility=\"hidden\""
fi
CXXFLAGS="$CXXFLAGS"
echo "Creating config.mak"
echo "# Automatically generated by configure - do not modify" > config.mak
echo "GPAC_CONFIGURATION=$GPAC_CONFIGURATION" >> config.mak
echo "prefix=$prefix" >> config.mak
echo "DESTDIR=$DESTDIR" >> config.mak
echo "moddir=gpac" >> config.mak
echo "tinygl_target_bin_dir=$target_bin_dir" >> config.mak
echo "MAKE=$make" >> config.mak
if test "$verbose" = "yes" ; then
echo "CC=$cc_naked" >> config.mak
echo "AR=$ar" >> config.mak
echo "RANLIB=$ranlib" >> config.mak
echo "STRIP=$strip" >> config.mak
echo "WINDRES=$windres" >> config.mak
else
echo "CC=@$cc_naked" >> config.mak
echo "AR=@$ar" >> config.mak
echo "RANLIB=@$ranlib" >> config.mak
echo "STRIP=@$strip" >> config.mak
echo "WINDRES=$windres" >> config.mak
fi
echo "INSTALL=$install" >> config.mak
echo "LIBTOOL=@libtool" >> config.mak
echo "INSTFLAGS=$instflags" >> config.mak
echo "OPTFLAGS=$CFLAGS" >> config.mak
echo "CXXFLAGS=$CXXFLAGS" >> config.mak
echo "LDFLAGS=$LDFLAGS" >> config.mak
echo "SHFLAGS=$SHFLAGS" >> config.mak
pf="$prefix/"
lib_dir=${libdir#"$pf"}
echo "lib_dir=$lib_dir" >> config.mak
pf="$prefix/"
man_dir=${mandir#"$pf"}
echo "man_dir=$man_dir" >> config.mak
echo "STATIC_MODULES=$static_modules" >> config.mak
#for cross-compilation
if test "$cross_prefix" != "" ; then
echo "CROSS_COMPILING=yes" >> config.mak
fi
if test "$cpu" = "x86" ; then
echo "TARGET_ARCH_X86=yes" >> config.mak
elif test "$cpu" = "armv4l" ; then
echo "TARGET_ARCH_ARMV4L=yes" >> config.mak
elif test "$cpu" = "alpha" ; then
echo "TARGET_ARCH_ALPHA=yes" >> config.mak
elif test "$cpu" = "sparc64" ; then
echo "TARGET_ARCH_SPARC64=yes" >> config.mak
elif test "$cpu" = "powerpc" ; then
echo "TARGET_ARCH_POWERPC=yes" >> config.mak
elif test "$cpu" = "mips" ; then
echo "TARGET_ARCH_MIPS=yes" >> config.mak
fi
if test "$bigendian" = "yes" ; then
echo "IS_BIGENDIAN=yes" >> config.mak
echo "#define GPAC_BIG_ENDIAN" >> $TMPH
fi
echo "EXTRALIBS=$extralibs" >> config.mak
echo "LIBGPAC_CFLAGS=$libgpac_cflags" >> config.mak
echo "LIBGPAC_LDFLAGS=$libgpac_extralibs" >> config.mak
echo "VERSION=$version" >>config.mak
echo "VERSION_MAJOR=$version_major" >>config.mak
echo "VERSION_SONAME=$soname_version" >>config.mak
if test "$use_fixed_point" = "yes"; then
echo "#define GPAC_FIXED_POINT" >> $TMPH
fi
if test "$use_memory_tracking" = "yes"; then
echo "#define GPAC_MEMORY_TRACKING" >> $TMPH
if test "$cygwin" = "yes" ; then
echo "#define GPAC_MEMORY_TRACKING_DISABLE_STACKTRACE" >> $TMPH
fi
fi
if test "$win32" = "yes" ; then
echo "CONFIG_WIN32=yes" >> config.mak
echo "CONFIG_OS=CONFIG_WIN32" >> config.mak
echo "#define GPAC_CONFIG_WIN32" >> $TMPH
if test "$cygwin" = "yes" ; then
echo "#define ftello64 ftell" >> $TMPH
echo "#define fseeko64 fseek" >> $TMPH
fi
if test "$mingw32" = "yes" ; then
# -municode test
cat > $TMPC << EOF
#include <inttypes.h>
int wmain(int argc, char ** argv){
return 0;
}
EOF
if docc -municode ; then
echo "UNICODEFLAGS=-municode" >> config.mak
echo "HAS_WMAIN=yes" >> config.mak
else
echo "UNICODEFLAGS=" >> config.mak
if docc ; then
echo "HAS_WMAIN=yes" >> config.mak
else
echo "HAS_WMAIN=no" >> config.mak
fi
fi
fi
elif test "$linux" = "yes" ; then
echo "CONFIG_LINUX=yes" >> config.mak
echo "CONFIG_OS=CONFIG_LINUX" >> config.mak
echo "#define GPAC_CONFIG_LINUX" >> $TMPH
elif test "$freebsd" = "yes" ; then
echo "CONFIG_FREEBSD=yes" >> config.mak
echo "CONFIG_OS=CONFIG_FREEBSD" >> config.mak
echo "#define GPAC_CONFIG_FREEBSD" >> $TMPH
elif test "$darwin" = "yes" ; then
echo "CONFIG_DARWIN=yes" >> config.mak
echo "CONFIG_OS=CONFIG_DARWIN" >> config.mak
echo "#define GPAC_CONFIG_DARWIN" >> $TMPH
if test "$DarwinGL" = "yes" ; then
echo "#define CONFIG_DARWIN_GL" >> $TMPH
fi
echo "mac_apps=$Mac_Applications" >> config.mak
elif test "$sunos" = "yes" ; then
echo "CONFIG_SUNOS=yes" >> config.mak
echo "CONFIG_OS=CONFIG_SUNOS" >> config.mak
echo "#define GPAC_CONFIG_SUNOS" >> $TMPH
else
echo "CONFIG_OS=CONFIG_GEN" >> config.mak
echo "#define GPAC_CONFIG_GENERIC" >> $TMPH
fi
if test "$win32" = "no" ; then
echo "GPAC_SH_FLAGS=$GPAC_SH_FLAGS" >> config.mak
echo "EXE_SUFFIX=" >> config.mak
echo "DYN_LIB_SUFFIX=$DYN_LIB_SUFFIX" >> config.mak
else
echo "EXE_SUFFIX=.exe" >> config.mak
echo "DYN_LIB_SUFFIX=.dll" >> config.mak
fi
echo "INSTFLAGS=$INSTFLAGS" >> config.mak
echo "CONFIG_JS=$enable_qjs" >> config.mak
if test "$enable_qjs" = "yes" ; then
echo "#define GPAC_HAS_QJS" >> $TMPH
if test "$disable_qjs_libc" = "yes" ; then
echo "#define GPAC_DISABLE_QJS_LIBC" >> $TMPH
fi
fi
if test "$has_zlib" = "no" -o "$has_zlib" = "force-no" ; then
echo "#define GPAC_DISABLE_ZLIB" >> $TMPH
echo "CONFIG_ZLIB=no" >> config.mak
else
echo "CONFIG_ZLIB=$has_zlib" >> config.mak
fi
echo "CONFIG_FT=$has_freetype" >> config.mak
if test "$has_jpeg" != "no" ; then
echo "#define GPAC_HAS_JPEG" >> $TMPH
fi
if test "$has_png" != "no" ; then
echo "#define GPAC_HAS_PNG" >> $TMPH
fi
if test "$has_vtb" != "no" ; then
echo "#define GPAC_HAS_VTB" >> $TMPH
fi
echo "CONFIG_STRLCPY=$has_strlcpy" >> config.mak
if test "$has_strlcpy" != "no" ; then
echo "#define GPAC_HAS_STRLCPY" >> $TMPH
fi
if test "$has_sock_un" != "no" ; then
echo "#define GPAC_HAS_SOCK_UN" >> $TMPH
fi
echo "CONFIG_LZMA=$has_lzma" >> config.mak
if test "$has_lzma" != "no"; then
echo "#define GPAC_HAS_LZMA" >> $TMPH
fi
if test "$has_openjpeg" != "no" ; then
echo "#define GPAC_HAS_JP2" >> $TMPH
fi
if test "$has_faad" != "no" ; then
echo "#define GPAC_HAS_FAAD" >> $TMPH
fi
if test "$has_mad" != "no" ; then
echo "#define GPAC_HAS_MAD" >> $TMPH
fi
if test "$has_xvid" != "no" ; then
echo "#define GPAC_HAS_XVID" >> $TMPH
fi
echo "CONFIG_OGG=$has_ogg" >> config.mak
if test "$has_vorbis" != "no" ; then
echo "#define GPAC_HAS_VORBIS" >> $TMPH
fi
if test "$has_theora" != "no" ; then
echo "#define GPAC_HAS_THEORA" >> $TMPH
fi
if test "$has_ffmpeg" != "no"; then
echo "#define GPAC_HAS_FFMPEG" >> $TMPH
if test "$ffmpeg_vvc" = "yes"; then
echo "#define FFMPEG_ENABLE_VVC" >> $TMPH
fi
fi
echo "CONFIG_OSS_AUDIO=$has_oss" >> config.mak
echo "CONFIG_ALSA=$has_alsa" >> config.mak
echo "CONFIG_JACK=$has_jack" >> config.mak
if test "$has_a52" != "no" ; then
echo "#define GPAC_HAS_LIBA52" >> $TMPH
fi
echo "CONFIG_PULSEAUDIO=$has_pulseaudio" >> config.mak
echo "CONFIG_FREENECT=$has_freenect" >> config.mak
if test "$has_freenect" != "no"
then
echo "FREENECT_CFLAGS=$freenect_flags" >> config.mak
echo "FREENECT_LDLAGS=$freenect_ld" >> config.mak
fi
if test "$want_gcov" = "yes" ; then
echo "#define GPAC_ENABLE_COVERAGE" >> $TMPH
fi
if test "$has_nghttp2" != "no" ; then
echo "#define GPAC_HAS_HTTP2" >> $TMPH
fi
#dump all cflags
for pcklib in $all_packages ; do
eval "has_pck=\$has_$pcklib"
if test "$has_pck" = "no" ; then
lib_cflags=""
lib_ldflags=""
else
eval "lib_cflags=\$cflags_$pcklib"
eval "lib_ldflags=\$ldflags_$pcklib"
fi
echo $pcklib"_cflags="$lib_cflags >> config.mak
echo $pcklib"_ldflags="$lib_ldflags >> config.mak
done
echo "DISABLE_PLAYER=$disable_player" >> config.mak
echo "DISABLE_STREAMING=$disable_streaming" >> config.mak
echo "DISABLE_SVG=$disable_svg" >> config.mak
echo "DISABLE_LASER=$disable_laser" >> config.mak
echo "DISABLE_SAF=$disable_saf" >> config.mak
echo "DISABLE_BIFS=$disable_bifs" >> config.mak
echo "DISABLE_SENG=$disable_seng" >> config.mak
echo "DISABLE_LOADER_ISOFF=$disable_loader_isoff" >> config.mak
echo "DISABLE_LOADER_BT=$disable_loader_bt" >> config.mak
echo "DISABLE_LOADER_XMT=$disable_loader_xmt" >> config.mak
echo "DISABLE_LOADER_QTVR=$disable_qtvr" >> config.mak
echo "DISABLE_LOADER_SWF=$disable_swf" >> config.mak
echo "DISABLE_SCENE_STATS=$disable_scene_stats" >> config.mak
echo "DISABLE_SCENE_DUMP=$disable_scene_dump" >> config.mak
echo "DISABLE_SCENE_ENCODE=$disable_scene_encode" >> config.mak
echo "DISABLE_SCENEGRAPH=$disable_scenegraph" >> config.mak
echo "DISABLE_CRYPTO=$disable_crypto" >> config.mak
echo "DISABLE_DVBX=$disable_dvbx" >> config.mak
echo "DISABLE_AVILIB=$disable_avi" >> config.mak
echo "DISABLE_M2PS=$disable_m2ps" >> config.mak
echo "DISABLE_OGG=$disable_ogg" >> config.mak
echo "DISABLE_ISOFF=$disable_isoff" >> config.mak
echo "DISABLE_ISOFF_HINT=$disable_isoff_hint" >> config.mak
echo "DISABLE_VOBSUB=$disable_vobsub" >> config.mak
echo "DISABLE_TTXT=$disable_ttxt" >> config.mak
echo "DISABLE_TTML=$disable_ttml" >> config.mak
echo "DISABLE_SMGR=$disable_smgr" >> config.mak
echo "DISABLE_AV_PARSERS=$disable_parsers" >> config.mak
echo "DISABLE_MEDIA_IMPORT=$disable_import" >> config.mak
echo "DISABLE_MEDIA_EXPORT=$disable_export" >> config.mak
echo "DISABLE_MPD=$disable_mpd" >> config.mak
echo "DISABLE_DASH_CLIENT=$disable_dash" >> config.mak
echo "DISABLE_CORE_TOOLS=$disable_core" >> config.mak
echo "DISABLE_OD_DUMP=$disable_od_dump" >> config.mak
echo "DISABLE_OD_PARSE=$disable_od_parse" >> config.mak
echo "MINIMAL_OD=$disable_od" >> config.mak
echo "DISABLE_ISOM_ADOBE=$disable_isoff_hds" >> config.mak
echo "DISABLE_VRML=$disable_vrml" >> config.mak
echo "DISABLE_ROUTE=$disable_route" >> config.mak
echo "DISABLE_CRYPTO=$disable_crypto" >> config.mak
if test "$disable_parsers" = "yes" ; then
disable_m2ts_mux="yes"
fi
echo "DISABLE_M2TS_MUX=$disable_m2ts_mux" >> config.mak
echo "DISABLE_M2TS=$disable_m2ts" >> config.mak
echo "GPAC_USE_TINYGL=$has_tinygl" >> config.mak
echo "OGL_INCLS=$INCL3D" >> config.mak
echo "HAS_OPENGL=$has_opengl" >> config.mak
if test "$has_opengl" = "yes" ; then
echo "OGL_LIBS=$LINK3D" >> config.mak
else
echo "#define GPAC_DISABLE_3D" >> $TMPH
fi
if test "$has_tinygl" = "yes" ; then
echo "#define GPAC_USE_TINYGL" >> $TMPH
fi
if test "$disable_nvdec" = "yes" ; then
echo "#define GPAC_DISABLE_NVDEC" >> $TMPH
fi
echo "HAS_OPENSSL=$has_ssl" >> config.mak
if test "$has_ssl" != "no" ; then
echo "#define GPAC_HAS_SSL" >> $TMPH
fi
echo "CONFIG_SDL=$has_sdl" >> config.mak
if test "$has_sdl" != "no" ; then
echo "sdl_cflags=$sdl_cflags" >> config.mak
echo "sdl_ldflags=$sdl_lib_flags" >> config.mak
fi
echo "DEBUGBUILD=$debuginfo" >> config.mak
echo "GPROFBUILD=$gprof_build" >> config.mak
echo "STATIC_BINARY=$static_bin" >> config.mak
echo "STATIC_BUILD=$static_build" >> config.mak
echo "CONFIG_IPV6=$has_ipv6" >> config.mak
if test "$has_ipv6" = "yes" ; then
echo "#define GPAC_HAS_IPV6" >> $TMPH
fi
if test "$has_poll" = "yes" ; then
echo "#define GPAC_HAS_POLL" >> $TMPH
fi
if test "$is_64" = "yes" ; then
echo "#define GPAC_64_BITS" >> $TMPH
fi
if test "$win32" = "yes" ; then
echo "CONFIG_DIRECTX=$has_directx" >> config.mak
if test "$has_directx" = "yes" ; then
echo "DX_PATH=$dx_path" >> config.mak
fi
fi
echo "CONFIG_PLATINUM=$has_platinum" >> config.mak
if test "$has_opensvc" != "no" ; then
echo "#define GPAC_HAS_OPENSVC" >> $TMPH
fi
echo "CONFIG_OPENHEVC=$has_openhevc" >> config.mak
if test "$has_openhevc" != "no" ; then
echo "#define GPAC_HAS_OPENHEVC" >> $TMPH
if test "$static_modules" = "yes" ; then
echo "#define GPAC_OPENHEVC_STATIC" >> $TMPH
fi
fi
echo "LINUX_DVB=$has_dvb4linux" >> config.mak
if test "$has_dvb4linux" != "no"; then
echo "#define GPAC_HAS_LINUX_DVB" >> $TMPH
fi
echo "CONFIG_DIRECTFB=$has_directfb" >> config.mak
echo "DIRECTFB_INC_PATH=$directfb_inc" >> config.mak
echo "DIRECTFB_LIB=$directfb_lib" >> config.mak
echo "CONFIG_X11=$has_x11" >> config.mak
if test "$has_x11_shm" = "yes"; then
echo "USE_X11_SHM=$has_x11_shm" >> config.mak
fi
if test "$has_x11_xv" = "yes"; then
echo "USE_X11_XV=$has_x11_xv" >> config.mak
fi
if test "$has_x11_glx" = "yes"; then
echo "USE_X11_GLX=$has_x11_glx" >> config.mak
fi
echo "CONFIG_HID=$has_hid" >> config.mak
echo "HID_LDFLAGS=$hid_lib" >> config.mak
echo "PKG_CONFIG=$pkg_config" >> config.mak
if [ -n "$X11_PATH" ] ; then
if test "$is_64" = "yes"; then
#not on OSX ...
if test "$darwin" = "yes"; then
echo "X11_LIB_PATH=$X11_PATH/lib" >> config.mak
else
echo "X11_LIB_PATH=$X11_PATH/lib64" >> config.mak
fi
else
echo "X11_LIB_PATH=$X11_PATH/lib" >> config.mak
fi
echo "X11_INC_PATH=$X11_PATH/include" >> config.mak
fi
#build tree in object directory if source path is different from current one
if test "$source_path_used" = "yes" ; then
echo "Creating compilation tree image"
SRC_DIRS="src src/utils src/isomedia src/ietf src/odf src/bifs src/scenegraph src/filter_core src/filters src/crypto src/media_tools src/scene_manager src/compositor src/laser src/evg src/quickjs src/jsmods"
APP_DIRS="applications/gpac applications/mp4box"
for dir in $SRC_DIRS ; do
mkdir -p "$dir"
done
ln -sf "$source_path/Makefile" Makefile
ln -sf "$source_path/static.mak" static.mak
ln -sf "$source_path/src/Makefile" src/Makefile
mkdir -p applications
ln -sf "$source_path/applications/Makefile" applications/Makefile
mkdir -p applications/testapps
for dir in $APP_DIRS ; do
mkdir -p "$dir"
ln -sf "$source_path/$dir/Makefile" "$dir/Makefile"
done
cur_dir="`pwd`"
cd "$cur_dir"
mkdir -p modules
ln -sf "$source_path/modules/Makefile" modules/Makefile
for moddir in "$source_path/modules/"* ; do
if [ -d "$moddir" -a -f "$moddir/Makefile" ]; then
dir="${moddir#"$source_path/"}"
mkdir -p "$dir"
ln -sf "$moddir/Makefile" "$dir/Makefile"
fi
done
if test "$has_directx" = "yes"; then
ln -sf "$source_path/modules/dx_hw/hand.cur" modules/dx_hw/hand.cur
ln -sf "$source_path/modules/dx_hw/collide.cur" modules/dx_hw/collide.cur
fi
cd "$cur_dir"
echo "SRC_LOCAL_PATH=no" >> config.mak
else
echo "SRC_LOCAL_PATH=yes" >> config.mak
fi
echo "SRC_PATH=$source_path" >> config.mak
echo "BUILD_PATH=$build_path" >> config.mak
echo "LOCAL_INC_PATH=$local_inc" >> config.mak
echo "#endif" >> $TMPH
#do not overwrite config.h if unchanged to avoid superfluous rebuilds.
if ! cmp -s $TMPH config.h ; then
rm -f config.h
mv -f $TMPH config.h
else
echo "config.h is unchanged"
fi
echo "Check config.log for detection failures"
rm -f $TMPO $TMPC $TMPE $TMPS $TMPCXX $TMPH
if [ ! -d "./bin" ] ; then
mkdir ./bin
fi
if [ ! -d "./bin/gcc" ] ; then
mkdir ./bin/gcc
fi
if [ ! -d "./bin/gcc/temp" ] ; then
mkdir ./bin/gcc/temp
fi
echo '%.opic : %.c' >> config.mak
if test "$verbose" = "no" ; then
echo ' @echo " CC $<"' >> config.mak
fi
echo ' $(CC) $(CFLAGS) $(PIC_CFLAGS) -c $< -o $@' >> config.mak
echo '%.o : %.c' >> config.mak
if test "$verbose" = "no" ; then
echo ' @echo " CC $<"' >> config.mak
fi
echo ' $(CC) $(CFLAGS) -c -o $@ $<' >> config.mak
echo '%.o: %.cpp' >> config.mak
if test "$verbose" = "no" ; then
echo ' @echo " CC $<"' >> config.mak
fi
echo ' $(CXX) $(CFLAGS) -c -o $@ $<' >> config.mak
echo '%.o: %.rc' >> config.mak
if test "$verbose" = "no" ; then
echo ' @echo " RC $<"' >> config.mak
fi
echo ' $(WINDRES) $< -o $@ ' >> config.mak
#pkg-config
generate_pkgconfig () {
echo "prefix=$prefix"
echo "exec_prefix=\${prefix}"
echo "libdir=\${exec_prefix}/$libdir"
echo "includedir=\${exec_prefix}/include"
echo ""
echo "Name: gpac"
echo "Description: GPAC Multimedia Framework"
echo "URL: http://gpac.io"
echo "Version:$version"
echo "Cflags: -I\${prefix}/include"
echo "Libs: -L\${libdir} -lgpac"
}
generate_pkgconfig > gpac.pc
if test "$static_bin" = "yes"; then
if test "$darwin" = "yes" ; then
echo "\nWarning: static binaries on OSX cannot remove all dependendencies to system libraries\n"
elif test "$win32" = "yes" ; then
echo "\nWarning: static binaries on Win32 cannot remove all dependendencies to system libraries\n"
fi
fi
echo "Done - type 'make help' for make info, 'make' to build"
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。