diff options
Diffstat (limited to 'configure.ac')
| -rw-r--r-- | configure.ac | 273 |
1 files changed, 273 insertions, 0 deletions
diff --git a/configure.ac b/configure.ac new file mode 100644 index 0000000..5eb8c0f --- /dev/null +++ b/configure.ac @@ -0,0 +1,273 @@ + +AC_PREREQ([2.71]) + +AC_INIT([MCPU Library],[0.4.0],[Andrey V.Kosteltsev <support@radix-linux.su>],[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 |
