mirror of https://github.com/CGAL/cgal
213 lines
5.3 KiB
Bash
Executable File
213 lines
5.3 KiB
Bash
Executable File
#!/bin/sh
|
|
#
|
|
# This script creates a CGAL makefile with entries for all .C files in the
|
|
# current directory.
|
|
#
|
|
# Usage: create_makefile [-options] [outputfile]
|
|
#
|
|
# -d create a default CGAL makefile
|
|
# -t create a makefile for the test suite
|
|
# -w create a makefile with flags for LEDA windows
|
|
# -g create a makefile with flags for GEOWIN
|
|
# -q create a makefile with support for QT
|
|
|
|
|
|
#VERSION=2.0
|
|
|
|
|
|
header()
|
|
{
|
|
echo "#---------------------------------------------------------------------#"
|
|
echo "# $1"
|
|
echo "#---------------------------------------------------------------------#"
|
|
}
|
|
|
|
|
|
create_makefile_entry_cpp()
|
|
{
|
|
# local CFILE MOC_FROM MOCFILE
|
|
CFILE=$1.cpp
|
|
MOCFILE=""
|
|
if [ -n "$QT" ]; then
|
|
if MOC_FROM=`awk 'BEGIN{ FS=":"; COUNT=0 } \
|
|
/\/\/ *moc_source_file *:/ {print $2; COUNT++} \
|
|
END{ exit COUNT==0 }' $CFILE`; then
|
|
MOCFILE=$1.moc
|
|
echo "$MOCFILE: $MOC_FROM"
|
|
echo " \$(QT_MOC) -o $MOCFILE $MOC_FROM"
|
|
echo
|
|
echo "$1\$(OBJ_EXT): $MOCFILE"
|
|
echo
|
|
fi
|
|
fi
|
|
# if grep 'main *(' $CFILE > /dev/null; then
|
|
echo "$1\$(OBJ_EXT): $1.cpp"
|
|
echo " \$(CGAL_CXX) \$(CXXFLAGS) \$(OBJ_OPT) $1.cpp"
|
|
|
|
echo "$1\$(EXE_EXT): $1\$(OBJ_EXT)"
|
|
echo " \$(CGAL_CXX) \$(LIBPATH) \$(EXE_OPT)$1 $1\$(OBJ_EXT) \$(LDFLAGS)"
|
|
echo
|
|
# fi;
|
|
}
|
|
|
|
create_makefile_entry()
|
|
{
|
|
# local CFILE MOC_FROM MOCFILE
|
|
CFILE=$1.C
|
|
MOCFILE=""
|
|
if [ -n "$QT" ]; then
|
|
if MOC_FROM=`awk 'BEGIN{ FS=":"; COUNT=0 } \
|
|
/\/\/ *moc_source_file *:/ {print $2; COUNT++} \
|
|
END{ if (COUNT==0) exit 1; else exit 0 }' $CFILE`; then
|
|
MOCFILE=$1.moc
|
|
echo "$MOCFILE: $MOC_FROM"
|
|
echo " \$(QT_MOC) -o $MOCFILE $MOC_FROM"
|
|
echo
|
|
echo "$1\$(OBJ_EXT): $MOCFILE"
|
|
echo
|
|
fi
|
|
fi
|
|
# if grep 'main *(' $CFILE > /dev/null; then
|
|
echo "$1\$(EXE_EXT): $1\$(OBJ_EXT)"
|
|
echo " \$(CGAL_CXX) \$(LIBPATH) \$(EXE_OPT)$1 $1\$(OBJ_EXT) \$(LDFLAGS)"
|
|
echo
|
|
# fi;
|
|
}
|
|
|
|
|
|
create_makefile()
|
|
{
|
|
echo "# Created by the script create_makefile"
|
|
echo "# This is the makefile for compiling a CGAL application."
|
|
echo
|
|
header "include platform specific settings"
|
|
echo "# Choose the right include file from the <cgalroot>/make directory."
|
|
echo
|
|
echo "# CGAL_MAKEFILE = ENTER_YOUR_INCLUDE_MAKEFILE_HERE"
|
|
echo "include \$(CGAL_MAKEFILE)"
|
|
echo
|
|
header "compiler flags"
|
|
echo
|
|
echo "CXXFLAGS = \\"
|
|
echo " -I../../include \\"
|
|
if [ ! -z "$TESTSUITE" ] ; then
|
|
echo " \$(TESTSUITE_CXXFLAGS) \\"
|
|
echo " \$(EXTRA_FLAGS) \\"
|
|
fi
|
|
echo " \$(CGAL_CXXFLAGS) \\"
|
|
if [ -d include ] ; then
|
|
echo " -Iinclude \\"
|
|
fi
|
|
echo " \$(LONG_NAME_PROBLEM_CXXFLAGS)"
|
|
echo
|
|
header "linker flags"
|
|
echo
|
|
echo "LIBPATH = \\"
|
|
if [ ! -z "$TESTSUITE" ] ; then
|
|
echo " \$(TESTSUITE_LIBPATH) \\"
|
|
fi
|
|
if [ -z "$LEDAWINDOWS" ] ; then
|
|
echo " \$(CGAL_LIBPATH)"
|
|
else
|
|
echo " \$(CGAL_WINDOW_LIBPATH)"
|
|
fi
|
|
echo
|
|
echo "LDFLAGS = \\"
|
|
if [ ! -z "$TESTSUITE" ] ; then
|
|
echo " \$(TESTSUITE_LDFLAGS) \\"
|
|
fi
|
|
echo " \$(LONG_NAME_PROBLEM_LDFLAGS) \\"
|
|
if [ -n "$QT" ] ; then
|
|
echo " \$(CGAL_QT_LDFLAGS)"
|
|
elif [ -n "$GEOWIN" ] ; then
|
|
echo " \$(CGAL_GEOWIN_LDFLAGS)"
|
|
elif [ -z "$LEDAWINDOWS" ] ; then
|
|
echo " \$(CGAL_LDFLAGS)"
|
|
else
|
|
echo " \$(CGAL_WINDOW_LDFLAGS)"
|
|
fi
|
|
echo
|
|
header "target entries"
|
|
echo
|
|
printf "all: "
|
|
for file in `ls *.C 2>/dev/null | sort` ; do
|
|
printf "\\\\\n `basename $file .C`\$(EXE_EXT) "
|
|
done
|
|
for file in `ls *.cpp 2>/dev/null | sort` ; do
|
|
printf "\\\\\n `basename $file .cpp`\$(EXE_EXT) "
|
|
done
|
|
echo
|
|
echo
|
|
for file in `ls *.C 2>/dev/null | sort` ; do
|
|
base=`basename $file .C`
|
|
create_makefile_entry $base
|
|
done
|
|
for file in `ls *.cpp 2>/dev/null | sort` ; do
|
|
base=`basename $file .cpp`
|
|
create_makefile_entry_cpp $base
|
|
done
|
|
printf "clean: "
|
|
for file in `ls *.C 2>/dev/null | sort` ; do
|
|
printf "\\\\\n `basename $file .C`.clean "
|
|
done
|
|
for file in `ls *.cpp 2>/dev/null | sort` ; do
|
|
printf "\\\\\n `basename $file .cpp`.clean "
|
|
done
|
|
printf "\n\n"
|
|
header "suffix rules"
|
|
echo
|
|
echo ".C\$(OBJ_EXT):"
|
|
echo " \$(CGAL_CXX) \$(CXXFLAGS) \$(OBJ_OPT) \$<"
|
|
echo
|
|
}
|
|
|
|
|
|
usage()
|
|
{
|
|
echo "Usage: create_makefile [-options] [outputfile]"
|
|
echo
|
|
echo "-d create a default CGAL makefile"
|
|
echo "-t create a makefile for the test suite"
|
|
echo "-w create a makefile with flags for LEDA windows"
|
|
echo "-g create a makefile with flags for GEOWIN"
|
|
echo "-q create a makefile with flags for QT"
|
|
}
|
|
|
|
|
|
case $# in
|
|
0) usage
|
|
exit 1
|
|
esac
|
|
|
|
|
|
for i do
|
|
case $i in
|
|
-d) ;;
|
|
-t) TESTSUITE='y';;
|
|
-w) LEDAWINDOWS='y';;
|
|
-g) GEOWIN='y';;
|
|
-q) QT='y';;
|
|
-*) usage
|
|
exit 1;;
|
|
*) if [ -z "$OUTPUTFILE" ] ; then
|
|
OUTPUTFILE=$i
|
|
else
|
|
usage
|
|
exit 1
|
|
fi;;
|
|
esac
|
|
done
|
|
|
|
|
|
if [ -z "$OUTPUTFILE" ] ; then
|
|
OUTPUTFILE=makefile
|
|
fi
|
|
|
|
|
|
if [ -f ${OUTPUTFILE} ] ; then
|
|
echo "moving $OUTPUTFILE to ${OUTPUTFILE}.bak ..."
|
|
mv -f $OUTPUTFILE ${OUTPUTFILE}.bak
|
|
fi
|
|
create_makefile > $OUTPUTFILE
|
|
echo "created $OUTPUTFILE ..."
|