All pastes #718924 Raw Edit

Zeug

public text v1 · immutable
#718924 ·published 2007-09-28 20:06 UTC
rendered paste body
#!/bin/sh
#
#             __________               __   ___.
#   Open      \______   \ ____   ____ |  | _\_ |__   _______  ___
#   Source     |       _//  _ \_/ ___\|  |/ /| __ \ /  _ \  \/  /
#   Jukebox    |    |   (  <_> )  \___|    < | \_\ (  <_> > <  <
#   Firmware   |____|_  /\____/ \___  >__|_ \|___  /\____/__/\_ \
#                     \/            \/     \/    \/            \/
#
#
# Copyright (c) 2007 Alexander Levin
#
#
# This script produces the file "menu_call_stats_list.c" containing
# pointers to the call statistics for all menu items in the core RockBox.
# Files with menu items that should get into this list must be compiled
# so that all the temporary files are kept (in particular, the result of
# the preprocessing). Usually this is done by including '-save-temps' into
# the list of the compiler options. In that case, the preprocessed files
# have the extension '.i' and are stored in the same directory as the
# original '.c' files.

BASE_NAME = $(OBJDIR)/menu_call_stats_list
TMP_NAME = $(BASE_NAME).tmp
OUT_NAME = $(BASE_NAME).c
STRUCT = "struct s_call_stats"

# Process all *.i files (results of the preprocessing), find strings where
# stat structs are defined, isolate the definitions, and put them all to a
# temporary file.
find . -name "$(APPSDIR)/*.i" -exec grep "$(STRUCT) item_call" {} \; | sed -e "s/.*\($(STRUCT) item[^ ]*\) .*/\1/" | sort > $(TMP_NAME)

#
# Now produce the .c file with the array containing addresses of all the structs.
#
echo "/* This file was generated automatically. Please do not edit. */" > $(OUT_NAME)
echo "#include \"menu.h\"" >> $(OUT_NAME)
echo "" >> $(OUT_NAME)
cat $(TMP_NAME) | sed -e "s/\(.*\)/extern \1;/" >> $(OUT_NAME)
echo "" >> $(OUT_NAME)
echo "$(STRUCT)" *menu_call_stats_list[] = {" >> $(OUT_NAME)
cat $(TMP_NAME) | sed -e "s/.* \(.*\)/    \&\1,/" >> $(OUT_NAME)
echo "};" >> $(OUT_NAME)

# Delete the temporary file
rm $(TMP_NAME)