This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
(perl #132087) correct *at() function detection on older darwin
[perl5.git] / hints / cygwin.sh
index ba84df4..20e0e58 100644 (file)
@@ -8,30 +8,75 @@ firstmakefile='GNUmakefile'
 case "$ldlibpthname" in
 '') ldlibpthname=PATH ;;
 esac
+archobjs='cygwin.o'
 
-# mandatory (overrides defaults)
+# mandatory (overrides incorrect defaults)
 test -z "$cc" && cc='gcc'
-if test -z "$libpth"
+if test -z "$plibpth"
 then
-    libpth=`gcc -print-file-name=libc.a`
-    libpth=`dirname $libpth`
-    libpth=`cd $libpth && pwd`
+    plibpth=`gcc -print-file-name=libc.a`
+    plibpth=`dirname $plibpth`
+    plibpth=`cd $plibpth && pwd`
 fi
 so='dll'
-libs='-lcygwin -lm -lkernel32'
-ccflags="$ccflags -DCYGWIN"
+# - eliminate -lc, implied by gcc and a symlink to libcygwin.a
+libswanted=`echo " $libswanted " | sed -e 's/ c / /g'`
+# - eliminate -lm, symlink to libcygwin.a
+libswanted=`echo " $libswanted " | sed -e 's/ m / /g'`
+# - eliminate -lutil, symbols are all in libcygwin.a
+libswanted=`echo " $libswanted " | sed -e 's/ util / /g'`
+# - add libgdbm_compat $libswanted
+libswanted="$libswanted gdbm_compat"
+test -z "$optimize" && optimize='-O3'
+man3ext='3pm'
+test -z "$use64bitint" && use64bitint='define'
+test -z "$useithreads" && useithreads='define'
+ccflags="$ccflags -DPERL_USE_SAFE_PUTENV -U__STRICT_ANSI__ -D_GNU_SOURCE"
+# - otherwise i686-cygwin
 archname='cygwin'
+
+# dynamic loading
+# - otherwise -fpic
 cccdlflags=' '
-ld='ld2'
+lddlflags=' --shared'
+test -z "$ld" && ld='g++'
+
+case "$osvers" in
+    # Configure gets these wrong if the IPC server isn't yet running:
+    # only use for 1.5.7 and onwards
+    [2-9]*|1.[6-9]*|1.[1-5][0-9]*|1.5.[7-9]*|1.5.[1-6][0-9]*)
+        d_semctl_semid_ds='define'
+        d_semctl_semun='define'
+        ;;
+esac
+
+case "$osvers" in
+    [2-9]*|1.[6-9]*)
+        # IPv6 only since 1.7
+        d_inetntop='define'
+        d_inetpton='define'
+        ;;
+    *)
+        # IPv6 not implemented before cygwin-1.7
+        d_inetntop='undef'
+        d_inetpton='undef'
+esac
+
+# compile Win32CORE "module" as static. try to avoid the space.
+if test -z "$static_ext"; then
+  static_ext="Win32CORE"
+else
+  static_ext="$static_ext Win32CORE"
+fi
+
+# Win9x problem with non-blocking read from a closed pipe
+d_eofnblk='define'
 
-# optional(ish)
-# - perl malloc needs to be unpolluted
-bincompat5005='undef'
-# - build shared libperl.dll
-useshrplib='true'
-libperl='libperl.a'
+# suppress auto-import warnings
+ldflags="$ldflags -Wl,--enable-auto-import -Wl,--export-all-symbols -Wl,--enable-auto-image-base"
+lddlflags="$lddlflags $ldflags"
 
-# strip exe's and dll's
+# strip exe's and dll's, better do it afterwards
 #ldflags="$ldflags -s"
 #ccdlflags="$ccdlflags -s"
 #lddlflags="$lddlflags -s"