From 8adc88ca74403c14320a72e1f96e8c3b3b8f3017 Mon Sep 17 00:00:00 2001 From: Paul McCarthy <pauldmccarthy@gmail.com> Date: Mon, 13 Dec 2021 15:32:25 +0000 Subject: [PATCH] RF: Go back to having depend.mk logic inline, rather than in separate script, as passing/escaping variables with special characters is far too painful. --- Makefile | 1 - config/depend.sh | 55 ------------------------------------------------ config/rules.mk | 47 ++++++++++++++++++++++++++++++++++------- 3 files changed, 39 insertions(+), 64 deletions(-) delete mode 100755 config/depend.sh diff --git a/Makefile b/Makefile index 755f626..0421fcd 100644 --- a/Makefile +++ b/Makefile @@ -19,7 +19,6 @@ install: ${INSTALL} -m 0755 bin/* ${PREFIX}/share/fsl/bin/ ${INSTALL} -m 0644 config/* ${PREFIX}/config/ ${INSTALL} -m 0755 config/supportedGencodes.sh ${PREFIX}/config/ - ${INSTALL} -m 0755 config/depend.sh ${PREFIX}/config/ ${INSTALL} -m 0644 doc/fsl.css ${PREFIX}/doc/ ${INSTALL} -m 0644 doc/images/* ${PREFIX}/doc/images/ ${INSTALL} -m 0644 etc/fslconf/* ${PREFIX}/etc/fslconf/ diff --git a/config/depend.sh b/config/depend.sh deleted file mode 100755 index 224219c..0000000 --- a/config/depend.sh +++ /dev/null @@ -1,55 +0,0 @@ -#!/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 diff --git a/config/rules.mk b/config/rules.mk index edc95e4..44aa7fa 100644 --- a/config/rules.mk +++ b/config/rules.mk @@ -20,15 +20,46 @@ depend: ${RM} -f depend.mk ${MAKE} depend.mk +# 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. depend.mk: - @NVCC="${NVCC}" \ - CC="${CC}" \ - CPPFLAGS="${CPPFLAGS}" \ - INCFLAGS="${INCFLAGS}" \ - BUILDDIR="${BUILDDIR}" \ - CUDABUILDDIR="${CUDABUILDDIR}" \ - ${FSLCONFDIR}/depend.sh - + 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 [ "${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 install: @${MAKE} "DESTDIR=${FSLDEVDIR}" master-install-script -- GitLab