From: Duncan C. <dun...@us...> - 2005-03-23 17:09:24
|
Update of /cvsroot/gtk2hs/gtk2hs In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv25408 Modified Files: configure.ac acinclude.m4 Makefile.am Log Message: GHC 6.4 cabal support: add new cabal package file templates. configure.ac: bump version to make it clear we're in a development mode (we can no longer use _pre since cabal does not like that as a version number). Add test for cabal support (ghc >= 6.4). Add *.cabal.in files to the list of files that need substitution in AC_OUTPUT. acinclude.m4: modify the way the flags are formatted depending on whether USE_CABAL is set. The old package format used " quotes around elements in string lists, the new cabal package format does not. Makefile.am: use $(PKGEXT) to specify which package file to use, the .cabal one or the .pkg one. Add -ignore-package glib when compiling modules in each package (conditionally on USE_CABAL) since otheriwse if the package is already installed the compilation would fail. Modify the package registering code. Use sed to substitute for ${pkglibdir} since ghc-pkg no longer does substitution. Also substitute for ${modules} the list of modules in the package. Index: acinclude.m4 =================================================================== RCS file: /cvsroot/gtk2hs/gtk2hs/acinclude.m4,v retrieving revision 1.6 retrieving revision 1.7 diff -u -d -r1.6 -r1.7 --- acinclude.m4 19 Jan 2005 03:42:53 -0000 1.6 +++ acinclude.m4 23 Mar 2005 17:08:58 -0000 1.7 @@ -98,9 +98,14 @@ AC_DEFUN([GTKHS_REFORMAT_PACKAGE_CFLAGS], [ C=; [$2]=; +if test "$USE_CABAL" = "yes"; then + SEP=", "; QUOTE="" +else + SEP=","; QUOTE="\"" +fi for FLAG in [$][$1]; do case [$]FLAG in - -I*) [$2]="[$][$2][$]C\"[$]{FLAG#-I}\""; C=",";; + -I*) [$2]="[$][$2][$]C[$]QUOTE[$]{FLAG#-I}$QUOTE"; C=$SEP;; esac; done; ])dnl @@ -117,11 +122,16 @@ AC_DEFUN([GTKHS_REFORMAT_PACKAGE_LIBS], [ C_LIBS=; [$2]=; C_LDIR=; [$3]=; C_XTRA=; [$4]=; +if test "$USE_CABAL" = "yes"; then + SEP=", "; QUOTE="" +else + SEP=","; QUOTE="\"" +fi for FLAG in [$][$1]; do case [$]FLAG in - -l*) [$2]="[$][$2][$]C_LIBS\"[$]{FLAG#-l}\""; C_LIBS=",";; - -L*) [$3]="[$][$3][$]C_LDIR\"[$]{FLAG#-L}\""; C_LDIR=",";; - *) [$4]="[$][$4][$]C_XTRA\"[$]FLAG\""; C_XTRA=",";; + -l*) [$2]="[$][$2][$]C_LIBS[$]QUOTE[$]{FLAG#-l}$QUOTE"; C_LIBS=$SEP;; + -L*) [$3]="[$][$3][$]C_LDIR[$]QUOTE[$]{FLAG#-L}$QUOTE"; C_LDIR=$SEP;; + *) [$4]="[$][$4][$]C_XTRA[$]QUOTE[$]FLAG[$]QUOTE"; C_XTRA=$SEP;; esac; done; dnl Fix for ghc-pkg in that it doesn't differ between paths to extra @@ -129,7 +139,7 @@ dnl path to where the Haskell libraries are going to be installed in dnl case they go into a non-standard directory. If they go into a dnl standard directory then we duplicate a path here. Dough. -[$3]="[$][$3][$]C_LDIR\"\${pkglibdir}\""; +[$3]="[$][$3][$]C_LDIR[$]QUOTE\${pkglibdir}[$]QUOTE"; ])dnl dnl Another hack, on glibc systems GHCi cannot load the pthread library, Index: configure.ac =================================================================== RCS file: /cvsroot/gtk2hs/gtk2hs/configure.ac,v retrieving revision 1.33 retrieving revision 1.34 diff -u -d -r1.33 -r1.34 --- configure.ac 24 Feb 2005 21:58:55 -0000 1.33 +++ configure.ac 23 Mar 2005 17:08:57 -0000 1.34 @@ -21,7 +21,7 @@ dnl Process this file with autoconf to produce a configure script. dnl ###################################################################### -AC_INIT(gtk2hs, 0.9.7.1) +AC_INIT(gtk2hs, 0.9.7.9) AM_INIT_AUTOMAKE dnl * We require autoconf version 2.50 @@ -163,6 +163,19 @@ GHCPKG_USE_AUTOLIBS="auto = True," ]) +dnl From ghc 6.4 onwards, ghc-pkg only understands the cabal package format +dnl so we must produce and register .cabal files instead of the old .pkg +dnl files. +GTKHS_PROG_CHECK_VERSION($GHC_VERSION, -ge, 6.4.0, [ +USE_CABAL=yes +]) +AM_CONDITIONAL(USE_CABAL, test "$USE_CABAL" = "yes") +if test "$USE_CABAL" = "yes"; then + PKGEXT=cabal +else + PKGEXT=pkg +fi + dnl ghc-pkg 5 searches for libxxx.a, even on Windows. Hence, we need to dnl create libraries with these names instead of the windows names. GTKHS_PROG_CHECK_VERSION($GHC_VERSION, -lt, 6.0.0, [ @@ -599,8 +612,9 @@ AC_SUBST(BUILT_IN_C2HS) AC_SUBST(MULTIPLE_CHS) AC_SUBST(FOUR_WORD_CALLBACK) -AC_SUBST(GHCPKG_LISTLOCAL) AC_SUBST(PKGCONF) +AC_SUBST(USE_CABAL) +AC_SUBST(PKGEXT) AC_SUBST(HCFLAGS) AC_SUBST(C2HS) AC_SUBST(HSC2HS) @@ -646,13 +660,13 @@ tools/c2hs/toplevel/C2HSConfig.hs gtk2hs.spec mk/chsDepend - glib/glib.pkg - gtk/gtk.pkg - mogul/mogul.pkg - glade/glade.pkg - gconf/gconf.pkg - sourceview/sourceview.pkg - mozembed/mozembed.pkg], + glib/glib.pkg glib/glib.cabal + gtk/gtk.pkg gtk/gtk.cabal + mogul/mogul.pkg mogul/mogul.cabal + glade/glade.pkg glade/glade.cabal + gconf/gconf.pkg gconf/gconf.cabal + sourceview/sourceview.pkg sourceview/sourceview.cabal + mozembed/mozembed.pkg mozembed/mozembed.cabal], [chmod a+x mk/chsDepend && chmod a+x install-sh]) dnl ...and chat with the user Index: Makefile.am =================================================================== RCS file: /cvsroot/gtk2hs/gtk2hs/Makefile.am,v retrieving revision 1.57 retrieving revision 1.58 diff -u -d -r1.57 -r1.58 --- Makefile.am 16 Mar 2005 13:56:30 -0000 1.57 +++ Makefile.am 23 Mar 2005 17:09:15 -0000 1.58 @@ -215,12 +215,12 @@ glib_PKGNAME = libHSglib_a -libHSglib_a_PACKAGE = glib/glib.pkg +libHSglib_a_PACKAGE = glib/glib.$(PKGEXT) libHSglib_a_PACKAGEDEPS = libHSglib_a_HEADER = glib-object.h libHSglib_a_PRECOMP = glib/glib.precomp libHSglib_a_LIBS = $(GLIB_LIBS) -libHSglib_a_HCFLAGS = -fffi +libHSglib_a_HCFLAGS = -fffi $(if $(USE_CABAL),-ignore-package glib) libHSglib_a_CFLAGS = $(filter-out -I% -D%,$(GLIB_CFLAGS)) libHSglib_a_CPPFLAGS = $(filter -I% -D%,$(GLIB_CFLAGS)) @@ -287,12 +287,12 @@ gtk_PKGNAME = libHSgtk_a -libHSgtk_a_PACKAGE = gtk/gtk.pkg +libHSgtk_a_PACKAGE = gtk/gtk.$(PKGEXT) libHSgtk_a_PACKAGEDEPS = libHSgtk_a_HEADER = gtk/gtk.h libHSgtk_a_PRECOMP = gtk/gtk.precomp libHSgtk_a_LIBS = $(GLIB_LIBS) $(GTK_LIBS) -libHSgtk_a_HCFLAGS = -fffi +libHSgtk_a_HCFLAGS = -fffi $(if $(USE_CABAL),-ignore-package glib) libHSgtk_a_CFLAGS = $(filter-out -I% -D%,$(GLIB_CFLAGS) $(GTK_CFLAGS)) libHSgtk_a_CPPFLAGS = $(filter -I% -D%,$(GLIB_CFLAGS) $(GTK_CFLAGS)) @@ -524,10 +524,10 @@ mogul_PKGNAME = libHSmogul_a -libHSmogul_a_PACKAGE = mogul/mogul.pkg +libHSmogul_a_PACKAGE = mogul/mogul.$(PKGEXT) libHSmogul_a_PACKAGEDEPS = libHSmogul_a_LIBS = -libHSmogul_a_HCFLAGS = +libHSmogul_a_HCFLAGS = $(if $(USE_CABAL),-ignore-package glib) libHSmogul_a_CFLAGS = libHSmogul_a_CPPFLAGS = @@ -570,12 +570,12 @@ glade_PKGNAME = libHSglade_a -libHSglade_a_PACKAGE = glade/glade.pkg +libHSglade_a_PACKAGE = glade/glade.$(PKGEXT) libHSglade_a_PACKAGEDEPS = libHSglade_a_HEADER = glade/glade.h libHSglade_a_PRECOMP = glade/glade.precomp libHSglade_a_LIBS = $(GLIB_LIBS) $(GTK_LIBS) $(LIBGLADE_LIBS) -libHSglade_a_HCFLAGS = -fffi +libHSglade_a_HCFLAGS = -fffi $(if $(USE_CABAL),-ignore-package glib) libHSglade_a_CFLAGS = $(filter-out -I% -D%,$(GLIB_CFLAGS) $(GTK_CFLAGS) $(LIBGLADE_CFLAGS)) libHSglade_a_CPPFLAGS = $(filter -I% -D%,$(GLIB_CFLAGS) $(GTK_CFLAGS) $(LIBGLADE_CFLAGS)) @@ -649,12 +649,13 @@ gconf_PKGNAME = libHSgconf_a -libHSgconf_a_PACKAGE = gconf/gconf.pkg +libHSgconf_a_PACKAGE = gconf/gconf.$(PKGEXT) libHSgconf_a_PACKAGEDEPS = libHSgconf_a_HEADER = gconf/gconf-client.h libHSgconf_a_PRECOMP = gconf/gconf.precomp libHSgconf_a_LIBS = $(GLIB_LIBS) $(GTK_LIBS) $(GCONF_LIBS) -libHSgconf_a_HCFLAGS = -fglasgow-exts -fallow-overlapping-instances +libHSgconf_a_HCFLAGS = -fglasgow-exts -fallow-overlapping-instances \ + $(if $(USE_CABAL),-ignore-package glib) libHSgconf_a_CFLAGS = $(filter-out -I% -D%,$(GLIB_CFLAGS) $(GTK_CFLAGS) $(GCONF_CFLAGS)) libHSgconf_a_CPPFLAGS = $(filter -I% -D%,$(GLIB_CFLAGS) $(GTK_CFLAGS) $(GCONF_CFLAGS)) @@ -735,12 +736,12 @@ sourceview_PKGNAME = libHSsourceview_a -libHSsourceview_a_PACKAGE = sourceview/sourceview.pkg +libHSsourceview_a_PACKAGE = sourceview/sourceview.$(PKGEXT) libHSsourceview_a_PACKAGEDEPS = libHSsourceview_a_HEADER = sourceview.h libHSsourceview_a_PRECOMP = sourceview/sourceview.precomp libHSsourceview_a_LIBS = $(GLIB_LIBS) $(GTK_LIBS) $(SOURCEVIEW_LIBS) -libHSsourceview_a_HCFLAGS = -fffi +libHSsourceview_a_HCFLAGS = -fffi $(if $(USE_CABAL),-ignore-package glib) libHSsourceview_a_CFLAGS = $(filter-out -I% -D%,$(GLIB_CFLAGS) $(GTK_CFLAGS) $(SOURCEVIEW_CFLAGS)) libHSsourceview_a_CPPFLAGS = $(filter -I% -D%,$(GLIB_CFLAGS) $(GTK_CFLAGS) $(SOURCEVIEW_CFLAGS)) -Isourceview @@ -825,12 +826,12 @@ mozembed_PKGNAME = libHSmozembed_a -libHSmozembed_a_PACKAGE = mozembed/mozembed.pkg +libHSmozembed_a_PACKAGE = mozembed/mozembed.$(PKGEXT) libHSmozembed_a_PACKAGEDEPS = libHSmozembed_a_HEADER = gtkmozembed.h libHSmozembed_a_PRECOMP = mozembed/mozembed.precomp libHSmozembed_a_LIBS = $(GLIB_LIBS) $(GTK_LIBS) $(MOZEMBED_LIBS) -libHSmozembed_a_HCFLAGS = -fffi +libHSmozembed_a_HCFLAGS = -fffi $(if $(USE_CABAL),-ignore-package glib) libHSmozembed_a_CFLAGS = $(filter-out -I% -D%,$(GLIB_CFLAGS) $(GTK_CFLAGS) $(MOZEMBED_CFLAGS)) libHSmozembed_a_CPPFLAGS = $(filter -I% -D%,$(GLIB_CFLAGS) $(GTK_CFLAGS) $(MOZEMBED_CFLAGS)) @@ -1002,6 +1003,16 @@ # and if your installation gets corrupt you can re-register the packages from them. pkglib_DATA = $(foreach pkgname,$(pkglib_LIBRARIES), $(call getVar,$(pkgname),PACKAGE)) +COMMA := , +getModules = \ + $(subst $(SPACE),$(COMMA) ,$(sort \ + $(foreach HSFILE,$(call getVar,$(1),HSFILES), \ + $(patsubst $(firstword $(subst /, ,$(HSFILE))).%.hs, %, \ + $(subst /,.,$(HSFILE)) \ + ) \ + ) \ + )) + if ENABLE_PKGREG # For distributors we usually do not want to register the packages using @@ -1013,10 +1024,10 @@ else echo "[]" > $(PKGCONF); fi;) $(foreach pkgname,$(pkglib_LIBRARIES), \ rm -f $(DESTDIR)$(pkglibdir)/$(patsubst lib%.a,%.o,$(pkgname)); \ - prefix=$(prefix) exec_prefix=$(exec_prefix) pkglibdir=$(pkglibdir) \ - $(GHCPKG) $(addprefix --config-file=,$(PKGCONF)) \ - --update-package $(GHCPKG_BUILD_GHCI_LIB) \ - --input-file=$(call getVar,$(pkgname),PACKAGE);) + sed 's:$${pkglibdir}:$(pkglibdir):g' $(call getVar,$(pkgname),PACKAGE) \ + | sed 's:$${modules}:$(call getModules,$(pkgname)):' \ + | $(GHCPKG) $(addprefix --config-file=,$(PKGCONF)) \ + --update-package $(GHCPKG_BUILD_GHCI_LIB);) uninstall-hook : $(foreach pkgname,$(pkglib_LIBRARIES), \ |