Psi Windows build scripts

From PsiWiki

Jump to: navigation, search

Disclaimer: These instructions are unofficial and may or may not work for you.

This page contains scripts for building Psi on Windows platform.

Notes:

  • If You were looking for scripts for building Psi-Qt4 on Windows, please consult Psi-Qt4/Windows build scripts article.
  • These scripts may take the advantages of superior command-line cmd.exe found in Windows NT/2000/XP/Server 2003 and may not work properly on Windows 95/98/Me.

Contents

[edit] Main worker script

This script does the main job compiling Psi and is called from inside other scripts. Should not be called directly from the command-line. It must be placed in makewin_build.bat file in order for other scripts to work properly.

 @echo off
 
 if "%1" == "" goto NoArgs
 
 REM ----- Setup compilation and release process -----
 
 set name=Psi for Windows
 set project=psi.pro
 set outdir=psiwin
 set binary=Psi.exe
 
 set system=%windir%\system
 if "%OS%" == "Windows_NT" set system=%system%32
 
 REM ----- Compile and link Psi -----
 
 echo This will compile, link and release %name%.
 echo STEP 1: Create Makefile for QCA
 title Creating Makefile for QCA...
 cd ..\qca
 qmake qca.pro > ..\psi\makewin.log
 if errorlevel 1 goto NoQMake
 echo STEP 2: Compile QCA
 title Compiling QCA...
 %MAKETOOL% >> ..\psi\makewin.log
 copy qca.lib ..\psi\src\ > nul
 cd ..\psi
 echo STEP 3: Create Makefile for %name%
 title Creating Makefile for %name%...
 qmake %project% > makewin.log
 if errorlevel 1 goto NoQMake
 echo STEP 4: Copy header file from QCA to %name%
 title Copying header file from QCA to %name%...
 copy ..\qca\src\qca.h cutestuff\network\ > nul
 echo STEP 5: Compile %name%
 title Compiling %name%...
 %MAKETOOL% >> makewin.log
 if errorlevel 1 goto CompileFailed
 echo STEP 6: Compile all %name% translations
 title Compiling all %name% translations...
 cd src
 lrelease src.pro >> ..\makewin.log
 cd ..
 echo STEP 7: Create Makefile for SSL/TLS plugin for %name%
 title Creating Makefile for SSL/TLS plugin for %name%...
 cd ..\qca\plugins\qca-tls
 qmake qca-tls.pro >> ..\..\..\psi\makewin.log
 echo STEP 8: Compile SSL/TLS plugin for %name%
 title Compiling SSL/TLS plugin for %name%...
 %MAKETOOL% >> ..\..\..\psi\makewin.log
 if errorlevel 1 goto CompileFailed
 cd ..\..\..\psi
 
 REM ----- Copy output to single directory -----
 
 :Release
 echo STEP 9: Prepare for release of %name%
 title Preparing for release of %name%...
 if exist %outdir% rmdir /s /q %outdir%
 mkdir %outdir%
 copy src\%binary% %outdir% > nul
 copy %QTDIR%\bin\qt-mt*.dll %outdir% > nul
 copy src\tools\idle\win32\idleui.dll %outdir% > nul
 mkdir %outdir%\crypto
 copy ..\qca\plugins\qca-tls\qca-tls.dll %outdir%\crypto > nul
 copy ..\qca\qca.dll %outdir% > nul
 copy %system%\libeay32.dll %outdir% > nul
 copy %system%\ssleay32.dll %outdir% > nul
 ::if exist vslibs\*.* copy vslibs\*.* %outdir% > nul
 xcopy /d /e certs %outdir%\certs\ > nul
 xcopy /d /e iconsets %outdir%\iconsets\ > nul
 xcopy /d /e sound %outdir%\sound\ > nul
 copy COPYING %outdir% > nul
 win32\tod README %outdir%\Readme.txt
 win32\tod INSTALL %outdir%\Install.txt
 win32\tod KNOWN_BUGS.html %outdir%\KNOWN_BUGS.html
 copy lang\*.qm %outdir% > nul
 
 REM ----- Process succeeded -----
 
 :Finished
 echo Seems that %name% is ready for distibution.
 title Done.
 goto End
 
 REM ----- Error handling -----
 
 :NoArgs
 echo No arguments at command line.
 goto End
 
 :NoQMake
 echo Failed to run 'qmake'. Are you sure you have Qt set up?
 goto End
 
 :CopyFailed
 echo Copy failed, stopping.
 goto End
 
 :CompileFailed
 echo Compile failed, stopping. See 'makewin.log' file for details.
 goto End
 
 REM ----- Cleanup -----
 
 :End
 set name=
 set project=
 set outdir=
 set binary=
 set system=

[edit] Compiler specific scripts

This section provides compiler-specific scripts - each compiler is provided with two scripts - one setup and one driver.

[edit] Microsoft Visual C++ 6.0 scripts

[edit] Setup script

This script sets up the environment for Microsoft Visual C++ 6.0 compiler. It must be named setup_msvc6.bat.

 @echo off
 :: Set paths and variables for Microsoft Visual C++ 6.0
 call "C:\Program Files\Microsoft Visual Studio\VC98\Bin\vcvars32.bat"
 set INCLUDE=C:\Progra~1\Micros~4\include;%INCLUDE%
 :: Set paths for Qt 3.3.4 for VS6
 set QTDIR=C:\Qt\3.3.4
 set QMAKESPEC=win32-msvc
 set PATH=%QTDIR%\bin;%PATH%
 
 :: Set names for some tools
 set MAKE=nmake /nologo

Notes:

  • You might need to change the location of Your Qt3 installation (C:\Qt\3.3.4 here).
  • You might need to change the location of Your Microsoft Visual C++ 6.0 installation (C:\Program Files\Microsoft Visual Studio here).
  • You have to replace C:\Progra~1\Micros~4 with the short path to Microsoft Visual C++ installation directory. It can be obtained by running the following command:
 dir /x "%programfiles%\Microsoft Visual"

%programfiles% is usually C:\Progra~1.

[edit] Driver script

This script drives the whole build process for Microsoft Visual C++ 6.0 compiler. I prefer it to be named makewin_msvc6.bat, but any name is good.

 @echo off
 call makewin_build.bat setup_msvc6.bat %1

You run this script to build Psi/Windows using Microsoft Visual C++ 6.0.

[edit] Microsoft Visual C++ .NET scripts

[edit] Setup script

This script sets up the environment for Microsoft Visual C++ .NET compiler. It must be named setup_msvc.net.bat.

 @echo off
 :: Set paths and variables for Microsoft Visual C++ .NET 2003
 call "%VS71COMNTOOLS%vsvars32.bat"
 :: Append Microsoft Platform SDK (comment out if not installed)
 set INCLUDE=C:\Progra~1\Micros~2\include;%INCLUDE%
 set LIB=C:\Progra~1\Micros~2\lib;%LIB%
 :: Set paths for Qt 3.3.4 for VS.NET
 set QTDIR=C:\Qt\3.3.4
 set QMAKESPEC=win32-msvc.net
 set PATH=%QTDIR%\bin;%PATH%
 
 :: Set names for some tools
 set MAKE=nmake /nologo

Notes:

  • You might need to change the location of Your Qt3 installation (C:\Qt\3.3.4 here).
  • If You use Microsoft Visual C++ .NET (a.k.a. Microsoft Visual C++ .NET 2002) compiler, You need to replace %VS71COMNTOOLS% with %VSCOMNTOOLS% in order for the script to work correctly.
  • If You have no Microsoft Platform SDK installed, delete following lines from the above script:
 :: Append Microsoft Platform SDK (comment out if not installed)
 set INCLUDE=C:\Progra~1\Micros~2\include;%INCLUDE%
 set LIB=C:\Progra~1\Micros~2\lib;%LIB%

Otherwise, You have to replace C:\Progra~1\Micros~2 with the short path to Microsoft Platform SDK installation directory. It can be obtained by running the following command:

 dir /x "%programfiles%\*Platform*"

%programfiles% is usually C:\Progra~1.

[edit] Driver script

This script drives the whole build process for Microsoft Visual C++ .NET compiler. I prefer it to be named makewin_msvc.net.bat, but any name is good.

 @echo off
 call makewin_build.bat setup_msvc.net.bat

You run this script to build Psi/Windows using Microsoft Visual C++ .NET.

[edit] Microsoft Visual C++ .NET 2003 (x64) scripts

[edit] Setup script

This script sets up the environment for Microsoft Visual C++ .NET 2003 (x64) compiler. It must be named setup_msvc.net_x64.bat.

 @echo off
 :: Set paths and variables for Microsoft Visual C++ .NET 2003
 call "%VS71COMNTOOLS%vsvars32.bat"
 call "%MSSDK%\setenv.cmd" /XP64 /RETAIL
 set INCLUDE=G:\Progra~1\Micros~3.NET\VC7\include;%INCLUDE%
 :: Set paths for Qt 3.3.4 for VS.NET
 set QTDIR=C:\Qt\3.3.4
 set QMAKESPEC=win32-msvc.net
 set PATH=%QTDIR%\bin;%PATH%
 
 :: Set names for some tools
 set MAKE=nmake /nologo

Notes:

  • You might need to change the location of Your Qt3 installation (C:\Qt\3.3.4 here).
  • You need to have Microsoft Platform SDK installed to be able to compile code for x64 systems using Microsoft Visual .NET 2003 compiler.

[edit] Driver script

This script drives the whole build process for Microsoft Visual C++ .NET 2003 (x64) compiler. I prefer it to be named makewin_msvc.net_x64.bat, but any name is good.

 @echo off
 call makewin_build.bat setup_msvc.net_x64.bat

You run this script to build Psi/Windows using Microsoft Visual C++ .NET 2003 (x64).

[edit] Cleanup script

This script cleans up the source directories of Psi, QCA and QCA-TLS and prepares them for complete rebuild. I prefer it to be named makewin_clean.bat.

 @echo off
 
 if not exist lang goto psiwidgets
 cd lang
 if exist *.qm         del *.qm
 cd ..
 
 :psiwidgets
 if not exist libpsi\psiwidgets goto qca
 cd libpsi\psiwidgets
 if exist tmp          rmdir /s /q tmp
 if exist *.dll        del *.dll
 if exist *.exp        del *.exp
 if exist *.lib        del *.lib
 if exist moc_*.*      del moc_*.*
 if exist *.moc        del *.moc
 if exist *.o          del *.o
 if exist *.obj        del *.obj
 if exist *.so         del *.so
 if exist *.tds        del *.tds
 if exist Makefile     del Makefile
 cd ..\..
 
 :qca
 if not exist ..\qca goto tls
 cd ..\qca
 if exist .moc         rmdir /s /q .moc
 if exist .obj         rmdir /s /q .obj
 if exist .ui          rmdir /s /q .ui
 if exist moc          rmdir /s /q moc
 if exist obj          rmdir /s /q obj
 if exist ui           rmdir /s /q ui
 if exist *.dll        del *.dll
 if exist *.exp        del *.exp
 if exist *.lib        del *.lib
 if exist *.moc        del *.moc
 if exist *.o          del *.o
 if exist *.obj        del *.obj
 if exist *.so         del *.so
 if exist *.tds        del *.tds
 if exist Makefile     del Makefile
 cd ..\psi
 
 :tls
 if not exist ..\qca\plugins\qca-tls goto src
 cd ..\qca\plugins\qca-tls
 if exist *.dll        del *.dll
 if exist *.exp        del *.exp
 if exist *.lib        del *.lib
 if exist *.moc        del *.moc
 if exist *.o          del *.o
 if exist *.obj        del *.obj
 if exist *.so         del *.so
 if exist *.tds        del *.tds
 if exist Makefile     del Makefile
 cd ..\..\..\psi
 
 :src
 if not exist src goto win32
 cd src
 if exist .moc         rmdir /s /q .moc
 if exist .obj         rmdir /s /q .obj
 if exist .ui          rmdir /s /q .ui
 if exist moc          rmdir /s /q moc
 if exist obj          rmdir /s /q obj
 if exist ui           rmdir /s /q ui
 if exist *.dll        del *.dll
 if exist *.exe        del *.exe
 if exist *.exp        del *.exp
 if exist *.idb        del *.idb
 if exist *.lib        del *.lib
 if exist *.moc        del *.moc
 if exist *.o          del *.o
 if exist *.obj        del *.obj
 if exist *.pdb        del *.pdb
 if exist *.so         del *.so
 if exist *.tds        del *.tds
 if exist Makefile     del Makefile
 if exist config.h     del config.h
 cd ..
 
 :win32
 if not exist win32 goto root
 cd win32
 if exist *.res        del *.res
 cd ..
 
 :root
 if exist psiwin       rmdir /s /q psiwin
 if exist *.log        del *.log
 if exist Makefile     del Makefile

[edit] Links

Personal tools