Project

General

Profile

Installing Wt on MinGW » History » Version 6

Wim Dumon, 07/12/2013 01:36 PM

1 1 Wim Dumon
h1. Installing Wt on MinGW
2
3
h2. MinGW requirements
4
5
This guide used the TDM-gcc (4.5.1-tdm-4).
6
The shell commands were executed in the 'MinGW Command Propmpt' of the TDM-gcc installation.
7
8
h2. Build Boost
9
10
First, bootstrap boost
11
<pre>
12
cd boost_1_43_0
13
bootstrap.bat
14
</pre>
15
16 4 Jay Health
17 2 Wim Dumon
Before building boost, consider to apply the two patches provided below. These are bugs that may be fixed in future versions of boost and cygwin, but compilation of Wt failed whith boost 1.44 and TDM-gcc 4.5.1-tdm-4.
18
19
Build the required libraries
20 1 Wim Dumon
<pre>
21 3 Wim Dumon
bjam --prefix=i:/mingw-libraries/boost link=static threading=multi --layout=versioned --toolset=gcc --with-date_time --with-filesystem --with-program_options --wit-random --with-regex --with-signals --with-system --with-thread install
22 1 Wim Dumon
</pre>
23
24 3 Wim Dumon
This only builds the required libraries. It will take a while before boost is installed. If the boost.random library does not exist for your boost version, then simply omit it from the bjam command line.
25 1 Wim Dumon
26
27
Note: If you get link errors with boost.thread, Tomasz Kalicki points out that you may want to fix the boost header files. This is not necessarily required for Wt versions newer than 3.1.5 as those will define BOOST_THREAD_USE_LIB when not linking to a dynamic boost (-DBOOST_DYNAMIC=OFF), but you may want to use it anyway if you use boost.thread in your own application.
28
<pre>
29
--- oldconfig.hpp       2010-07-09 20:13:09.000000000 +0200
30
+++ config.hpp  2010-09-16 11:11:48.000000000 +0200
31
@@ -37,7 +37,7 @@
32
 #elif defined(BOOST_THREAD_USE_LIB)   //Use lib
33
 #else //Use default
34
 #   if defined(BOOST_THREAD_PLATFORM_WIN32)
35
-#       if defined(BOOST_MSVC) || defined(BOOST_INTEL_WIN)
36
+#       if defined(BOOST_MSVC) || defined(BOOST_INTEL_WIN) || defined(__MINGW32__)
37
            //For compilers supporting auto-tss cleanup
38
            //with Boost.Threads lib, use Boost.Threads lib
39
 #           define BOOST_THREAD_USE_LIB
40
</pre>
41
See https://svn.boost.org/trac/boost/ticket/4614
42
43
<pre>
44
--- libs/thread/src/win32/tss_pe.cpp.orig       2010-09-16 15:46:01.375000000 +0200
45
+++ libs/thread/src/win32/tss_pe.cpp    2010-09-16 15:46:53.906250000 +0200
46
@@ -54,6 +54,7 @@
47
     PIMAGE_TLS_CALLBACK __crt_xl_end__ __attribute__ ((section(".CRT$XLZ"))) = 0;
48
 }
49
50
+#if 0
51
 extern "C" const IMAGE_TLS_DIRECTORY32 _tls_used __attribute__ ((section(".rdata$T"))) =
52
 {
53
         (DWORD) &__tls_start__,
54
@@ -63,6 +64,7 @@
55
         (DWORD) 0,
56
         (DWORD) 0
57
 };
58
+#endif
59
60
61
 #elif  defined(_MSC_VER) && !defined(UNDER_CE)
62
63
</pre>
64
65
See https://svn.boost.org/trac/boost/ticket/4258
66
67
h3. Build Wt
68
69
<pre>
70
cmake c:/cygwin/home/Wim/projects/wt-git/wt -DBOOST_DIR=i:/mingw-libraries/boost -DBOOST_COMPILER=mgw45 -DBOOST_VERSION=1_44 -G "MinGW Makefiles"
71
</pre>
72
73 2 Wim Dumon
Then build Wt and the examples
74 1 Wim Dumon
<pre>
75
mingw32-make
76
</pre>
77
78 5 Wim Dumon
The Isapi connector is not built under MinGW because the httpext.h file provided with MinGW misses several declarations. I suspect that with a complete httpext.h header, it is possible to build the isapi connector without problems.
79 6 Wim Dumon
80
When setting up your own makefiles for use with mingw, think about setting BOOST_THREAD_USE_LIB properly on your project.