#!/bin/sh

# This scripts work as following:
# (1) cp current xf86site.def (it may be created by imake-4 ports) 
#       to ${WRKDIR}/xc/config/cf.
#     this means this ports use imake-4's config defaultly.
# (2) Generate temporal config for compiling.
#     Some configs, such as `ForceNormalLib', `FreeBSDBuildXprog', are
#     used for compiling this ports localy. so these configs will be generated
#     this scripts. these configs will be stored to `host.def' file.
#     but this host.def will never install. use local only.

ORIGDEF=$PREFIX/lib/X11/config/xf86site.def
DESTDEF=$WRKDIR/xc/config/cf/xf86site.def
ORIGHOSTDEF=$PREFIX/lib/X11/config/host.def
LOCALDEF=$WRKDIR/.config
HOSTDEF=$WRKDIR/xc/config/cf/host.def

configure () {
    # Use original host.def as initial config file
    rm -f $LOCALDEF
    grep -v '#define.*ProjectRoot' $ORIGHOSTDEF >> $LOCALDEF
    echo "#define ProjectRoot $PREFIX" >> $LOCALDEF

    # It's good for FreeBSD ports/packages system.
    echo "#define NothingOutsideProjectRoot YES" >> $LOCALDEF

    # Now, We can use this configuration.
    # Thanks, Trevor Johnson <trevor@jpj.net>
    echo "#define InstallXserverSetUID NO" >> $LOCALDEF

    # User Config.
    if [ X$HasSecureRPC != XDEFAULT -a X$HasSecureRPC != X ]; then
	echo "#define HasSecureRPC $HasSecureRPC" >> $LOCALDEF
    fi
    if [ X$HasPam != XDEFAULT -a X$HasPam != X ]; then
	echo "#define HasPam $HasPam" >> $LOCALDEF
    fi
    if [ X$ExtendedInputDevices = XDEFAULT -o X$ExtendedInputDevices = XYES ]; then
	echo "#define XInputDrivers mouse digitaledge dynapro elo2300 \
				elographics magellan \
				microtouch mutouch spaceorb summa \
				wacom void citron" >> $LOCALDEF
        echo "#define JoystickSupport YES" >> $LOCALDEF
    else
	echo "#define XInputDrivers mouse" >> $LOCALDEF	
    fi
    echo "#define BuildXF86DRI ${BuildXF86DRI}" >> $LOCALDEF
    echo "#define BuildXF86DRM NO" >> $LOCALDEF
    echo "#define HasGlide3 ${HasGlide3}" >> $LOCALDEF
    echo "#define Glide3IncDir glide3" >> $LOCALDEF

    # Matrox driver support
    echo "#define HaveMatroxHal $HaveMatroxHal" >> $LOCALDEF

    # disable some configs: there are not used this ports
    for i in \
	BuildFonts \
	Build75DpiFonts \
	Build100DpiFonts \
	BuildSpeedoFonts \
	BuildType1Fonts \
	BuildCIDFonts \
	BuildCyrillicFonts \
	XnestServer \
	BuildFontServer \
	XVirtualFramebufferServer \
	XprtServer \
	LibHeaders \
	LibInstall \
	ForceNormalLib \
	XTrueTypeInstallCConvHeaders
    do \
	echo "#define $i NO" >> $LOCALDEF
    done
    echo "#define BuildServer YES" >> $LOCALDEF
    echo "#define LibInstallBuild YES" >> $LOCALDEF
    echo "#define ModInstall YES" >> $LOCALDEF
    echo "#define XF86Server YES" >> $LOCALDEF
    echo "#define BuildServersOnly YES" >> $LOCALDEF
    echo "#define BuildXFree86ConfigTools YES" >> $LOCALDEF
    cat >> $LOCALDEF <<END
#ifndef XF86CardDrivers
#ifdef i386Architecture
#define XF86CardDrivers         mga glint nv tga s3 s3virge sis rendition \
                                neomagic i740 tdfx savage \
                                cirrus vmware tseng trident chips apm \
                                GlideDriver fbdev i128 \
                                ati AgpGartDrivers DevelDrivers ark cyrix \
				siliconmotion \
				vesa vga XF86OSCardDrivers XF86ExtraCardDrivers
#else
#ifdef AlphaArchitecture
#define XF86CardDrivers         mga tdfx glint s3 s3virge rendition tga \
				savage nv DevelDrivers siliconmotion vga \
				XF86OSCardDrivers XF86ExtraCardDrivers
#endif
#endif
#endif
END
    echo "#define BuildThreadStubLibrary YES" >> $LOCALDEF
    echo "#define FreeBSDBuildXxserv YES" >> $LOCALDEF

    # Check Wraphelp.c
    if [ $HasXdmAuth = DEFAULT ]; then
	HasXdmAuth=$(awk '/^#define.*HasXdmAuth/ {print $3}' $ORIGDEF|tail -1)
    fi

    cpwh=NO
    if [ $HasXdmAuth = YES ]; then
	WH=$WRKDIR/xc/lib/Xdmcp/Wraphelp.c
	if [ -f $WH ] ; then
	    cpwh=SOURCE
	elif [ -f $DISTDIR/xc/Wraphelp.c ] ; then
	    cpwh=$DISTDIR/xc/Wraphelp.c
	else
	    echo "==> You must fetch USA-legal Wraphelp.c manually"
	    echo "==> and put it to ${DISTDIR}/xc/."
	    exit 1
	fi
	if [ X$cpwh != XNO -a X$cpwh != XSOURCE ]; then
	    tr -d '\r' < $cpwh > $WH
	fi
    fi

    # Copy ORIGDEF to DESTDEF
    rm -f $DESTDEF
    grep -v '#define.*HasXdmAuth' $ORIGDEF >> $DESTDEF
    if [ $cpwh = NO ] ; then
	echo "#define HasXdmAuth NO" >> $DESTDEF
    else
	echo "#define HasXdmAuth YES" >> $DESTDEF
    fi

    # copy generated config to host.def
    cp -f $LOCALDEF $HOSTDEF
}

cp ${X11BASE}/lib/X11/config/version.def ${WRKSRC}/config/cf
configure
exit 0
