Home | History | Annotate | Download | only in m4
      1 #serial 10   -*- autoconf -*-
      2 
      3 # Define some macros required for proper operation of code in lib/*.c
      4 # on MSDOS/Windows systems.
      5 
      6 # Copyright (C) 2000, 2001, 2004, 2005, 2006 Free Software Foundation, Inc.
      7 # This file is free software; the Free Software Foundation
      8 # gives unlimited permission to copy and/or distribute it,
      9 # with or without modifications, as long as this notice is preserved.
     10 
     11 # From Jim Meyering.
     12 
     13 AC_DEFUN([gl_AC_DOS],
     14   [
     15     AC_CACHE_CHECK([whether system is Windows or MSDOS], [ac_cv_win_or_dos],
     16       [
     17 	AC_TRY_COMPILE([],
     18 	[#if !defined _WIN32 && !defined __WIN32__ && !defined __MSDOS__ && !defined __CYGWIN__
     19 neither MSDOS nor Windows
     20 #endif],
     21 	[ac_cv_win_or_dos=yes],
     22 	[ac_cv_win_or_dos=no])
     23       ])
     24 
     25     if test x"$ac_cv_win_or_dos" = xyes; then
     26       ac_fs_accepts_drive_letter_prefix=1
     27       ac_fs_backslash_is_file_name_separator=1
     28       AC_CACHE_CHECK([whether drive letter can start relative path],
     29 		     [ac_cv_drive_letter_can_be_relative],
     30 	[
     31 	  AC_TRY_COMPILE([],
     32 	  [#if defined __CYGWIN__
     33 drive letters are always absolute
     34 #endif],
     35 	  [ac_cv_drive_letter_can_be_relative=yes],
     36 	  [ac_cv_drive_letter_can_be_relative=no])
     37 	])
     38       if test x"$ac_cv_drive_letter_can_be_relative" = xyes; then
     39 	ac_fs_drive_letter_can_be_relative=1
     40       else
     41 	ac_fs_drive_letter_can_be_relative=0
     42       fi
     43     else
     44       ac_fs_accepts_drive_letter_prefix=0
     45       ac_fs_backslash_is_file_name_separator=0
     46       ac_fs_drive_letter_can_be_relative=0
     47     fi
     48 
     49     AC_DEFINE_UNQUOTED([FILE_SYSTEM_ACCEPTS_DRIVE_LETTER_PREFIX],
     50       $ac_fs_accepts_drive_letter_prefix,
     51       [Define on systems for which file names may have a so-called
     52        `drive letter' prefix, define this to compute the length of that
     53        prefix, including the colon.])
     54 
     55     AH_VERBATIM(ISSLASH,
     56     [#if FILE_SYSTEM_BACKSLASH_IS_FILE_NAME_SEPARATOR
     57 # define ISSLASH(C) ((C) == '/' || (C) == '\\')
     58 #else
     59 # define ISSLASH(C) ((C) == '/')
     60 #endif])
     61 
     62     AC_DEFINE_UNQUOTED([FILE_SYSTEM_BACKSLASH_IS_FILE_NAME_SEPARATOR],
     63       $ac_fs_backslash_is_file_name_separator,
     64       [Define if the backslash character may also serve as a file name
     65        component separator.])
     66 
     67     AC_DEFINE_UNQUOTED([FILE_SYSTEM_DRIVE_PREFIX_CAN_BE_RELATIVE],
     68       $ac_fs_drive_letter_can_be_relative,
     69       [Define if a drive letter prefix denotes a relative path if it is
     70        not followed by a file name component separator.])
     71   ])
     72