mirror of
https://github.com/ossrs/srs.git
synced 2025-02-12 11:21:52 +00:00
For #1547, refine configure, remove some macros
This commit is contained in:
parent
84d69a51a4
commit
024433f327
6 changed files with 63 additions and 215 deletions
|
@ -40,9 +40,6 @@ function srs_undefine_macro()
|
|||
}
|
||||
|
||||
# export the preset.
|
||||
if [ $SRS_OSX = YES ]; then
|
||||
srs_define_macro "SRS_OSX" $SRS_AUTO_HEADERS_H
|
||||
fi
|
||||
if [ $SRS_X86_X64 = YES ]; then
|
||||
srs_define_macro "SRS_X86_X64" $SRS_AUTO_HEADERS_H
|
||||
fi
|
||||
|
|
|
@ -185,101 +185,11 @@ fi
|
|||
#####################################################################################
|
||||
# for Centos, auto install tools by yum
|
||||
#####################################################################################
|
||||
OS_IS_OSX=NO
|
||||
function OSX_prepare()
|
||||
{
|
||||
uname -s|grep Darwin >/dev/null 2>&1
|
||||
ret=$?; if [[ 0 -ne $ret ]]; then
|
||||
if [ $SRS_OSX = YES ]; then
|
||||
echo "Current OS `uname -s` is not OSX, please check your configure options."
|
||||
exit 1;
|
||||
fi
|
||||
return 0;
|
||||
fi
|
||||
|
||||
OS_IS_OSX=YES
|
||||
echo "Installing tools for OSX."
|
||||
# requires the osx when os
|
||||
if [ $OS_IS_OSX = YES ]; then
|
||||
if [ $SRS_OSX = NO ]; then
|
||||
echo "Invalid configure options for OSX, please specify --osx."
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
brew --help >/dev/null 2>&1; ret=$?; if [[ 0 -ne $ret ]]; then
|
||||
echo "Installing brew."
|
||||
echo "ruby -e \"$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)\""
|
||||
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"; ret=$?; if [[ 0 -ne $ret ]]; then return $ret; fi
|
||||
echo "The brew is installed."
|
||||
fi
|
||||
|
||||
gcc --help >/dev/null 2>&1; ret=$?; if [[ 0 -ne $ret ]]; then
|
||||
echo "Installing gcc."
|
||||
echo "brew install gcc"
|
||||
brew install gcc; ret=$?; if [[ 0 -ne $ret ]]; then return $ret; fi
|
||||
echo "The gcc is installed."
|
||||
fi
|
||||
|
||||
g++ --help >/dev/null 2>&1; ret=$?; if [[ 0 -ne $ret ]]; then
|
||||
echo "Installing gcc-c++."
|
||||
echo "brew install gcc-c++"
|
||||
brew install gcc-c++; ret=$?; if [[ 0 -ne $ret ]]; then return $ret; fi
|
||||
echo "The gcc-c++ is installed."
|
||||
fi
|
||||
|
||||
make --help >/dev/null 2>&1; ret=$?; if [[ 0 -ne $ret ]]; then
|
||||
echo "Installing make."
|
||||
echo "brew install make"
|
||||
brew install make; ret=$?; if [[ 0 -ne $ret ]]; then return $ret; fi
|
||||
echo "The make is installed."
|
||||
fi
|
||||
|
||||
patch --help >/dev/null 2>&1; ret=$?; if [[ 0 -ne $ret ]]; then
|
||||
echo "Installing patch."
|
||||
echo "brew install patch"
|
||||
brew install patch; ret=$?; if [[ 0 -ne $ret ]]; then return $ret; fi
|
||||
echo "The patch is installed."
|
||||
fi
|
||||
|
||||
unzip --help >/dev/null 2>&1; ret=$?; if [[ 0 -ne $ret ]]; then
|
||||
echo "Installing unzip."
|
||||
echo "brew install unzip"
|
||||
brew install unzip; ret=$?; if [[ 0 -ne $ret ]]; then return $ret; fi
|
||||
echo "The unzip is installed."
|
||||
fi
|
||||
|
||||
if [[ $SRS_VALGRIND == YES ]]; then
|
||||
valgrind --help >/dev/null 2>&1; ret=$?; if [[ 0 -ne $ret ]]; then
|
||||
echo "Installing valgrind."
|
||||
echo "brew install valgrind"
|
||||
brew install valgrind; ret=$?; if [[ 0 -ne $ret ]]; then return $ret; fi
|
||||
echo "The valgrind is installed."
|
||||
fi
|
||||
fi
|
||||
|
||||
echo "Tools for OSX are installed."
|
||||
return 0
|
||||
}
|
||||
# donot prepare tools, for srs-librtmp depends only gcc and g++.
|
||||
if [ $SRS_EXPORT_LIBRTMP_PROJECT = NO ]; then
|
||||
OSX_prepare; ret=$?; if [[ 0 -ne $ret ]]; then echo "Install tools for OSX failed, ret=$ret"; exit $ret; fi
|
||||
fi
|
||||
|
||||
# We must use a bash function instead of variable.
|
||||
function sed_utility() {
|
||||
if [ $OS_IS_OSX = YES ]; then
|
||||
sed -i '' "$@"
|
||||
else
|
||||
sed -i "$@"
|
||||
fi
|
||||
|
||||
ret=$?; if [[ $ret -ne 0 ]]; then
|
||||
if [ $OS_IS_OSX = YES ]; then
|
||||
echo "sed -i '' \"$@\""
|
||||
else
|
||||
echo "sed -i \"$@\""
|
||||
fi
|
||||
return $ret
|
||||
fi
|
||||
}
|
||||
|
@ -294,7 +204,7 @@ SED="sed_utility" && echo "SED is $SED"
|
|||
# directly build on arm/mips, for example, pi or cubie,
|
||||
# export srs-librtmp
|
||||
# others is invalid.
|
||||
if [[ $OS_IS_UBUNTU = NO && $OS_IS_CENTOS = NO && $OS_IS_OSX = NO && $SRS_EXPORT_LIBRTMP_PROJECT = NO ]]; then
|
||||
if [[ $OS_IS_UBUNTU = NO && $OS_IS_CENTOS = NO && $SRS_EXPORT_LIBRTMP_PROJECT = NO ]]; then
|
||||
if [[ $SRS_PI = NO && $SRS_CUBIE = NO && $SRS_CROSS_BUILD = NO ]]; then
|
||||
echo "Your OS `uname -s` is not supported."
|
||||
exit 1
|
||||
|
@ -307,10 +217,6 @@ fi
|
|||
if [ $SRS_EXPORT_LIBRTMP_PROJECT = NO ]; then
|
||||
# check the cross build flag file, if flag changed, need to rebuild the st.
|
||||
_ST_MAKE=linux-debug && _ST_EXTRA_CFLAGS="-DMD_HAVE_EPOLL"
|
||||
# for osx, use darwin for st, donot use epoll.
|
||||
if [ $OS_IS_OSX = YES ]; then
|
||||
_ST_MAKE=darwin-debug && _ST_EXTRA_CFLAGS="-DMD_HAVE_KQUEUE -I/usr/local/include"
|
||||
fi
|
||||
if [[ $SRS_VALGRIND == YES ]]; then
|
||||
_ST_EXTRA_CFLAGS="$_ST_EXTRA_CFLAGS -DMD_VALGRIND"
|
||||
fi
|
||||
|
@ -416,10 +322,6 @@ fi
|
|||
# openssl, for rtmp complex handshake
|
||||
#####################################################################################
|
||||
# extra configure options
|
||||
CONFIGURE_TOOL="./config"
|
||||
if [ $SRS_OSX = YES ]; then
|
||||
CONFIGURE_TOOL="./Configure darwin64-`uname -m`-cc"
|
||||
fi
|
||||
OPENSSL_HOTFIX="-DOPENSSL_NO_HEARTBEATS"
|
||||
# @see http://www.openssl.org/news/secadv/20140407.txt
|
||||
# Affected users should upgrade to OpenSSL 1.1.0e. Users unable to immediately
|
||||
|
@ -442,7 +344,7 @@ if [ $SRS_SSL = YES ]; then
|
|||
(
|
||||
rm -rf ${SRS_OBJS}/openssl-1.1.0e && cd ${SRS_OBJS} &&
|
||||
unzip -q ../3rdparty/openssl-1.1.0e.zip && cd openssl-1.1.0e &&
|
||||
$CONFIGURE_TOOL --prefix=`pwd`/_release -no-shared no-threads $OPENSSL_HOTFIX &&
|
||||
./config --prefix=`pwd`/_release -no-shared no-threads $OPENSSL_HOTFIX &&
|
||||
make && make install_sw &&
|
||||
cd .. && rm -rf openssl && ln -sf openssl-1.1.0e/_release openssl
|
||||
)
|
||||
|
|
|
@ -1,12 +1,5 @@
|
|||
#!/bin/bash
|
||||
|
||||
OS_IS_OSX=NO
|
||||
uname -s|grep Darwin >/dev/null 2>&1
|
||||
ret=$?; if [[ 0 -eq $ret ]]; then
|
||||
OS_IS_OSX=YES
|
||||
fi
|
||||
echo "Is OSX: ${OS_IS_OSX}"
|
||||
|
||||
# when export srs-librtmp single files
|
||||
# package the whole project to srs_librtmp.h and srs_librtmp.cpp
|
||||
#
|
||||
|
|
|
@ -77,7 +77,6 @@ SRS_VALGRIND=NO
|
|||
SRS_X86_X64=NO
|
||||
# for osx system
|
||||
SRS_OSX=NO
|
||||
SRS_ALLOW_OSX=NO
|
||||
# dev, open all features for dev, no gperf/prof/arm.
|
||||
SRS_DEV=NO
|
||||
# dev, open main server feature for dev, no utest/research/librtmp
|
||||
|
@ -98,7 +97,7 @@ SRS_DISABLE_ALL=NO
|
|||
SRS_ENABLE_ALL=NO
|
||||
#
|
||||
#####################################################################################
|
||||
# We don't support crossbuild for ARM/MIPS, please directly build it on ARM/MIPS server.
|
||||
# Whether enable crossbuild for ARM or MIPS.
|
||||
SRS_CROSS_BUILD=NO
|
||||
|
||||
#####################################################################################
|
||||
|
@ -107,106 +106,79 @@ SRS_CROSS_BUILD=NO
|
|||
function show_help() {
|
||||
cat << END
|
||||
|
||||
Options:
|
||||
-h, --help print this message
|
||||
Presets:
|
||||
--x86-64, --x86-x64 [default] For x86/x64 cpu, common pc and servers.
|
||||
--arm Enable crossbuild for ARM, should also set bellow toolchain options.
|
||||
--mips Enable crossbuild for MIPS
|
||||
|
||||
--with-ssl enable rtmp complex handshake, requires openssl-devel installed.
|
||||
--with-hds enable hds streaming, mux RTMP to F4M/F4V files.
|
||||
--with-nginx enable delivery HTTP stream with nginx.
|
||||
--with-stream-caster enable stream caster to serve other stream over other protocol.
|
||||
--with-ffmpeg enable transcoding tool ffmpeg.
|
||||
--with-transcode enable transcoding features.
|
||||
--with-ingest enable ingest features.
|
||||
--with-stat enable the data statistic, for http api.
|
||||
--with-librtmp enable srs-librtmp, library for client.
|
||||
--with-research build the research tools.
|
||||
--with-utest build the utest for SRS.
|
||||
--with-gperf build SRS with gperf tools(no gmd/gmc/gmp/gcp, with tcmalloc only).
|
||||
https://blog.csdn.net/win_lin/article/details/53503869
|
||||
--with-gmc build memory check for SRS with gperf tools.
|
||||
--with-gmd build memory defense(corrupt memory) for SRS with gperf tools.
|
||||
--with-gmp build memory profile for SRS with gperf tools.
|
||||
--with-gcp build cpu profile for SRS with gperf tools.
|
||||
--with-gprof build SRS with gprof(GNU profile tool).
|
||||
--with-arm-ubuntu12 cross build SRS on ubuntu12 for armhf(v7cpu).
|
||||
--with-mips-ubuntu12 cross build SRS on ubuntu12 for mips.
|
||||
Features:
|
||||
-h, --help Print this message and exit 0.
|
||||
|
||||
--without-ssl disable rtmp complex handshake.
|
||||
--without-hds disable hds, the adobe http dynamic streaming.
|
||||
--without-nginx disable delivery HTTP stream with nginx.
|
||||
--without-stream-caster disable stream caster, only listen and serve RTMP/HTTP.
|
||||
--without-ffmpeg disable the ffmpeg transcode tool feature.
|
||||
--without-transcode disable the transcoding feature.
|
||||
--without-ingest disable the ingest feature.
|
||||
--without-stat disable the data statistic feature.
|
||||
--without-librtmp disable srs-librtmp, library for client.
|
||||
--without-research do not build the research tools.
|
||||
--without-utest do not build the utest for SRS.
|
||||
--without-gperf do not build SRS with gperf tools(without tcmalloc and gmd/gmc/gmp/gcp).
|
||||
--without-gmc do not build memory check for SRS with gperf tools.
|
||||
--without-gmd do not build memory defense for SRS with gperf tools.
|
||||
--without-gmp do not build memory profile for SRS with gperf tools.
|
||||
--without-gcp do not build cpu profile for SRS with gperf tools.
|
||||
--without-gprof do not build srs with gprof(GNU profile tool).
|
||||
--without-arm-ubuntu12 do not cross build srs on ubuntu12 for armhf(v7cpu).
|
||||
--without-mips-ubuntu12 do not cross build srs on ubuntu12 for mips.
|
||||
--with-ssl Enable rtmp complex handshake, requires openssl-devel installed.
|
||||
--with-hds Enable hds streaming, mux RTMP to F4M/F4V files.
|
||||
--with-stream-caster Enable stream caster to serve other stream over other protocol.
|
||||
--with-stat Enable the data statistic, for http api.
|
||||
--with-librtmp Enable srs-librtmp, library for client.
|
||||
--with-research Build the research tools.
|
||||
--with-utest Build the utest for SRS.
|
||||
|
||||
--without-ssl Disable rtmp complex handshake.
|
||||
--without-hds Disable hds, the adobe http dynamic streaming.
|
||||
--without-stream-caster Disable stream caster, only listen and serve RTMP/HTTP.
|
||||
--without-stat Disable the data statistic feature.
|
||||
--without-librtmp Disable srs-librtmp, library for client.
|
||||
--without-research Do not build the research tools.
|
||||
--without-utest Do not build the utest for SRS.
|
||||
|
||||
--prefix=<path> The absolute installation path for srs. Default: $SRS_PREFIX
|
||||
--static Whether add '-static' to link options.
|
||||
--gcov Whether enable the GCOV compiler options.
|
||||
--jobs[=N] Allow N jobs at once; infinite jobs with no arg.
|
||||
used for make in the configure, for example, to make ffmpeg.
|
||||
--log-verbose whether enable the log verbose level. default: no.
|
||||
--log-info whether enable the log info level. default: no.
|
||||
--log-trace whether enable the log trace level. default: yes.
|
||||
Used for make in the configure, for example, to make ffmpeg.
|
||||
--log-verbose Whether enable the log verbose level. default: no.
|
||||
--log-info Whether enable the log info level. default: no.
|
||||
--log-trace Whether enable the log trace level. default: yes.
|
||||
|
||||
Presets:
|
||||
--x86-x64 [default] for x86/x64 cpu, common pc and servers.
|
||||
--osx for osx(darwin) system to build SRS.
|
||||
--pi for raspberry-pi(directly build), open features hls/ssl/static.
|
||||
--cubie for cubieboard(directly build), open features except ffmpeg/nginx.
|
||||
--arm alias for --with-arm-ubuntu12, for ubuntu12, arm crossbuild
|
||||
--mips alias for --with-mips-ubuntu12, for ubuntu12, mips crossbuild
|
||||
--fast the most fast compile, nothing, only support vp6 RTMP.
|
||||
--pure-rtmp only support RTMP with ssl.
|
||||
--disable-all disable all features, only support vp6 RTMP.
|
||||
--dev for dev, open all features, no nginx/gperf/gprof/arm.
|
||||
--fast-dev for dev fast compile, the RTMP server, without librtmp/utest/research.
|
||||
--demo for srs demo, @see: https://github.com/ossrs/srs/wiki/v1_CN_SampleDemo
|
||||
--full enable all features, no gperf/gprof/arm.
|
||||
--x86-64 alias for --x86-x64.
|
||||
Performance:
|
||||
https://blog.csdn.net/win_lin/article/details/53503869
|
||||
--with-valgrind Support valgrind for memory check.
|
||||
--with-gperf Build SRS with gperf tools(no gmd/gmc/gmp/gcp, with tcmalloc only).
|
||||
--with-gmc Build memory check for SRS with gperf tools.
|
||||
--with-gmd Build memory defense(corrupt memory) for SRS with gperf tools.
|
||||
--with-gmp Build memory profile for SRS with gperf tools.
|
||||
--with-gcp Build cpu profile for SRS with gperf tools.
|
||||
--with-gprof Build SRS with gprof(GNU profile tool).
|
||||
|
||||
--without-valgrind Do not support valgrind for memory check.
|
||||
--without-gperf Do not build SRS with gperf tools(without tcmalloc and gmd/gmc/gmp/gcp).
|
||||
--without-gmc Do not build memory check for SRS with gperf tools.
|
||||
--without-gmd Do not build memory defense for SRS with gperf tools.
|
||||
--without-gmp Do not build memory profile for SRS with gperf tools.
|
||||
--without-gcp Do not build cpu profile for SRS with gperf tools.
|
||||
--without-gprof Do not build srs with gprof(GNU profile tool).
|
||||
|
||||
Toolchain options:
|
||||
--extra-flags=<EFLAGS> Set EFLAGS as CFLAGS and CXXFLAGS. Pass to ST as EXTRA_CFLAGS.
|
||||
|
||||
Recomment to enable:
|
||||
--with-http-api enable HTTP API, to communicate with SRS.
|
||||
--with-http-callback enable HTTP hooks, build cherrypy as demo api server.
|
||||
--with-http-server enable HTTP server to delivery http stream.
|
||||
--with-hls enable HLS streaming, mux RTMP to M3U8/TS files.
|
||||
--with-dvr enable DVR, record RTMP to FLV/MP4 files.
|
||||
https://github.com/ossrs/srs/issues/1547#issuecomment-576078411
|
||||
--extra-flags=<EFLAGS> Set EFLAGS as CFLAGS and CXXFLAGS. Also passed to ST as EXTRA_CFLAGS.
|
||||
|
||||
Conflicts:
|
||||
1. --with-gmc vs --with-gmp:
|
||||
@see: http://google-perftools.googlecode.com/svn/trunk/doc/heap_checker.html
|
||||
2. --with-gperf/gmc/gmp vs --with-gprof:
|
||||
gperftools not compatible with gprof.
|
||||
The gperftools not compatible with gprof.
|
||||
3. --arm vs --with-ffmpeg/gperf/gmc/gmp/gprof:
|
||||
the complex tools not available for arm.
|
||||
The complex tools not available for arm.
|
||||
|
||||
Experts:
|
||||
--use-sys-ssl donot compile ssl, use system ssl(-lssl) if required.
|
||||
--memory-watch enable memory watch to detect memory leaking(hurts performance).
|
||||
--export-librtmp-project=<path> export srs-librtmp to specified project in path.
|
||||
--export-librtmp-single=<path> export srs-librtmp to a single file(.h+.cpp) in path.
|
||||
--with-valgrind support valgrind for memory check.
|
||||
--without-valgrind donot support valgrind for memory check.
|
||||
--use-sys-ssl Do not compile ssl, use system ssl(-lssl) if required.
|
||||
--export-librtmp-project=<path> Export srs-librtmp to specified project in path.
|
||||
--export-librtmp-single=<path> Export srs-librtmp to a single file(.h+.cpp) in path.
|
||||
|
||||
Workflow:
|
||||
1. apply "Presets". if not specified, use default preset.
|
||||
2. apply "Options". user specified option will override the preset.
|
||||
3. check conflicts. @see Conflicts section.
|
||||
4. generate detail features.
|
||||
1. Apply "Presets". if not specified, use default preset.
|
||||
2. Apply "Features", "Performance" and others. user specified option will override the preset.
|
||||
3. Check conflicts, fail if exists conflicts.
|
||||
4. Generate Makefile.
|
||||
|
||||
Remark:
|
||||
1. For performance improving, read https://blog.csdn.net/win_lin/article/details/53503869
|
||||
|
@ -271,7 +243,7 @@ function parse_user_option() {
|
|||
--x86-x64) SRS_X86_X64=YES ;;
|
||||
--x86-64) SRS_X86_X64=YES ;;
|
||||
--osx) SRS_OSX=YES ;;
|
||||
--allow-osx) SRS_ALLOW_OSX=YES ;;
|
||||
--allow-osx) SRS_OSX=YES ;;
|
||||
--arm) SRS_CROSS_BUILD=YES ;;
|
||||
--mips) SRS_CROSS_BUILD=YES ;;
|
||||
--pi) SRS_PI=YES ;;
|
||||
|
@ -608,15 +580,5 @@ function check_option_conflicts() {
|
|||
if [ $__check_ok = NO ]; then
|
||||
exit 1;
|
||||
fi
|
||||
|
||||
if [[ $SRS_OSX == YES && $SRS_ALLOW_OSX == NO ]]; then
|
||||
macOSVersion=`sw_vers -productVersion`
|
||||
macOSVersionMajor=`echo $macOSVersion|awk -F '.' '{print $1}'`
|
||||
macOSVersionMinor=`echo $macOSVersion|awk -F '.' '{print $2}'`
|
||||
if [[ $macOSVersionMajor -ge 10 && $macOSVersionMinor -ge 14 ]]; then
|
||||
echo "macOS $macOSVersion is not supported, read https://github.com/ossrs/srs/issues/1250"
|
||||
exit -1
|
||||
fi
|
||||
fi
|
||||
}
|
||||
check_option_conflicts
|
||||
|
|
|
@ -23,12 +23,6 @@ GTEST_DIR=${SRS_TRUNK_PREFIX}/${SRS_OBJS_DIR}/gtest
|
|||
# the extra defines to compile utest.
|
||||
EXTRA_DEFINES=""
|
||||
|
||||
# for osx to disable the error.
|
||||
# gtest/include/gtest/internal/gtest-port.h:499:13: fatal error: 'tr1/tuple' file not found
|
||||
if [ $SRS_OSX = YES ]; then
|
||||
EXTRA_DEFINES="$EXTRA_DEFINES -DGTEST_HAS_TR1_TUPLE=0"
|
||||
fi
|
||||
|
||||
cat << END > ${FILE}
|
||||
# user must run make the ${SRS_OBJS_DIR}/utest dir
|
||||
# at the same dir of Makefile.
|
||||
|
|
Loading…
Reference in a new issue