Blame view

trunk/auto/apps.sh 2.5 KB
winlin authored
1 2 3
#!/bin/bash

# params:
4 5
# $SRS_OBJS the objs directory. ie. objs
# $SRS_MAKEFILE the makefile name. ie. Makefile
winlin authored
6 7 8 9 10 11 12 13 14
# $MAIN_ENTRANCES array, all main entrance, disable all except the $APP_MAIN itself
# $MODULE_OBJS array, the objects to compile the app.
# $BUILD_KEY a string indicates the build key for Makefile. ie. dump
# $APP_MAIN the object file that contains main function. ie. your_app_main
# $APP_NAME the app name to output. ie. your_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.
# $SO_PATH the libssl.so.10 and other so file path.
15
FILE=${SRS_OBJS}/${SRS_MAKEFILE}
winlin authored
16
17
APP_TARGET="${SRS_OBJS}/${APP_NAME}"
winlin authored
18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44

echo "generate app ${APP_NAME} depends...";

echo "# build ${APP_TARGET}" >> ${FILE}
echo "${BUILD_KEY}: ${APP_TARGET}" >> ${FILE}

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
    
45
    OBJ_FILE=${SRS_OBJS}/$item
winlin authored
46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73
    OBJ_FILE="${OBJ_FILE%.*}.o"
    echo -n "${OBJ_FILE} " >> ${FILE}
done
echo "" >> ${FILE}

echo "generate app ${APP_NAME} link...";

echo -n "	\$(LINK) ${PerformanceLink} -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
    
74
    OBJ_FILE=${SRS_OBJS}/$item
winlin authored
75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92
    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}

# set the so reference path.
if [[ ! -z ${SO_PATH} ]]; then
    echo -n "	@bash auto/set_so_rpath.sh ${SOPathTool} ${APP_TARGET} ${SO_PATH}" >> ${FILE}
    echo "" >> ${FILE}
fi

echo -n "generate app ${APP_NAME} ok"; echo '!';