mirror of https://github.com/CGAL/cgal
236 lines
6.2 KiB
Bash
Executable File
236 lines
6.2 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
# Copyright (c) 1999,2000,2002,2003,2004,2005,2006
|
|
# Utrecht University (The Netherlands),
|
|
# ETH Zurich (Switzerland), Freie Universitaet Berlin (Germany),
|
|
# INRIA Sophia-Antipolis (France), Martin-Luther-University Halle-Wittenberg
|
|
# (Germany), Max-Planck-Institute Saarbruecken (Germany), RISC Linz (Austria),
|
|
# and Tel-Aviv University (Israel). All rights reserved.
|
|
#
|
|
# This file is part of CGAL (www.cgal.org); you can redistribute it and/or
|
|
# modify it under the terms of the GNU Lesser General Public License as
|
|
# published by the Free Software Foundation; version 2.1 of the License.
|
|
# See the file LICENSE.LGPL distributed with CGAL.
|
|
#
|
|
# Licensees holding a valid commercial license may use this file in
|
|
# accordance with the commercial license agreement provided with the software.
|
|
#
|
|
# This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
|
|
# WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
|
|
#
|
|
# $URL$
|
|
# $Id$
|
|
#
|
|
# Author(s) : various
|
|
|
|
# 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 ..."
|