From c036b91d1c24e1fe83f8721c47eec6aca980fa5b Mon Sep 17 00:00:00 2001 From: chenhaibo <495810242@qq.com> Date: Tue, 14 Nov 2023 00:56:29 +0000 Subject: [PATCH] add --extra-ldflags; support commas in configure file support link system library for utest --- trunk/auto/options.sh | 6 +++++- trunk/configure | 29 ++++++++++++++++++++++------- 2 files changed, 27 insertions(+), 8 deletions(-) diff --git a/trunk/auto/options.sh b/trunk/auto/options.sh index f856f76258..108747bfe3 100755 --- a/trunk/auto/options.sh +++ b/trunk/auto/options.sh @@ -119,6 +119,7 @@ SRS_TOOL_AR=ar SRS_TOOL_LD=ld SRS_TOOL_RANDLIB=randlib SRS_EXTRA_FLAGS= +SRS_EXTRA_LDFLAGS= # ##################################################################################### # Performance optimize. @@ -209,6 +210,7 @@ Toolchain options: --ld= Toolchain: Use linker tool LD. Default: $SRS_TOOL_CXX --randlib= Toolchain: Use randlib tool RANDLIB. Default: $SRS_TOOL_CXX --extra-flags= Set EFLAGS as CFLAGS and CXXFLAGS. Also passed to ST as EXTRA_CFLAGS. + --extra-ldflags= Set ELDFLAGS as LDFLAGS. Cross Build options: @see https://ossrs.net/lts/zh-cn/docs/v4/doc/arm#ubuntu-cross-build-srs --cross=on|off Enable cross-build, please set bellow Toolchain also. Default: $(value2switch $SRS_CROSS_BUILD) @@ -313,6 +315,7 @@ function parse_user_option() { --ld) SRS_TOOL_LD=${value} ;; --randlib) SRS_TOOL_RANDLIB=${value} ;; --extra-flags) SRS_EXTRA_FLAGS=${value} ;; + --extra-ldflags) SRS_EXTRA_LDFLAGS=${value} ;; --build-tag) SRS_BUILD_TAG=${value} ;; --srtp-nasm) SRS_SRTP_ASM=$(switch2value $value) ;; @@ -442,7 +445,7 @@ function parse_user_option_to_value_and_option() { case "$option" in -*=*) value=`echo "$option" | sed -e 's|[-_a-zA-Z0-9/]*=||'` - option=`echo "$option" | sed -e 's|=[-_a-zA-Z0-9/. +]*||'` + option=`echo "$option" | sed -e 's|=[,-_a-zA-Z0-9/. +]*||'` ;; *) value="" ;; esac @@ -684,6 +687,7 @@ function regenerate_options() { if [[ $SRS_CROSS_BUILD_HOST != "" ]]; then SRS_AUTO_CONFIGURE="$SRS_AUTO_CONFIGURE --host=$SRS_CROSS_BUILD_HOST"; fi if [[ $SRS_CROSS_BUILD_PREFIX != "" ]]; then SRS_AUTO_CONFIGURE="$SRS_AUTO_CONFIGURE --cross-prefix=$SRS_CROSS_BUILD_PREFIX"; fi if [[ $SRS_EXTRA_FLAGS != '' ]]; then SRS_AUTO_CONFIGURE="${SRS_AUTO_CONFIGURE} --extra-flags=\\\"$SRS_EXTRA_FLAGS\\\""; fi + if [[ $SRS_EXTRA_LDFLAGS != '' ]]; then SRS_AUTO_CONFIGURE="${SRS_AUTO_CONFIGURE} --extra-ldflags=\\\"$SRS_EXTRA_LDFLAGS\\\""; fi if [[ $SRS_BUILD_TAG != '' ]]; then SRS_AUTO_CONFIGURE="${SRS_AUTO_CONFIGURE} --build-tag=\\\"$SRS_BUILD_TAG\\\""; fi if [[ $SRS_TOOL_CC != '' ]]; then SRS_AUTO_CONFIGURE="${SRS_AUTO_CONFIGURE} --cc=$SRS_TOOL_CC"; fi if [[ $SRS_TOOL_CXX != '' ]]; then SRS_AUTO_CONFIGURE="${SRS_AUTO_CONFIGURE} --cxx=$SRS_TOOL_CXX"; fi diff --git a/trunk/configure b/trunk/configure index 1a1f4ead23..471a7eac1c 100755 --- a/trunk/configure +++ b/trunk/configure @@ -145,6 +145,10 @@ END # header(.h): add to ModuleLibIncs if need the specified library. for example, LibSTRoot # library(.a): add to ModuleLibFiles if binary need the specifeid library. for example, LibSTfile # + +# the link options, always use static link +SrsLinkOptions="-ldl -lpthread"; + # st(state-threads) the basic network library for SRS. LibSTRoot="${SRS_OBJS}/st"; LibSTfile="${LibSTRoot}/libst.a" if [[ $SRS_SHARED_ST == YES ]]; then LibSTfile="-L${LibSTRoot} -lst"; fi @@ -154,7 +158,10 @@ if [[ $SRS_RTC == YES ]]; then LibSrtpRoot="${SRS_OBJS}/srtp2/include"; LibSrtpFile="${SRS_OBJS}/srtp2/lib/libsrtp2.a" if [[ $SRS_USE_SYS_SRTP == YES ]]; then LibSrtpRoot=""; LibSrtpFile="libsrtp2.a" - if [[ $SRS_SHARED_SRTP == YES ]]; then LibSrtpFile="-lsrtp2"; fi + if [[ $SRS_SHARED_SRTP == YES ]]; then + LibSrtpFile=""; + SrsLinkOptions="${SrsLinkOptions} -lsrtp2"; + fi fi fi @@ -175,7 +182,8 @@ if [[ $SRS_FFMPEG_FIT == YES ]]; then LibFfmpegRoot="" LibFfmpegFile="libavcodec.a libswresample.a libavutil.a libopus.a"; if [[ $SRS_SHARED_FFMPEG == YES ]]; then - LibFfmpegFile="-lavcodec -lswresample -lavutil -lopus" + LibFfmpegFile="" + SrsLinkOptions="${SrsLinkOptions} -lavcodec -lswresample -lavutil -lopus"; fi fi fi @@ -201,12 +209,13 @@ if [[ $SRS_SRT == YES ]]; then if [[ $SRS_SHARED_SRT == YES ]]; then LibSRTfile="-L${SRS_OBJS}/srt/lib -lsrt"; fi if [[ $SRS_USE_SYS_SRT == YES ]]; then LibSRTRoot=""; LibSRTfile="libsrt.a" - if [[ $SRS_SHARED_SRT == YES ]]; then LibSRTfile="-lsrt"; fi + if [[ $SRS_SHARED_SRT == YES ]]; then + LibSRTfile=""; + SrsLinkOptions="${SrsLinkOptions} -lsrt"; + fi fi fi -# the link options, always use static link -SrsLinkOptions="-ldl -lpthread"; if [[ $SRS_SSL == YES && $SRS_USE_SYS_SSL == YES ]]; then SrsLinkOptions="${SrsLinkOptions} -lssl -lcrypto"; fi @@ -247,6 +256,11 @@ if [[ $SRS_CYGWIN64 == YES && $SRS_FFMPEG_FIT == YES ]]; then SrsLinkOptions="${SrsLinkOptions} -lbcrypt"; fi +# User configed options. +if [[ $SRS_EXTRA_LDFLAGS != '' ]]; then + SrsLinkOptions="${SrsLinkOptions} $SRS_EXTRA_LDFLAGS"; +fi + ##################################################################################### # Modules, compile each module, then link to binary # @@ -415,7 +429,7 @@ if [[ $SRS_SRT == YES ]]; then ModuleLibIncs+=(${LibSRTRoot}) MODULE_OBJS="${MODULE_OBJS} ${SRT_OBJS[@]}" fi -LINK_OPTIONS="${SrsLinkOptions}${SrsGprofLink}${SrsGperfLink}" +LINK_OPTIONS="${LDFLAGS} ${SrsLinkOptions}${SrsGprofLink}${SrsGperfLink}" # # srs: srs(simple rtmp server) over st(state-threads) BUILD_KEY="srs" APP_MAIN="srs_main_server" APP_NAME="srs" . $SRS_WORKDIR/auto/apps.sh @@ -479,7 +493,7 @@ if [[ $SRS_UTEST == YES ]]; then fi MODULE_DEPENDS=("CORE" "KERNEL" "PROTOCOL" "APP") MODULE_OBJS="${CORE_OBJS[@]} ${KERNEL_OBJS[@]} ${PROTOCOL_OBJS[@]} ${APP_OBJS[@]} ${SRT_OBJS[@]}" - LINK_OPTIONS="-lpthread ${SrsLinkOptions}" MODULE_DIR="src/utest" APP_NAME="srs_utest" . $SRS_WORKDIR/auto/utest.sh + LINK_OPTIONS="${LDFLAGS} -lpthread ${SrsLinkOptions}" MODULE_DIR="src/utest" APP_NAME="srs_utest" . $SRS_WORKDIR/auto/utest.sh fi ##################################################################################### @@ -506,6 +520,7 @@ AR = ${SRS_TOOL_AR} LINK = ${SRS_TOOL_LD} RANDLIB = ${SRS_TOOL_RANDLIB} CXXFLAGS = ${CXXFLAGS} +LDFLAGS = ${LDFLAGS} # install prefix. SRS_PREFIX=${SRS_PREFIX}