#!/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/tests/unit-tests" ]]; 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/tests/unit-tests/src-c") INCLUDE_STATEMENTS=$(make_include_statements $MODULE) gcc -o $PROJECT_PATH/.build/test-$MODULE.elf \ $SOURCES \ .build/archives/*.a \ -I "modules/$MODULE/tests/unit-tests/inc-c" \ $INCLUDE_STATEMENTS ./.build/test-$MODULE.elf done