[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Monotone-devel] Windows build

From: Jon Bright
Subject: [Monotone-devel] Windows build
Date: Wed, 30 Mar 2005 20:51:26 +0200
User-agent: Mozilla Thunderbird 1.0 (Windows/20041206)


OK, it turns out this draft seems pretty much complete. Comments (other than "Dear God, what a complicated nightmare") welcome :-)

With various workarounds, this ends up being slightly longer than when I
last posted it (5 months ago), but on the upside, Win32 now passes all
the unit tests and all the integration tests which are expected to pass
(and fails all those expected to fail).

1. Download the MinGW exe, the MSYS exe, the gettext exe, the
libiconv exe, the MSYS DTK and the autoconf .tar.bz2 file from
2. Install MinGW, then MSYS.  After install, MSYS will ask if you have a
MinGW install.  Tell it yes, give it the path of your MinGW install
("c:/mingw" by standard)
3. Install the MSYS DTK.
4. Install gettext and libiconv.
5. Get popt-1.7.tar.gz from
and copy it to c:\msys\1.0\home\<username>
6. Copy the autoconf tar.bz2 file to c:\msys\1.0\home\<username>
7. Start msys
8. cd /
9. tar -jxf ~/msys-autoconf-2.59.tar.bz2
10. cd ~
11. tar zxvf popt-1.7.tar.gz
12. Using your favourite text editor, edit popt-1.7/intl/localename.c
13. Search for LANG_SORBIAN, delete the line on which it appears.  Not
doing so results in a compile error.
14. In MSYS again, cd into the popt-1.7 directory
15. ./configure --prefix=/mingw && make && make install
16. Get boost 1.31.0 from, along with the zipped regex patch.
17. In MSYS, untar boost, then copy the .hpp files in the regex .zip to
18. Using your favourite text editor, edit
boost_1_31_0\boost\config\select_stdlib_config.hpp, and change line 36 from
#elif defined(__GLIBCPP__)
#elif defined(__GLIBCPP__) || defined(__GLIBCXX__)
...otherwise, Boost won't know what C++ library you're using and won't
pick up that MinGW doesn't have wide-character support.  (This is only
needed for newer MinGW with Boost 1.31.0 - if you're using an older MinGW, or if Monotone starts using Boost 1.32.0, this will solve itself).
19. Open a windows command window (cmd.exe), then:
20. set PATH=%PATH%;c:\mingw\bin (or wherever your mingw is)
21. cd c:\msys\1.0\home\<username>\boost_1_31_0\tools\build\jam_src
22. build.bat mingw
23. Back in MSYS:
24. cd ~/boost_1_31_0
25. tools/build/jam_src/bin.ntx86/bjam.exe -sTOOLS=mingw
'-sBUILD=release <threading>single <optimization>speed <runtime-link>static'
(Note the apostrophes here!  They're important!)
26. find . -name libboost*.lib -a -type f |awk -F / --
'{a=$NF;gsub("-mgw-s-1_31.lib",".a",a);system("cp " $0 " /mingw/lib/" a);}'
     (All on one line.  This copies the boost libraries, renaming them
      appropriately, to the MinGW lib dir)
26. cp -a boost /mingw/include
27. Get the monotone source (whether by extracting a tarball or fetching
from, or whatever), into ~/monotone
27a. If you got it by pulling from, 'autoreconf --install'.
This is liable to throw a couple of errors, but it works in the end.
23. ./configure
24. make
25. You're done.  To run the testsuite, carry on.
26. Get
27. cd ~
28. tar zxvf mm2.7.tar.gz
29. cd mm2.7/src/metamail
30. With your text editor, edit mmencode.c.  Replace every occurence of
#ifdef MSDOS
#if defined(MSDOS) || defined(WIN32)
(should be three occurences)
30. CC=gcc make -e mmencode
31. cp mmencode /mingw/bin/mimencode
32. cd back to your monotone directory
33. make check

The unit tests should pass, and all of the integration tests should
return the expected value.

Jon Bright
Silicon Circus Ltd.

Monotone-devel mailing list


reply via email to

[Prev in Thread] Current Thread [Next in Thread]