#!/bin/bash FAKE_DL_FNAME=include/fake_dl.h MODULES_PATH=../modules credits() { cat > $1 </dev/null| grep $2); do echo -n $i done } make_fake_dl_lib() { count=$2 a01=$(make_fake_dl_item $1 constants_def) a02=$(make_fake_dl_item $1 types_def) a03=$(make_fake_dl_item $1 globals_def) a04=$(make_fake_dl_item $1 locals_def) a05=$(make_fake_dl_item $1 globals_fixup) a06=$(make_fake_dl_item $1 locals_fixup) a07=$(make_fake_dl_item $1 functions_exports) a08=$(make_fake_dl_item $1 module_initialize) a09=$(make_fake_dl_item $1 module_finalize) a10=$(make_fake_dl_item $1 instance_create_hook) a11=$(make_fake_dl_item $1 instance_destroy_hook) a12=$(make_fake_dl_item $1 instance_pre_execute_hook) a13=$(make_fake_dl_item $1 instance_pos_execute_hook) a14=$(make_fake_dl_item $1 process_exec_hook) a15=$(make_fake_dl_item $1 handler_hooks) a16=$(make_fake_dl_item $1 modules_dependency) if [ "$a01" != "" ] || [ "$a02" != "" ] || [ "$a03" != "" ] || [ "$a04" != "" ] || [ "$a05" != "" ] || [ "$a06" != "" ] || [ "$a07" != "" ] || [ "$a08" != "" ] || [ "$a09" != "" ] || [ "$a10" != "" ] || [ "$a11" != "" ] || [ "$a12" != "" ] || [ "$a13 != "" ] || [ "$a14 != "" ] || [ "$a15 != "" ] || [ "$a16 != "" ]; then echo " " echo " /* -------------------- $1 -------------------- */" echo " " echo " __fake_dl[$count].dlname = \"$1\";" echo "#ifdef __BGDC__" echo " __fake_dl[$count].constants_def = $a01;" | sed -r 's/= ;/= NULL;/g' echo " __fake_dl[$count].types_def = &$a02;" | sed -r 's/= &;/= NULL;/g' echo " __fake_dl[$count].globals_def = &$a03;" | sed -r 's/= &;/= NULL;/g' echo " __fake_dl[$count].locals_def = &$a04;" | sed -r 's/= &;/= NULL;/g' echo " __fake_dl[$count].globals_fixup = NULL;" echo " __fake_dl[$count].locals_fixup = NULL;" echo "#else" echo " __fake_dl[$count].constants_def = NULL;" echo " __fake_dl[$count].types_def = NULL;" echo " __fake_dl[$count].globals_def = NULL;" echo " __fake_dl[$count].locals_def = NULL;" echo " __fake_dl[$count].globals_fixup = $a05;" | sed -r 's/= ;/= NULL;/g' echo " __fake_dl[$count].locals_fixup = $a06;" | sed -r 's/= ;/= NULL;/g' echo "#endif" echo " __fake_dl[$count].functions_exports = $a07;" | sed -r 's/= ;/= NULL;/g' echo "#ifdef __BGDC__" echo " __fake_dl[$count].module_initialize = NULL;" echo " __fake_dl[$count].module_finalize = NULL;" echo " __fake_dl[$count].instance_create_hook = NULL;" echo " __fake_dl[$count].instance_destroy_hook = NULL;" echo " __fake_dl[$count].instance_pre_execute_hook = NULL;" echo " __fake_dl[$count].instance_pos_execute_hook = NULL;" echo " __fake_dl[$count].process_exec_hook = NULL;" echo " __fake_dl[$count].handler_hooks = NULL;" echo "#else" echo " __fake_dl[$count].module_initialize = $a08;" | sed -r 's/= ;/= NULL;/g' echo " __fake_dl[$count].module_finalize = $a09;" | sed -r 's/= ;/= NULL;/g' echo " __fake_dl[$count].instance_create_hook = $a10;" | sed -r 's/= ;/= NULL;/g' echo " __fake_dl[$count].instance_destroy_hook = $a11;" | sed -r 's/= ;/= NULL;/g' echo " __fake_dl[$count].instance_pre_execute_hook = $a12;" | sed -r 's/= ;/= NULL;/g' echo " __fake_dl[$count].instance_pos_execute_hook = $a13;" | sed -r 's/= ;/= NULL;/g' echo " __fake_dl[$count].process_exec_hook = $a14;" | sed -r 's/= ;/= NULL;/g' echo " __fake_dl[$count].handler_hooks = $a15;" | sed -r 's/= ;/= NULL;/g' echo "#endif" echo " __fake_dl[$count].modules_dependency = $a16;" | sed -r 's/= ;/= NULL;/g' echo " " count=$(($count + 1)) fi return $count } make_fake_dl() { count=0 data="" for i in $SCOPE; do data+="$(make_fake_dl_lib $i $count)" count=$? done echo "/* ---------- FAKE DYNAMIC LIBRARY ---------- */" echo " " echo "__FAKE_DL __fake_dl[$(($count+1))];" echo " " echo "/* ------------------------------------------ */" echo " " echo "void fake_dl_init()" echo "{" echo "$data" echo " /* -------------------- LAST -------------------- */" echo " " echo " __fake_dl[$count].dlname = NULL;" echo " __fake_dl[$count].constants_def = NULL;" echo " __fake_dl[$count].types_def = NULL;" echo " __fake_dl[$count].globals_def = NULL;" echo " __fake_dl[$count].locals_def = NULL;" echo " __fake_dl[$count].globals_fixup = NULL;" echo " __fake_dl[$count].locals_fixup = NULL;" echo " __fake_dl[$count].functions_exports = NULL;" echo " __fake_dl[$count].module_initialize = NULL;" echo " __fake_dl[$count].module_finalize = NULL;" echo " __fake_dl[$count].instance_create_hook = NULL;" echo " __fake_dl[$count].instance_destroy_hook = NULL;" echo " __fake_dl[$count].instance_pre_execute_hook = NULL;" echo " __fake_dl[$count].instance_pos_execute_hook = NULL;" echo " __fake_dl[$count].process_exec_hook = NULL;" echo " __fake_dl[$count].handler_hooks = NULL;" echo " __fake_dl[$count].modules_dependency = NULL;" echo " " echo "}" echo " " echo "/* ------------------------------------------ */" echo " " } # without mathi SCOPE=$(tail -n $(expr $(wc -l $MODULES_PATH/Makefile.am|cut -f1 -d " ") - $(grep -n SUBDIRS $MODULES_PATH/Makefile.am | cut -f1 -d ":" )) $MODULES_PATH/Makefile.am | sed 's/\\//g' | grep -v mathi) export SCOPE credits $FAKE_DL_FNAME echo "#ifndef __FAKE_DL_H" >> $FAKE_DL_FNAME echo "#define __FAKE_DL_H" >> $FAKE_DL_FNAME echo " " >> $FAKE_DL_FNAME echo "#include " >> $FAKE_DL_FNAME echo " " >> $FAKE_DL_FNAME search_bgdc_includes >> $FAKE_DL_FNAME #echo "#ifdef __BGDC__" >> $FAKE_DL_FNAME #search_symbols DLCONSTANT constants_def '[]' >> $FAKE_DL_FNAME #search_symbols "char *" types_def >> $FAKE_DL_FNAME #search_symbols "char *" globals_def >> $FAKE_DL_FNAME #search_symbols "char *" locals_def >> $FAKE_DL_FNAME #echo "#endif" >> $FAKE_DL_FNAME echo "#ifndef __BGDC__" >> $FAKE_DL_FNAME search_symbols DLVARFIXUP globals_fixup '[]' >> $FAKE_DL_FNAME search_symbols DLVARFIXUP locals_fixup '[]' >> $FAKE_DL_FNAME search_symbols DLSYSFUNCS functions_exports '[]' >> $FAKE_DL_FNAME search_symbols void module_initialize '()' >> $FAKE_DL_FNAME search_symbols void module_finalize '()' >> $FAKE_DL_FNAME search_symbols void instance_create_hook '( INSTANCE * )' >> $FAKE_DL_FNAME search_symbols void instance_destroy_hook '( INSTANCE * )' >> $FAKE_DL_FNAME search_symbols void instance_pre_execute_hook '( INSTANCE * )' >> $FAKE_DL_FNAME search_symbols void instance_pos_execute_hook '( INSTANCE * )' >> $FAKE_DL_FNAME search_symbols void process_exec_hook '( INSTANCE * )' >> $FAKE_DL_FNAME search_symbols HOOK handler_hooks '[]' >> $FAKE_DL_FNAME search_symbols "char *" modules_dependency '[]' >> $FAKE_DL_FNAME echo "#endif" >> $FAKE_DL_FNAME cat >> $FAKE_DL_FNAME <> $FAKE_DL_FNAME echo "#endif" >> $FAKE_DL_FNAME