2025-01-12 00:52:51 +08:00

41 lines
1007 B
Bash

#!/bin/sh
pkg=Matrix
if [ ! -f DESCRIPTION -o -z "$(grep "^Package: ${pkg}$" DESCRIPTION)" ]; then
echo "script must be run in package [${pkg}] root directory"
exit 1
fi
root=$(pwd)
smk=inst/scripts/sources.mk
rmk=inst/scripts/rules.mk
echo "Getting source file names from ${smk} ..."
lst=$(cat ${smk}| sed -E "1d;s/^[\t ]*([^ ]*[.]c).*$/\1/")
for file in ${lst}; do
echo " ${file}"
done
echo "done"
if [ -f ${out} ]; then
echo "Moving existing ${rmk} to ${rmk}.bak ..."
mv ${rmk} ${rmk}.bak
echo "done"
fi
R=R
include1="$(${R} RHOME)/include"
include2="SuiteSparse/SuiteSparse_config"
echo "Writing gcc -MM output to ${rmk} for inclusion in src/Makevars ..."
echo "===="
echo "## Generated by ./rules.sh :" | tee ${rmk}
cd src
for file in ${lst}; do
if [ -f ${file} ]; then
gcc -I${include1} -I${include2} -MM ${file} |
sed -E "s~${include1}/[^ ]*[.]h( |$)~~g;\~^[\t ]*\\\\$~d" |
tee -a ../${rmk}
else
echo "## missing ${file}" | tee -a ../${rmk}
fi
done
cd ..
echo "===="
echo "done"