diff --git a/CI/Linux/linux-build.yml b/CI/Linux/linux-build.yml
new file mode 100644
index 0000000000..93e3d3cb9b
--- /dev/null
+++ b/CI/Linux/linux-build.yml
@@ -0,0 +1,141 @@
+steps:
+ - script: |
+ mkdir build-release
+ cd build-release
+ if [ -z $(which cmake) ]; then cmake3 -DCMAKE_BUILD_TYPE=Release ..; else cmake -DCMAKE_BUILD_TYPE=Release ..; fi
+ make -j
+ condition: eq(variables['packager'],'deb')
+ displayName: 'Build Release deb'
+
+ - script: |
+ mkdir build-release
+ cd build-release
+ if [ -z $(which cmake) ]; then
+ cmake3 -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX:PATH=$(pwd)/rpm/BUILDROOT/usr ..;
+ else cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX:PATH=$(pwd)/rpm/BUILDROOT/usr ..;
+ fi
+ make -j
+ make install/strip
+ condition: eq(variables['packager'],'rpm')
+ displayName: 'Build Release rpm'
+
+ - script: |
+ mkdir build-ent
+ cd build-ent
+ export SYNERGY_ENTERPRISE=1
+ if [ -z $(which cmake) ]; then cmake3 -DCMAKE_BUILD_TYPE=Release -DSYNERGY_ENTERPRISE=ON ..; else cmake -DCMAKE_BUILD_TYPE=Release -DSYNERGY_ENTERPRISE=ON ..; fi
+ make -j
+ displayName: 'Build enterprise'
+ condition: eq(variables['packager'],'deb')
+
+ - script: |
+ mkdir build-ent
+ cd build-ent
+ if [ -z $(which cmake) ]; then
+ cmake3 -DCMAKE_BUILD_TYPE=Release -DSYNERGY_ENTERPRISE=ON -DCMAKE_INSTALL_PREFIX:PATH=$(pwd)/rpm/BUILDROOT/usr ..;
+ else cmake -DCMAKE_BUILD_TYPE=Release -DSYNERGY_ENTERPRISE=ON -DCMAKE_INSTALL_PREFIX:PATH=$(pwd)/rpm/BUILDROOT/usr ..;
+ fi
+ make -j
+ make install/strip
+ condition: eq(variables['packager'],'rpm')
+ displayName: 'Build enterprise rpm'
+
+ - script: |
+ . ./build-release/version
+ SYNERGY_VERSION="$SYNERGY_VERSION_MAJOR.$SYNERGY_VERSION_MINOR.$SYNERGY_VERSION_PATCH"
+ SYNERGY_REVISION=`git rev-parse --short=8 HEAD`
+ SYNERGY_DEB_VERSION="${SYNERGY_VERSION}.${SYNERGY_VERSION_STAGE}~b$(Build.BuildNumber)+${SYNERGY_REVISION}"
+ SYNERGY_RPM_VERSION="${SYNERGY_VERSION}-$(Build.BuildNumber).${SYNERGY_VERSION_STAGE}.${SYNERGY_REVISION}"
+ echo "##vso[task.setvariable variable=SYNERGY_VERSION_STAGE]${SYNERGY_VERSION_STAGE}"
+ echo "##vso[task.setvariable variable=SYNERGY_VERSION]${SYNERGY_VERSION}"
+ echo "##vso[task.setvariable variable=SYNERGY_REVISION]${SYNERGY_REVISION}"
+ echo "##vso[task.setvariable variable=SYNERGY_DEB_VERSION]${SYNERGY_DEB_VERSION}"
+ echo "##vso[task.setvariable variable=SYNERGY_RPM_VERSION]${SYNERGY_RPM_VERSION}"
+ displayName: "Setup variables"
+ condition: and(eq(variables['packager'],'deb'), eq(variables['Build.Reason'], 'Manual'))
+
+ - script: |
+ dch --create --package "synergy" --controlmaint --distribution unstable --newversion $SYNERGY_DEB_VERSION "Initial release"
+ export DEB_BUILD_OPTIONS="parallel=8"
+ export GPG_TTY=$(tty)
+ debuild --preserve-envvar SYNERGY_* -us -uc
+ mkdir standard_package
+ cd ..
+ filename=$(ls synergy_*.deb)
+ filename_new="synergy_${SYNERGY_DEB_VERSION}_$(name)${filename##*${SYNERGY_REVISION}}"
+ mv $filename $(Build.Repository.LocalPath)/standard_package/$filename_new
+ cd $(Build.Repository.LocalPath)/standard_package
+ md5sum $filename_new >> ${filename_new}.md5
+ sha1sum $filename_new >> ${filename_new}.sha1
+ sha256sum $filename_new >> ${filename_new}.sha256
+ ls -la
+ displayName: "Package Binary DEB(Standard)"
+ condition: and(eq(variables['packager'],'deb'), eq(variables['Build.Reason'], 'Manual'))
+
+ - script: |
+ export SYNERGY_ENTERPRISE=1
+ dch --create --package "synergy-enterprise_" --controlmaint --distribution unstable --newversion $(SYNERGY_DEB_VERSION) "Initial release"
+ export DEB_BUILD_OPTIONS="parallel=8"
+ export GPG_TTY=$(tty)
+ debuild --preserve-envvar SYNERGY_* -us -uc
+ mkdir enterprise_package
+ cd ..
+ filename=$(ls synergy_*.deb)
+ filename_new="synergy-enterprise_$(SYNERGY_DEB_VERSION)_$(name)${filename##*$(SYNERGY_REVISION)}"
+ mv $filename $(Build.Repository.LocalPath)/enterprise_package/$filename_new
+ cd $(Build.Repository.LocalPath)/enterprise_package
+ md5sum $filename_new >> ${filename_new}.md5
+ sha1sum $filename_new >> ${filename_new}.sha1
+ sha256sum $filename_new >> ${filename_new}.sha256
+ ls -la
+ displayName: "Package Binary DEB(Enterprise)"
+ condition: and(eq(variables['packager'],'deb'), eq(variables['Build.Reason'], 'Manual'))
+
+ - script: |
+ cd build-release/rpm
+ rpmbuild -bb --define "_topdir $(pwd)" --buildroot $(pwd)/BUILDROOT synergy.spec
+ rpmlint --verbose RPMS/x86_64/*.rpm
+ cd RPMS/x86_64
+ filename=$(ls *.rpm)
+ md5sum $filename >> ${filename}.md5
+ sha1sum $filename >> ${filename}.sha1
+ sha256sum $filename >> ${filename}.sha256
+ cd ..
+ mv x86_64 $(Build.Repository.LocalPath)/standard_package
+ displayName: "Package Binary RPM(standard)"
+ condition: and(eq(variables['packager'],'rpm'), eq(variables['Build.Reason'], 'Manual'))
+
+ - script: |
+ cd build-ent/rpm
+ rpmbuild -bb --define "_topdir $(pwd)" --buildroot $(pwd)/BUILDROOT synergy.spec
+ rpmlint --verbose RPMS/x86_64/*.rpm
+ cd RPMS/x86_64
+ filename=$(ls *.rpm)
+ md5sum $filename >> ${filename}.md5
+ sha1sum $filename >> ${filename}.sha1
+ sha256sum $filename >> ${filename}.sha256
+ cd ..
+ mv x86_64 $(Build.Repository.LocalPath)/enterprise_package
+ ls -la
+ displayName: "Package Binary RPM(enterprise)"
+ condition: and(eq(variables['packager'],'rpm'), eq(variables['Build.Reason'], 'Manual'))
+
+ - task: CopyFilesOverSSH@0
+ inputs:
+ sshEndpoint: 'Azure on Sandor'
+ sourceFolder: './standard_package'
+ contents: '*'
+ targetFolder: 'synergy-core/v1-core-standard/$(SYNERGY_VERSION)/$(SYNERGY_VERSION_STAGE)/$(SYNERGY_REVISION)/'
+ readyTimeout: '20000'
+ displayName: 'Send standard Package to sandor'
+ condition: eq(variables['Build.Reason'], 'Manual')
+
+ - task: CopyFilesOverSSH@0
+ inputs:
+ sshEndpoint: 'Azure on Sandor'
+ sourceFolder: './enterprise_package'
+ contents: '*'
+ targetFolder: 'synergy-core/v1-core-enterprise/$(SYNERGY_VERSION)/$(SYNERGY_VERSION_STAGE)/$(SYNERGY_REVISION)/'
+ readyTimeout: '20000'
+ displayName: 'Send enterprise Package to sandor'
+ condition: eq(variables['Build.Reason'], 'Manual')
\ No newline at end of file
diff --git a/CI/MacOS/mac-build.yml b/CI/MacOS/mac-build.yml
new file mode 100644
index 0000000000..c40ab7ee02
--- /dev/null
+++ b/CI/MacOS/mac-build.yml
@@ -0,0 +1,108 @@
+steps:
+ - task: InstallAppleCertificate@2
+ inputs:
+ certSecureFile: 'AppleSigningCert.cer'
+ certPwd: '$(AppleCertPass)'
+ keychain: 'temp'
+ condition: eq(variables['Build.Reason'], 'Manual')
+
+ - task: AzureKeyVault@1
+ inputs:
+ azureSubscription: 'Free Trial (796b9556-9614-41a6-8040-0eb14d81fe6f'
+ KeyVaultName: 'Symless'
+ SecretsFilter: '*'
+ displayName: "Get keys"
+ condition: eq(variables['Build.Reason'], 'Manual')
+
+ - task: CmdLine@2
+ inputs:
+ script: 'brew install qt'
+ displayName: 'Installing QT'
+
+ - task: CmdLine@2
+ inputs:
+ script: |
+ export PATH="$(QT_PATH):$PATH"
+ mkdir build
+ cd build
+ cmake -DCMAKE_OSX_DEPLOYMENT_TARGET=$(version) -DCMAKE_OSX_ARCHITECTURES=x86_64 -DCMAKE_BUILD_TYPE=Release -DCMAKE_CONFIGURATION_TYPES=Release ..
+ displayName: 'Cmake standard'
+ condition: eq(variables['buildType'], 'standard')
+
+ - task: CmdLine@2
+ inputs:
+ script: |
+ export PATH="$(QT_PATH):$PATH"
+ export SYNERGY_ENTERPRISE=1
+ mkdir build
+ cd build
+ cmake -DCMAKE_OSX_DEPLOYMENT_TARGET=10.12 -DCMAKE_OSX_ARCHITECTURES=x86_64 -DCMAKE_BUILD_TYPE=Release -DCMAKE_CONFIGURATION_TYPES=Release -DSYNERGY_ENTERPRISE=ON ..
+ displayName: 'Cmake enterprise'
+ condition: eq(variables['buildType'], 'enterprise')
+
+ - task: CmdLine@2
+ inputs:
+ script: |
+ cd build
+ make -j
+ make install/strip
+ displayName: 'Compiling'
+
+ - task: CmdLine@2
+ inputs:
+ script: |
+ export PATH="$(QT_PATH):$PATH"
+ macdeployqt $(Build.Repository.LocalPath)/build/bundle/Synergy.app -codesign="$CODESIGN_ID"
+ codesign -f --options runtime --deep -s "$CODESIGN_ID" $(Build.Repository.LocalPath)/build/bundle/Synergy.app
+ ln -s /Applications $(Build.Repository.LocalPath)/build/bundle/Applications
+ displayName: 'Signing'
+ env:
+ CODESIGN_ID: "Developer ID Application: Symless Ltd (4HX897Y6GJ)"
+ condition: eq(variables['Build.Reason'], 'Manual')
+
+ - script: |
+ . ./build/version
+ SYNERGY_VERSION="$SYNERGY_VERSION_MAJOR.$SYNERGY_VERSION_MINOR.$SYNERGY_VERSION_PATCH"
+ SYNERGY_REVISION=`git rev-parse --short=8 HEAD`
+ SYNERGY_DMG_VERSION="${SYNERGY_VERSION}-${SYNERGY_VERSION_STAGE}_b$(Build.BuildNumber)-${SYNERGY_REVISION}"
+ SYNERGY_DMG_FILENAME=$(prefix)_v${SYNERGY_DMG_VERSION}_macos_$(name).dmg
+ echo "##vso[task.setvariable variable=SYNERGY_VERSION_STAGE]${SYNERGY_VERSION_STAGE}"
+ echo "##vso[task.setvariable variable=SYNERGY_VERSION]${SYNERGY_VERSION}"
+ echo "##vso[task.setvariable variable=SYNERGY_REVISION]${SYNERGY_REVISION}"
+ echo "##vso[task.setvariable variable=SYNERGY_DMG_VERSION]${SYNERGY_DMG_VERSION}"
+ echo "##vso[task.setvariable variable=SYNERGY_DMG_FILENAME]${SYNERGY_DMG_FILENAME}"
+ displayName: "Setup variables"
+ condition: eq(variables['Build.Reason'], 'Manual')
+
+ - task: CmdLine@2
+ inputs:
+ script: |
+ hdiutil create -volname Synergy -srcfolder $(Build.Repository.LocalPath)/build/bundle/ -ov -format UDZO $(SYNERGY_DMG_FILENAME)
+ mkdir pkg
+ mv $(SYNERGY_DMG_FILENAME) pkg/
+ cd pkg
+ md5 -r $(SYNERGY_DMG_FILENAME) >> $(SYNERGY_DMG_FILENAME).md5
+ shasum $(SYNERGY_DMG_FILENAME) >> $(SYNERGY_DMG_FILENAME).sha1
+ shasum -a 256 $(SYNERGY_DMG_FILENAME) >> $(SYNERGY_DMG_FILENAME).sha256
+ displayName: 'Create Installer'
+ condition: eq(variables['Build.Reason'], 'Manual')
+
+ - task: Bash@3
+ inputs:
+ filePath: 'CI/MacOS/notorize.sh'
+ workingDirectory: 'pkg/'
+ env:
+ ASC_USERNAME: $(ASC_USERNAME)
+ NOTORY_APP_PASSWORD: $(NOTORY_APP_PASSWORD)
+ displayName: 'Submit for Notarization'
+ condition: eq(variables['Build.Reason'], 'Manual')
+
+ - task: CopyFilesOverSSH@0
+ inputs:
+ sshEndpoint: 'Azure on Sandor'
+ sourceFolder: '$(Build.Repository.LocalPath)/pkg'
+ contents: '*'
+ targetFolder: 'synergy-core/v1-core-$(buildType)/$(SYNERGY_VERSION)/$(SYNERGY_VERSION_STAGE)/$(SYNERGY_REVISION)/'
+ readyTimeout: '20000'
+ displayName: 'Send Package to sandor'
+ condition: eq(variables['Build.Reason'], 'Manual')
\ No newline at end of file
diff --git a/CI/MacOS/notorize.sh b/CI/MacOS/notorize.sh
new file mode 100755
index 0000000000..ad0b5a77b3
--- /dev/null
+++ b/CI/MacOS/notorize.sh
@@ -0,0 +1,38 @@
+#Notarization script from https://github.com/rednoah/notarize-app/blob/master/notarize-app
+
+BUNDLE_ID=com.symless.synergy.${SYNERGY_VERSION}.${SYNERGY_REVISION}
+
+echo "User: ${ASC_USERNAME}"
+echo "Bundle: ${BUNDLE_ID}"
+
+# create temporary files
+NOTARIZE_APP_LOG=$(mktemp -t notarize-app)
+NOTARIZE_INFO_LOG=$(mktemp -t notarize-info)
+
+
+
+# submit app for notarization
+if xcrun altool --notarize-app --primary-bundle-id "$BUNDLE_ID" --username "$ASC_USERNAME" --password "${NOTORY_APP_PASSWORD}" -f "${SYNERGY_DMG_FILENAME}" > "$NOTARIZE_APP_LOG" 2>&1; then
+ cat "$NOTARIZE_APP_LOG"
+ RequestUUID=$(awk -F ' = ' '/RequestUUID/ {print $2}' "$NOTARIZE_APP_LOG")
+
+ # check status periodically
+ while sleep 60 && date; do
+ # check notarization status
+ if xcrun altool --notarization-info "$RequestUUID" --username "$ASC_USERNAME" --password "${NOTORY_APP_PASSWORD}" > "$NOTARIZE_INFO_LOG" 2>&1; then
+ cat "$NOTARIZE_INFO_LOG"
+
+ # once notarization is complete, run stapler and exit
+ if ! grep -q "Status: in progress" "$NOTARIZE_INFO_LOG"; then
+ xcrun stapler staple "${SYNERGY_DMG_FILENAME}"
+ exit
+ fi
+ else
+ cat "$NOTARIZE_INFO_LOG" 1>&2
+ exit 1
+ fi
+ done
+else
+ cat "$NOTARIZE_APP_LOG" 1>&2
+ exit 1
+fi
diff --git a/CI/MacOS/qtifwsilent.qs b/CI/MacOS/qtifwsilent.qs
deleted file mode 100644
index d4069ef30b..0000000000
--- a/CI/MacOS/qtifwsilent.qs
+++ /dev/null
@@ -1,56 +0,0 @@
-function Controller() {
- installer.autoRejectMessageBoxes();
- installer.installationFinished.connect(function() {
- gui.clickButton(buttons.NextButton);
- })
-}
-
-Controller.prototype.WelcomePageCallback = function() {
- gui.clickButton(buttons.NextButton, 3000);
-}
-
-Controller.prototype.CredentialsPageCallback = function() {
- gui.clickButton(buttons.NextButton);
-}
-
-Controller.prototype.IntroductionPageCallback = function() {
- gui.clickButton(buttons.NextButton);
-}
-
-Controller.prototype.TargetDirectoryPageCallback = function()
-{
- gui.currentPageWidget().TargetDirectoryLineEdit.setText(installer.value("HomeDir") + "/Qt");
- gui.clickButton(buttons.NextButton);
-}
-
-Controller.prototype.ComponentSelectionPageCallback = function() {
- var widget = gui.currentPageWidget();
-
- widget.deselectAll();
-
- widget.selectComponent("qt.595.clang_64")
-
- gui.clickButton(buttons.NextButton);
-}
-
-Controller.prototype.LicenseAgreementPageCallback = function() {
- gui.currentPageWidget().AcceptLicenseRadioButton.setChecked(true);
- gui.clickButton(buttons.NextButton);
-}
-
-Controller.prototype.StartMenuDirectoryPageCallback = function() {
- gui.clickButton(buttons.NextButton);
-}
-
-Controller.prototype.ReadyForInstallationPageCallback = function()
-{
- gui.clickButton(buttons.NextButton);
-}
-
-Controller.prototype.FinishedPageCallback = function() {
-var checkBoxForm = gui.currentPageWidget().LaunchQtCreatorCheckBoxForm
-if (checkBoxForm && checkBoxForm.launchQtCreatorCheckBox) {
- checkBoxForm.launchQtCreatorCheckBox.checked = false;
-}
- gui.clickButton(buttons.FinishButton);
-}
\ No newline at end of file
diff --git a/CI/Windows/build.bat b/CI/Windows/build.bat
deleted file mode 100644
index 61973076ba..0000000000
--- a/CI/Windows/build.bat
+++ /dev/null
@@ -1,6 +0,0 @@
-SET VS_INSTALL_PATH=C:\"Program Files (x86)"\"Microsoft Visual Studio"\2019\Community\
-call %VS_INSTALL_PATH%Common7\Tools\VsDevCmd.bat
-mkdir build
-cd build
-cmake -G "Visual Studio 15 2017 Win64" -DCMAKE_BUILD_TYPE=Debug ..
-msbuild synergy-core.sln /p:Platform="x64" /p:Configuration=Debug /m
\ No newline at end of file
diff --git a/CI/Windows/qtifwsilent.qs b/CI/Windows/qtifwsilent.qs
deleted file mode 100644
index c980892a23..0000000000
--- a/CI/Windows/qtifwsilent.qs
+++ /dev/null
@@ -1,54 +0,0 @@
-function Controller() {
- installer.autoRejectMessageBoxes();
- installer.installationFinished.connect(function() {
- gui.clickButton(buttons.NextButton);
- })
-}
-
-Controller.prototype.WelcomePageCallback = function() {
- gui.clickButton(buttons.NextButton, 3000);
-}
-
-Controller.prototype.CredentialsPageCallback = function() {
- gui.clickButton(buttons.NextButton);
-}
-
-Controller.prototype.IntroductionPageCallback = function() {
- gui.clickButton(buttons.NextButton);
-}
-
-Controller.prototype.TargetDirectoryPageCallback = function() {
- gui.currentPageWidget().TargetDirectoryLineEdit.setText(installer.environmentVariable("QT_INSTALL_DIR"));
- gui.clickButton(buttons.NextButton);
-}
-
-Controller.prototype.ComponentSelectionPageCallback = function() {
- var widget = gui.currentPageWidget();
- widget.deselectAll();
- widget.selectComponent("qt.595.win32_msvc2015");
- widget.selectComponent("qt.595.win64_msvc2015_64");
- widget.selectComponent("qt.595.qtscript");
- widget.selectComponent("qt.tools.vcredist_msvc2015_x86");
- widget.selectComponent("qt.tools.vcredist_msvc2015_x64");
- gui.clickButton(buttons.NextButton);
-}
-
-Controller.prototype.LicenseAgreementPageCallback = function() {
- gui.currentPageWidget().AcceptLicenseRadioButton.setChecked(true);
- gui.clickButton(buttons.NextButton);
-}
-
-Controller.prototype.StartMenuDirectoryPageCallback = function() {
- gui.clickButton(buttons.NextButton);
-}
-
-Controller.prototype.ReadyForInstallationPageCallback = function() {
- gui.clickButton(buttons.NextButton);
-}
-
-Controller.prototype.FinishedPageCallback = function() {
- var checkBoxForm = gui.currentPageWidget().LaunchQtCreatorCheckBoxForm;
- if (checkBoxForm && checkBoxForm.launchQtCreatorCheckBox)
- checkBoxForm.launchQtCreatorCheckBox.checked = false;
- gui.clickButton(buttons.FinishButton);
-}
\ No newline at end of file
diff --git a/CI/Windows/windows-build.yml b/CI/Windows/windows-build.yml
new file mode 100644
index 0000000000..79c60ae470
--- /dev/null
+++ b/CI/Windows/windows-build.yml
@@ -0,0 +1,181 @@
+steps:
+ - task: PowerShell@2
+ inputs:
+ targetType: 'inline'
+ script: |
+ New-Item -Force -ItemType Directory -Path ".\deps\"
+ $client = new-object System.Net.WebClient
+ $client.DownloadFile("https://binaries.symless.com/bonjour/BonjourSDK.zip",".\deps\bonjoursdk.zip")
+ $client.DownloadFile("https://binaries.symless.com/bonjour/Bonjour64.msi",".\deps\Bonjour64.msi")
+ displayName: 'Downloading Bonjour SKD'
+ - task: UsePythonVersion@0
+ inputs:
+ versionSpec: '3.x'
+ addToPath: true
+ architecture: 'x64'
+ displayName: 'Set python version'
+
+ - script: |
+ cd $(Build.SourcesDirectory)
+ python -m pip install aqtinstall
+ displayName: 'Install aqtinstall'
+
+ - script: |
+ cd $(Build.SourcesDirectory)
+ python -m aqt install -b $(QLI_BASE_URL) --outputdir $(Build.Repository.LocalPath)\\deps\\Qt $(QT_VERSION) windows desktop win64_msvc2017_64
+ python -m aqt install -b $(QLI_BASE_URL) --outputdir $(Build.Repository.LocalPath)\\deps\\Qt $(QT_VERSION) windows desktop win32_msvc2017
+ displayName: 'Install Qt $(QT_VERSION)'
+
+ - task: ExtractFiles@1
+ inputs:
+ archiveFilePatterns: './deps/*.zip'
+ destinationFolder: './deps/'
+ cleanDestinationFolder: false
+ displayName: 'Extracting zips'
+
+ - task: PowerShell@2
+ inputs:
+ targetType: 'inline'
+ script: |
+ Get-ChildItem '.\deps'
+ msiexec.exe /i ${pwd}\deps\Bonjour64.msi INSTALLDIR="${pwd}\deps\Bonjour" /qb
+ displayName: 'Installing bonjour SDK'
+
+ - script: |
+ call "%ENV_BAT%" -arch=x64
+ set BONJOUR_SDK_HOME=%cd%\%BONJOUR_SDK_DIR%
+ mkdir build64
+ cd build64
+ IF "$(buildType)"=="enterprise" (
+ cmake -G "Visual Studio 16 2019" -A %MSARCH% -V -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH=%QT_PATH% -DSYNERGY_ENTERPRISE=ON ..
+ ) else (
+ cmake -G "Visual Studio 16 2019" -A %MSARCH% -V -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH=%QT_PATH% ..
+ )
+ displayName: 'Cmake x64 Standard'
+ env:
+ ENV_BAT: $(ENV_BAT)
+ BONJOUR_SDK_DIR: $(BONJOUR_SDK_DIR)
+ QT_PATH: $(QT_BIN_PATH)
+ MSARCH: 'x64'
+
+ - script: |
+ call "%ENV_BAT%" -arch=x64
+ cd build64
+ msbuild synergy-core.sln /p:Platform="x64" /p:Configuration=Release
+ displayName: 'Compiling x64'
+ env:
+ ENV_BAT: $(ENV_BAT)
+
+ - script: |
+ call "%ENV_BAT%" -arch=x86
+ set BONJOUR_SDK_HOME=%cd%\%BONJOUR_SDK_DIR%
+ mkdir build32
+ cd build32
+ IF "$(buildType)"=="enterprise" (
+ cmake -G "Visual Studio 16 2019" -A %MSARCH% -V -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH=%QT_PATH% -DSYNERGY_ENTERPRISE=ON ..
+ ) else (
+ cmake -G "Visual Studio 16 2019" -A %MSARCH% -V -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH=%QT_PATH% ..
+ )
+ displayName: 'Cmake x32 Standard'
+ env:
+ ENV_BAT: $(ENV_BAT)
+ BONJOUR_SDK_DIR: $(BONJOUR_SDK_DIR)
+ QT_PATH: $(QT_BIN_PATH_32)
+ MSARCH: 'Win32'
+
+ - script: |
+ call "%ENV_BAT%" -arch=x86
+ cd build32
+ msbuild synergy-core.sln /p:Platform="Win32" /p:Configuration=Release
+ displayName: 'Compiling x32'
+ env:
+ ENV_BAT: $(ENV_BAT)
+
+ - task: codesigning@2
+ inputs:
+ secureFileId: 'WindowsSigningCert.pfx'
+ signCertPassword: '$(CODESIGN_PWD)'
+ files: '*\bin\Release\*.exe'
+ timeServer: 'http://timestamp.digicert.com'
+ hashingAlgorithm: 'SHA256'
+ displayName: "Signing Synergy binaries"
+ condition: eq(variables['Build.Reason'], 'Manual')
+
+ - task: MSBuild@1
+ inputs:
+ solution: 'build64/installer/Synergy.sln'
+ msbuildVersion: '16.0'
+ msbuildArchitecture: 'x64'
+ platform: 'x64'
+ configuration: 'Release'
+ msbuildArguments: '/m'
+ maximumCpuCount: true
+ displayName: 'Making installer x64'
+ env:
+ QT_PATH: $(QT_BIN_PATH)
+
+ - task: MSBuild@1
+ inputs:
+ solution: 'build32/installer/Synergy.sln'
+ msbuildVersion: '16.0'
+ msbuildArchitecture: 'x86'
+ platform: 'x86'
+ configuration: 'Release'
+ msbuildArguments: '/m'
+ maximumCpuCount: true
+ displayName: 'Making installer x86'
+ env:
+ QT_PATH: $(QT_BIN_PATH_32)
+
+ - task: codesigning@2
+ inputs:
+ secureFileId: 'WindowsSigningCert.pfx'
+ signCertPassword: '$(CODESIGN_PWD)'
+ files: '*\installer\bin\Release\Synergy.msi'
+ timeServer: 'http://timestamp.digicert.com'
+ hashingAlgorithm: 'SHA256'
+ displayName: "Signing installers"
+ condition: eq(variables['Build.Reason'], 'Manual')
+
+ - script: |
+ call ./build64/version
+ set SYNERGY_VERSION=%SYNERGY_VERSION_MAJOR%.%SYNERGY_VERSION_MINOR%.%SYNERGY_VERSION_PATCH%
+ git rev-parse --short=8 HEAD > gitversion
+ set /p SYNERGY_REVISION= < gitversion
+ echo ##vso[task.setvariable variable=SYNERGY_VERSION_STAGE]%SYNERGY_VERSION_STAGE%
+ echo ##vso[task.setvariable variable=SYNERGY_VERSION]%SYNERGY_VERSION%
+ echo ##vso[task.setvariable variable=SYNERGY_REVISION]%SYNERGY_REVISION%
+ cd $(Build.Repository.LocalPath)\build32\installer\bin\Release\
+ set FILENAME=$(prefix)_v%SYNERGY_VERSION%_windows_x86.msi
+ ren "Synergy.msi" "%FILENAME%"
+ $(Build.Repository.LocalPath)\ext\openssl\windows\x64\bin\openssl.exe md5 %FILENAME% > %FILENAME%.md5
+ $(Build.Repository.LocalPath)\ext\openssl\windows\x64\bin\openssl.exe sha1 %FILENAME% > %FILENAME%.sha1
+ $(Build.Repository.LocalPath)\ext\openssl\windows\x64\bin\openssl.exe sha256 %FILENAME% > %FILENAME%.sha256
+ cd $(Build.Repository.LocalPath)\build64\installer\bin\Release\
+ set FILENAME=$(prefix)_v%SYNERGY_VERSION%_windows_x64.msi
+ ren "Synergy.msi" "%FILENAME%"
+ $(Build.Repository.LocalPath)\ext\openssl\windows\x64\bin\openssl.exe md5 %FILENAME% > %FILENAME%.md5
+ $(Build.Repository.LocalPath)\ext\openssl\windows\x64\bin\openssl.exe sha1 %FILENAME% > %FILENAME%.sha1
+ $(Build.Repository.LocalPath)\ext\openssl\windows\x64\bin\openssl.exe sha256 %FILENAME% > %FILENAME%.sha256
+ displayName: "Rename files"
+ condition: eq(variables['Build.Reason'], 'Manual')
+
+ - task: CopyFilesOverSSH@0
+ inputs:
+ sshEndpoint: 'Azure on Sandor'
+ sourceFolder: '$(Build.Repository.LocalPath)\build32\installer\bin\Release\'
+ contents: '*'
+ targetFolder: 'synergy-core/v1-core-$(buildType)/$(SYNERGY_VERSION)/$(SYNERGY_VERSION_STAGE)/$(SYNERGY_REVISION)/'
+ readyTimeout: '20000'
+ displayName: 'Send x86 Package to sandor'
+ condition: eq(variables['Build.Reason'], 'Manual')
+
+ - task: CopyFilesOverSSH@0
+ inputs:
+ sshEndpoint: 'Azure on Sandor'
+ sourceFolder: '$(Build.Repository.LocalPath)\build64\installer\bin\Release\'
+ contents: '*'
+ targetFolder: 'synergy-core/v1-core-$(buildType)/$(SYNERGY_VERSION)/$(SYNERGY_VERSION_STAGE)/$(SYNERGY_REVISION)/'
+ readyTimeout: '20000'
+ displayName: 'Send x64 Package to sandor'
+ condition: eq(variables['Build.Reason'], 'Manual')
diff --git a/CI/build.sh b/CI/build.sh
deleted file mode 100644
index d940c13529..0000000000
--- a/CI/build.sh
+++ /dev/null
@@ -1,6 +0,0 @@
-pwd
-ls -la
-mkdir build
-cd build
-cmake ..
-make
\ No newline at end of file
diff --git a/CI/checkout.yml b/CI/checkout.yml
new file mode 100644
index 0000000000..e66b462095
--- /dev/null
+++ b/CI/checkout.yml
@@ -0,0 +1,4 @@
+steps:
+ - checkout: self
+ fetchDepth: 1
+ submodules: recursive
\ No newline at end of file
diff --git a/CI/job-doxygen.yml b/CI/job-doxygen.yml
new file mode 100644
index 0000000000..9e75b84ff3
--- /dev/null
+++ b/CI/job-doxygen.yml
@@ -0,0 +1,37 @@
+jobs:
+ - job: DoxygenDoc
+ condition: eq(variables['Build.SourceBranch'], 'refs/heads/master')
+
+ pool:
+ vmImage: 'ubuntu-16.04'
+
+ steps:
+ - script: |
+ sudo DEBIAN_FRONTEND=noninteractive
+ sudo apt-get -y update
+ sudo apt-get -y install doxygen graphviz
+ displayName: 'Install Pakages'
+
+ - script: |
+ doxygen Doxyfile
+ cd doxygen
+ tar -czvf ../docs.tar.gz ./*
+ displayName: 'Generate Docs'
+
+ - task: CopyFilesOverSSH@0
+ inputs:
+ sshEndpoint: 'Azure on Sandor'
+ sourceFolder: '.'
+ contents: 'docs.tar.gz'
+ targetFolder: 'synergy-core'
+ readyTimeout: '20000'
+ displayName: 'Publish files to sandor'
+
+ - task: SSH@0
+ inputs:
+ sshEndpoint: 'Azure on Sandor'
+ runOptions: 'commands'
+ commands: |
+ tar -C ./synergy-core/docs -xzvf ./synergy-core/docs.tar.gz --overwrite
+ readyTimeout: '20000'
+ displayName: 'Extract files on sandor'
\ No newline at end of file
diff --git a/CI/package.sh b/CI/package.sh
deleted file mode 100644
index e5a3fa596c..0000000000
--- a/CI/package.sh
+++ /dev/null
@@ -1,12 +0,0 @@
-cd ${CIRRUS_WORKING_DIR}
-
-source ./build/version
-
-SYNERGY_VERSION="$SYNERGY_VERSION_MAJOR.$SYNERGY_VERSION_MINOR.$SYNERGY_VERSION_PATCH"
-SYNERGY_REVISION=`git rev-parse --short=8 HEAD`
-SYNERGY_DEB_VERSION="${SYNERGY_VERSION}.${SYNERGY_VERSION_STAGE}~b${BUILD_NUMBER}+${SYNERGY_REVISION}"
-
-dch --create --package "synergy" --controlmaint --distribution unstable --newversion $SYNERGY_DEB_VERSION "Initial release"
-
-export DEB_BUILD_OPTIONS="parallel=4"
-debuild --preserve-envvar SYNERGY_* --preserve-envvar GIT_COMMIT --preserve-envvar BUILD_NUMBER
\ No newline at end of file
diff --git a/CI/ubuntu1604.Dockerfile b/CI/ubuntu1604.Dockerfile
deleted file mode 100644
index bfb70675a4..0000000000
--- a/CI/ubuntu1604.Dockerfile
+++ /dev/null
@@ -1,25 +0,0 @@
-#
-# Ubuntu Dockerfile
-#
-# https://github.com/dockerfile/ubuntu
-#
-
-# Pull base image.
-FROM ubuntu:16.04
-
-# Install.
-RUN \
- sed -i 's/# \(.*multiverse$\)/\1/g' /etc/apt/sources.list && \
- apt-get update && \
- apt-get install -y git cmake qtbase5-dev build-essential libx11-dev libxtst-dev libgl1-mesa-dev libssl-dev libavahi-compat-libdnssd-dev debhelper devscripts && \
- apt-get -y install qttools5-dev qttools5-dev-tools --no-install-recommends && \
- rm -rf /var/lib/apt/lists/*
-
-# Set environment variables.
-ENV HOME /root
-
-# Define working directory.
-WORKDIR /root
-
-# Define default command.
-CMD ["bash"]
\ No newline at end of file
diff --git a/CI/ubuntu1804.Dockerfile b/CI/ubuntu1804.Dockerfile
deleted file mode 100644
index e44cb9a200..0000000000
--- a/CI/ubuntu1804.Dockerfile
+++ /dev/null
@@ -1,26 +0,0 @@
-#
-# Ubuntu Dockerfile
-#
-# https://github.com/dockerfile/ubuntu
-#
-
-# Pull base image.
-FROM ubuntu:18.04
-
-# Install.
-RUN \
- sed -i 's/# \(.*multiverse$\)/\1/g' /etc/apt/sources.list && \
- apt-get update && \
- apt-get install -y git cmake qtbase5-dev build-essential libx11-dev libxtst-dev libgl1-mesa-dev libssl-dev libavahi-compat-libdnssd-dev debhelper devscripts && \
- apt-get -y install qttools5-dev qttools5-dev-tools --no-install-recommends && \
- rm -rf /var/lib/apt/lists/*
-
-
-# Set environment variables.
-ENV HOME /root
-
-# Define working directory.
-WORKDIR /root
-
-# Define default command.
-CMD ["bash"]
\ No newline at end of file
diff --git a/CI/ubuntu1904.Dockerfile b/CI/ubuntu1904.Dockerfile
deleted file mode 100644
index 83226ae40f..0000000000
--- a/CI/ubuntu1904.Dockerfile
+++ /dev/null
@@ -1,25 +0,0 @@
-#
-# Ubuntu Dockerfile
-#
-# https://github.com/dockerfile/ubuntu
-#
-
-# Pull base image.
-FROM ubuntu:19.04
-
-# Install.
-RUN \
- sed -i 's/# \(.*multiverse$\)/\1/g' /etc/apt/sources.list && \
- apt-get update && \
- apt-get install -y git cmake qtbase5-dev build-essential libx11-dev libxtst-dev libgl1-mesa-dev libssl-dev libavahi-compat-libdnssd-dev debhelper devscripts && \
- apt-get -y install qttools5-dev qttools5-dev-tools --no-install-recommends && \
- rm -rf /var/lib/apt/lists/*
-
-# Set environment variables.
-ENV HOME /root
-
-# Define working directory.
-WORKDIR /root
-
-# Define default command.
-CMD ["bash"]
\ No newline at end of file
diff --git a/azure-pipelines.yml b/azure-pipelines.yml
index a0c4d83f11..704b275c04 100644
--- a/azure-pipelines.yml
+++ b/azure-pipelines.yml
@@ -1,285 +1,123 @@
trigger:
- master
-jobs:
-- job: LinuxRHEL
- pool:
- vmImage: 'ubuntu-16.04'
- strategy:
- matrix:
- centos7:
- image: symless/centos-sudo:7
+jobs:
+ - template: CI/job-doxygen.yml
- container: $[ variables['image'] ]
+ - job: Linux
+ pool:
+ vmImage: 'ubuntu-16.04'
- steps:
- - script: |
- sudo yum -y update
- sudo yum -y install epel-release boost-static git libXtst-devel qt5-qtbase-devel qt5-qtdeclarative-devel libcurl-devel openssl-devel avahi-compat-libdns_sd-devel autoconf automake gcc gcc-c++ make rpm-build redhat-rpm-config rpm-sign qt5-qttools-devel
- sudo yum -y install cmake3 #for some reason this needs to be seperate otherwise it wont install
- displayName: 'Install Pakages'
-
- - script: |
- mkdir build
- cd build
- cmake3 ..
- make
- displayName: 'Build'
+ strategy:
+ matrix:
+ ubuntu1804:
+ image: symless/synergy-core:ubuntu18.04
+ packager: deb
+ name: ubuntu18
+ ubuntu1910:
+ image: symless/synergy-core:ubuntu19.10
+ packager: deb
+ name: ubuntu19
+ ubuntu2004:
+ image: symless/synergy-core:ubuntu20.04
+ packager: deb
+ name: ubuntu20
+ debian9:
+ image: symless/synergy-core:debian9
+ packager: deb
+ name: debian9
+ debian10:
+ image: symless/synergy-core:debian10
+ packager: deb
+ name: debian10
+ fedora28:
+ image: symless/synergy-core:fedora28
+ packager: rpm
+ name: fedora28
+ fedora29:
+ image: symless/synergy-core:fedora29
+ packager: rpm
+ name: fedora29
+ fedora30:
+ image: symless/synergy-core:fedora30
+ packager: rpm
+ name: fedora30
+ centos7.6:
+ image: symless/synergy-core:centos7.6
+ packager: rpm
+ name: centos76
+ centos8:
+ image: symless/synergy-core:centos8
+ packager: rpm
+ name: centos8
-- job: LinuxDeb1
- pool:
- vmImage: 'ubuntu-16.04'
- strategy:
- matrix:
- ubuntu18:
- image: symless/ubuntu-sudo:18.04
- ubuntu19:
- image: symless/ubuntu-sudo:19.10
+ container: $[ variables['image'] ]
- container: $[ variables['image'] ]
+ steps:
+ - template: CI/checkout.yml
+ - template: CI/Linux/linux-build.yml
- steps:
- - script: |
- sudo ln -snf /usr/share/zoneinfo/Europe/London /etc/localtime
- sudo bash -c "echo 'Europe/London' > /etc/timezone"
- displayName: 'Sort out timezones for updates'
+ - job: MacOS
+ strategy:
+ matrix:
+ mojave-std:
+ image: macOS-10.14
+ name: mojave
+ version: 10.12
+ buildType: "standard"
+ prefix: "synergy"
+ mojave-ent:
+ image: macOS-10.14
+ name: mojave
+ version: 10.12
+ buildType: "enterprise"
+ prefix: "synergy-enterprise"
+ catalina-std:
+ image: macOS-10.15
+ name: catalina
+ version: 10.14
+ buildType: "standard"
+ prefix: "synergy"
+ catalina-ent:
+ image: macOS-10.15
+ name: catalina
+ version: 10.14
+ buildType: "enterprise"
+ prefix: "synergy-enterprise"
+ pool:
+ vmImage: $[ variables['image'] ]
- - script: |
- sudo DEBIAN_FRONTEND=noninteractive
- sudo apt-get -y update
- sudo apt-get -y upgrade
- sudo apt-get -y install git cmake qtbase5-dev build-essential libx11-dev libxtst-dev libgl1-mesa-dev libssl-dev libavahi-compat-libdnssd-dev debhelper devscripts
- sudo apt-get -y install qttools5-dev qttools5-dev-tools --no-install-recommends #These will try to install gnome if we allow dependancies
- displayName: 'Install Pakages'
+ variables:
+ QT_PATH: '/usr/local/opt/qt/bin'
- - script: |
- mkdir build
- cd build
- cmake ..
- make
- displayName: 'Build'
+ steps:
+ - template: CI/checkout.yml
+ - template: CI/MacOS/mac-build.yml
-- job: LinuxDeb2
- pool:
- vmImage: 'ubuntu-16.04'
- strategy:
- matrix:
- ubuntu16:
- image: symless/ubuntu-sudo:16.04
- debian9:
- image: symless/debian-sudo:stretch
+ - job: Windows
+ strategy:
+ matrix:
+ vs2019:
+ image: windows-2019
+ buildType: "standard"
+ prefix: "synergy"
+ vs2019ent:
+ image: windows-2019
+ buildType: "enterprise"
+ prefix: "synergy_enterprise"
- container: $[ variables['image'] ]
+ pool:
+ vmImage: $[ variables['image'] ]
- steps:
- - script: |
- sudo ln -snf /usr/share/zoneinfo/Europe/London /etc/localtime
- sudo bash -c "echo 'Europe/London' > /etc/timezone"
- displayName: 'Sort out timezones for updates'
+ variables:
+ QT_VERSION: '5.12.6'
+ QLI_OUT_DIR: '.\deps\Qt'
+ QLI_BASE_URL: 'http://qt.mirror.constant.com/'
+ QT_BIN_PATH: '$(Build.Repository.LocalPath)\$(QLI_OUT_DIR)\$(QT_VERSION)\msvc2017_64'
+ QT_BIN_PATH_32: '$(Build.Repository.LocalPath)\$(QLI_OUT_DIR)\$(QT_VERSION)\msvc2017'
+ BONJOUR_SDK_DIR: 'deps\BonjourSDK'
+ ENV_BAT: 'C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\Common7\Tools\vsdevcmd'
- - script: |
- sudo DEBIAN_FRONTEND=noninteractive
- sudo apt-get -y update
- sudo apt-get -y upgrade
- sudo apt-get -y install git qtbase5-dev build-essential libx11-dev libxtst-dev libgl1-mesa-dev libssl-dev libavahi-compat-libdnssd-dev debhelper devscripts
- sudo apt-get -y install qttools5-dev qttools5-dev-tools --no-install-recommends #These will try to install gnome if we allow dependancies
- displayName: 'Install Pakages'
-
- - script: |
- sudo DEBIAN_FRONTEND=noninteractive
- sudo apt-get -y install wget
- wget https://github.com/Kitware/CMake/releases/download/v3.14.7/cmake-3.14.7-Linux-x86_64.sh
- sudo chmod +x ./cmake-3.14.7-Linux-x86_64.sh
- sudo ./cmake-3.14.7-Linux-x86_64.sh --skip-license --prefix=/
- displayName: 'Installing CMake 3.14'
-
- - script: |
- mkdir build
- cd build
- cmake ..
- make
- displayName: 'Build'
-
-- job: MacOS
- strategy:
- matrix:
- mojave:
- image: macOS-10.14
-
- pool:
- vmImage: $[ variables['image'] ]
-
- variables:
- QT_PATH: '/usr/local/opt/qt/bin'
-
- steps:
- - task: CmdLine@2
- inputs:
- script: 'brew install qt'
- displayName: 'Installing QT'
-
- - task: CmdLine@2
- inputs:
- script: |
- export PATH="$(QT_PATH):$PATH"
- mkdir build
- cd build
- cmake -DCMAKE_OSX_DEPLOYMENT_TARGET=10.12 -DCMAKE_OSX_ARCHITECTURES=x86_64 -DCMAKE_BUILD_TYPE=Release -DCMAKE_CONFIGURATION_TYPES=Release ..
- displayName: 'Cmake'
-
- - task: CmdLine@2
- inputs:
- script: |
- cd build
- make
- displayName: 'Compiling'
-
-- job: Windows
- strategy:
- matrix:
- vs2019:
- image: windows-2019
-
- pool:
- vmImage: $[ variables['image'] ]
-
- variables:
- QT_VERSION: '5.12.6'
- QLI_VERSION: '2019.05.26.1'
- QLI_OUT_DIR: '.\deps\Qt'
- QLI_BASE_URL: 'http://mirrors.ocf.berkeley.edu/qt/online/qtsdkrepository/'
- QT_PATH: '$(Build.Repository.LocalPath)\$(QLI_OUT_DIR)\$(QT_VERSION)\msvc2017_64'
- QT_PATH_32: '$(Build.Repository.LocalPath)\$(QLI_OUT_DIR)\$(QT_VERSION)\msvc2017'
- BONJOUR_SDK_DIR: 'deps\BonjourSDK'
- ENV_BAT: 'C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\Common7\Tools\vsdevcmd'
-
- steps:
-#As the official installer is rather 'slow' use an unofficial installer QLI
- - task: PowerShell@2
- inputs:
- targetType: 'inline'
- script: |
- New-Item -Force -ItemType Directory -Path ".\deps\"
- $client = new-object System.Net.WebClient
- $client.DownloadFile("https://github.com/nelsonjchen/qli-installer/archive/v$(QLI_VERSION).zip","deps\qli.zip")
- displayName: 'Downloading QLI v$(QLI_VERSION)'
-
- - task: PowerShell@2
- inputs:
- targetType: 'inline'
- script: |
- New-Item -Force -ItemType Directory -Path ".\deps\"
- $client = new-object System.Net.WebClient
- $client.DownloadFile("https://binaries.symless.com/bonjour/BonjourSDK.zip",".\deps\bonjoursdk.zip")
- $client.DownloadFile("https://binaries.symless.com/bonjour/Bonjour64.msi",".\deps\Bonjour64.msi")
- displayName: 'Downloading Bonjour SKD'
-
- - task: ExtractFiles@1
- inputs:
- archiveFilePatterns: './deps/*.zip'
- destinationFolder: './deps/'
- cleanDestinationFolder: false
- displayName: 'Extracting zips'
-
- - task: PowerShell@2
- inputs:
- targetType: 'inline'
- script: 'pip install -r .\deps\qli-installer-$(QLI_VERSION)\requirements.txt'
- displayName: 'Install QLI requirements'
-
- - task: PowerShell@2
- inputs:
- targetType: 'inline'
- script: |
- Get-ChildItem '.\deps'
- msiexec.exe /i ${pwd}\deps\Bonjour64.msi INSTALLDIR="${pwd}\deps\Bonjour" /qb
- displayName: 'Installing bonjour SDK'
-
- - task: PythonScript@0
- inputs:
- scriptSource: 'filePath'
- scriptPath: '.\deps\qli-installer-$(QLI_VERSION)\qli-installer.py'
- arguments: '$(QT_VERSION) windows desktop win64_msvc2017_64'
- displayName: 'Installing QT $(QT_VERSION) x64'
-
- - script: |
- call "$(ENV_BAT)" -arch=x64
- set BONJOUR_SDK_HOME=%cd%\$(BONJOUR_SDK_DIR)
- mkdir build64
- cd build64
- cmake -G "Visual Studio 16 2019" -A x64 -V -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH=$(QT_PATH) ..
- displayName: 'Cmake x64'
-
- - task: MSBuild@1
- inputs:
- solution: 'build64/synergy-core.sln'
- msbuildVersion: '16.0'
- msbuildArchitecture: 'x64'
- platform: 'x64'
- configuration: 'Release'
- msbuildArguments: '/m'
- maximumCpuCount: true
- displayName: 'Compiling x64'
-
- - task: PythonScript@0
- inputs:
- scriptSource: 'filePath'
- scriptPath: '.\deps\qli-installer-$(QLI_VERSION)\qli-installer.py'
- arguments: '$(QT_VERSION) windows desktop win32_msvc2017'
- displayName: 'Installing QT $(QT_VERSION) x32'
-
- - script: |
- call "$(ENV_BAT)" -arch=x86
- set BONJOUR_SDK_HOME=%cd%\$(BONJOUR_SDK_DIR)
- mkdir build32
- cd build32
- cmake -G "Visual Studio 16 2019" -A Win32 -V -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH=$(QT_PATH_32) ..
- displayName: 'Cmake x86'
- - task: MSBuild@1
- inputs:
- solution: 'build32/synergy-core.sln'
- msbuildVersion: '16.0'
- msbuildArchitecture: 'x86'
- platform: 'Win32'
- configuration: 'Release'
- msbuildArguments: '/m'
- maximumCpuCount: true
- displayName: 'Compiling x86'
-
-- job: DoxygenDoc
-
- condition: eq(variables['Build.SourceBranch'], 'refs/heads/master')
-
- pool:
- vmImage: 'ubuntu-16.04'
-
- steps:
- - script: |
- sudo DEBIAN_FRONTEND=noninteractive
- sudo apt-get -y update
- sudo apt-get -y install doxygen graphviz
- displayName: 'Install Pakages'
-
- - script: |
- doxygen Doxyfile
- cd doxygen
- tar -czvf ../docs.tar.gz ./*
- displayName: 'Generate Docs'
-
- - task: CopyFilesOverSSH@0
- inputs:
- sshEndpoint: 'Azure on Sandor'
- sourceFolder: '.'
- contents: 'docs.tar.gz'
- targetFolder: 'synergy-core'
- readyTimeout: '20000'
- displayName: 'Publish files to sandor'
-
- - task: SSH@0
- inputs:
- sshEndpoint: 'Azure on Sandor'
- runOptions: 'commands'
- commands: |
- tar -C ./synergy-core/docs -xzvf ./synergy-core/docs.tar.gz --overwrite
- readyTimeout: '20000'
- displayName: 'Extract files on sandor'
+ steps:
+ - template: CI/checkout.yml
+ - template: CI/Windows/windows-build.yml
diff --git a/dist/wix/Include.wxi.in b/dist/wix/Include.wxi.in
index e126a26c8a..c303570a5e 100644
--- a/dist/wix/Include.wxi.in
+++ b/dist/wix/Include.wxi.in
@@ -6,6 +6,7 @@
+
diff --git a/dist/wix/Product.wxs b/dist/wix/Product.wxs
index 29606c26f3..539f33116b 100644
--- a/dist/wix/Product.wxs
+++ b/dist/wix/Product.wxs
@@ -39,9 +39,9 @@
= 602)]]>
-
+
-
+
@@ -111,37 +111,37 @@
-
-
-
-
-
-
-
+
+
+
+
+
+
+
-
-
-
-
-
-
-
+
+
+
+
+
+
+
-
+
-
+
-
+
diff --git a/dist/wix/msm/Microsoft_VC142_CRT_x64.msm b/dist/wix/msm/Microsoft_VC142_CRT_x64.msm
new file mode 100644
index 0000000000..233fa16a31
Binary files /dev/null and b/dist/wix/msm/Microsoft_VC142_CRT_x64.msm differ
diff --git a/dist/wix/msm/Microsoft_VC142_CRT_x86.msm b/dist/wix/msm/Microsoft_VC142_CRT_x86.msm
new file mode 100644
index 0000000000..a34f0ad446
Binary files /dev/null and b/dist/wix/msm/Microsoft_VC142_CRT_x86.msm differ
diff --git a/ext/openssl/windows/x64/bin/libcrypto-1_1-x64.dll b/ext/openssl/windows/x64/bin/libcrypto-1_1-x64.dll
index 5c03a95d1a..fbb02b1b44 100644
Binary files a/ext/openssl/windows/x64/bin/libcrypto-1_1-x64.dll and b/ext/openssl/windows/x64/bin/libcrypto-1_1-x64.dll differ
diff --git a/ext/openssl/windows/x64/bin/libssl-1_1-x64.dll b/ext/openssl/windows/x64/bin/libssl-1_1-x64.dll
index baa5a0d0d5..f2fb2823d0 100644
Binary files a/ext/openssl/windows/x64/bin/libssl-1_1-x64.dll and b/ext/openssl/windows/x64/bin/libssl-1_1-x64.dll differ
diff --git a/ext/openssl/windows/x64/bin/openssl.exe b/ext/openssl/windows/x64/bin/openssl.exe
index 7af7dda836..69f2d4badb 100644
Binary files a/ext/openssl/windows/x64/bin/openssl.exe and b/ext/openssl/windows/x64/bin/openssl.exe differ
diff --git a/ext/openssl/windows/x86/bin/libcrypto-1_1.dll b/ext/openssl/windows/x86/bin/libcrypto-1_1.dll
index e1e4da1602..cf4e254fd6 100644
Binary files a/ext/openssl/windows/x86/bin/libcrypto-1_1.dll and b/ext/openssl/windows/x86/bin/libcrypto-1_1.dll differ
diff --git a/ext/openssl/windows/x86/bin/libssl-1_1.dll b/ext/openssl/windows/x86/bin/libssl-1_1.dll
index 029199d4b7..67061fdc83 100644
Binary files a/ext/openssl/windows/x86/bin/libssl-1_1.dll and b/ext/openssl/windows/x86/bin/libssl-1_1.dll differ
diff --git a/ext/openssl/windows/x86/bin/openssl.exe b/ext/openssl/windows/x86/bin/openssl.exe
index c0857fdcd7..0d4dad8fbb 100644
Binary files a/ext/openssl/windows/x86/bin/openssl.exe and b/ext/openssl/windows/x86/bin/openssl.exe differ
diff --git a/src/gui/CMakeLists.txt b/src/gui/CMakeLists.txt
index bdb6293d4d..8cef6eab02 100644
--- a/src/gui/CMakeLists.txt
+++ b/src/gui/CMakeLists.txt
@@ -59,7 +59,6 @@ if (WIN32)
HINTS ENV BONJOUR_SDK_HOME
PATH_SUFFIXES "Lib/Win32")
endif()
-
elseif (${CMAKE_SYSTEM_NAME} MATCHES "Linux")
target_link_libraries (synergy dns_sd)
endif()
@@ -81,3 +80,34 @@ if (${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
elseif (${CMAKE_SYSTEM_NAME} MATCHES "Linux")
install (TARGETS synergy DESTINATION bin)
endif()
+
+if (WIN32)
+ if(Qt5_FOUND AND WIN32 AND TARGET Qt5::qmake AND NOT TARGET Qt5::windeployqt)
+ get_target_property(_qt5_qmake_location Qt5::qmake IMPORTED_LOCATION)
+
+ execute_process(
+ COMMAND "${_qt5_qmake_location}" -query QT_INSTALL_PREFIX
+ RESULT_VARIABLE return_code
+ OUTPUT_VARIABLE qt5_install_prefix
+ OUTPUT_STRIP_TRAILING_WHITESPACE
+ )
+
+ set(imported_location "${qt5_install_prefix}/bin/windeployqt.exe")
+
+ if(EXISTS ${imported_location})
+ add_executable(Qt5::windeployqt IMPORTED)
+
+ set_target_properties(Qt5::windeployqt PROPERTIES
+ IMPORTED_LOCATION ${imported_location}
+ )
+ endif()
+ endif()
+ if(TARGET Qt5::windeployqt)
+ # execute windeployqt in a tmp directory after build
+ add_custom_command(TARGET synergy
+ POST_BUILD
+ COMMAND set PATH=%PATH%$${qt5_install_prefix}/bin
+ COMMAND Qt5::windeployqt "$/$"
+ )
+ endif()
+endif()
\ No newline at end of file
diff --git a/src/gui/src/main.cpp b/src/gui/src/main.cpp
index cff969fd01..b372390d5d 100644
--- a/src/gui/src/main.cpp
+++ b/src/gui/src/main.cpp
@@ -98,7 +98,7 @@ int main(int argc, char* argv[])
app.switchTranslator(appConfig.language());
#ifdef SYNERGY_ENTERPRISE
- MainWindow mainWindow(settings, appConfig);
+ MainWindow mainWindow(appConfig);
#else
MainWindow mainWindow(appConfig, licenseManager);
#endif