Skip to content
Snippets Groups Projects
Commit 74c9cbe4 authored by Paul McCarthy's avatar Paul McCarthy :mountain_bicyclist:
Browse files

Merge branch 'rf/cuda-depend' into 'master'

ENH: Auto-dependency generation support for CUDA files.

See merge request !40
parents 0dc0d454 d67c3643
No related branches found
No related tags found
1 merge request!40ENH: Auto-dependency generation support for CUDA files.
Pipeline #12326 passed
# FSL base project changelog # FSL base project changelog
## 2112.1 (Monday 13th December 2021)
* Adjust the `depend.mk` rule to support automatic dependency generation for
`.cu` CUDA source files.
## 2112.0 (Saturday 11th December 2021) ## 2112.0 (Saturday 11th December 2021)
* Add `-pthread` to the standard C++ compiler flags for `g++`. * Add `-pthread` to the standard C++ compiler flags for `g++`.
......
...@@ -176,7 +176,7 @@ endif ...@@ -176,7 +176,7 @@ endif
# CUDA projects. nvcc must be on the $PATH, or $NVCC must be set. # CUDA projects. nvcc must be on the $PATH, or $NVCC must be set.
# #
##################################################################### #####################################################################
NVCC ?= $(shell which nvcc) NVCC ?= $(shell which nvcc 2> /dev/null)
ifneq (${NVCC}, ) ifneq (${NVCC}, )
# NVCC, GENCODEFLAGS, NVCCFLAGS, NVCCLDFLAGS, # NVCC, GENCODEFLAGS, NVCCFLAGS, NVCCLDFLAGS,
......
#!/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
...@@ -21,20 +21,14 @@ depend: ...@@ -21,20 +21,14 @@ depend:
${MAKE} depend.mk ${MAKE} depend.mk
depend.mk: depend.mk:
@echo Building dependency file depend.mk @NVCC="${NVCC}" \
@for srcfile in `find . -name "*.c" -or -name "*.cc" -or -name "*.cxx" -or -name "*.cpp" -or -name "*.inc" -or -name "*.hpp"` verylongdummyname ; do \ CC="${CC}" \
if [ -f "$${srcfile}" ] ; then \ CPPFLAGS="${CPPFLAGS}" \
basename="$${srcfile%.*}" ; \ INCFLAGS="${INCFLAGS}" \
basename="$${basename#./}" ; \ BUILDDIR="${BUILDDIR}" \
objfile="$${basename}.o" ; \ CUDABUILDDIR="${CUDABUILDDIR}" \
depfile="$${basename}.mk" ; \ ${FSLCONFDIR}/depend.sh
${CC} -MM -MT "${BUILDDIR}$${objfile}" -MF "$${depfile}" ${CPPFLAGS} ${INCFLAGS} "$${srcfile}" > /dev/null; \
cat "$${depfile}" >> depend.mk ; \
rm -f "$${depfile}" ; \
else \
touch depend.mk; \
fi \
done
install: install:
@${MAKE} "DESTDIR=${FSLDEVDIR}" master-install-script @${MAKE} "DESTDIR=${FSLDEVDIR}" master-install-script
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment