#######################################################################
#
#  Copyright (C) 2006 Novell, Inc.
#
#  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.
#
#  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., 675 Mass Ave, Cambridge, MA 02139, USA.
#
#
#######################################################################

AC_INIT(CASA_auth_token_svc, 1.7.1,,CASA_auth_token_svc)
AC_CONFIG_SRCDIR(autogen.sh)
AC_CANONICAL_SYSTEM
AM_INIT_AUTOMAKE(tar-pax)

RELEASE=`date +%Y%m%d_%H%M`
AC_SUBST(RELEASE)
AM_MAINTAINER_MODE

#
# Check for a valid C# compiler
#
#AC_CHECK_PROG(CSC, csc, csc)
#test -z "$CSC" && AC_CHECK_PROG(CSC, mcs, mcs)
#test -z "$CSC" && AC_MSG_ERROR([no acceptable C Sharp compiler found in \$PATH])

#
# Check for valid C# compiler in linux
#
case $host_os in
    cygwin*)
    ;;
    *)
        AC_CHECK_PROG(CSC, csc, csc)
	test -z "$CSC" && AC_CHECK_PROG(CSC, mcs, mcs)
	test -z "$CSC" && AC_MSG_ERROR([no acceptable C Sharp compiler found in \$PATH])

    ;;
esac

case $CSC in
    #
    # Mono-specific configuration
    #
    mcs)
        CSC_EXEFLAG=/target:exe
        CSC_LIBFLAG=/target:library
        CSC_EXEFLAG=/target:exe
        CSC_WINEXEFLAG=/target:winexe
        CSCFLAGS='/d:MONO /warn:4 /d:TRACE -d:LINUX'
        CSCFLAGS_DEBUG="/debug+ /d:DEBUG"
        CSCFLAGS_OPTIMIZE="/optimize+"
        MONO=mono
        MONO_DEBUG='mono --debug'
        MONO_PATH=
        SYSTEM_XML='System.Xml.dll'
    ;;
    #
    # .NET-specific configuration
    #
    csc)
        CSC_EXEFLAG=/target:exe
        CSC_LIBFLAG=/target:library
        CSC_EXEFLAG=/target:exe
        CSC_WINEXEFLAG=/target:winexe
        CSCFLAGS='/d:DOTNET /warn:4 /d:TRACE /nologo'
        CSCFLAGS_DEBUG="/debug+ /d:DEBUG"
        CSCFLAGS_OPTIMIZE="/optimize+"
        MONO=
        MONO_DEBUG=
        MONO_PATH=
        SYSTEM_XML='System.XML.dll'
    ;;
esac

AC_SUBST(CSC)
AC_SUBST(CSC_EXEFLAG)
AC_SUBST(CSC_LIBFLAG)
AC_SUBST(CSC_WINEXEFLAG)
AC_SUBST(CSCFLAGS)
AC_SUBST(CSCFLAGS_DEBUG)
AC_SUBST(MONO)
AC_SUBST(MONO_PATH)
AC_SUBST(SYSTEM_XML)

SRCDIR='$(top_srcdir)'
DOCDIR="$SRCDIR/doc"
TOOLDIR='$(top_srcdir)/tools'
AC_SUBST(SRCDIR)
AC_SUBST(DOCDIR)
AC_SUBST(TOOLDIR)
EMPTY=
SPACE='$(EMPTY) $(EMPTY)'

AC_SUBST(EMPTY)
AC_SUBST(SPACE)

#
# Check for operating system and set TARGET_OS 
#
case $host_os in
    cygwin*)
        TARGET_OS='windows'
    ;;
    *)
	TARGET_OS='linux'
    ;;
esac

AC_SUBST(TARGET_OS)
AM_CONDITIONAL(LINUX, test "$TARGET_OS" = "linux")
AM_CONDITIONAL(WINDOWS, test "$TARGET_OS" = "windows")

#
# Check for architecture and set TARGET_ARCH
# ia64 needs to be treated as non64.

case $target_cpu in
    x86_64|p*pc64|s390x)
        LIB=lib64
    ;;
    *ia64|*)
        LIB=lib
    ;;
esac

AC_SUBST(LIB)
AM_CONDITIONAL(LIB64, test "$LIB" = lib64)

#
#
# Set platform-specific variables
#
case $TARGET_OS in
    #
    # Linux-specific configuration
    #
    linux)
        #
        # Set variables
        #
        COMMON_CLEAN_FILES=''
        ICON_EXT='.ico'
        ICON_FLAG='/resource:'
        PLATFORM_SUBDIRS=$LINUX_SUBDIRS
        SEP='/'
	LINK=gcc
    ;;
    #
    # Windows-specific configuration
    #
    windows)
        COMMON_CLEAN_FILES='*.suo */*.suo *.csproj.user */*.csproj.user bin obj */bin */obj *.xml */*.xml *.pdb */*.pdb'
        ICON_EXT='.ico'
        ICON_FLAG='/win32icon:'
        PLATFORM_SUBDIRS=$WINDOWS_SUBDIRS
        SEP='$(EMPTY)\\$(EMPTY)'
	LINK=link.exe
    ;;
esac
AC_SUBST(COMMON_CLEAN_FILES)
AC_SUBST(ICON_EXT)
AC_SUBST(ICON_FLAG)
AC_SUBST(PLATFORM_SUBDIRS)
AC_SUBST(SEP)
AC_SUBST(LINK)

#
# Run standard macros
#
AM_PROG_CC_STDC
AC_PROG_INSTALL
AC_HEADER_STDC

#######
#
# set CFLAGS
#
case $host_os in
   linux*)
    CFLAGS="$CFLAGS"
   ;;
   cygwin*)
   CC=cl.exe
   CFLAGS="-D WIN32 -D SSCS_WIN32_PLAT_F -D N_PLAT_CLIENT -MT -Ox"
   ;;
esac

#
# Handle --enable-debug
#
AC_ARG_ENABLE(debug, [
  --enable-debug          configure the Makefiles to build in DEBUG mode],
    [case "${enableval}" in
        yes) enable_debug=true ;;
        no)  enable_debug=false ;;
        *) AC_MSG_ERROR(bad value ${enableval} for --enable-debug) ;;
    esac],[enable_debug=false])
AM_CONDITIONAL(DEBUG, test x$enable_debug = xtrue)
if test "$enable_debug" = "true"
then
  # Build debug version.
 # CFLAGS="$CFLAGS_DEBUG $CFLAGS -DDBG -DDEBUG"
  CFLAGS="$CFLAGS_DEBUG $CFLAGS -g -DDBG -DDEBUG \
-fPIC -DPIC -DSSCS_LINUX_PLAT_F -O2 -fmessage-length=0 -Wall \
-D_REENTRANT -DALIGNMENT -DN_PLAT_UNIX \
-DUNIX -DLINUX -DIAPX38"
  CSCFLAGS="$CSCFLAGS_DEBUG $CSCFLAGS"
  CXXFLAGS="$CXXFLAGS_DEBUG $CXXFLAGS"
  DEVENV_CONFIGURATION=Debug
  MONO=$MONO_DEBUG
else
  # Build optimized version.
  CFLAGS="$CFLAGS_OPTIMIZE $CFLAGS -g -fPIC -DPIC \
-DSSCS_LINUX_PLAT_F -O2 -fmessage-length=0 -Wall \
-D_REENTRANT -DALIGNMENT -DN_PLAT_UNIX \
-DUNIX -DLINUX -DIAPX38"
  CSCFLAGS="$CSCFLAGS_OPTIMIZE $CSCFLAGS"
  CXXFLAGS="$CXXFLAGS_OPTIMIZE $CXXFLAGS"
  DEVENV_CONFIGURATION=Release
fi
AC_SUBST(CSCFLAGS)
AC_SUBST(DEVENV_CONFIGURATION)

##comment out due to build failure
# Check for GCC version to add fstack-protector flag
#
#GCC_VER="`gcc -dumpversion`"
#case "$GCC_VER" in
#        3*)
#	;;
#        4*)
#        CFLAGS="$CFLAGS -fstack-protector"
#	;;
#        *)
#        ;;
#esac
                                                                                                              
AC_SUBST(GCC_VER)

#
# Configure PKG_CONFIG
#
AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
if test "x$PKG_CONFIG" = "xno"; then
	AC_MSG_ERROR([You need to install pkg-config])
fi

#
# Configure files
#
AC_OUTPUT([
Makefile
package/Makefile
package/linux/Makefile
package/linux/CASA_auth_token_svc.spec
package/linux/CASA_auth_token_svc_4zen.spec
package/windows/Makefile
package/windows/AtsConfigurator/Makefile
package/windows/AtsConfigurator/src/Makefile
package/windows/AtsConfigurator/manifest/Makefile
package/windows/server-java_msi/Makefile
Svc/Makefile
Svc/external/Makefile
Svc/external/xmlsec/Makefile
Svc/external/xmlsec/xml-security-1_4_0/Makefile
Svc/external/xmlsec/xml-security-1_4_0/libs/Makefile
Svc/external/log4j/Makefile
Svc/external/log4j/logging-log4j-1.2.14/Makefile
Svc/external/log4j/logging-log4j-1.2.14/dist/Makefile
Svc/external/log4j/logging-log4j-1.2.14/dist/lib/Makefile
Svc/src/Makefile
Svc/src/com/Makefile
Svc/src/com/novell/Makefile
Svc/src/com/novell/casa/Makefile
Svc/src/com/novell/casa/authtoksvc/Makefile
Svc/tomcat5/Makefile
Svc/tomcat5/conf/Makefile
Svc/tomcat5/conf/Catalina/Makefile
Svc/tomcat5/conf/Catalina/localhost/Makefile
Svc/tomcat5/conf/linux/Makefile
Svc/tomcat5/conf/linux/zen/Makefile
Svc/tomcat5/conf/windows/Makefile
Svc/tomcat6/Makefile
Svc/tomcat6/conf/Makefile
Svc/tomcat6/conf/linux/Makefile
Svc/tomcat6/conf/windows/Makefile
Svc/linux/Makefile
Svc/templates/Makefile
Svc/templates/windows/Makefile
Svc/manifest/Makefile
Svc/windows/Makefile
Jaas/Makefile
Jaas/src/Makefile
Jaas/src/com/Makefile
Jaas/src/com/novell/Makefile
Jaas/src/com/novell/casa/Makefile
Jaas/src/com/novell/casa/jaas/Makefile
Jaas/src/com/novell/casa/jaas/sample/Makefile
Jaas/linux/Makefile
Jaas/windows/Makefile
])

