From e6e87891a90c322a4f9d94799948f76add3634a1 Mon Sep 17 00:00:00 2001 From: Gavin Andresen Date: Fri, 18 Feb 2011 09:49:00 -0500 Subject: [PATCH] Windows mingw32 makefile and build notes (thanks m0mchil) --- build-msw.txt | 74 ++++++++++++++++++++++++++++++++------------------ makefile.mingw | 26 +++++++++--------- 2 files changed, 60 insertions(+), 40 deletions(-) diff --git a/build-msw.txt b/build-msw.txt index 38cc77a9..deba805d 100644 --- a/build-msw.txt +++ b/build-msw.txt @@ -11,11 +11,14 @@ WINDOWS BUILD NOTES Compilers Supported ------------------- -MinGW GCC -http://tdm-gcc.tdragon.net/ has an easy installer. Go back a few versions -for a little older gcc like gcc 4.4.?. +MinGW GCC http://tdm-gcc.tdragon.net/ + TDM-GCC with gcc 4.5.1 was used to build this release. +MSYS 1.0.11 was also used (sh needed to compile some dependencies) -MSVC 10.0 (2010) was used to build this release. + +Candidate releases were built with MSVC 10.0 (2010), but +compiling with Visual C++ caused rendering artifacts when +bitcoin was run. Dependencies @@ -23,10 +26,10 @@ Dependencies Libraries you need to download separately and build: default path download -wxWidgets \wxwidgets http://www.wxwidgets.org/downloads/ -OpenSSL \openssl http://www.openssl.org/source/ -Berkeley DB \db http://www.oracle.com/technology/software/products/berkeley-db/index.html -Boost \boost http://www.boost.org/users/download/ +wxWidgets \wxwidgets-2.9.1-mgw http://www.wxwidgets.org/downloads/ +OpenSSL \openssl-1.0.0c-mgw http://www.openssl.org/source/ +Berkeley DB \db-4.7.25.NC-mgw http://www.oracle.com/technology/software/products/berkeley-db/index.html +Boost \boost-1.43.0-mgw http://www.boost.org/users/download/ Their licenses: wxWidgets LGPL 2.1 with very liberal exceptions @@ -38,7 +41,7 @@ Versions used in this release: wxWidgets 2.9.1 OpenSSL 1.0.0c Berkeley DB 4.7.25.NC -Boost 1.45.0 +Boost 1.43.0 Notes @@ -47,33 +50,50 @@ The UI layout is edited with wxFormBuilder. The project file is uiproject.fbp. It generates uibase.cpp and uibase.h, which define base classes that do the rote work of constructing all the UI elements. -This release was built with a Visual C++ 10.0 toolchain (nmake); previous -releases were built using mingw. - wxWidgets --------- -cd \wxwidgets\build\msw -nmake -f makefile.vc SHARED=0 MONOLITHIC=1 BUILD=release UNICODE=1 CFB=Unicode - +DOS shell: +cd \wxWidgets-2.9.1-mgw\build\msw +mingw32-make -f makefile.gcc OpenSSL ------- -cd c:\openssl\src\openssl-1.0.0c -perl Configure VC-WIN32 --prefix=c:/openssl -ms\do_ms.bat -nmake -f ms\nt.mak -nmake -f ms\nt.mak install +MSYS shell: +un-tar sources with MSYS 'tar xfz' to avoid issue with symlinks (OpenSSL ticket 2377) +change 'MAKE' env. variable from 'C:\MinGW32\bin\mingw32-make.exe' to '/c/MinGW32/bin/mingw32-make.exe' + +cd /c/openssl-1.0.0c-mgw +./config +make + +perl util/mkdef.pl 32 libeay enable-static-engine > libeay32.def +dllwrap --dllname libeay32.dll --output-lib libeay32.a --def libeay32.def libcrypto.a -lws2_32 -lgdi32 + +after that openssl libeay is in main source dir (openssl-1.0.0c-mgw) Berkeley DB ----------- -Built in Visual C++ Express (project files had to be converted -using Visual C++ Pro and then copied to build environment) -Compiled Release db_static project in Visual Studio Express. +MSYS shell: +cd /c/db-4.7.25.NC-mgw/build_unix +sh ../dist/configure --enable-mingw --enable-cxx +make + Boost ----- -download bjam.exe from -http://sourceforge.net/project/showfiles.php?group_id=7586&package_id=72941 -cd \boost -bjam toolset=msvc --build-type=complete stage +DOS prompt: +downloaded boost jam 3.1.18 +cd \boost-1.43.0-mgw +bjam toolset=gcc --build-type=complete stage +Note: +building with boost 1.45.0 failed because of boost ticket 4614, 4258 +builds fine with boost 1.43.0 + +Bitcoin +------- +DOS prompt: +cd \bitcoin +mingw32-make bitcoin.exe bitcoind.exe -f makefile.mingw +strip bitcoin.exe +strip bitcoind.exe diff --git a/makefile.mingw b/makefile.mingw index 9140c23e..6b849f93 100644 --- a/makefile.mingw +++ b/makefile.mingw @@ -4,26 +4,26 @@ INCLUDEPATHS= \ - -I"/boost" \ - -I"/db/build_unix" \ - -I"/openssl/include" \ - -I"/wxwidgets/lib/gcc_lib/mswud" \ - -I"/wxwidgets/include" + -I"C:\boost-1.43.0-mgw" \ + -I"C:\db-4.7.25.NC-mgw\build_unix" \ + -I"C:\openssl-1.0.0c-mgw\include" \ + -I"C:\wxWidgets-2.9.1-mgw\lib\gcc_lib\mswud" \ + -I"C:\wxWidgets-2.9.1-mgw\include" LIBPATHS= \ - -L"/boost/stage/lib" \ - -L"/db/build_unix" \ - -L"/openssl/out" \ - -L"/wxwidgets/lib/gcc_lib" + -L"C:\boost-1.43.0-mgw\stage\lib" \ + -L"C:\db-4.7.25.NC-mgw\build_unix" \ + -L"C:\openssl-1.0.0c-mgw" \ + -L"C:\wxWidgets-2.9.1-mgw\lib\gcc_lib" WXLIBS= \ -l wxmsw29ud_html -l wxmsw29ud_core -l wxmsw29ud_adv -l wxbase29ud -l wxtiffd -l wxjpegd -l wxpngd -l wxzlibd LIBS= \ - -l libboost_system-mgw34-mt-d \ - -l libboost_filesystem-mgw34-mt-d \ - -l libboost_program_options-mgw34-mt-d \ - -l libboost_thread-mgw34-mt-d \ + -l boost_system-mgw45-mt-s-1_43 \ + -l boost_filesystem-mgw45-mt-s-1_43 \ + -l boost_program_options-mgw45-mt-s-1_43 \ + -l boost_thread-mgw45-mt-s-1_43 \ -l db_cxx \ -l eay32 \ -l kernel32 -l user32 -l gdi32 -l comdlg32 -l winspool -l winmm -l shell32 -l comctl32 -l ole32 -l oleaut32 -l uuid -l rpcrt4 -l advapi32 -l ws2_32 -l shlwapi