mirror of
https://github.com/ossrs/srs.git
synced 2025-03-09 15:49:59 +00:00
arm support ssl/hls, change to 0.9.17
This commit is contained in:
parent
75340e3ac0
commit
a9da5903f6
4 changed files with 274 additions and 129 deletions
|
@ -1,7 +1,8 @@
|
|||
#!/bin/bash
|
||||
|
||||
# variables:
|
||||
# SRS_JOBS: the build jobs, parent script must set it.
|
||||
# variables, parent script must set it:
|
||||
# SRS_JOBS: the build jobs.
|
||||
# SrsArmMakeOptions: the arm make options for ubuntu12(armhf, v7cpu)
|
||||
|
||||
#####################################################################################
|
||||
#####################################################################################
|
||||
|
@ -33,7 +34,7 @@ function Ubuntu_prepare()
|
|||
{
|
||||
uname -v|grep Ubuntu >/dev/null 2>&1
|
||||
ret=$?; if [[ 0 -ne $ret ]]; then
|
||||
return;
|
||||
return 0;
|
||||
fi
|
||||
|
||||
echo "Ubuntu detected, install tools if needed"
|
||||
|
@ -41,69 +42,80 @@ function Ubuntu_prepare()
|
|||
gcc --help >/dev/null 2>&1; ret=$?; if [[ 0 -ne $ret ]]; then
|
||||
echo "install gcc"
|
||||
require_sudoer "sudo apt-get install -y --force-yes gcc"
|
||||
sudo apt-get install -y --force-yes gcc
|
||||
sudo apt-get install -y --force-yes gcc; ret=$?; if [[ 0 -ne $ret ]]; then return $ret; fi
|
||||
echo "install gcc success"
|
||||
fi
|
||||
|
||||
g++ --help >/dev/null 2>&1; ret=$?; if [[ 0 -ne $ret ]]; then
|
||||
echo "install g++"
|
||||
require_sudoer "sudo apt-get install -y --force-yes g++"
|
||||
sudo apt-get install -y --force-yes g++
|
||||
sudo apt-get install -y --force-yes g++; ret=$?; if [[ 0 -ne $ret ]]; then return $ret; fi
|
||||
echo "install g++ success"
|
||||
fi
|
||||
|
||||
make --help >/dev/null 2>&1; ret=$?; if [[ 0 -ne $ret ]]; then
|
||||
echo "install make"
|
||||
require_sudoer "sudo apt-get install -y --force-yes make"
|
||||
sudo apt-get install -y --force-yes make
|
||||
sudo apt-get install -y --force-yes make; ret=$?; if [[ 0 -ne $ret ]]; then return $ret; fi
|
||||
echo "install make success"
|
||||
fi
|
||||
|
||||
autoconf --help >/dev/null 2>&1; ret=$?; if [[ 0 -ne $ret ]]; then
|
||||
echo "install autoconf"
|
||||
require_sudoer "sudo apt-get install -y --force-yes autoconf"
|
||||
sudo apt-get install -y --force-yes autoconf
|
||||
sudo apt-get install -y --force-yes autoconf; ret=$?; if [[ 0 -ne $ret ]]; then return $ret; fi
|
||||
echo "install autoconf success"
|
||||
fi
|
||||
|
||||
libtool --help >/dev/null 2>&1; ret=$?; if [[ 0 -ne $ret ]]; then
|
||||
echo "install libtool"
|
||||
require_sudoer "sudo apt-get install -y --force-yes libtool"
|
||||
sudo apt-get install -y --force-yes libtool
|
||||
sudo apt-get install -y --force-yes libtool; ret=$?; if [[ 0 -ne $ret ]]; then return $ret; fi
|
||||
echo "install libtool success"
|
||||
fi
|
||||
|
||||
if [[ ! -f /usr/include/pcre.h ]]; then
|
||||
echo "install libpcre3-dev"
|
||||
require_sudoer "sudo apt-get install -y --force-yes libpcre3-dev"
|
||||
sudo apt-get install -y --force-yes libpcre3-dev
|
||||
sudo apt-get install -y --force-yes libpcre3-dev; ret=$?; if [[ 0 -ne $ret ]]; then return $ret; fi
|
||||
echo "install libpcre3-dev success"
|
||||
fi
|
||||
|
||||
if [[ ! -f /usr/include/zlib.h ]]; then
|
||||
echo "install zlib1g-dev"
|
||||
require_sudoer "sudo apt-get install -y --force-yes zlib1g-dev"
|
||||
sudo apt-get install -y --force-yes zlib1g-dev
|
||||
sudo apt-get install -y --force-yes zlib1g-dev; ret=$?; if [[ 0 -ne $ret ]]; then return $ret; fi
|
||||
echo "install zlib1g-dev success"
|
||||
fi
|
||||
|
||||
if [[ ! -d /usr/include/freetype2 ]]; then
|
||||
echo "install libfreetype6-dev"
|
||||
require_sudoer "sudo apt-get install -y --force-yes libfreetype6-dev"
|
||||
sudo apt-get install -y --force-yes libfreetype6-dev
|
||||
sudo apt-get install -y --force-yes libfreetype6-dev; ret=$?; if [[ 0 -ne $ret ]]; then return $ret; fi
|
||||
echo "install libfreetype6-dev success"
|
||||
fi
|
||||
|
||||
# for arm, install the cross build tool chain.
|
||||
if [ $SRS_ARM_UBUNTU12 = YES ]; then
|
||||
arm-linux-gnueabi-gcc --help >/dev/null 2>&1; ret=$?; if [[ 0 -ne $ret ]]; then
|
||||
echo "install gcc-arm-linux-gnueabi g++-arm-linux-gnueabi"
|
||||
require_sudoer "sudo apt-get install -y --force-yes gcc-arm-linux-gnueabi g++-arm-linux-gnueabi"
|
||||
sudo apt-get install -y --force-yes gcc-arm-linux-gnueabi g++-arm-linux-gnueabi; ret=$?; if [[ 0 -ne $ret ]]; then return $ret; fi
|
||||
echo "install gcc-arm-linux-gnueabi g++-arm-linux-gnueabi success"
|
||||
fi
|
||||
fi
|
||||
|
||||
echo "Ubuntu install tools success"
|
||||
return 0
|
||||
}
|
||||
Ubuntu_prepare
|
||||
Ubuntu_prepare; ret=$?; if [[ 0 -ne $ret ]]; then echo "Ubuntu perfapre failed, ret=$ret"; exit $ret; fi
|
||||
#####################################################################################
|
||||
# for Centos, auto install tools by yum
|
||||
#####################################################################################
|
||||
function Centos_prepare()
|
||||
{
|
||||
if [[ ! -f /etc/redhat-release ]]; then
|
||||
return;
|
||||
return 0;
|
||||
fi
|
||||
|
||||
echo "Centos detected, install tools if needed"
|
||||
|
@ -111,83 +123,111 @@ function Centos_prepare()
|
|||
gcc --help >/dev/null 2>&1; ret=$?; if [[ 0 -ne $ret ]]; then
|
||||
echo "install gcc"
|
||||
require_sudoer "sudo yum install -y gcc"
|
||||
sudo yum install -y gcc
|
||||
sudo yum install -y gcc; ret=$?; if [[ 0 -ne $ret ]]; then return $ret; fi
|
||||
echo "install gcc success"
|
||||
fi
|
||||
|
||||
g++ --help >/dev/null 2>&1; ret=$?; if [[ 0 -ne $ret ]]; then
|
||||
echo "install gcc-c++"
|
||||
require_sudoer "sudo yum install -y gcc-c++"
|
||||
sudo yum install -y gcc-c++
|
||||
sudo yum install -y gcc-c++; ret=$?; if [[ 0 -ne $ret ]]; then return $ret; fi
|
||||
echo "install gcc-c++ success"
|
||||
fi
|
||||
|
||||
make --help >/dev/null 2>&1; ret=$?; if [[ 0 -ne $ret ]]; then
|
||||
echo "install make"
|
||||
require_sudoer "sudo yum install -y make"
|
||||
sudo yum install -y make
|
||||
sudo yum install -y make; ret=$?; if [[ 0 -ne $ret ]]; then return $ret; fi
|
||||
echo "install make success"
|
||||
fi
|
||||
|
||||
automake --help >/dev/null 2>&1; ret=$?; if [[ 0 -ne $ret ]]; then
|
||||
echo "install automake"
|
||||
require_sudoer "sudo yum install -y automake"
|
||||
sudo yum install -y automake
|
||||
sudo yum install -y automake; ret=$?; if [[ 0 -ne $ret ]]; then return $ret; fi
|
||||
echo "install automake success"
|
||||
fi
|
||||
|
||||
autoconf --help >/dev/null 2>&1; ret=$?; if [[ 0 -ne $ret ]]; then
|
||||
echo "install autoconf"
|
||||
require_sudoer "sudo yum install -y autoconf"
|
||||
sudo yum install -y autoconf
|
||||
sudo yum install -y autoconf; ret=$?; if [[ 0 -ne $ret ]]; then return $ret; fi
|
||||
echo "install autoconf success"
|
||||
fi
|
||||
|
||||
libtool --help >/dev/null 2>&1; ret=$?; if [[ 0 -ne $ret ]]; then
|
||||
echo "install libtool"
|
||||
require_sudoer "sudo yum install -y libtool"
|
||||
sudo yum install -y libtool
|
||||
sudo yum install -y libtool; ret=$?; if [[ 0 -ne $ret ]]; then return $ret; fi
|
||||
echo "install libtool success"
|
||||
fi
|
||||
|
||||
if [[ ! -f /usr/include/pcre.h ]]; then
|
||||
echo "install pcre-devel"
|
||||
require_sudoer "sudo yum install -y pcre-devel"
|
||||
sudo yum install -y pcre-devel
|
||||
sudo yum install -y pcre-devel; ret=$?; if [[ 0 -ne $ret ]]; then return $ret; fi
|
||||
echo "install pcre-devel success"
|
||||
fi
|
||||
|
||||
if [[ ! -f /usr/include/zlib.h ]]; then
|
||||
echo "install zlib-devel"
|
||||
require_sudoer "sudo yum install -y zlib-devel"
|
||||
sudo yum install -y zlib-devel
|
||||
sudo yum install -y zlib-devel; ret=$?; if [[ 0 -ne $ret ]]; then return $ret; fi
|
||||
echo "install zlib-devel success"
|
||||
fi
|
||||
|
||||
if [[ ! -d /usr/include/freetype2 ]]; then
|
||||
echo "install freetype-devel"
|
||||
require_sudoer "sudo yum install -y freetype-devel"
|
||||
sudo yum install -y freetype-devel
|
||||
sudo yum install -y freetype-devel; ret=$?; if [[ 0 -ne $ret ]]; then return $ret; fi
|
||||
echo "install freetype-devel success"
|
||||
fi
|
||||
|
||||
# for arm, install the cross build tool chain.
|
||||
if [ $SRS_ARM_UBUNTU12 = YES ]; then
|
||||
echo "arm-ubuntu12 is invalid for CentOS"
|
||||
return 1
|
||||
fi
|
||||
|
||||
echo "Centos install tools success"
|
||||
return 0
|
||||
}
|
||||
Centos_prepare
|
||||
Centos_prepare; ret=$?; if [[ 0 -ne $ret ]]; then "CentOS perfapre failed, ret=$ret"; exit $ret; fi
|
||||
|
||||
#####################################################################################
|
||||
# st-1.9
|
||||
#####################################################################################
|
||||
if [[ -f ${SRS_OBJS}/st-1.9/obj/libst.a && -f ${SRS_OBJS}/st-1.9/obj/libst.so ]]; then
|
||||
echo "st-1.9t is ok.";
|
||||
# check the arm flag file, if flag changed, need to rebuild the st.
|
||||
if [ $SRS_ARM_UBUNTU12 = YES ]; then
|
||||
# ok, arm specified, if the flag filed does not exists, need to rebuild.
|
||||
if [[ -f ${SRS_OBJS}/_flag.st.arm.tmp && -f ${SRS_OBJS}/st-1.9/obj/libst.a && -f ${SRS_OBJS}/st-1.9/obj/libst.so ]]; then
|
||||
echo "st-1.9t for arm is ok.";
|
||||
else
|
||||
# TODO: FIXME: patch the bug.
|
||||
# patch st for arm, @see: https://github.com/winlinvip/simple-rtmp-server/wiki/SrsLinuxArm#st-arm-bug-fix
|
||||
echo "build st-1.9t for arm";
|
||||
(
|
||||
rm -rf ${SRS_OBJS}/st-1.9 && cd ${SRS_OBJS} &&
|
||||
unzip -q ../3rdparty/st-1.9.zip && cd st-1.9 &&
|
||||
make CC=${SrsArmCC} AR=${SrsArmAR} LD=${SrsArmLD} RANDLIB=${SrsArmRANDLIB} linux-debug &&
|
||||
cd .. && rm -f st && ln -sf st-1.9/obj st &&
|
||||
cd .. && touch ${SRS_OBJS}/_flag.st.arm.tmp
|
||||
)
|
||||
fi
|
||||
else
|
||||
echo "build st-1.9t";
|
||||
(
|
||||
rm -rf ${SRS_OBJS}/st-1.9 && cd ${SRS_OBJS} &&
|
||||
unzip -q ../3rdparty/st-1.9.zip && cd st-1.9 &&
|
||||
make linux-debug &&
|
||||
cd .. && rm -f st && ln -sf st-1.9/obj st
|
||||
)
|
||||
# arm not specified, if exists flag, need to rebuild for no-arm platform.
|
||||
if [[ ! -f ${SRS_OBJS}/_flag.st.arm.tmp && -f ${SRS_OBJS}/_flag.st.arm.tmp && -f ${SRS_OBJS}/st-1.9/obj/libst.a && -f ${SRS_OBJS}/st-1.9/obj/libst.so ]]; then
|
||||
echo "st-1.9t is ok.";
|
||||
else
|
||||
echo "build st-1.9t";
|
||||
(
|
||||
rm -rf ${SRS_OBJS}/st-1.9 && cd ${SRS_OBJS} &&
|
||||
unzip -q ../3rdparty/st-1.9.zip && cd st-1.9 &&
|
||||
make linux-debug &&
|
||||
cd .. && rm -f st && ln -sf st-1.9/obj st &&
|
||||
cd .. && rm -f ${SRS_OBJS}/_flag.st.arm.tmp
|
||||
)
|
||||
fi
|
||||
fi
|
||||
# check status
|
||||
ret=$?; if [[ $ret -ne 0 ]]; then echo "build st-1.9 failed, ret=$ret"; exit $ret; fi
|
||||
|
@ -230,48 +270,50 @@ function write_nginx_html5()
|
|||
</video>
|
||||
END
|
||||
}
|
||||
if [ $SRS_HLS = YES ]; then
|
||||
if [[ -f ${SRS_OBJS}/nginx/sbin/nginx ]]; then
|
||||
echo "nginx-1.5.7 is ok.";
|
||||
else
|
||||
echo "build nginx-1.5.7";
|
||||
(
|
||||
rm -rf ${SRS_OBJS}/nginx-1.5.7 && cd ${SRS_OBJS} &&
|
||||
unzip -q ../3rdparty/nginx-1.5.7.zip && cd nginx-1.5.7 &&
|
||||
./configure --prefix=`pwd`/_release && make ${SRS_JOBS} && make install &&
|
||||
cd .. && ln -sf nginx-1.5.7/_release nginx
|
||||
)
|
||||
fi
|
||||
# check status
|
||||
ret=$?; if [[ $ret -ne 0 ]]; then echo "build nginx-1.5.7 failed, ret=$ret"; exit $ret; fi
|
||||
if [ ! -f ${SRS_OBJS}/nginx/sbin/nginx ]; then echo "build nginx-1.5.7 failed."; exit -1; fi
|
||||
if [ $SRS_ARM_UBUNTU12 = NO ]; then
|
||||
if [ $SRS_HLS = YES ]; then
|
||||
if [[ -f ${SRS_OBJS}/nginx/sbin/nginx ]]; then
|
||||
echo "nginx-1.5.7 is ok.";
|
||||
else
|
||||
echo "build nginx-1.5.7";
|
||||
(
|
||||
rm -rf ${SRS_OBJS}/nginx-1.5.7 && cd ${SRS_OBJS} &&
|
||||
unzip -q ../3rdparty/nginx-1.5.7.zip && cd nginx-1.5.7 &&
|
||||
./configure --prefix=`pwd`/_release && make ${SRS_JOBS} && make install &&
|
||||
cd .. && ln -sf nginx-1.5.7/_release nginx
|
||||
)
|
||||
fi
|
||||
# check status
|
||||
ret=$?; if [[ $ret -ne 0 ]]; then echo "build nginx-1.5.7 failed, ret=$ret"; exit $ret; fi
|
||||
if [ ! -f ${SRS_OBJS}/nginx/sbin/nginx ]; then echo "build nginx-1.5.7 failed."; exit -1; fi
|
||||
|
||||
# use current user to config nginx,
|
||||
# srs will write ts/m3u8 file use current user,
|
||||
# nginx default use nobody, so cannot read the ts/m3u8 created by srs.
|
||||
cp ${SRS_OBJS}/nginx/conf/nginx.conf ${SRS_OBJS}/nginx/conf/nginx.conf.bk
|
||||
sed -i "s/^.user nobody;/user `whoami`;/g" ${SRS_OBJS}/nginx/conf/nginx.conf
|
||||
|
||||
# create forward dir
|
||||
mkdir -p ${SRS_OBJS}/nginx/html/live &&
|
||||
mkdir -p ${SRS_OBJS}/nginx/html/forward/live
|
||||
|
||||
# generate default html pages for android.
|
||||
html_file=${SRS_OBJS}/nginx/html/live/livestream.html && hls_stream=livestream.m3u8 && write_nginx_html5
|
||||
html_file=${SRS_OBJS}/nginx/html/live/livestream_ld.html && hls_stream=livestream_ld.m3u8 && write_nginx_html5
|
||||
html_file=${SRS_OBJS}/nginx/html/live/livestream_sd.html && hls_stream=livestream_sd.m3u8 && write_nginx_html5
|
||||
html_file=${SRS_OBJS}/nginx/html/forward/live/livestream.html && hls_stream=livestream.m3u8 && write_nginx_html5
|
||||
html_file=${SRS_OBJS}/nginx/html/forward/live/livestream_ld.html && hls_stream=livestream_ld.m3u8 && write_nginx_html5
|
||||
html_file=${SRS_OBJS}/nginx/html/forward/live/livestream_sd.html && hls_stream=livestream_sd.m3u8 && write_nginx_html5
|
||||
|
||||
# copy players to nginx html dir.
|
||||
rm -rf ${SRS_OBJS}/nginx/html/players &&
|
||||
ln -sf `pwd`/research/players ${SRS_OBJS}/nginx/html/players &&
|
||||
rm -f ${SRS_OBJS}/nginx/crossdomain.xml &&
|
||||
ln -sf `pwd`/research/players/crossdomain.xml ${SRS_OBJS}/nginx/html/crossdomain.xml
|
||||
|
||||
# nginx.html to detect whether nginx is alive
|
||||
echo "nginx is ok" > ${SRS_OBJS}/nginx/html/nginx.html
|
||||
# use current user to config nginx,
|
||||
# srs will write ts/m3u8 file use current user,
|
||||
# nginx default use nobody, so cannot read the ts/m3u8 created by srs.
|
||||
cp ${SRS_OBJS}/nginx/conf/nginx.conf ${SRS_OBJS}/nginx/conf/nginx.conf.bk
|
||||
sed -i "s/^.user nobody;/user `whoami`;/g" ${SRS_OBJS}/nginx/conf/nginx.conf
|
||||
|
||||
# create forward dir
|
||||
mkdir -p ${SRS_OBJS}/nginx/html/live &&
|
||||
mkdir -p ${SRS_OBJS}/nginx/html/forward/live
|
||||
|
||||
# generate default html pages for android.
|
||||
html_file=${SRS_OBJS}/nginx/html/live/livestream.html && hls_stream=livestream.m3u8 && write_nginx_html5
|
||||
html_file=${SRS_OBJS}/nginx/html/live/livestream_ld.html && hls_stream=livestream_ld.m3u8 && write_nginx_html5
|
||||
html_file=${SRS_OBJS}/nginx/html/live/livestream_sd.html && hls_stream=livestream_sd.m3u8 && write_nginx_html5
|
||||
html_file=${SRS_OBJS}/nginx/html/forward/live/livestream.html && hls_stream=livestream.m3u8 && write_nginx_html5
|
||||
html_file=${SRS_OBJS}/nginx/html/forward/live/livestream_ld.html && hls_stream=livestream_ld.m3u8 && write_nginx_html5
|
||||
html_file=${SRS_OBJS}/nginx/html/forward/live/livestream_sd.html && hls_stream=livestream_sd.m3u8 && write_nginx_html5
|
||||
|
||||
# copy players to nginx html dir.
|
||||
rm -rf ${SRS_OBJS}/nginx/html/players &&
|
||||
ln -sf `pwd`/research/players ${SRS_OBJS}/nginx/html/players &&
|
||||
rm -f ${SRS_OBJS}/nginx/crossdomain.xml &&
|
||||
ln -sf `pwd`/research/players/crossdomain.xml ${SRS_OBJS}/nginx/html/crossdomain.xml
|
||||
|
||||
# nginx.html to detect whether nginx is alive
|
||||
echo "nginx is ok" > ${SRS_OBJS}/nginx/html/nginx.html
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ $SRS_HLS = YES ]; then
|
||||
|
@ -320,28 +362,30 @@ ln -sf `pwd`/${SRS_OBJS}/nginx/html/forward research/api-server/static-dir/forwa
|
|||
|
||||
# only when the nginx is ok,
|
||||
# if api-server not enalbed, use nginx as demo.
|
||||
if [ $SRS_HLS = YES ]; then
|
||||
if [ $SRS_HTTP_CALLBACK = YES ]; then
|
||||
# override the default index.
|
||||
rm -f ${SRS_OBJS}/nginx/html/index.html &&
|
||||
ln -sf `pwd`/research/players/nginx_index.html ${SRS_OBJS}/nginx/html/index.html
|
||||
else
|
||||
rm -f ${SRS_OBJS}/nginx/html/index.html &&
|
||||
cat<<END >> ${SRS_OBJS}/nginx/html/index.html
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>SRS</title>
|
||||
<meta charset="utf-8">
|
||||
</head>
|
||||
<body>
|
||||
<script type="text/javascript">
|
||||
setTimeout(function(){
|
||||
window.location.href = "players/index.html" + window.location.search;
|
||||
}, 500);
|
||||
</script>
|
||||
</body>
|
||||
if [ $SRS_ARM_UBUNTU12 = NO ]; then
|
||||
if [ $SRS_HLS = YES ]; then
|
||||
if [ $SRS_HTTP_CALLBACK = YES ]; then
|
||||
# override the default index.
|
||||
rm -f ${SRS_OBJS}/nginx/html/index.html &&
|
||||
ln -sf `pwd`/research/players/nginx_index.html ${SRS_OBJS}/nginx/html/index.html
|
||||
else
|
||||
rm -f ${SRS_OBJS}/nginx/html/index.html &&
|
||||
cat<<END >> ${SRS_OBJS}/nginx/html/index.html
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>SRS</title>
|
||||
<meta charset="utf-8">
|
||||
</head>
|
||||
<body>
|
||||
<script type="text/javascript">
|
||||
setTimeout(function(){
|
||||
window.location.href = "players/index.html" + window.location.search;
|
||||
}, 500);
|
||||
</script>
|
||||
</body>
|
||||
END
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
|
@ -349,17 +393,37 @@ fi
|
|||
# openssl, for rtmp complex handshake
|
||||
#####################################################################################
|
||||
if [ $SRS_SSL = YES ]; then
|
||||
if [[ -f ${SRS_OBJS}/openssl/lib/libssl.a ]]; then
|
||||
echo "openssl-1.0.1f is ok.";
|
||||
# check the arm flag file, if flag changed, need to rebuild the st.
|
||||
if [ $SRS_ARM_UBUNTU12 = YES ]; then
|
||||
# ok, arm specified, if the flag filed does not exists, need to rebuild.
|
||||
if [[ -f ${SRS_OBJS}/_flag.ssl.arm.tmp && -f ${SRS_OBJS}/openssl/lib/libssl.a ]]; then
|
||||
echo "openssl-1.0.1f for arm is ok.";
|
||||
else
|
||||
echo "build openssl-1.0.1f for arm";
|
||||
(
|
||||
rm -rf ${SRS_OBJS}/openssl-1.0.1f && cd ${SRS_OBJS} &&
|
||||
unzip -q ../3rdparty/openssl-1.0.1f.zip && cd openssl-1.0.1f &&
|
||||
./Configure --prefix=`pwd`/_release -no-shared no-asm linux-armv4 &&
|
||||
make CC=${SrsArmCC} GCC=${SrsArmGCC} AR="${SrsArmAR} r" KD=${SrsArmLD} LINK=${SrsArmLINK} RANDLIB=${SrsArmRANDLIB} && make install &&
|
||||
cd .. && ln -sf openssl-1.0.1f/_release openssl &&
|
||||
cd .. && touch ${SRS_OBJS}/_flag.ssl.arm.tmp
|
||||
)
|
||||
fi
|
||||
else
|
||||
echo "build openssl-1.0.1f";
|
||||
(
|
||||
rm -rf ${SRS_OBJS}/openssl-1.0.1f && cd ${SRS_OBJS} &&
|
||||
unzip -q ../3rdparty/openssl-1.0.1f.zip && cd openssl-1.0.1f &&
|
||||
./config --prefix=`pwd`/_release -no-shared &&
|
||||
make && make install &&
|
||||
cd .. && ln -sf openssl-1.0.1f/_release openssl
|
||||
)
|
||||
# arm not specified, if exists flag, need to rebuild for no-arm platform.
|
||||
if [[ ! -f ${SRS_OBJS}/_flag.ssl.arm.tmp && -f ${SRS_OBJS}/openssl/lib/libssl.a ]]; then
|
||||
echo "openssl-1.0.1f is ok.";
|
||||
else
|
||||
echo "build openssl-1.0.1f";
|
||||
(
|
||||
rm -rf ${SRS_OBJS}/openssl-1.0.1f && cd ${SRS_OBJS} &&
|
||||
unzip -q ../3rdparty/openssl-1.0.1f.zip && cd openssl-1.0.1f &&
|
||||
./config --prefix=`pwd`/_release -no-shared &&
|
||||
make && make install &&
|
||||
cd .. && ln -sf openssl-1.0.1f/_release openssl &&
|
||||
cd .. && rm -f ${SRS_OBJS}/_flag.ssl.arm.tmp
|
||||
)
|
||||
fi
|
||||
fi
|
||||
# check status
|
||||
ret=$?; if [[ $ret -ne 0 ]]; then echo "build openssl-1.0.1f failed, ret=$ret"; exit $ret; fi
|
||||
|
@ -471,3 +535,12 @@ if [ $SRS_GPERF_CP = YES ]; then
|
|||
else
|
||||
echo "#undef SRS_GPERF_CP" >> $SRS_AUTO_HEADERS_H
|
||||
fi
|
||||
|
||||
#####################################################################################
|
||||
# for arm.
|
||||
#####################################################################################
|
||||
if [ $SRS_ARM_UBUNTU12 = YES ]; then
|
||||
echo "#define SRS_ARM_UBUNTU12" >> $SRS_AUTO_HEADERS_H
|
||||
else
|
||||
echo "#undef SRS_ARM_UBUNTU12" >> $SRS_AUTO_HEADERS_H
|
||||
fi
|
||||
|
|
|
@ -24,24 +24,10 @@ SRS_GPERF_MC=RESERVED # gperf memory check
|
|||
SRS_GPERF_MP=RESERVED # gperf memory profile
|
||||
SRS_GPERF_CP=RESERVED # gperf cpu profile
|
||||
SRS_GPROF=RESERVED # gprof
|
||||
SRS_ARM_UBUNTU12=RESERVED # armhf(v7cpu) built on ubuntu12
|
||||
# arguments
|
||||
SRS_JOBS=1
|
||||
|
||||
# TODO: remove the default to yes.
|
||||
SRS_HLS=YES
|
||||
SRS_SSL=YES
|
||||
SRS_FFMPEG=YES
|
||||
SRS_HTTP_CALLBACK=YES
|
||||
SRS_LIBRTMP=YES
|
||||
SRS_BWTC=NO
|
||||
SRS_RESEARCH=NO
|
||||
SRS_UTEST=YES
|
||||
SRS_GPERF=NO
|
||||
SRS_GPERF_MC=NO
|
||||
SRS_GPERF_MP=NO
|
||||
SRS_GPERF_CP=NO
|
||||
SRS_GPROF=NO
|
||||
|
||||
#####################################################################################
|
||||
# parse options
|
||||
#####################################################################################
|
||||
|
@ -75,6 +61,7 @@ do
|
|||
--with-gmp) SRS_GPERF_MP=YES ;;
|
||||
--with-gcp) SRS_GPERF_CP=YES ;;
|
||||
--with-gprof) SRS_GPROF=YES ;;
|
||||
--with-arm-ubuntu12) SRS_ARM_UBUNTU12=YES ;;
|
||||
|
||||
--without-ssl) SRS_SSL=NO ;;
|
||||
--without-hls) SRS_HLS=NO ;;
|
||||
|
@ -89,6 +76,7 @@ do
|
|||
--without-gmp) SRS_GPERF_MP=NO ;;
|
||||
--without-gcp) SRS_GPERF_CP=NO ;;
|
||||
--without-gprof) SRS_GPROF=NO ;;
|
||||
--without-arm-ubuntu12) SRS_ARM_UBUNTU12=NO ;;
|
||||
|
||||
--jobs) SRS_JOBS=${value} ;;
|
||||
|
||||
|
@ -99,6 +87,42 @@ do
|
|||
esac
|
||||
done
|
||||
|
||||
#####################################################################################
|
||||
# apply the default value when user donot specified.
|
||||
#####################################################################################
|
||||
# if arm specified, set some default to disabled.
|
||||
if [ $SRS_ARM_UBUNTU12 = YES ]; then
|
||||
if [ $SRS_HLS = RESERVED ]; then SRS_HLS=NO; fi
|
||||
if [ $SRS_SSL = RESERVED ]; then SRS_SSL=NO; fi
|
||||
if [ $SRS_FFMPEG = RESERVED ]; then SRS_FFMPEG=NO; fi
|
||||
if [ $SRS_HTTP_CALLBACK = RESERVED ]; then SRS_HTTP_CALLBACK=NO; fi
|
||||
if [ $SRS_LIBRTMP = RESERVED ]; then SRS_LIBRTMP=NO; fi
|
||||
if [ $SRS_BWTC = RESERVED ]; then SRS_BWTC=NO; fi
|
||||
if [ $SRS_RESEARCH = RESERVED ]; then SRS_RESEARCH=NO; fi
|
||||
if [ $SRS_UTEST = RESERVED ]; then SRS_UTEST=NO; fi
|
||||
if [ $SRS_GPERF = RESERVED ]; then SRS_GPERF=NO; fi
|
||||
if [ $SRS_GPERF_MC = RESERVED ]; then SRS_GPERF_MC=NO; fi
|
||||
if [ $SRS_GPERF_MP = RESERVED ]; then SRS_GPERF_MP=NO; fi
|
||||
if [ $SRS_GPERF_CP = RESERVED ]; then SRS_GPERF_CP=NO; fi
|
||||
if [ $SRS_GPROF = RESERVED ]; then SRS_GPROF=NO; fi
|
||||
if [ $SRS_ARM_UBUNTU12 = RESERVED ]; then SRS_ARM_UBUNTU12=NO; fi
|
||||
else
|
||||
if [ $SRS_HLS = RESERVED ]; then SRS_HLS=YES; fi
|
||||
if [ $SRS_SSL = RESERVED ]; then SRS_SSL=YES; fi
|
||||
if [ $SRS_FFMPEG = RESERVED ]; then SRS_FFMPEG=YES; fi
|
||||
if [ $SRS_HTTP_CALLBACK = RESERVED ]; then SRS_HTTP_CALLBACK=YES; fi
|
||||
if [ $SRS_LIBRTMP = RESERVED ]; then SRS_LIBRTMP=YES; fi
|
||||
if [ $SRS_BWTC = RESERVED ]; then SRS_BWTC=NO; fi
|
||||
if [ $SRS_RESEARCH = RESERVED ]; then SRS_RESEARCH=NO; fi
|
||||
if [ $SRS_UTEST = RESERVED ]; then SRS_UTEST=YES; fi
|
||||
if [ $SRS_GPERF = RESERVED ]; then SRS_GPERF=NO; fi
|
||||
if [ $SRS_GPERF_MC = RESERVED ]; then SRS_GPERF_MC=NO; fi
|
||||
if [ $SRS_GPERF_MP = RESERVED ]; then SRS_GPERF_MP=NO; fi
|
||||
if [ $SRS_GPERF_CP = RESERVED ]; then SRS_GPERF_CP=NO; fi
|
||||
if [ $SRS_GPROF = RESERVED ]; then SRS_GPROF=NO; fi
|
||||
if [ $SRS_ARM_UBUNTU12 = RESERVED ]; then SRS_ARM_UBUNTU12=NO; fi
|
||||
fi
|
||||
|
||||
# parse the jobs for make
|
||||
if [[ "" -eq SRS_JOBS ]]; then
|
||||
export SRS_JOBS="--jobs"
|
||||
|
@ -120,7 +144,7 @@ if [ $help = yes ]; then
|
|||
--with-ssl enable rtmp complex handshake, requires openssl-devel installed.
|
||||
to delivery h264 video and aac audio to flash player.
|
||||
--with-hls enable hls streaming, build nginx as http server for hls.
|
||||
--with-http-callback enable http hooks, build cherrypy as demo api server.
|
||||
--with-http-callback enable http hooks, build cherrypy as demo api server.
|
||||
srs will call the http hooks, such as: on_connect.
|
||||
--with-ffmpeg enable transcoding with ffmpeg.
|
||||
--with-librtmp enable srs-librtmp, library for client.
|
||||
|
@ -132,10 +156,11 @@ if [ $help = yes ]; then
|
|||
--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 build srs on ubuntu12 for armhf(v7cpu).
|
||||
|
||||
--without-ssl disable rtmp complex handshake.
|
||||
--without-hls disable hls, rtmp streaming only.
|
||||
--without-http-callback disable http, http hooks callback.
|
||||
--without-http-callback disable http, http hooks callback.
|
||||
--without-ffmpeg disable the ffmpeg transcoding feature.
|
||||
--without-librtmp disable srs-librtmp, library for client.
|
||||
--without-bwtc disable srs bandwidth test client tool.
|
||||
|
@ -146,6 +171,7 @@ if [ $help = yes ]; then
|
|||
--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 build srs on ubuntu12 for armhf(v7cpu).
|
||||
|
||||
--jobs[=N] Allow N jobs at once; infinite jobs with no arg.
|
||||
used for make in the configure, for example, to make ffmpeg.
|
||||
|
@ -181,6 +207,21 @@ if [ $__gperf_slow = YES ]; then if [ $SRS_GPROF = YES ]; then
|
|||
echo "gmc/gmp/gcp not compatible with gprof, see: ./configure --help"; __check_ok=NO;
|
||||
fi fi
|
||||
|
||||
# check arm, if arm enabled, only allow st/ssl/librtmp,
|
||||
# user should disable all other features
|
||||
if [ $SRS_ARM_UBUNTU12 = YES ]; then
|
||||
if [ $SRS_FFMPEG = YES ]; then echo "ffmpeg for arm is not available, see: ./configure --help"; __check_ok=NO; fi
|
||||
if [ $SRS_HTTP_CALLBACK = YES ]; then echo "http-callback for arm is not available, see: ./configure --help"; __check_ok=NO; fi
|
||||
if [ $SRS_BWTC = YES ]; then echo "bwtc for arm is not available, see: ./configure --help"; __check_ok=NO; fi
|
||||
if [ $SRS_RESEARCH = YES ]; then echo "research for arm is not available, see: ./configure --help"; __check_ok=NO; fi
|
||||
if [ $SRS_UTEST = YES ]; then echo "utest for arm is not available, see: ./configure --help"; __check_ok=NO; fi
|
||||
if [ $SRS_GPERF = YES ]; then echo "gperf for arm is not available, see: ./configure --help"; __check_ok=NO; fi
|
||||
if [ $SRS_GPERF_MC = YES ]; then echo "gmc for arm is not available, see: ./configure --help"; __check_ok=NO; fi
|
||||
if [ $SRS_GPERF_MP = YES ]; then echo "gmp for arm is not available, see: ./configure --help"; __check_ok=NO; fi
|
||||
if [ $SRS_GPERF_CP = YES ]; then echo "gcp for arm is not available, see: ./configure --help"; __check_ok=NO; fi
|
||||
if [ $SRS_GPROF = YES ]; then echo "gprof for arm is not available, see: ./configure --help"; __check_ok=NO; fi
|
||||
fi
|
||||
|
||||
# check variable neccessary
|
||||
if [ $SRS_HLS = RESERVED ]; then echo "you must specifies the hls, see: ./configure --help"; __check_ok=NO; fi
|
||||
if [ $SRS_SSL = RESERVED ]; then echo "you must specifies the ssl, see: ./configure --help"; __check_ok=NO; fi
|
||||
|
@ -195,6 +236,7 @@ if [ $SRS_GPERF_MC = RESERVED ]; then echo "you must specifies the gperf-mc, see
|
|||
if [ $SRS_GPERF_MP = RESERVED ]; then echo "you must specifies the gperf-mp, see: ./configure --help"; __check_ok=NO; fi
|
||||
if [ $SRS_GPERF_CP = RESERVED ]; then echo "you must specifies the gperf-cp, see: ./configure --help"; __check_ok=NO; fi
|
||||
if [ $SRS_GPROF = RESERVED ]; then echo "you must specifies the gprof, see: ./configure --help"; __check_ok=NO; fi
|
||||
if [ $SRS_ARM_UBUNTU12 = RESERVED ]; then echo "you must specifies the arm-ubuntu12, see: ./configure --help"; __check_ok=NO; fi
|
||||
if [ $__check_ok = NO ]; then
|
||||
exit 1;
|
||||
fi
|
||||
|
@ -214,5 +256,6 @@ if [ $SRS_GPERF_MC = YES ]; then SRS_CONFIGURE="${SRS_CONFIGURE} --with-gmc"; el
|
|||
if [ $SRS_GPERF_MP = YES ]; then SRS_CONFIGURE="${SRS_CONFIGURE} --with-gmp"; else SRS_CONFIGURE="${SRS_CONFIGURE} --without-gmp"; fi
|
||||
if [ $SRS_GPERF_CP = YES ]; then SRS_CONFIGURE="${SRS_CONFIGURE} --with-gcp"; else SRS_CONFIGURE="${SRS_CONFIGURE} --without-gcp"; fi
|
||||
if [ $SRS_GPROF = YES ]; then SRS_CONFIGURE="${SRS_CONFIGURE} --with-gprof"; else SRS_CONFIGURE="${SRS_CONFIGURE} --without-gprof"; fi
|
||||
if [ $SRS_ARM_UBUNTU12 = YES ]; then SRS_CONFIGURE="${SRS_CONFIGURE} --with-arm-ubuntu12"; else SRS_CONFIGURE="${SRS_CONFIGURE} --without-arm-ubuntu12"; fi
|
||||
SRS_CONFIGURE="${SRS_CONFIGURE} ${SRS_JOBS}"
|
||||
echo "regenerate config: ${SRS_CONFIGURE}"
|
||||
|
|
43
trunk/configure
vendored
43
trunk/configure
vendored
|
@ -37,6 +37,15 @@ echo "#define SRS_CONFIGURE \"${SRS_CONFIGURE}\"" > $SRS_AUTO_HEADERS_H
|
|||
echo "#define SRS_BUILD_DATE \"`date \"+%Y-%m-%d %H:%M:%S\"`\"" >> $SRS_AUTO_HEADERS_H
|
||||
echo "#define SRS_BUILD_TS \"`date +%s`\"" >> $SRS_AUTO_HEADERS_H
|
||||
|
||||
# the arm-ubuntu12 options for make for depends
|
||||
SrsArmCC="arm-linux-gnueabi-gcc"
|
||||
SrsArmGCC="arm-linux-gnueabi-gcc"
|
||||
SrsArmCXX="arm-linux-gnueabi-g++"
|
||||
SrsArmLINK="arm-linux-gnueabi-g++"
|
||||
SrsArmAR="arm-linux-gnueabi-ar"
|
||||
SrsArmLD="arm-linux-gnueabi-ld"
|
||||
SrsArmRANDLIB="arm-linux-gnueabi-ranlib"
|
||||
|
||||
# apply user options.
|
||||
. auto/depends.sh
|
||||
|
||||
|
@ -247,12 +256,25 @@ SrsGperf=""; SrsGperfLink=""; if [ $SRS_GPERF = YES ]; then SrsGperfLink=" -lpth
|
|||
# the cxx flag generated.
|
||||
CXXFLAGS="${CppStd}${WarnLevel}${GDBDebug}${LibraryCompile}${SrsGprof}"
|
||||
if [ $SRS_GPERF = YES ]; then CXXFLAGS="${CXXFLAGS} -fno-builtin-malloc -fno-builtin-calloc -fno-builtin-realloc -fno-builtin-free"; fi
|
||||
cat << END > ${SRS_OBJS}/${SRS_MAKEFILE}
|
||||
CC ?= gcc
|
||||
GCC ?= gcc
|
||||
CXX ?= g++
|
||||
AR ?= ar
|
||||
LINK ?= g++
|
||||
# arm or i386/x86_64
|
||||
if [ $SRS_ARM_UBUNTU12 = YES ]; then
|
||||
cat << END > ${SRS_OBJS}/${SRS_MAKEFILE}
|
||||
CC = ${SrsArmCC}
|
||||
GCC = ${SrsArmGCC}
|
||||
CXX = ${SrsArmCXX}
|
||||
AR = ${SrsArmAR}
|
||||
LINK = ${SrsArmLINK}
|
||||
END
|
||||
else
|
||||
cat << END > ${SRS_OBJS}/${SRS_MAKEFILE}
|
||||
CC = gcc
|
||||
GCC = gcc
|
||||
CXX = g++
|
||||
AR = ar
|
||||
LINK = g++
|
||||
END
|
||||
fi
|
||||
cat << END >> ${SRS_OBJS}/${SRS_MAKEFILE}
|
||||
CXXFLAGS = ${CXXFLAGS}
|
||||
|
||||
.PHONY: default srs bandwidth librtmp
|
||||
|
@ -277,6 +299,8 @@ if [ $SRS_SSL = YES ]; then LibSSLRoot="${SRS_OBJS}/openssl/include"; LibSSLfile
|
|||
# gperftools-2.1, for mem check and mem/cpu profile
|
||||
LibGperfRoot=""; LibGperfFile=""
|
||||
if [ $SRS_GPERF = YES ]; then LibGperfRoot="${SRS_OBJS}/gperf/include"; LibGperfFile="${SRS_OBJS}/gperf/lib/libtcmalloc_and_profiler.a"; fi
|
||||
# the link options, if arm, use static link
|
||||
SrsLinkOptions="-ldl"; if [ $SRS_ARM_UBUNTU12 = YES ]; then SrsLinkOptions="-ldl -static"; fi
|
||||
|
||||
#####################################################################################
|
||||
# Modules, compile each module, then link to binary
|
||||
|
@ -344,7 +368,7 @@ MAIN_ENTRANCES=("srs_main_server" "srs_main_bandcheck")
|
|||
ModuleLibFiles=(${LibSTfile} ${LibHttpParserfile} ${LibSSLfile} ${LibGperfFile})
|
||||
# all depends objects
|
||||
MODULE_OBJS="${CORE_OBJS[@]} ${KERNEL_OBJS[@]} ${RTMP_OBJS[@]} ${APP_OBJS[@]} ${MAIN_OBJS[@]}"
|
||||
LINK_OPTIONS="-ldl${SrsGprofLink}${SrsGperfLink}"
|
||||
LINK_OPTIONS="${SrsLinkOptions}${SrsGprofLink}${SrsGperfLink}"
|
||||
#
|
||||
# srs:
|
||||
# srs(simple rtmp server) over st(state-threads)
|
||||
|
@ -447,6 +471,11 @@ if [ $SRS_GPROF = YES ]; then
|
|||
else
|
||||
echo -e "${GREEN}note: gprof(GNU profile tool) for srs are not builded${BLACK}"
|
||||
fi
|
||||
if [ $SRS_ARM_UBUNTU12 = YES ]; then
|
||||
echo -e "${GREEN}arm-ubuntu12(armhf, v7cpu) for srs are builded${BLACK}"
|
||||
else
|
||||
echo -e "${GREEN}note: arm-ubuntu12(armhf, v7cpu) for srs are not builded${BLACK}"
|
||||
fi
|
||||
|
||||
#####################################################################################
|
||||
# next step
|
||||
|
|
|
@ -31,7 +31,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|||
// current release version
|
||||
#define VERSION_MAJOR "0"
|
||||
#define VERSION_MINOR "9"
|
||||
#define VERSION_REVISION "16"
|
||||
#define VERSION_REVISION "17"
|
||||
#define RTMP_SIG_SRS_VERSION VERSION_MAJOR"."VERSION_MINOR"."VERSION_REVISION
|
||||
// server info.
|
||||
#define RTMP_SIG_SRS_KEY "srs"
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue