X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=hints%2Fcygwin.sh;h=b77ca85ece15258eae4fa32b692f45d6982741d9;hb=9bf2270250326fb85445d6849ed84a94434dd12c;hp=de48cdfeb2f464e3302c353f20f75b874330ecdd;hpb=c22e42be2432273165175c9218ee7b6238bfca24;p=p5sagit%2Fp5-mst-13.2.git diff --git a/hints/cygwin.sh b/hints/cygwin.sh index de48cdf..b77ca85 100644 --- a/hints/cygwin.sh +++ b/hints/cygwin.sh @@ -1,46 +1,86 @@ #! /bin/sh # cygwin.sh - hints for building perl using the Cygwin environment for Win32 # -# Many of these inflexible settings should be changed to allow command- -# line overrides and allow for variations in local set-ups. -# I have made first guesses at some of these, but would welcome -# corrections from someone actually using Cygwin. -# Andy Dougherty Tue Sep 28 12:39:38 EDT 1999 -_exe='.exe' +# not otherwise settable exe_ext='.exe' -# work around case-insensitive file names firstmakefile='GNUmakefile' -sharpbang='#!' -startsh='#!/bin/sh' +case "$ldlibpthname" in +'') ldlibpthname=PATH ;; +esac +archobjs='cygwin.o' -archname='cygwin' +# mandatory (overrides incorrect defaults) test -z "$cc" && cc='gcc' -libpth='/usr/i586-cygwin32/lib /usr/lib /usr/local/lib' +if test -z "$plibpth" +then + plibpth=`gcc -print-file-name=libc.a` + plibpth=`dirname $plibpth` + plibpth=`cd $plibpth && pwd` +fi so='dll' -libs='-lcygwin -lm -lkernel32' -#optimize='-g' -# Is -I/usr/include *really* needed? -# Is -I/usr/local/include *really* needed? I thought gcc always looked there. -ccflags="$ccflags -DCYGWIN -I/usr/include -I/usr/local/include" -# Is -L/usr/lib *really* needed? -ldflags="$ldflags -L/usr/i586-cygwin32/lib -L/usr/lib -L/usr/local/lib" -test -z "$usemymalloc" && usemymalloc='n' -dlsrc='dl_cygwin.xs' +# - 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 +# - libcygipc doesn't work much at all with +# the Perl SysV IPC tests so not adding it --jhi 2003-08-09 +# (with cygwin 1.5.7, cygipc is deprecated in favor of the builtin cygserver) +libswanted="$libswanted gdbm_compat" +test -z "$optimize" && optimize='-O3' +man3ext='3pm' +test -z "$use64bitint" && use64bitint='define' +test -z "$usethreads" && usethreads='define' +test -z "$usemymalloc" && usemymalloc='define' +ccflags="$ccflags -DPERL_USE_SAFE_PUTENV -U__STRICT_ANSI__" +# - otherwise i686-cygwin +archname='cygwin' + +# dynamic loading +# - otherwise -fpic cccdlflags=' ' -ld='ld2' -# Is -L/usr/local/lib *really* needed? -lddlflags="$lddlflags -L/usr/local/lib" -useshrplib='true' -libperl='libperl.a' -dlext='dll' -dynamic_ext=' ' - -# What if they aren't using $prefix=/usr/local ?? -# Why is this needed at all? Doesn't Configure suggest this? -test -z "$man1dir" && man1dir=/usr/local/man/man1 -test -z "$man3dir" && man3dir=/usr/local/man/man3 +lddlflags=' --shared' +test -z "$ld" && ld='g++' -case "$ldlibpthname" in -'') ldlibpthname=PATH ;; +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' + +# suppress auto-import warnings +ldflags="$ldflags -Wl,--enable-auto-import -Wl,--export-all-symbols -Wl,--stack,8388608 -Wl,--enable-auto-image-base" +lddlflags="$lddlflags $ldflags" + +# strip exe's and dll's, better do it afterwards +#ldflags="$ldflags -s" +#ccdlflags="$ccdlflags -s" +#lddlflags="$lddlflags -s"