1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 |
- # generate the binary
- #
- # params:
- # $SRS_OBJS the objs directory to store the Makefile. ie. ./objs
- # $SRS_OBJS_DIR the objs directory for Makefile. ie. objs
- # $SRS_MAKEFILE the makefile name. ie. Makefile
- #
- # $MAIN_ENTRANCES array, disable all except the $APP_MAIN itself. ie. ["srs_main_server" "srs_main_bandcheck"]
- # $APP_MAIN the object file that contains main function. ie. srs_main_server
- # $BUILD_KEY a string indicates the build key for Makefile. ie. srs
- # $APP_NAME the app name to output. ie. srs
- # $MODULE_OBJS array, the objects to compile the app.
- # $ModuleLibFiles array, the 3rdpart library file to link with. ie. [objs/st-1.9/obj/libst.a objs/libx264/obj/libx264.a]
- # $LINK_OPTIONS the linker options. ie. -ldl
- FILE=${SRS_OBJS}/${SRS_MAKEFILE}
- APP_TARGET="${SRS_OBJS_DIR}/${APP_NAME}"
- echo "Generating app ${APP_NAME} depends.";
- echo "# build ${APP_TARGET}" >> ${FILE}
- # generate the binary depends, for example:
- # srs: objs/srs
- echo "${BUILD_KEY}: ${APP_TARGET}" >> ${FILE}
- echo "" >> ${FILE}
- # the link commands, for example:
- # objs/srs: objs/src/core/srs_core.o
- echo -n "${APP_TARGET}: " >> ${FILE}
- for item in ${MODULE_OBJS[*]}; do
- FILE_NAME=`basename $item`
- FILE_NAME=${FILE_NAME%.*}
-
- ignored=0
- for disabled_item in ${MAIN_ENTRANCES[*]}; do
- if [[ ${FILE_NAME} == ${disabled_item} && ${FILE_NAME} != ${APP_MAIN} ]]; then
- ignored=1
- continue;
- fi
- done
-
- if [ ! -f ${item} ]; then
- ignored=1
- fi
-
- if [ ${ignored} == 1 ]; then
- continue;
- fi
-
- OBJ_FILE=${SRS_OBJS_DIR}/$item
- OBJ_FILE="${OBJ_FILE%.*}.o"
- echo -n "${OBJ_FILE} " >> ${FILE}
- done
- echo "" >> ${FILE}
- echo "Generating app ${APP_NAME} link.";
- # genereate the actual link command, for example:
- # $(LINK) -o objs/srs objs/src/core/srs_core.o -ldl
- echo -n " \$(LINK) -o ${APP_TARGET} " >> ${FILE}
- for item in ${MODULE_OBJS[*]}; do
- FILE_NAME=`basename $item`
- FILE_NAME=${FILE_NAME%.*}
-
- ignored=0
- for disabled_item in ${MAIN_ENTRANCES[*]}; do
- if [[ ${FILE_NAME} == ${disabled_item} && ${FILE_NAME} != ${APP_MAIN} ]]; then
- ignored=1
- continue;
- fi
- done
-
- if [ ! -f ${item} ]; then
- ignored=1
- fi
-
- if [ ${ignored} == 1 ]; then
- continue;
- fi
-
- OBJ_FILE=${SRS_OBJS_DIR}/$item
- OBJ_FILE="${OBJ_FILE%.*}.o"
- echo -n "${OBJ_FILE} " >> ${FILE}
- done
- # 3rdpart library static link.
- for item in ${ModuleLibFiles[*]}; do
- echo -n "$item " >> ${FILE}
- done
- # link options.
- echo -n "${LINK_OPTIONS}" >> ${FILE}
- echo "" >> ${FILE}
- echo "" >> ${FILE}
- echo -n "Generate app ${APP_NAME} ok"; echo '!';
|