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