From 4fccbc4b6a6ec8c73d7b241af8bb057436aff545 Mon Sep 17 00:00:00 2001 From: DonLakeFlyer Date: Thu, 11 Jun 2020 13:06:07 -0700 Subject: [PATCH] Windows build updates --- .appveyor.yml | 4 ++-- QGCCommon.pri | 2 +- QGCExternalLibs.pri | 18 ++++++++-------- QGCPostLinkCommon.pri | 33 ++++++++++++++--------------- QGCPostLinkInstaller.pri | 10 ++++----- deploy/qgroundcontrol_installer.nsi | 2 +- qgroundcontrol.pro | 16 +++++++------- 7 files changed, 42 insertions(+), 43 deletions(-) diff --git a/.appveyor.yml b/.appveyor.yml index 5ff4fdb26..e65de1209 100644 --- a/.appveyor.yml +++ b/.appveyor.yml @@ -45,7 +45,7 @@ install: build_script: - mkdir %SHADOW_BUILD_DIR% && cd %SHADOW_BUILD_DIR% && %QT_QMAKE_DIR%\qmake -r CONFIG+=%CONFIG% %APPVEYOR_BUILD_FOLDER%\qgroundcontrol.pro - cd %SHADOW_BUILD_DIR% && %QT_JOM_DIR%\jom - - if "%CONFIG%" EQU "installer" ( copy %SHADOW_BUILD_DIR%\qgc-app\QGroundControl-installer.exe %APPVEYOR_BUILD_FOLDER%\QGroundControl-installer.exe ) + - if "%CONFIG%" EQU "installer" ( copy %SHADOW_BUILD_DIR%\staging\QGroundControl-installer.exe %APPVEYOR_BUILD_FOLDER%\QGroundControl-installer.exe ) # Generate the source server information to embed in the PDB # Temporarily disabled while we try to figure out where this is located on appveyor image # - '"C:\Program Files (x86)\Windows Kits\10\Debuggers\x64\srcsrv\srctool.exe" -r -u "%SHADOW_BUILD_DIR%\qgc-app\qgroundcontrol.pdb" | grep qgroundcontrol | grep -v moc_ | grep -v libs\\mavlink | grep -v build_windows_install | python %APPVEYOR_BUILD_FOLDER%\deploy\genPDBsrcsrv.py > %SHADOW_BUILD_DIR%\qgc-app\qgroundcontrol.pdb.srcsrv' @@ -62,7 +62,7 @@ test_script: artifacts: - path: QGroundControl-installer.exe name: qgcinstaller - - path: build_windows_install\qgc-app\qgroundcontrol.pdb + - path: build_windows_install\staging\qgroundcontrol.pdb name: pdb deploy: diff --git a/QGCCommon.pri b/QGCCommon.pri index 910f25f4f..d43957e25 100644 --- a/QGCCommon.pri +++ b/QGCCommon.pri @@ -231,7 +231,7 @@ CONFIG(debug, debug|release) { # Setup our build directories -BASEDIR = $$IN_PWD +SOURCE_DIR = $$IN_PWD !iOSBuild { OBJECTS_DIR = $${OUT_PWD}/obj diff --git a/QGCExternalLibs.pri b/QGCExternalLibs.pri index 847d5551d..a49f5b029 100644 --- a/QGCExternalLibs.pri +++ b/QGCExternalLibs.pri @@ -45,7 +45,7 @@ isEmpty(MAVLINKPATH) { MAVLINKPATH = $$fromfile(user_config.pri, MAVLINKPATH) message($$sprintf("Using user-supplied mavlink path '%1' specified in user_config.pri", $$MAVLINKPATH)) } else { - MAVLINKPATH = $$BASEDIR/$$MAVLINKPATH_REL + MAVLINKPATH = $$SOURCE_DIR/$$MAVLINKPATH_REL } } @@ -115,22 +115,22 @@ SOURCES += \ # MacBuild { INCLUDEPATH += \ - $$BASEDIR/libs/Frameworks/SDL2.framework/Headers + $$SOURCE_DIR/libs/Frameworks/SDL2.framework/Headers LIBS += \ - -F$$BASEDIR/libs/Frameworks \ + -F$$SOURCE_DIR/libs/Frameworks \ -framework SDL2 } else:LinuxBuild { PKGCONFIG = sdl2 } else:WindowsBuild { - INCLUDEPATH += $$BASEDIR/libs/sdl2/msvc/include - INCLUDEPATH += $$BASEDIR/libs/OpenSSL/Windows/x64/include - LIBS += -L$$BASEDIR/libs/sdl2/msvc/lib/x64 + INCLUDEPATH += $$SOURCE_DIR/libs/sdl2/msvc/include + INCLUDEPATH += $$SOURCE_DIR/libs/OpenSSL/Windows/x64/include + LIBS += -L$$SOURCE_DIR/libs/sdl2/msvc/lib/x64 LIBS += -lSDL2 } # Include Android OpenSSL libs AndroidBuild { - include($$BASEDIR/libs/OpenSSL/android_openssl/openssl.pri) + include($$SOURCE_DIR/libs/OpenSSL/android_openssl/openssl.pri) message("ANDROID_EXTRA_LIBS") message($$ANDROID_TARGET_ARCH) message($$ANDROID_EXTRA_LIBS) @@ -157,10 +157,10 @@ contains(DEFINES, QGC_ENABLE_PAIRING) { AndroidBuild { contains(QT_ARCH, arm) { LIBS += $$ANDROID_EXTRA_LIBS - INCLUDEPATH += $$BASEDIR/libs/OpenSSL/Android/arch-armeabi-v7a/include + INCLUDEPATH += $$SOURCE_DIR/libs/OpenSSL/Android/arch-armeabi-v7a/include } else { LIBS += $$ANDROID_EXTRA_LIBS - INCLUDEPATH += $$BASEDIR/libs/OpenSSL/Android/arch-x86/include + INCLUDEPATH += $$SOURCE_DIR/libs/OpenSSL/Android/arch-x86/include } } } diff --git a/QGCPostLinkCommon.pri b/QGCPostLinkCommon.pri index 062249072..902c85073 100644 --- a/QGCPostLinkCommon.pri +++ b/QGCPostLinkCommon.pri @@ -24,51 +24,50 @@ MacBuild { # with the differences between post list command running in a shell script (XCode) versus a makefile (Qt Creator) macx-xcode { # SDL2 Framework - QMAKE_POST_LINK += && rsync -a --delete $$BASEDIR/libs/Frameworks/SDL2.Framework $BUILT_PRODUCTS_DIR/$${TARGET}.app/Contents/Frameworks + QMAKE_POST_LINK += && rsync -a --delete $$SOURCE_DIR/libs/Frameworks/SDL2.Framework $BUILT_PRODUCTS_DIR/$${TARGET}.app/Contents/Frameworks QMAKE_POST_LINK += && install_name_tool -change "@rpath/SDL2.framework/Versions/A/SDL2" "@executable_path/../Frameworks/SDL2.framework/Versions/A/SDL2" $BUILT_PRODUCTS_DIR/$${TARGET}.app/Contents/MacOS/$${TARGET} # AirMap contains (DEFINES, QGC_AIRMAP_ENABLED) { - QMAKE_POST_LINK += && rsync -a $$BASEDIR/libs/airmapd/macOS/$$AIRMAP_QT_PATH/* $BUILT_PRODUCTS_DIR/$${TARGET}.app/Contents/Frameworks/ + QMAKE_POST_LINK += && rsync -a $$SOURCE_DIR/libs/airmapd/macOS/$$AIRMAP_QT_PATH/* $BUILT_PRODUCTS_DIR/$${TARGET}.app/Contents/Frameworks/ QMAKE_POST_LINK += && install_name_tool -change "@rpath/libairmap-qt.0.0.1.dylib" "@executable_path/../Frameworks/libairmap-qt.0.0.1.dylib" $BUILT_PRODUCTS_DIR/$${TARGET}.app/Contents/MacOS/$${TARGET} } } else { # SDL2 Framework - QMAKE_POST_LINK += && rsync -a --delete $$BASEDIR/libs/Frameworks/SDL2.Framework $${TARGET}.app/Contents/Frameworks + QMAKE_POST_LINK += && rsync -a --delete $$SOURCE_DIR/libs/Frameworks/SDL2.Framework $${TARGET}.app/Contents/Frameworks QMAKE_POST_LINK += && install_name_tool -change "@rpath/SDL2.framework/Versions/A/SDL2" "@executable_path/../Frameworks/SDL2.framework/Versions/A/SDL2" $${TARGET}.app/Contents/MacOS/$${TARGET} # AirMap contains (DEFINES, QGC_AIRMAP_ENABLED) { - QMAKE_POST_LINK += && rsync -a $$BASEDIR/libs/airmapd/macOS/$$AIRMAP_QT_PATH/* $${TARGET}.app/Contents/Frameworks/ + QMAKE_POST_LINK += && rsync -a $$SOURCE_DIR/libs/airmapd/macOS/$$AIRMAP_QT_PATH/* $${TARGET}.app/Contents/Frameworks/ QMAKE_POST_LINK += && install_name_tool -change "@rpath/libairmap-qt.0.0.1.dylib" "@executable_path/../Frameworks/libairmap-qt.0.0.1.dylib" $${TARGET}.app/Contents/MacOS/$${TARGET} } } } WindowsBuild { - BASEDIR_WIN = $$replace(BASEDIR, "/", "\\") - DESTDIR_WIN = $$replace(DESTDIR, "/", "\\") + #BASEDIR_WIN = $$replace(SOURCE_DIR, "/", "\\") QT_BIN_DIR = $$dirname(QMAKE_QMAKE) # Copy dependencies DebugBuild: DLL_QT_DEBUGCHAR = "d" ReleaseBuild: DLL_QT_DEBUGCHAR = "" COPY_FILE_LIST = \ - $$BASEDIR\\libs\\sdl2\\msvc\\lib\\x64\\SDL2.dll \ - $$BASEDIR\\deploy\\libcrypto-1_1-x64.dll \ - $$BASEDIR_WIN\\deploy\\libssl-1_1-x64.dll + $$SOURCE_DIR\\libs\\sdl2\\msvc\\lib\\x64\\SDL2.dll \ + $$SOURCE_DIR\\deploy\\libcrypto-1_1-x64.dll \ + $$SOURCE_DIR\\deploy\\libssl-1_1-x64.dll for(COPY_FILE, COPY_FILE_LIST) { - QMAKE_POST_LINK += $$escape_expand(\\n) $$QMAKE_COPY \"$$COPY_FILE\" \"$$DESTDIR_WIN\" + QMAKE_POST_LINK += $$escape_expand(\\n) $$QMAKE_COPY \"$$COPY_FILE\" \"$$DESTDIR\" } ReleaseBuild { # Copy Visual Studio DLLs # Note that this is only done for release because the debugging versions of these DLLs cannot be redistributed. - QMAKE_POST_LINK += $$escape_expand(\\n) $$QMAKE_COPY \"$$BASEDIR\\deploy\\msvcp140.dll\" \"$$DESTDIR_WIN\" - QMAKE_POST_LINK += $$escape_expand(\\n) $$QMAKE_COPY \"$$BASEDIR\\deploy\\vcruntime140.dll\" \"$$DESTDIR_WIN\" + QMAKE_POST_LINK += $$escape_expand(\\n) $$QMAKE_COPY \"$$SOURCE_DIR\\deploy\\msvcp140.dll\" \"$$DESTDIR\" + QMAKE_POST_LINK += $$escape_expand(\\n) $$QMAKE_COPY \"$$SOURCE_DIR\\deploy\\vcruntime140.dll\" \"$$DESTDIR\" } - DEPLOY_TARGET = $$shell_quote($$shell_path($$DESTDIR_WIN\\$${TARGET}.exe)) - QMAKE_POST_LINK += $$escape_expand(\\n) $$QT_BIN_DIR\\windeployqt --qmldir=$${BASEDIR_WIN}\\src $${DEPLOY_TARGET} + DEPLOY_TARGET = $$shell_quote($$shell_path($$DESTDIR\\$${TARGET}.exe)) + QMAKE_POST_LINK += $$escape_expand(\\n) $$QT_BIN_DIR\\windeployqt --qmldir=$${SOURCE_DIR}\\src $${DEPLOY_TARGET} } LinuxBuild { @@ -146,9 +145,9 @@ LinuxBuild { # QGroundControl start script contains (CONFIG, QGC_DISABLE_CUSTOM_BUILD) | !exists($$PWD/custom/custom.pri) { - QMAKE_POST_LINK += && $$QMAKE_COPY $$BASEDIR/deploy/qgroundcontrol-start.sh $$DESTDIR - QMAKE_POST_LINK += && $$QMAKE_COPY $$BASEDIR/deploy/qgroundcontrol.desktop $$DESTDIR - QMAKE_POST_LINK += && $$QMAKE_COPY $$BASEDIR/resources/icons/qgroundcontrol.png $$DESTDIR + QMAKE_POST_LINK += && $$QMAKE_COPY $$SOURCE_DIR/deploy/qgroundcontrol-start.sh $$DESTDIR + QMAKE_POST_LINK += && $$QMAKE_COPY $$SOURCE_DIR/deploy/qgroundcontrol.desktop $$DESTDIR + QMAKE_POST_LINK += && $$QMAKE_COPY $$SOURCE_DIR/resources/icons/qgroundcontrol.png $$DESTDIR } else { include($$PWD/custom/custom_deploy.pri) } diff --git a/QGCPostLinkInstaller.pri b/QGCPostLinkInstaller.pri index f753dc63d..370fcc307 100644 --- a/QGCPostLinkInstaller.pri +++ b/QGCPostLinkInstaller.pri @@ -21,15 +21,15 @@ installer { # Relocate all dylibs so they can work under @executable_path/... # Copy the result into the app bundle # Make sure qgroundcontrol can find them - QMAKE_POST_LINK += && $$BASEDIR/tools/prepare_gstreamer_framework.sh $${OUT_PWD}/gstwork/ $${TARGET}.app $${TARGET} + QMAKE_POST_LINK += && $$SOURCE_DIR/tools/prepare_gstreamer_framework.sh $${OUT_PWD}/gstwork/ $${TARGET}.app $${TARGET} } QMAKE_POST_LINK += && echo macdeployqt - QMAKE_POST_LINK += && $$dirname(QMAKE_QMAKE)/macdeployqt $${TARGET}.app -appstore-compliant -verbose=1 -qmldir=$${BASEDIR}/src + QMAKE_POST_LINK += && $$dirname(QMAKE_QMAKE)/macdeployqt $${TARGET}.app -appstore-compliant -verbose=1 -qmldir=$${SOURCE_DIR}/src # macdeployqt is missing some relocations once in a while. "Fix" it: QMAKE_POST_LINK += && echo osxrelocator - QMAKE_POST_LINK += && python $$BASEDIR/tools/osxrelocator.py $${TARGET}.app/Contents @rpath @executable_path/../Frameworks -r > /dev/null 2>&1 + QMAKE_POST_LINK += && python $$SOURCE_DIR/tools/osxrelocator.py $${TARGET}.app/Contents @rpath @executable_path/../Frameworks -r > /dev/null 2>&1 # Create package QMAKE_POST_LINK += && echo hdiutil @@ -41,7 +41,7 @@ installer { QMAKE_POST_LINK += && rm /tmp/tmp.dmg } WindowsBuild { - QMAKE_POST_LINK += $$escape_expand(\\n) cd $$BASEDIR_WIN && $$quote("\"C:\\Program Files \(x86\)\\NSIS\\makensis.exe\"" $$(QGC_NSIS_INSTALLER_PARAMETERS) /DINSTALLER_ICON="\"$${QGC_INSTALLER_ICON}\"" /DHEADER_BITMAP="\"$${QGC_INSTALLER_HEADER_BITMAP}\"" /DAPPNAME="\"$${QGC_APP_NAME}\"" /DEXENAME="\"$${TARGET}\"" /DORGNAME="\"$${QGC_ORG_NAME}\"" /DDESTDIR=$${DESTDIR} /NOCD "\"/XOutFile $${DESTDIR_WIN}\\$${TARGET}-installer.exe\"" "$$BASEDIR_WIN\\deploy\\qgroundcontrol_installer.nsi") + QMAKE_POST_LINK += $$escape_expand(\\n) $$quote("\"C:\\Program Files \(x86\)\\NSIS\\makensis.exe\"" $$(QGC_NSIS_INSTALLER_PARAMETERS) /DDRIVER_MSI="$$SOURCE_DIR\\deploy\\driver.msi" /DINSTALLER_ICON="\"$${QGC_INSTALLER_ICON}\"" /DHEADER_BITMAP="\"$${QGC_INSTALLER_HEADER_BITMAP}\"" /DAPPNAME="\"$${QGC_APP_NAME}\"" /DEXENAME="\"$${TARGET}\"" /DORGNAME="\"$${QGC_ORG_NAME}\"" /DDESTDIR=$${DESTDIR} /NOCD "\"/XOutFile $${DESTDIR}\\$${TARGET}-installer.exe\"" "$$SOURCE_DIR\\deploy\\qgroundcontrol_installer.nsi") OTHER_FILES += deploy/qgroundcontrol_installer.nsi } LinuxBuild { @@ -52,7 +52,7 @@ installer { AndroidBuild { QMAKE_POST_LINK += && mkdir -p package QMAKE_POST_LINK += && make install INSTALL_ROOT=android-build/ - QMAKE_POST_LINK += && androiddeployqt --input android-libQGroundControl.so-deployment-settings.json --output android-build --deployment bundled --gradle --sign $${BASEDIR}/android/android_release.keystore dagar --storepass $$(ANDROID_STOREPASS) + QMAKE_POST_LINK += && androiddeployqt --input android-libQGroundControl.so-deployment-settings.json --output android-build --deployment bundled --gradle --sign $${SOURCE_DIR}/android/android_release.keystore dagar --storepass $$(ANDROID_STOREPASS) contains(QT_ARCH, arm) { QGC_APK_BITNESS = "32" } else:contains(QT_ARCH, arm64) { diff --git a/deploy/qgroundcontrol_installer.nsi b/deploy/qgroundcontrol_installer.nsi index b3a8a3c83..4d5cc4e1f 100644 --- a/deploy/qgroundcontrol_installer.nsi +++ b/deploy/qgroundcontrol_installer.nsi @@ -85,7 +85,7 @@ doInstall: ; Driver location is http://firmware.ardupilot.org/Tools/MissionPlanner/driver.msi ; Whenever this driver is updated in the repo QGCCURRENTDRIVERVERSION must be bumped by 1 - File deploy\driver.msi + File ${DRIVER_MSI} WriteUninstaller $INSTDIR\${EXENAME}-Uninstall.exe WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" "DisplayName" "${APPNAME}" diff --git a/qgroundcontrol.pro b/qgroundcontrol.pro index 60293a11d..023be1903 100644 --- a/qgroundcontrol.pro +++ b/qgroundcontrol.pro @@ -37,7 +37,7 @@ QML_IMPORT_PATH += $$PWD/src/QmlControls MacBuild { QMAKE_INFO_PLIST = Custom-Info.plist - ICON = $${BASEDIR}/resources/icons/macx.icns + ICON = $${SOURCE_DIR}/resources/icons/macx.icns OTHER_FILES += Custom-Info.plist LIBS += -framework ApplicationServices } @@ -62,8 +62,8 @@ QGC_APP_DESCRIPTION = "Open source ground control app provided by QGroundControl QGC_APP_COPYRIGHT = "Copyright (C) 2019 QGroundControl Development Team. All rights reserved." WindowsBuild { - QGC_INSTALLER_ICON = "WindowsQGC.ico" - QGC_INSTALLER_HEADER_BITMAP = "installheader.bmp" + QGC_INSTALLER_ICON = "$$SOURCE_DIR\\WindowsQGC.ico" + QGC_INSTALLER_HEADER_BITMAP = "$$SOURCE_DIR\\installheader.bmp" } # Load additional config flags from user_config.pri @@ -120,17 +120,17 @@ iOSBuild { ForAppStore { message(App Store Build) #-- Create official, versioned Info.plist - APP_STORE = $$system(cd $${BASEDIR} && $${BASEDIR}/tools/update_ios_version.sh $${BASEDIR}/ios/iOSForAppStore-Info-Source.plist $${BASEDIR}/ios/iOSForAppStore-Info.plist) + APP_STORE = $$system(cd $${SOURCE_DIR} && $${SOURCE_DIR}/tools/update_ios_version.sh $${SOURCE_DIR}/ios/iOSForAppStore-Info-Source.plist $${SOURCE_DIR}/ios/iOSForAppStore-Info.plist) APP_ERROR = $$find(APP_STORE, "Error") count(APP_ERROR, 1) { error("Error building .plist file. 'ForAppStore' builds are only possible through the official build system.") } QT += qml-private - QMAKE_INFO_PLIST = $${BASEDIR}/ios/iOSForAppStore-Info.plist - OTHER_FILES += $${BASEDIR}/ios/iOSForAppStore-Info.plist + QMAKE_INFO_PLIST = $${SOURCE_DIR}/ios/iOSForAppStore-Info.plist + OTHER_FILES += $${SOURCE_DIR}/ios/iOSForAppStore-Info.plist } else { - QMAKE_INFO_PLIST = $${BASEDIR}/ios/iOS-Info.plist - OTHER_FILES += $${BASEDIR}/ios/iOS-Info.plist + QMAKE_INFO_PLIST = $${SOURCE_DIR}/ios/iOS-Info.plist + OTHER_FILES += $${SOURCE_DIR}/ios/iOS-Info.plist } QMAKE_ASSET_CATALOGS += ios/Images.xcassets BUNDLE.files = ios/QGCLaunchScreen.xib $$QMAKE_INFO_PLIST -- 2.22.0