#!/bin/sh # # This script is called by the depend.mk rule defined in # $FSLDIR/config/rules.mk. # # It is assumed that this script is executed from a # project directory (i.e. the project directory is the cwd). # # Automatically generate Make rules and dependencies for # all source files in the project. This creates a file # called depend.mk which contains a rule for every object # file to be compiled, which has all header files # that the source file includes as dependencies. If # object files are to be saved into a separate build # directory, the project Makefile should set the BUILDDIR # variable. # # If the NVCC environment variable is set to a nvcc compiler, # rules are generated for CUDA .cu files. If CUDA object files # are to be saved into a separate build directory, the project # Makefile should set the CUDABUILDDIR variable. set -e echo "Building dependency file depend.mk" srcfiles=`find -name "*.c" -or -name "*.cc" -or -name "*.cxx" -or -name "*.cpp" -or -name "*.inc" -or -name "*.hpp" -or -name "*.cu"` for srcfile in ${srcfiles} dummyname; do if [ -f "${srcfile}" ]; then srcfile="${srcfile#./}" prefix="${srcfile%.*}" basename="${prefix##*/}" objfile="${basename}.o" depfile="${basename}.mk" # if nvcc is present, use it for .cu files if [ "${srcfile%.cu}" = "${prefix}" ]; then if [ -f "${NVCC}" ]; then ${NVCC} -MM -MT "${CUDABUILDDIR}${objfile}" -MF "${depfile}" \ ${CPPFLAGS} ${INCFLAGS} "${srcfile}" > /dev/null 2>&1 fi else ${CC} -MM -MT "${BUILDDIR}${objfile}" -MF "${depfile}" \ ${CPPFLAGS} ${INCFLAGS} "${srcfile}" > /dev/null 2>&1 fi if [ -f "${depfile}" ]; then cat "${depfile}" >> depend.mk rm -f "${depfile}" fi else touch depend.mk fi done