| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207 |
- #! /bin/bash
- TARGET_FILE=${OUTPUT_DIR}/.one_makefile
- rm -f ${TARGET_FILE}
- CONFIG_VERNDOR=$(grep -m 1 "VENDOR *:" .config|awk '{ print $NF }')
- EXT_IFLAGS=$( \
- for iter in \
- $(find -L \
- tools/build-rules/misc \
- include \
- tests \
- src \
- ${IMPORT_DIR}/${CONFIG_VENDOR}/include \
- -type d -not -path "*.git*" -not -path "*.O*" 2>/dev/null); do \
- echo " -I${iter} \\"; \
- done)
- IFLAGS=$( \
- for iter in \
- $(find -L \
- ${COMP_LIB_COMPONENTS} \
- ${EXPORT_DIR} \
- ${SUBDIRS} \
- ${EXTRA_INCLUDE_DIRS} \
- ${IMPORT_DIR}/${CONFIG_VENDOR}/include \
- -type d -not -path "*.git*" -not -path "*.O*" 2>/dev/null); do \
- echo " -I${iter} \\"; \
- done)
- if [ "${WITH_LCOV}" = "1" ]; then
- CFLAGS=$( \
- echo "${CFLAGS}" \
- | xargs -n 1 \
- | awk '{ printf(" %s \\\n", $0); }' \
- )
- else
- CFLAGS=$( \
- echo "${CFLAGS}" \
- | xargs -n 1 \
- | grep -v '\-\-coverage' \
- | awk '{ printf(" %s \\\n", $0); }' \
- )
- fi
- ETC_OBJS=$(
- for i in ${ALL_LIBS}; do
- j=$(grep "${i}$" ${STAMP_BLD_VAR} | cut -d' ' -f1 | sed 's|LIBA_TARGET_|LIB_OBJS_|g')
- k=$(grep "${j}" ${STAMP_BLD_VAR} | cut -d' ' -f3-)
- for l in ${k}; do
- echo "${j//LIB_OBJS_/}/${l}"
- done
- done)
- ALL_LIBS=$(for iter in ${ALL_LIBS}; do echo -n "${OUTPUT_DIR}/usr/lib/${iter} "; done)
- ALL_BINS=$(for iter in ${ALL_PROG}; do echo -n "${OUTPUT_DIR}/usr/bin/${iter} "; done)
- OUTPUT_D=$(basename ${OUTPUT_DIR})
- if [ "$(echo ${CFLAGS}|grep -w '\-D_PLATFORM_IS_LINUX_')" = "" ]; then
- ALL_BINS=""
- fi
- cat << EOB >> ${TARGET_FILE}
- include ${RULE_DIR}/funcs.mk
- SHELL := bash
- Q ?= @
- VPATH := $(for iter in ${COMP_LIB_COMPONENTS}; do echo -n "${OUTPUT_DIR}/${iter} "; done)
- EXT_IFLAGS := \\
- ${EXT_IFLAGS}
- IFLAGS := \\
- ${IFLAGS}
- CFLAGS := \\
- ${EXTRA_CFLAGS} \\
- ${CFLAGS}
- STAMP_LCOV := ${STAMP_LCOV}
- .PHONY: all
- all: ${OUTPUT_DIR}/usr/lib/${COMP_LIB} ${ALL_LIBS} ${ALL_BINS}
- \$(Q)cp -rf ${EXTRA_INSTALL_HDRS} ${OUTPUT_DIR}/usr/include 2>/dev/null || true
- @rm -f *.gcda *.gcno \$\$(find ${RULE_DIR} -name "*.o")
- @if [ "\$(WITH_LCOV)" = "1" ]; then \\
- mkdir -p \$\$(dirname \$(STAMP_LCOV)); \\
- touch \$(STAMP_LCOV); \\
- else \\
- rm -f \$(STAMP_LCOV); \\
- fi
- ifneq (,\$(findstring gcc,\$(CC)))
- $(for iter in ${COMP_LIB_OBJS}; do
- echo "sinclude ${OUTPUT_DIR}/${iter/.o/.d}"
- done
- )
- endif
- ${OUTPUT_DIR}/usr/lib/${COMP_LIB}: \\
- $(for iter in ${COMP_LIB_OBJS}; do
- echo " ${OUTPUT_DIR}/${iter} \\"
- done
- )
- \$(Q)mkdir -p \$\$(dirname \$@)
- \$(Q)\$(call Brief_Log,"AR",\$\$(basename \$@),"...")
- \$(Q)${AR} -rcs \$@ \$^ 2>/dev/null
- %.o:
- \$(Q)\$(call Brief_Log,"CC",\$\$(basename \$@),"...")
- \$(Q)mkdir -p \$\$(dirname \$@)
- \$(Q)S=\$\$(echo \$@|sed 's,${OUTPUT_DIR},${TOP_DIR},1'); \\
- if echo \$\${S//.o/.c} | grep -q 'mbedtls\|HAL_\|hal-impl'; then \\
- ${CC} -c \\
- -o \$@ \\
- \$(filter-out -ansi,\$(CFLAGS)) \\
- \$(IFLAGS) \\
- \$\${S//.o/.c}; \\
- else \\
- ${CC} -c \\
- -o \$@ \\
- \$(CFLAGS) \\
- \$(IFLAGS) \\
- \$\${S//.o/.c}; \\
- fi
- ifneq (,\$(findstring gcc,\$(CC)))
- %.d:
- @\\
- ( \\
- D=\$\$(dirname \$@|sed 's,${OUTPUT_DIR},${TOP_DIR},1'); \\
- F=\$\$(basename \$@); \\
- F=\$\${F/.d/.c}; \\
- mkdir -p \$\$(dirname \$@); \\
- ${CC} -MM -I\$(CURDIR) \\
- \$(IFLAGS) \\
- \$(filter-out -ansi,\$(CFLAGS)) \\
- \$\${D}/\$\${F} > \$@.\$\$\$\$; \\
- sed -i 's!\$(shell basename \$*)\.o[ :]!\$*.o:!1' \$@.\$\$\$\$; \\
- mv \$@.\$\$\$\$ \$@; \\
- )
- endif
- EOB
- for i in ${ALL_LIBS}; do
- n=$(basename ${i})
- j=$(grep "${n}$" ${STAMP_BLD_VAR}|cut -d' ' -f1|sed 's:LIBA_TARGET_::1')
- k=$(echo 'LIB_OBJS_'"${j}")
- k=$(grep -m 1 "^${k}" ${STAMP_BLD_VAR}|cut -d' ' -f3-)
- k=$(for l in ${k}; do echo -n "${OUTPUT_DIR}/${j}/${l} "; done)
- for m in ${k}; do
- echo "sinclude ${m/.o/.d}" >> ${TARGET_FILE}
- done
- echo "" >> ${TARGET_FILE}
- cat << EOB >> ${TARGET_FILE}
- ${OUTPUT_DIR}/usr/lib/${n}: \\
- $(for m in ${k}; do
- echo " ${m} \\";
- done)
- \$(Q)mkdir -p \$\$(dirname \$@)
- \$(Q)\$(call Brief_Log,"AR",\$\$(basename \$@),"...")
- \$(Q)${AR} -rcs \$@ \$^ 2>/dev/null
- EOB
- done
- for i in ${ALL_PROG}; do
- j=$(grep -w -m 1 "^SRCS_${i}" ${STAMP_BLD_VAR}|cut -d' ' -f3-)
- k=$(grep -w -m 1 "TARGET_.* = .*${i}" ${STAMP_BLD_VAR}|cut -d' ' -f1|sed 's:TARGET_::1')
- q=${k}
- if [ "$(grep -w -m 1 "^TARGET_${k}" ${STAMP_BLD_VAR}|cut -d' ' -f3-|awk '{ print NF }')" = "1" ]; then
- k=""
- fi
- LFLAGS=$(grep -w -m 1 "^LDFLAGS_${q}" ${STAMP_BLD_VAR}|cut -d' ' -f3-)
- if [ "${CC}" = "gcc" ]; then
- if [ "$(uname)" != "Darwin" ]; then
- LFLAGS="${LFLAGS} -lgcov"
- fi
- fi
- j=$(for n in ${j}; do p=$(echo ${n}|cut -c1); [ "${p}" = "/" ] && echo -n "${n}" || echo -n "${TOP_DIR}/${q}/${n} "; done)
- EXTRA_SRCS=$(grep -w -m 1 "^EXTRA_SRCS_${q}" ${STAMP_BLD_VAR}|cut -d' ' -f3-)
- cat << EOB >> ${TARGET_FILE}
- ${OUTPUT_DIR}/usr/bin/${i}: \\
- ${EXTRA_SRCS} \\
- $(for m in ${j} ${OUTPUT_DIR}/usr/lib/${COMP_LIB} ${ALL_LIBS}; do
- echo " ${m} \\"|sed 's!//*!/!g';
- done)
- \$(Q)\$(call Brief_Log,"LD",\$\$(basename \$@),"...")
- \$(Q)${CC} \\
- -o \$@ \\
- $([ "$i" != "sdk-testsuites" ] && echo "\$(IFLAGS)" || echo "\$(EXT_IFLAGS)") \\
- \$(filter-out -Wdeclaration-after-statement -ansi,\$(CFLAGS)) \\
- \$(filter-out %.a,\$^) \\
- $( if [ "${i}" = "sdk-testsuites" ] && uname -a|grep -qw Ubuntu; then echo "${TOP_DIR}/${IMPORT_VDRDIR}/${PREBUILT_LIBDIR}/libcurl.a"; fi ) \\
- -L${OUTPUT_DIR}/usr/lib \\
- ${LFLAGS} $( if [ "${i}" = "sdk-testsuites" ] && ! uname -a|grep -qw Ubuntu; then echo "-lcurl"; fi )
- EOB
- done
|