Merge branch 'ad/cygwin-wants-rename'
authorJunio C Hamano <gitster@pobox.com>
Fri, 22 Apr 2016 22:45:10 +0000 (15:45 -0700)
committerJunio C Hamano <gitster@pobox.com>
Fri, 22 Apr 2016 22:45:10 +0000 (15:45 -0700)
On Cygwin, object creation uses the "create a temporary and then
rename it to the final name" pattern, not "create a temporary,
hardlink it to the final name and then unlink the temporary"
pattern.

This is necessary to use Git on Windows shared directories, and is
already enabled for the MinGW and plain Windows builds. It also
has been used in Cygwin packaged versions of Git for quite a while.
See http://thread.gmane.org/gmane.comp.version-control.git/291853

($gmane/275680, $gmane/291853).

* ad/cygwin-wants-rename:
config.mak.uname: Cygwin needs OBJECT_CREATION_USES_RENAMES

1  2 
config.mak.uname
diff --combined config.mak.uname
index fe8096f8a65241760cfdc3dabd4cf63ee412e9ca,524bb4125cc39f11319655543cfd1279172b822d..40d6b29eeef9a9b89b02100bb087fe9f37a3a7d6
@@@ -28,19 -28,13 +28,19 @@@ ifeq ($(uname_S),OSF1
        NO_NSEC = YesPlease
  endif
  ifeq ($(uname_S),Linux)
 +      HAVE_ALLOCA_H = YesPlease
        NO_STRLCPY = YesPlease
        NO_MKSTEMPS = YesPlease
        HAVE_PATHS_H = YesPlease
        LIBC_CONTAINS_LIBINTL = YesPlease
        HAVE_DEV_TTY = YesPlease
 +      HAVE_CLOCK_GETTIME = YesPlease
 +      HAVE_CLOCK_MONOTONIC = YesPlease
 +      HAVE_GETDELIM = YesPlease
 +      SANE_TEXT_GREP=-a
  endif
  ifeq ($(uname_S),GNU/kFreeBSD)
 +      HAVE_ALLOCA_H = YesPlease
        NO_STRLCPY = YesPlease
        NO_MKSTEMPS = YesPlease
        HAVE_PATHS_H = YesPlease
@@@ -92,34 -86,24 +92,34 @@@ ifeq ($(uname_S),Darwin
        NEEDS_CRYPTO_WITH_SSL = YesPlease
        NEEDS_SSL_WITH_CRYPTO = YesPlease
        NEEDS_LIBICONV = YesPlease
 +      # Note: $(uname_R) gives us the underlying Darwin version.
 +      # - MacOS 10.0.* and MacOS 10.1.0 = Darwin 1.*
 +      # - MacOS 10.x.* = Darwin (x+4).* for (1 <= x)
 +      # i.e. "begins with [15678] and a dot" means "10.4.* or older".
        ifeq ($(shell expr "$(uname_R)" : '[15678]\.'),2)
                OLD_ICONV = UnfortunatelyYes
 +              NO_APPLE_COMMON_CRYPTO = YesPlease
        endif
        ifeq ($(shell expr "$(uname_R)" : '[15]\.'),2)
                NO_STRLCPY = YesPlease
        endif
 +      ifeq ($(shell test "`expr "$(uname_R)" : '\([0-9][0-9]*\)\.'`" -ge 11 && echo 1),1)
 +              HAVE_GETDELIM = YesPlease
 +      endif
        NO_MEMMEM = YesPlease
        USE_ST_TIMESPEC = YesPlease
        HAVE_DEV_TTY = YesPlease
        COMPAT_OBJS += compat/precompose_utf8.o
        BASIC_CFLAGS += -DPRECOMPOSE_UNICODE
        BASIC_CFLAGS += -DPROTECT_HFS_DEFAULT=1
 +      HAVE_BSD_SYSCTL = YesPlease
  endif
  ifeq ($(uname_S),SunOS)
        NEEDS_SOCKET = YesPlease
        NEEDS_NSL = YesPlease
        SHELL_PATH = /bin/bash
        SANE_TOOL_PATH = /usr/xpg6/bin:/usr/xpg4/bin
 +      HAVE_ALLOCA_H = YesPlease
        NO_STRCASESTR = YesPlease
        NO_MEMMEM = YesPlease
        NO_MKDTEMP = YesPlease
        endif
        INSTALL = /usr/ucb/install
        TAR = gtar
 -      BASIC_CFLAGS += -D__EXTENSIONS__ -D__sun__ -DHAVE_ALLOCA_H
 +      BASIC_CFLAGS += -D__EXTENSIONS__ -D__sun__
  endif
  ifeq ($(uname_O),Cygwin)
        ifeq ($(shell expr "$(uname_R)" : '1\.[1-6]\.'),4)
                NO_D_TYPE_IN_DIRENT = YesPlease
 -              NO_D_INO_IN_DIRENT = YesPlease
                NO_STRCASESTR = YesPlease
                NO_MEMMEM = YesPlease
                NO_MKSTEMPS = YesPlease
        else
                NO_REGEX = UnfortunatelyYes
        endif
 +      HAVE_ALLOCA_H = YesPlease
        NEEDS_LIBICONV = YesPlease
        NO_FAST_WORKING_DIRECTORY = UnfortunatelyYes
        NO_ST_BLOCKS_IN_STRUCT_STAT = YesPlease
        X = .exe
        UNRELIABLE_FSTAT = UnfortunatelyYes
        SPARSE_FLAGS = -isystem /usr/include/w32api -Wno-one-bit-signed-bitfield
+       OBJECT_CREATION_USES_RENAMES = UnfortunatelyNeedsTo
  endif
  ifeq ($(uname_S),FreeBSD)
        NEEDS_LIBICONV = YesPlease
        PYTHON_PATH = /usr/local/bin/python
        HAVE_PATHS_H = YesPlease
        GMTIME_UNRELIABLE_ERRORS = UnfortunatelyYes
 +      HAVE_BSD_SYSCTL = YesPlease
  endif
  ifeq ($(uname_S),OpenBSD)
        NO_STRCASESTR = YesPlease
        BASIC_CFLAGS += -I/usr/local/include
        BASIC_LDFLAGS += -L/usr/local/lib
        HAVE_PATHS_H = YesPlease
 +      HAVE_BSD_SYSCTL = YesPlease
  endif
  ifeq ($(uname_S),MirBSD)
        NO_STRCASESTR = YesPlease
        USE_ST_TIMESPEC = YesPlease
        NEEDS_LIBICONV = YesPlease
        HAVE_PATHS_H = YesPlease
 +      HAVE_BSD_SYSCTL = YesPlease
  endif
  ifeq ($(uname_S),NetBSD)
        ifeq ($(shell expr "$(uname_R)" : '[01]\.'),2)
        USE_ST_TIMESPEC = YesPlease
        NO_MKSTEMPS = YesPlease
        HAVE_PATHS_H = YesPlease
 +      HAVE_BSD_SYSCTL = YesPlease
  endif
  ifeq ($(uname_S),AIX)
        DEFAULT_PAGER = more
  endif
  ifeq ($(uname_S),GNU)
        # GNU/Hurd
 +      HAVE_ALLOCA_H = YesPlease
        NO_STRLCPY = YesPlease
        NO_MKSTEMPS = YesPlease
        HAVE_PATHS_H = YesPlease
@@@ -334,7 -314,6 +335,7 @@@ endi
  ifeq ($(uname_S),Windows)
        GIT_VERSION := $(GIT_VERSION).MSVC
        pathsep = ;
 +      HAVE_ALLOCA_H = YesPlease
        NO_PREAD = YesPlease
        NEEDS_CRYPTO_WITH_SSL = YesPlease
        NO_LIBGEN_H = YesPlease
        NO_IPV6 = YesPlease
        NO_UNIX_SOCKETS = YesPlease
        NO_SETENV = YesPlease
 -      NO_UNSETENV = YesPlease
        NO_STRCASESTR = YesPlease
        NO_STRLCPY = YesPlease
        NO_MEMMEM = YesPlease
        COMPAT_OBJS = compat/msvc.o compat/winansi.o \
                compat/win32/pthread.o compat/win32/syslog.o \
                compat/win32/dirent.o
 -      COMPAT_CFLAGS = -D__USE_MINGW_ACCESS -DNOGDI -DHAVE_STRING_H -DHAVE_ALLOCA_H -Icompat -Icompat/regex -Icompat/win32 -DSTRIP_EXTENSION=\".exe\"
 -      BASIC_LDFLAGS = -IGNORE:4217 -IGNORE:4049 -NOLOGO -SUBSYSTEM:CONSOLE -NODEFAULTLIB:MSVCRT.lib
 +      COMPAT_CFLAGS = -D__USE_MINGW_ACCESS -DNOGDI -DHAVE_STRING_H -Icompat -Icompat/regex -Icompat/win32 -DSTRIP_EXTENSION=\".exe\"
 +      BASIC_LDFLAGS = -IGNORE:4217 -IGNORE:4049 -NOLOGO -SUBSYSTEM:CONSOLE
        EXTLIBS = user32.lib advapi32.lib shell32.lib wininet.lib ws2_32.lib invalidcontinue.obj
        PTHREAD_LIBS =
        lib =
        BASIC_CFLAGS += -DPROTECT_NTFS_DEFAULT=1
  ifndef DEBUG
 -      BASIC_CFLAGS += -GL -Os -MT
 +      BASIC_CFLAGS += -GL -Os -MD
        BASIC_LDFLAGS += -LTCG
        AR += -LTCG
  else
 -      BASIC_CFLAGS += -Zi -MTd
 +      BASIC_CFLAGS += -Zi -MDd
  endif
        X = .exe
  endif
@@@ -487,7 -467,6 +488,7 @@@ ifeq ($(uname_S),NONSTOP_KERNEL
  endif
  ifneq (,$(findstring MINGW,$(uname_S)))
        pathsep = ;
 +      HAVE_ALLOCA_H = YesPlease
        NO_PREAD = YesPlease
        NEEDS_CRYPTO_WITH_SSL = YesPlease
        NO_LIBGEN_H = YesPlease
        NO_SYMLINK_HEAD = YesPlease
        NO_UNIX_SOCKETS = YesPlease
        NO_SETENV = YesPlease
 -      NO_UNSETENV = YesPlease
        NO_STRCASESTR = YesPlease
        NO_STRLCPY = YesPlease
        NO_MEMMEM = YesPlease
        NO_INET_NTOP = YesPlease
        NO_POSIX_GOODIES = UnfortunatelyYes
        DEFAULT_HELP_FORMAT = html
 -      COMPAT_CFLAGS += -D__USE_MINGW_ACCESS -D_USE_32BIT_TIME_T -DNOGDI -Icompat -Icompat/win32
 +      COMPAT_CFLAGS += -DNOGDI -Icompat -Icompat/win32
        COMPAT_CFLAGS += -DSTRIP_EXTENSION=\".exe\"
        COMPAT_OBJS += compat/mingw.o compat/winansi.o \
                compat/win32/pthread.o compat/win32/syslog.o \
                compat/win32/dirent.o
        BASIC_CFLAGS += -DPROTECT_NTFS_DEFAULT=1
 -      BASIC_LDFLAGS += -Wl,--large-address-aware
        EXTLIBS += -lws2_32
        GITLIBS += git.res
        PTHREAD_LIBS =
@@@ -541,35 -522,8 +542,35 @@@ ifneq (,$(wildcard ../THIS_IS_MSYSGIT)
        INTERNAL_QSORT = YesPlease
        HAVE_LIBCHARSET_H = YesPlease
        NO_GETTEXT = YesPlease
 +      COMPAT_CLFAGS += -D__USE_MINGW_ACCESS
  else
 -      NO_CURL = YesPlease
 +      ifeq ($(shell expr "$(uname_R)" : '2\.'),2)
 +              # MSys2
 +              prefix = /usr/
 +              ifeq (MINGW32,$(MSYSTEM))
 +                      prefix = /mingw32
 +              endif
 +              ifeq (MINGW64,$(MSYSTEM))
 +                      prefix = /mingw64
 +              else
 +                      COMPAT_CFLAGS += -D_USE_32BIT_TIME_T
 +                      BASIC_LDFLAGS += -Wl,--large-address-aware
 +              endif
 +              CC = gcc
 +              COMPAT_CFLAGS += -D__USE_MINGW_ANSI_STDIO=0
 +              INSTALL = /bin/install
 +              NO_R_TO_GCC_LINKER = YesPlease
 +              INTERNAL_QSORT = YesPlease
 +              HAVE_LIBCHARSET_H = YesPlease
 +              NO_GETTEXT =
 +              USE_GETTEXT_SCHEME = fallthrough
 +              USE_LIBPCRE= YesPlease
 +              NO_CURL =
 +              USE_NED_ALLOCATOR = YesPlease
 +      else
 +              COMPAT_CFLAGS += -D__USE_MINGW_ANSI_STDIO
 +              NO_CURL = YesPlease
 +      endif
  endif
  endif
  ifeq ($(uname_S),QNX)