Annotation of embedaddon/libiconv/srcm4/canonicalize.m4, revision 1.1.1.2

1.1.1.2 ! misho       1: # canonicalize.m4 serial 30
1.1       misho       2: 
1.1.1.2 ! misho       3: dnl Copyright (C) 2003-2007, 2009-2019 Free Software Foundation, Inc.
1.1       misho       4: 
                      5: dnl This file is free software; the Free Software Foundation
                      6: dnl gives unlimited permission to copy and/or distribute it,
                      7: dnl with or without modifications, as long as this notice is preserved.
                      8: 
                      9: # Provides canonicalize_file_name and canonicalize_filename_mode, but does
                     10: # not provide or fix realpath.
                     11: AC_DEFUN([gl_FUNC_CANONICALIZE_FILENAME_MODE],
                     12: [
                     13:   AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS])
                     14:   AC_CHECK_FUNCS_ONCE([canonicalize_file_name])
                     15:   AC_REQUIRE([gl_DOUBLE_SLASH_ROOT])
                     16:   AC_REQUIRE([gl_FUNC_REALPATH_WORKS])
                     17:   if test $ac_cv_func_canonicalize_file_name = no; then
                     18:     HAVE_CANONICALIZE_FILE_NAME=0
1.1.1.2 ! misho      19:   else
        !            20:     case "$gl_cv_func_realpath_works" in
        !            21:       *yes) ;;
        !            22:       *)    REPLACE_CANONICALIZE_FILE_NAME=1 ;;
        !            23:     esac
1.1       misho      24:   fi
                     25: ])
                     26: 
                     27: # Provides canonicalize_file_name and realpath.
                     28: AC_DEFUN([gl_CANONICALIZE_LGPL],
                     29: [
                     30:   AC_REQUIRE([gl_STDLIB_H_DEFAULTS])
                     31:   AC_REQUIRE([gl_CANONICALIZE_LGPL_SEPARATE])
                     32:   if test $ac_cv_func_canonicalize_file_name = no; then
                     33:     HAVE_CANONICALIZE_FILE_NAME=0
                     34:     if test $ac_cv_func_realpath = no; then
                     35:       HAVE_REALPATH=0
1.1.1.2 ! misho      36:     else
        !            37:       case "$gl_cv_func_realpath_works" in
        !            38:         *yes) ;;
        !            39:         *)    REPLACE_REALPATH=1 ;;
        !            40:       esac
1.1       misho      41:     fi
1.1.1.2 ! misho      42:   else
        !            43:     case "$gl_cv_func_realpath_works" in
        !            44:       *yes)
        !            45:         ;;
        !            46:       *)
        !            47:         REPLACE_CANONICALIZE_FILE_NAME=1
        !            48:         REPLACE_REALPATH=1
        !            49:         ;;
        !            50:     esac
1.1       misho      51:   fi
                     52: ])
                     53: 
                     54: # Like gl_CANONICALIZE_LGPL, except prepare for separate compilation
                     55: # (no REPLACE_CANONICALIZE_FILE_NAME, no REPLACE_REALPATH, no AC_LIBOBJ).
                     56: AC_DEFUN([gl_CANONICALIZE_LGPL_SEPARATE],
                     57: [
                     58:   AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS])
                     59:   AC_CHECK_FUNCS_ONCE([canonicalize_file_name getcwd readlink])
                     60:   AC_REQUIRE([gl_DOUBLE_SLASH_ROOT])
                     61:   AC_REQUIRE([gl_FUNC_REALPATH_WORKS])
                     62:   AC_CHECK_HEADERS_ONCE([sys/param.h])
                     63: ])
                     64: 
                     65: # Check whether realpath works.  Assume that if a platform has both
                     66: # realpath and canonicalize_file_name, but the former is broken, then
                     67: # so is the latter.
                     68: AC_DEFUN([gl_FUNC_REALPATH_WORKS],
                     69: [
                     70:   AC_CHECK_FUNCS_ONCE([realpath])
1.1.1.2 ! misho      71:   AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
1.1       misho      72:   AC_CACHE_CHECK([whether realpath works], [gl_cv_func_realpath_works], [
                     73:     touch conftest.a
                     74:     mkdir conftest.d
                     75:     AC_RUN_IFELSE([
                     76:       AC_LANG_PROGRAM([[
                     77:         ]GL_NOCRASH[
                     78:         #include <stdlib.h>
                     79:         #include <string.h>
                     80:       ]], [[
                     81:         int result = 0;
                     82:         {
                     83:           char *name = realpath ("conftest.a", NULL);
                     84:           if (!(name && *name == '/'))
                     85:             result |= 1;
1.1.1.2 ! misho      86:           free (name);
1.1       misho      87:         }
                     88:         {
                     89:           char *name = realpath ("conftest.b/../conftest.a", NULL);
                     90:           if (name != NULL)
                     91:             result |= 2;
1.1.1.2 ! misho      92:           free (name);
1.1       misho      93:         }
                     94:         {
                     95:           char *name = realpath ("conftest.a/", NULL);
                     96:           if (name != NULL)
                     97:             result |= 4;
1.1.1.2 ! misho      98:           free (name);
1.1       misho      99:         }
                    100:         {
                    101:           char *name1 = realpath (".", NULL);
                    102:           char *name2 = realpath ("conftest.d//./..", NULL);
1.1.1.2 ! misho     103:           if (! name1 || ! name2 || strcmp (name1, name2))
1.1       misho     104:             result |= 8;
1.1.1.2 ! misho     105:           free (name1);
        !           106:           free (name2);
1.1       misho     107:         }
                    108:         return result;
                    109:       ]])
1.1.1.2 ! misho     110:      ],
        !           111:      [gl_cv_func_realpath_works=yes],
        !           112:      [gl_cv_func_realpath_works=no],
        !           113:      [case "$host_os" in
        !           114:                        # Guess yes on glibc systems.
        !           115:         *-gnu* | gnu*) gl_cv_func_realpath_works="guessing yes" ;;
        !           116:                        # Guess yes on musl systems.
        !           117:         *-musl*)       gl_cv_func_realpath_works="guessing yes" ;;
        !           118:                        # Guess no on native Windows.
        !           119:         mingw*)        gl_cv_func_realpath_works="guessing no" ;;
        !           120:                        # If we don't know, assume the worst.
        !           121:         *)             gl_cv_func_realpath_works="guessing no" ;;
        !           122:       esac
        !           123:      ])
1.1       misho     124:     rm -rf conftest.a conftest.d
                    125:   ])
1.1.1.2 ! misho     126:   case "$gl_cv_func_realpath_works" in
        !           127:     *yes)
        !           128:       AC_DEFINE([FUNC_REALPATH_WORKS], [1], [Define to 1 if realpath()
        !           129:         can malloc memory, always gives an absolute path, and handles
        !           130:         trailing slash correctly.])
        !           131:       ;;
        !           132:   esac
1.1       misho     133: ])

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>