2023-03-19 20:01:06 -07:00

49 lines
1.7 KiB
Bash
Executable File

#!/bin/sh
# ----------------------------------------------------------------------
# Compile ref C++ files, to check them for validity
# ----------------------------------------------------------------------
fprime_gcc=../../../../scripts/fprime-gcc
export FPRIME_GCC_FLAGS="-I../fprime"
echo "generating C++"
fpp-to-cpp -d ../fprime/Fw -p `dirname $PWD`/fprime `cat deps.txt`
for dir in Cmd Log Prm Time Tlm
do
mv ../fprime/Fw/$dir*.hpp ../fprime/Fw/$dir*.cpp ../fprime/Fw/$dir
done
mv ../fprime/Fw/Param*.hpp ../fprime/Fw/Param*.cpp ../fprime/Fw/Prm
# Find all guards used in generated component base class files
guards=`grep '#if FW_' *ComponentAc.hpp *ComponentAc.cpp | cut -f 2 -d ' ' | sort -u | sed 's/^/-D/g'`
# All guards set to 1
guards_on=`echo $guards | sed 's/ /\n/g' | sed 's/$/=1/g'`
# All guards set to 0
guards_off=`echo $guards | sed 's/ /\n/g' | sed 's/$/=0/g'`
# All guards except FW_PORT_SERIALIZATION set to 0
guards_off_serial_on=`echo $guards_off | sed 's/0$/1/g'`
for file in `find . -name '*Ac.ref.cpp'`
do
base=`echo $file | sed 's;\.cpp;;'`
dest_base=`echo $base | sed 's;\(.*Ac\).*;\1;'`
cp $base.hpp $dest_base.hpp
cp $base.cpp $dest_base.cpp
echo "compiling $file with default guards"
$fprime_gcc -I../../.. -c $dest_base.cpp -Wno-gnu-zero-variadic-macro-arguments -Wno-unused-parameter
g=`echo $guards_on`
echo "compiling $file with $g"
$fprime_gcc -I../../.. -c $dest_base.cpp $g -Wno-gnu-zero-variadic-macro-arguments -Wno-unused-parameter
g=`echo $guards_off`
if grep -q static_assert $base.hpp
then
g=$guards_off_serial_on
fi
echo "compiling $file with $g"
$fprime_gcc -I../../.. -c $dest_base.cpp $g -Wno-gnu-zero-variadic-macro-arguments -Wno-unused-parameter
done