AC_PREREQ([2.71]) AC_INIT([MCPU Library],[0.4.0],[Andrey V.Kosteltsev ],[libmcpu],[https://radix-linux.su]) AC_MCPU_REQUIRE_BASH AC_MCPU_HEADLINE([libmcpu], [MCPU Library], [LIBMCPU_VERSION],dnl [Copyright (C) 2026 Andrey V.Kosteltsev])dnl AC_MSG_CFG_PART(Getting the canonical system type) AC_CANONICAL_HOST AC_CANONICAL_TARGET AC_USE_SYSTEM_EXTENSIONS dnl Должна вызываться строго после AC_CANONICAL_TARGET . AC_ARG_PROGRAM AC_MSG_CFG_PART(Init Automake environment) AC_CONFIG_SRCDIR([acsite.m4]) AC_CONFIG_HEADERS([config.h]) AC_CONFIG_MACRO_DIR([m4]) AM_INIT_AUTOMAKE([foreign dist-xz no-dist-gzip subdir-objects]) AC_MSG_CFG_PART(Test for GNU Compiler Collection) AC_USE_SYSTEM_EXTENSIONS AC_PROG_CC AC_PROG_LN_S MCPU_REQUIRE_GCC 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_LIBMCPU_LT_VERSION_INFO([1:0:0]) AC_MSG_CFG_PART(Test for LD_LIBRARY_PATH Environment Variable) AC_LD_LIBRARY_PATH AC_MSG_CFG_PART(Test for required POSIX interfaces) AC_CHECK_HEADERS( [sys/mman.h sys/stat.h fcntl.h unistd.h poll.h time.h], [], [AC_MSG_ERROR([LibMCPU requires POSIX mmap headers])] ) AC_CHECK_FUNCS( [mmap mprotect munmap sysconf open openat close dup read write lseek link linkat unlink unlinkat mkdir mkdirat chmod fchmodat chown fchownat access faccessat rename renameat rmdir symlink symlinkat readlink readlinkat fstatat fcntl pipe2 ppoll fsync truncate ftruncate fchmod fchown clock_gettime clock_getres clock_nanosleep], [], [AC_MSG_ERROR([LibMCPU requires mmap/mprotect/munmap/sysconf])] ) AC_MSG_CFG_PART(Test for LibMPUIO) dnl ============================================================ dnl Check for LibMPU dnl ============================================================ AC_CHECK_LIBMPU( [1.0.25], [yes], [ AC_DEFINE( [HAVE_LIBMPU], [1], [Define to 1 if LibMPU is available.] ) LIBMPU_VERSION=`$LIBMPU_CONFIG --version 2>/dev/null` AC_SUBST([LIBMPU_VERSION]) ], [ AC_MSG_ERROR([LibMPU version 1.0.25 or later is required.]) ] ) dnl ============================================================ dnl Check for LibMPUIO dnl ============================================================ AC_CHECK_LIBMPUIO( [1.0.4], [yes], [ AC_DEFINE( [HAVE_LIBMPUIO], [1], [Define to 1 if LibMPUIO is available.] ) LIBMPUIO_VERSION=`$LIBMPUIO_CONFIG --version 2>/dev/null` AC_SUBST([LIBMPUIO_VERSION]) ], [ AC_MSG_ERROR([LibMPUIO version 1.0.4 or later is required.]) ] ) AC_MSG_CFG_PART(Select HOST sysdeps) MCPU_SYSDEP_DIR_NAMES AC_MSG_CFG_PART(Check required HOST errno translator) mcpu_errno_sysdep_found=no mcpu_errno_sysdep_path= for mcpu_sysdir in $sysnames; do if test -f "$srcdir/$mcpu_sysdir/sys-errno.c"; then mcpu_errno_sysdep_found=yes mcpu_errno_sysdep_path="$mcpu_sysdir" break fi done AC_MSG_CHECKING([LibMCPU sysdeps for HOST errno translation]) if test "x$mcpu_errno_sysdep_found" = xyes; then AC_MSG_RESULT([$mcpu_errno_sysdep_path]) else AC_MSG_RESULT([not found]) AC_MSG_ERROR([LibMCPU does not support host $host: required sysdep implementation for __cpu_errno_from_host() was not found.]) fi AC_MSG_CFG_PART(Check required syscall sysdeps) for mcpu_syscall in open creat close dup read write lseek link unlink chdir mkdir chmod chown access rename rmdir symlink readlink stat fstat lstat fcntl pipe2 getdents select fsync truncate ftruncate fchmod fchown fchdir clock_gettime clock_getres clock_nanosleep; do mcpu_sysdep_found=no mcpu_sysdep_path= for mcpu_sysdir in $sysnames; do if test -f "$srcdir/$mcpu_sysdir/sys-$mcpu_syscall.c"; then mcpu_sysdep_found=yes mcpu_sysdep_path="$mcpu_sysdir" break fi done AC_MSG_CHECKING([LibMCPU sysdeps for $mcpu_syscall]) if test "x$mcpu_sysdep_found" = xyes; then AC_MSG_RESULT([$mcpu_sysdep_path]) else AC_MSG_RESULT([not found]) AC_MSG_ERROR([LibMCPU does not support host $host: required sysdep implementation for __cpu_sys_$mcpu_syscall() was not found.]) fi done AC_MSG_CFG_PART(Define MCPU installation layout) mcpu_prefix="$prefix" if test "x$mcpu_prefix" = xNONE; then mcpu_prefix="$ac_default_prefix" fi mcpu_exec_prefix="$exec_prefix" if test "x$mcpu_exec_prefix" = xNONE; then mcpu_exec_prefix="$mcpu_prefix" fi mcpu_save_prefix="$prefix" mcpu_save_exec_prefix="$exec_prefix" prefix="$mcpu_prefix" exec_prefix="$mcpu_exec_prefix" eval mcpu_bindir="\"$bindir\"" eval mcpu_libdir="\"$libdir\"" prefix="$mcpu_save_prefix" exec_prefix="$mcpu_save_exec_prefix" mcpu_root="$mcpu_libdir/mcpu" mcpu_private_bindir="$mcpu_root/bin" mcpu_etcdir="$mcpu_root/etc" MCPU_ROOT="$mcpu_root" MCPU_BINDIR="$mcpu_private_bindir" MCPU_ETCDIR="$mcpu_etcdir" AC_SUBST([MCPU_ROOT]) AC_SUBST([MCPU_BINDIR]) AC_SUBST([MCPU_ETCDIR]) mcpu_public_link_root="$mcpu_private_bindir" case "$mcpu_bindir:$mcpu_private_bindir" in "$mcpu_exec_prefix"/*:"$mcpu_exec_prefix"/*) mcpu_bindir_rel=${mcpu_bindir#"$mcpu_exec_prefix/"} mcpu_target_rel=${mcpu_private_bindir#"$mcpu_exec_prefix/"} mcpu_up= mcpu_rest=$mcpu_bindir_rel while :; do mcpu_up="../$mcpu_up" case "$mcpu_rest" in */*) mcpu_rest=${mcpu_rest#*/} ;; *) break ;; esac done mcpu_public_link_root="$mcpu_up$mcpu_target_rel" ;; esac MCPU_AS_PUBLIC_LINK_TARGET="$mcpu_public_link_root/mcpu-as" MCPU_LD_PUBLIC_LINK_TARGET="$mcpu_public_link_root/mcpu-ld" MCPU_RUN_PUBLIC_LINK_TARGET="$mcpu_public_link_root/mcpu-run" MCPU_READELF_PUBLIC_LINK_TARGET="$mcpu_public_link_root/mcpu-readelf" MCPU_AR_PUBLIC_LINK_TARGET="$mcpu_public_link_root/mcpu-ar" MCPU_NM_PUBLIC_LINK_TARGET="$mcpu_public_link_root/mcpu-nm" MCPU_OBJDUMP_PUBLIC_LINK_TARGET="$mcpu_public_link_root/mcpu-objdump" MCPU_STRIP_PUBLIC_LINK_TARGET="$mcpu_public_link_root/mcpu-strip" MCPU_OBJCOPY_PUBLIC_LINK_TARGET="$mcpu_public_link_root/mcpu-objcopy" AC_SUBST([MCPU_AS_PUBLIC_LINK_TARGET]) AC_SUBST([MCPU_LD_PUBLIC_LINK_TARGET]) AC_SUBST([MCPU_RUN_PUBLIC_LINK_TARGET]) AC_SUBST([MCPU_READELF_PUBLIC_LINK_TARGET]) AC_SUBST([MCPU_AR_PUBLIC_LINK_TARGET]) AC_SUBST([MCPU_NM_PUBLIC_LINK_TARGET]) AC_SUBST([MCPU_OBJDUMP_PUBLIC_LINK_TARGET]) AC_SUBST([MCPU_STRIP_PUBLIC_LINK_TARGET]) AC_SUBST([MCPU_OBJCOPY_PUBLIC_LINK_TARGET]) AC_MSG_CFG_PART(OUTPUT Substitutions) AC_CONFIG_FILES([ Makefile cpu/Makefile utils/Makefile sysroot/Makefile tests/Makefile man/Makefile man/ru/Makefile mcpu-config mcpu.pc ]) AC_OUTPUT AC_MSG_CFG_PART(Configuration summary) AC_MSG_NOTICE([LibMCPU configuration:]) AC_MSG_NOTICE([ version : $PACKAGE_VERSION]) AC_MSG_NOTICE([ host : $host]) AC_MSG_NOTICE([ host base machine : $base_machine]) AC_MSG_NOTICE([ host machine : $MCPU_HOST_MACHINE]) AC_MSG_NOTICE([ host data model : $MCPU_HOST_DATA_MODEL]) AC_MSG_NOTICE([ sysdeps : $sysnames]) AC_MSG_NOTICE([ prefix : $prefix]) AC_MSG_NOTICE([ library directory : $mcpu_libdir]) AC_MSG_NOTICE([ install MCPU root : $mcpu_root]) AC_MSG_NOTICE([ private commands : $mcpu_private_bindir]) AC_MSG_NOTICE([ MCPU configuration : $mcpu_etcdir/mcpu-ld.conf]) AC_MSG_NOTICE([ public mcpu-as : $mcpu_bindir/mcpu-as]) AC_MSG_NOTICE([ public symlink : $MCPU_AS_PUBLIC_LINK_TARGET]) AC_MSG_NOTICE([ public mcpu-ld : $mcpu_bindir/mcpu-ld]) AC_MSG_NOTICE([ public symlink : $MCPU_LD_PUBLIC_LINK_TARGET]) AC_MSG_NOTICE([ public mcpu-run : $mcpu_bindir/mcpu-run]) AC_MSG_NOTICE([ public symlink : $MCPU_RUN_PUBLIC_LINK_TARGET]) AC_MSG_NOTICE([ public mcpu-readelf : $mcpu_bindir/mcpu-readelf]) AC_MSG_NOTICE([ public symlink : $MCPU_READELF_PUBLIC_LINK_TARGET]) AC_MSG_NOTICE([ public mcpu-ar : $mcpu_bindir/mcpu-ar]) AC_MSG_NOTICE([ public symlink : $MCPU_AR_PUBLIC_LINK_TARGET]) AC_MSG_NOTICE([ public mcpu-nm : $mcpu_bindir/mcpu-nm]) AC_MSG_NOTICE([ public symlink : $MCPU_NM_PUBLIC_LINK_TARGET]) AC_MSG_NOTICE([ public mcpu-objdump : $mcpu_bindir/mcpu-objdump]) AC_MSG_NOTICE([ public symlink : $MCPU_OBJDUMP_PUBLIC_LINK_TARGET]) AC_MSG_NOTICE([ public mcpu-strip : $mcpu_bindir/mcpu-strip]) AC_MSG_NOTICE([ public symlink : $MCPU_STRIP_PUBLIC_LINK_TARGET]) AC_MSG_NOTICE([ public mcpu-objcopy : $mcpu_bindir/mcpu-objcopy]) AC_MSG_NOTICE([ public symlink : $MCPU_OBJCOPY_PUBLIC_LINK_TARGET]) AC_MSG_NOTICE([ mpu-config : $LIBMPU_CONFIG]) AC_MSG_NOTICE([ mpuio-config : $LIBMPUIO_CONFIG]) AC_MSG_NOTICE([ LibMPU version : $LIBMPU_VERSION]) AC_MSG_NOTICE([ LibMPUIO version : $LIBMPUIO_VERSION]) AC_MSG_NOTICE([ LibMPU CPPFLAGS : $LIBMPU_CPPFLAGS]) AC_MSG_NOTICE([ LibMPU CFLAGS : $LIBMPU_CFLAGS]) AC_MSG_NOTICE([ LibMPU LDFLAGS : $LIBMPU_LDFLAGS]) AC_MSG_NOTICE([ LibMPU LIBS : $LIBMPU_LIBS]) AC_MSG_NOTICE([ LibMPUIO CPPFLAGS : $LIBMPUIO_CPPFLAGS]) AC_MSG_NOTICE([ LibMPUIO CFLAGS : $LIBMPUIO_CFLAGS]) AC_MSG_NOTICE([ LibMPUIO LDFLAGS : $LIBMPUIO_LDFLAGS]) AC_MSG_NOTICE([ LibMPUIO LIBS : $LIBMPUIO_LIBS]) if test -f "config.h"; then echo "" echo "Now you can run:" echo " \`${TB}make${TN}' to compile," echo " \`${TB}make tests${TN}' to run the test suite," echo " \`${TB}make install${TN}' to install ${TB}LibMCPU${TN}," echo " \`${TB}make dist${TN}' to create distributable tarballs, or" echo " \`${TB}make distclean${TN}' to clean before configure for another target." echo "Enjoy." echo "" fi