Using --enable-split-objs, I've been able to reduce the size of the UTFSampler
binary from 3M stripped to 1M stripped.  And it still seems to work.
If somebody could explain to me why we need the last patch, I would be even
happier.

Sun Mar  2 23:37:10 GMT 2008  Eric Kow <[EMAIL PROTECTED]>
  * Create a --enable-split-objs option for configure and makefile.
  
  For wxcore, --enable-split-objs calls GHC with -split-objs and
  combines the splitted up .o files in the archive.

Tue Mar  4 15:40:47 GMT 2008  Eric Kow <[EMAIL PROTECTED]>
  * Add a wxcREFUSE_MEDIACTRL flag (for the same reason as opengl)

Tue Mar  4 17:07:29 GMT 2008  Eric Kow <[EMAIL PROTECTED]>
  * Fix configure bug where ENABLE-SPLITOBJS was being defined.
  It was being set to 'no' (perhaps the makefile should just
  check if ENABLE-SPLITOBJS='yes')

Tue Mar  4 22:35:05 GMT 2008  Eric Kow <[EMAIL PROTECTED]>
  * Warn about GHC older than 6.4 (to match removed functionality).

Tue Mar  4 22:35:24 GMT 2008  Eric Kow <[EMAIL PROTECTED]>
  * Back off from using split-objs for Graphics.UI.WXCore.WxcTypes
  
  I don't really understand why we have to do this, but I get undefined
  symbol errors linking sample apps when using this with --enable-split-objs

New patches:

[Create a --enable-split-objs option for configure and makefile.
Eric Kow <[EMAIL PROTECTED]>**20080302233710
 
 For wxcore, --enable-split-objs calls GHC with -split-objs and
 combines the splitted up .o files in the archive.
] {
hunk ./configure 23
 #--------------------------------------------------------------------
 
 # install
+enablesplitobjs="no"
 enablestrip="no"
 enableupx="no"
 withmsc="no"
hunk ./configure 366
       -libexecdir=*|--libexecdir=*) ;; # just for cabal
       -shared-prefix=*|--shared-prefix=*)
 	  sharedprefix="$arg";;
+      -enable-split-objs|--enable-split-objs)
+	  enablesplitobjs="yes";;
       -enable-strip|--enable-strip)
 	  enablestrip="yes";;
       -disable-strip|--disable-strip)
hunk ./configure 773
  fi
 fi
 
+if test "$enablesplitobjs" = "yes"; then
+  hcflags="$hcflags -split-objs"
+fi
+
+
 #--------------------------------------------------------------------
 # toolkit
 #--------------------------------------------------------------------
hunk ./configure 833
 HCFLAGS=
 HCPKG=$hcpkg
 ENABLE-PROF=$enableprof
+ENABLE-SPLITOBJS=$enablesplitobjs
 HC-PROF-FLAGS=-hisuf p_hi $hcprof
 
 # Packages
hunk ./makefile 596
 $(WXCORE-CORE-C-OBJ): $(WXCORE-CORE-C-OBJS)
 	  $(call combine-objs,$@,$^)
 
+ifdef ENABLE-SPLITOBJS
 # build a library
 $(WXCORE-LIB): $(WXCORE-OBJS)  $(WXCORE-STUB-OBJS)
hunk ./makefile 599
+	  $(call make-archive-of-splitobjs,$@,$(WXCORE-OBJS))
+	  $(call make-archive,$@,$(WXCORE-STUB-OBJS))
+
+$(WXCORE-CORE-A-LIB): $(WXCORE-CORE-A-OBJS)
+	  $(call make-archive-of-splitobjs,$@,$^)
+
+$(WXCORE-CORE-B-LIB): $(WXCORE-CORE-B-OBJS)
+	  $(call make-archive-of-splitobjs,$@,$^)
+
+$(WXCORE-CORE-C-LIB): $(WXCORE-CORE-C-OBJS)
+	  $(call make-archive-of-splitobjs,$@,$^)
+else
+$(WXCORE-LIB): $(WXCORE-OBJS)  $(WXCORE-STUB-OBJS)
 	  $(call make-archive,$@,$^)
 
 $(WXCORE-CORE-A-LIB): $(WXCORE-CORE-A-OBJS)
hunk ./makefile 622
 
 $(WXCORE-CORE-C-LIB): $(WXCORE-CORE-C-OBJS)
 	  $(call make-archive,$@,$^)
+endif
 
 # create an object file from source files.
 $(WXCORE-CORE-A-OBJS) $(WXCORE-CORE-B-OBJS) $(WXCORE-CORE-C-OBJS) $(WXCORE-OBJS): $(WXCORE-IMPORTSDIR)/%.o: $(WXCORE-SRCDIR)/%.hs
hunk ./makefile.lib 61
 make-hs		=$(patsubst %,$(1)/%.hs,$(2))
 make-objs	=$(patsubst %,$(1)/%.o,$(2))
 make-prof-objs	=$(patsubst %,$(1)/%.p_o,$(2))
+make-split-objs	=$(patsubst %,$(1)/%_split/*.o,$(2))
 make-deps	=$(patsubst %,$(1)/%.d,$(2))
 make-his	=$(patsubst %,$(1)/%.hi,$(2))
 make-prof-his	=$(patsubst %,$(1)/%.p_hi,$(2))
hunk ./makefile.lib 160
 # create an archive
 # make-archive(<archive>,<input .o files>)
 make-archive	=$(AR) -sr $(1) $(2)
+make-archive-of-splitobjs	=$(foreach obj,$(patsubst %.o,%_split,$(2)),$(AR) -sr $(1) $(obj)/*.o && ) :
 
 # update the archive symbol index
 # make-archive-index(<archive>)
}
[Add a wxcREFUSE_MEDIACTRL flag (for the same reason as opengl)
Eric Kow <[EMAIL PROTECTED]>**20080304154047] {
hunk ./configure 504
 
   if test "$withmediactrl" = "yes"; then
     wxlibswanted="$wxlibswanted media"
+  else
+    wxwincxxflags="-DwxcREFUSE_MEDIACTRL $wxwincxxflags"
   fi
 
   if test "$withstc" = "yes"; then
hunk ./wxc/src/mediactrl.cpp 17
 #if defined(wxUSE_MEDIACTRL) && (wxUSE_MEDIACTRL==0)
 # undef wxUSE_MEDIACTRL
 #endif
+
+#if defined(wxcREFUSE_MEDIACTRL)
+# undef wxUSE_MEDIACTRL
+#endif
 
 #ifndef wxUSE_MEDIACTRL
 # define wxMediaCtrl      void
}
[Fix configure bug where ENABLE-SPLITOBJS was being defined.
Eric Kow <[EMAIL PROTECTED]>**20080304170729
 It was being set to 'no' (perhaps the makefile should just
 check if ENABLE-SPLITOBJS='yes')
] hunk ./configure 23
 #--------------------------------------------------------------------
 
 # install
-enablesplitobjs="no"
 enablestrip="no"
 enableupx="no"
 withmsc="no"
[Warn about GHC older than 6.4 (to match removed functionality).
Eric Kow <[EMAIL PROTECTED]>**20080304223505] hunk ./configure 600
 	echo ""
 	ghcold="yes";;
     6.0* | 6.1* | 6.2*)
+	echo "WARNING:"
+	echo " You seem to have an older ghc installed, namely $hcversion"
+        echo " Support for GHC version prior to 6.4 has been removed for simplicity."
+        echo " It is strongly advised to upgrade to a newer version."
 	ghcold="yes";;
     6.*) ;;
     7.*) ;;
[Back off from using split-objs for Graphics.UI.WXCore.WxcTypes
Eric Kow <[EMAIL PROTECTED]>**20080304223524
 
 I don't really understand why we have to do this, but I get undefined
 symbol errors linking sample apps when using this with --enable-split-objs
] hunk ./makefile 603
 	  $(call make-archive,$@,$(WXCORE-STUB-OBJS))
 
 $(WXCORE-CORE-A-LIB): $(WXCORE-CORE-A-OBJS)
-	  $(call make-archive-of-splitobjs,$@,$^)
+	  $(call make-archive,$@,$(filter %WxcTypes.o,$^))
+	  $(call make-archive-of-splitobjs,$@,$(filter-out %WxcTypes.o,$^))
 
 $(WXCORE-CORE-B-LIB): $(WXCORE-CORE-B-OBJS)
 	  $(call make-archive-of-splitobjs,$@,$^)

Context:

[Added testcase for FontFixed problem (1906476)
Mads Lindstroem <[EMAIL PROTECTED]>**20080304060118] 
[Remove List Control test case (bug 1742979 is already fixed on darcs).
shelarcy <[EMAIL PROTECTED]>**20080228081614] 
[Fix: bugs/makefile's "make clean" doesn't clean Windows things.
shelarcy <[EMAIL PROTECTED]>**20080228082649] 
[Remove parasite configure change.
Eric Kow <[EMAIL PROTECTED]>**20080227134757
 Move around some variables to make more sense.
] 
[Add wx-prof target for Windows binary distribution.
shelarcy <[EMAIL PROTECTED]>**20080227035051] 
[Fix bugs in enable wxcore profiling.
shelarcy <[EMAIL PROTECTED]>**20080227034845] 
[Specify what OS BoxedCombinator bug fails on.
Eric Kow <[EMAIL PROTECTED]>**20080227135140] 
[Fix bugs makefile under Linux
Eric Kow <[EMAIL PROTECTED]>**20080227134848] 
[Add a configure option to enable wxcore profiling.
Eric Kow <[EMAIL PROTECTED]>**20080226215155] 
[Fix some bugs pointed out by shelarcy on wxcore-prof.
Eric Kow <[EMAIL PROTECTED]>**20080226211227] 
[Add wxcore-prof target for compiling profiling versions of wxcore.
Eric Kow <[EMAIL PROTECTED]>**20080225231635] 
[Remove support for GHC prior to 6.4.
Eric Kow <[EMAIL PROTECTED]>**20080225223554] 
[Change samples/contrib/Camels.hs encoding to UTF-8.
shelarcy <[EMAIL PROTECTED]>**20080225142551] 
[Fix: docdist and bindist's wx documents don't link wxcore documents.
shelarcy <[EMAIL PROTECTED]>**20080225141105] 
[Fix: configure doesn't find GHC's Haddock document directory on GHC 6.8.x or higher.
shelarcy <[EMAIL PROTECTED]>**20080225135754] 
[Fix bug pointed out by shelarcy in --enable-mediactrl flag.
Eric Kow <[EMAIL PROTECTED]>**20080225110340
 It was setting the opengl flag instead.
] 
[Maintainer is wxhaskell-devel not wxhaskell-users.
Eric Kow <[EMAIL PROTECTED]>**20080225003139] 
[Add a test case for start >> start (1610984)
Eric Kow <[EMAIL PROTECTED]>**20080225001328] 
[Implement an --enable-mediactrl configure flag.
Eric Kow <[EMAIL PROTECTED]>**20080225000109
 with mediactrl disabled by default.
] 
[Add a diagram of wxhaskell components.
Eric Kow <[EMAIL PROTECTED]>**20080224185557] 
[Eliminate mandatory --with-opengl on Linux.
Eric Kow <[EMAIL PROTECTED]>**20080219171912
 
 If wxWidgets is compiled with opengl, its header files
  #define wxUSE_GLCANVAS 1
 
 (See, for example, /usr/lib/wx/include/gtk2-unicode-release-2.6/wx/setup.h on
 Ubuntu Gutsy Gibbon), which causes us to compile glcanvas as if we were going
 to link against the wxWidgets opengl library.  But since we are not linking
 against that, the user gets errors compiling their applications.
 
 Here we introduce an extra preprocessor flag to really insist that no, despite
 what wxWidgets says, we don't want to use GLCANVAS.
] 
[Fix: wxPrint**, wxPreviveFrame** and other function causes link error by undefined reference on Windows (Visual Studio).
shelarcy <[EMAIL PROTECTED]>**20080219034144] 
[(OS X) Skip intermediate step of compiling master.o (revisited!)
Eric Kow <[EMAIL PROTECTED]>**20080218225200
 
 I'm going to quote some mails from Malcolm Wallace on wxhaskel-users in early
 2008-02.
 
 First message:
 > I'm attempting to install wxHaskell from the darcs repo at
 > darcs.haskell.org, under ghc-6.6. on MacOS 10.4.11, with
 > wxMac-2.6.4.
 >
 > The compilation of wxHaskell seems to proceed OK until the link
 > stage:
 >
 >     g++ -r -keep_private_externs -nostdlib -o out/wxc/master.o ....
 >
 > which failed because there is no -lstdc++-static on my machine.  I
 > found the place in the makefile to replace -lstdc++-static with
 > the dynamic -lstdc++, and compilation proceeds further, but not
 > much:
 >
 >      g++ -dynamiclib -install_name\
 > /usr/local/wxhaskell/lib/libwxc-mac2.6.4-0.10.1.dylib -undefined suppress\
 > -flat_namespace -o out/wxc/libwxc-mac2.6.4-0.10.1.dylib out/wxc/master.o\
 > -lwx_macu_gl-2.6 -L/usr/local/lib -framework QuickTime -framework IOKit\
 > -framework Carbon -framework Cocoa -framework System -lwx_macu_media-2.6\
 > -lwx_macu-2.6
 >     ld: out/wxc/master.o undefined symbol 12387 (__ZTI10wxListBase) can't be a weak definition
 >     /usr/bin/libtool: internal link edit command failed
 >
 > The offending symbol __ZTI10wxListBase looks like it might be a
 > z-encoded symbol from Haskell-land, but I'm not sure how to proceed.
 
 Second message:
 > A correct build on MacOS 10.4.11 with ghc-6.6 requires that
 > wxWidgets is configured with --enable-shared, and that this patch:
 >
 >     (OS X) Check architecture to use intermediate step of compiling
 >     master.o or not.
 >
 > be darcs unpulled from your local repo.
 >
 > With these tweaks, wxHaskell builds, compiles, and runs the demo
 > programs.
 
] 
[Cleanup passing of std/media/stc/opengl to wx-config.
Eric Kow <[EMAIL PROTECTED]>**20080218130345] 
[Add Sound type's Media class stop method.
shelarcy <[EMAIL PROTECTED]>**20080218160511] 
[Fix STC* test cases.
shelarcy <[EMAIL PROTECTED]>**20080218155734] 
[Fix: wrapper.h and sound.cpp doesn't care about wxWindows 2.4.2.
shelarcy <[EMAIL PROTECTED]>**20080218155605] 
[Sync Visual Studio Project's source flatten away ewxw directories.
shelarcy <[EMAIL PROTECTED]>**20080218142201] 
[Export TabPage type synonym (bug 1349475)
Eric Kow <[EMAIL PROTECTED]>**20080218005112] 
[Add ListControl test case (bug 1742979)
Eric Kow <[EMAIL PROTECTED]>**20080218002441
 This might only be a bug on Windows, if at all.
] 
[Add test case textColor attribute (bug 1224727).
Eric Kow <[EMAIL PROTECTED]>**20080218000738] 
[Fix Landscape printing (bug 1168903).
Eric Kow <[EMAIL PROTECTED]>**20080217235724
 
 Filed on behalf on Lennart Augustson <[EMAIL PROTECTED]>, who
 submitted a regular Unix patch.
] 
[Add BoxedCombinator test case (bug 1549363)
Eric Kow <[EMAIL PROTECTED]>**20080217233719] 
[Add the submenu bug.
Eric Kow <[EMAIL PROTECTED]>**20080217174326] 
[Add NonModalDialog test case (bug #1372529)
Eric Kow <[EMAIL PROTECTED]>**20080217174203] 
[Add a bugs directory for test cases.
Eric Kow <[EMAIL PROTECTED]>**20080217174142] 
[Fix UTF8Sampler test case.
Eric Kow <[EMAIL PROTECTED]>**20080217130553] 
[Fix typo pointed out on bugtracker.
Eric Kow <[EMAIL PROTECTED]>**20080217114303] 
[dos2unix files that have both CRLF and LF line terminators
Eric Kow <[EMAIL PROTECTED]>**20080217095711
 
 Text editors get confused by these.
 Get rid of trailing whitespace while we're at it.
] 
[Flatten away ewxw directories.
Eric Kow <[EMAIL PROTECTED]>**20080217094929
 
 This is to mirror the wxc project, making it easier to compare our
 version of wxc with the standalone one.
] 
[Remove unused ewxw files.
Eric Kow <[EMAIL PROTECTED]>**20080217082029
 
 There is an overlap between ./wxc/src/ewxw and ./wxc/src.  The makefile seems
 to ignore the ones in ewxw.
] 
[Synch Visual Studio Project's wxc library version
shelarcy <[EMAIL PROTECTED]>**20080216161420] 
[Synch Visual Studio Project's output dir same as makefile
shelarcy <[EMAIL PROTECTED]>**20080216155656] 
[Ugly hack to make setup haddock work without first building.
Eric Kow <[EMAIL PROTECTED]>**20080216135157] 
[Bump to 0.10.2.
Eric Kow <[EMAIL PROTECTED]>**20080216130854] 
[Mimick cabal in placement of haddocks.
Eric Kow <[EMAIL PROTECTED]>**20080216130819] 
[Move cabal stuff to end of makefile.
Eric Kow <[EMAIL PROTECTED]>**20080216125445
 so that all variables are defined.
] 
[Add Hs-Source-Dirs for wxcore.cabal.
Eric Kow <[EMAIL PROTECTED]>**20080216125112
 In case we ever switch to the Simple build type.
] 
[Re-add time package dependency (needed by wxdirect).
Eric Kow <[EMAIL PROTECTED]>**20080216124853] 
[Improve description and synopsis of cabal files.
Eric Kow <[EMAIL PROTECTED]>**20080216124832] 
[Split doc building into wxcore and wx version.
Eric Kow <[EMAIL PROTECTED]>**20080216124746] 
[Modernise haskell98 imports in wxdirect.
Eric Kow <[EMAIL PROTECTED]>**20080216120113] 
[Prefer /usr/local/wxhaskell/bin/wx-config to the one on the path.
Eric Kow <[EMAIL PROTECTED]>**20080216113844
 
 This makes it easier to install wxhaskell via cabal-install.
 Just set up a symbolic link to point to point to your wxWidgets,
 no need for the --wx-config flag.
] 
[Add some --bindir, --datadir, --libexecdir to configure script.
Eric Kow <[EMAIL PROTECTED]>**20080216113837
 For Cabal.  The last two are ignored.
] 
[Change output dir to 'dist' to mimick cabal.
Eric Kow <[EMAIL PROTECTED]>**20080216104847] 
[Modernise haskell98 imports in wxcore.
Eric Kow <[EMAIL PROTECTED]>**20080216100020] 
[Consolidate build targets which exist purely for the sake of Cabal.
Eric Kow <[EMAIL PROTECTED]>**20080216095845] 
[Fix some dependencies that Ross Paterson pointed out.
Eric Kow <[EMAIL PROTECTED]>**20080215181444] 
[TAG 0.10.1
Eric Kow <[EMAIL PROTECTED]>**20080215173503] 
Patch bundle hash:
ef4fc7684c655aef27f5249eb2c8381dc021678c
-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
wxhaskell-devel mailing list
wxhaskell-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wxhaskell-devel

Reply via email to