58 lines
1.4 KiB
Bash
58 lines
1.4 KiB
Bash
#!/usr/bin/env bash
|
|
|
|
cd $(dirname $0)
|
|
SCRIPT_PATH=$(pwd)
|
|
cd ..
|
|
PROJECT_PATH=$(pwd)
|
|
|
|
function list_modules() {
|
|
MODULE_FOLDER=$1
|
|
|
|
MODULES=$(ls $MODULE_FOLDER)
|
|
for MODULE in $MODULES
|
|
do
|
|
if [[ -d "$MODULE_FOLDER/$MODULE/auto-test" ]];
|
|
then
|
|
echo $MODULE
|
|
fi
|
|
done
|
|
}
|
|
|
|
function list_sources() {
|
|
SOURCE_PATH=$1
|
|
ENTRY_PATH=$(pwd)
|
|
|
|
cd $SOURCE_PATH
|
|
SOURCES=$(find . -type f | grep ".c$")
|
|
for SOURCE in $SOURCES
|
|
do
|
|
echo $SOURCE_PATH/$(echo $SOURCE | cut -c 3-)
|
|
done
|
|
cd $ENTRY_PATH
|
|
}
|
|
|
|
function make_include_statements() {
|
|
MODULE_NAME=$1
|
|
|
|
for INCLUDE_PATH in $(cat modules/$MODULE_NAME/includes.txt)
|
|
do
|
|
MODIFIED_PATH="${INCLUDE_PATH//"{module}"/"$PROJECT_PATH/modules/$MODULE_NAME"}"
|
|
MODIFIED_PATH="${MODIFIED_PATH//"{module-folder}"/"$PROJECT_PATH/modules"}"
|
|
echo "-I ${MODIFIED_PATH//"{dependencies}"/"$PROJECT_PATH/dependencies"}"
|
|
done
|
|
}
|
|
|
|
MODULES=$(list_modules "modules/")
|
|
for MODULE in $MODULES
|
|
do
|
|
SOURCES=$(list_sources "modules/$MODULE/auto-test/src-c")
|
|
INCLUDE_STATEMENTS=$(make_include_statements $MODULE)
|
|
gcc -o $PROJECT_PATH/.build/test-$MODULE.elf \
|
|
$SOURCES \
|
|
.build/archives/*.a \
|
|
-I "modules/$MODULE/auto-test/inc-c" \
|
|
$INCLUDE_STATEMENTS
|
|
|
|
./.build/test-$MODULE.elf
|
|
done
|