From 0c8eb88c15fbfdf60bd4d651c15f0cbf5abc02ce Mon Sep 17 00:00:00 2001 From: Vitaliy Slobodin Date: Mon, 18 Aug 2014 23:33:15 +0400 Subject: [PATCH] Add build script for Windows --- build.cmd | 128 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 128 insertions(+) create mode 100644 build.cmd diff --git a/build.cmd b/build.cmd new file mode 100644 index 00000000..c28d0bd9 --- /dev/null +++ b/build.cmd @@ -0,0 +1,128 @@ +@echo off +SETLOCAL EnableExtensions EnableDelayedExpansion + +set BUILD_TYPE=release +if /i "%1" == "debug" ( + SET BUILD_TYPE=debug +) +set ROOT_DIR=%CD% +set 3RD_PARTY_LIBRARIES_REPO_URL=https://github.com/Vitallium/phantomjs-3rdparty-win +set 3RD_PARTY_LIBRARIES_REPO_BRANCH=msvc2013 + +if /i BUILD_TYPE == "debug" ( + set 3RD_PARTY_LIBRARIES_REPO_BRANCH=msvc2013_debug +) + +set BUILD_DATESTAMP=%date:~-4,4%%date:~-7,2%%date:~-10,2% +set BUILD_TIMESTAMP=%time:~-11,2%%time:~-8,2% + +:: replace leading space with 0 +set BUILD_TIMESTAMP=%BUILD_TIMESTAMP: =0% +set QT_LOG_FILE=!ROOT_DIR!\build_qt_!BUILD_DATESTAMP!-!BUILD_TIMESTAMP!.log +set WEBKIT_LOG_FILE=!ROOT_DIR!\build_webkit_!BUILD_DATESTAMP!_!BUILD_TIMESTAMP!.log +set PHANTOMJS_LOG_FILE=!ROOT_DIR!\build_phantomjs_!BUILD_DATESTAMP!_!BUILD_TIMESTAMP!.log +set MAKE_TOOL=nmake + +echo: +echo Build type: !BUILD_TYPE! +call :build +ENDLOCAL + +@exit /B 0 + +rem ======================================================================================================== +:build +SETLOCAL EnableExtensions EnableDelayedExpansion +set _3RDPARTY=!ROOT_DIR!\src\qt\3rdparty + +for %%X in (git.exe) do (set GIT_FOUND=%%~$PATH:X) +if defined GIT_FOUND ( + echo. + echo GIT found. Getting 3rd party libraries. + if not exist !_3RDPARTY! call git clone -b !3RD_PARTY_LIBRARIES_REPO_BRANCH! !3RD_PARTY_LIBRARIES_REPO_URL! !_3RDPARTY! +) else ( + ECHO. + CALL :exitB "Git is missing! Can't proceed. Please install Git." + GOTO :eof +) + +:: prepare 3rdparty libraries +:: setup INCLUDE and LIB environment variables +:: OpenSSL +set OPENSSL_DIR=!_3RDPARTY!\openssl +set OPENSSL_LIB=!OPENSSL_DIR!\lib +set OPENSSL_INCLUDE=!OPENSSL_DIR!\include + +:: ICU +set ICU_DIR=!_3RDPARTY!\libicu +set ICU_LIB=!ICU_DIR!\lib +set ICU_INCLUDE=!ICU_DIR!\include + +:: libxml +set LIBXML_DIR=!_3RDPARTY!\libxml +set LIBXML_LIB=!LIBXML_DIR!\lib +set LIBXML_INCLUDE=!LIBXML_DIR!\include\libxml2 + +:: sqlite +set SQLITE3SRCDIR=!ROOT_DIR!\src\qt\qtbase\src\3rdparty\sqlite + +set LIB=!OPENSSL_LIB!;!ICU_LIB!;!LIBXML_LIB!;%LIB% +set INCLUDE=!OPENSSL_INCLUDE!;!ICU_INCLUDE!;!LIBXML_INCLUDE!;%INCLUDE% +set PATH=!_3RDPARTY!\gnuwin32\bin;%PATH% + +echo LIB: %LIB% +echo INCLUDE: %INCLUDE% + +for %%X in (jom.exe) do (set JOMFOUND=%%~$PATH:X) +if defined JOMFOUND ( + set MAKE_TOOL=jom +) else ( + set MAKE_TOOL=nmake +) + +pushd !ROOT_DIR!\src\qt +call preconfig.cmd !BUILD_TYPE! 2>&1 >> !QT_LOG_FILE! +popd + +set PATH=!ROOT_DIR!\src\qt\qtbase\bin;%PATH% +for %%X in (qmake.exe) do (set QMAKE_FOUND=%%~$PATH:X) +if defined QMAKE_FOUND ( + echo. + echo qmake found. Building QtWebkit +) else ( + ECHO. + CALL :exitB "qmake.exe is missing! Can't proceed." + GOTO :eof +) + +pushd !ROOT_DIR!\src\qt\qtwebkit +call qmake.exe +%MAKE_TOOL% %BUILD_TYPE% 2>&1 >> !WEBKIT_LOG_FILE! +popd + +pushd !ROOT_DIR!\src +call qmake.exe +%MAKE_TOOL% %BUILD_TYPE% 2>&1 >> !PHANTOMJS_LOG_FILE! +popd +if EXIST !ROOT_DIR!\bin\phantomjs.exe ( + echo. + echo Build has finished + echo. +) else ( + echo: + echo Unable to find phantomjs.exe. Please, check log files: + echo Qt: !QT_LOG_FILE! + echo Webkit: !WEBKIT_LOG_FILE! + echo PhantomJS: !PHANTOMJS_LOG_FILE! + echo: +) +EXIT /b + +rem ======================================================================================================== +:: %1 an error message +:exitB +echo: +echo Error: %1 +echo: +echo Contact vitaliy.slobodin@gmail.com +@exit /B 0