author: kx <kx@radix-linux.su> 2024-12-20 16:11:07 +0300
committer: kx <kx@radix-linux.su> 2024-12-20 16:11:07 +0300
commit: 868b2b66b564b5c00e3a74d10be45db7151627ac
parent: cce2ae8d3312493b7653358bb4af201d3271377b
Commit Summary:
Diffstat:
1 file changed, 243 insertions, 0 deletions
diff --git a/configure.ac b/configure.ac
new file mode 100644
index 0000000..16f7938
--- /dev/null
+++ b/configure.ac
@@ -0,0 +1,295 @@
+
+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.14],[Andrey V.Kosteltsev <support@radix-linux.su>],[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<lib dir> if you have libraries in a
+ nonstandard directory <lib dir>])
+
+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])
+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