#!/bin/sh
#
# Configures to build webCDwriter
#
# This file is part of webCDwriter - Network CD Writing.
#
# Copyright (C) 2000-2003 Jrg P. M. Haeger
#
# webCDwriter is free software. See the README for details.
#

configDir="/etc/CDWserver"
forPlugin="#"
forPluginRSA="#"
group=cdwriter
MAKE=make
prefix=""
user=cdwriter
webCDcreator=""

while [ -n "$1" ]; do
	case $1 in
	--debug)
		DEBUG=yes
		;;
	--group=?*)
		group=`echo $1 | sed "s:--group=::g"`
		;;
	--help)
		HELP=yes
		;;
	--nosCert=?*)
		forNetscape=""
		nosCert=`echo $1 | sed "s/--nosCert=//g"`
		nosCert=`echo $nosCert | sed "s/\#/\\\\\\\\\\\\\#/g"`
		webCDcreator="$webCDcreator 4netscape 4pluginRSA"
		;;
	--prefix=*)
		prefix=`echo $1 | sed "s:--prefix=::g"`
		;;
	--sunCert=?*)
		forPlugin=""
		sunCert=`echo $1 | sed "s/--sunCert=//g"`
		webCDcreator="$webCDcreator 4plugin"
		;;
	--user=?*)
		user=`echo $1 | sed "s:--user=::g"`
		;;
	*)
		echo $1: unknown argument
		HELP=yes
		;;
	esac
	shift
done

if [ "$HELP" = "yes" ]; then
	cat <<EOF
Usage: $0 [options]

--debug                compile with -g and without -O2

--group=cdwriter       default group of CDWserver

--prefix=DIR           base directory of the installation

--nosCert=certificate  Netscape Object Signing Certificate
                       (required to sign the webCDcreator for Netscape 4
                       and the RSA version for IE)

--sunCert=certificate  certificate for the keytool from Sun
                       (required to sign the webCDcreator for Java Plugin)

--user=cdwriter        default user of CDWserver

EOF
	exit 1
fi


echo
echo "Configuring webCDwriter"
echo

echo -n "Checking for a working javac..."
cat > Test0.java << EOF
class Test0 {
	static int foo() {
		return 0;
	}
}
EOF
cat > Test.java << EOF
class Test {
	public static void main(String[] args) {
		Test0.foo();
		new java.awt.Button();
		new javax.swing.JButton();
		javax.jnlp.ServiceManager.getServiceNames();
	}
}
EOF
javac Test.java 2> /dev/null \
	&& webCDcreator="webCDcreator.jar $webCDcreator" \
	&& echo " OK -> will build webCDcreator.jar" \
	|| echo " not found -> will use precompiled webCDcreator.jar"
rm -f Test0.class Test0.java Test.class Test.java

initDir="$prefix/etc/init.d"
echo -n "$initDir"...
if [ -d $initDir ]; then
	echo " yes"
else
	echo " no"
	initDir2="$prefix/etc/rc.d/init.d"
	echo -n "$initDir2"...
	if [ -d $initDir2 ]; then
		echo " yes"
		initDir=$initDir2
	else
		echo " no -> will create $initDir"
	fi
fi

echo
echo "Creating CDWserver/config.h"
echo "const char defaultGroup[] = \"$group\";" > CDWserver/config.h
echo "const char defaultUser[] = \"$user\";" >> CDWserver/config.h
echo "const char prefix[] = \"$prefix\";" >> CDWserver/config.h

case `uname -s` in
FreeBSD)
	cxxflags="-O -DFreeBSD -D_REENTRANT"
	lflags="-lcrypt -lc_r"
	MAKE=gmake
	;;
Linux)
	cxxflags="-D_REENTRANT"
	if [ "$DEBUG" = "yes" ]; then
		cxxflags="-g $cxxflags"
	else
		cxxflags="-O2 $cxxflags"
	fi
	lflags="-lcrypt -lpthread"
	;;
*)
	cxxflags="-O -D_REENTRANT"
	lflags="-lcrypt -lpthread"
	;;
esac


echo "Creating CDWserver/Makefile"
cat CDWserver/Makefile.in \
	| sed s/@CXXFLAGS@/"$cxxflags"/g \
	| sed s/@GROUP@/$group/g \
	| sed s/@LFLAGS@/"$lflags"/g \
	| sed s/Makefile.in/"Makefile (automatically generated by the configure script - dont edit!)"/g \
	| sed s/@USER@/$user/g \
> CDWserver/Makefile


cd rcdrecord
./configure --dir=rcdrecord/ --prefix=$prefix/usr
cd ..


echo "Creating webCDcreator/Makefile"
if [ -f webCDcreator/4plugin/webCDcreator.jar ]
then
	forPlugin=""
fi

if [ -f webCDcreator/4pluginRSA/webCDcreator.jar ]
then
	forPluginRSA=""
fi

cat webCDcreator/Makefile.in \
	| sed s/@nosCert@/"$nosCert"/g \
	| sed s/@sunCert@/"$sunCert"/g \
	| sed s/@all@/"$webCDcreator"/g \
	| sed s/@4pi@/"$forPlugin"/g \
	| sed s/@4ns@/"$forPluginRSA"/g \
	> webCDcreator/Makefile


echo "Creating config"

INSTALL="install"
install -b README /tmp/README.CDWserver 2> /dev/null \
	&& INSTALL="$INSTALL -b"
rm -f /tmp/README.CDWserver
install -p README /tmp/README.CDWserver 2> /dev/null \
	&& INSTALL="$INSTALL -p"
rm -f /tmp/README.CDWserver

cat > config << EOF

# compiler and linker options
CXX=g++

# install command and args
GROUP=$group
INSTALL=$INSTALL

# directories
APPLET=$prefix/$configDir/webCDcreator
INITDIR=$initDir
PREFIX=$prefix

EOF

cat > Makefile2 << EOF
all:
	@echo
	@echo Now you can start CDWserver by
	@echo '   $initDir/CDWserver start'
	@echo Then visit
	@echo '   http://`hostname`:12411'
	@echo or try rcdrecord or files2cd on the command line.
	@echo
EOF

echo
echo "webCDwriter is now configured for building. Just run $MAKE."
echo
