]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
Makefile.in (LIBGNAT_TARGET_PAIRS [windows targets]): Correctly detect cygwin...
authorDave Korn <dave.korn.cygwin@gmail.com>
Tue, 6 Dec 2011 20:31:31 +0000 (20:31 +0000)
committerDave Korn <davek@gcc.gnu.org>
Tue, 6 Dec 2011 20:31:31 +0000 (20:31 +0000)
* gcc-interface/Makefile.in (LIBGNAT_TARGET_PAIRS [windows targets]):
Correctly detect cygwin, which no longer has the '32' suffix, and use
appropriate implementations of the sockets and memory packages.
* sysdep.c (WIN_SETMODE): New define to choose the correct spelling of
setmode/_setmode for MinGW and Cygwin, respectively.
(__gnat_set_binary_mode [windows targets]): Use the above, and enable
the windows version for Cygwin as well as MinGW.
(__gnat_set_text_mode [windows targets]): Likewise.
(__gnat_ttyname [windows targets]): Provide a Cygwin implementation
in addition to the MinGW version.
(__gnat_is_windows_xp): Make available to Cygwin as well as MinGW.
(__gnat_get_stack_bounds): Likewise.

From-SVN: r182065

gcc/ada/ChangeLog
gcc/ada/gcc-interface/Makefile.in
gcc/ada/sysdep.c

index f9977b6a37a4d26b35e9436f3c9b350476d50d18..94875aba18a9756a62a05e9279596e11c57395db 100644 (file)
@@ -1,3 +1,18 @@
+2011-12-06  Dave Korn  <dave.korn.cygwin@gmail.com>
+
+       * gcc-interface/Makefile.in (LIBGNAT_TARGET_PAIRS [windows targets]):
+       Correctly detect cygwin, which no longer has the '32' suffix, and use
+       appropriate implementations of the sockets and memory packages.
+       * sysdep.c (WIN_SETMODE): New define to choose the correct spelling of
+       setmode/_setmode for MinGW and Cygwin, respectively.
+       (__gnat_set_binary_mode [windows targets]): Use the above, and enable
+       the windows version for Cygwin as well as MinGW.
+       (__gnat_set_text_mode [windows targets]): Likewise.
+       (__gnat_ttyname [windows targets]): Provide a Cygwin implementation
+       in addition to the MinGW version.
+       (__gnat_is_windows_xp): Make available to Cygwin as well as MinGW.
+       (__gnat_get_stack_bounds): Likewise.
+
 2011-12-05  Bob Duff  <duff@adacore.com>
 
        * sem_ch4.adb: Minor comment fix.
index 32d8e428178a04a76498d35ebe0a45d3240d714f..f6aac1c38e7eb5abcf913f6dccf21a609ce7d32f 100644 (file)
@@ -1580,18 +1580,32 @@ ifeq ($(strip $(filter-out avr none powerpc% eabispe leon% erc32% unknown elf,$(
   indepsw.adb<indepsw-gnu.adb
 endif
 
-ifeq ($(strip $(filter-out cygwin32% mingw32% pe,$(osys))),)
-  LIBGNAT_TARGET_PAIRS = \
+ifeq ($(strip $(filter-out cygwin% mingw32% pe,$(osys))),)
+  # Cygwin provides a full Posix environment, and so we use the default
+  # versions of s-memory and g-socthi rather than the Windows-specific
+  # MinGW versions.  Ideally we would use all the default versions for
+  # Cygwin and none of the MinGW versions, but for historical reasons
+  # the Cygwin port has always been a CygMing frankenhybrid and it is
+  # a long-term project to disentangle them.
+  ifeq ($(strip $(filter-out cygwin%,$(osys))),)
+    LIBGNAT_TARGET_PAIRS = \
+    s-memory.adb<s-memory.adb \
+    g-socthi.ads<g-socthi.ads \
+    g-socthi.adb<g-socthi.adb
+  else
+    LIBGNAT_TARGET_PAIRS = \
+    s-memory.adb<s-memory-mingw.adb \
+    g-socthi.ads<g-socthi-mingw.ads \
+    g-socthi.adb<g-socthi-mingw.adb
+  endif
+  LIBGNAT_TARGET_PAIRS += \
   a-dirval.adb<a-dirval-mingw.adb \
   a-excpol.adb<a-excpol-abort.adb \
   s-gloloc.adb<s-gloloc-mingw.adb \
   s-inmaop.adb<s-inmaop-dummy.adb \
-  s-memory.adb<s-memory-mingw.adb \
   s-taspri.ads<s-taspri-mingw.ads \
   s-tasinf.adb<s-tasinf-mingw.adb \
   s-tasinf.ads<s-tasinf-mingw.ads \
-  g-socthi.ads<g-socthi-mingw.ads \
-  g-socthi.adb<g-socthi-mingw.adb \
   g-stsifd.adb<g-stsifd-sockets.adb \
   g-soliop.ads<g-soliop-mingw.ads \
   $(ATOMICS_TARGET_PAIRS)
index a4456f56a2490a47b6f7143a66ca137f3e37aea7..2b99a32b1322dd651c86c154931f35e7ff6e3cb4 100644 (file)
@@ -120,38 +120,44 @@ extern struct tm *localtime_r(const time_t *, struct tm *);
 
 */
 
-#if defined(WINNT)
+#if defined (WINNT) || defined (__CYGWIN__)
 
 const char __gnat_text_translation_required = 1;
 
+#ifdef __CYGWIN__
+#define WIN_SETMODE setmode
+#include <io.h>
+#else
+#define WIN_SETMODE _setmode
+#endif
+
 void
 __gnat_set_binary_mode (int handle)
 {
-  _setmode (handle, O_BINARY);
+  WIN_SETMODE (handle, O_BINARY);
 }
 
 void
 __gnat_set_text_mode (int handle)
 {
-  _setmode (handle, O_TEXT);
+  WIN_SETMODE (handle, O_TEXT);
 }
 
-#ifdef __MINGW32__
-#include <windows.h>
-
-/* Return the name of the tty.   Under windows there is no name for
-   the tty, so this function, if connected to a tty, returns the generic name
-   "console".  */
+#ifdef __CYGWIN__
 
 char *
 __gnat_ttyname (int filedes)
 {
-  if (isatty (filedes))
-    return "console";
-  else
-    return NULL;
+  extern char *ttyname (int);
+
+  return ttyname (filedes);
 }
 
+#endif /* __CYGWIN__ */
+
+#if defined (__CYGWIN__) || defined (__MINGW32__)
+#include <windows.h>
+
 #ifndef RTX
 
 int __gnat_is_windows_xp (void);
@@ -178,7 +184,7 @@ __gnat_is_windows_xp (void)
   return is_win_xp;
 }
 
-#endif
+#endif /* !RTX */
 
 /* Get the bounds of the stack.  The stack pointer is supposed to be
    initialized to BASE when a thread is created and the stack can be extended
@@ -198,7 +204,24 @@ __gnat_get_stack_bounds (void **base, void **limit)
   *limit = tib->StackLimit;
 }
 
-#endif /* !__MINGW32__ */
+#endif /* __CYGWIN__ || __MINGW32__ */
+
+#ifdef __MINGW32__
+
+/* Return the name of the tty.   Under windows there is no name for
+   the tty, so this function, if connected to a tty, returns the generic name
+   "console".  */
+
+char *
+__gnat_ttyname (int filedes)
+{
+  if (isatty (filedes))
+    return "console";
+  else
+    return NULL;
+}
+
+#endif /* __MINGW32__ */
 
 #else