From: Axel S. <as...@us...> - 2004-11-28 20:52:23
|
Update of /cvsroot/gtk2hs/gtk2hs In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv24106 Modified Files: ChangeLog Makefile.am configure.ac Log Message: Better dependency calculation. GHC packages on install. Index: configure.ac =================================================================== RCS file: /cvsroot/gtk2hs/gtk2hs/configure.ac,v retrieving revision 1.7 retrieving revision 1.8 diff -u -d -r1.7 -r1.8 --- configure.ac 26 Nov 2004 15:08:09 -0000 1.7 +++ configure.ac 28 Nov 2004 20:51:43 -0000 1.8 @@ -22,7 +22,7 @@ dnl ###################################################################### AC_INIT(VERSION) -AM_INIT_AUTOMAKE(gtk2hs, 0.9.9) +AM_INIT_AUTOMAKE(gtk2hs, 0.9.6pre) dnl * We require autoconf version 2.50 dnl We need 2.50 due to the use of OBJEXT @@ -189,24 +189,15 @@ AC_MSG_ERROR([ghc-pkg not found. (But ghc exists!?)]); fi -dnl Determine how to list local packages with ghc-pkg. -GHCPKG_LISTLOCAL="-l"; -GTKHS_PROG_CHECK_VERSION($GHC_VERSION, -ge, 6.00.0, [GHCPKG_LISTLOCAL="-L"]) - dnl Optimise Haskell by default and give sufficient space. if test -z "$HCFLAGS"; then HCFLAGS=" -O -H180m " fi - -dnl Due to the interdependencies between the different packages we need to -dnl install one package before we can compile the next one. We do this by -dnl using a local package file called localpackage.conf in the toplevel -dnl directory. The user may specify an alternative file and using the complete -dnl suite in-place. +dnl Check whether to use a local package file. AC_ARG_WITH(pkgconf, - [ --with-pkgconf=pkg.conf use another package.conf file for building in-place], - [LOCALPKGCONF=$withval],[LOCALPKGCONF='$(TOP)/localpackage.conf']) + [ --with-pkgconf=FILE GHC package file to install packages], + [PKGCONF=$withval;],[PKGCONF=;]) dnl Check for pkg-config which holds information about all Gtk related dnl libraries. @@ -281,81 +272,52 @@ dnl The configuration program for GTK is kind of stupid in that it dnl lists directories which don't exist. ghc-pkg in ghc 5.04 or greater dnl does not like that, so we need to filter out non-existent directories. -TMPGTK_CFLAGS=$GTK_CFLAGS; -GTK_CFLAGS=; -for FLAG in $TMPGTK_CFLAGS; do - case $FLAG in - -I*) DIR=`echo $FLAG | $SED "s/-I//"`; - if test -d $DIR; then GTK_CFLAGS="$GTK_CFLAGS -I$DIR"; fi;; - *) GTK_CFLAGS="$GTK_CFLAGS $FLAG";; - esac; -done; -TMPGTK_LIBS=$GTK_LIBS; -GTK_LIBS=; -for FLAG in $TMPGTK_LIBS; do - case $FLAG in - -L*) DIR=`echo $FLAG | $SED "s/-L//"`; - if test -d $DIR; then GTK_LIBS="$GTK_LIBS -L$DIR"; fi;; - *) GTK_LIBS="$GTK_LIBS $FLAG";; - esac; -done; +dnl Furthermore we remove all libraries and directories for packages that +dnl built on top of gtk so that they don't appear several times on the +dnl command line. +GTK_CFLAGS=`tools/checkDirs.sh $GTK_CFLAGS`; +GTK_LIBS=`tools/checkDirs.sh $GTK_LIBS`; +SOURCEVIEW_CFLAGS=`CFLAGS="$GTK_CFLAGS" tools/checkDirs.sh $SOURCEVIEW_CFLAGS`; +SOURCEVIEW_LIBS=`LDFLAGS="$GTK_LIBS" tools/checkDirs.sh $SOURCEVIEW_LIBS`; +LIBGLADE_CFLAGS=`CFLAGS="$GTK_CFLAGS" tools/checkDirs.sh $LIBGLADE_CFLAGS`; +LIBGLADE_LIBS=`LDFLAGS="$GTK_LIBS" tools/checkDirs.sh $LIBGLADE_LIBS`; +GCONF_CFLAGS=`CFLAGS="$GTK_CFLAGS" tools/checkDirs.sh $GCONF_CFLAGS`; +GCONF_LIBS=`LDFLAGS="$GTK_LIBS" tools/checkDirs.sh $GCONF_LIBS`; -TMPSOURCEVIEW_CFLAGS=$SOURCEVIEW_CFLAGS; -SOURCEVIEW_CFLAGS=; -for FLAG in $TMPSOURCEVIEW_CFLAGS; do - case $FLAG in - -I*) DIR=`echo $FLAG | $SED "s/-I//"`; - if test -d $DIR; then SOURCEVIEW_CFLAGS="$SOURCEVIEW_CFLAGS -I$DIR"; fi;; - *) SOURCEVIEW_CFLAGS="$SOURCEVIEW_CFLAGS $FLAG";; - esac; -done; -TMPSOURCEVIEW_LIBS=$SOURCEVIEW_LIBS; -SOURCEVIEW_LIBS=; -for FLAG in $TMPSOURCEVIEW_LIBS; do - case $FLAG in - -L*) DIR=`echo $FLAG | $SED "s/-L//"`; - if test -d $DIR; then SOURCEVIEW_LIBS="$SOURCEVIEW_LIBS -L$DIR"; fi;; - *) SOURCEVIEW_LIBS="$SOURCEVIEW_LIBS $FLAG";; - esac; -done; +dnl Fix for ghc-pkg in that it doesn't differ between paths to extra +dnl libraries and paths to Haskell libraries. We have to append the +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. +GTK_LIBS="$GTK_LIBS -L$libdir"; -TMPLIBGLADE_CFLAGS=$LIBGLADE_CFLAGS; -LIBGLADE_CFLAGS=; -for FLAG in $TMPLIBGLADE_CFLAGS; do +dnl Change the representation of these flags to "flag1","flag2". The +dnl letters CQ stand for Comma, Quote. +C=; GTK_CFLAGS_CQ=; +for FLAG in $GTK_CFLAGS; do case $FLAG in - -I*) DIR=`echo $FLAG | $SED "s/-I//"`; - if test -d $DIR; then LIBGLADE_CFLAGS="$LIBGLADE_CFLAGS -I$DIR"; fi;; - *) LIBGLADE_CFLAGS="$LIBGLADE_CFLAGS $FLAG";; + -I*) TMP=${FLAG#-I}; + GTK_CFLAGS_CQ="$GTK_CFLAGS_CQ$C\"$TMP\""; C=",";; esac; done; -TMPLIBGLADE_LIBS=$LIBGLADE_LIBS; -LIBGLADE_LIBS=; -for FLAG in $TMPLIBGLADE_LIBS; do +AC_SUBST(GTK_CFLAGS_CQ) +C_LIBS=; GTK_LIBS_CQ=; C_LDIR=; GTK_LIBDIR_CQ=; C_XTRA=; GTK_LIBEXTRA_CQ=; +for FLAG in $GTK_LIBS; do case $FLAG in - -L*) DIR=`echo $FLAG | $SED "s/-L//"`; - if test -d $DIR; then LIBGLADE_LIBS="$LIBGLADE_LIBS -L$DIR"; fi;; - *) LIBGLADE_LIBS="$LIBGLADE_LIBS $FLAG";; + -l*) GTK_LIBS_CQ="$GTK_LIBS_CQ$C_LIBS\"${FLAG#-l}\""; C_LIBS=",";; + -L*) GTK_LIBDIR_CQ="$GTK_LIBDIR_CQ$C_LDIR\"${FLAG#-L}\""; C_LDIR=",";; + *) GTK_LIBEXTRA_CQ="$GTK_LIBEXTRA_CQ$C_XTRA\"$FLAG\""; C_XTRA=",";; esac; done; +AC_SUBST(GTK_LIBS_CQ) +AC_SUBST(GTK_LIBDIR_CQ) +AC_SUBST(GTK_LIBEXTRA_CQ) -TMPGCONF_CFLAGS=$GCONF_CFLAGS; -GCONF_CFLAGS=; -for FLAG in $TMPGCONF_CFLAGS; do - case $FLAG in - -I*) DIR=`echo $FLAG | $SED "s/-I//"`; - if test -d $DIR; then GCONF_CFLAGS="$GCONF_CFLAGS -I$DIR"; fi;; - *) GCONF_CFLAGS="$GCONF_CFLAGS $FLAG";; - esac; -done; -TMPGCONF_LIBS=$GCONF_LIBS; -GCONF_LIBS=; -for FLAG in $TMPGCONF_LIBS; do - case $FLAG in - -L*) DIR=`echo $FLAG | $SED "s/-L//"`; - if test -d $DIR; then GCONF_LIBS="$GCONF_LIBS -L$DIR"; fi;; - *) GCONF_LIBS="$GCONF_LIBS $FLAG";; - esac; -done; +AC_ARG_WITH(hidir, + [ --with-hidir=DIR specify install dir for .hi files], + [hidir=$withval], + [hidir=$libdir/hi]) +AC_SUBST(hidir) dnl Check if user wants bindings for deprecated APIs. Defaults to yes. AC_MSG_CHECKING([whether to build deprecated bindings]) @@ -486,7 +448,7 @@ AC_SUBST(MULTIPLE_CHS) AC_SUBST(FOUR_WORD_CALLBACK) AC_SUBST(GHCPKG_LISTLOCAL) -AC_SUBST(LOCALPKGCONF) +AC_SUBST(PKGCONF) AC_SUBST(HCFLAGS) AC_SUBST(C2HS) AC_SUBST(MARSHALLDEFS) @@ -543,9 +505,8 @@ tools/c2hs/toplevel/C2HSConfig.hs gtk2hs.spec mk/chsDepend - mk/config.mk -], - [chmod a+x mk/chsDepend && chmod a+x install-sh]) + gtk/gtk2hs.pkg], + [chmod a+x mk/chsDepend && chmod a+x install-sh]) dnl ...and chat with the user echo "**************************************************" Index: Makefile.am =================================================================== RCS file: /cvsroot/gtk2hs/gtk2hs/Makefile.am,v retrieving revision 1.7 retrieving revision 1.8 diff -u -d -r1.7 -r1.8 --- Makefile.am 26 Nov 2004 15:08:09 -0000 1.7 +++ Makefile.am 28 Nov 2004 20:51:43 -0000 1.8 @@ -3,23 +3,8 @@ MOSTLYCLEANFILES = CLEANFILES = DISTCLEANFILES = *.precomp - -# Before chaning anything on dependency calculation: -# - Note that the initial dependencies are computed when make checks if -# the include files are up to date. -# - CFLAGS and CPPFLAGS are not package/application specific. This is due -# to the initial dependency calculation where it is not clear which -# package a particular file belongs to. But the CPPFLAGS are needed for -# the .chs.pp rule which runs files through the pre-processor. -# - Dependencies between Haskell .hs modules are stored in -# .deps/<pkg-name>.deps . To calculate these dependencies, c2hs must be -# run on the .chs and the header file belonging to the package to which -# the .chs file belongs to. But since the dependencies for a package are -# stored in a file with the package's name, set the NAME variable to the -# file name of the target .deps/<pkg-name>.deps and then run c2hs. - -CFLAGS = $(filter-out -I%,$(GTK_CFLAGS)) -CPPFLAGS = $(filter -I%,$(GTK_CFLAGS)) +CPPFLAGS+= $(GTK_CFLAGS) $(SOURCEVIEW_CFLAGS) $(LIBGLADE_CFLAGS) \ + $(GCONF_CFLAGS) # Build c2hs before anything else. @@ -50,7 +35,7 @@ HSC = hsc2hs # all packages and applications -lib_LIBRARIES = gtk/libgtk2hs.a +lib_LIBRARIES = libgtk2hs.a noinst_PROGRAMS = \ tools/hierarchyGen/TypeGenerator \ tools/callbackGen/HookGenerator \ @@ -188,19 +173,19 @@ -include tools_c2hs_c2hsLocal.deps # gtk2hs GUI library -gtk_libgtk2hs_a_NAME = gtk/libgtk2hs.a -$(gtk_libgtk2hs_a_NAME) : NAME = gtk_libgtk2hs_a +libgtk2hs_a_NAME = libgtk2hs.a +$(libgtk2hs_a_NAME) : NAME = libgtk2hs_a -gtk_libgtk2hs_a : tools/c2hs/c2hs -gtk_libgtk2hs_a_PACKAGECONF = libgtk2hs.conf -gtk_libgtk2hs_a_PACKAGE = gtk2hs -gtk_libgtk2hs_a_PACKAGEDEPS = data -gtk_libgtk2hs_a_HEADER = gtk/gtk.h -gtk_libgtk2hs_a_PRECOMP = gtk/gtk.precomp -gtk_libgtk2hs_a_LIBS = @GTK_LIBS@ -gtk_libgtk2hs_a_HCFLAGS = -fglasgow-exts +libgtk2hs_a_PACKAGE = gtk/gtk2hs.pkg +libgtk2hs_a_PACKAGEDEPS = data +libgtk2hs_a_HEADER = gtk/gtk.h +libgtk2hs_a_PRECOMP = gtk/gtk.precomp +libgtk2hs_a_LIBS = @GTK_LIBS@ +libgtk2hs_a_HCFLAGS = -fglasgow-exts +libgtk2hs_a_CFLAGS = $(filter-out -I%,$(GTK_CFLAGS)) +libgtk2hs_a_CPPFLAGS = $(filter -I%,$(GTK_CFLAGS)) -gtk_libgtk2hs_a_SOURCES = \ +libgtk2hs_a_SOURCES = \ gtk/general/Hierarchy.chs \ gtk/general/Signal.chs \ gtk/glib/GValue.chs \ @@ -334,33 +319,35 @@ compat/LocalControl.hs \ compat/LocalData.hs -am_gtk_libgtk2hs_a_OBJECTS = \ - $(addsuffix .$(OBJEXT),$(basename $(basename $(gtk_libgtk2hs_a_SOURCES)))) +am_libgtk2hs_a_OBJECTS = \ + $(addsuffix .$(OBJEXT),$(basename $(basename $(libgtk2hs_a_SOURCES)))) -gtk_libgtk2hs_a_CHSPPFILES = $(filter %.chs.pp,$(gtk_libgtk2hs_a_SOURCES)) -gtk_libgtk2hs_a_CHSFILES = \ - $(filter %.chs,$(gtk_libgtk2hs_a_SOURCES:.chs.pp=.chs)) -gtk_libgtk2hs_a_CHSFILES_HS = $(gtk_libgtk2hs_a_CHSFILES:.chs=.hs) -gtk_libgtk2hs_a_HSCFILES = $(filter %.hsc, $(gtk_libgtk2hs_a_SOURCES)) -gtk_libgtk2hs_a_HSCFILES_HS = $(gtk_libgtk2hs_a_HSCFILES:.hsc=.hs) -gtk_libgtk2hs_a_BUILDSOURCES = \ - $(gtk_libgtk2hs_a_CHSPPFILES:.chs.pp=.chs) \ - $(gtk_libgtk2hs_a_CHSFILES_HS) \ - $(gtk_libgtk2hs_a_HSCFILES_HS) -gtk_libgtk2hs_a_HSFILES = \ - $(filter %.hs,$(gtk_libgtk2hs_a_BUILDSOURCES)) \ - $(filter %.hs,$(gtk_libgtk2hs_a_SOURCES)) -.PRECIOUS: $(gtk_libgtk2hs_a_HSFILES:.hs=hi) +libgtk2hs_a_CHSPPFILES = $(filter %.chs.pp,$(libgtk2hs_a_SOURCES)) +libgtk2hs_a_CHSFILES = \ + $(filter %.chs,$(libgtk2hs_a_SOURCES:.chs.pp=.chs)) +libgtk2hs_a_CHSFILES_HS = $(libgtk2hs_a_CHSFILES:.chs=.hs) +libgtk2hs_a_HSCFILES = $(filter %.hsc, $(libgtk2hs_a_SOURCES)) +libgtk2hs_a_HSCFILES_HS = $(libgtk2hs_a_HSCFILES:.hsc=.hs) +libgtk2hs_a_BUILDSOURCES = \ + $(libgtk2hs_a_CHSPPFILES:.chs.pp=.chs) \ + $(libgtk2hs_a_CHSFILES_HS) \ + $(libgtk2hs_a_HSCFILES_HS) +libgtk2hs_a_HSFILES = \ + $(filter %.hs,$(libgtk2hs_a_BUILDSOURCES)) \ + $(filter %.hs,$(libgtk2hs_a_SOURCES)) -MOSTLYCLEANFILES+ = $(am_gtk_libgtk2hs_a_OBJECTS) -MOSTLYCLEANFILES+ = $(gtk_libgtk2hs_a_HSFILES:.hs=.hi) -CLEANFILES+= $(gtk_libgtk2hs_a_BUILDSOURCES) +# add prefix nobase_ when changing to hierarchical module namespace +hi_SCRIPTS = $(libgtk2hs_a_HSFILES:.hs=.hi) -DISTCLEANFILES+= gtk_libgtk2hs_a.deps $(gtk_libgtk2hs_a_CHSFILES_HS:.hs=.dep) --include gtk_libgtk2hs_a.deps $(gtk_libgtk2hs_a_CHSFILES_HS:.hs=.dep) +MOSTLYCLEANFILES+ = $(am_libgtk2hs_a_OBJECTS) +MOSTLYCLEANFILES+ = $(libgtk2hs_a_HSFILES:.hs=.hi) +CLEANFILES+= $(libgtk2hs_a_BUILDSOURCES) + +DISTCLEANFILES+= libgtk2hs_a.deps $(libgtk2hs_a_CHSFILES_HS:.hs=.dep) +-include libgtk2hs_a.deps $(libgtk2hs_a_CHSFILES_HS:.hs=.dep) # All generated source files go here. -BUILDSOURCES = $(gtk_libgtk2hs_a_BUILDSOURCES) +BUILDSOURCES = $(libgtk2hs_a_BUILDSOURCES) include mk/common.mk Index: ChangeLog =================================================================== RCS file: /cvsroot/gtk2hs/gtk2hs/ChangeLog,v retrieving revision 1.235 retrieving revision 1.236 diff -u -d -r1.235 -r1.236 --- ChangeLog 26 Nov 2004 15:08:09 -0000 1.235 +++ ChangeLog 28 Nov 2004 20:51:43 -0000 1.236 @@ -1,3 +1,22 @@ +2004-11-28 Axel Simon <A....@ke...> + + * configure.ac, tools/checkDir.sh: Determine CFLAGS and LDFLAGS + for each of the libraries, in particular remove directories that + are already present in Gtk from more derived libraries. + + * Makefile.am, mk/common.mk: Add a new goal for calculating + dependencies for Haskell files. This new target allows the + recursive invocation with the name of the library/application for + which dependencies are generated. This allows for choosing the + correct CFLAGS for doing pre-processing. Furthermore, fixed the + installation of a package. + + * mk/applicatoin.mk, config.mk.in, library.mk, recurse.mk: Remove. + +2004-11-26 Axel Simon <A....@ke...> + + * configure.ac: Changed AC_CONFIG_HEADERS to AM_CONFIG_HEADER. + 2004-11-26 Jens Petersen <pet...@ha...> * Makefile.am (EXTRA_DIST): Include Signal.chs-boot*, |