From: Peter H. <pe...@sy...> - 2007-10-04 11:40:09
|
Hi, I tried to build gtk2hs in cygwin environment (with mingw compiler) and run into some issues. Most were related to mingw not liking some spurious \r characters; there was also problem with too long command line for ar. The patch is at the end of this email. I needed also to run this after make and before install since the package conf files contained something like ld-options: "\r" and ghc linker freaked out. This should be fixed somewhere else but I could not find it quickly (I do not know how package.conf files are generated). for pkCf in `find -name .hg -prune -o -iname "*.package.conf" -print` ; do echo "Fixing possibly wrong ld-options in $pkCf" sed 's/"\r"//' $pkCf > pakcage.conf.temp.file mv pakcage.conf.temp.file $pkCf done My environment: * standard cygwin install with binary mount (but textmode mount does not fix the problems) * gcc 3.4.2 (mingw-special) (not the one in cygwin distribution) * winxp 64bit (but ghc, gtk, cygwin ... all 32 bit apps) * gtk2hs-0.9.12.tar.gz from sourceforge * gtk-dev-2.10.11-win32-1 * ghc-6.6.1-i386-windows I hope this helps somebody who tries to do the same, Peter. OK, the patch follows from here on: diff -r 29c8c438d9a2 -r a035df086432 Makefile.in --- a/Makefile.in Wed Oct 03 15:44:47 2007 +0100 +++ b/Makefile.in Thu Oct 04 10:42:08 2007 +0100 @@ -3155,7 +3155,7 @@ maintainer-clean: distclean maintainer-c $(filter -I%,$(AM_CPPFLAGS) $(CPPFLAGS)) $($(PKG)_CPPFLAGS)\ -C'-optc-include' -C'-optc$(CONFIG_HEADER)' \ --include $($(PKG)_HEADER) \ - --cc="$(HC)" --lflag=-no-hs-main $<) + --cc=`$(CYGPATH_W) '$(HC)'` --lflag=-no-hs-main $<) .chs.hs: $(strip if test -x $(C2HS); then :; else \ diff -r 29c8c438d9a2 -r a035df086432 configure --- a/configure Wed Oct 03 15:44:47 2007 +0100 +++ b/configure Thu Oct 04 10:42:08 2007 +0100 @@ -4603,7 +4603,7 @@ GHC=$HC { echo "$as_me:$LINENO: checking version of GHC" >&5 echo $ECHO_N "checking version of GHC... $ECHO_C" >&6; } -GHC_VERSION=`$GHC --numeric-version` +GHC_VERSION=`$GHC --numeric-version | $SED "s/^\r//"` { echo "$as_me:$LINENO: result: $GHC_VERSION" >&5 echo "${ECHO_T}$GHC_VERSION" >&6; } @@ -6601,7 +6601,7 @@ CREATE_TYPES="$CREATE_TYPES `test "$HAVE CREATE_TYPES="$CREATE_TYPES `test "$HAVE_GTK_VERSION_2_8" = "yes" && echo gtk-2.8`" CREATE_TYPES="$CREATE_TYPES `test "$HAVE_GTK_VERSION_2_10" = "yes" && echo gtk-2.10`" -GTK_VERSION=`$PKG_CONFIG gtk+-2.0 --modversion` +GTK_VERSION=`$PKG_CONFIG gtk+-2.0 --modversion | $SED "s/^\r//"` GTK_MAJOR_VERSION=`echo $GTK_VERSION | $CUT -d. -f1` GTK_MINOR_VERSION=`echo $GTK_VERSION | $CUT -d. -f2` GTK_MICRO_VERSION=`echo $GTK_VERSION | $CUT -d. -f3` @@ -6623,7 +6623,7 @@ _ACEOF -PANGO_VERSION=`$PKG_CONFIG pango --modversion` +PANGO_VERSION=`$PKG_CONFIG pango --modversion | $SED "s/^\r//"` PANGO_MAJOR_VERSION=`echo $PANGO_VERSION | $CUT -d. -f1` PANGO_MINOR_VERSION=`echo $PANGO_VERSION | $CUT -d. -f2` PANGO_MICRO_VERSION=`echo $PANGO_VERSION | $CUT -d. -f3` @@ -6645,7 +6645,7 @@ _ACEOF -GLIB_VERSION=`$PKG_CONFIG glib-2.0 --modversion` +GLIB_VERSION=`$PKG_CONFIG glib-2.0 --modversion | $SED "s/^\r//"` GLIB_MAJOR_VERSION=`echo $GLIB_VERSION | $CUT -d. -f1` GLIB_MINOR_VERSION=`echo $GLIB_VERSION | $CUT -d. -f2` GLIB_MICRO_VERSION=`echo $GLIB_VERSION | $CUT -d. -f3` @@ -6666,8 +6666,7 @@ _ACEOF - -CAIRO_CPP_FLAGS="`$PKG_CONFIG --cflags cairo` -include cairo-features.h" +CAIRO_CPP_FLAGS="`$PKG_CONFIG --cflags cairo | $SED "s/^\r//"` -include cairo-features.h" $CPP $CAIRO_CPP_FLAGS - > conftest.sh <<_ACEOF #ifdef CAIRO_HAS_PS_SURFACE _CAIRO_HAS_PS_SURFACE=1 @@ -6685,6 +6684,9 @@ _CAIRO_VERSION_MINOR=CAIRO_VERSION_MINOR _CAIRO_VERSION_MINOR=CAIRO_VERSION_MINOR _CAIRO_VERSION_MICRO=CAIRO_VERSION_MICRO _ACEOF +if test "$WIN32" = "yes"; then +dos2unix ./conftest.sh +fi . ./conftest.sh CAIRO_HEADERS="\"cairo.h\"" if test ${_CAIRO_HAS_PS_SURFACE}; then diff -r 29c8c438d9a2 -r a035df086432 configure.ac --- a/configure.ac Wed Oct 03 15:44:47 2007 +0100 +++ b/configure.ac Thu Oct 04 10:42:08 2007 +0100 @@ -107,7 +107,7 @@ GHC=$HC dnl Check GHC details. AC_MSG_CHECKING([version of GHC]) -GHC_VERSION=`$GHC --numeric-version` +GHC_VERSION=`$GHC --numeric-version | $SED "s/^\r//"` AC_MSG_RESULT([$GHC_VERSION]) GTKHS_PROG_CHECK_VERSION($GHC_VERSION, -lt, 6.0, [ @@ -386,7 +386,7 @@ CREATE_TYPES="$CREATE_TYPES `test "$HAVE CREATE_TYPES="$CREATE_TYPES `test "$HAVE_GTK_VERSION_2_10" = "yes" && echo gtk-2.10`" dnl Also allow us to conditionally compile binding to the new Gtk+ APIs. -GTK_VERSION=`$PKG_CONFIG gtk+-2.0 --modversion` +GTK_VERSION=`$PKG_CONFIG gtk+-2.0 --modversion | $SED "s/^\r//"` GTK_MAJOR_VERSION=`echo $GTK_VERSION | $CUT -d. -f1` GTK_MINOR_VERSION=`echo $GTK_VERSION | $CUT -d. -f2` GTK_MICRO_VERSION=`echo $GTK_VERSION | $CUT -d. -f3` @@ -403,7 +403,7 @@ AH_BOTTOM([ ]) dnl Also allow us to conditionally compile bindings to Pango APIs. -PANGO_VERSION=`$PKG_CONFIG pango --modversion` +PANGO_VERSION=`$PKG_CONFIG pango --modversion | $SED "s/^\r//"` PANGO_MAJOR_VERSION=`echo $PANGO_VERSION | $CUT -d. -f1` PANGO_MINOR_VERSION=`echo $PANGO_VERSION | $CUT -d. -f2` PANGO_MICRO_VERSION=`echo $PANGO_VERSION | $CUT -d. -f3` @@ -420,7 +420,7 @@ AH_BOTTOM([ ]) dnl Also allow us to conditionally compile bindings to Glib APIs. -GLIB_VERSION=`$PKG_CONFIG glib-2.0 --modversion` +GLIB_VERSION=`$PKG_CONFIG glib-2.0 --modversion | $SED "s/^\r//"` GLIB_MAJOR_VERSION=`echo $GLIB_VERSION | $CUT -d. -f1` GLIB_MINOR_VERSION=`echo $GLIB_VERSION | $CUT -d. -f2` GLIB_MICRO_VERSION=`echo $GLIB_VERSION | $CUT -d. -f3` @@ -443,7 +443,7 @@ dnl pre-process a shell file and include dnl pre-process a shell file and include cairo-features.h then we run that dnl shell file to bring in the values of the shell vars it defines. dnl Then finally we substitute those into our config header file. -CAIRO_CPP_FLAGS="`$PKG_CONFIG --cflags cairo` -include cairo-features.h" +CAIRO_CPP_FLAGS="`$PKG_CONFIG --cflags cairo | $SED "s/^\r//"` -include cairo-features.h" $CPP $CAIRO_CPP_FLAGS - > conftest.sh <<_ACEOF #ifdef CAIRO_HAS_PS_SURFACE _CAIRO_HAS_PS_SURFACE=1 @@ -461,6 +461,9 @@ _CAIRO_VERSION_MINOR=CAIRO_VERSION_MINOR _CAIRO_VERSION_MINOR=CAIRO_VERSION_MINOR _CAIRO_VERSION_MICRO=CAIRO_VERSION_MICRO _ACEOF +if test "$WIN32" = "yes"; then +dos2unix ./conftest.sh +fi . ./conftest.sh CAIRO_HEADERS="\"cairo.h\"" if test ${_CAIRO_HAS_PS_SURFACE}; then diff -r 29c8c438d9a2 -r a035df086432 mk/link-splitobjs.sh.in --- a/mk/link-splitobjs.sh.in Wed Oct 03 15:44:47 2007 +0100 +++ b/mk/link-splitobjs.sh.in Thu Oct 04 10:42:08 2007 +0100 @@ -12,5 +12,5 @@ for obj in $@; do fi done echo "Linking ${lib}, for larger libs this can take quite some time..." -cat ${lib}.list | xargs @AR@ q ${lib} +cat ${lib}.list | xargs --max-chars=4096 @AR@ q ${lib} rm ${lib}.list |