This is the Unix-style compilation using the Visual Studio Command Line Window and NMAKE. This is the preferred way currently.
For building Wolframe on Windows you need at least the following software:
Visual Studio C++ 2008 or newer (cl.exe
, rc.exe
, link.exe
and nmake.exe
)
Platform SDK 6.0a or newer
mc.exe
may be missing in your path (for instance in Visual Studio 2008
it was not bundled),
usually it is available as part of the Platform SDK,
copy it somewhere into the path
Boost 1.48.0 or newer from http://www.boost.org
Depending on the features you want to use you also may need the following software:
The OpenSSL library 0.9.7 or newer, for encryption and authentication, http://www.openssl.org
The PostgreSQL database client library, version 8.1 or newer, for storing user data and authentication data in a PostgreSQL database, http://postgresql.org
The Oracle OCI client library, version 11.2 or newer, for storing user data and authentication data in an Oracle database, http://www.oracle.com
The win-iconv library, version 0.0.3 or newer, needed by libxml2, http://code.google.com/p/win-iconv/
The libxml2 library, version 2.7.6 or newer, for filtering XML data, http://xmlsoft.org/
The libxslt library, version 1.1.26 or newer, for the transformation of XML data, http://xmlsoft.org/
Python 3, version 3.3.0 or newer, for writting applications in Python, https://www.python.org
The ICU library, version 3.5 or newer, for text normalization and conversion, http://site.icu-project.org
For testing the Wolframe software you need:
Expect 5.40 or newer, for running the Expect tests, http://expect.sourceforge.net/
Expect needs ActiveTcl 8.5 or newer, for running the Expect tests, http://www.activestate.com/activetcl
A working telnet
A PostgreSQL or Oracle database when you want to run the database tests
For building Windows packages you need:
The WIX Toolset, version 3.5 or newer, http://wixtoolset.org/
For building the documentation and manpages you need:
Doxygen for developer documentation, http://www.doxygen.org
Docbook 4.5 or newer and the XSL toolchain, http://www.docbook.org
xsltproc.exe
, from libxslt
http://xmlsoft.org/
The FOP PDF generator for documentation in PDF format, http://xmlgraphics.apache.org/fop/
hhc.exe
, help compiler from the 'HTML Help Workshop',
http://msdn.microsoft.com/en-us/library/windows/desktop/ms670169%28v=vs.85%29.aspx
For building the wolfclient you need:
Qt 4.6.x or later, or Qt 5, http://qt-project.org/
For secure communication between the wolfclient and the Wolframe server you need the OpenSSL library 0.9.7 or newer, http://www.openssl.org
Wolframe can be build in a Visual Studio command line (or better a Platform SDK command line) using the following command:
nmake /nologo /f Makefile.W32
You can check the compilation mode with:
setenv
The makefiles understand the standard GNU targets like 'clean', 'distclean', 'test', etc. The whole list of options can be seen with:
nmake /nologo /f Makefile.W32 help
Configuration is all done in a file called config.mk
.
Examples can be found in the makefiles/nmake
directory.
Optional features are enabled by using 'WITH_XXX' variables when calling nmake, e. g. to enable SSL support you call make like this:
nmake /nologo /f Makefile.W32 WITH_SSL=1
On Windows you would rather change the 'OPENSSL_DIR' variable in
the config.mk
, for instance:
OPENSSL_DIR = C:\OpenSSL\Win32
A complete build may look like this:
nmake /nologo /f Makefile.W32 WITH_SSL=1 WITH_EXPECT=1 WITH_LUA=1 ^ WITH_SQLITE3=1 WITH_PGSQL=1 WITH_ORACLE=1 ^ WITH_LIBXML2=1 WITH_LIBXSLT=1 ^ WITH_LIBHPDF=1 WITH_EXAMPLES=1 WITH_ICU=1 WITH_FREEIMAGE=1 ^ WITH_PYTHON=1 WITH_CJSON=1 WITH_TEXTWOLF=1 ^ clean all test
We currently have no dependency system for the NMAKE build system, so be careful when to use 'clean' to rebuild parts of the system.
This way of building the system is mainly useful for automatized systems and for packaging.
Ccache (http://ccache.samba.org/) can be used to cache the compilation of Wolframe also on Windows.
You need then ccache.exe
binary with MSVC support from
http://cgit.freedesktop.org/libreoffice/contrib/dev-tools/tree/ccache-msvc.
You also need the Cygwin runtime from
http://cygwin.org.
Install the ccache.exe
binary into
c:\cygwin\bin
.
Set the 'CC' and 'CXX' variables in
makefiles\nmake\config.mk
as follows:
CC=C:\cygwin\bin\ccache.exe cl CXX=C:\cygwin\bin\ccache.exe cl
Set the following variable in the shell you use to compile Wolframe:
Set CYGWIN=nodosfilewarning
Boost (http://www.boost.org) is the only library which is absolutely required in order to build Wolframe.
http://boost.teeks99.com provides
pre-compiled packages of Boost. You can install the library into for instance
C:\boost\boost_1_55_0
and set the 'BOOST_XXX' variables in
makefiles\nmake\config.mk
as follows:
BOOST_DIR = C:\Boost\boost_1_55 BOOST_INCLUDE_DIR = $(BOOST_DIR) BOOST_LDFLAGS = /LIBPATH:$(BOOST_DIR)\lib32-msvc-10.0 BOOST_VC_VER = vc100 BOOST_MT = -mt
Rename the directory C:\Boost\boost_1_55_0\libs
to
C:\Boost\boost_1_55_0\boost
.
Note: Those pre-built packages don't have support for the ICU backend in boost-locale. If you need ICU support and enable it with 'WITH_ICU=1' you will have to build your own version of Boost from the sources.
The following Boost libraries are required for building Wolframe:
bootstrap .\b2 --prefix=C:\boost\boost_1_55 ^ --with-thread --with-filesystem --with-system --with-program_options ^ --with-date_time ^ architecture=x86 address-model=64 toolset=msvc ^ install
Set 'architecture', 'address-mode' and 'toolset' fitting your platform.
If you want to build the ICU normalization module (WITH_ICU=1) you will have to build 'boost-locale' with ICU support and you have to enable the 'regex' and the 'locale' boost libraries too:
bootstrap .\b2 --prefix=C:\boost\boost_1_55 ^ --with-thread --with-filesystem --with-system --with-program_options ^ --with-date_time --with-locale --with-regex ^ -sICU_PATH="C:\icu4c-52_1-win32-debug" ^ architecture=x86 address-model=64 toolset=msvc ^ install
Set the "BOOST_XXX" variables in
makefiles\nmake\config.mk
as follows:
BOOST_DIR = C:\Boost\boost_1_55 BOOST_INCLUDE_DIR = $(BOOST_DIR) BOOST_LDFLAGS = /LIBPATH:$(BOOST_DIR)\lib32-msvc-10.0 BOOST_VC_VER = vc100 BOOST_MT = -mt
The Wolframe protocol can be secured with SSL. Currently only OpenSSL (http://www.openssl.org) is supported.
Note: No matter whether you use the precompiled version or if you build OpenSSL on your own use the 0.9.8, 1.0.0 or 1.0.1g versions, but not the version 1.0.1 through 1.0.1f (Heartbleed bug)!
You can get a prebuilt version of OpenSSL from http://www.slproweb.com/products/Win32OpenSSL.html. Despite the name you get also 64-bit versions there.
Install the developer version (for instance Win32OpenSSL-1_0_1g.exe
)
for instance to C:\OpenSSL-Win32
.
Do not copy the OpenSSL binaries to the Windows system directory, copy them to the Bin subdirectory of the OpenSSL installation directory!
Set the "BOOST_XXX" variables in
makefiles\nmake\config.mk
as follows:
OPENSSL_DIR = C:\OpenSSL-Win32
You need the community edition of ActivePerl from
http://www.activestate.com/activeperl/.
Install it for instance to C:\Perl
.
You will also need NASM to assemble certain
parts of OpenSSL. You can get a Windows NASM from
http://www.nasm.us/.
Install it for instance to C:\nasm
.
Make sure the Perl interpreter and the NASM assembler are part of the path in the shell you want to build OpenSSL:
Set PATH=%PATH%;C:\Perl\bin;C:\nasm
Get the source package openssl-1.0.1g.tar.gz
of OpenSSL from
http://www.openssl.org.
Configure the package with:
perl Configure debug-VC-WIN32 \ --prefix="C:\openssl-1.0.1g-win32-debug"
for a debug version, respectively with:
perl Configure VC-WIN32 \ --prefix="C:\openssl-1.0.1g-win32-release"
for a release version.
Note: Make sure there prefix you choose has no spaces in it!
Prepare OpenSSL for NASM support with:
ms\do_nasm.bat
Build and install OpenSSL now with:
nmake /f ms\ntdll.mak nmake /f ms\ntdll.mak install
More build information is available
in INSTALL.W32
and
INSTALL.W64
of the
OpenSSL package itself.
Wolframe can use an Sqlite3 database (http://sqlite.org) as backend for data storage and for authentication and autorization.
The Sqlite3 library is embedded in the subdirectory
3rdParty/sqlite3
.
You enable the building of a loadable Sqlite3 database module with:
nmake /nologo /f Makefile.W32 WITH_SQLITE3=1
Wolframe can use a PostgreSQL database (http://postgresql.org) as backend for data storage and for authentication and autorization.
Download the Windows installer from EnterpriseDB (you reach the download link via http://postgresql.org).
You will have to set some variables in
makefiles\nmake\config.mk
as follows:
PGSQL_DIR = C:\Program Files\PostgreSQL\9.3 PGDLL_WITH_I18N = 1
You enable the building of a loadable PostgreSQL database module with:
nmake /nologo /f Makefile.W32 WITH_PGSQL=1
You need the community edition of ActivePerl from
http://www.activestate.com/activeperl/.
Install it for instance to C:\Perl
.
Make sure the Perl interpreter is part of the path in the shell you want to build PostgreSQL:
Set PATH=%PATH%;C:\Perl\bin
Get the source package postgresql-9.3.4.tar.gz
of PostgreSQL from
http://www.opstgresql.org.
Configure the package in the config.pl
file which you create as follows:
cd src\tools\msvc copy config_default.pl config.pl
Adapt config.pl
to your needs. We actually don't
want to build the full server just the client PostgreSQL library, so
specifying the location of OpenSSL is enough:
openssl=>"C:\\openssl-1.0.1g-win32-debug"
Note: Those must be two backslashes!
If you built your own version of OpenSSL before you will be missing some linking libraries in the right places. So copy them with:
mkdir C:\openssl-1.0.1g-win32-debug\lib\VC copy C:\openssl-1.0.1g-win32-debug\lib\libeay32.lib ^ C:\openssl-1.0.1g-win32-debug\lib\VC\libeay32MDd.lib copy C:\openssl-1.0.1g-win32-debug\lib\ssleay32.lib ^ C:\openssl-1.0.1g-win32-debug\lib\VC\ssleay32MDd.lib
respectively if you built the release version:
mkdir C:\openssl-1.0.1g-win32-release\lib\VC copy C:\openssl-1.0.1g-win32-release\lib\libeay32.lib ^ C:\openssl-1.0.1g-win32-release\lib\VC\libeay32MD.lib copy C:\openssl-1.0.1g-win32-release\lib\ssleay32.lib ^ C:\openssl-1.0.1g-win32-release\lib\VC\ssleay32MD.lib
Build the libpq
library now with:
build DEBUG libpq
respectively if you prefer a release version:
build RELEASE libpq
Note:
You may have to touch preproc.c
and
preproc.h
if 'build' wants
to start 'bison' and you don't have 'bison' installed.
Install the PostgreSQL client library for instance
to C:\PostgreSQL-9.3.4-win32-debug
with:
install C:\PostgreSQL-9.3.4-win32-debug
Note: Unless you
were able to build the whole PostgreSQL the 'install'
script will fail. In this case copy the essential files
to for instance C:\PostgreSQL-9.3.4-win32-debug
with:
mkdir C:\PostgreSQL-9.3.4\include mkdir C:\PostgreSQL-9.3.4\lib copy Debug\libpq\libpq.dll C:\PostgreSQL-9.3.4\lib copy Debug\libpq\libpq.lib C:\PostgreSQL-9.3.4\lib copy src\interfaces\libpq\libpq-fe.h C:\PostgreSQL-9.3.4\include copy src\include\postgres_ext.h C:\PostgreSQL-9.3.4\include copy src\include\pg_config_ext.h C:\PostgreSQL-9.3.4\include
Note:
If you disable OpenSSL (for instance for debugging), you have
to touch sslinfo.sql
in contrib/sslinfo
.
The same applies for
uuid-ossp.sql
and pgxml.sql.in
.
Note: If you want to build PostgrSQL with gettext/libint or zlib support you have to build those libraries first, or get them from http://gnuwin32.sourceforge.net/packages.html.
Wolframe can use a Oracle database (http://www.oracle.com) as backend for data storage and for authentication and autorization.
Import note: Make sure you have all the licenses to develop with Oracle and to install an Oracle database! The Wolframe team doesn't take any responsability if licenses are violated!
You have to download the two packages
instantclient-basic-nt-12.1.0.1.0.zip
and
instantclient-sdk-nt-12.1.0.1.0.zip
and
install them to for instance
C:\Oracle\instantclient_12_1
.
You will have to set the 'ORACLE_DIR' variable in
makefiles\nmake\config.mk
as follows:
ORACLE_DIR = C:\Oracle\instantclient_12_1
You enable the building of a loadable Oracle database module with:
nmake /nologo /f Makefile.W32 WITH_ORACLE=1
Wolframe can use libxml2 and libxslt (http://xmlsoft.org/) for filtering and the conversion of XML data.
You can build only filtering with libxml2. But if you enable libxslt filtering you also have to enable libxml2 filtering.
Download the Windows ZIP files libxml2-2.7.8.win32.zip
,
iconv-1.9.2.win32.zip
and
libxslt-1.1.26.win32.zip
from
http://ftp.zlatkovic.com/libxml/).
Unpack them for instance to:
C:\libxml2-2.7.8.win32
,
C:\iconv-1.9.2.win32
and
C:\libxslt-1.1.26.win32
.
You will have to set the following variables in
makefiles\nmake\config.mk
:
ZLIB_DIR = C:\zlib-1.2.5.win32 ICONV_DIR = C:\iconv-1.9.2.win32 LIBXML2_DIR = C:\libxml2-2.7.8.win32 LIBXSLT_DIR = C:\libxslt-1.1.26.win32
You enable the building of a loadable libxml2/libxslt filtering module with:
nmake /nologo /f Makefile.W32 WITH_LIBXML2=1 WITH_LIBXSLT=1
For libxml2 to support character sets you need a working
iconv library. We currently use
win-iconv-0.0.6.zip
from
http://code.google.com/p/win-iconv/.
Build iconv.dll
with
the supplied makefile from
packaging\patches\Windows\win-iconv\Makefile.msvc
and install the results to for instance
C:\win-iconv-0.0.6-win32-debug
with:
nmake /nologo /f Makefile.msvc DEBUG=1 mkdir C:\win-iconv-0.0.6-win32-debug mkdir C:\win-iconv-0.0.6-win32-debug\include mkdir C:\win-iconv-0.0.6-win32-debug\lib mkdir C:\win-iconv-0.0.6-win32-debug\bin copy iconv.h C:\win-iconv-0.0.6-win32-release\include copy iconv.lib C:\win-iconv-0.0.6-win32-debug\lib copy iconv.dll C:\win-iconv-0.0.6-win32-debug\bin
respectively if you want to build a release version:
nmake /nologo /f Makefile.msvc mkdir C:\win-iconv-0.0.6-win32-release mkdir C:\win-iconv-0.0.6-win32-release\include mkdir C:\win-iconv-0.0.6-win32-release\lib mkdir C:\win-iconv-0.0.6-win32-release\bin copy iconv.h C:\win-iconv-0.0.6-win32-release\include copy iconv.lib C:\win-iconv-0.0.6-win32-release\lib copy iconv.dll C:\win-iconv-0.0.6-win32-release\bin
Adapt the 'ICONV_DIR' variable in
makefiles\nmake\config.mk
as follows:
ICONV_DIR = C:\win-iconv-0.0.6-win32-debug
Get the source package libxml2-2.9.1.tar.gz
from
ftp://xmlsoft.org/libxml2/.
Configure libxml2, make it use the 'win-iconv' library:
cd win32 cscript configure.js compiler=msvc prefix="C:\libxml2-2.9.1-win32-release" lib="C:\win-iconv-0.0.6-win32-release\lib" include="C:\win-iconv-0.0.6-win32-release\include" zlib=no iconv=yes vcmanifest=yes
For a debug version you have to change 'debug' to 'release' in the paths and to add 'debug=yes' and 'cruntime=/MDd':
cd win32 cscript configure.js compiler=msvc prefix="C:\libxml2-2.9.1-win32-debug" lib="C:\win-iconv-0.0.6-win32-debug\lib" include="C:\win-iconv-0.0.6-win32-debug\include" zlib=no iconv=yes vcmanifest=yes debug=yes cruntime=/MDd
Note: Try to avoid spaces
in the installation prefix, if you really need some spaces then you will
have to fix them after running the configure.js
script by hand in the config.msvc
file:
PREFIX="C:\libxml2-2.9.1 win32 debug"
Finally build and install libxml2 with:
nmake /nologo /f Makefile.msvc all nmake /nologo /f Makefile.msvc install
Adapt the 'LIBXML2_DIR' variable in
makefiles\nmake\config.mk
as follows:
LIBXML2_DIR = C:\libxml2-2.9.1-win32-debug
Get the source package libxslt-1.1.28.tar.gz
from
ftp://xmlsoft.org/libxslt/.
Configure libxslt, make it use the 'win-iconv' and the 'libxml2' library compiled above:
cd win32 cscript configure.js compiler=msvc prefix="C:\libxslt-1.1.28-win32-release" lib="C:\libxml2-2.9.1-win32-release\lib;C:\win-iconv-0.0.6-win32-release\lib" include="C:\libxml2-2.9.1-win32-release\include\libxml2;C:\win-iconv-0.0.6-win32-release\include" zlib=no iconv=yes vcmanifest=yes
For a debug version you have to change 'debug' to 'release' in the paths and to add 'debug=yes' and 'cruntime=/MDd':
cd win32 cscript configure.js compiler=msvc prefix="C:\libxslt-1.1.28-win32-debug" lib="C:\libxml2-2.9.1-win32-debug\lib;C:\win-iconv-0.0.6-win32-debug\lib" include="C:\libxml2-2.9.1-win32-debug\include;C:\win-iconv-0.0.6-win32-debug\include" zlib=no iconv=yes vcmanifest=yes debug=yes cruntime=/MDd
Note: Try to avoid spaces
in the installation prefix, if you really need some spaces then you will
have to fix them after running the configure.js
script by hand in the config.msvc
file:
PREFIX="C:\libxslt-1.1.28 win32 debug"
Finally build and install libxslt with:
nmake /nologo /f Makefile.msvc all nmake /nologo /f Makefile.msvc install
Adapt the 'LIBXSLT_DIR' variable in
makefiles\nmake\config.mk
as follows:
LIBXSLT_DIR = C:\libxslt-1.1.28-win32-debug
The DLLs end up in the wrong directory, move them from 'lib' to 'bin':
cd C:\libxslt-1.1.28-win32-debug move lib\*.dll bin\.
Wolframe can use Textwolf (http://textwolf.net) for filtering and the conversion of XML data.
The textwolf library is embedded in the subdirectory
3rdParty/textwolf
.
You enable the building of a loadable Textwolf filtering module with:
nmake /nologo /f Makefile.W32 WITH_TEXTWOLF=1
Note: If you plan to run tests when building the Wolframe you should enable Textwolf as many tests rely on it's presence.
Wolframe can use cJSON (http://sourceforge.net/projects/cjson/) for filtering and the conversion of JSON data.
The cjson library is embedded in the subdirectory
3rdParty/libcjson
.
You enable the building of a loadable cJSON filtering module with:
nmake /nologo /f Makefile.W32 WITH_CJSON=1
Wolframe can be scripted with Lua (http://www.lua.org).
The Lua interpreter is embedded in the subdirectory
3rdParty/lua
.
You enable the building of a loadable Lua scripting module with:
nmake /nologo /f Makefile.W32 WITH_LUA=1
Wolframe can be scripted with Python (https://www.python.org).
The module supports only version 3 of the Python interpreter, version 2 is not supported.
Download the official Python 3 Installer for Windows from http://python.org).
You will have to set the 'PYTHON_XXX' variables in
makefiles\nmake\config.mk
as follows:
PYTHON_DIR = C:\Python34 PYTHON_VERSION = 34 PYTHON_MAJOR_VERSION = 3 PYTHON_LIB_DIR = $(PYTHON_DIR)\libs PYTHON_DLL_DIR = $(PYTHON_DIR)\DLLs
You enable the building of a loadable Python scripting module with:
nmake /nologo /f Makefile.W32 WITH_PYTHON=1
Note: The binary installation packages from http://python.org) do not contain debug versions of the library. If you want to build a debugging version of Wolframe you have to build your own version of Python.
You have to get the sources of Python3 called
Python-3.4.0.tar
from
http://python.org.
Unpack it for instance to C:\Python-3.4.0
.
Open the solution file PCBuild\pcbuild.sln
.
Build the desired version. Read also PCBuild\readme.txt
.
Copy the resulting python34_d.lib
on top of the downloaded
binary vesion in for instance C:\Python34\libs
and
python34_d.dll
to C:\Python34\DLLs
.
You will have to set the 'PYTHON_XXX' variables in
makefiles\nmake\config.mk
as follows:
PYTHON_DIR = C:\Python34 PYTHON_VERSION = 34 PYTHON_MAJOR_VERSION = 3 PYTHON_LIB_DIR = $(PYTHON_DIR)\libs PYTHON_DLL_DIR = $(PYTHON_DIR)\DLLs
Wolframe can print with libhpdf (http://libharu.org/, also called libharu).
The libhpdf library is embedded in the subdirectory
3rdParty/libhpdf
.
You enable the building of a loadable libhpdf printing module with:
nmake /nologo /f Makefile.W32 WITH_LIBHPDF=1
Wolframe can manipulate various image formats with the help of the FreeImage project (http://freeimage.sourceforge.net).
The FreeImage package is embedded in the subdirectory
3rdParty/freeimage
.
You enable the building of a loadable FreeImage processing module with:
nmake /nologo /f Makefile.W32 WITH_SYSTEM_FREEIMAGE=1
Libhpdf needs the zlib and libpng libraries.
The libpng and zlib libraries are embedded in the subdirectory
3rdParty/zlib
and 3rdParty/libpng
.
Wolframe can use the International Components for Unicode (ICU, http://site.icu-project.org) library for text normalization and conversion.
You can take the pre-build ZIP-files from
http://site.icu-project.org,
called somthing like icu4c-52_1-Win32-msvc10.zip
and
unpack them in for instance C:\icu4c-52_1_1-Win32-msvc10
.
You will have to set the 'ICU_XXX' variables in
makefiles\nmake\config.mk
as follows:
ICU_LIB_VERSION = 52 ICU_DIR = C:\icu4c-52_1-Win32-msvc10\icu
You also have to build your own version of Boost, meaning the 'boost-locale' library has to be built with ICU support enabled and you have to enable the 'regex' and the 'locale' boost libraries too:
bootstrap .\b2 --prefix=C:\boost\boost_1_55 ^ --with-thread --with-filesystem --with-system --with-program_options ^ --with-date_time --with-locale --with-regex ^ -sICU_PATH="C:\icu4c-52_1-win32-debug" ^ architecture=x86 address-model=64 toolset=msvc ^ install
Note: The binary installation packages from http://site.icu-project.org) do not contain debug versions of the library. If you want to build a debugging version of Wolframe you have to build your own version of ICU.
You have to get the ZIP file with the Windows sources called
icu4c-51_1-src.zip
from
http://site.icu-project.org.
Unpack it for instance to C:\icu4c-52_1-src
.
Open the solution file icu\source\allinone\allinone.sln
.
Build the desired version (Release or Debug, 32-bit or 64-bit).
Best is to copy the resulting artifacts into a directory
like C:\icu4c-52_1-win32-debug
. Copy in
there the include
, bin
and lib
directories.
Adapt the 'ICU_XXX' variables in
makefiles\nmake\config.mk
as follows:
ICU_LIB_VERSION = 52 ICU_DIR = C:\icu4c-52_1-win32-debug
You build boost with boost-locale and ICU backend exactly the same way as with the pre-compiled version of ICU:
bootstrap .\b2 --prefix=C:\boost\boost_1_55 ^ --with-thread --with-filesystem --with-system --with-program_options ^ --with-date_time --with-locale --with-regex ^ -sICU_PATH="C:\icu4c-52_1-win32-debug" ^ architecture=x86 address-model=64 toolset=msvc ^ install
Wolframe has tests written in Google gtest (https://code.google.com/p/googletest/).
Tests are run with:
nmake /nologo /f Makefile.W32 test
Some tests run for a long time (regression and stress tests). They are not run per default when calling 'make test', but you have to call:
nmake /nologo /f Makefile.W32 longtest
Some more complex tests are written with Expect (http://expect.sourceforge.net/).
You enable testing with Expect with:
nmake /nologo /f Makefile.W32 WITH_EXPECT=1
You can get a Windows version of TCL from http://www.activestate.com/activetcl/. Take the 32-bit community version, the the 64-bit version had no Expect available (at least at the time of writting).
Install ActiveTcl 8.6.1 to for instance
C:\Tcl86
.
Install Expect with:
cd C:\Tcl86 teacup install Expect
Adapt the following variable in
makefiles\nmake\config.mk
:
TCL_DIR = C:\Tcl86
Some tests also need 'telnet'. If telnet is not enabled as Windows feature, enable it in "Control Panel", "Windows Features" under "Telnet Client".
The documentation including the man pages is written using DocBook (http://www.docbook.org).
You need the Docbook XSLT files from
http://sourceforge.net/projects/docbook/files/docbook-xsl-ns/.
Install them and set the 'XSLT_HTMLHELP_STYLESHEET' variable
in makefiles\nmake\config.mk
:
XSLT_HTMLHELP_STYLESHEET = C:\docbook-xsl-1.76.1\htmlhelp\htmlhelp.xsl
You will also need a working xsltproc.exe
.
For generating CHM help files you have to install
the "HTML Help Workshop and Documentation" from Microsoft.
Install it and set the 'HHC_LOCATION' variable
in makefiles\nmake\config.mk
:
HHC_LOCATION = C:\Program Files\HTML Help Workshop\hhc.exe
Developer documentation is generated with Doxygen (http://www.doxygen.org).
Get Doxygen from http://www.stack.nl/~dimitri/doxygen/,
install it to for instance C:\Doxygen
and
set the 'DOXYGEN' variable in
makefiles\nmake\config.mk
:
DOXYGEN = C:\Doxygen\bin\doxygen.exe
The wolfclient is a Qt-based client for the Wolframe server.
You build it for Qt 4 with:
C:\Qt\4.8.1\bin\qmake.exe -config debug -recursive nmake
respectively for a release version:
C:\Qt\4.8.1\bin\qmake.exe -config release -recursive nmake
You build it for Qt 5 with:
C:\Qt\Qt5.2.1\5.2.1\msvc2010\bin\qmake.exe -config debug -recursive nmake
respectively for a release version:
C:\Qt\Qt5.2.1\5.2.1\msvc2010\bin\qmake.exe -config release -recursive nmake
If you want SSL support you have to download or build OpenSSL and rebuild Qt 4 or Qt 5 with SSL support:
The Wolframe protocol can be secured with SSL. Currently only OpenSSL (http://www.openssl.org) is supported.
Note: No matter whether you use the precompiled version or if you build OpenSSL on your own use the 0.9.8, 1.0.0 or 1.0.1g versions, but not the version 1.0.1 through 1.0.1f (Heartbleed bug)!
You can get a prebuilt version of OpenSSL from http://www.slproweb.com/products/Win32OpenSSL.html. Despite the name you get also 64-bit versions there.
Install the developer version (for instance Win32OpenSSL-1_0_1g.exe
)
for instance to C:\OpenSSL-Win32
.
Do not copy the OpenSSL binaries to the Windows system directory, copy them to the Bin subdirectory of the OpenSSL installation directory!
Set the "BOOST_XXX" variables in
makefiles\nmake\config.mk
as follows:
OPENSSL_DIR = C:\OpenSSL-Win32
You need the community edition of ActivePerl from
http://www.activestate.com/activeperl/.
Install it for instance to C:\Perl
.
You will also need NASM to assemble certain
parts of OpenSSL. You can get a Windows NASM from
http://www.nasm.us/.
Install it for instance to C:\nasm
.
Make sure the Perl interpreter and the NASM assembler are part of the path in the shell you want to build OpenSSL:
Set PATH=%PATH%;C:\Perl\bin;C:\nasm
Get the source package openssl-1.0.1g.tar.gz
of OpenSSL from
http://www.openssl.org.
Configure the package with:
perl Configure debug-VC-WIN32 \ --prefix="C:\openssl-1.0.1g-win32-debug"
for a debug version, respectively with:
perl Configure VC-WIN32 \ --prefix="C:\openssl-1.0.1g-win32-release"
for a release version.
Note: Make sure there prefix you choose has no spaces in it!
Prepare OpenSSL for NASM support with:
ms\do_nasm.bat
Build and install OpenSSL now with:
nmake /f ms\ntdll.mak nmake /f ms\ntdll.mak install
More build information is available
in INSTALL.W32
and
INSTALL.W64
of the
OpenSSL package itself.
Make sure you download the correct Qt package fitting your architecture and Microsoft Visual Studio version.
If you take the prebuild Qt libraries you have to disable the
building of SSL-enabled code by removing the
'WITH_SSL=1' definition in the 'DEFINES' directive in
libqtwolfclient/libqtwolfclient.pro
.
Set the following environment variables in order for Qt to find the OpenSSL header files and libraries:\
set OPENSSL_DIR=C:\openssl-1.0.1g-win32-debug set INCLUDE=%INCLUDE%;%OPENSSL_DIR%\include set LIB=%LIB%;%OPENSSL_DIR%\lib
or for the release version:
set OPENSSL_DIR=C:\openssl-1.0.1g-win32-release set INCLUDE=%INCLUDE%;%OPENSSL_DIR%\include set LIB=%LIB%;%OPENSSL_DIR%\lib
Compile Qt with OpenSSL enabled:
configure -platform win32-msvc2010 -debug -openssl nmake
For a release version use:
configure -platform win32-msvc2010 -release -openssl nmake
Copyright © 2014 - Project Wolframe - All Rights Reserved