Do not create a rule for an executable for .C/.cpp files without a "main()' function.

This commit is contained in:
Laurent Saboret 2006-05-12 14:54:30 +00:00
parent 06acd534f1
commit 542d27f101
1 changed files with 47 additions and 13 deletions

View File

@ -23,7 +23,7 @@
# #
# Author(s) : various # Author(s) : various
# This script creates a CGAL makefile with entries for all .C files in the # This script creates a CGAL makefile with entries for all .C and .cpp files in the
# current directory. # current directory.
# #
# Usage: cgal_create_makefile [-options] [outputfile] # Usage: cgal_create_makefile [-options] [outputfile]
@ -63,17 +63,22 @@ create_makefile_entry_cpp()
echo echo
fi fi
fi fi
# if grep 'main *(' $CFILE > /dev/null; then
# Print target for $1 object file
echo "$1\$(OBJ_EXT): $1.cpp" echo "$1\$(OBJ_EXT): $1.cpp"
echo " \$(CGAL_CXX) \$(CXXFLAGS) \$(OBJ_OPT) $1.cpp" echo " \$(CGAL_CXX) \$(CXXFLAGS) \$(OBJ_OPT) $1.cpp"
echo
# Print target for $1 executable if $CFILE contains a function "main()"
egrep '\bmain[ \t]*\(' $CFILE >/dev/null 2>&1
if [[ $? == 0 ]]; then
echo "$1\$(EXE_EXT): $1\$(OBJ_EXT)" echo "$1\$(EXE_EXT): $1\$(OBJ_EXT)"
echo " \$(CGAL_CXX) \$(LIBPATH) \$(EXE_OPT)$1 $1\$(OBJ_EXT) \$(LDFLAGS)" echo " \$(CGAL_CXX) \$(LIBPATH) \$(EXE_OPT)$1 $1\$(OBJ_EXT) \$(LDFLAGS)"
echo echo
# fi; fi;
} }
create_makefile_entry() create_makefile_entry_C()
{ {
# local CFILE MOC_FROM MOCFILE # local CFILE MOC_FROM MOCFILE
CFILE=$1.C CFILE=$1.C
@ -90,16 +95,22 @@ create_makefile_entry()
echo echo
fi fi
fi fi
# if grep 'main *(' $CFILE > /dev/null; then
# Target for $1 object file is global
# Print target for $1 executable if $CFILE contains a function "main()"
egrep '\bmain[ \t]*\(' $CFILE >/dev/null 2>&1
if [[ $? == 0 ]]; then
echo "$1\$(EXE_EXT): $1\$(OBJ_EXT)" echo "$1\$(EXE_EXT): $1\$(OBJ_EXT)"
echo " \$(CGAL_CXX) \$(LIBPATH) \$(EXE_OPT)$1 $1\$(OBJ_EXT) \$(LDFLAGS)" echo " \$(CGAL_CXX) \$(LIBPATH) \$(EXE_OPT)$1 $1\$(OBJ_EXT) \$(LDFLAGS)"
echo echo
# fi; fi;
} }
create_makefile() create_makefile()
{ {
# print makefile header
echo "# Created by the script cgal_create_makefile" echo "# Created by the script cgal_create_makefile"
echo "# This is the makefile for compiling a CGAL application." echo "# This is the makefile for compiling a CGAL application."
echo echo
@ -108,20 +119,24 @@ create_makefile()
echo echo
echo "# CGAL_MAKEFILE = ENTER_YOUR_INCLUDE_MAKEFILE_HERE" echo "# CGAL_MAKEFILE = ENTER_YOUR_INCLUDE_MAKEFILE_HERE"
echo "include \$(CGAL_MAKEFILE)" echo "include \$(CGAL_MAKEFILE)"
# print compiler flags
echo echo
header "compiler flags" header "compiler flags"
echo echo
echo "CXXFLAGS = \\" echo "CXXFLAGS = \\"
if [ -d include ] ; then
echo " -Iinclude \\"
fi
echo " -I../../include \\" echo " -I../../include \\"
if [ ! -z "$TESTSUITE" ] ; then if [ ! -z "$TESTSUITE" ] ; then
echo " \$(TESTSUITE_CXXFLAGS) \\" echo " \$(TESTSUITE_CXXFLAGS) \\"
echo " \$(EXTRA_FLAGS) \\" echo " \$(EXTRA_FLAGS) \\"
fi fi
echo " \$(CGAL_CXXFLAGS) \\" echo " \$(CGAL_CXXFLAGS) \\"
if [ -d include ] ; then
echo " -Iinclude \\"
fi
echo " \$(LONG_NAME_PROBLEM_CXXFLAGS)" echo " \$(LONG_NAME_PROBLEM_CXXFLAGS)"
# print linker flags
echo echo
header "linker flags" header "linker flags"
echo echo
@ -149,26 +164,43 @@ create_makefile()
else else
echo " \$(CGAL_WINDOW_LDFLAGS)" echo " \$(CGAL_WINDOW_LDFLAGS)"
fi fi
echo echo
header "target entries" header "target entries"
# print 'all' target
echo echo
printf "all: " printf "all: "
for file in `ls *.C 2>/dev/null | sort` ; do for file in `ls *.C 2>/dev/null | sort` ; do
# Add $file's executable to "all" target
# if $file contains a function "main()"
egrep '\bmain[ \t]*\(' $file >/dev/null 2>&1
if [[ $? == 0 ]]; then
printf "\\\\\n `basename $file .C`\$(EXE_EXT) " printf "\\\\\n `basename $file .C`\$(EXE_EXT) "
fi
done done
for file in `ls *.cpp 2>/dev/null | sort` ; do for file in `ls *.cpp 2>/dev/null | sort` ; do
# Add $file's executable to "all" target
# if $file contains a function "main()"
egrep '\bmain[ \t]*\(' $file >/dev/null 2>&1
if [[ $? == 0 ]]; then
printf "\\\\\n `basename $file .cpp`\$(EXE_EXT) " printf "\\\\\n `basename $file .cpp`\$(EXE_EXT) "
fi
done done
echo echo
# print rules for each .C and .cpp file
echo echo
for file in `ls *.C 2>/dev/null | sort` ; do for file in `ls *.C 2>/dev/null | sort` ; do
base=`basename $file .C` base=`basename $file .C`
create_makefile_entry $base create_makefile_entry_C $base
done done
for file in `ls *.cpp 2>/dev/null | sort` ; do for file in `ls *.cpp 2>/dev/null | sort` ; do
base=`basename $file .cpp` base=`basename $file .cpp`
create_makefile_entry_cpp $base create_makefile_entry_cpp $base
done done
# print 'clean' target
printf "clean: " printf "clean: "
for file in `ls *.C 2>/dev/null | sort` ; do for file in `ls *.C 2>/dev/null | sort` ; do
printf "\\\\\n `basename $file .C`.clean " printf "\\\\\n `basename $file .C`.clean "
@ -177,6 +209,8 @@ create_makefile()
printf "\\\\\n `basename $file .cpp`.clean " printf "\\\\\n `basename $file .cpp`.clean "
done done
printf "\n\n" printf "\n\n"
# print "suffix rules"
header "suffix rules" header "suffix rules"
echo echo
echo ".C\$(OBJ_EXT):" echo ".C\$(OBJ_EXT):"