summaryrefslogblamecommitdiff
path: root/configure.ac
blob: 4936c3a1f8374094d808abc05937e6f0088f6971 (plain) (tree)




















































                                                                                                                                                                                 


























                               














                                    

                       
                     











                             













                                  
















                                        
                              





























                                                                         

                                      




                        





                                                        


     


                                                                                       






                                                                  
                            
                           
 
 












                                                                            

















                                            
          







                   

                                                                                                                             

  







                                                        









                                                      

                  








                                        

              















                                                      
              







                                                   

                            
















                                   
                                                 



                                     
 


                           

                                                                    










                                       
                                                              
                                                                                                                                                            







                                                    
                               













                                     

                            
                  
 
                                   




































































































                                                                                                                                                                                                           
















                                                                                       















                                                                                                                                                                      
                       
 
                        







                                         
















                                                                              
                                          












                                                                       



          



                                                                                

                                                                        






























































                                                                                                                                   





                                                            












                                                                                










                                                      
                           
























                                                                                                             
                    


























                                                                                              
                         
 
                                       
 




                                                     
                                                            
 
                                     


                                                      

                                


























































                                                                                                               

                


        



                                                
                           

                  
 
                                   
























































































                                                                                                         
                       
 
                        







                                         




























                                                                             
                                                                             









                                                                            
                                                                                  


















































































                                                                                        
                                                                     







































                                                                                  
                                     
 

              




                                                           



                                                            
                                                                      


                                                               
                                                                         


        
                                                    
 
                           


                                       
                    
 
                         
 
                                       
























                                                                             

                                                           
                                     








                                                      

                                

                      
                                                                                 




                     
               
 




















                                               



                                                    






































                                                                                  

















                                       

                 

            
            

                            
                          

                     
                    

                          
                         
                        

                     
                     
                          
                    
                   











                                           

                       
                      
                     
             



          






















                                                                               



















                                                                  




                                                                              













                                                        

                                         
    
    












                                                                              
  









                                                                              
    








                                                                                     
m4_define([v_maj], [1])
m4_define([v_min], [7])
m4_define([v_mic], [99])

m4_define([v_rev], m4_esyscmd([(svnversion "${SVN_REPO_PATH:-.}" | grep -v '\(export\|Unversioned directory\)' || echo 0) | awk -F : '{printf("%s\n", $1);}' | tr -d ' :MSP\n']))
m4_if(v_rev, [0], [m4_define([v_rev], m4_esyscmd([git log 2> /dev/null | (grep -m1 git-svn-id || echo 0) | sed -e 's/.*@\([0-9]*\).*/\1/' | tr -d '\n']))])

#### FIXME: i am sure that we can do some m4 to automagically do the stuff below for release and snapshots

##--   When released, remove the dnl on the below line
dnl m4_undefine([v_rev])

##--   When doing snapshots - change soname. remove dnl on below line
dnl m4_define([relname], [ver-pre-svn-07])
dnl m4_define([v_rel], [-release relname])

m4_ifdef([v_rev], [m4_define([efl_version], [v_maj.v_min.v_mic.v_rev])], [m4_define([efl_version], [v_maj.v_min.v_mic])])

m4_define([lt_cur], m4_eval(v_maj + v_min))
m4_define([lt_rev], v_mic)
m4_define([lt_age], v_min)

AC_INIT([efl], [efl_version], [enlightenment-devel@lists.sourceforge.net])
AC_PREREQ([2.59])
AC_CONFIG_SRCDIR([configure.ac])
AC_CONFIG_MACRO_DIR([m4])

AC_CONFIG_HEADERS([config.h])
AH_TOP([
#ifndef EFL_CONFIG_H__
#define EFL_CONFIG_H__
])
AH_BOTTOM([
#endif /* EFL_CONFIG_H__ */
])

AC_GNU_SOURCE
AC_SYS_LARGEFILE

AM_INIT_AUTOMAKE([1.6 dist-bzip2])
m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])

m4_ifdef([v_rev], , [m4_define([v_rev], [0])])
AC_DEFINE_UNQUOTED([VMAJ], [v_maj], [Major version])
AC_DEFINE_UNQUOTED([VMIN], [v_min], [Minor version])
AC_DEFINE_UNQUOTED([VMIC], [v_mic], [Micro version])
AC_DEFINE_UNQUOTED([VREV], [v_rev], [Revison])
VMAJ=v_maj
AC_SUBST([VMAJ])


#### Default values

want_evas="yes"
want_ecore="yes"
want_embryo="yes"
want_eio="yes"
want_edje="yes"
want_efreet="yes"
want_e_dbus="yes"
want_eeze="yes"
want_emotion="yes"
want_ethumb="yes"
want_elementary="yes"

requirements_libs_evil=""
requirements_libs_eina=""
requirements_libs_eet=""
requirements_libs_evas=""
requirements_libs_ecore=""
requirements_libs_embryo=""
requirements_libs_eio=""
requirements_libs_edje=""
requirements_libs_efreet=""
requirements_libs_e_dbus=""
requirements_libs_eeze=""
requirements_libs_emotion=""
requirements_libs_ethumb=""
requirements_libs_elementary=""

requirements_libs_deps_evil=""
requirements_libs_deps_eina=""
requirements_libs_deps_eet=""
requirements_libs_deps_evas=""
requirements_libs_deps_ecore=""
requirements_libs_deps_embryo=""
requirements_libs_deps_eio=""
requirements_libs_deps_edje=""
requirements_libs_deps_efreet=""
requirements_libs_deps_e_dbus=""
requirements_libs_deps_eeze=""
requirements_libs_deps_emotion=""
requirements_libs_deps_ethumb=""
requirements_libs_deps_elementary=""

requirements_pc_eina=""
requirements_pc_eet=""
requirements_pc_eo=""
requirements_pc_evas=""
requirements_pc_ecore=""
requirements_pc_embryo=""
requirements_pc_eio=""
requirements_pc_edje=""
requirements_pc_efreet=""
requirements_pc_e_dbus=""
requirements_pc_eeze=""
requirements_pc_emotion=""
requirements_pc_ethumb=""
requirements_pc_elementary=""

requirements_pc_deps_eina=""
requirements_pc_deps_eet=""
requirements_pc_deps_evas=""
requirements_pc_deps_ecore=""
requirements_pc_deps_embryo=""
requirements_pc_deps_eio=""
requirements_pc_deps_edje=""
requirements_pc_deps_efreet=""
requirements_pc_deps_e_dbus=""
requirements_pc_deps_eeze=""
requirements_pc_deps_emotion=""
requirements_pc_deps_ethumb=""
requirements_pc_deps_elementary=""

AC_SUBST([requirements_libs_evil])
AC_SUBST([requirements_libs_eina])
AC_SUBST([requirements_libs_eet])
AC_SUBST([requirements_libs_evas])
AC_SUBST([requirements_libs_ecore])
AC_SUBST([requirements_libs_embryo])
AC_SUBST([requirements_libs_eio])
AC_SUBST([requirements_libs_edje])
AC_SUBST([requirements_libs_efreet])
AC_SUBST([requirements_libs_e_dbus])
AC_SUBST([requirements_libs_eeze])
AC_SUBST([requirements_libs_emotion])
AC_SUBST([requirements_libs_ethumb])
AC_SUBST([requirements_libs_elementary])

AC_SUBST([requirements_pc_eina])
AC_SUBST([requirements_pc_eet])
AC_SUBST([requirements_pc_eo])
AC_SUBST([requirements_pc_evas])
AC_SUBST([requirements_pc_ecore])
AC_SUBST([requirements_pc_embryo])
AC_SUBST([requirements_pc_eio])
AC_SUBST([requirements_pc_edje])
AC_SUBST([requirements_pc_efreet])
AC_SUBST([requirements_pc_e_dbus])
AC_SUBST([requirements_pc_eeze])
AC_SUBST([requirements_pc_emotion])
AC_SUBST([requirements_pc_ethumb])
AC_SUBST([requirements_pc_elementary])


AC_CANONICAL_HOST

have_wince="no"
have_win32="no"
have_windows="no"
case "$host_os" in
   cegcc*)
      AC_MSG_ERROR([ceGCC compiler is not supported anymore. Exiting...])
   ;;
   mingw32ce*)
      have_wince="yes"
      have_windows="yes"
      want_efreet="no"
      want_e_dbus="no"
      want_eeze="no"
      want_emotion="no"
      want_ethumb="no"
      MODULE_ARCH="$host_os-$host_cpu"
      MODULE_EXT=".dll"
   ;;
   mingw*)
      have_win32="yes"
      have_windows="yes"
      want_eeze="no"
      MODULE_ARCH="$host_os-$host_cpu-v_maj.v_min.v_mic"
      MODULE_EXT=".dll"
   ;;
   *)
      MODULE_ARCH="$host_os-$host_cpu-v_maj.v_min.v_mic"
      MODULE_EXT=".so"
   ;;
esac

AC_DEFINE_UNQUOTED([MODULE_ARCH], ["${MODULE_ARCH}"], ["Module architecture"])
AC_DEFINE_UNQUOTED([SHARED_LIB_SUFFIX], ["${MODULE_EXT}"], [Suffix for shared objects])

AM_CONDITIONAL([HAVE_WINCE], [test "x${have_wince}" = "xyes"])
AM_CONDITIONAL([HAVE_WIN32], [test "x${have_win32}" = "xyes"])
AM_CONDITIONAL([HAVE_WINDOWS], [test "x${have_windows}" = "xyes"])


#### Additional options to configure

EFL_ENABLE_LIB([eet], [yes])
EFL_ENABLE_LIB([eo], [yes])


# Assert or fail.

AC_ARG_ENABLE([assert],
   [AC_HELP_STRING([--enable-assert], [enable assert, @<:@default=no@:>@])],
   [
    if test "x${enableval}" = "xyes" ; then
       prefer_assert="yes"
    else
       prefer_assert="no"
    fi
   ],
   [prefer_assert="no"])


#### Checks for programs

### libtool

if test "x${have_windows}" = "xyes" ; then
   lt_cv_deplibs_check_method='pass_all'
fi
AC_LIBTOOL_WIN32_DLL
define([AC_LIBTOOL_LANG_F77_CONFIG], [:])dnl
AC_PROG_LIBTOOL
version_info="lt_cur:lt_rev:lt_age"
AC_SUBST([version_info])
release_info="v_rel"
AC_SUBST([release_info])

### compilers

AM_PROG_AS
AC_PROG_CXX
AC_LANG(C)
AC_PROG_CPP
AC_PROG_CC

# pkg-config

PKG_PROG_PKG_CONFIG
if test "x${PKG_CONFIG}" = "x" ; then
   AC_MSG_ERROR([pkg-config tool not found. Install it or set PKG_CONFIG environment variable to that path tool. Exiting...])
fi

# Check whether pkg-config supports Requires.private
if ${PKG_CONFIG} --atleast-pkgconfig-version 0.22 ; then
   pkgconfig_requires_private="Requires.private"
else
   pkgconfig_requires_private="Requires"
fi
AC_SUBST([pkgconfig_requires_private])

# doxygen program for documentation building

EFL_CHECK_DOXYGEN([build_doc="yes"], [build_doc="no"])


#### Checks for libraries


#### Checks for header files

EFL_CHECK_PATH_MAX


#### Checks for types


#### Checks for structures


#### Checks for compiler characteristics

AC_C_BIGENDIAN
AC_C_INLINE
# EFL_CHECK_COMPILER_FLAGS([MY_LIB], [-Wall -Wextra])


#### Checks for linker characteristics

lt_enable_auto_import=""
case "${host_os}" in
   mingw*)
      lt_enable_auto_import="-Wl,--enable-auto-import"
   ;;
esac
AC_SUBST([lt_enable_auto_import])


#### Checks for library functions

AC_FUNC_ALLOCA


######################  EFL  ######################

#### Evil

if test "x${have_windows}" = "xyes" ; then

AC_MSG_NOTICE([Evil checks])

### Default values

### Additional options to configure
EFL_SELECT_WINDOWS_VERSION

### Checks for programs

### Checks for libraries

EVIL_LIBS=""
EVIL_DLFCN_LIBS=""
case "$host_os" in
  mingw32ce*)
    EVIL_LIBS="-lws2"
    EVIL_DLFCN_LIBS="-ltoolhelp"
    ;;
  *)
    EVIL_LIBS="-luuid -lole32 -lws2_32 -lsecur32"
    EVIL_DLFCN_LIBS="-lpsapi"
    ;;
esac
requirements_libs_evil="${EVIL_LIBS}"

AC_SUBST([EVIL_LIBS])
AC_SUBST([EVIL_DLFCN_LIBS])

AC_DEFINE([HAVE_EVIL], [1], [Set to 1 if Evil package is installed])

### Checks for header files

AC_CHECK_HEADERS([errno.h])

### Checks for types

### Checks for structures

### Checks for compiler characteristics

EVIL_CPPFLAGS="-DEFL_EVIL_BUILD"
EVIL_DLFCN_CPPFLAGS="-DEFL_EVIL_DLFCN_BUILD -DPSAPI_VERSION=1"
EVIL_CFLAGS="-Wall -Wextra -Wshadow -Wdeclaration-after-statement -Wmissing-prototypes -Wstrict-prototypes -Wredundant-decls -Wpointer-arith -mms-bitfields"
EVIL_CXXFLAGS=""

if test "x${have_win32}" = "xyes" ; then
   EVIL_CXXFLAGS="-fno-rtti -fno-exceptions"
   EVIL_CPPFLAGS="${EVIL_CPPFLAGS} -DSECURITY_WIN32"
fi

AC_SUBST([EVIL_CPPFLAGS])
AC_SUBST([EVIL_DLFCN_CPPFLAGS])
AC_SUBST([EVIL_CFLAGS])
AC_SUBST([EVIL_CXXFLAGS])

### Checks for linker characteristics

### Checks for library functions

fi

#### End of Evil


#### Eina

AC_MSG_NOTICE([Eina checks])

### Default values

### Additional options to configure

# Magic debug
AC_ARG_ENABLE([magic-debug],
   [AC_HELP_STRING([--disable-magic-debug], [disable magic debug of eina structure @<:@default=enabled@:>@])],
   [
    if test "x${enableval}" = "xyes" ; then
       have_magic_debug="yes"
    else
       have_magic_debug="no"
    fi
   ],
   [have_magic_debug="yes"])

AC_MSG_CHECKING([whether magic debug is enable])
AC_MSG_RESULT([${have_magic_debug}])

if test "x${have_magic_debug}" = "xyes" ; then
   EINA_CONFIGURE_MAGIC_DEBUG="#define EINA_MAGIC_DEBUG"
fi
AC_SUBST([EINA_CONFIGURE_MAGIC_DEBUG])

# Safety checks (avoid crashes on wrong api usage)
AC_ARG_ENABLE([safety-checks],
   [AC_HELP_STRING([--disable-safety-checks], [disable safety checks for NULL pointers and like. @<:@default=enabled@:>@])],
   [
    if test "x${enableval}" = "xyes" ; then
       have_safety_checks="yes"
    else
       have_safety_checks="no"
    fi
   ],
   [have_safety_checks="yes"])

AC_MSG_CHECKING([whether to do safety checking on api parameters])
AC_MSG_RESULT([${have_safety_checks}])

if test "x${have_safety_checks}" = "xyes" ; then
   AC_DEFINE([EINA_SAFETY_CHECKS], [1], [disable safety checks for NULL pointers and like.])
   EINA_CONFIGURE_SAFETY_CHECKS="#define EINA_SAFETY_CHECKS"
fi
AC_SUBST([EINA_CONFIGURE_SAFETY_CHECKS])

AM_CONDITIONAL([SAFETY_CHECKS], [test "x$have_safety_checks" = "xyes"])

# Miximum log level
with_max_log_level="<unset>"
AC_ARG_WITH([internal-maximum-log-level],
   [AC_HELP_STRING([--with-internal-maximum-log-level=NUMBER],
                   [limit eina internal log level to the given number, any call to EINA_LOG() with values greater than this will be compiled out, ignoring runtime settings, but saving function calls.])],
   [
    if test "x${withval}" != "xno" ; then
       if echo "${withval}" | grep -E '^[[0-9]]+$' >/dev/null 2>/dev/null; then
          AC_MSG_NOTICE([ignoring any EINA_LOG() with level greater than ${withval}])
          AC_DEFINE_UNQUOTED([EINA_LOG_LEVEL_MAXIMUM], [${withval}], [if set, logging is limited to this amount.])
          with_max_log_level="${withval}"
       else
          AC_MSG_ERROR([--with-internal-maximum-log-level takes a decimal number, got "${withval}" instead.])
       fi
    fi
    ],
    [:])

# Choose best memory pool
AC_ARG_ENABLE([default-mempool],
   [AC_HELP_STRING([--enable-default-mempool], [Default memory allocator could be faster for some computer. @<:@default=disabled@:>@])],
   [
    if test "x${enableval}" = "xyes"; then
       have_default_mempool="yes"
    else
       have_default_mempool="no"
    fi
   ],
   [have_default_mempool="no"])

AC_MSG_CHECKING([whether to use default mempool allocator])
AC_MSG_RESULT([${have_default_mempool}])

if test "x${have_default_mempool}" = "xyes" ; then
   EINA_CONFIGURE_DEFAULT_MEMPOOL="#define EINA_DEFAULT_MEMPOOL"
fi
AC_SUBST([EINA_CONFIGURE_DEFAULT_MEMPOOL])

# Report stringshare usage
AC_ARG_ENABLE([stringshare-usage],
   [AC_HELP_STRING([--enable-stringshare-usage], [Report stringshare usage on stringshare shutdown. @<:@default=disabled@:>@])],
   [
    if test "x${enableval}" = "xyes"; then
       have_stringshare_usage="yes"
    else
       have_stringshare_usage="no"
    fi
   ],
   [have_stringshare_usage="no"]
)
AC_MSG_CHECKING([whether to report stringshare usage])
AC_MSG_RESULT([${have_stringshare_usage}])

if test "x${have_stringshare_usage}" = "xyes"; then
   AC_DEFINE([EINA_STRINGSHARE_USAGE], [1], [Report Eina stringshare usage pattern])
fi

# Check if we want to benchmark on real data
AC_ARG_ENABLE([e17],
   [AC_HELP_STRING([--enable-e17], [enable heavy benchmark @<:@default=no@:>@])],
   [
    if test "x${enableval}" = "xyes" ; then
       enable_benchmark_e17="yes"
    else
       enable_benchmark_e17="no"
    fi
   ],
   [enable_benchmark_e17="no"])

AC_MSG_CHECKING([whether e17 real data benchmark are built])
AC_MSG_RESULT([${enable_benchmark_e17}])

AM_CONDITIONAL([EINA_ENABLE_BENCHMARK_E17], [test "x${enable_benchmark_e17}" = "xyes"])

# Valgrind

AC_ARG_ENABLE([valgrind],
   [AC_HELP_STRING([--enable-valgrind], [improve valgrind support by hinting it of our memory usages, having it to report proper mempool leaks. @<:@default=no@:>@])],
   [
    if test "x${enableval}" = "xyes" ; then
       want_valgrind="yes"
    else
       want_valgrind="no"
    fi
   ],
   [want_valgrind="no"])

AC_MSG_CHECKING([whether to enable build with valgrind])
AC_MSG_RESULT([${want_valgrind}])

### Checks for programs

### Checks for libraries

## Compatibility layers

# Evil library for compilation on Windows

EFL_EINA_BUILD=""
case "$host_os" in
   mingw*)
      AC_DEFINE([HAVE_EVIL], [1], [Set to 1 if Evil package is installed])
      requirements_pc_eina="${requirements_pc_eina} evil"
      EFL_EINA_BUILD="-DEFL_EINA_BUILD"
   ;;
esac
AC_SUBST([EFL_EINA_BUILD])

# Escape library for compilation on Playstation 3

case "$host_vendor" in
  ps3*)
      PKG_CHECK_EXISTS([escape])
      AC_DEFINE([HAVE_ESCAPE], [1], [Set to 1 if Escape package is installed])
      requirements_pc_eina="${requirements_pc_eina} escape"
    ;;
esac

# Exotic library for compilation on Coyote

PKG_CHECK_EXISTS([exotic],
   [
    enable_exotic="yes"
    AC_DEFINE([HAVE_EXOTIC_H], [1], [Define to 1 if you have Exotic.])
    EINA_CONFIGURE_HAVE_EXOTIC="#define EINA_HAVE_EXOTIC"
    requirements_pc_eina="exotic ${requirements_pc_eina}"
   ],
   [enable_exotic="no"])

AM_CONDITIONAL([EINA_HAVE_EXOTIC], [test "x${enable_exotic}" = "xyes"])
AC_SUBST([EINA_CONFIGURE_HAVE_EXOTIC])

## Options

# Valgrind

if test "x${want_valgrind}" = "xyes" || test "x${want_valgrind}" = "xauto"; then
   PKG_CHECK_MODULES([VALGRIND], [valgrind >= 2.4.0],
      [
       have_valgrind="yes"
       requirements_pc_eina="valgrind >= 2.4.0 ${requirements_pc_eina}"
       requirements_pc_deps_eina="valgrind ${requirements_pc_deps_eina}"
      ],
      [
       have_valgrind="no"
       AC_DEFINE([NVALGRIND], [1], [Valgrind support disabled])
       if test "x${want_valgrind}" = "xyes"; then
          AC_MSG_ERROR([Valgrind >= 2.4.0 is required])
       fi
      ])
else
    AC_DEFINE([NVALGRIND], [1], [Valgrind support disabled])
fi

AC_ARG_ENABLE([debug-malloc],
   [AC_HELP_STRING([--enable-debug-malloc], [enable debugging of malloc usage overhead in our allocator @<:@default=enabled@:>@])],
   [
     if test "x${enableval}" = "xyes" ; then
     	want_debug_malloc="yes"
     else
	want_debug_malloc="no"
     fi
   ],
   [want_debug_malloc="no"])

if test "x${ac_cv_func_malloc_usable_size}" = "xyes" && test "x${want_debug_malloc}" = "xyes"; then
   AC_DEFINE([EINA_DEBUG_MALLOC], [1], [Turn on debugging overhead in mempool])
fi

AC_ARG_ENABLE([log],
   [AC_HELP_STRING([--disable-log], [disable Eina_Log infrastructure completly @<:@default=enabled@:>@])],
   [
    if test "x${enableval}" = "xyes" ; then
       want_log="yes"
    else
       want_log="no"
    fi
   ],
   [want_log="yes"])

## Modules

# Check ememoa memory pool library

AC_ARG_ENABLE([ememoa],
   [AC_HELP_STRING([--enable-ememoa], [build ememoa memory pool module @<:@default=yes@:>@])],
   [
    if test "x${enableval}" = "xyes" ; then
       enable_ememoa="yes"
    else
       enable_ememoa="no"
    fi
   ],
   [enable_ememoa="yes"])

AC_MSG_CHECKING([whether to use ememoa for memory pool])
AC_MSG_RESULT([${enable_ememoa}])

if test "x${enable_ememoa}" = "xyes" ; then
   PKG_CHECK_MODULES([EMEMOA],
      [ememoa >= 0.0.26 ],
      [enable_ememoa="yes"],
      [enable_ememoa="no"])
fi

if ! test "x${requirements_pc_deps_eina}" = "x" ; then
   PKG_CHECK_MODULES([EINA], [${requirements_pc_deps_eina}])
fi



## Examples

PKG_CHECK_MODULES([ECORE_EVAS],
   [ecore-evas ecore evas],
   [build_tiler_example="yes"],
   [build_tiler_example="no"])

AM_CONDITIONAL([BUILD_TILER_EXAMPLE], [test "x${build_tiler_example}" = "xyes"])

## Tests

EFL_CHECK_TESTS(EINA)

## Benchmarks

PKG_CHECK_MODULES([GLIB],
   [glib-2.0],
   [have_glib="yes"],
   [have_glib="no"])

if test "x${have_glib}" = "xyes" ; then
   GLIB_CFLAGS="${GLIB_CFLAGS} -DEINA_BENCH_HAVE_GLIB"
fi

### Checks for header files

AC_HEADER_ASSERT
AC_HEADER_TIME
AC_HEADER_DIRENT

AC_CHECK_HEADERS([unistd.h libgen.h inttypes.h stdint.h sys/types.h siginfo.h strings.h execinfo.h mcheck.h])

# sys/mman.h could be provided by evil/escape/exotic so we need to set CFLAGS accordingly
CFLAGS_save="${CFLAGS}"
CFLAGS="${CFLAGS} ${EINA_CFLAGS}"
AC_CHECK_HEADERS([sys/mman.h])
CFLAGS="${CFLAGS_save}"

if test "x${ac_cv_header_inttypes_h}" = "xyes" ; then
   EINA_CONFIGURE_HAVE_INTTYPES_H="#define EINA_HAVE_INTTYPES_H"
   AC_DEFINE([HAVE_INTTYPES_H], [1], [Define to 1 if you have the <inttypes.h> header file.])
fi
AC_SUBST([EINA_CONFIGURE_HAVE_INTTYPES_H])

if test "x${ac_cv_header_inttypes_h}" = "xyes" ; then
    EINA_CONFIGURE_HAVE_STDINT_H="#define EINA_HAVE_STDINT_H"
    AC_DEFINE([HAVE_STDINT_H], [1], [Define to 1 if you have the <stdint.h> header file.])
fi
AC_SUBST([EINA_CONFIGURE_HAVE_STDINT_H])

### Checks for types

# wchar_t

AC_CHECK_SIZEOF([wchar_t])
EINA_SIZEOF_WCHAR_T=$ac_cv_sizeof_wchar_t
AC_SUBST([EINA_SIZEOF_WCHAR_T])
AC_CHECK_TYPES([siginfo_t], [], [],
   [[
#include <signal.h>
#if HAVE_SIGINFO_H
# include <siginfo.h>
#endif
   ]])

# struct dirent

AC_CHECK_TYPES([struct dirent], [have_dirent="yes"], [have_dirent="no"],
   [[
#include <dirent.h>
   ]])

if test "x${have_dirent}" = "xyes" ; then
    EINA_CONFIGURE_HAVE_DIRENT_H="#define EINA_HAVE_DIRENT_H"
    AC_DEFINE([HAVE_DIRENT_H], [1], [Define to 1 if you have a valid <dirent.h> header file.])
fi
AC_SUBST([EINA_CONFIGURE_HAVE_DIRENT_H])

### Checks for structures

### Checks for compiler characteristics

m4_ifdef([v_ver],
   [
    EFL_CHECK_COMPILER_FLAGS([EINA], [-Wall -Wextra])
   ])

EFL_CHECK_COMPILER_FLAGS([EINA], [-Wshadow -Wpointer-arith])

### Checks for linker characteristics

EFL_CHECK_LINKER_FLAGS([EINA], [-fno-strict-aliasing])

### Checks for library functions

AC_CHECK_FUNCS([strlcpy openat fstatat fpathconf execvp backtrace backtrace_symbols malloc_usable_size mtrace])

EFL_CHECK_FUNCS([EINA], [dirfd dlopen dladdr fnmatch iconv shm_open setxattr])

enable_log="no"
if test "x${efl_func_fnmatch}" = "xyes" && test "x${want_log}" = "xyes" ; then
   enable_log="yes"
fi

AC_MSG_CHECKING([wether to build Eina_Log infrastructure])
AC_MSG_RESULT([${enable_log}])

if test "x${enable_log}" = "xyes"; then
    EINA_CONFIGURE_ENABLE_LOG="#define EINA_ENABLE_LOG"
    AC_DEFINE([HAVE_LOG], [1], [Define to 1 if we log support is on])
fi
AC_SUBST([EINA_CONFIGURE_ENABLE_LOG])

EFL_CHECK_THREADS

if ! test "x${efl_have_threads}" = "xno" ; then
   EINA_CONFIGURE_HAVE_THREADS="#define EINA_HAVE_THREADS"
fi
AC_SUBST(EINA_CONFIGURE_HAVE_THREADS)
AM_CONDITIONAL([EINA_HAVE_THREADS], [! test "x${efl_have_threads}" = "xno"])

if test "x${efl_have_debug_threads}" = "xyes"; then
   EINA_CONFIGURE_HAVE_DEBUG_THREADS="#define EINA_HAVE_DEBUG_THREADS"
fi
AC_SUBST(EINA_CONFIGURE_HAVE_DEBUG_THREADS)
AM_CONDITIONAL([EINA_DEBUG_THREADS], [test "x${efl_have_debug_threads}" = "xyes"])

if ! test "x${efl_have_on_off_threads}" = "xno"; then
   EINA_CONFIGURE_HAVE_ON_OFF_THREADS="#define EINA_HAVE_ON_OFF_THREADS"
fi
AC_SUBST(EINA_CONFIGURE_HAVE_ON_OFF_THREADS)
AM_CONDITIONAL([EINA_ON_OFF_THREADS], [! test "x${efl_have_on_off_threads}" = "xno"])

### Modules

if test "x${have_default_mempool}" = "xyes" ; then
   enable_chained_pool="no"
   enable_pass_through="static"
else
   enable_chained_pool="static"
   enable_pass_through="no"
fi

enable_one_big="static"

EINA_CHECK_MODULE([chained-pool],   [${enable_chained_pool}], [chained pool])
EINA_CHECK_MODULE([ememoa-fixed],   [${enable_ememoa}],       [ememoa fixed])
EINA_CHECK_MODULE([ememoa-unknown], [${enable_ememoa}],       [ememoa unknown])
EINA_CHECK_MODULE([fixed-bitmap],   [no],                     [fixed bitmap])
EINA_CHECK_MODULE([pass-through],   [${enable_pass_through}], [pass through])
EINA_CHECK_MODULE([buddy],          [no],                     [buddy])
EINA_CHECK_MODULE([one-big],        [${enable_one_big}],      [one big])


#### End of Eina


#### Eet

efl_have_eet="no"

if test "x${efl_want_build_eet}" = "xyes" ; then

AC_MSG_NOTICE([Eet checks])

### Default values

### Additional options to configure

EFL_ENABLE_BIN([eet])

# Old eet file format support

AC_ARG_ENABLE(old-eet-file-format,
   [AC_HELP_STRING(
      [--disable-old-eet-file-format],
      [disable old eet file format support @<:@default=enabled@:>@])],
   [
    if test "x${enableval}" = "xyes" ; then
       old_eet_file_format="yes"
    else
       old_eet_file_format="no"
    fi
   ],
   [old_eet_file_format="yes"])

AC_MSG_CHECKING([whether to support old eet file format])
AC_MSG_RESULT([${old_eet_file_format}])

if test "x${old_eet_file_format}" = "xyes" ; then
   AC_DEFINE(EET_OLD_EET_FILE_FORMAT, 1, [support old eet file format])
else
   AC_DEFINE(EET_OLD_EET_FILE_FORMAT, 0, [support old eet file format])
fi

# Openssl support

AC_ARG_ENABLE([openssl],
   [AC_HELP_STRING([--disable-openssl], [disable openssl eet support @<:@default=auto@:>@])],
   [
    if test "x${enableval}" = "xyes" ; then
       want_openssl="yes"
    else
       want_openssl="no"
    fi
   ],
   [want_openssl="auto"])

AC_MSG_CHECKING([whether to use OpenSSL])
AC_MSG_RESULT([${want_openssl}])

# GnuTLS support

AC_ARG_ENABLE([gnutls],
   [AC_HELP_STRING([--disable-gnutls], [disable gnutls eet support @<:@default=auto@:>@])],
   [
    if test "x${enableval}" = "xyes" ; then
       want_gnutls="yes"
    else
       want_gnutls="no"
    fi
   ],
   [want_gnutls="auto"])

AC_MSG_CHECKING([whether to use Gnutls])
AC_MSG_RESULT([${want_gnutls}])

# Cryptography support

AC_ARG_ENABLE([cipher],
   [AC_HELP_STRING([--disable-cipher], [disable cipher support for eet API @<:@default=yes@:>@])],
   [
    if test "x${enableval}" = "xyes" ; then
       want_cipher="yes"
    else
       want_cipher="no"
    fi
   ],
   [want_cipher="yes"])

AC_MSG_CHECKING([whether to use cipher])
AC_MSG_RESULT([${want_cipher}])

AC_ARG_ENABLE([signature],
   [AC_HELP_STRING([--disable-signature], [disable signature file support for eet @<:@default=yes@:>@])],
   [
    if test "x${enableval}" = "xyes" ; then
       want_signature="yes"
    else
       want_signature="no"
    fi
   ],
   [want_signature="yes"])

AC_MSG_CHECKING([whether to use signature])
AC_MSG_RESULT([${want_signature}])

### Checks for programs

### Checks for libraries

## Compatibility layers

# Evil library for compilation on Windows

EFL_EET_BUILD=""
case "$host_os" in
   mingw*)
      AC_DEFINE([HAVE_EVIL], [1], [Set to 1 if Evil package is installed])
      requirements_pc_eet="evil ${requirements_pc_eet}"
      EFL_EET_BUILD="-DEFL_EET_BUILD"
   ;;
esac
AC_SUBST(EFL_EET_BUILD)

# Exotic library for compilation on Coyote

PKG_CHECK_EXISTS([exotic],
   [
    enable_exotic="yes"
    AC_DEFINE([HAVE_EXOTIC_H], [1], [Define to 1 if you have Exotic.])
    requirements_pc_eet="exotic ${requirements_pc_eet}"
   ],
   [enable_exotic="no"])

## Secure layer

# Gnutls library

have_gnutls="no"
if test "x${want_gnutls}" = "xyes" || test "x${want_gnutls}" = "xauto" ; then
   PKG_CHECK_MODULES([GNUTLS], [gnutls >= 1.7.6],
      [
       have_gnutls="yes"
       want_openssl="no"
       AC_DEFINE([HAVE_GNUTLS], [1], [Have Gnutls support])
       requirements_pc_eet="gnutls >= 1.7.6 ${requirements_pc_eet}"
       requirements_pc_deps_eet="gnutls >= 1.7.6 ${requirements_pc_deps_eet}"
      ],
      [have_gnutls="no"])
fi

# libgcrypt

if test "x${have_gnutls}" = "xyes" ; then
   AC_PATH_GENERIC([libgcrypt], [], [have_gnutls="yes"], [have_gnutls="no"])
   if test "x${have_gnutls}" = "xyes" ; then
      requirements_libs_eet="${LIBGCRYPT_LIBS} ${requirements_libs_eet}"
      requirements_libs_deps_eet="${LIBGCRYPT_LIBS} ${requirements_libs_deps_eet}"
   fi
fi

# Specific GNUTLS improvement

AC_ARG_ENABLE(new-gnutls-api,
   [AC_HELP_STRING(
      [--disable-new-gnutls-api],
      [enable use of gnutls_x509_crt_verify_hash. @<:@default=yes@:>@])],
   [
    if test "x${enableval}" = "xyes" ; then
       new_gnutls_api="yes"
    else
       new_gnutls_api="no"
    fi
   ],
   [new_gnutls_api="yes"])

AC_MSG_CHECKING([whether to use gnutls_x509_crt_verify_hash])
AC_MSG_RESULT([${new_gnutls_api}])

if test "x${have_gnutls}" = "xyes" && test "x${new_gnutls_api}" = "xyes" ; then
   CFLAGS_save="${CFLAGS}"
   LIBS_save="${LIBS}"
   CFLAGS="${GNUTLS_CFLAGS}"
   LIBS="${GNUTLS_LIBS}"
   AC_CHECK_LIB([gnutls], [gnutls_x509_crt_verify_hash],
      [
       AC_DEFINE([EET_USE_NEW_GNUTLS_API], [1], [use gnutls_x509_crt_verify_hash])
       new_gnutls_api="yes"
      ],
      [new_gnutls_api="no"])
   CFLAGS="${CFLAGS_save}"
   LIBS="${LIBS_save}"
fi

use_gnutls_privkey_sign_data="no"
if test "x${have_gnutls}" = "xyes" ; then
   CFLAGS_save="${CFLAGS}"
   LIBS_save="${LIBS}"
   CFLAGS="${GNUTLS_CFLAGS}"
   LIBS="${GNUTLS_LIBS}"
   AC_CHECK_LIB([gnutls], [gnutls_privkey_sign_data],
      [
       AC_DEFINE([EET_USE_NEW_PRIVKEY_SIGN_DATA], [1], [use gnutls_privkey_sign_data])
       use_gnutls_privkey_sign_data="yes"
      ],
      [use_gnutls_privkey_sign_data="no"])
   CFLAGS="${CFLAGS_save}"
   LIBS="${LIBS_save}"
fi

AC_MSG_CHECKING([whether to use gnutls_privkey_sign_data])
AC_MSG_RESULT([${use_gnutls_privkey_sign_data}])

use_gnutls_pubkey_verify_hash="no"
if test "x${have_gnutls}" = "xyes" ; then
   CFLAGS_save="${CFLAGS}"
   LIBS_save="${LIBS}"
   CFLAGS="${GNUTLS_CFLAGS}"
   LIBS="${GNUTLS_LIBS}"
   AC_CHECK_LIB([gnutls], [gnutls_pubkey_verify_hash],
      [
       AC_DEFINE([EET_USE_NEW_PUBKEY_VERIFY_HASH], [1], [use gnutls_pubkey_verify_hash])
       use_gnutls_pubkey_verify_hash="yes"
      ],
      [use_gnutls_pubkey_verify_hash="no"])
   CFLAGS="${CFLAGS_save}"
   LIBS="${LIBS_save}"
fi

AC_MSG_CHECKING([whether to use gnutls_pubkey_verify_hash])
AC_MSG_RESULT([${use_gnutls_pubkey_verify_hash}])

# Openssl library

have_openssl="no"
if test "x${want_openssl}" = "xyes" || test "x${want_openssl}" = "xauto" ; then
   PKG_CHECK_EXISTS([openssl],
      [
       have_openssl="yes"
       AC_DEFINE([HAVE_OPENSSL], [1], [Have Openssl support])
       requirements_pc_eet="openssl ${requirements_pc_eet}"
       requirements_pc_deps_eet="openssl ${requirements_pc_deps_eet}"
      ],
      [have_openssl="no"])
fi

if test "x${have_gnutls}" = "xyes" ; then
   secure_layer="GnuTLS"
elif test "x${have_openssl}" = "xyes" ; then
   secure_layer="OpenSSL"
else
   secure_layer="no"
fi

# Cryptography support

have_cipher="no"
if test "x${have_gnutls}" = "xyes" && test "x${want_cipher}" = "xyes" ; then
   have_cipher="yes"
   AC_DEFINE([HAVE_CIPHER], [1], [Have cipher support built in eet])
elif test "x${have_openssl}" = "xyes" && test "x${want_cipher}" = "xyes" ; then
   have_cipher="yes"
   AC_DEFINE([HAVE_CIPHER], [1], [Have cipher support built in eet])
fi

AC_MSG_CHECKING([whether to activate cipher support in eet])
AC_MSG_RESULT([${have_cipher}])

have_signature="no"
if test "x${have_gnutls}" = "xyes" && test "x${want_signature}" = "xyes" ; then
   have_signature="yes"
   AC_DEFINE([HAVE_SIGNATURE], [1], [Have signature support for eet file])
elif test "x${have_openssl}" = "xyes" && test "x${want_signature}" = "xyes" ; then
   have_signature="yes"
   AC_DEFINE([HAVE_SIGNATURE], [1], [Have signature support for eet file])
fi

AC_MSG_CHECKING([whether to activate signature support in eet])
AC_MSG_RESULT([${have_signature}])

# libjpeg and zlib

EFL_CHECK_LIBS([EET], [libjpeg zlib])

# Eina library

requirements_pc_eet="eina >= 1.7.99 ${requirements_pc_eet}"

PKG_CHECK_MODULES([EET], [${requirements_pc_deps_eet}])

# Windows

case "$host_os" in
   mingw32ce*)
      requirements_libs_eet="${requirements_libs_eet} -lws2"
      requirements_libs_deps_eet="${requirements_libs_deps_eet} -lws2"
      ;;
   mingw*)
      requirements_libs_eet="${requirements_libs_eet} -lws2_32"
      requirements_libs_deps_eet="${requirements_libs_deps_eet} -lws2_32"
      ;;
esac

EET_LIBS="${EET_LIBS} ${requirements_libs_deps_eet}"

### Checks for header files

AC_CHECK_HEADERS(netinet/in.h unistd.h)

### Checks for types

### Checks for structures

### Checks for compiler characteristics

# Check whether the null pointer is zero on this arch
AC_TRY_RUN(
   [
#include <stdlib.h>
#include <inttypes.h>
int main (int argc, char **argv) {
  void *foo = NULL;
  uintptr_t bar = (uintptr_t)foo;
  return (uintptr_t)foo;
}
   ],
   [have_null="yes"],
   [have_null="no"],
   [
    AC_MSG_WARN([Cannot check when cross-compiling -- assuming null is okay])
    have_null="yes"
   ])
AC_MSG_CHECKING([value of the null pointer])
AC_MSG_RESULT([${have_null}])

if test ! "x${have_null}" = "xyes" ; then
   AC_MSG_WARN([Your system is a bit too funny, eet might not work properly])
fi

EFL_CHECK_COMPILER_FLAGS([EET], [-Wshadow -Wpointer-arith])

### Checks for linker characteristics

case "${host_os}" in
   openbsd*)
   ;;
   *)
      EFL_CHECK_LINKER_FLAGS([EET], [-Wl,--as-needed])
   ;;
esac

### Checks for library functions

### Check availability

if test "x${efl_lib_zlib}" = "xyes" && test "x${efl_lib_libjpeg}" = "xyes" ; then
   efl_have_eet="yes"
fi

fi

#### End of Eet


#### Eo

efl_have_eo="no"

if test "x${efl_want_build_eo}" = "xyes" ; then

AC_MSG_NOTICE([Eo checks])

### Default values

### Additional options to configure

### Checks for programs

### Checks for libraries

# Eina library

requirements_pc_eo="eina >= 1.7.99"

AC_ARG_VAR([EO_CFLAGS], [preprocessor flags for Eo])
AC_SUBST([EO_CFLAGS])
AC_ARG_VAR([EO_LIBS], [linker flags for Eo])
AC_SUBST([EO_LIBS])

# Example (evas one)

PKG_CHECK_MODULES([ELM], [elementary >= 1.7.0], [have_elm="yes"], [have_elm="no"])
AM_CONDITIONAL([EO_BUILD_EXAMPLE_EVAS], [test "x${have_elm}" = "xyes"])

### Checks for header files

### Checks for types

### Checks for structures

### Checks for compiler characteristics

EFL_EO_BUILD=""
case "$host_os" in
   mingw*)
      EFL_EO_BUILD="-DEFL_EO_BUILD"
   ;;
esac
AC_SUBST([EFL_EO_BUILD])

### Checks for linker characteristics

### Checks for library functions

### Check availability

efl_have_eo="yes"

else

AM_CONDITIONAL([EO_BUILD_EXAMPLE_EVAS], [false])

fi

#### End of Eo


#### Evas

#AC_MSG_NOTICE([Evas checks])

### Default values
### Additional options to configure
### Checks for programs
### Checks for libraries
### Checks for header files
### Checks for types
### Checks for structures
### Checks for compiler characteristics
### Checks for linker characteristics
### Checks for library functions

#### End of Evas


AC_CONFIG_FILES([
Makefile
doc/Makefile
doc/Doxyfile
src/Makefile
src/benchmarks/Makefile
src/benchmarks/eina/Makefile
src/benchmarks/eo/Makefile
src/bin/Makefile
src/bin/evil/Makefile
src/bin/eet/Makefile
src/examples/Makefile
src/examples/eina/Makefile
src/examples/eet/Makefile
src/examples/eo/Makefile
src/lib/Makefile
src/lib/evil/Makefile
src/lib/eina/Makefile
src/lib/eina/eina_config.h
src/lib/eet/Makefile
src/lib/eo/Makefile
src/modules/Makefile
src/modules/eina/Makefile
src/modules/eina/mp/Makefile
src/modules/eina/mp/chained_pool/Makefile
src/modules/eina/mp/ememoa_fixed/Makefile
src/modules/eina/mp/ememoa_unknown/Makefile
src/modules/eina/mp/pass_through/Makefile
src/modules/eina/mp/fixed_bitmap/Makefile
src/modules/eina/mp/buddy/Makefile
src/modules/eina/mp/one_big/Makefile
src/scripts/Makefile
src/scripts/eina/Makefile
src/tests/Makefile
src/tests/eina/Makefile
src/tests/eet/Makefile
src/tests/eo/Makefile
spec/efl.spec
pc/evil.pc
pc/eina.pc
pc/eet.pc
pc/eo.pc
])

AC_OUTPUT


#### Info

echo
echo
echo
echo "------------------------------------------------------------------------"
echo "$PACKAGE_NAME $PACKAGE_VERSION"
echo "------------------------------------------------------------------------"
echo
echo "Configuration Options Summary:"
echo
echo "  OS...................: ${host_os}"
if test "x${have_windows}" = "xyes" ; then
   echo "  Windows version......: ${_efl_windows_version}"
fi
echo
echo "  Documentation........: ${build_doc}"
echo
echo "Eina"
echo
echo "  Magic debug..........: ${have_magic_debug}"
echo "  Safety checks........: ${have_safety_checks}"
echo "  Maximum log level....: ${with_max_log_level}"
echo "  Report string usage..: ${have_stringshare_usage}"
echo "  Valgrind support.....: ${have_valgrind}"
echo "  Default mempool......: ${have_default_mempool}"
echo "  Log support..........: ${enable_log}"
echo "  Thread Support.......: ${efl_have_threads}"
if test "${efl_have_threads}" = "POSIX" ; then
echo "    spinlock...........: ${efl_have_posix_threads_spinlock}"
echo "    debug usage........: ${efl_have_debug_threads}"
echo "    on/off support.....: ${efl_have_on_off_threads}"
fi
echo "  Iconv support........: ${efl_func_iconv}"
echo "  File dirfd...........: ${efl_func_dirfd}"
echo "  File xattr...........: ${efl_func_setxattr}"
echo "  shm_open.............: ${efl_func_shm_open}"
echo
echo "  Tests................: make check (Coverage: ${_efl_enable_coverage})"
echo "  Examples.............: make examples"
echo "    Tiler Example......: ${build_tiler_example}"
echo "    installation.......: make install-examples"
echo "  Benchmark............: make benchmark"
if test "x${enable_benchmark}" = "xyes" ; then
echo "    Glib...............: ${enable_benchmark_glib}"
echo "    E17 real data......: ${enable_benchmark_e17}"
fi
echo
echo "  Memory pools:"
echo "    Buddy..............: ${enable_buddy}"
echo "    Chained pool.......: ${enable_chained_pool}"
echo "    Ememoa fixed.......: ${enable_ememoa_fixed}"
echo "    Ememoa unknown.....: ${enable_ememoa_unknown}"
echo "    Fixed bitmap.......: ${enable_fixed_bitmap}"
echo "    One big............: ${enable_one_big}"
echo "    Pass through.......: ${enable_pass_through}"
echo
if test "x${efl_have_eet}" = "xno" ; then
echo "Eet....................: no"
echo
else
echo "Eet"
echo
echo "  Secure layer.........: ${secure_layer}"
if test "x${have_gnutls}" = "xyes" || test "x${have_openssl}" = "xyes" ; then
   echo "    Cipher support.....: ${have_cipher}"
   echo "    Signature..........: ${have_signature}"
fi
echo
echo "  Old eet file format..: ${old_eet_file_format}"
echo
echo "  Tests................: make check (Coverage: ${_efl_enable_coverage})"
echo "  Examples.............: make examples"
echo "    installation.......: make install-examples"
fi
if test "x${efl_have_eo}" = "xno" ; then
echo "Eo.....................: no"
echo
else
echo "Eo"
echo
echo "  Tests................: make check (Coverage: ${_efl_enable_coverage})"
echo "  Examples.............: make examples"
echo "    installation.......: make install-examples"
fi
echo
echo "Compilation............: make (or gmake)"
echo "  CPPFLAGS.............: $CPPFLAGS"
echo "  CFLAGS...............: $CFLAGS"
echo "  CXXFLAGS.............: $CXXFLAGS"
echo "  LDFLAGS..............: $LDFLAGS"
echo
echo "Installation...........: make install (as root if needed, with 'su' or 'sudo')"
echo "  prefix...............: $prefix"
echo