# Process this file with autoconf to produce a configure script. AC_INIT([beecrypt],[4.1.2],[bob.deblier@telenet.be]) AM_INIT_AUTOMAKE AC_CANONICAL_TARGET AC_CONFIG_SRCDIR(beecrypt.h) AC_CONFIG_HEADERS([config.h]) # Checks for package options AC_ARG_ENABLE(debug, [ --enable-debug creates debugging code [[default=no]]],[ if test "$enableval" = no; then ac_enable_debug=no else ac_enable_debug=yes fi ],[ ac_enable_debug=no]) AC_ARG_WITH(cpu,[ --with-cpu optimize for specific cpu],[ BEECRYPT_WITH_CPU ],[ BEECRYPT_WITHOUT_CPU ]) AC_ARG_WITH(arch,[ --with-arch optimize for specific architecture (may not run on other cpus of same family)],[ BEECRYPT_WITH_ARCH ],[ BEECRYPT_WITHOUT_ARCH ]) AC_ARG_ENABLE(threads,[ --enable-threads enables multithread support [[default=yes]]],[ if test "$enableval" = no; then ac_enable_threads=no else ac_enable_threads=yes fi ],[ ac_enable_threads=yes]) AC_ARG_ENABLE(aio,[ --enable-aio enables asynchronous i/o for entropy gathering [[default=yes]]],[ if test "$enableval" = no; then ac_enable_aio=no else ac_enable_aio=yes fi ],[ac_enable_aio=yes]) AH_TEMPLATE([ENABLE_AIO],[Define to 1 if you want to enable asynchronous I/O support]) AC_ARG_WITH(mtmalloc,[ --with-mtmalloc links against the mtmalloc library [[default=no]]],[ if test "$withval" = no; then ac_with_mtmalloc=no else ac_with_mtmalloc=yes fi ],[ac_with_mtmalloc=no]) AC_ARG_WITH(cplusplus,[ --with-cplusplus creates the C++ API code [[default=yes]]],[ if test "$withval" = no; then ac_with_cplusplus=no else ac_with_cplusplus=yes fi ],[ac_with_cplusplus=yes]) AC_ARG_WITH(java,[ --with-java creates the Java glue code [[default=yes]]],[ if test "$withval" = no; then ac_with_java=no else ac_with_java=yes fi ],[ac_with_java=yes]) AC_ARG_WITH(python,[ --with-python creates the Python module [[default=yes]]],[ if test "$withval" = no; then ac_with_python=no else ac_with_python=yes fi ],[ac_with_python=yes]) # Check for Unix variants AC_AIX # Checks for C compiler and preprocessor AC_PROG_CC AC_PROG_CPP AC_PROG_CXX AC_PROG_CXXCPP AM_PROG_AS AC_PROG_LD AC_PROG_LN_S AC_PROG_EGREP # Checks for compiler characteristics and flags BEECRYPT_CC BEECRYPT_CXX # Check for stack protection BEECRYPT_NOEXECSTACK # Checks for program flags needed by libtool BEECRYPT_LIBTOOL # Checks for further programs AC_PROG_AWK AC_PROG_INSTALL AC_PROG_LIBTOOL # Predefines for autoheader BEECRYPT_OS_DEFS AH_TEMPLATE([HAVE_ASSERT_H],[.]) AH_TEMPLATE([HAVE_CTYPE_H],[.]) AH_TEMPLATE([HAVE_ERRNO_H],[.]) AH_TEMPLATE([HAVE_FCNTL_H],[.]) AH_TEMPLATE([HAVE_TERMIO_H],[.]) AH_TEMPLATE([HAVE_TERMIOS_H],[.]) AH_TEMPLATE([HAVE_TIME_H],[.]) AH_TEMPLATE([HAVE_DLFCN_H],[.]) AH_TEMPLATE([HAVE_SYS_AUDIOIO_H],[.]) AH_TEMPLATE([HAVE_SYS_IOCTL_H],[.]) AH_TEMPLATE([HAVE_SYS_MMAN_H],[.]) AH_TEMPLATE([HAVE_SYS_SOUNDCARD_H],[.]) AH_TEMPLATE([HAVE_SYS_STAT_H],[.]) AH_TEMPLATE([HAVE_SYS_TIME_H],[.]) AH_TEMPLATE([HAVE_SYS_TYPES_H],[.]) AH_TEMPLATE([HAVE_ASM_BYTEORDER_H],[.]) AH_TEMPLATE([HAVE_AIO_H],[.]) AH_TEMPLATE([HAVE_DEV_AUDIO],[Define to 1 if your system has device /dev/audio]) AH_TEMPLATE([HAVE_DEV_DSP],[Define to 1 if your system has device /dev/dsp]) AH_TEMPLATE([HAVE_DEV_RANDOM],[Define to 1 if your system has device /dev/random]) AH_TEMPLATE([HAVE_DEV_URANDOM],[Define to 1 if your system has device /dev/urandom]) AH_TEMPLATE([HAVE_DEV_TTY],[Define to 1 if your system has device /dev/tty]) # Checks for header files. AC_HEADER_STDC AC_CHECK_HEADERS([time.h sys/time.h]) AC_HEADER_TIME AC_CHECK_HEADERS([assert.h stdio.h ctype.h errno.h fcntl.h malloc.h termio.h termios.h]) AC_CHECK_HEADERS([sys/ioctl.h sys/mman.h sys/audioio.h sys/soundcard.h]) AC_CHECK_HEADERS([endian.h asm/byteorder.h]) bc_include_stdio_h= bc_include_stdlib_h= bc_include_malloc_h= bc_include_string_h= bc_include_unistd_h= bc_include_dlfcn_h= if test "$ac_cv_header_stdio_h" = yes; then bc_include_stdio_h="#include " fi if test "$ac_cv_header_stdlib_h" = yes; then bc_include_stdlib_h="#include " elif test "$ac_cv_header_malloc_h" = yes; then bc_include_malloc_h="#include " fi if test "$ac_with_mtmalloc" = yes; then AC_CHECK_HEADERS(mtmalloc.h) if test "$ac_cv_header_mtmalloc_h" = yes; then bc_include_stdlib_h= bc_include_malloc_h="#include " fi fi if test "$ac_cv_header_string_h" = yes; then bc_include_string_h="#include " fi if test "$ac_cv_header_unistd_h" = yes; then bc_include_unistd_h="#include " fi if test "$ac_cv_header_dlfcn_h" = yes; then bc_include_dlfcn_h="#include " fi AC_SUBST(INCLUDE_STDIO_H,$bc_include_stdio_h) AC_SUBST(INCLUDE_STDLIB_H,$bc_include_stdlib_h) AC_SUBST(INCLUDE_MALLOC_H,$bc_include_malloc_h) AC_SUBST(INCLUDE_STRING_H,$bc_include_string_h) AC_SUBST(INCLUDE_UNISTD_H,$bc_include_unistd_h) AC_SUBST(INCLUDE_DLFCN_H,$bc_include_dlfcn_h) BEECRYPT_DLFCN BEECRYPT_MULTITHREAD BEECRYPT_THREAD_LOCAL_STORAGE # Checks for libraries. if test "$ac_enable_aio" = yes; then BEECRYPT_WORKING_AIO if test "$bc_cv_aio_works" = yes; then AC_DEFINE([ENABLE_AIO],1) fi fi if test "$ac_with_mtmalloc" = yes; then if test "$ac_cv_have_mtmalloc_h" = yes; then AC_CHECK_LIB([mtmalloc],[main]) ac_cv_lib_mtmalloc=ac_cv_lib_mtmalloc_main fi fi case $target_os in cygwin*) AC_CHECK_LIB([winmm],[main]) ac_cv_lib_winmm=ac_cv_lib_winmm_main ;; esac # Checks for typedefs, structures, and compiler characteristics. AC_C_BIGENDIAN AC_C_CONST AC_C_INLINE AH_TEMPLATE([HAVE_INLINE],[.]) if test "$ac_cv_c_inline" != no; then AC_DEFINE([HAVE_INLINE],1) fi # Checks for library functions. AC_PROG_GCC_TRADITIONAL AC_FUNC_MEMCMP AC_FUNC_STAT AC_CHECK_FUNCS([memset memcmp memmove strcspn strerror strspn]) AH_TEMPLATE([HAVE_GETHRTIME],[.]) AH_TEMPLATE([HAVE_GETTIMEOFDAY],[.]) if test "$ac_cv_header_sys_time_h" = yes; then AC_CHECK_FUNCS([gethrtime]) # gettimeofday detection fails on HP/UX! AC_MSG_CHECKING([for gettimeofday]) AC_TRY_LINK([#include ],[ struct timeval dummy; gettimeofday(&dummy, (void*) 0); ],[ AC_MSG_RESULT([yes]) AC_DEFINE([HAVE_GETTIMEOFDAY],1) ac_cv_func_gettimeofday=yes ],[ AC_MSG_RESULT([no]) AC_DEFINE([HAVE_GETTIMEOFDAY],0) ac_cv_func_gettimeofday=no ]) fi # Predefines and checks for C++ API support AH_TEMPLATE([CPPGLUE],[Define to 1 if you want to include the C++ code]) if test "$ac_with_cplusplus" = yes; then AC_MSG_CHECKING([for IBM's ICU library version >= 2.8]) AC_LANG_PUSH(C) AC_RUN_IFELSE([ AC_LANG_PROGRAM([[#include ]],[[ #if U_ICU_VERSION_MAJOR_NUM < 2 exit(1); #elif U_ICU_VERSION_MAJOR_NUM == 2 # if U_ICU_VERSION_MINOR_NUM < 8 exit(1); # else exit(0); # endif #else exit(0); #endif ]])],[ AC_MSG_RESULT([yes]) ],[ AC_MSG_RESULT([no]) AC_MSG_WARN([disabling cplusplus]) ac_with_cplusplus=no ]) AC_LANG_POP(C) fi if test "$ac_with_cplusplus" = yes ; then AC_DEFINE([CPPGLUE],1) fi # Predefines and checks for Java API support AH_TEMPLATE([JAVAGLUE],[Define to 1 if you want to include the Java code]) if test "$ac_with_java" = yes ; then AC_CHECK_PROG(ac_cv_have_gcj, gcj, yes, no) if test "$ac_cv_have_gcj" = yes; then AC_CACHE_CHECK([for java native interface headers], ac_cv_java_include, [ cat > conftest.java << EOF public class conftest { public static void main(String[[]] argv) { System.out.println(System.getProperty("java.home")); } } EOF java_home="`gcj --main=conftest -o conftest conftest.java; ./conftest`" if test X"$java_home" = X; then java_home=/usr fi if test -d "$java_home" -a -d "$java_home/include"; then ac_cv_java_headers=yes ac_cv_java_include="-I$java_home/include" gcjpath="$java_home/lib/gcc-lib/`gcj -dumpmachine`/`gcj -dumpversion`" if test -d "$gcjpath" -a -d "$gcjpath/include"; then ac_cv_java_include="$ac_cv_java_include -I$gcjpath/include" fi else # we have a non-working gcj ac_cv_have_gcj=no fi rm -fr conftest* ]) fi # gcj may have failed; in this case we want to try for a real java if test "$ac_cv_have_gcj" != yes; then AC_CHECK_PROG(ac_cv_have_java, java, yes, no) if test "$ac_cv_have_java" = yes; then AC_CHECK_PROG(ac_cv_have_javac, javac, yes, no) if test "$ac_cv_have_javac" = yes; then AC_CACHE_CHECK([for java native interface headers],ac_cv_java_include,[ cat > conftest.java << EOF public class conftest { public static void main(String[[]] argv) { System.out.println(System.getProperty("java.home")); } } EOF java_home=`javac conftest.java; java -classpath . conftest` case $target_os in cygwin*) java_home=`cygpath -u -p "$java_home"` ;; esac if test -d "$java_home"; then case $target_os in darwin*) java_include="$java_home/../../../Headers" ;; *) java_include="$java_home"/../include ;; esac if test -d "$java_include"; then ac_cv_java_headers=yes ac_cv_java_include="-I$java_include" case $target_os in aix*) ac_cv_java_include="-I$java_include -I$java_include/aix" ;; cygwin*) ac_cv_java_include="-I$java_include -I$java_include/win32" ;; darwin*) ;; hpux*) ac_cv_java_include="-I$java_include -I$java_include/hpux" ;; linux*) ac_cv_java_include="-I$java_include -I$java_include/linux" ;; osf*) ac_cv_java_include="-I$java_include -I$java_include/osf" ;; solaris*) ac_cv_java_include="-I$java_include -I$java_include/solaris" ;; *) AC_MSG_WARN([please add appropriate -I$java_include/ flag]) ac_cv_java_include="-I$java_include" ;; esac else AC_MSG_WARN([java headers not found, disabling java]) ac_cv_java_headers=no ac_cv_java_include= ac_with_java=no fi fi rm -fr conftest* ]) else AC_MSG_WARN([javac not found, disabling java]) ac_cv_java_headers=no ac_cv_java_include= ac_with_java=no fi else AC_MSG_WARN([java not found, disabling java]) ac_cv_java_headers=no ac_with_java=no fi fi fi if test "$ac_with_java" = yes ; then AC_DEFINE([JAVAGLUE],1) AC_SUBST(JAVAINC,$ac_cv_java_include) fi # Predefines and checks for Python API support AH_TEMPLATE([PYTHONGLUE],[Define to 1 if you want to include the Python code]) if test "$ac_with_python" = yes ; then AC_CHECK_PROG(ac_cv_have_python, python, yes, no) if test "$ac_cv_have_python" = yes; then AC_CACHE_CHECK([for python headers], ac_cv_python_include, [ ac_cv_python_include="-I`python -c 'import distutils.sysconfig; print distutils.sysconfig.get_python_inc()'`" ]) AC_CACHE_CHECK([where to install python libraries], ac_cv_python_libdir, [ echo "import distutils.sysconfig; print distutils.sysconfig.get_python_lib()" > conftest.py ac_cv_python_libdir=`python conftest.py` ]) else ac_with_python=no fi fi if test "$ac_with_python" = yes; then AC_DEFINE([PYTHONGLUE],1) AC_SUBST(PYTHONINC,$ac_cv_python_include) AC_SUBST(PYTHONLIB,$ac_cv_python_libdir) fi # Checks for entropy sources. AC_MSG_CHECKING([for platform-specific entropy devices]) AC_MSG_RESULT() case $target_os in cygwin*) AC_MSG_CHECKING([for wavein]) AC_MSG_RESULT(yes) AC_MSG_CHECKING([for wincrypt]) AC_MSG_RESULT(yes) AC_MSG_CHECKING([for console]) AC_MSG_RESULT(yes) ;; linux*) AC_CACHE_CHECK([for /dev/dsp],ac_cv_have_dev_dsp,[ if test -r /dev/dsp; then ac_cv_have_dev_dsp=yes else ac_cv_have_dev_dsp=no fi ]) if test "$ac_cv_have_dev_dsp" = yes; then AC_DEFINE([HAVE_DEV_DSP], 1) fi ;; solaris*) AC_CACHE_CHECK([for /dev/audio],ac_cv_have_dev_audio,[ if test -r /dev/audio; then ac_cv_have_dev_audio=yes else ac_cv_have_dev_audio=no fi ]) if test "$ac_cv_have_dev_audio" = yes; then AC_DEFINE([HAVE_DEV_AUDIO], 1) fi ;; *) AC_MSG_WARN(no specific entropy devices present) ;; esac case $target_os in cygwin*) ;; *) AC_MSG_CHECKING([for generic entropy devices]) AC_MSG_RESULT() AC_CACHE_CHECK([for /dev/random],ac_cv_have_dev_random,[ if test -r /dev/random; then ac_cv_have_dev_random=yes else ac_cv_have_dev_random=no fi ]) AC_CACHE_CHECK([for /dev/urandom],ac_cv_have_dev_urandom,[ if test -r /dev/urandom; then ac_cv_have_dev_urandom=yes else ac_cv_have_dev_urandom=no fi ]) AC_CACHE_CHECK([for /dev/tty],ac_cv_have_dev_tty,[ if test -r /dev/tty; then ac_cv_have_dev_tty=yes else ac_cv_have_dev_tty=no fi ]) ;; esac if test "$ac_cv_have_dev_random" = yes; then AC_DEFINE([HAVE_DEV_RANDOM],1) fi if test "$ac_cv_have_dev_urandom" = yes; then AC_DEFINE([HAVE_DEV_URANDOM],1) fi if test "$ac_cv_have_dev_tty" = yes; then AC_DEFINE([HAVE_DEV_TTY],1) fi if test "$ac_enable_debug" != yes; then case $bc_target_arch in alpha*) CPPFLAGS="$CPPFLAGS -DOPTIMIZE_ALPHA" ;; arm*) CPPFLAGS="$CPPFLAGS -DOPTIMIZE_ARM" ;; athlon*) CPPFLAGS="$CPPFLAGS -DOPTIMIZE_I386 -DOPTIMIZE_MMX" CFLAGS="$CFLAGS -mmmx" ;; i386) CPPFLAGS="$CPPFLAGS -DOPTIMIZE_I386" ;; i486) CPPFLAGS="$CPPFLAGS -DOPTIMIZE_I486" ;; i586) CPPFLAGS="$CPPFLAGS -DOPTIMIZE_I586" ;; i686) CPPFLAGS="$CPPFLAGS -DOPTIMIZE_I686" ;; ia64) CPPFLAGS="$CPPFLAGS -DOPTIMIZE_IA64" ;; m68k) CPPFLAGS="$CPPFLAGS -DOPTIMIZE_M68K" ;; pentium) CPPFLAGS="$CPPFLAGS -DOPTIMIZE_I586" ;; pentium-mmx) CPPFLAGS="$CPPFLAGS -DOPTIMIZE_I586 -DOPTIMIZE_MMX" CFLAGS="$CFLAGS -mmmx" ;; pentiumpro) CPPFLAGS="$CPPFLAGS -DOPTIMIZE_I686" ;; pentium2) CPPFLAGS="$CPPFLAGS -DOPTIMIZE_I686 -DOPTIMIZE_MMX" CFLAGS="$CFLAGS -mmmx" ;; pentium3) CPPFLAGS="$CPPFLAGS -DOPTIMIZE_I686 -DOPTIMIZE_MMX -DOPTIMIZE_SSE" CFLAGS="$CFLAGS -msse" ;; pentium4) CPPFLAGS="$CPPFLAGS -DOPTIMIZE_I686 -DOPTIMIZE_MMX -DOPTIMIZE_SSE -DOPTIMIZE_SSE2" CFLAGS="$CFLAGS -msse2" ;; powerpc) CPPFLAGS="$CPPFLAGS -DOPTIMIZE_POWERPC" ;; powerpc64) CPPFLAGS="$CPPFLAGS -DOPTIMIZE_POWERPC64" ;; s390x) CPPFLAGS="$CPPFLAGS -DOPTIMIZE_S390X" ;; sparcv8) CPPFLAGS="$CPPFLAGS -DOPTIMIZE_SPARCV8" CFLAGS="$CFLAGS -Wa,-xarch=v8" ;; sparcv8plus*) CPPFLAGS="$CPPFLAGS -DOPTIMIZE_SPARCV8PLUS" CFLAGS="$CFLAGS -Wa,-xarch=v8plus" ;; sparcv9*) CPPFLAGS="$CPPFLAGS -DOPTIMIZE_SPARCV9" CFLAGS="$CFLAGS -Wa,-xarch=v9" ;; x86_64) CPPFLAGS="$CPPFLAGS -DOPTIMIZE_X86_64" ;; esac fi if test "$ac_enable_debug" != yes; then # find out how to use assembler BEECRYPT_ASM_DEFS BEECRYPT_ASM_TEXTSEG BEECRYPT_ASM_GLOBL BEECRYPT_ASM_GSYM_PREFIX BEECRYPT_ASM_LSYM_PREFIX BEECRYPT_ASM_ALIGN fi # generate assembler source files from m4 files BEECRYPT_ASM_SOURCES # Check for standard types and integers of specific sizes BEECRYPT_INT_TYPES BEECRYPT_CPU_BITS MAYBE_SUB= # MAYBE_LTLIB= if test "$ac_with_cplusplus" = yes; then MAYBE_SUB="$MAYBE_SUB c++" # MAYBE_LTLIB="$MAYBE_LTLIB libbeecrypt_cxx.la" fi if test "$ac_with_java" = yes; then MAYBE_SUB="$MAYBE_SUB java" # MAYBE_LTLIB="$MAYBE_LTLIB libbeecrypt_java.la" fi if test "$ac_with_python" = yes; then MAYBE_SUB="$MAYBE_SUB python" fi AC_SUBST([MAYBE_SUB]) # AC_SUBST([MAYBE_LTLIB]) # Check where to install the libraries bc_libalt= case $target_os in linux*) case $bc_target_arch in powerpc64 | s390x | x86_64) bc_libalt="64" ;; esac ;; esac AC_SUBST(LIBALT,$bc_libalt) # Generate output files. AC_CONFIG_FILES([ Makefile Doxyfile config.m4 c++/Makefile c++/beeyond/Makefile c++/crypto/Makefile c++/crypto/interfaces/Makefile c++/crypto/spec/Makefile c++/io/Makefile c++/nio/Makefile c++/lang/Makefile c++/provider/Makefile c++/security/Makefile c++/security/cert/Makefile c++/security/interfaces/Makefile c++/security/spec/Makefile c++/util/Makefile docs/Makefile gas/Makefile java/Makefile masm/Makefile python/Makefile python/test/Makefile tests/Makefile ]) AC_CONFIG_FILES([gnu.h],[ if test $srcdir != "."; then cp gnu.h $ac_top_srcdir/gnu.h fi ]) AC_CONFIG_COMMANDS_POST([ if test -h "beecrypt"; then rm -f beecrypt fi $LN_S $srcdir beecrypt ]) AC_OUTPUT