AC_PREREQ([2.71]) AC_LIBMPU_HEADLINE([libmpu], [MPU Emulation Library],dnl [LIBMPU_VERSION], [configure.ac],dnl [Copyright (c) 1999-2024 Andrey V.Kosteltsev])dnl AC_INIT([MPU Library],[1.0.15],[Andrey V.Kosteltsev ],[libmpu],[https://radix-linux.su]) AC_MSG_CFG_PART(Getting the canonical system type) dnl dnl NOTE: Следующие вызовы должны осуществляться строго до dnl вызова AM_INIT_AUTOMAKE . dnl dnl Для библиотеки достаточно вызвать AC_CANONICAL_HOST и при этом dnl будут определены build_alias и host_alias. Однако опция --target dnl будет запрещена. dnl dnl Для программ достаточно задать AC_CANONICAL_TARGET и при этом dnl будут определены build_alias, host_alias и target_alias. Естественно dnl будут доступны все три опции: --build, --host, и --target . dnl AC_CANONICAL_HOST AC_CANONICAL_TARGET AC_USE_SYSTEM_EXTENSIONS dnl Должна вызываться строго после AC_CANONICAL_TARGET . AC_ARG_PROGRAM AC_MSG_CFG_PART(Init Automake environment) AM_INIT_AUTOMAKE([dist-xz no-dist-gzip]) AC_CONFIG_SRCDIR(acsite.m4) AC_CONFIG_HEADERS(config.h) AC_CONFIG_MACRO_DIRS([m4]) AC_MSG_CFG_PART(Test for GNU Compiler Colection) AC_PROG_CC if test $ac_cv_c_compiler_gnu != yes; then AC_MSG_ERROR([ ******** ${TB}The MPU Library should be compiled using the GNU compiler only.${TN}]) fi AC_SUBST(cross_compiling) AC_PROG_CPP AC_MSG_CFG_PART(Test for alias attribute) LIBMPU_ALIAS_ATTRIBUTE AC_MSG_CFG_PART(Test for hidden visibility attribute) LIBMPU_HIDDEN_VISIBILITY_ATTRIBUTE AC_MSG_CFG_PART(Test for Target Machine Data Types) AC_GCC_TYPES AC_MSG_CFG_PART(Test for Target Machine Size of Data Types) AC_GCC_SIZEOF_TYPES AC_GCC_WIDTH_OF_TYPES AC_MSG_CFG_PART(Test for Target Machine Byte Order) AC_GCC_BYTE_ORDER AC_GCC_FLOAT_WORD_ORDER AC_MSG_CFG_PART(Test for Target Machine Programming Model) AC_GCC_PROGRAMMING_MODEL AC_MSG_CFG_PART(Test for Target Machine Register Width) AC_GCC_REGISTER_WIDTH AC_MSG_CFG_PART(Test for GNU Binutils) LIBMPU_PROG_BINUTILS AC_MSG_CFG_PART(Test how to build C programs using POSIX threads) AX_PTHREAD([ LIBS="$PTHREAD_LIBS $LIBS" CFLAGS="$CFLAGS $PTHREAD_CFLAGS" CC="$PTHREAD_CC"]) AC_MSG_CFG_PART(Test for GNU Source) AC_USE_SYSTEM_EXTENSIONS if test $host != $build; then AC_MSG_CFG_PART(Test for Build Machile Compiler) AC_PROG_BUILD_CC AC_PATH_PROG_BUILD_STRIP_S fi AC_SUBST(BUILD_CFLAGS) AC_SUBST(BUILD_LDFLAGS) AC_ARG_VAR([BUILD_CC],[Build C compiler command]) AC_ARG_VAR([BUILD_CFLAGS],[Build C compiler flags]) AC_ARG_VAR([BUILD_LDFLAGS],[Build linker flags, e.g. -L if you have libraries in a nonstandard directory ]) AC_MSG_CFG_PART(Test for GCC builtin functions) AX_GCC_BUILTIN([__builtin_popcount]) AX_GCC_BUILTIN([__builtin_parity]) AC_MSG_CFG_PART(Test for GNU Gettext) AM_GNU_GETTEXT([external]) AM_GNU_GETTEXT_VERSION AC_MSG_CFG_PART(Test for GNU libtool) LT_PREREQ([2.4.6]) LT_INIT AC_SUBST([LIBTOOL_DEPS]) AC_MSG_CFG_PART(Test for libtool VERSION Information) AC_LIBMPU_LT_VERSION_INFO AC_MSG_CFG_PART(Test for LD_LIBRARY_PATH Environment Variable) AC_LD_LIBRARY_PATH dnl ============================================================ dnl Arguments to specify presence of other packages/features: dnl ============================================================ AC_MSG_CFG_PART(Setting a limit of the real number's size) AC_ARG_WITH([headers], AS_HELP_STRING([--with-headers=PATH],[location of system headers to use (for example /usr/src/linux/include) @<:@default=compiler default@:>@]), [sysheaders=$withval], [sysheaders='']) AC_SUBST(sysheaders) AC_ARG_WITH([real-io-limit], AS_HELP_STRING([],[]) AS_HELP_STRING([--with-real-io-limit=SIZE_OF_REAL_NUMBER_IN_BITS],[maximum size of real numbers in bits for input/output(IO) operations. Only the following values of argument are admissible:]) dnl AS_HELP_STRING([],[]) AS_HELP_STRING([],[1024, 2048, 4096, 8192, 16384, 32768, 65536.]) dnl AS_HELP_STRING([],[]) AS_HELP_STRING([],[Maximum value is 65536. @<:@default=65536@:>@]), [real_io_limit=$withval], [real_io_limit=65536]) case $real_io_limit in 1024) ;; 2048) ;; 4096) ;; 8192) ;; 16384) ;; 32768) ;; 65536) ;; *) AC_MSG_WARN([ ******** ${TB}Invalid value of real_io_limit: $real_io_limit${TN} ******** ${TB}for real number IO operations.${TN} ******** ${TB}The value of real_io_limit is set to 65536.${TN}]) real_io_limit=65536 ;; esac AC_ARG_WITH([real-math-f-limit], AS_HELP_STRING([],[]) AS_HELP_STRING([--with-real-math-f-limit=SIZE_OF_REAL_NUMBER_IN_BITS],[maximum size of real numbers in bits for mathematic functions. This value has a higher priority than the value REAL_IO_LIMIT, so]) dnl AS_HELP_STRING([],[]) AS_HELP_STRING([],[if real_io_limit < real_math_f_limit ; then]) AS_HELP_STRING([],[real_io_limit = real_math_f_limit]) AS_HELP_STRING([],[fi]) dnl AS_HELP_STRING([],[]) AS_HELP_STRING([],[Only the following values of argument are admissible:]) dnl AS_HELP_STRING([],[]) AS_HELP_STRING([],[1024, 2048, 4096, 8192, 16384.]) dnl AS_HELP_STRING([],[]) AS_HELP_STRING([],[Maximum value is 16384. @<:@default=16384@:>@]) AS_HELP_STRING([],[]), [real_math_f_limit=$withval], [real_math_f_limit=16384]) case $real_math_f_limit in 1024) ;; 2048) ;; 4096) ;; 8192) ;; 16384) ;; *) AC_MSG_WARN([ ******** ${TB}Invalid value of real_math_f_limit: $real_math_f_limit${TN} ******** ${TB}for mathematic operations.${TN} ******** ${TB}The value of real_math_f_limit is set to 16384.${TN}]) real_math_f_limit=16384 ;; esac test $real_io_limit -lt $real_math_f_limit && real_io_limit=$real_math_f_limit AC_MSG_CHECKING([the maximum size of real numbers for IO operations]) AC_MSG_RESULT([${TB}$real_io_limit${TN}]) AC_MSG_CHECKING([the maximum size of real numbers for mathematic operations]) AC_MSG_RESULT([${TB}$real_math_f_limit${TN}]) AC_SUBST(LIBMPU_REAL_IO_LIMIT, $real_io_limit) AC_SUBST(LIBMPU_REAL_MATH_F_LIMIT, $real_math_f_limit) AC_SUBST(LIBMPU_REAL_MAX_WIDTH, $real_io_limit) dnl dnl End of arguments to specify other packages/features. dnl ============================================================ dnl ============================================================ dnl Locate tools: dnl ============================================================ AC_MSG_CFG_PART(Test for Header files) dnl dnl Check for system header files. dnl ============================= dnl /* GetText частично проверил. Но мы делаем для себя. */ AC_CHECK_INCLUDES_DEFAULT AC_PROG_EGREP AC_CHECK_HEADERS( locale.h ) AC_CHECK_HEADERS( sys/types.h sys/stat.h stdlib.h stddef.h ) AC_CHECK_HEADERS( memory.h string.h strings.h ) AC_CHECK_HEADERS( inntypes.h stdint.h unistd.h ) AC_CHECK_HEADERS( fcntl.h errno.h ) AC_CHECK_HEADERS( sys/file.h ) AC_CHECK_HEADERS( sys/uio.h ) AC_CHECK_HEADERS( sys/wait.h ) AC_CHECK_HEADERS( stdarg.h ) AC_CHECK_HEADERS( sys/time.h ) AC_CHECK_HEADERS( limits.h ) AC_CHECK_HEADERS( endian.h ) AC_CHECK_HEADERS_ONCE([sys/time.h]) AC_MSG_CFG_PART(Test for Libc functions) dnl dnl Check for glibc funcs. dnl ============================= dnl /* GetText частично проверил. Но мы делаем для себя. */ AC_CHECK_FUNCS([iconv putenv setenv setlocale]) # TODO: check programs test -n "$critic_missing" && AC_MSG_ERROR([ ******** ${TB}These critical programs are missing or too old: $critic_missing${TN} ******** ${TB}Check the INSTALL file for required versions.${TN}]) test -n "$aux_missing" && AC_MSG_WARN([ ******** ${TB}These auxiliary programs are missing or too old: $aux_missing${TN} ******** ${TB}some features will be disabled.${TN} ******** ${TB}Check the INSTALL file for required versions.${TN}]) dnl dnl End of locate tools: dnl ============================================================ dnl ============================================================ dnl Define variables accoring to arguments: dnl ============================================================ # if using special system headers, find out the compiler's sekrit # header directory and add that to the list. NOTE: Only does the # right thing on a system that doesn't need fixincludes. # (Not presently a problem.) if test -n "$sysheaders"; then SYSINCLUDES=-nostdinc for d in include include-fixed; do i=`$CC -print-file-name="$d"` && test "x$i" != x && test "x$i" != "x$d" && SYSINCLUDES="$SYSINCLUDES -isystem $i" done SYSINCLUDES="$SYSINCLUDES -isystem `echo $sysheaders | sed 's/:/ -isystem /g'`" fi AC_SUBST(SYSINCLUDES) dnl dnl End of variables definition. dnl ============================================================ AC_MSG_CFG_PART(OUTPUT Substitutions) AC_CONFIG_FILES([ po/Makefile.in Makefile mpu/Makefile include/libmpu.h mpu-config mpu.pc man/Makefile man/ru/Makefile]) AC_OUTPUT if test -f "config.h"; then echo "" echo "Now you can run:" echo " \`${TB}make${TN}' to compile," echo " \`${TB}make install${TN}' to make and install ${TB}libmpu${TN}," echo " \`${TB}make dist${TN}' to create distributable tarballs, or" echo " \`${TB}make distclean${TN}' to clean before configure for another target." echo "Good luck." echo "" fi