BUILDING SCRIBUS ON MICROSOFT WINDOWS WITH MICROSOFT VISUAL STUDIO
==================================================================

This documentation is minimal and assume you have a decent knowledge of 
Microsoft Visual Studio. No help regarding use of Visual Studio and
related tools will be provided.

You will need:
- Microsoft Windows XP, Vista, 7 or a more recent version
- one of following Microsoft Visual Studio editions:
     - Microsoft Visual Studio 2008 (for 32bit build)
	 - Microsoft Visual Studio 2012 (for 32/64bit build)
	 - Microsoft Visual Studio 2013 (for 32/64bit build)
	 - Microsoft Visual Studio 2015 (for 32/64bit build)
- A Qt 4 release(version >= 4.6) built with corresponding Visual Studio version 
- Scribis Common libraries kit downloaded from http://sourceforge.net/projects/scribus/files/scribus-libs/
- Scribus 14x libraries kit downloaded from http://sourceforge.net/projects/scribus/files/scribus-libs/

It is possible to use Microsoft Visual Studio Express editions. However in the case of Microsoft
Visual Studio 2008 Express, SP1 is required in order to build the dependency archive.

GETTING DEPENDENCIES
====================

This is a quick and dirty set of notes that will be filled out once everything's
verified as correct and working. It assumes that you'll be building all your
dependencies at a single root, like C:\Developer. The root *MUST NOT* have spaces
in its path.


Building Qt:
------------

Download the latest Qt 4 release from http://download.qt.io/official_releases/qt/4.8/ and unpack it to C:\Developer.

Start a command line and import your Visual Studio environment:
- for building 32bit : \path\to\visual\studio\VC\vcvarsall.bat x86
- for building 64bit : \path\to\visual\studio\VC\vcvarsall.bat x86_amd64

Note: it is not possible to compile in 64bit mode prior to Visual Studio 2012 if using Visual Studio Express editions, 

Now cd to C:\Developer\qt-everywhere-whatever and run configure:
- Visuak Studio 2008 : configure -platform win32-msvc2008 -debug-and-release -no-qt3support -no-webkit -no-script -noscripttools 
- Visuak Studio 2012 : configure -platform win32-msvc2012 -debug-and-release -no-qt3support -no-webkit -no-script -noscripttools
- Visuak Studio 2013 : configure -platform win32-msvc2013 -debug-and-release -no-qt3support -no-webkit -no-script -noscripttools 
- Visuak Studio 2015 : configure -platform win32-msvc2015 -debug-and-release -no-qt3support -no-webkit -no-script -noscripttools 

After configure has finished running, run nmake.

You can remove the -no-webkit -no-script -noscripttools options if you desire to make a complete build of Qt. Be aware however that 
Qt build times will increase importantly without additional benefit for Scribus.

After Qt has finished building, you can type following command to get rid of temporary objects:
del *.obj *.ilk /s

Building 3rd party libraries:
-----------------------------

Archives with ready-to-build solutions for scribus dependencies have been made available on Sourceforge: 
http://sourceforge.net/projects/scribus/files/scribus-libs/
These archives can be used to compile all dependencies necessary for Scribus.

Two different archives are needed :
- scribus-commmon-libs-YYYYMMDD.7z : common libraries for 14x and trunk, no compilation is required here
- scribus-14x-libs-msvcXXXX-YYYYMMDD.7z : Scribus 14x specific libraries used for current Scribus 1.4.x releases

These archives are named using a scheme where:
- msvcXXXX represent the Visual Studio version needed to compile provided Visual Studio solution
- YYYYMMDD represents the date where the archive has been prepared/uploaded to Sourceforge.

For building 14x dependencies, archives are provided for following Microsoft Visual Studio versions:
	- Visual Studio 2008
	- Visual Studio 2012
	- Visual Studio 2013
	- Visual Studio 2015.
The Visual Studio 2008 archive allows to build libraries targeted at Windows 2000 SP4, Windows XP and more recent Windows systems.
The Visual Studio 2012, 2013, and 2015 archive allows to build libraries for 32bit and 64bit platforms which can be used on Windows Vista and up.
If you plan to use a more recent Visual Studio version, download the dependency archive for Visual Studio 2015.

Once you downloaded the two appropriate archives :
- decompress them in the *same* directory so as to get a layout similar to this one :
    - your_script_libs_directory
       |- scribus-1.4.x-libs-msvcXXXX
       |- scribus-common-libs
- open the visual studio solution (*.sln) located in the scribus-1.4.x-libs-* directory
- build debug and release configurations for all platforms (Win32 and/or x64) you plan to execute scribus on

BUILDING SCRIBUS
====================

After having installed all dependencies, depending on your Visual Studio version, update the dependency paths to match your system:
- msvc 2008 : open Scribus-build-props.vsprops files located in Scribus\win32\msvc2008 in a text editor 
- msvc 2012 : open Scribus-build-props.props files located in Scribus\win32\msvc2012 in a text editor
- msvc 2013 : open Scribus-build-props.props files located in Scribus\win32\msvc2013 in a text editor
- msvc 2015 : open Scribus-build-props.props files located in Scribus\win32\msvc2015 in a text editor.

Open the Visual Studio solution located in same directoy and start building.

After building completed, you will find executables in a Scribus-builds\scribus-$(configuration)-$(platform)-*\
directory, located in same directory as Scribus sources. Those executables will not function yet. Scribus resources and
dependencies must be copied to install directory first.

INSTALLING RESOURCES AND DEPENDENCIES
=====================================

To copy resources to build directory, create a batch script and copy/paste following lines :

set SCRIBUS_SRC_PATH=.\Scribus
set SCRIBUS_BUILD_ROOT=.\Scribus-builds
set SCRIBUS_INSTALL_PATH=.\Scribus-builds\scribus-debug-cairo-vc9

if not exist %SCRIBUS_INSTALL_PATH%\libs              mkdir %SCRIBUS_INSTALL_PATH%\libs
if not exist %SCRIBUS_INSTALL_PATH%\share             mkdir %SCRIBUS_INSTALL_PATH%\share
if not exist %SCRIBUS_INSTALL_PATH%\share\plugins     mkdir %SCRIBUS_INSTALL_PATH%\share\plugins

xcopy %SCRIBUS_SRC_PATH%\scribus\doc                  %SCRIBUS_INSTALL_PATH%\share\doc /s /y /i /D
 copy %SCRIBUS_SRC_PATH%\AUTHORS                      %SCRIBUS_INSTALL_PATH%\share\doc
 copy %SCRIBUS_SRC_PATH%\COPYING                      %SCRIBUS_INSTALL_PATH%\share\doc
 copy %SCRIBUS_SRC_PATH%\LINKS                        %SCRIBUS_INSTALL_PATH%\share\doc
 copy %SCRIBUS_SRC_PATH%\TRANSLATION                  %SCRIBUS_INSTALL_PATH%\share\doc
xcopy %SCRIBUS_SRC_PATH%\resources\dicts              %SCRIBUS_INSTALL_PATH%\share\dicts /s /y /i /D
xcopy %SCRIBUS_SRC_PATH%\resources\editorconfig       %SCRIBUS_INSTALL_PATH%\share\editorconfig /s /y /i /D
xcopy %SCRIBUS_SRC_PATH%\resources\icons              %SCRIBUS_INSTALL_PATH%\share\icons /s /y /i /D
xcopy %SCRIBUS_SRC_PATH%\resources\keysets            %SCRIBUS_INSTALL_PATH%\share\keysets /s /y /i /D
xcopy %SCRIBUS_SRC_PATH%\resources\loremipsum         %SCRIBUS_INSTALL_PATH%\share\loremipsum /s /y /i /D
xcopy %SCRIBUS_SRC_PATH%\resources\profiles           %SCRIBUS_INSTALL_PATH%\share\profiles /s /y /i /D
xcopy %SCRIBUS_SRC_PATH%\resources\swatches           %SCRIBUS_INSTALL_PATH%\share\swatches /s /y /i /D
xcopy %SCRIBUS_SRC_PATH%\resources\templates          %SCRIBUS_INSTALL_PATH%\share\templates /s /y /i /D
 copy %SCRIBUS_SRC_PATH%\scribus\plugins\tools\pathcut\*.png    %SCRIBUS_INSTALL_PATH%\share\icons\ /y
 copy %SCRIBUS_SRC_PATH%\scribus\plugins\tools\pathfinder\*.png %SCRIBUS_INSTALL_PATH%\share\icons\ /y
xcopy %SCRIBUS_SRC_PATH%\scribus\plugins\scriptplugin\scripts   %SCRIBUS_INSTALL_PATH%\share\scripts /s /y /i /D
xcopy %SCRIBUS_SRC_PATH%\scribus\plugins\scriptplugin\samples   %SCRIBUS_INSTALL_PATH%\share\samples /s /y /i /D
copy  %SCRIBUS_SRC_PATH%\scribus\plugins\import\ps\import.prolog     %SCRIBUS_INSTALL_PATH%\libs\import.prolog
copy  %SCRIBUS_SRC_PATH%\scribus\plugins\barcodegenerator\barcode.ps %SCRIBUS_INSTALL_PATH%\share\plugins\barcode.ps
copy  %SCRIBUS_SRC_PATH%\scribus\unicodemap\unicodenameslist.txt     %SCRIBUS_INSTALL_PATH%\share\unicodenameslist.txt

del   %SCRIBUS_BUILD_ROOT%\*CMake* /s
del   %SCRIBUS_BUILD_ROOT%\*MakeFile* /s

Adjust SCRIBUS_SRC_PATH, SCRIBUS_BUILD_ROOT and SCRIBUS_INSTALL_PATH as needed and run batch script.

To install common libs:
- open the scribus-common-libs directory where you uncompressed the common 14x/trunk libs
- open the copy-dlls-to-14x-build-dir.bat file from scribus-common-libs directory in a text editor
- modify the SCRIBUS_DEBUG_BUILD_*, SCRIBUS_RELEASE_BUILD_* and PYTHON_DIR_* variables appropriately
- execute batch file to copy appropriate files to build directory

To install version specific libs:
- open the scribus-14x-libs-msvc* directory where you uncompressed Scribus 14x libs
- open the copy-*-dlls-to-build-dir.bat file in a text editor
- modify the SCRIBUS_DEBUG_BUILD and SCRIBUS_RELEASE_BUILD variables appropriately (note: enclose path in double quotes if those contain spaces)
- execute batch file to copy appropriate dlls to build directory

Finally copy Qt DLLs to build directory and Qt plugins directory to "qtplugins" directory.
Scribus should now run.

Crash problems at runtime? Verify that Scribus and all its dependencies use the same runtime, and that all were built 
for debug or release configurations and not a mixture of the two. On Windows, it is strictly not recommended to mix 
debug and release binaries. Doing so is not supported and will usually trigger unpredictable issues.

You can use depends.exe to check that the runtimes match.
