#!/bin/sh
#
# $Id: bmake,v 1.5 2003/11/25 20:10:06 sirdude Exp $
#
# ***** BEGIN GPL/BL DUAL LICENSE BLOCK *****
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version. The Blender
# Foundation also sells licenses for use in proprietary software under
# the Blender License.  See http://www.blender.org/BL/ for information
# about this.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software Foundation,
# Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
#
# The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
# All rights reserved.
#
# The Original Code is: all of this file.
#
# Contributor(s): none yet.
#
# ***** END GPL/BL DUAL LICENSE BLOCK *****

# detect the system

UNAME=`uname`
EXT="so";
if ( test "WIN32" = "$TARGET" ) then
        CC="gcc";
        CFLAGS="-funsigned-char -O2";

        LD="ld";
        LDFLAGS="-Bshareable -lm";
elif ( test $UNAME = "IRIX64" -o $UNAME = "IRIX" ) then
	CC="cc";
	CFLAGS="-KPIC -O2 -mips3";

	LD="ld";
	LDFLAGS="-shared -U";	
elif ( test $UNAME = "FreeBSD" ) then
	CC="gcc";
	CFLAGS="-fPIC -funsigned-char -O2";

	LD="ld";
	LDFLAGS="-Bshareable";
elif ( test $UNAME = "OpenBSD" ) then
	CC="gcc";
	CFLAGS="-fPIC -funsigned-char -O2";

	LD="ld";
	LDFLAGS="-Bshareable";
elif ( test $UNAME = "Linux" ) then
	CC="gcc";
	CFLAGS="-fPIC -funsigned-char -O2";

	LD="ld";
	LDFLAGS="-Bshareable";
elif ( test $UNAME = "SunOS" ) then
	CC="cc";
	CFLAGS="-O";

	LD="ld";
	LDFLAGS="-r";
elif ( test $UNAME = "Darwin" ) then
        CC="cc";
        CFLAGS="-fPIC -funsigned-char -O2 -fno-common";
        LD="cc";
        LDFLAGS="-flat_namespace -bundle -bundle_loader ../../blender.app/Contents/MacOS/blender -ldl -lm";
        EXT="so";
fi

if ( test "$#" = "1" ) then 
	if ( test -f $1 ) then
		BASE_FILE=`echo $1 | sed -e "1 s/\.c//g"`;
	else 
		BASE_FILE=$1;
	fi

	CFILE="$BASE_FILE.c"
	OFILE="$BASE_FILE.o"
	SOFILE="$BASE_FILE.$EXT"
else 
	if ( test -f $1$2 ) then
		BASE_FILE=`echo $2 | sed -e "1 s/\.c//g"`;
	else 
		BASE_FILE=$2;
	fi

	CFILE="$1$BASE_FILE.c"
        if (test "$TARGET" = "WIN32" ) then
                DLLFILE="$BASE_FILE.dll";
        fi
	OFILE="$BASE_FILE.o"
	SOFILE="$BASE_FILE.$EXT"
fi

INCLUDES=
if ( test -f plugin.h ) then
	INCLUDES=-I.;
elif ( test -f "include/plugin.h" ) then
	INCLUDES=-Iinclude/
elif ( test -f "../plugin.h" ) then
	INCLUDES=-I..;
elif ( test -f "../include/plugin.h" ) then
	INCLUDES=-I../include
else 
	echo "Couldn't find plugin.h";
	exit;
fi

LIBM=`fgrep "#include <math.h>" $CFILE`
LIBC=`fgrep "#include <std" $CFILE`

LIBS=

if ( test -n "$LIBM" ) then
	LIBS="$LIBS -lm"; 
fi
if ( test -n "$LIBC" ) then 
	LIBS="$LIBS -lc"; 
fi

echo "$CC $CFLAGS -c $CFILE $INCLUDES"
$CC $CFLAGS -c $CFILE $INCLUDES

if ( test "$?" != "0") then 
	echo "Compile error"; 
	exit;
fi

echo "$LD $LDFLAGS $OFILE -o $SOFILE $LIBS"
$LD $LDFLAGS $OFILE -o $SOFILE $LIBS

if ( test "$?" != "0") then 
	echo "Link error"; 
	exit;
fi
