From 60d810693cbb5dcf60c2e8430e198c627465a9d0 Mon Sep 17 00:00:00 2001
From: winlin <winlin@vip.126.com>
Date: Sun, 29 Mar 2020 21:30:32 +0800
Subject: [PATCH] Refine rebuild components

---
 trunk/3rdparty/ffmpeg-4.2-fit/.gitignore | 10 ++++----
 trunk/auto/depends.sh                    |  4 ++++
 trunk/configure                          | 30 +++++++++++-------------
 3 files changed, 24 insertions(+), 20 deletions(-)

diff --git a/trunk/3rdparty/ffmpeg-4.2-fit/.gitignore b/trunk/3rdparty/ffmpeg-4.2-fit/.gitignore
index 23594d913..ee17ebc92 100644
--- a/trunk/3rdparty/ffmpeg-4.2-fit/.gitignore
+++ b/trunk/3rdparty/ffmpeg-4.2-fit/.gitignore
@@ -2,18 +2,20 @@
 *.d
 *.pc
 *.o
-config.asm
-config.h
 _release
+
+# We should remove bellow files in depends.sh
 doc
+config.asm
+config.h
 ffbuild/config.fate
 ffbuild/config.log
 ffbuild/config.mak
 ffbuild/config.sh
 ffbuild/.config
 libavutil/lib.version
-libavcodec/libavcodec.version
 libavutil/libavutil.version
-libswresample/libswresample.version
 libavutil/ffversion.h
 libavutil/avconfig.h
+libavcodec/libavcodec.version
+libswresample/libswresample.version
diff --git a/trunk/auto/depends.sh b/trunk/auto/depends.sh
index 8fc230bf2..01d2aaf5a 100755
--- a/trunk/auto/depends.sh
+++ b/trunk/auto/depends.sh
@@ -603,6 +603,10 @@ if [[ $SRS_EXPORT_LIBRTMP_PROJECT == NO && $SRS_RTC == YES ]]; then
                     done
                 done
             done &&
+            # We should remove some files(in .gitignore) to keep them in local generated.
+            (cd ffbuild && rm -f config.fate config.log config.mak config.sh .config) &&
+            (cd libavutil && rm -f lib.version libavutil.version ffversion.h avconfig.h) &&
+            (rm -rf doc && rm -f config.asm config.h libavcodec/libavcodec.version libswresample/libswresample.version) &&
             # Build source code.
             PKG_CONFIG_PATH=$ABS_OBJS/opus/lib/pkgconfig ./configure \
               --prefix=`pwd`/${SRS_PLATFORM}/_release \
diff --git a/trunk/configure b/trunk/configure
index bd8e6f2e4..02703d98f 100755
--- a/trunk/configure
+++ b/trunk/configure
@@ -441,8 +441,8 @@ mv ${SRS_WORKDIR}/${SRS_MAKEFILE} ${SRS_WORKDIR}/${SRS_MAKEFILE}.bk
 # generate phony header
 cat << END > ${SRS_WORKDIR}/${SRS_MAKEFILE}
 .PHONY: default _default install install-api help clean destroy server srs_ingest_hls librtmp utest _prepare_dir $__mphonys
-.PHONY: clean_srs clean_modules clean_st clean_openssl clean_ffmpeg clean_nginx clean_cherrypy clean_srtp2 clean_opus
-.PHONY: st
+.PHONY: clean_srs clean_modules clean_openssl clean_nginx clean_cherrypy clean_srtp2 clean_opus
+.PHONY: st ffmpeg
 
 # install prefix.
 SRS_PREFIX=${SRS_PREFIX}
@@ -471,12 +471,9 @@ help:
 	@echo "     install            install srs to the prefix path"
 	@echo "     install-api        install srs and api-server to the prefix path"
 	@echo "     uninstall          uninstall srs from prefix path"
-	@echo "To clean special module:"
-	@echo "     clean_st           Clean depend st-srs in ${SRS_OBJS_DIR}/${SRS_PLATFORM}/st-srs"
-	@echo "     clean_openssl      Clean depend openssl in objs"
-	@echo "     clean_ffmpeg       Clean depend ffmpeg in ${SRS_OBJS}/${SRS_PLATFORM}/ffmpeg-4.2-fit"
-	@echo "     clean_srtp2        Clean depend srtp2 in objs"
-	@echo "     clean_opus         Clean depend opus in objs"
+	@echo "To rebuild special module:"
+	@echo "     st          Rebuild st-srs in ${SRS_OBJS_DIR}/${SRS_PLATFORM}/st-srs"
+	@echo "     ffmpeg      Rebuild ffmpeg in ${SRS_OBJS}/${SRS_PLATFORM}/ffmpeg-4.2-fit"
 	@echo "@remark all modules will auto genearted and build"
 	@echo "For example:"
 	@echo "     make"
@@ -492,7 +489,7 @@ doclean:
 clean: clean_srs clean_modules
 	@echo "You can clean each some components, see make help"
 
-destroy: clean_st clean_openssl clean_ffmpeg clean_srtp2 clean_opus clean_nginx clean_cherrypy
+destroy:
 	(cd ${SRS_OBJS_DIR} && rm -rf ${SRS_PLATFORM})
 
 clean_srs:
@@ -504,9 +501,6 @@ clean_srs:
 clean_modules:
 	(cd ${SRS_OBJS_DIR} && rm -rf $__mdefaults)
 
-clean_st:
-	(cd ${SRS_OBJS_DIR}/${SRS_PLATFORM}/st-srs && make clean && make ${_ST_MAKE})
-
 clean_openssl:
 	(cd ${SRS_OBJS_DIR}/${SRS_PLATFORM} && rm -rf openssl*)
 
@@ -516,10 +510,6 @@ clean_srtp2:
 clean_opus:
 	(cd ${SRS_OBJS_DIR}/${SRS_PLATFORM} && rm -rf opus-1.3.1)
 
-clean_ffmpeg:
-	(cd ${SRS_OBJS_DIR}/${SRS_PLATFORM} && rm -rf ffmpeg)
-	(cd ${SRS_OBJS}/${SRS_PLATFORM}/ffmpeg-4.2-fit && make clean && rm -rf _release)
-
 clean_nginx:
 	(cd ${SRS_OBJS_DIR} && rm -rf nginx)
 
@@ -527,6 +517,14 @@ clean_cherrypy:
 	(cd research/librtmp && make clean)
 	(cd research/api-server/static-dir && rm -rf crossdomain.xml forward live players)
 
+st:
+	(cd ${SRS_OBJS_DIR} && rm -f srs srs_utest)
+	(cd ${SRS_OBJS_DIR}/${SRS_PLATFORM}/st-srs && \$(MAKE) ${_ST_MAKE} EXTRA_CFLAGS="${_ST_EXTRA_CFLAGS}")
+
+ffmpeg:
+	(cd ${SRS_OBJS_DIR} && rm -f srs srs_utest)
+	(cd ${SRS_OBJS}/${SRS_PLATFORM}/ffmpeg-4.2-fit && \$(MAKE) && \$(MAKE) install-libs)
+
 END
 
 # for Makefile of all modules.