dnl Process this file with autoconf to produce a configure script

AC_INIT([vmkit],[0.0.1])
AC_PREREQ([2.59])
AC_CONFIG_SRCDIR([lib/Mvm/Main.cpp])


dnl **************************************************************************
dnl configure date, in version.cc.in
dnl **************************************************************************
configure_date=`date '+%Y-%m-%d %H:%M:%S'`
AC_SUBST([configure_date])

dnl **************************************************************************
dnl Initialize target_cpu, target_os etc ...
dnl **************************************************************************
AC_CANONICAL_TARGET

dnl **************************************************************************
dnl Add some vars
dnl **************************************************************************
AM_CONDITIONAL(ARCH_IS_PPC,   [test x"$target_cpu" = xpowerpc])
AM_CONDITIONAL(ARCH_IS_I686,  [test x"$target_cpu" = xi686])

case $host in
        *linux*) is_linux=true;;
        *) is_linux=false;;
esac
AM_CONDITIONAL(IS_LINUX,      [test x$is_linux = xtrue])

dnl **************************************************************************
dnl Initialize automake with a package version 
dnl **************************************************************************
AM_INIT_AUTOMAKE

dnl Use config.h instad of -D macros
AM_CONFIG_HEADER(config.h)

dnl **************************************************************************
dnl LLVM Installation Prefix 
dnl **************************************************************************
AC_ARG_WITH(llvm,
       [AS_HELP_STRING(--with-llvm=something,
           [LLVM installation  prefix (default is /usr/local/)])],
       [[llvmprefix=$withval]],
       [[ echo Using /usr/local/ as llvm installation prefix.
        	llvmprefix=/usr/local/
       ]]
)
LLVMDYLIB="`$llvmprefix/Release/bin/llvm-config --ldflags all` `$llvmprefix/Release/bin/llvm-config --libs all`"

AC_SUBST([llvmprefix])

dnl Force some compilation flags
CXXFLAGS="$CXXFLAGS -fsigned-char -felide-constructors -fno-keep-static-consts -D_REENTRANT -I$PWD/include -I$llvmprefix/include  -D__STDC_LIMIT_MACROS -rdynamic"
CFLAGS="$CFLAGS -D_REENTRANT"


dnl **************************************************************************
dnl Checks for programs.
dnl **************************************************************************
AC_PROG_CXX
AM_PROG_CC_C_O

dnl **************************************************************************
dnl check for lex and yacc or bison 
dnl **************************************************************************
AM_PROG_LEX
AC_PROG_YACC

dnl **************************************************************************
dnl check for as
dnl **************************************************************************
AM_PROG_AS

dnl **************************************************************************
dnl Checks for header files.
dnl **************************************************************************
AC_HEADER_STDC

dnl **************************************************************************
dnl Checks for header files.
dnl **************************************************************************
AC_HEADER_STDC

case $target_os in
  *linux*)
  dnl libiberty, libopcode and libbfd are part of binutils
  AC_CHECK_HEADER([bfd.h], [], \
    AC_MSG_ERROR([You need to install the binutils devel package (bfd.h).])
  )
  AC_CHECK_HEADER([dis-asm.h], [], \
    AC_MSG_ERROR([You need to install the binutils devel package (dis-asm.h).])
  )
  ;;
esac

AC_CHECK_HEADER([zlib.h], [], \
  AC_MSG_ERROR([You need to install the zlib devel package (zlib.h).])
)

dnl **************************************************************************
dnl Checks for libraries    
dnl **************************************************************************
case $target_os in
  *darwin*)
    DYLIB_EXTENSION="dylib"
    rdynamic=""
    ;;
  *linux*)
    AC_CHECK_LIB(iberty, xexit, [], \
      [AC_MSG_ERROR([You need to install the binutils package (iberty).])]
    )
    AC_CHECK_LIB(bfd, bfd_get_arch, [], \
      [AC_MSG_ERROR([You need to install the binutils package (bfd).])],
    -liberty
    )
    AC_CHECK_LIB(opcodes, disassembler, [], \
      [AC_MSG_ERROR([You need to install the binutils package (opcodes).])],
    -lbfd -liberty
    )
    
    rdynamic="-rdynamic"
    DYLIB_EXTENSION="so"
    AC_DEFINE([HAVE_DISASSEMBLER], [1], [Using libopcodes])

    ;;
  *) AC_MSG_ERROR([$target_os target is not supported.]);;
esac

AC_CHECK_LIB(z, inflate, [], \
  [AC_MSG_ERROR([You need to install the zlib package (z).])]
)

AC_SUBST([rdynamic])
AC_SUBST([LLVMDYLIB])
AC_SUBST([DYLIB_EXTENSION])

dnl **************************************************************************
dnl VVM thread type
dnl **************************************************************************
AC_ARG_WITH(thread,
       [AS_HELP_STRING(--with-thread=something,
           [Thread type ('common' or 'no')])],
       [thread=$withval],[thread=common]
)

AS_IF([test "x$thread" != "xno"],
  [AC_CHECK_HEADER([pthread.h],,
    [AC_MSG_WARN(phtread include NOT found)])
  AC_CHECK_LIB(pthread, pthread_create, [], 
     [AC_MSG_ERROR([pthread library not found])])
  ]
)

AM_CONDITIONAL([HAVE_PTHREAD], [test "x$thread" != "xno"])
if test "x$thread" = xcommon; then
  AC_DEFINE([HAVE_PTHREAD], [1], [Using pthread library])
fi

GCTHREAD_LIBS="$PWD/lib/Mvm/CommonThread/libuvm_common_thread.a"
AC_SUBST([GCTHREAD_LIBS])


dnl **************************************************************************
dnl Checks for typedefs, structures, and compiler characteristics.
dnl **************************************************************************
AC_C_CONST

dnl **************************************************************************
dnl
dnl **************************************************************************
AC_LIBTOOL_DLOPEN
AM_PROG_LIBTOOL


dnl **************************************************************************
dnl VVM GC type 
dnl **************************************************************************
AC_ARG_WITH(gc,
       [AS_HELP_STRING(--with-gc=something,
           [GC type ('single-mmap' 'multi-mmap' or 'boehm')])],
       [[gc=$withval]],
       [[ echo Using mmap2 as vvm gc type.
                gc=single-mmap
       ]]
)

dnl TODO find the libgc.a
if test "x$gc" = "xboehm";  then
  AC_CHECK_LIB(gccpp, GC_malloc, [], \
    [AC_MSG_ERROR([You need to install the boehm-gc package (gccpp).])]
  )
  AC_CHECK_HEADER([gc/gc.h], [], \
    AC_MSG_ERROR([You need to install the boehm-gc devel package (gc/gc.h).])
  )
  GC_LIBS="-lgccpp -gc $PWD/lib/Mvm/BoehmGC/libuvm_gc_boehm.a"
  CFLAGS="$CFLAGS -I$PWD/lib/Mvm/BoehmGC -DGC_THREADS"
  CXXFLAGS="$CXXFLAGS -I$PWD/lib/Mvm/BoehmGC -DGC_THREADS"
  AC_DEFINE([USE_GC_BOEHM], [1], [Using the boehm gc])
  case $target_os in
    *linux*)
      CFLAGS="-DGC_LINUX_THREADS"
      CXXFLAGS="$CXXFLAGS -DGC_LINUX_THREADS"
    ;;
  esac
else
  if test "x$gc" = "xmulti-mmap"; then
    CFLAGS="$CFLAGS -I$PWD/lib/Mvm/GCMmap2 -DWITH_TRACER -DMULTIPLE_GC"
    CXXFLAGS="$CXXFLAGS -I$PWD/lib/Mvm/GCMmap2 -DWITH_TRACER -DMULTIPLE_GC"
  fi
  GC_LIBS="$PWD/lib/Mvm/GCMmap2/libuvm_gc_mmap2.a \
           $PWD/lib/Mvm/Allocator/libuvm_alloc.a"
  CFLAGS="$CFLAGS -I$PWD/lib/Mvm/GCMmap2 -DWITH_TRACER"
  CXXFLAGS="$CXXFLAGS -I$PWD/lib/Mvm/GCMmap2 -DWITH_TRACER"
  AC_DEFINE([USE_GC_MMAP2], [1], [Using the gcmmap2])
fi

AC_SUBST([GC_LIBS])

AM_CONDITIONAL([GC_BOEHM], [test "x$gc" = "xboehm"])
AM_CONDITIONAL([GC_MULTI_MMAP], [test "x$gc" = "xmulti-mmap"])
AM_CONDITIONAL([GC_SINGLE_MMAP], [test "x$gc" = "xsingle-mmap"])

dnl **************************************************************************
dnl Virtual Machine type
dnl **************************************************************************
AC_ARG_WITH(vm-type,
       [AS_HELP_STRING(--with-vm-type=something,
           [VM type ('single' 'multi' or 'service')])],
       [[vmtype=$withval]],
       [[ echo Using single as vm type.
                vmtype=single
       ]]
)

if test "x$vmtype" = "xmulti";  then
  CFLAGS="$CFLAGS -DMULTIPLE_VM"
  CXXFLAGS="$CXXFLAGS -DMULTIPLE_VM"
else 
  if test "x$vmtype" = "xservice"; then
    CFLAGS="$CFLAGS -DMULTIPLE_VM -DSERVICE_GC -DMULTIPLE_GC -DSERVICE_VM -I$PWD/lib/Mvm/Allocator"
    CXXFLAGS="$CXXFLAGS -DMULTIPLE_VM -DSERVICE_GC -DMULTIPLE_GC -DSERVICE_VM -I$PWD/lib/Mvm/Allocator"
  fi
fi

AM_CONDITIONAL([SERVICE_BUILD], [test "x$vmtype" = "xservice"])
AM_CONDITIONAL([ISOLATE_BUILD], [test "x$vmtype" = "xmulti"])
  
dnl **************************************************************************
dnl GNU CLASSPATH version
dnl **************************************************************************
AC_ARG_WITH(gnu-classpath-version,
       [AS_HELP_STRING(--with-gnu-classpath-version=something,
           [GNU CLASSPATH VERSION (default is '0.97.1')])],
       [[gnuclasspathversion=$withval]],
       [[       echo Using '0.97.1' as GNU CLASSPATH version.    
                                gnuclasspathversion=0.97.1
       ]]
)
gnuclasspathversionuvm=`echo $gnuclasspathversion | $SED s/\\\./-/`
AC_SUBST([gnuclasspathversion])
AC_SUBST([gnuclasspathversionuvm])

dnl **************************************************************************
dnl GNU CLASSPATH installation prefix
dnl **************************************************************************
AC_ARG_WITH(gnu-classpath-local-prefix,
       [AS_HELP_STRING(--with-gnu-classpath-local-prefix=something,
           [GNU CLASSPATH local prefix (no default)])],
       [[gnuclasspathlocalprefix=$withval]],
       [[       echo Not using GNU CLASSPATH local prefix.    
                                gnuclasspathlocalprefix=''
       ]]
)

AC_ARG_WITH(gnu-classpath-installation-prefix,
       [AS_HELP_STRING(--with-gnu-classpath-installation-prefix=something,
           [GNU CLASSPATH installation prefix (default is '/usr/local/classpath')])],
       [[gnuclasspathinstallationprefix=$withval]],
       [[gnuclasspathinstallationprefix=/usr/local/classpath]]
)

if test "x${gnuclasspathlocalprefix}" = x; then
  echo Using ${gnuclasspathinstallationprefix} as GNU CLASSPATH installation prefix;
  classpathglibj=${gnuclasspathinstallationprefix}/share/classpath/glibj.zip;
  classpathlibs=${gnuclasspathinstallationprefix}/lib/classpath/;
  CFLAGS="$CFLAGS -I$gnuclasspathinstallationprefix/include"
  CXXFLAGS="$CXXFLAGS -I$gnuclasspathinstallationprefix/include"
else
  echo Using ${gnuclasspathlocalprefix} as GNU CLASSPATH local prefix;
  classpathglibj=${gnuclasspathlocalprefix}/lib/;
  classpathlibs=${gnuclasspathlocalprefix}/lib/;
  CFLAGS="$CFLAGS -I$gnuclasspathlocalprefix/include"
  CXXFLAGS="$CXXFLAGS -I$gnuclasspathlocalprefix/include"
fi


AC_SUBST([classpathglibj])
AC_SUBST([classpathlibs])

dnl **************************************************************************
dnl Local PNet directory
dnl **************************************************************************
AC_ARG_WITH(pnet-local-prefix,
       [AS_HELP_STRING(--with-pnet-local-prefix=something,
           [PNET local prefix (no default)])],
       [[pnetlocalprefix=$withval]],
       [[       echo Not using PNETlocal prefix.    
                                pnetlocalprefix=''
       ]]
)

AM_CONDITIONAL([WITH_N3], [test "x$pnetlocalprefix" != "x"])
if test "x$pnetlocalprefix" != x; then
  echo Using ${pnetlocalprefix} as PNET local prefix;
  AC_DEFINE([WITH_N3], [1], [Compiling N3])
fi

AC_SUBST([pnetlocalprefix])



AC_CONFIG_FILES([
  Makefile
  lib/N3/Makefile
  lib/N3/VMCore/Makefile
  lib/JnJVM/Makefile
  lib/JnJVM/Classpath/Makefile
  lib/JnJVM/VMCore/Makefile
  lib/JnJVM/LLVMRuntime/Makefile
  lib/JnJVM/Classpath/Classpath.h
  lib/Mvm/Makefile
  lib/Mvm/GCMmap2/Makefile
  lib/Mvm/BoehmGC/Makefile
  lib/Mvm/CommonThread/Makefile
  lib/Mvm/Allocator/Makefile
])
AC_OUTPUT
