Skip to content

Commit

Permalink
Build: Support --shared-ffmpeg to link with *.so for LGPL license. 4.…
Browse files Browse the repository at this point in the history
…0.126
  • Loading branch information
winlinvip committed Jun 1, 2021
1 parent d1d0b9c commit d526672
Show file tree
Hide file tree
Showing 11 changed files with 45 additions and 6 deletions.
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -180,6 +180,7 @@ For external services to work with SRS:

## V4 changes

* v4.0, 2021-06-01, Support --shared-ffmpeg to link with *.so for LGPL license. 4.0.126
* v4.0, 2021-06-01, Support --shared-srt to link with *.so for MPL license. 4.0.125
* v4.0, 2021-05-31, Use [SPDX-License-Identifier: MIT](https://spdx.dev/ids/). 4.0.124
* v4.0, 2021-05-28, Fix bugs for GB28181 and RTC. 4.0.123
Expand Down
6 changes: 6 additions & 0 deletions trunk/3rdparty/ffmpeg-4-fit/libavcodec/libavcodec.v
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
LIBAVCODEC_MAJOR {
global:
av*;
local:
*;
};
1 change: 1 addition & 0 deletions trunk/3rdparty/ffmpeg-4-fit/libavcodec/log2_tab.c
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
#include "libavutil/log2_tab.c"
1 change: 1 addition & 0 deletions trunk/3rdparty/ffmpeg-4-fit/libavcodec/reverse.c
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
#include "libavutil/reverse.c"
6 changes: 6 additions & 0 deletions trunk/3rdparty/ffmpeg-4-fit/libavutil/libavutil.v
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
LIBAVUTIL_MAJOR {
global:
av*;
local:
*;
};
7 changes: 7 additions & 0 deletions trunk/3rdparty/ffmpeg-4-fit/libswresample/libswresample.v
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
LIBSWRESAMPLE_MAJOR {
global:
swr_*;
swresample_*;
local:
*;
};
1 change: 1 addition & 0 deletions trunk/3rdparty/ffmpeg-4-fit/libswresample/log2_tab.c
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
#include "libavutil/log2_tab.c"
10 changes: 9 additions & 1 deletion trunk/auto/depends.sh
Original file line number Diff line number Diff line change
Expand Up @@ -637,14 +637,18 @@ if [ ! -f ${SRS_OBJS}/srtp2/lib/libsrtp2.a ]; then echo "Build libsrtp-2-fit sta
# libopus, for WebRTC to transcode AAC with Opus.
#####################################################################################
if [[ $SRS_RTC == YES ]]; then
# Only build static libraries if no shared FFmpeg.
if [[ $SRS_SHARED_FFMPEG == NO ]]; then
OPUS_OPTIONS="--disable-shared"
fi
if [[ -f ${SRS_OBJS}/${SRS_PLATFORM}/opus-1.3.1/_release/lib/libopus.a ]]; then
echo "The opus-1.3.1 is ok.";
else
echo "Building opus-1.3.1.";
(
rm -rf ${SRS_OBJS}/${SRS_PLATFORM}/opus-1.3.1 && cd ${SRS_OBJS}/${SRS_PLATFORM} &&
tar xf ../../3rdparty/opus-1.3.1.tar.gz && cd opus-1.3.1 &&
./configure --prefix=`pwd`/_release --enable-static --disable-shared && make ${SRS_JOBS} && make install
./configure --prefix=`pwd`/_release --enable-static $OPUS_OPTIONS && make ${SRS_JOBS} && make install
cd .. && rm -rf opus && ln -sf opus-1.3.1/_release opus
)
fi
Expand All @@ -670,6 +674,10 @@ if [[ $SRS_FFMPEG_FIT == YES ]]; then
nasm -v >/dev/null 2>&1; ret=$?; if [[ 0 -ne $ret ]]; then
FFMPEG_OPTIONS="--disable-x86asm"
fi
# Only build static libraries if no shared FFmpeg.
if [[ $SRS_SHARED_FFMPEG == YES ]]; then
FFMPEG_OPTIONS="$FFMPEG_OPTIONS --enable-shared"
fi

if [[ -f ${SRS_OBJS}/${SRS_PLATFORM}/ffmpeg-4-fit/_release/lib/libavcodec.a ]]; then
echo "The ffmpeg-4-fit is ok.";
Expand Down
15 changes: 11 additions & 4 deletions trunk/auto/options.sh
Original file line number Diff line number Diff line change
Expand Up @@ -40,9 +40,14 @@ SRS_PREFIX=/usr/local/srs
SRS_JOBS=1
SRS_STATIC=NO
# If enabled, link shared libraries for libst.so which uses MPL license.
# See https://github.com/ossrs/srs/wiki/LicenseMixing#state-threads
SRS_SHARED_ST=NO
# If enabled, link shared libraries for libsrt.so which uses MPL license.
# See https://github.com/ossrs/srs/wiki/LicenseMixing#srt
SRS_SHARED_SRT=NO
# If enabled, link shared libraries for FFmpeg which is LGPL license.
# See https://github.com/ossrs/srs/wiki/LicenseMixing#ffmpeg
SRS_SHARED_FFMPEG=NO
# whether enable the gcov
SRS_GCOV=NO
# whether enable the log verbose/info/trace level.
Expand Down Expand Up @@ -149,8 +154,9 @@ Experts:
--sys-ssl=on|off Do not compile ssl, use system ssl(-lssl) if required. Default: $(value2switch $SRS_USE_SYS_SSL)
--ssl-1-0=on|off Whether use openssl-1.0.*. Default: $(value2switch $SRS_SSL_1_0)
--ssl-local=on|off Whether use local openssl, not system even exists. Default: $(value2switch $SRS_SSL_LOCAL)
--shared-st=on|off Use link shared libraries for ST which uses MPL license. Default: $(value2switch $SRS_SHARED_ST)
--shared-srt=on|off Use link shared libraries for SRT which uses MPL license. Default: $(value2switch $SRS_SHARED_SRT)
--shared-st=on|off Use shared libraries for ST which is MPL license. Default: $(value2switch $SRS_SHARED_ST)
--shared-srt=on|off Use shared libraries for SRT which is MPL license. Default: $(value2switch $SRS_SHARED_SRT)
--shared-ffmpeg=on|off Use shared libraries for FFmpeg which is LGPL license. Default: $(value2switch $SRS_SHARED_FFMPEG)
--clean=on|off Whether do 'make clean' when configure. Default: $(value2switch $SRS_CLEAN)
--simulator=on|off RTC: Whether enable network simulator. Default: $(value2switch $SRS_SIMULATOR)
--build-tag=<TAG> Set the build object directory suffix.
Expand Down Expand Up @@ -298,10 +304,10 @@ function parse_user_option() {
--sys-ssl) SRS_USE_SYS_SSL=$(switch2value $value) ;;

--use-shared-st) SRS_SHARED_ST=YES ;;
--shared-st) SRS_SHARED_ST=$(switch2value $value) ;;

--use-shared-srt) SRS_SHARED_SRT=YES ;;
--shared-st) SRS_SHARED_ST=$(switch2value $value) ;;
--shared-srt) SRS_SHARED_SRT=$(switch2value $value) ;;
--shared-ffmpeg) SRS_SHARED_FFMPEG=$(switch2value $value) ;;

--with-valgrind) SRS_VALGRIND=YES ;;
--without-valgrind) SRS_VALGRIND=NO ;;
Expand Down Expand Up @@ -483,6 +489,7 @@ function regenerate_options() {
SRS_AUTO_CONFIGURE="${SRS_AUTO_CONFIGURE} --static=$(value2switch $SRS_STATIC)"
SRS_AUTO_CONFIGURE="${SRS_AUTO_CONFIGURE} --shared-st=$(value2switch $SRS_SHARED_ST)"
SRS_AUTO_CONFIGURE="${SRS_AUTO_CONFIGURE} --shared-srt=$(value2switch $SRS_SHARED_SRT)"
SRS_AUTO_CONFIGURE="${SRS_AUTO_CONFIGURE} --shared-ffmpeg=$(value2switch $SRS_SHARED_FFMPEG)"
SRS_AUTO_CONFIGURE="${SRS_AUTO_CONFIGURE} --log-verbose=$(value2switch $SRS_LOG_VERBOSE)"
SRS_AUTO_CONFIGURE="${SRS_AUTO_CONFIGURE} --log-info=$(value2switch $SRS_LOG_INFO)"
SRS_AUTO_CONFIGURE="${SRS_AUTO_CONFIGURE} --log-trace=$(value2switch $SRS_LOG_TRACE)"
Expand Down
1 change: 1 addition & 0 deletions trunk/configure
Original file line number Diff line number Diff line change
Expand Up @@ -146,6 +146,7 @@ fi
if [[ $SRS_FFMPEG_FIT == YES ]]; then
LibFfmpegRoot="${SRS_OBJS_DIR}/ffmpeg/include"; LibFfmpegFile="${SRS_OBJS_DIR}/ffmpeg/lib/libavcodec.a ${SRS_OBJS_DIR}/ffmpeg/lib/libswresample.a ${SRS_OBJS_DIR}/ffmpeg/lib/libavutil.a"
LibFfmpegRoot="${LibFfmpegRoot} ${SRS_OBJS_DIR}/opus/include"; LibFfmpegFile="${LibFfmpegFile} ${SRS_OBJS_DIR}/opus/lib/libopus.a"
if [[ $SRS_SHARED_FFMPEG == YES ]]; then LibFfmpegFile="-L${SRS_OBJS_DIR}/ffmpeg/lib -lavcodec -lswresample -lavutil -L${SRS_OBJS_DIR}/opus/lib -lopus"; fi
fi

# openssl-1.1.0e, for the RTMP complex handshake.
Expand Down
2 changes: 1 addition & 1 deletion trunk/src/core/srs_core_version4.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,6 @@

#define VERSION_MAJOR 4
#define VERSION_MINOR 0
#define VERSION_REVISION 125
#define VERSION_REVISION 126

#endif

0 comments on commit d526672

Please sign in to comment.