2020-12-08 11:04:40 +01:00
|
|
|
$os = $args[0]
|
2022-09-16 06:29:48 +02:00
|
|
|
$use_webengine = $args[1]
|
2022-09-16 06:57:45 +02:00
|
|
|
$use_qt5 = $args[2]
|
2020-12-08 11:02:20 +01:00
|
|
|
|
2020-12-08 11:24:26 +01:00
|
|
|
echo "We are building for MS Windows."
|
2022-09-16 06:30:20 +02:00
|
|
|
echo "OS: $os; WebEngine: $use_webengine; Qt5: $use_qt5"
|
2020-12-08 12:44:28 +01:00
|
|
|
|
2021-01-06 08:15:12 +01:00
|
|
|
$git_revlist = git rev-list --tags --max-count=1
|
|
|
|
$git_tag = git describe --tags $git_revlist
|
|
|
|
$git_revision = git rev-parse --short HEAD
|
2020-12-08 12:44:28 +01:00
|
|
|
$old_pwd = $pwd.Path
|
|
|
|
|
2020-12-08 13:14:12 +01:00
|
|
|
# Prepare environment.
|
2020-12-08 13:30:49 +01:00
|
|
|
Install-Module Pscx -Scope CurrentUser -AllowClobber -Force
|
|
|
|
Install-Module VSSetup -Scope CurrentUser -AllowClobber -Force
|
2020-12-08 13:46:16 +01:00
|
|
|
Import-VisualStudioVars -Architecture x64
|
2020-12-08 13:14:12 +01:00
|
|
|
|
2021-01-19 19:29:20 +01:00
|
|
|
$AllProtocols = [System.Net.SecurityProtocolType]'Tls11,Tls12'
|
2021-01-19 19:27:24 +01:00
|
|
|
[System.Net.ServicePointManager]::SecurityProtocol = $AllProtocols
|
2021-01-19 20:03:53 +01:00
|
|
|
$ProgressPreference = 'SilentlyContinue'
|
2021-01-19 19:27:24 +01:00
|
|
|
|
2021-01-19 20:03:53 +01:00
|
|
|
# Get and prepare needed dependencies.
|
2022-09-16 06:29:48 +02:00
|
|
|
if ($use_qt5 -eq "ON") {
|
2023-03-29 09:02:34 +02:00
|
|
|
$qt_version = "5.15.2"
|
2022-09-16 06:29:48 +02:00
|
|
|
}
|
|
|
|
else {
|
2023-03-29 08:34:57 +02:00
|
|
|
$qt_version = "6.4.3"
|
2022-09-16 06:29:48 +02:00
|
|
|
}
|
|
|
|
|
2022-12-02 07:39:43 +01:00
|
|
|
$maria_version = "10.6.11"
|
2022-02-10 12:30:26 +01:00
|
|
|
$maria_link = "https://archive.mariadb.org/mariadb-$maria_version/winx64-packages/mariadb-$maria_version-winx64.zip"
|
2021-01-19 20:03:53 +01:00
|
|
|
$maria_output = "maria.zip"
|
2023-01-22 20:02:44 +01:00
|
|
|
$cmake_version = "3.25.2"
|
2021-11-18 08:40:28 +01:00
|
|
|
$cmake_link = "https://github.com/Kitware/CMake/releases/download/v$cmake_version/cmake-$cmake_version-windows-x86_64.zip"
|
|
|
|
$cmake_output = "cmake.zip"
|
2021-01-19 19:29:20 +01:00
|
|
|
|
2021-01-19 20:03:53 +01:00
|
|
|
Invoke-WebRequest -Uri "$maria_link" -OutFile "$maria_output"
|
|
|
|
& ".\resources\scripts\7za\7za.exe" x $maria_output
|
2020-12-08 12:44:28 +01:00
|
|
|
|
2021-11-18 08:40:28 +01:00
|
|
|
Invoke-WebRequest -Uri "$cmake_link" -OutFile "$cmake_output"
|
|
|
|
& ".\resources\scripts\7za\7za.exe" x $cmake_output
|
|
|
|
|
|
|
|
$cmake_path = "$old_pwd\cmake-$cmake_version-windows-x86_64\bin\cmake.exe"
|
|
|
|
|
2021-01-19 20:03:53 +01:00
|
|
|
# Download Qt itself.
|
2021-01-20 08:04:45 +01:00
|
|
|
$qt_path = "$old_pwd\qt"
|
2023-03-30 08:16:22 +02:00
|
|
|
|
|
|
|
# Install "aqtinstall" from its master branch to have latest code.
|
2021-06-22 07:59:05 +02:00
|
|
|
pip3 install -U pip
|
2023-03-30 08:16:22 +02:00
|
|
|
pip3 install -I git+https://github.com/miurahr/aqtinstall
|
2021-11-18 08:40:28 +01:00
|
|
|
|
2021-11-19 10:23:50 +01:00
|
|
|
if ($qt_version.StartsWith("6")) {
|
2022-12-07 09:25:36 +01:00
|
|
|
aqt install-qt -O "$qt_path" windows desktop $qt_version win64_msvc2019_64 -m qtwebengine qtimageformats qtmultimedia qt5compat qtwebchannel qtpositioning
|
2021-11-19 10:23:50 +01:00
|
|
|
}
|
|
|
|
else {
|
|
|
|
aqt install-qt -O "$qt_path" windows desktop $qt_version win64_msvc2019_64 -m qtwebengine
|
|
|
|
}
|
|
|
|
|
2021-11-18 08:40:28 +01:00
|
|
|
aqt install-src -O "$qt_path" windows desktop $qt_version --archives qtbase
|
2020-12-08 12:44:28 +01:00
|
|
|
|
2021-01-20 08:04:45 +01:00
|
|
|
$qt_qmake = "$qt_path\$qt_version\msvc2019_64\bin\qmake.exe"
|
|
|
|
$env:PATH = "$qt_path\$qt_version\msvc2019_64\bin\;" + $env:PATH
|
|
|
|
|
|
|
|
# Download openssl.
|
2021-11-18 08:40:28 +01:00
|
|
|
aqt install-tool -O "$qt_path" windows desktop tools_openssl_x64 qt.tools.openssl.win_x64
|
2021-01-20 08:04:45 +01:00
|
|
|
$openssl_base_path = "$qt_path\Tools\OpenSSL\Win_x64"
|
2020-12-08 12:52:00 +01:00
|
|
|
|
2021-01-19 20:03:53 +01:00
|
|
|
# Build dependencies.
|
2021-01-20 08:04:45 +01:00
|
|
|
$maria_path = "$old_pwd\mariadb-$maria_version-winx64"
|
2021-11-18 08:40:28 +01:00
|
|
|
$qt_sqldrivers_path = "$qt_path\$qt_version\Src\qtbase\src\plugins\sqldrivers"
|
2021-01-20 08:04:45 +01:00
|
|
|
|
|
|
|
cd "$qt_sqldrivers_path"
|
2021-11-19 10:28:53 +01:00
|
|
|
|
|
|
|
if ($qt_version.StartsWith("6")) {
|
|
|
|
& $cmake_path -G Ninja -DCMAKE_BUILD_TYPE="Release" -DMySQL_INCLUDE_DIR="$maria_path\include\mysql" -DMySQL_LIBRARY="$maria_path\lib\libmariadb.lib"
|
|
|
|
& $cmake_path --build .
|
2022-02-05 08:06:33 +01:00
|
|
|
|
|
|
|
$with_qt6 = "ON"
|
2021-11-19 10:28:53 +01:00
|
|
|
}
|
|
|
|
else {
|
|
|
|
& $qt_qmake -- MYSQL_INCDIR="$maria_path\include\mysql" MYSQL_LIBDIR="$maria_path\lib"
|
|
|
|
nmake.exe sub-mysql
|
2022-02-05 08:06:33 +01:00
|
|
|
|
|
|
|
$with_qt6 = "OFF"
|
2021-11-19 10:28:53 +01:00
|
|
|
}
|
|
|
|
|
2021-01-20 08:04:45 +01:00
|
|
|
cd "$old_pwd"
|
2021-01-19 20:03:53 +01:00
|
|
|
|
2020-12-08 12:59:10 +01:00
|
|
|
# Build application.
|
2020-12-08 12:52:00 +01:00
|
|
|
mkdir "rssguard-build"
|
|
|
|
cd "rssguard-build"
|
2022-10-13 07:16:59 +02:00
|
|
|
& "$cmake_path" ".." -G Ninja -DCMAKE_BUILD_TYPE="RelWithDebInfo" -DBUILD_WITH_QT6="$with_qt6" -DREVISION_FROM_GIT=ON -DUSE_WEBENGINE="$use_webengine" -DFEEDLY_CLIENT_ID="$env:FEEDLY_CLIENT_ID" -DFEEDLY_CLIENT_SECRET="$env:FEEDLY_CLIENT_SECRET" -DGMAIL_CLIENT_ID="$env:GMAIL_CLIENT_ID" -DGMAIL_CLIENT_SECRET="$env:GMAIL_CLIENT_SECRET"
|
2022-01-31 13:11:48 +05:00
|
|
|
& "$cmake_path" --build .
|
|
|
|
& "$cmake_path" --install . --prefix app
|
2020-12-08 12:52:00 +01:00
|
|
|
|
|
|
|
cd "app"
|
2022-01-31 13:11:48 +05:00
|
|
|
windeployqt.exe --verbose 1 --no-compiler-runtime --no-translations --release rssguard.exe rssguard.dll
|
2020-12-08 12:52:00 +01:00
|
|
|
cd ".."
|
|
|
|
|
|
|
|
# Copy OpenSSL.
|
2021-01-20 08:04:45 +01:00
|
|
|
Copy-Item -Path "$openssl_base_path\bin\libcrypto*.dll" -Destination ".\app\"
|
|
|
|
Copy-Item -Path "$openssl_base_path\bin\libssl*.dll" -Destination ".\app\"
|
2020-12-08 12:52:00 +01:00
|
|
|
|
2021-01-20 08:04:45 +01:00
|
|
|
# Copy MySQL.
|
2022-08-30 10:02:22 +02:00
|
|
|
Copy-Item -Path "$maria_path\lib\libmariadb.dll" -Destination ".\app\"
|
2021-01-20 08:04:45 +01:00
|
|
|
Copy-Item -Path "$qt_sqldrivers_path\plugins\sqldrivers\qsqlmysql.dll" -Destination ".\app\sqldrivers\" -Force
|
2020-12-08 12:52:00 +01:00
|
|
|
|
2022-09-16 06:29:48 +02:00
|
|
|
if ($use_webengine -eq "ON") {
|
|
|
|
$packagebase = "rssguard-${git_tag}-${git_revision}-win"
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
$packagebase = "rssguard-${git_tag}-${git_revision}-nowebengine-win"
|
|
|
|
}
|
|
|
|
|
|
|
|
if ($use_qt5 -eq "ON") {
|
|
|
|
$packagebase += "7"
|
2021-01-06 08:15:12 +01:00
|
|
|
}
|
|
|
|
else {
|
2022-09-16 06:29:48 +02:00
|
|
|
$packagebase += "10"
|
2021-01-06 08:15:12 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
# Create 7zip package.
|
2021-01-06 11:14:30 +01:00
|
|
|
& "$old_pwd\resources\scripts\7za\7za.exe" a -t7z -mmt -mx9 "$packagebase.7z" ".\app\*"
|
2021-01-06 08:15:12 +01:00
|
|
|
|
|
|
|
# Create NSIS installation package.
|
|
|
|
& "$old_pwd\resources\scripts\nsis\makensis.exe" "/XOutFile $packagebase.exe" ".\NSIS.template.in"
|
|
|
|
|
2022-01-31 13:11:48 +05:00
|
|
|
ls
|