Psi Windows build scripts
From PsiWiki
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