From 833b72528518577b71cce729ffa9c39aecddb124 Mon Sep 17 00:00:00 2001 From: Alec Leamas Date: Fri, 11 Oct 2019 22:08:52 +0200 Subject: [PATCH 01/31] Revert to d474c8f, before merging #35 --- .circleci/config.yml | 82 --- .gitignore | 2 +- .travis.yml | 58 -- CMakeLists.txt | 6 +- appveyor.yml | 39 +- buildosx/Info.plist.in | 49 -- buildosx/InstallOSX/squiddio_pi.pkgproj.in | 15 +- buildosx/MainMenu.xib | 638 --------------------- buildosx/README.txt | 30 - buildosx/background.png | Bin 258807 -> 0 bytes buildosx/create-dmg | 230 -------- buildosx/support/AdiumApplescriptRunner | Bin 18612 -> 0 bytes buildosx/support/dmg-license.py | 163 ------ buildosx/support/template.applescript | 79 --- ci/appveyor-upload.sh | 28 - ci/bintray.js | 58 -- ci/circleci-build-debian.sh | 21 - ci/circleci-build-fedora.sh | 13 - ci/circleci-build-flatpak.sh | 46 -- ci/circleci-build-macos.sh | 28 - ci/circleci-build-mingw.sh | 17 - ci/circleci-upload.sh | 46 -- ci/control.trusty | 30 - ci/control.xenial | 32 -- ci/docker-build-fedora.sh | 19 - ci/docker-build-flatpak.sh | 20 - ci/docker-build-mingw.sh | 20 - ci/opencpn-deps.spec | 66 --- ci/opencpn-fedora.spec | 38 -- ci/toolchain.cmake | 19 - ci/travis-build-debian.sh | 19 - ci/travis-build-fedora.sh | 33 -- ci/travis-build-flatpak.sh | 33 -- ci/travis-build-mingw.sh | 32 -- ci/travis-build-osx.sh | 51 -- ci/travis-upload.sh | 36 -- cmake/PluginConfigure.cmake | 37 +- cmake/PluginInstall.cmake | 121 +--- cmake/PluginPackage.cmake | 110 ++-- cmake/version.h.in | 7 - src/icons.cpp | 11 +- src/icons.h | 3 +- src/images/logo_images/plugin_logo.png | Bin 4254 -> 0 bytes src/images/plugin_logo.png | Bin 474 -> 4254 bytes src/images/ramp_grn.png | Bin 1400 -> 0 bytes src/squiddio_pi.cpp | 14 +- 46 files changed, 116 insertions(+), 2283 deletions(-) delete mode 100644 .circleci/config.yml delete mode 100644 .travis.yml delete mode 100644 buildosx/Info.plist.in delete mode 100644 buildosx/MainMenu.xib delete mode 100644 buildosx/README.txt delete mode 100644 buildosx/background.png delete mode 100644 buildosx/create-dmg delete mode 100644 buildosx/support/AdiumApplescriptRunner delete mode 100644 buildosx/support/dmg-license.py delete mode 100644 buildosx/support/template.applescript delete mode 100755 ci/appveyor-upload.sh delete mode 100755 ci/bintray.js delete mode 100755 ci/circleci-build-debian.sh delete mode 100755 ci/circleci-build-fedora.sh delete mode 100755 ci/circleci-build-flatpak.sh delete mode 100755 ci/circleci-build-macos.sh delete mode 100755 ci/circleci-build-mingw.sh delete mode 100755 ci/circleci-upload.sh delete mode 100755 ci/control.trusty delete mode 100755 ci/control.xenial delete mode 100755 ci/docker-build-fedora.sh delete mode 100755 ci/docker-build-flatpak.sh delete mode 100755 ci/docker-build-mingw.sh delete mode 100755 ci/opencpn-deps.spec delete mode 100755 ci/opencpn-fedora.spec delete mode 100755 ci/toolchain.cmake delete mode 100755 ci/travis-build-debian.sh delete mode 100755 ci/travis-build-fedora.sh delete mode 100755 ci/travis-build-flatpak.sh delete mode 100755 ci/travis-build-mingw.sh delete mode 100755 ci/travis-build-osx.sh delete mode 100755 ci/travis-upload.sh delete mode 100644 src/images/logo_images/plugin_logo.png delete mode 100644 src/images/ramp_grn.png diff --git a/.circleci/config.yml b/.circleci/config.yml deleted file mode 100644 index 1790e44..0000000 --- a/.circleci/config.yml +++ /dev/null @@ -1,82 +0,0 @@ ---- -version: 2 -jobs: - build-debian: - docker: - - image: circleci/buildpack-deps:xenial-scm - environment: - - OCPN_TARGET: xenial - steps: - - checkout - - run: > - echo "deb-src http://us.archive.ubuntu.com/ubuntu/ xenial main" - | sudo tee -a /etc/apt/sources.list - - run: > - echo "deb-src http://us.archive.ubuntu.com/ubuntu/ xenial-updates main" - | sudo tee -a /etc/apt/sources.list - - run: cat /etc/apt/sources.list - - run: ci/circleci-build-debian.sh - - run: ci/circleci-upload.sh - build-flatpak: - machine: - image: circleci/classic:201808-01 - environment: - - OCPN_TARGET: flatpak - steps: - - checkout - - run: ci/circleci-build-flatpak.sh - - run: ci/circleci-upload.sh - build-fedora: - docker: - - image: fedora:29 - environment: - - OCPN_TARGET: fedora - steps: - - run: su -c "dnf install -q -y git openssh-clients openssh-server" - - checkout - - run: ci/circleci-build-fedora.sh - - run: ci/circleci-upload.sh - build-mingw: - docker: - - image: fedora:29 - environment: - - OCPN_TARGET: mingw - steps: - - run: su -c "dnf install -q -y git openssh-clients openssh-server" - - checkout - - run: ci/circleci-build-mingw.sh - - run: ci/circleci-upload.sh -# build-macos: -# macos: -# xcode: "10.0.0" -# environment: -# - OCPN_TARGET: macos -# steps: -# - checkout -# - run: ci/circleci-build-macos.sh -# - run: ci/circleci-upload.sh - -workflows: - version: 2 - build_all: - jobs: - - build-debian: - filters: - branches: - only: master - - build-flatpak: - filters: - branches: - only: master - - build-fedora: - filters: - branches: - only: master - # - build-macos: - # filters: - # branches: - # only: master - - build-mingw: - filters: - branches: - only: master diff --git a/.gitignore b/.gitignore index 7e1555f..394c138 100644 --- a/.gitignore +++ b/.gitignore @@ -2,7 +2,7 @@ cscope.files tags index.sh include/version.h -build/ +build Debug cmake CMakeFiles diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 9274883..0000000 --- a/.travis.yml +++ /dev/null @@ -1,58 +0,0 @@ -# ov50 Linux/OSX build - courtesy to https://github.com/seandepagnier -language: cpp -matrix: - include: - - env: - - OCPN_TARGET=xenial - dist: xenial - compiler: gcc - script: - - sh ./ci/travis-build-debian.sh - - - env: - - OCPN_TARGET=trusty - dist: trusty - compiler: gcc - script: - - sh ./ci/travis-build-debian.sh - - - env: - - OCPN_TARGET=osx - os: osx - compiler: clang - script: - - bash ./ci/travis-build-osx.sh - -script: - - if [[ "${COVERITY_SCAN_BRANCH}" == 1 ]]; - then - echo "Don't build on coverty_scan branch."; - exit 0; - fi - - ls -l; - -notifications: - email: false -git: - depth: 10 -before_install: -- if [ "$CXX" = "g++" ]; then export CXX="g++-6" CC="gcc-6"; fi -addons: - apt: - sources: - - ubuntu-toolchain-r-test - packages: - - gcc-6 - - g++-6 -deploy: -- provider: releases - api_key: - secure: "fAXQOEZd83GYDVDw+KOHEJwKWAD/ILVlT9vWl6FNQkjltIBVp0PpbkgRr/fQcGrQno7UMUZdPm+OIbWAq+0d675SoeZ8NFjGd884SzjslWauB8kRG7iK72Y0EAYqRHl83XqdspuCcBE24fU95C87DbQdhp/zmKi+NB8n3m0X4ifw2G6CNpUdaj9Oxq7dDIQikUTynmmIlTMXtNLr8aQRBihLVpMoIuWLyjskyxPuRU+jFkM0xAeyqy246ZFg0eK2HTIqhlSA/HJHlPHF0gBDxnjca5ZIGYC7s5rr03ghSIMAr6nLHCmAelWPp3+znwTzJ5mGv+4vKwOvOi3EMpCDtsDbh0ybMkSr3tdJzJ9TEsgZ6MIqC2X9bwKtQcW/cmSeJmmpUVhaIZ7KjYS3cIxlQ+jU0aIZupsf0P73rovTfNWuC919H9Ggu/Mc3rELwBUZ1FctxDFZ13cM1gnpbAZXA0xZGGK0AV3Y9M1BQ/RBcnez2OT7DAwYofYe2VAnvMJbYkJUKVVMsKZqPF+9fXGYhtVTpKw3j89nE98xRkIKiWQBmUE6x5XPSgxsI1CaDBIuZiXDO/IMh2v3HGiFlOC8qAuV6Z1vdHbaIFtzPkVEZ1miMBbD3XPki3Crl4kVXtGrCPAl6uH3YVrats9CL6shfgwzsS52zBacQxQu7RCrT6U=" - file_glob: true - file: "$TRAVIS_BUILD_DIR/build/*.{deb,rpm,dmg,txz,pkg,pkg.tar.xz}" - skip_cleanup: true - on: - repo: mauroc/squiddio_pi - tags: true - all_branches: true - diff --git a/CMakeLists.txt b/CMakeLists.txt index e3565ef..049815b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -23,18 +23,16 @@ CMAKE_MINIMUM_REQUIRED(VERSION 2.6.2) PROJECT(squiddio_pi) -SET(PARENT "opencpn") SET(PACKAGE_NAME squiddio_pi) -SET(PACKAGE_FILE_NAME "opencpn-plugin-squiddio") SET(VERBOSE_NAME Squiddio) SET(TITLE_NAME SQUIDDIO) SET(CPACK_PACKAGE_CONTACT "Mauro Calvi") SET(VERSION_MAJOR "1") SET(VERSION_MINOR "0") -SET(VERSION_PATCH "12") -SET(PLUGIN_VERSION_DATE "2019/10/10") +SET(VERSION_PATCH "4") +SET(VERSION_DATE "19/05/2019") SET(OCPN_MIN_VERSION "ov50") #SET(CMAKE_BUILD_TYPE Debug) diff --git a/appveyor.yml b/appveyor.yml index 4ad3a77..dfbddb3 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -1,12 +1,11 @@ - +clone_folder: c:\project\squiddio_pi +shallow_clone: true image: - Visual Studio 2017 -clone_folder: c:\project\squiddio_pi -shallow_clone: false platform: # - x64 - - Win32 +- Win32 configuration: Release test: OFF @@ -14,27 +13,28 @@ test: OFF install: - call "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvars32.bat" -# sent environment variables for wxWidgets + # sent environment variables for wxWidgets - set WXWIN=C:\wxWidgets-3.1.2 - set wxWidgets_ROOT_DIR=%WXWIN% - set wxWidgets_LIB_DIR=%WXWIN%\lib\vc_dll - cmd: SET PATH=%PATH%;%WXWIN%;%wxWidgets_LIB_DIR%;C:\Program Files (x86)\Poedit\Gettexttools\bin; -# install dependencies: + # install dependencies: - choco install poedit + - ps: Start-FileDownload http://opencpn.navnux.org/build_deps/nsis-3.04-setup.exe - cmd: nsis-3.04-setup.exe /S -# Download and unzip wxwidgets + # Download and unzip wxwidgets - ps: Start-FileDownload http://opencpn.navnux.org/build_deps/wxWidgets-3.1.2.7z - cmd: 7z x wxWidgets-3.1.2.7z -o%WXWIN% > null -#- set #Use only while debugging - it reveals the deploy token set on Appveyor -#- cmake --help + - set before_build: - cd c:\project\squiddio_pi - - rm -rf build && mkdir build && cd build + - mkdir build + - cd build - ps: Start-FileDownload https://downloads.sourceforge.net/project/opencpnplugins/opencpn_lib/4.99.1405-vc141_xp/opencpn.lib - ps: Start-FileDownload http://opencpn.navnux.org/build_deps/OpenCPN_buildwin-4.99a.7z - cmd: 7z x -y OpenCPN_buildwin-4.99a.7z -oc:\project\squiddio_pi\buildwin @@ -42,22 +42,19 @@ before_build: build_script: - cmake --build . --target package --config release + # --target package doesn't work because of nsis not correctly installed -# Artifacts Configuration # artifacts: - path: 'build\*.exe' - name: installer -# Deploy to GitHub Releases -deploy: + - path: 'build\*.exe' + name: installer +deploy: + description: 'release created by AppVeyor CI' provider: GitHub - auth_token: - secure: 4l9NTrQyvKVqzBPAT3ejCSZhllJXWaI/QcFWTBHueU3YEqLRAZM3+LinoOBnMcf2 #Mauro's encryption + auth_token: '%GitHub_auth_token%' artifact: installer,portable draft: true prerelease: true -# tag: $(APPVEYOR_REPO_TAG_NAME) # insert version name on: - configuration: Release # Debug contains non-redist MS DLLs - APPVEYOR_REPO_TAG: true # deploy on tag push only -# branch: master # release from master branch only + appveyor_repo_tag: true # deploy on tag push only + configuration: Release # Debug contains non-redist MS DLLs diff --git a/buildosx/Info.plist.in b/buildosx/Info.plist.in deleted file mode 100644 index 7726421..0000000 --- a/buildosx/Info.plist.in +++ /dev/null @@ -1,49 +0,0 @@ - - - - - CFBundleDevelopmentRegion - English - CFBundleExecutable - ${MACOSX_BUNDLE_EXECUTABLE_NAME} - CFBundleGetInfoString - ${MACOSX_BUNDLE_INFO_STRING} - CFBundleIconFile - ${MACOSX_BUNDLE_ICON_FILE} - CFBundleIdentifier - ${MACOSX_BUNDLE_GUI_IDENTIFIER} - CFBundleInfoDictionaryVersion - 6.0 - CFBundleLongVersionString - ${MACOSX_BUNDLE_LONG_VERSION_STRING} - CFBundleName - ${MACOSX_BUNDLE_BUNDLE_NAME} - CFBundlePackageType - APPL - CFBundleShortVersionString - ${MACOSX_BUNDLE_SHORT_VERSION_STRING} - CFBundleSignature - ???? - CFBundleVersion - ${MACOSX_BUNDLE_BUNDLE_VERSION} - CSResourcesFileMapped - - LSRequiresCarbon - - NSHumanReadableCopyright - ${MACOSX_BUNDLE_COPYRIGHT} - - NSPrincipalClass - NSApplication - NSRequiresAquaSystemAppearance - - - NSHighResolutionCapable - - - NSAppTransportSecurity - - NSAllowsArbitraryLoads - - - diff --git a/buildosx/InstallOSX/squiddio_pi.pkgproj.in b/buildosx/InstallOSX/squiddio_pi.pkgproj.in index 90204d2..4896b18 100755 --- a/buildosx/InstallOSX/squiddio_pi.pkgproj.in +++ b/buildosx/InstallOSX/squiddio_pi.pkgproj.in @@ -774,7 +774,18 @@ PROJECT_COMMENTS NOTES - ITY5bfgEHsABqkzibS60y9W3so4eht4ociqAE7H0gnFA/3h3aVXyaZZvUhSQF8XwaWgTDfgxJOvPvOsY+mYNN5GOOSFd0YwRxKA8ys8TPqB2T2MkQ5lt9+5pJ52VkJ8cR1Ro688k5NEZmavke29QHVuzOfaNWPqAx1Xfkp/Vnbw1ApB5mQiNwQKtfkI8dZDtP/IFYHSF8+2gRuCe9i/Ed+yUfpojRSb15X/qs2+l57VOKrR//J21iqZ+hYRQKzfqs6QOyb2B822ABJuI6kESzVWg2vtO1mI4XD3dv6BIaWnzHiwIk8nbI0TAuYTR/Yze4jACqSa6ud9I1KLT3trbw9ZFRODiFniSGIjqEpZG5S1FMK7TLK0+a8Lk5GHqDJn5T+mVxljSPO3rcMtWqa51uar4FFyUVgPL1bBd5FgsRkRNulV5O6I89rDmtgoc0UzUBy7WrO/JrT2AEoe4WiYM7BYxjRHTcW1+dHGr/y1CU3sIvcR/0BdZuTDfET5NV5zl6AabJUcyi5M7p2wmW0In2OAJzCWuRGthTmAx9xeUiXAbNzSCpkozKSZDRJnTLpvyBm4RzsqiWZKoKgFRP2AFpkh6E23e9REdKih5nTkD19aEKj7uXFViEojAQ13RqcchksQyzZ33u0mgJ2i2aX0x8eFG8qbYXMgB6t7pMrmq9tY= + + PCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1M + IDQuMDEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQv + c3RyaWN0LmR0ZCI+CjxodG1sPgo8aGVhZD4KPG1ldGEgaHR0cC1l + cXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7 + IGNoYXJzZXQ9VVRGLTgiPgo8bWV0YSBodHRwLWVxdWl2PSJDb250 + ZW50LVN0eWxlLVR5cGUiIGNvbnRlbnQ9InRleHQvY3NzIj4KPHRp + dGxlPjwvdGl0bGU+CjxtZXRhIG5hbWU9IkdlbmVyYXRvciIgY29u + dGVudD0iQ29jb2EgSFRNTCBXcml0ZXIiPgo8bWV0YSBuYW1lPSJD + b2NvYVZlcnNpb24iIGNvbnRlbnQ9IjExMzguNTEiPgo8c3R5bGUg + dHlwZT0idGV4dC9jc3MiPgo8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5 + Pgo8L2JvZHk+CjwvaHRtbD4K PROJECT_PRESENTATION @@ -1438,7 +1449,7 @@ NAME - ${PACKAGE_FILE_NAME}_${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}-${OCPN_MIN_VERSION} + ${VERBOSE_NAME}-Plugin_${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH} REFERENCE_FOLDER_PATH . diff --git a/buildosx/MainMenu.xib b/buildosx/MainMenu.xib deleted file mode 100644 index 8d4147a..0000000 --- a/buildosx/MainMenu.xib +++ /dev/null @@ -1,638 +0,0 @@ - - - - 1050 - 9F33 - 677 - 949.34 - 352.00 - - YES - - - - YES - com.apple.InterfaceBuilder.CarbonPlugin - - - YES - - YES - - - YES - - - - YES - - Menu - - YES - - - NewApplication - - 1048576 - 2147483647 - - NSMenuCheckmark - 1623195648 - - - NSMenuMixedState - 1623195648 - - submenuAction: - - NewApplication - - YES - - - About NewApplication - - 2147483647 - - - About NewApplication - - - - - - - - - - - - - - - - - - - - - - - YES - YES - - - 1048576 - 2147483647 - - - - - - - - - - - - - - - - - - - - - - - - - - UHJlZmVyZW5jZXPigKY - , - 1048576 - 2147483647 - - - UHJlZmVyZW5jZXPigKY - , - - - - - - - - - - - - - - - - - - - - - - YES - YES - - - 1048576 - 2147483647 - - - - - - - - - - - - - - - - - - - - - - - - - - Services - - 1048576 - 2147483647 - - - submenuAction: - - Services - - YES - - Services - - - - - - - - - Services - - - - - - - - - - - - - - - - - - - - - - - YES - YES - - - 1048576 - 2147483647 - - - - - - - - - - - - - - - - - - - - - - - - - - Hide NewApplication - h - 1048576 - 2147483647 - - - Hide NewApplication - h - - - - - - - - - - - - - - - - - - - - - - Hide Others - h - 1572864 - 2147483647 - - - Hide Others - h - - - - - - - - - - - - - - - - - - - - - - Show All - - 1048576 - 2147483647 - - - Show All - - - - - - - - - - - - - - - - - - - - - - - YES - YES - - - 1048576 - 2147483647 - - - - - - - - - - - - - - - - - - - - - - - - - - Quit NewApplication - q - 1048576 - 2147483647 - - - Quit NewApplication - q - - - - - - - - - - - - - - - - - - - - - - _NSAppleMenu - - NewApplication - - - - - - - - - NewApplication - - - - - - - - - - - - - - - - - - - - - - - _NSMainMenu - - Menu - - - - - - - - - - - - YES - - - - YES - - 0 - - YES - - - - - - 29 - - - YES - - - - MainMenu - - - 182 - - - YES - - - - - - 181 - - - YES - - - - - - - - - - - - - - - - 183 - - - - - 194 - - - - - 195 - - - - - 196 - - - - - 197 - - - - - 198 - - - - - 199 - - - YES - - - - - - 200 - - - YES - - - - - 202 - - - - - 203 - - - - - 204 - - - - - 205 - - - - - - - YES - - YES - 181.IBEditorWindowLastContentRect - 181.IBPluginDependency - 181.editorWindowContentRectSynchronizationRect - 182.IBPluginDependency - 183.IBPluginDependency - 194.IBPluginDependency - 195.IBPluginDependency - 196.IBPluginDependency - 197.IBPluginDependency - 198.IBPluginDependency - 199.IBPluginDependency - 200.IBPluginDependency - 200.editorWindowContentRectSynchronizationRect - 202.IBPluginDependency - 203.IBPluginDependency - 204.IBPluginDependency - 205.IBPluginDependency - 29.IBEditorWindowLastContentRect - 29.IBPluginDependency - 29.editorWindowContentRectSynchronizationRect - - - YES - {{12, 499}, {245, 183}} - com.apple.InterfaceBuilder.CarbonPlugin - {{27, 799}, {245, 183}} - com.apple.InterfaceBuilder.CarbonPlugin - com.apple.InterfaceBuilder.CarbonPlugin - com.apple.InterfaceBuilder.CarbonPlugin - com.apple.InterfaceBuilder.CarbonPlugin - com.apple.InterfaceBuilder.CarbonPlugin - com.apple.InterfaceBuilder.CarbonPlugin - com.apple.InterfaceBuilder.CarbonPlugin - com.apple.InterfaceBuilder.CarbonPlugin - com.apple.InterfaceBuilder.CarbonPlugin - {{272, 916}, {64, 6}} - com.apple.InterfaceBuilder.CarbonPlugin - com.apple.InterfaceBuilder.CarbonPlugin - com.apple.InterfaceBuilder.CarbonPlugin - com.apple.InterfaceBuilder.CarbonPlugin - {{0, 682}, {156, 20}} - com.apple.InterfaceBuilder.CarbonPlugin - {{15, 982}, {478, 20}} - - - - YES - - YES - - - YES - - - - - YES - - YES - - - YES - - - - 322 - - - 0 - build_xcode/OpenCPN.xcodeproj - 3 - - diff --git a/buildosx/README.txt b/buildosx/README.txt deleted file mode 100644 index 4ad01f9..0000000 --- a/buildosx/README.txt +++ /dev/null @@ -1,30 +0,0 @@ ----------------------------------------------------------------------- -1. Overview ----------------------------------------------------------------------- - -a. Opencpn was built with the following objectives in mind. - - i. Intended use as primary navigation interface for vessels - with full-time helm-visible navigational suites. - Other tools may be better for offline route planning, tide - and current prediction, online logging, etc. - ii. Quick startup and shutdown. - iii. Those and only those toolbar buttons really needed for - daily operation. - iv. Portability, thus wxWidgets core components. Currently - tested and in production use on W98, XP, OSx, and Linux. - v. Conventional ( i.e. popular and modern ) chart format - support. In the real world, this means BSB format raster - charts, and S57ENC format vector charts. - - - - And, of course, opencpn is all GPL'ed (or equivalent) - Open Source code. - - - Personal Note: - Opencpn is in primary daily use as the navigation package aboard - M/V Dyad, a 48 ft trawler yacht cruising from Newfoundland to the - Bahamas yearly. - diff --git a/buildosx/background.png b/buildosx/background.png deleted file mode 100644 index 43575cc1f02d81293c4fc39a58325a4052e19a3c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 258807 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 z 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%0DlPj% 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 diff --git a/buildosx/create-dmg b/buildosx/create-dmg deleted file mode 100644 index 3e55dd9..0000000 --- a/buildosx/create-dmg +++ /dev/null @@ -1,230 +0,0 @@ -#! /bin/bash - -# Create a read-only disk image of the contents of a folder - -set -e; - -function pure_version() { - echo '1.0.0.2' -} - -function version() { - echo "create-dmg $(pure_version)" -} - -function usage() { - version - echo "Creates a fancy DMG file." - echo "Usage: $(basename $0) options... image.dmg source_folder" - echo "All contents of source_folder will be copied into the disk image." - echo "Options:" - echo " --volname name" - echo " set volume name (displayed in the Finder sidebar and window title)" - echo " --volicon icon.icns" - echo " set volume icon" - echo " --background pic.png" - echo " set folder background image (provide png, gif, jpg)" - echo " --window-pos x y" - echo " set position the folder window" - echo " --window-size width height" - echo " set size of the folder window" - echo " --text-size text_size" - echo " set window text size (10-16)" - echo " --icon-size icon_size" - echo " set window icons size (up to 128)" - echo " --icon file_name x y" - echo " set position of the file's icon" - echo " --hide-extension file_name" - echo " hide the extension of file" - echo " --custom-icon file_name custom_icon_or_sample_file x y" - echo " set position and custom icon" - echo " --app-drop-link x y" - echo " make a drop link to Applications, at location x,y" - echo " --eula eula_file" - echo " attach a license file to the dmg" - echo " --no-internet-enable" - echo " disable automatic mount©" - echo " --version show tool version number" - echo " -h, --help display this help" - exit 0 -} - -WINX=10 -WINY=60 -WINW=500 -WINH=350 -ICON_SIZE=128 -TEXT_SIZE=16 - -while test "${1:0:1}" = "-"; do - case $1 in - --volname) - VOLUME_NAME="$2" - shift; shift;; - --volicon) - VOLUME_ICON_FILE="$2" - shift; shift;; - --background) - BACKGROUND_FILE="$2" - BACKGROUND_FILE_NAME="$(basename $BACKGROUND_FILE)" - BACKGROUND_CLAUSE="set background picture of opts to file \".background:$BACKGROUND_FILE_NAME\"" - REPOSITION_HIDDEN_FILES_CLAUSE="set position of every item to {theBottomRightX + 100, 100}" - shift; shift;; - --icon-size) - ICON_SIZE="$2" - shift; shift;; - --text-size) - TEXT_SIZE="$2" - shift; shift;; - --window-pos) - WINX=$2; WINY=$3 - shift; shift; shift;; - --window-size) - WINW=$2; WINH=$3 - shift; shift; shift;; - --icon) - POSITION_CLAUSE="${POSITION_CLAUSE}set position of item \"$2\" to {$3, $4} -" - shift; shift; shift; shift;; - --hide-extension) - HIDING_CLAUSE="${HIDING_CLAUSE}set the extension hidden of item \"$2\" to true -" - shift; shift;; - --custom-icon) - shift; shift; shift; shift; shift;; - -h | --help) - usage;; - --version) - version; exit 0;; - --pure-version) - pure_version; exit 0;; - --app-drop-link) - APPLICATION_LINK=$2 - APPLICATION_CLAUSE="set position of item \"Applications\" to {$2, $3} -" - shift; shift; shift;; - --eula) - EULA_RSRC=$2 - shift; shift;; - --no-internet-enable) - NOINTERNET=1 - shift;; - -*) - echo "Unknown option $1. Run with --help for help." - exit 1;; - esac -done - -test -z "$2" && { - echo "Not enough arguments. Invoke with --help for help." - exit 1 -} - -SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" -DMG_PATH="$1" -DMG_DIRNAME="$(dirname "$DMG_PATH")" -DMG_DIR="$(cd "$DMG_DIRNAME" > /dev/null; pwd)" -DMG_NAME="$(basename "$DMG_PATH")" -DMG_TEMP_NAME="$DMG_DIR/rw.${DMG_NAME}" -SRC_FOLDER="$(cd "$2" > /dev/null; pwd)" -test -z "$VOLUME_NAME" && VOLUME_NAME="$(basename "$DMG_PATH" .dmg)" - -AUX_PATH="$SCRIPT_DIR/support" - -test -d "$AUX_PATH" || { - echo "Cannot find support directory: $AUX_PATH" - exit 1 -} - -if [ -f "$SRC_FOLDER/.DS_Store" ]; then - echo "Deleting any .DS_Store in source folder" - rm "$SRC_FOLDER/.DS_Store" -fi - -# Create the image -echo "Creating disk image..." -test -f "${DMG_TEMP_NAME}" && rm -f "${DMG_TEMP_NAME}" -ACTUAL_SIZE=`du -sm "$SRC_FOLDER" | sed -e 's/ .*//g'` -DISK_IMAGE_SIZE=$(expr $ACTUAL_SIZE + 20) -hdiutil create -srcfolder "$SRC_FOLDER" -volname "${VOLUME_NAME}" -fs HFS+ -fsargs "-c c=64,a=16,e=16" -format UDRW -size ${DISK_IMAGE_SIZE}m "${DMG_TEMP_NAME}" - -# mount it -echo "Mounting disk image..." -MOUNT_DIR="/Volumes/${VOLUME_NAME}" - -# try unmount dmg if it was mounted previously (e.g. developer mounted dmg, installed app and forgot to unmount it) -echo "Unmounting disk image..." -DEV_NAME=$(hdiutil info | egrep '^/dev/' | sed 1q | awk '{print $1}') -test -d "${MOUNT_DIR}" && hdiutil detach "${DEV_NAME}" - -echo "Mount directory: $MOUNT_DIR" -DEV_NAME=$(hdiutil attach -readwrite -noverify -noautoopen "${DMG_TEMP_NAME}" | egrep '^/dev/' | sed 1q | awk '{print $1}') -echo "Device name: $DEV_NAME" - -if ! test -z "$BACKGROUND_FILE"; then - echo "Copying background file..." - test -d "$MOUNT_DIR/.background" || mkdir "$MOUNT_DIR/.background" - cp "$BACKGROUND_FILE" "$MOUNT_DIR/.background/$BACKGROUND_FILE_NAME" -fi - -if ! test -z "$APPLICATION_LINK"; then - echo "making link to Applications dir" - echo $MOUNT_DIR - ln -s /Applications "$MOUNT_DIR/Applications" -fi - -if ! test -z "$VOLUME_ICON_FILE"; then - echo "Copying volume icon file '$VOLUME_ICON_FILE'..." - cp "$VOLUME_ICON_FILE" "$MOUNT_DIR/.VolumeIcon.icns" - SetFile -c icnC "$MOUNT_DIR/.VolumeIcon.icns" -fi - -# run applescript -APPLESCRIPT=$(mktemp -t createdmg) -cat "$AUX_PATH/template.applescript" | sed -e "s/WINX/$WINX/g" -e "s/WINY/$WINY/g" -e "s/WINW/$WINW/g" -e "s/WINH/$WINH/g" -e "s/BACKGROUND_CLAUSE/$BACKGROUND_CLAUSE/g" -e "s/REPOSITION_HIDDEN_FILES_CLAUSE/$REPOSITION_HIDDEN_FILES_CLAUSE/g" -e "s/ICON_SIZE/$ICON_SIZE/g" -e "s/TEXT_SIZE/$TEXT_SIZE/g" | perl -pe "s/POSITION_CLAUSE/$POSITION_CLAUSE/g" | perl -pe "s/APPLICATION_CLAUSE/$APPLICATION_CLAUSE/g" | perl -pe "s/HIDING_CLAUSE/$HIDING_CLAUSE/" >"$APPLESCRIPT" - -echo "Running Applescript: /usr/bin/osascript \"${APPLESCRIPT}\" \"${VOLUME_NAME}\"" -"/usr/bin/osascript" "${APPLESCRIPT}" "${VOLUME_NAME}" || true -echo "Done running the applescript..." -sleep 4 - -rm "$APPLESCRIPT" - -# make sure it's not world writeable -echo "Fixing permissions..." -chmod -Rf go-w "${MOUNT_DIR}" &> /dev/null || true -echo "Done fixing permissions." - -# make the top window open itself on mount: -echo "Blessing started" -bless --folder "${MOUNT_DIR}" --openfolder "${MOUNT_DIR}" -echo "Blessing finished" - -if ! test -z "$VOLUME_ICON_FILE"; then - # tell the volume that it has a special file attribute - SetFile -a C "$MOUNT_DIR" -fi - -# unmount -echo "Unmounting disk image..." -hdiutil detach "${DEV_NAME}" - -# compress image -echo "Compressing disk image..." -hdiutil convert "${DMG_TEMP_NAME}" -format UDZO -imagekey zlib-level=9 -o "${DMG_DIR}/${DMG_NAME}" -rm -f "${DMG_TEMP_NAME}" - -# adding EULA resources -if [ ! -z "${EULA_RSRC}" -a "${EULA_RSRC}" != "-null-" ]; then - echo "adding EULA resources" - "${AUX_PATH}/dmg-license.py" "${DMG_DIR}/${DMG_NAME}" "${EULA_RSRC}" -fi - -if [ ! -z "${NOINTERNET}" -a "${NOINTERNET}" == 1 ]; then - echo "not setting 'internet-enable' on the dmg" -else - hdiutil internet-enable -yes "${DMG_DIR}/${DMG_NAME}" -fi - -echo "Disk image done" -exit 0 diff --git a/buildosx/support/AdiumApplescriptRunner b/buildosx/support/AdiumApplescriptRunner deleted file mode 100644 index 4665eeece42d8c590ffe4e86b75e9f4d43961c3d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18612 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 [OPTIONS] - This program adds a software license agreement to a DMG file. - It requires Xcode and either a plain ascii text - or a with the RTF contents. - - See --help for more details.""") - parser.add_option( - '--rez', - '-r', - action='store', - default='/Applications/Xcode.app/Contents/Developer/Tools/Rez', - help='The path to the Rez tool. Defaults to %default' - ) - parser.add_option( - '--compression', - '-c', - action='store', - choices=['bz2', 'gz'], - default=None, - help='Optionally compress dmg using specified compression type. ' - 'Choices are bz2 and gz.' - ) - options, args = parser.parse_args() - cond = len(args) != 2 - if not os.path.exists(options.rez): - print 'Failed to find Rez at "%s"!\n' % options.rez - cond = True - if cond: - parser.print_usage() - sys.exit(1) - main(options, args) diff --git a/buildosx/support/template.applescript b/buildosx/support/template.applescript deleted file mode 100644 index 2a7f2aa..0000000 --- a/buildosx/support/template.applescript +++ /dev/null @@ -1,79 +0,0 @@ -on run (volumeName) - tell application "Finder" - tell disk (volumeName as string) - open - - set theXOrigin to WINX - set theYOrigin to WINY - set theWidth to WINW - set theHeight to WINH - - set theBottomRightX to (theXOrigin + theWidth) - set theBottomRightY to (theYOrigin + theHeight) - set dsStore to "\"" & "/Volumes/" & volumeName & "/" & ".DS_STORE\"" - - tell container window - set current view to icon view - set toolbar visible to false - set statusbar visible to false - set the bounds to {theXOrigin, theYOrigin, theBottomRightX, theBottomRightY} - set statusbar visible to false - REPOSITION_HIDDEN_FILES_CLAUSE - end tell - - set opts to the icon view options of container window - tell opts - set icon size to ICON_SIZE - set text size to TEXT_SIZE - set arrangement to not arranged - end tell - BACKGROUND_CLAUSE - - -- Positioning - POSITION_CLAUSE - - -- Hiding - HIDING_CLAUSE - - -- Application Link Clause - APPLICATION_CLAUSE - close - open - - update without registering applications - -- Force saving of the size - delay 1 - - tell container window - set statusbar visible to false - set the bounds to {theXOrigin, theYOrigin, theBottomRightX - 10, theBottomRightY - 10} - end tell - - update without registering applications - end tell - - delay 1 - - tell disk (volumeName as string) - tell container window - set statusbar visible to false - set the bounds to {theXOrigin, theYOrigin, theBottomRightX, theBottomRightY} - end tell - - update without registering applications - end tell - - --give the finder some time to write the .DS_Store file - delay 3 - - set waitTime to 0 - set ejectMe to false - repeat while ejectMe is false - delay 1 - set waitTime to waitTime + 1 - - if (do shell script "[ -f " & dsStore & " ]; echo $?") = "0" then set ejectMe to true - end repeat - log "waited " & waitTime & " seconds for .DS_STORE to be created." - end tell -end run diff --git a/ci/appveyor-upload.sh b/ci/appveyor-upload.sh deleted file mode 100755 index 7fddfe4..0000000 --- a/ci/appveyor-upload.sh +++ /dev/null @@ -1,28 +0,0 @@ -#!/usr/bin/env bash - -# -# Upload the .tar.gz and .xml artifacts to cloudsmith -# - -set -xe - -REPO='alec-leamas/opencpn-plugins-unstable' - -if [ -z "$CLOUDSMITH_API_KEY" ]; then - echo 'Cannot deploy to cloudsmith, missing $CLOUDSMITH_API_KEY' - exit 0 -fi - -python -m ensurepip -python -m pip install -q setuptools -python -m pip install -q cloudsmith-cli - -commit=$(git rev-parse --short=7 HEAD) || commit="unknown" -now=$(date --rfc-3339=seconds) || now=$(date) - -tarball=$(ls *.tar.gz) -xml=$(ls *.xml) -echo '" >> $xml - -cloudsmith push raw --republish --no-wait-for-sync $REPO $tarball -cloudsmith push raw --republish --no-wait-for-sync $REPO $xml diff --git a/ci/bintray.js b/ci/bintray.js deleted file mode 100755 index c760321..0000000 --- a/ci/bintray.js +++ /dev/null @@ -1,58 +0,0 @@ -{ - "package": { - "name": "plugins", - "repo": "OpenCPN", - "subject": "leamas", - "desc": "oesenc plugin automatic push", - "website_url": "www.jfrog.com", - "issue_tracker_url": "https://github.com/leamas/oesenc_pi/issues", - "vcs_url": "https://github.com/leamas/oesenc_pi.git", - "github_use_tag_release_notes": false, - "licenses": ["GPL2"], - "labels": [], - "public_download_numbers": false, - "public_stats": false, - "attributes": [{ - "name": "att5", - "values" : ["2014-12-28T19:43:37+0100"], - "type": "date" - }] - }, - - "version": { - "name": "1.15-0.beta2", - "desc": "Pre-release based on 5.0.0 beta2", - "released": "2019-03-14", - "vcs_tag": "1.15", - "attributes": [ - {"name": "VerAtt1", "values" : ["VerVal1"], "type": "string"}, - {"name": "VerAtt2", "values" : [1, 3.3, 5], "type": "number"}, - { - "name": "VerAtt3", - "values" : ["2015-01-01T19:43:37+0100"], - "type": "date" - } - ], - "gpgSign": false - }, - - "files": - [ - { - "includePattern": "build/(oesenc.*\\.tar.gz)", - "uploadPattern": "$1", - "matrixParams": {"override": 1} - }, - { - "includePattern": "build/(oesenc-plugin\\.xml)", - "uploadPattern": "$1", - "matrixParams": {"override": 1} - }, - { - "includePattern": "build/(oesenc-plugin-.*\\.xml)", - "uploadPattern": "$1", - "matrixParams": {"override": 1} - } - ], - "publish": true -} diff --git a/ci/circleci-build-debian.sh b/ci/circleci-build-debian.sh deleted file mode 100755 index 48e85d6..0000000 --- a/ci/circleci-build-debian.sh +++ /dev/null @@ -1,21 +0,0 @@ -#!/usr/bin/env bash - -# -# Build the Debian artifacts -# -set -xe -sudo apt-get -qq update -sudo apt-get install devscripts equivs - -pwd -ls -R - -mkdir build -cd build -mk-build-deps ../ci/control -sudo apt-get install ./*all.deb || : -sudo apt-get --allow-unauthenticated install -f - -cmake -DCMAKE_BUILD_TYPE=Debug .. -make -sj2 -make package diff --git a/ci/circleci-build-fedora.sh b/ci/circleci-build-fedora.sh deleted file mode 100755 index d59dc2f..0000000 --- a/ci/circleci-build-fedora.sh +++ /dev/null @@ -1,13 +0,0 @@ -#!/bin/sh -xe - -# -# Build the mingw artifacts inside the Fedora container -# -set -xe - -su -c "dnf install -y sudo dnf-plugins-core" -sudo dnf builddep -y ci/opencpn-fedora.spec -rm -rf build; mkdir build; cd build -cmake .. -make -j2 -make package diff --git a/ci/circleci-build-flatpak.sh b/ci/circleci-build-flatpak.sh deleted file mode 100755 index b91985c..0000000 --- a/ci/circleci-build-flatpak.sh +++ /dev/null @@ -1,46 +0,0 @@ -#!/usr/bin/env bash - -# -# Build the flatpak artifacts. Uses docker to run Fedora on -# in fuill-fledged VM; the actual build is done in the Fedora -# container. -# -# flatpak-builder can be run in a docker image. However, this -# must then be run in privileged mode, which means it we need -# a full-fledged VM to run it. -# - -# bailout on errors and echo commands. -set -xe -##sudo apt-get -qq update - -PLUGIN=bsb4 - -DOCKER_SOCK="unix:///var/run/docker.sock" -if [ -n "$TRAVIS" ]; then - TOPDIR=/opencpn-ci -fi - -if [ -n "$CIRCLECI" ]; then - TOPDIR=/root/project -fi - -echo "DOCKER_OPTS=\"-H tcp://127.0.0.1:2375 -H $DOCKER_SOCK -s devicemapper\"" \ - | sudo tee /etc/default/docker > /dev/null -sudo service docker restart -sleep 5 -sudo docker pull fedora:28; -sleep 2 -docker run --privileged -d -ti -e "container=docker" \ - -e "TOPDIR=$TOPDIR" \ - -v /sys/fs/cgroup:/sys/fs/cgroup \ - -v $(pwd):$TOPDIR:rw \ - fedora:28 /usr/sbin/init -DOCKER_CONTAINER_ID=$(docker ps | grep fedora | awk '{print $1}') -docker logs $DOCKER_CONTAINER_ID -docker exec -ti $DOCKER_CONTAINER_ID /bin/bash -xec \ - "bash -xe $TOPDIR/ci/docker-build-flatpak.sh 28; - echo -ne \"------\nEND OPENCPN-CI BUILD\n\";" -docker ps -a -docker stop $DOCKER_CONTAINER_ID -docker rm -v $DOCKER_CONTAINER_ID diff --git a/ci/circleci-build-macos.sh b/ci/circleci-build-macos.sh deleted file mode 100755 index d95c8a8..0000000 --- a/ci/circleci-build-macos.sh +++ /dev/null @@ -1,28 +0,0 @@ -#!/usr/bin/env bash - -# -# Build the Travis OSX artifacts -# - -# bailout on errors and echo commands -set -xe - -for pkg in cairo libexif xz libarchive python3 wget cmake; do - brew list $pkg 2>&1 >/dev/null || brew install $pkg -done - -wget http://opencpn.navnux.org/build_deps/wx312_opencpn50_macos109.tar.xz -tar xJf wx312_opencpn50_macos109.tar.xz -C /tmp -export PATH="/usr/local/opt/gettext/bin:$PATH" -echo 'export PATH="/usr/local/opt/gettext/bin:$PATH"' >> ~/.bash_profile - -rm -rf build && mkdir build && cd build -test -z "$TRAVIS_TAG" && CI_BUILD=OFF || CI_BUILD=ON -cmake -DOCPN_CI_BUILD=$CI_BUILD \ - -DOCPN_USE_LIBCPP=ON \ - -DwxWidgets_CONFIG_EXECUTABLE=/tmp/wx312_opencpn50_macos109/bin/wx-config \ - -DwxWidgets_CONFIG_OPTIONS="--prefix=/tmp/wx312_opencpn50_macos109" \ - -DCMAKE_INSTALL_PREFIX=/tmp/opencpn -DCMAKE_OSX_DEPLOYMENT_TARGET=10.9 \ - .. -make -sj2 -make package diff --git a/ci/circleci-build-mingw.sh b/ci/circleci-build-mingw.sh deleted file mode 100755 index ee5c3a1..0000000 --- a/ci/circleci-build-mingw.sh +++ /dev/null @@ -1,17 +0,0 @@ -#!/bin/sh -xe - -# -# Build the mingw artifacts inside the Fedora container -# -set -xe - -su -c "dnf install -q -y sudo dnf-plugins-core" -sudo dnf -q builddep -y mingw/fedora/opencpn-deps.spec -rm -rf build; mkdir build; cd build -cmake -DCMAKE_TOOLCHAIN_FILE=../mingw/fedora/toolchain.cmake .. -make -j2 -make package - -if [ -z "$CLOUDSMITH_API_KEY" ]; then - exit 0 -fi diff --git a/ci/circleci-upload.sh b/ci/circleci-upload.sh deleted file mode 100755 index 22319c6..0000000 --- a/ci/circleci-upload.sh +++ /dev/null @@ -1,46 +0,0 @@ -#!/usr/bin/env bash - -# -# Upload the .tar.gz and .xml artifacts. -# - -set -xe - -REPO='mauro-calvi/squiddio-pi' - -if [ -z "$CIRCLECI" ]; then - exit 0; -fi - -if [ -z "$CLOUDSMITH_API_KEY" ]; then - echo 'Cannot deploy to cloudsmith, missing $CLOUDSMITH_API_KEY' - exit 0 -fi - -if pyenv versions 2>&1 >/dev/null; then - pyenv global 3.7.0 - python -m pip install cloudsmith-cli - pyenv rehash -elif dnf --version 2>&1 >/dev/null; then - sudo dnf install python3-pip python3-setuptools - sudo python3 -m pip install -q cloudsmith-cli -elif apt-get --version 2>&1 >/dev/null; then - sudo apt-get install python3-pip python3-setuptools - sudo python3 -m pip install -q cloudsmith-cli -else - sudo -H python3 -m ensurepip - sudo -H python3 -m pip install -q setuptools - sudo -H python3 -m pip install -q cloudsmith-cli -fi - -BUILD_ID=${CIRCLE_BUILD_NUM:-1} -commit=$(git rev-parse --short=7 HEAD) || commit="unknown" -now=$(date --rfc-3339=seconds) || now=$(date) - -tarball=$(ls $HOME/project/build/*.tar.gz) -xml=$(ls $HOME/project/build/*.xml) -sudo chmod 666 $xml -echo '" >> $xml - -cloudsmith push raw --republish --no-wait-for-sync $REPO $tarball -cloudsmith push raw --republish --no-wait-for-sync $REPO $xml diff --git a/ci/control.trusty b/ci/control.trusty deleted file mode 100755 index d7d015b..0000000 --- a/ci/control.trusty +++ /dev/null @@ -1,30 +0,0 @@ -Source: opencpn-plugin-squiddio -Build-Depends: debhelper (>= 9), - cmake, - libarchive-dev, - libbz2-dev, - libcairo2-dev, - libcurl4-openssl-dev, - libelf-dev, - libexif-dev, - libgdk-pixbuf2.0-dev, - libgtk2.0-dev, - liblz4-dev, - liblzma-dev, - libpango1.0-dev, - libsqlite3-dev, - libtinyxml-dev, - libunarr-dev | base-files, - libwxgtk3.0-dev, - libwxgtk3.0-0v5 | libwxgtk3.0-0, - libwxsvg-dev | base-files, - portaudio19-dev, - rpm -Standards-Version: 4.3.0 -Homepage: https://opencpn.org - -Description: Packages needed to build squiddio_pi on debian. - The Build-Depends field can be used to install dependencies - using mk-build-deps. - . - These packages are available in trusty+. diff --git a/ci/control.xenial b/ci/control.xenial deleted file mode 100755 index 41908fe..0000000 --- a/ci/control.xenial +++ /dev/null @@ -1,32 +0,0 @@ -Source: opencpn-plugin-squiddio -Build-Depends: debhelper (>= 9), - cmake, - libarchive-dev, - libbz2-dev, - libcairo2-dev, - libcurl4-openssl-dev, - libelf-dev, - libexif-dev, - libgdk-pixbuf2.0-dev, - libgtk2.0-dev, - liblz4-dev, - liblzma-dev, - libpango1.0-dev, - libsqlite3-dev, - libtinyxml-dev, - libunarr-dev | base-files, - libwxgtk3.0-dev, - libwxgtk3.0-0v5 | libwxgtk3.0-0, - libwxgtk-webview3.0-0v5 | libwxgtk3.0-libwxgtk3.0-0, - libwxgtk-webview3.0-dev | libwxgtk3.0-dev, - libwxsvg-dev | base-files, - portaudio19-dev, - rpm -Standards-Version: 4.3.0 -Homepage: https://opencpn.org - -Description: Packages needed to build squiddio_pi on debian. - The Build-Depends field can be used to install dependencies - using mk-build-deps. - . - These packages are available in xenial+. diff --git a/ci/docker-build-fedora.sh b/ci/docker-build-fedora.sh deleted file mode 100755 index 6baf59d..0000000 --- a/ci/docker-build-fedora.sh +++ /dev/null @@ -1,19 +0,0 @@ -#!/bin/sh -xe - -# -# Actually build the Travis mingw artifacts inside teh Fedora container -# -set -xe - -if [-n "$TRAVIS" ]; then - cd /opencpn-ci -elif [ -n "$CIRCLECI" ]; then - cd /root/project -fi - -su -c "dnf install -y sudo dnf-plugins-core" -sudo dnf builddep -y ci/opencpn-fedora.spec -rm -rf build; mkdir build; cd build -cmake .. -make -j2 -make package diff --git a/ci/docker-build-flatpak.sh b/ci/docker-build-flatpak.sh deleted file mode 100755 index 4a6755d..0000000 --- a/ci/docker-build-flatpak.sh +++ /dev/null @@ -1,20 +0,0 @@ -#!/bin/sh -xe -cd $(dirname $(readlink -fn $0)) - -# -# Actually build the mingw artifacts inside the Fedora container -# -set -xe - -cd $TOPDIR - -su -c "dnf install -q -y sudo cmake gcc-c++ flatpak-builder flatpak make tar" -flatpak remote-add --user --if-not-exists flathub \ - https://flathub.org/repo/flathub.flatpakrepo -flatpak install --user -y \ - http://opencpn.duckdns.org/opencpn/opencpn.flatpakref >/dev/null -flatpak install --user -y flathub org.freedesktop.Sdk//18.08 >/dev/null -rm -rf build && mkdir build && cd build -cmake -DOCPN_FLATPAK=ON .. -make flatpak-build -make package diff --git a/ci/docker-build-mingw.sh b/ci/docker-build-mingw.sh deleted file mode 100755 index 8d226ca..0000000 --- a/ci/docker-build-mingw.sh +++ /dev/null @@ -1,20 +0,0 @@ -#!/bin/sh -xe - -# -# Actually build the Travis mingw artifacts inside teh Fedora container -# -set -xe - -if [-n "$TRAVIS" ]; then - cd /opencpn-ci -elif [ -n "$CIRCLECI" ]; then - cd /root/project -fi - -su -c "dnf install -y sudo dnf-plugins-core" -sudo dnf copr enable -y --nogpgcheck leamas/opencpn-mingw -sudo dnf builddep -y /opencpn-ci/ci/opencpn-deps.spec -rm -rf build; mkdir build; cd build -cmake -DCMAKE_TOOLCHAIN_FILE=/opencpn-ci/ci/toolchain.cmake .. -make -j2 -make package diff --git a/ci/opencpn-deps.spec b/ci/opencpn-deps.spec deleted file mode 100755 index 8899406..0000000 --- a/ci/opencpn-deps.spec +++ /dev/null @@ -1,66 +0,0 @@ -Name: opencpn-deps -Version: 0.1 -Release: 1%{?dist} -Summary: Empty package with opencpn build dependencies - -License: MIT -URL: https://github.com/leamas/opencpn - -BuildRequires: cmake -BuildRequires: gettext -BuildRequires: make -BuildRequires: mingw-binutils-generic -BuildRequires: mingw-filesystem-base -BuildRequires: mingw32-binutils -BuildRequires: mingw32-bzip2 -BuildRequires: mingw32-cairo -BuildRequires: mingw32-curl -BuildRequires: mingw32-expat -BuildRequires: mingw32-filesystem -BuildRequires: mingw32-fontconfig -BuildRequires: mingw32-freetype -BuildRequires: mingw32-gcc -BuildRequires: mingw32-gcc-c++ -BuildRequires: mingw32-cpp -BuildRequires: mingw32-gettext -BuildRequires: mingw32-headers -BuildRequires: mingw32-glib2 -BuildRequires: mingw32-gtk2 -BuildRequires: mingw32-libarchive -BuildRequires: mingw32-libexif -BuildRequires: mingw32-libffi -BuildRequires: mingw32-libpng -BuildRequires: mingw32-libtiff -BuildRequires: mingw32-libxml2 -BuildRequires: mingw32-nsiswrapper -BuildRequires: mingw32-openssl -BuildRequires: mingw32-pcre -BuildRequires: mingw32-pixman -BuildRequires: mingw32-sqlite -BuildRequires: mingw32-win-iconv -BuildRequires: mingw32-wxWidgets3 >= 3.0.2 -BuildRequires: mingw32-xz-libs - -%description - -Empty package used to catch build dependencies for opencpn using -the mingw tools to create a Windows 32-bit executable - -Use dnf builddep opencpn-deps.spec to install the dependencies. - -%prep - - -%build - - -%install - - -%files -%doc COPYING - - -%changelog -* Fri Mar 01 2019 Alec Leamas - 0.1-1 -- Initial release diff --git a/ci/opencpn-fedora.spec b/ci/opencpn-fedora.spec deleted file mode 100755 index d5dd52e..0000000 --- a/ci/opencpn-fedora.spec +++ /dev/null @@ -1,38 +0,0 @@ -Name: opencpn -Summary: Chartplotter and GPS navigation software -Version: 4.8.0 -Release: 4.1%{?dist} -License: GPLv2+ - -BuildRequires: bzip2-devel -BuildRequires: cmake -BuildRequires: desktop-file-utils -BuildRequires: elfutils-libelf-devel -BuildRequires: expat-devel -BuildRequires: gcc-c++ -BuildRequires: gettext -BuildRequires: libcurl-devel -BuildRequires: mesa-libGL-devel -BuildRequires: mesa-libGLU-devel -BuildRequires: portaudio-devel -BuildRequires: redhat-lsb-core -BuildRequires: tar -BuildRequires: tinyxml-devel -BuildRequires: compat-wxGTK3-gtk2-devel -BuildRequires: xz-devel -BuildRequires: xz-lzma-compat - -%description -Empty package to catch build dependecies for OpenCPN - -%prep - -%build - -%install - -%changelog -* Sun Apr 28 2019 Alec Leamas - 4.8.0-4.1 -- rebuilt - - diff --git a/ci/toolchain.cmake b/ci/toolchain.cmake deleted file mode 100755 index 84275d4..0000000 --- a/ci/toolchain.cmake +++ /dev/null @@ -1,19 +0,0 @@ -# the name of the target operating system -SET(CMAKE_SYSTEM_NAME Windows) -SET(CMAKE_SYSTEM_VERSION 10) - -# which compilers to use for C and C++ -SET(CMAKE_C_COMPILER i686-w64-mingw32-gcc) -SET(CMAKE_CXX_COMPILER i686-w64-mingw32-c++) -SET(CMAKE_RC_COMPILER i686-w64-mingw32-windres) - -# here is the target environment located -SET(CMAKE_FIND_ROOT_PATH - /usr/i686-w64-mingw32 /usr/i686-w64-mingw32/sys-root/mingw) - -# adjust the default behaviour of the FIND_XXX() commands: -# search headers and libraries in the target environment, search -# programs in the host environment -set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) -set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) -set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) diff --git a/ci/travis-build-debian.sh b/ci/travis-build-debian.sh deleted file mode 100755 index 50e0036..0000000 --- a/ci/travis-build-debian.sh +++ /dev/null @@ -1,19 +0,0 @@ -#!/usr/bin/env bash - -# -# Build the Travis Debian artifacts -# -set -xe -sudo apt-get -qq update -sudo apt-get install devscripts equivs - -mkdir build -cd build -ln -s ../ci/control.${OCPN_TARGET} ../ci/control -mk-build-deps ../ci/control -sudo apt-get install ./*all.deb || : -sudo apt-get --allow-unauthenticated install -f - -cmake -DCMAKE_BUILD_TYPE=Release .. -make -sj2 -make package diff --git a/ci/travis-build-fedora.sh b/ci/travis-build-fedora.sh deleted file mode 100755 index 1d68381..0000000 --- a/ci/travis-build-fedora.sh +++ /dev/null @@ -1,33 +0,0 @@ -#!/usr/bin/env bash - -# -# Build the travis fedora artifacts. Uses docker to run Fedora on -# in the Travis ubuntu VM; the actual build is done in the Fedora -# container. -# - -# bailout on errors and echo commands. -set -xe -sudo apt-get -qq update - -DOCKER_SOCK="unix:///var/run/docker.sock" - -echo "DOCKER_OPTS=\"-H tcp://127.0.0.1:2375 -H $DOCKER_SOCK -s devicemapper\"" \ - | sudo tee /etc/default/docker > /dev/null -sudo service docker restart; -sleep 5; -sudo docker pull fedora:29; - -docker run --privileged -d -ti -e "container=docker" \ - -v /sys/fs/cgroup:/sys/fs/cgroup \ - -v $(pwd):/opencpn-ci:rw \ - fedora:29 /usr/sbin/init -DOCKER_CONTAINER_ID=$(docker ps | grep fedora | awk '{print $1}') -docker logs $DOCKER_CONTAINER_ID -docker exec -ti $DOCKER_CONTAINER_ID /bin/bash -xec \ - "bash -xe /opencpn-ci/ci/docker-build-fedora.sh 29; - echo -ne \"------\nEND OPENCPN-CI BUILD\n\";" -docker ps -a -docker stop $DOCKER_CONTAINER_ID -docker rm -v $DOCKER_CONTAINER_ID -sudo apt-get install python3-pip python3-setuptools diff --git a/ci/travis-build-flatpak.sh b/ci/travis-build-flatpak.sh deleted file mode 100755 index 75cd7b4..0000000 --- a/ci/travis-build-flatpak.sh +++ /dev/null @@ -1,33 +0,0 @@ -#!/usr/bin/env bash - -# -# Build the travis flatpak artifacts. Uses docker to run Fedora on -# in the Travis ubuntu VM; the actual build is done in the Fedora -# container. -# - -# bailout on errors and echo commands. -#set -xe -sudo apt-get -qq update - -DOCKER_SOCK="unix:///var/run/docker.sock" - -echo "DOCKER_OPTS=\"-H tcp://127.0.0.1:2375 -H $DOCKER_SOCK -s devicemapper\"" \ - | sudo tee /etc/default/docker > /dev/null -sudo service docker restart; -sleep 5; -sudo docker pull fedora:28; - -docker run --privileged -d -ti -e "container=docker" \ - -v /sys/fs/cgroup:/sys/fs/cgroup \ - -v $(pwd):/opencpn-ci:rw \ - fedora:28 /usr/sbin/init -DOCKER_CONTAINER_ID=$(docker ps | grep fedora | awk '{print $1}') -docker logs $DOCKER_CONTAINER_ID -docker exec -ti $DOCKER_CONTAINER_ID /bin/bash -xec \ - "bash -xe /opencpn-ci/ci/docker-build-flatpak.sh 28; - echo -ne \"------\nEND OPENCPN-CI BUILD\n\";" -docker ps -a -docker stop $DOCKER_CONTAINER_ID -docker rm -v $DOCKER_CONTAINER_ID -sudo apt-get install python3-pip python3-setuptools diff --git a/ci/travis-build-mingw.sh b/ci/travis-build-mingw.sh deleted file mode 100755 index 35ef63f..0000000 --- a/ci/travis-build-mingw.sh +++ /dev/null @@ -1,32 +0,0 @@ -#!/usr/bin/env bash - -# -# Build the travis mingw artifacts. Uses docker to run Fedora on -# in the Travis ubuntu VM; the actual build is done in the Fedora -# container. -# - -# bailout on errors and echo commands. -set -xe -sudo apt-get -qq update - -DOCKER_SOCK="unix:///var/run/docker.sock" - -echo "DOCKER_OPTS=\"-H tcp://127.0.0.1:2375 -H $DOCKER_SOCK -s devicemapper\"" \ - | sudo tee /etc/default/docker > /dev/null -sudo service docker restart; -sleep 5; -sudo docker pull fedora:28; - -docker run --privileged -d -ti -e "container=docker" \ - -v /sys/fs/cgroup:/sys/fs/cgroup \ - -v $(pwd):/opencpn-ci:rw \ - fedora:28 /usr/sbin/init -DOCKER_CONTAINER_ID=$(docker ps | grep fedora | awk '{print $1}') -docker logs $DOCKER_CONTAINER_ID -docker exec -ti $DOCKER_CONTAINER_ID /bin/bash -xec \ - "bash -xe /opencpn-ci/ci/docker-build-mingw.sh 28; - echo -ne \"------\nEND OPENCPN-CI BUILD\n\";" -docker ps -a -docker stop $DOCKER_CONTAINER_ID -docker rm -v $DOCKER_CONTAINER_ID diff --git a/ci/travis-build-osx.sh b/ci/travis-build-osx.sh deleted file mode 100755 index 36f295c..0000000 --- a/ci/travis-build-osx.sh +++ /dev/null @@ -1,51 +0,0 @@ -#!/usr/bin/env bash - -# -# Build the Travis OSX artifacts -# - -# bailout on errors and echo commands -set -xe - -brew install cairo libexif xz -export MACOSX_DEPLOYMENT_TARGET=10.9 -# We need to build own libarchive -wget https://libarchive.org/downloads/libarchive-3.3.3.tar.gz -tar zxf libarchive-3.3.3.tar.gz -cd libarchive-3.3.3 -./configure --without-lzo2 --without-nettle --without-xml2 --without-openssl --with-expat -make -make install -cd .. - -wget http://opencpn.navnux.org/build_deps/wx312_opencpn50_macos109.tar.xz -tar xJf wx312_opencpn50_macos109.tar.xz -C /tmp -export PATH="/usr/local/opt/gettext/bin:$PATH" -echo 'export PATH="/usr/local/opt/gettext/bin:$PATH"' >> ~/.bash_profile - -mkdir build -cd build -test -n "$TRAVIS_TAG" && CI_BUILD=OFF || CI_BUILD=ON - -cmake -DOCPN_CI_BUILD=$CI_BUILD \ - -DwxWidgets_CONFIG_EXECUTABLE=/tmp/wx312_opencpn50_macos109/bin/wx-config \ - -DwxWidgets_CONFIG_OPTIONS="--prefix=/tmp/wx312_opencpn50_macos109" \ - -DCMAKE_INSTALL_PREFIX=/tmp/opencpn \ - -DCMAKE_OSX_DEPLOYMENT_TARGET=10.9 \ - .. - -make -sj2 -#make create-pkg -mkdir -p /tmp/opencpn/bin/ocpn_draw_pi.app/Contents/MacOS -mkdir -p /tmp/opencpn/bin/ocpn_draw_pi.app/Contents/SharedSupport/plugins -chmod 644 /usr/local/lib/lib*.dylib -make install -#make install # Dunno why the second is needed but it is, otherwise - # plugin data is not included in the bundle -make create-dmg - -wget http://opencpn.navnux.org/build_deps/Packages.dmg; -hdiutil attach Packages.dmg; -sudo installer -pkg "/Volumes/Packages 1.2.5/Install Packages.pkg" -target "/"; - -make create-pkg diff --git a/ci/travis-upload.sh b/ci/travis-upload.sh deleted file mode 100755 index 50f5b6d..0000000 --- a/ci/travis-upload.sh +++ /dev/null @@ -1,36 +0,0 @@ -#!/bin/sh -PLUGIN="oesenc" - -VERSION="unstable" -OPTS="override=1;publish=1" -PKG="plugins" - -API_BASE="https://api.bintray.com/content/leamas/OpenCPN/$PKG/$VERSION" - -cd build -tarball=$(echo ${PLUGIN}*.tar.gz) -xml=$(echo ${PLUGIN}-plugin*.xml) - -if [ -z "$BINTRAY_API_KEY" ]; then - echo 'Cannot deploy to bintray:: missing $BINTRAY_API_KEY' -else - echo "Deploying to bintray" - set -x - curl -T $tarball --user leamas:$BINTRAY_API_KEY "$API_BASE/$tarball;$OPTS" - curl -T $xml --user leamas:$BINTRAY_API_KEY "$API_BASE/$xml;$OPTS" - set +x -fi - - -if [ -z "$CLOUDSMITH_API_KEY" ]; then - echo 'Cannot deploy to cloudsmith: missing $CLOUDSMITH_API_KEY' -else - echo "Deploying to cloudsmith" - set -x - sudo python3 -m pip install cloudsmith-cli - cloudsmith push raw --republish --no-wait-for-sync \ - alec-leamas/opencpn-plugins-unstable $tarball - cloudsmith push raw --republish --no-wait-for-sync \ - alec-leamas/opencpn-plugins-unstable $xml - set +x -fi diff --git a/cmake/PluginConfigure.cmake b/cmake/PluginConfigure.cmake index adf9ec5..b9ccc7f 100644 --- a/cmake/PluginConfigure.cmake +++ b/cmake/PluginConfigure.cmake @@ -22,6 +22,8 @@ IF(NOT SKIP_VERSION_CONFIG) INCLUDE_DIRECTORIES(${BUILD_INCLUDE_PATH}/include) ENDIF(NOT SKIP_VERSION_CONFIG) +SET(PACKAGE_VERSION "${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}" ) + #SET(CMAKE_BUILD_TYPE Debug) SET(CMAKE_VERBOSE_MAKEFILE ON) @@ -69,13 +71,13 @@ SET(BUILD_SHARED_LIBS "ON") # QT_ANDROID is a cross-build, so the native FIND_PACKAGE(wxWidgets...) and wxWidgets_USE_FILE is not useful. IF(NOT QT_ANDROID) IF(NOT DEFINED wxWidgets_USE_FILE) - SET(wxWidgets_FIND_COMPONENTS base core net xml html adv aui) + SET(wxWidgets_USE_LIBS base core net xml html adv aui) SET(BUILD_SHARED_LIBS TRUE) set (WXWIDGETS_FORCE_VERSION CACHE VERSION "Force usage of a specific wxWidgets version.") if(WXWIDGETS_FORCE_VERSION) set (wxWidgets_CONFIG_OPTIONS --version=${WXWIDGETS_FORCE_VERSION}) endif() - FIND_PACKAGE(wxWidgets COMPONENTS ${wxWidgets_FIND_COMPONENTS} REQUIRED) + FIND_PACKAGE(wxWidgets REQUIRED) ENDIF(NOT DEFINED wxWidgets_USE_FILE) INCLUDE(${wxWidgets_USE_FILE}) @@ -90,25 +92,18 @@ ENDIF(MSYS) # IF (NOT QT_ANDROID ) FIND_PACKAGE(OpenGL) - IF(OPENGL_GLU_FOUND) - - SET(wxWidgets_USE_LIBS ${wxWidgets_FIND_COMPONENTS} gl) - INCLUDE_DIRECTORIES(${OPENGL_INCLUDE_DIR}) - - MESSAGE (STATUS "Found OpenGL..." ) - MESSAGE (STATUS " Lib: " ${OPENGL_LIBRARIES}) - MESSAGE (STATUS " Include: " ${OPENGL_INCLUDE_DIR}) - ADD_DEFINITIONS(-DocpnUSE_GL) - ELSE(OPENGL_GLU_FOUND) - MESSAGE (STATUS "OpenGL not found..." ) - ENDIF(OPENGL_GLU_FOUND) - - set (WXWIDGETS_FORCE_VERSION CACHE VERSION "Force usage of a specific wxWidgets version.") - if(WXWIDGETS_FORCE_VERSION) - set (wxWidgets_CONFIG_OPTIONS --version=${WXWIDGETS_FORCE_VERSION}) - endif() - FIND_PACKAGE(wxWidgets COMPONENTS ${wxWidgets_FIND_COMPONENTS} REQUIRED) - INCLUDE(${wxWidgets_USE_FILE}) +IF(OPENGL_GLU_FOUND) + + SET(wxWidgets_USE_LIBS ${wxWidgets_USE_LIBS} gl) + INCLUDE_DIRECTORIES(${OPENGL_INCLUDE_DIR}) + + MESSAGE (STATUS "Found OpenGL..." ) + MESSAGE (STATUS " Lib: " ${OPENGL_LIBRARIES}) + MESSAGE (STATUS " Include: " ${OPENGL_INCLUDE_DIR}) + ADD_DEFINITIONS(-DocpnUSE_GL) +ELSE(OPENGL_GLU_FOUND) + MESSAGE (STATUS "OpenGL not found..." ) +ENDIF(OPENGL_GLU_FOUND) ENDIF(NOT QT_ANDROID) # On Android, PlugIns need a specific linkage set.... diff --git a/cmake/PluginInstall.cmake b/cmake/PluginInstall.cmake index 186dcc8..fa45849 100644 --- a/cmake/PluginInstall.cmake +++ b/cmake/PluginInstall.cmake @@ -4,25 +4,19 @@ ## License: GPLv3+ ##--------------------------------------------------------------------------- -IF (QT_ANDROID ) - TARGET_LINK_LIBRARIES( ${PACKAGE_NAME} ${OCPN_Core_LIBRARIES} ) - TARGET_LINK_LIBRARIES( ${PACKAGE_NAME} "-lgnustl_shared") - TARGET_LINK_LIBRARIES( ${PACKAGE_NAME} "-lz" ) -ENDIF(QT_ANDROID) - IF(NOT APPLE) - TARGET_LINK_LIBRARIES( ${PACKAGE_NAME} ${wxWidgets_LIBRARIES} ${PLUGINS_LIBS} ) + TARGET_LINK_LIBRARIES( ${PACKAGE_NAME} ${wxWidgets_LIBRARIES} ${EXTRA_LIBS} ) ENDIF(NOT APPLE) -If(NOT APPLE AND NOT QT_ANDROID) - TARGET_LINK_LIBRARIES(${PACKAGE_NAME} - ${wxWidgets_LIBRARIES} - ) -ENDIF() - IF(WIN32) + SET(PARENT "opencpn") + IF(MSVC) - TARGET_LINK_LIBRARIES(${PACKAGE_NAME} gdiplus.lib) +# TARGET_LINK_LIBRARIES(${PACKAGE_NAME} +# gdiplus.lib +# glu32.lib) + TARGET_LINK_LIBRARIES(${PACKAGE_NAME} ${OPENGL_LIBRARIES}) + SET(OPENCPN_IMPORT_LIB "${PARENT}.lib") ENDIF(MSVC) @@ -46,19 +40,19 @@ IF(UNIX) /usr/lib/gcc/i686-pc-linux-gnu/4.7 ) - SET(PLUGINS_LIBS ${PLUGINS_LIBS} ${GCOV_LIBRARY}) + SET(EXTRA_LIBS ${EXTRA_LIBS} ${GCOV_LIBRARY}) ENDIF(PROFILING) ENDIF(UNIX) IF(APPLE) INSTALL(TARGETS ${PACKAGE_NAME} RUNTIME LIBRARY DESTINATION ${CMAKE_BINARY_DIR}/OpenCPN.app/Contents/SharedSupport/plugins) - INSTALL(TARGETS ${PACKAGE_NAME} RUNTIME LIBRARY DESTINATION ${CMAKE_BINARY_DIR}/OpenCPN.app/Contents/PlugIns) - FIND_PACKAGE(ZLIB REQUIRED) - TARGET_LINK_LIBRARIES( ${PACKAGE_NAME} ${ZLIB_LIBRARIES} ) + FIND_PACKAGE(ZLIB REQUIRED) + TARGET_LINK_LIBRARIES( ${PACKAGE_NAME} ${ZLIB_LIBRARIES} ) + INSTALL(TARGETS ${PACKAGE_NAME} RUNTIME LIBRARY DESTINATION ${CMAKE_BINARY_DIR}/OpenCPN.app/Contents/PlugIns) - IF(EXISTS ${PROJECT_SOURCE_DIR}/data) + IF(EXISTS ${PROJECT_SOURCE_DIR}/data) INSTALL(DIRECTORY data DESTINATION ${CMAKE_BINARY_DIR}/OpenCPN.app/Contents/SharedSupport/plugins/${PACKAGE_NAME}) - ENDIF() + ENDIF() ENDIF(APPLE) @@ -70,69 +64,10 @@ IF(UNIX AND NOT APPLE) TARGET_LINK_LIBRARIES( ${PACKAGE_NAME} ${BZIP2_LIBRARIES} ${ZLIB_LIBRARY} ) ENDIF(UNIX AND NOT APPLE) -# Based on code from nohal -IF (NOT WIN32) - # default - SET (ARCH "i386") - SET (LIB_INSTALL_DIR "lib") - IF (EXISTS /etc/debian_version) - SET (PACKAGE_FORMAT "DEB") - SET (PACKAGE_DEPS "libc6, libwxgtk3.0-0, wx3.0-i18n, libglu1-mesa (>= 7.0.0), libgl1-mesa-glx (>= 7.0.0), zlib1g, bzip2, libtinyxml2.6.2, libportaudio2") - SET (PACKAGE_RECS "xcalib,xdg-utils") - SET (LIB_INSTALL_DIR "lib") - IF (CMAKE_SIZEOF_VOID_P MATCHES "8") - SET (ARCH "amd64") -# SET (LIB_INSTALL_DIR "lib64") - ELSE (CMAKE_SIZEOF_VOID_P MATCHES "8") - SET (ARCH "i386") - ENDIF (CMAKE_SIZEOF_VOID_P MATCHES "8") - SET(TENTATIVE_PREFIX "/usr/local") - ENDIF (EXISTS /etc/debian_version) - IF (EXISTS /etc/redhat-release) - SET (PACKAGE_FORMAT "RPM") - # SET (PACKAGE_DEPS "wxGTK mesa-libGLU mesa-libGL gettext zlib bzip2 portaudio") - IF (CMAKE_SIZEOF_VOID_P MATCHES "8") - SET (ARCH "x86_64") - SET (LIB_INSTALL_DIR "lib64") - ELSE (CMAKE_SIZEOF_VOID_P MATCHES "8") - SET (ARCH "i386") - SET (LIB_INSTALL_DIR "lib") - ENDIF (CMAKE_SIZEOF_VOID_P MATCHES "8") - ENDIF (EXISTS /etc/redhat-release) - IF (EXISTS /etc/suse-release OR EXISTS /etc/SuSE-release) - SET (PACKAGE_FORMAT "RPM") - # SET (PACKAGE_DEPS "libwx_baseu-2_8-0-wxcontainer MesaGLw libbz2-1 portaudio") - IF (CMAKE_SIZEOF_VOID_P MATCHES "8") - SET (ARCH "x86_64") - SET (LIB_INSTALL_DIR "lib64") - ELSE (CMAKE_SIZEOF_VOID_P MATCHES "8") - SET (ARCH "i386") - SET (LIB_INSTALL_DIR "lib") - ENDIF (CMAKE_SIZEOF_VOID_P MATCHES "8") - ENDIF (EXISTS /etc/suse-release OR EXISTS /etc/SuSE-release) - IF (EXISTS /etc/gentoo-release) - SET (LIB_INSTALL_DIR "lib${LIB_SUFFIX}") - ENDIF (EXISTS /etc/gentoo-release) - IF(APPLE) - IF (CMAKE_SIZEOF_VOID_P MATCHES "8") -# IF (CMAKE_OSX_64) - SET(ARCH "x86_64") -# ENDIF (CMAKE_OSX_64) - ENDIF (CMAKE_SIZEOF_VOID_P MATCHES "8") - ENDIF() -ELSE (NOT WIN32) - # On WIN32 probably CMAKE_SIZEOF_VOID_P EQUAL 8, but we don't use it at all now... - SET (ARCH "i386") -ENDIF (NOT WIN32) - -IF (NOT CMAKE_INSTALL_PREFIX) - SET(CMAKE_INSTALL_PREFIX ${TENTATIVE_PREFIX}) -ENDIF (NOT CMAKE_INSTALL_PREFIX) - -MESSAGE (STATUS "*** Will install to ${CMAKE_INSTALL_PREFIX} ***") +SET(PARENT opencpn) + SET(PREFIX_DATA share) -SET(PREFIX_PKGDATA ${PREFIX_DATA}/${PACKAGE_NAME}) -SET(PREFIX_LIB "${CMAKE_INSTALL_PREFIX}/${LIB_INSTALL_DIR}") +SET(PREFIX_LIB lib) IF(WIN32) MESSAGE (STATUS "Install Prefix: ${CMAKE_INSTALL_PREFIX}") @@ -150,10 +85,6 @@ IF(WIN32) ENDIF(EXISTS ${PROJECT_SOURCE_DIR}/data) ENDIF(WIN32) -SET(PREFIX_PARENTDATA ${PREFIX_DATA}/${PARENT}) -SET(PREFIX_PARENTLIB ${PREFIX_LIB}/${PARENT}) -MESSAGE (STATUS "******** Install Target: ${PREFIX_PARENTLIB}") - IF(UNIX AND NOT APPLE) SET(PREFIX_PARENTDATA ${PREFIX_DATA}/${PARENT}) IF(NOT DEFINED PREFIX_PLUGINS) @@ -165,21 +96,3 @@ IF(UNIX AND NOT APPLE) INSTALL(DIRECTORY data DESTINATION ${PREFIX_PARENTDATA}/plugins/${PACKAGE_NAME}) ENDIF() ENDIF(UNIX AND NOT APPLE) - -IF(APPLE) - # For Apple build, we need to copy the "data" directory contents to the build directory, so that the packager can pick them up. - if (NOT EXISTS "${PROJECT_BINARY_DIR}/data/") - file (MAKE_DIRECTORY "${PROJECT_BINARY_DIR}/data/") - message ("Generating data directory") - endif () - - FILE(GLOB PACKAGE_DATA_FILES ${CMAKE_SOURCE_DIR}/data/*) - - FOREACH (_currentDataFile ${PACKAGE_DATA_FILES}) - MESSAGE (STATUS "copying: ${_currentDataFile}" ) - configure_file(${_currentDataFile} ${CMAKE_CURRENT_BINARY_DIR}/data COPYONLY) - ENDFOREACH (_currentDataFile ) - - INSTALL(TARGETS ${PACKAGE_NAME} RUNTIME LIBRARY DESTINATION ${PREFIX_PARENTLIB}) - -ENDIF(APPLE) diff --git a/cmake/PluginPackage.cmake b/cmake/PluginPackage.cmake index 0a19e80..6aeaa87 100644 --- a/cmake/PluginPackage.cmake +++ b/cmake/PluginPackage.cmake @@ -10,15 +10,12 @@ SET(CPACK_PACKAGE_NAME "${PACKAGE_NAME}") SET(CPACK_PACKAGE_VENDOR "opencpn.org") SET(CPACK_PACKAGE_DESCRIPTION_SUMMARY ${CPACK_PACKAGE_NAME} ${PACKAGE_VERSION}) -SET(PACKAGE_VERSION "${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}" ) -SET(CPACK_PACKAGE_VERSION ${PACKAGE_VERSION}) +SET(CPACK_PACKAGE_VERSION "${PACKAGE_VERSION}-${OCPN_MIN_VERSION}") SET(CPACK_PACKAGE_VERSION_MAJOR ${VERSION_MAJOR}) SET(CPACK_PACKAGE_VERSION_MINOR ${VERSION_MINOR}) SET(CPACK_PACKAGE_VERSION_PATCH ${VERSION_PATCH}) -MESSAGE(STATUS "CPACK_PACKAGE_VERSION: ${CPACK_PACKAGE_VERSION}, PACKAGE_VERSION ${PACKAGE_VERSION}") SET(CPACK_INSTALL_CMAKE_PROJECTS "${CMAKE_CURRENT_BINARY_DIR};${PACKAGE_NAME};ALL;/") SET(CPACK_PACKAGE_EXECUTABLES OpenCPN ${PACKAGE_NAME}) -SET(CPACK_DEBIAN_PACKAGE_MAINTAINER ${CPACK_PACKAGE_CONTACT}) IF(WIN32) # to protect against confusable windows users, let us _not_ generate zip packages @@ -38,23 +35,11 @@ IF(WIN32) # These lines set the name of the Windows Start Menu shortcut and the icon that goes with it # SET(CPACK_NSIS_INSTALLED_ICON_NAME "${PACKAGE_NAME}") - SET(CPACK_NSIS_DISPLAY_NAME "OpenCPN ${PACKAGE_NAME}") - - SET(CPACK_PACKAGE_FILE_NAME "${PACKAGE_FILE_NAME}_${CPACK_PACKAGE_VERSION}-${OCPN_MIN_VERSION}_win32" ) - MESSAGE(STATUS "CPACK_PACKAGE_VERSION ${CPACK_PACKAGE_VERSION}") +SET(CPACK_NSIS_DISPLAY_NAME "OpenCPN ${PACKAGE_NAME}") SET(CPACK_NSIS_DIR "${PROJECT_SOURCE_DIR}/buildwin/NSIS_Unicode") #Gunther SET(CPACK_BUILDWIN_DIR "${PROJECT_SOURCE_DIR}/buildwin") #Gunther - MESSAGE(STATUS "FILE: ${CPACK_PACKAGE_FILE_NAME}") - add_custom_command(OUTPUT ${CPACK_PACKAGE_FILE_NAME} - COMMAND signtool sign /v /f \\cert\\OpenCPNSPC.pfx /d http://www.opencpn.org /t http://timestamp.verisign.com/scripts/timstamp.dll ${CPACK_PACKAGE_FILE_NAME} - WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} - DEPENDS ${PACKAGE_NAME} - COMMENT "Code-Signing: ${CPACK_PACKAGE_FILE_NAME}") - ADD_CUSTOM_TARGET(codesign COMMENT "code signing: Done." - DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/${CPACK_PACKAGE_FILE_NAME} ) - ELSE(WIN32) SET(CPACK_PACKAGE_INSTALL_DIRECTORY ${PACKAGE_NAME}) ENDIF(WIN32) @@ -88,6 +73,7 @@ IF(UNIX AND NOT APPLE) # need apt-get install rpm, for rpmbuild SET(PACKAGE_DEPS "opencpn, bzip2, gzip") + SET(PACKAGE_RELEASE 1) IF (CMAKE_SYSTEM_PROCESSOR MATCHES "arm*") @@ -124,10 +110,11 @@ IF(UNIX AND NOT APPLE) SET(CPACK_PACKAGE_DESCRIPTION_SUMMARY "${PACKAGE_NAME} PlugIn for OpenCPN") SET(CPACK_PACKAGE_DESCRIPTION "${PACKAGE_NAME} PlugIn for OpenCPN") - SET(CPACK_SET_DESTDIR ON) +# SET(CPACK_SET_DESTDIR ON) + SET(CPACK_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}") - SET(CPACK_PACKAGE_FILE_NAME "${PACKAGE_FILE_NAME}_${PACKAGE_VERSION}-${OCPN_MIN_VERSION}_${ARCH}" ) + SET(CPACK_PACKAGE_FILE_NAME "${PACKAGE_NAME}_${PACKAGE_VERSION}-${PACKAGE_RELEASE}_${ARCH}" ) ENDIF(UNIX AND NOT APPLE) IF(TWIN32 AND NOT UNIX) @@ -158,66 +145,53 @@ ENDIF(TWIN32 AND NOT UNIX) INCLUDE(CPack) +IF(NOT STANDALONE MATCHES "BUNDLED") IF(APPLE) - MESSAGE (STATUS "*** Staging to build PlugIn OSX Package the new way ***") -# -- Run the BundleUtilities cmake code - set(CPACK_BUNDLE_PLIST "${CMAKE_SOURCE_DIR}/buildosx/Info.plist.in") - - SET(CPACK_PACKAGE_FILE_NAME "${PACKAGE_FILE_NAME}_${PACKAGE_VERSION}-${OCPN_MIN_VERSION}" ) - -# set(APPS "\${CMAKE_INSTALL_PREFIX}/bin/OpenCPN.app") - set(APPS "") - set(DIRS "") - - # INSTALL(DIRECTORY DESTINATION "bin/OpenCPN.app/Contents/PlugIns") - install( - FILES ${PREFIX_PARENTLIB}/lib${PACKAGE_NAME}.dylib - DESTINATION "bin/OpenCPN.app/Contents/PlugIns" - ) - set( - LIBS - "\${CMAKE_INSTALL_PREFIX}/bin/OpenCPN.app/Contents/PlugIns/lib${PACKAGE_NAME}.dylib" - ) - MESSAGE(STATUS "osX package: ${CPACK_PACKAGE_FILE_NAME}, package_version: ${PACKAGE_VERSION}, package_release: ${OCPN_MIN_VERSION}") - add_custom_command( - OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${CPACK_PACKAGE_FILE_NAME}.dmg - COMMAND chmod +x ${CMAKE_SOURCE_DIR}/buildosx/create-dmg - COMMAND - ${CMAKE_SOURCE_DIR}/buildosx/create-dmg - --volname "${PACKAGE_NAME} Installer" - --background ${CMAKE_SOURCE_DIR}/buildosx/background.png - ${CMAKE_CURRENT_BINARY_DIR}/${CPACK_PACKAGE_FILE_NAME}.dmg - ${CMAKE_INSTALL_PREFIX}/bin/ - DEPENDS ${CMAKE_INSTALL_PREFIX}/bin/OpenCPN.app/Contents/PlugIns/lib${PACKAGE_NAME}.dylib - WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} - COMMENT "create-dmg [${CPACK_PACKAGE_FILE_NAME}]: Generated dmg file." - ) - add_custom_target( - create-dmg - COMMENT "create-dmg: Done." - DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/${CPACK_PACKAGE_FILE_NAME}.dmg - ) - - MESSAGE (STATUS "*** Staging to build PlugIn OSX Package the old way ***") - configure_file(${PROJECT_SOURCE_DIR}/cmake/gpl.txt +MESSAGE (STATUS "*** Staging to build PlugIn OSX Package ***") + + # Copy a bunch of files so the Packages installer builder can find them + # relative to ${CMAKE_CURRENT_BINARY_DIR} + # This avoids absolute paths in the chartdldr_pi.pkgproj file + +configure_file(${PROJECT_SOURCE_DIR}/cmake/gpl.txt ${CMAKE_CURRENT_BINARY_DIR}/license.txt COPYONLY) - - configure_file(${PROJECT_SOURCE_DIR}/buildosx/InstallOSX/pkg_background.jpg + +configure_file(${PROJECT_SOURCE_DIR}/buildosx/InstallOSX/pkg_background.jpg ${CMAKE_CURRENT_BINARY_DIR}/pkg_background.jpg COPYONLY) - configure_file(${PROJECT_SOURCE_DIR}/buildosx/InstallOSX/${PACKAGE_NAME}.pkgproj.in + # Patch the pkgproj.in file to make the output package name conform to Xxx-Plugin_x.x.pkg format + # Key is: + # NAME + # ${VERBOSE_NAME}-Plugin_${VERSION_MAJOR}.${VERSION_MINOR} + + configure_file(${PROJECT_SOURCE_DIR}/buildosx/InstallOSX/${PACKAGE_NAME}.pkgproj.in ${CMAKE_CURRENT_BINARY_DIR}/${VERBOSE_NAME}.pkgproj) - ADD_CUSTOM_COMMAND( - OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${VERBOSE_NAME}-Plugin_${PLUGIN_VERSION_MAJOR}.${PLUGIN_VERSION_MINOR}.${PLUGIN_VERSION_PATCH}_${OCPN_MIN_VERSION}.pkg + ADD_CUSTOM_COMMAND( + OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${VERBOSE_NAME}-Plugin.pkg COMMAND /usr/local/bin/packagesbuild -F ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_BINARY_DIR}/${VERBOSE_NAME}.pkgproj WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} DEPENDS ${PACKAGE_NAME} COMMENT "create-pkg [${PACKAGE_NAME}]: Generating pkg file." - ) +) + + ADD_CUSTOM_TARGET(create-pkg COMMENT "create-pkg: Done." + DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/${VERBOSE_NAME}-Plugin.pkg ) - ADD_CUSTOM_TARGET(create-pkg COMMENT "create-pkg: Done." - DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/${VERBOSE_NAME}-Plugin_${PLUGIN_VERSION_MAJOR}.${PLUGIN_VERSION_MINOR}.${PLUGIN_VERSION_PATCH}_${OCPN_MIN_VERSION}.pkg ) ENDIF(APPLE) +IF(WIN32) + SET(CPACK_PACKAGE_FILE_NAME "${PACKAGE_NAME}-${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}-win32.exe" ) + MESSAGE(STATUS "FILE: ${CPACK_PACKAGE_FILE_NAME}") + add_custom_command(OUTPUT ${CPACK_PACKAGE_FILE_NAME} + COMMAND signtool sign /v /f \\cert\\OpenCPNSPC.pfx /d http://www.opencpn.org /t http://timestamp.verisign.com/scripts/timstamp.dll ${CPACK_PACKAGE_FILE_NAME} + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} + DEPENDS ${PACKAGE_NAME} + COMMENT "Code-Signing: ${CPACK_PACKAGE_FILE_NAME}") + ADD_CUSTOM_TARGET(codesign COMMENT "code signing: Done." + DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/${CPACK_PACKAGE_FILE_NAME} ) + +ENDIF(WIN32) +ENDIF(NOT STANDALONE MATCHES "BUNDLED") + diff --git a/cmake/version.h.in b/cmake/version.h.in index f029f0c..9ce040e 100644 --- a/cmake/version.h.in +++ b/cmake/version.h.in @@ -1,11 +1,4 @@ -#define PLUGIN_NAME ${PROJECT_NAME} -#define PLUGIN_CATALOG_NAME wxS("opencpn-${PROJECT_NAME}") #define PLUGIN_VERSION_MAJOR ${VERSION_MAJOR} #define PLUGIN_VERSION_MINOR ${VERSION_MINOR} #define PLUGIN_VERSION_PATCH ${VERSION_PATCH} #define PLUGIN_VERSION_DATE "${VERSION_DATE}" -#define OCPN_MIN_VERSION ${OCPN_MIN_VERSION} -// API version of OCPN to use -#define OCPN_API_VERSION_MAJOR ${OCPN_API_VERSION_MAJOR} -#define OCPN_API_VERSION_MINOR ${OCPN_API_VERSION_MINOR} - diff --git a/src/icons.cpp b/src/icons.cpp index c2d1496..3921c63 100644 --- a/src/icons.cpp +++ b/src/icons.cpp @@ -1,4 +1,5 @@ -/* Autogenerated by png2wx.pl on Tue Oct 8 13:37:23 2019 */ +/* Autogenerated by png2wx.pl on Fri May 29 16:20:54 2015 */ + #include #ifndef WX_PRECOMP # include @@ -24,7 +25,7 @@ wxBitmap *_img_marina_grn; wxBitmap *_img_pier_yel; wxBitmap *_img_plugin_logo; wxBitmap *_img_ramp_azu; -wxBitmap *_img_ramp_grn; + void initialize_images(void) { @@ -93,16 +94,12 @@ void initialize_images(void) _img_pier_yel = new wxBitmap(wxImage(sm)); } { - wxMemoryInputStream sm("\211PNG\r\n\032\n\000\000\000\rIHDR\000\000\000 \000\000\000 \b\006\000\000\000szz\364\000\000\000\006bKGD\000\377\000\377\000\377\240\275\247\223\000\000\000\011pHYs\000\000\013\023\000\000\013\023\001\000\232\234\030\000\000\000\atIME\a\343\n\b\024\037,7\255\232\023\000\000\001gIDATX\303\355W\261\221\304 \014\224\3174B\352\031\022\n\240!R\312 \245\241+\300\211\013P\3466\374\311\353F\346\001\0036\301\315\374F\366\030\263+\261B0\355\373\016\034\353\272\0360\020Z\353\211\277\213\230\034\021\341\375~\303\266m\217\022+\245\300\030\003\000pp\021\"\0368\202\034\000>sJ)!\233\001>\220\340\275?\275;\347\212D\245\361\251\300^W\312\235s\247I8\201\265\026\254\265\311o\361\1779\210\332\024\306\223q2\357}5as\006r@\304\344s+.3\020\257i\311\a-c\253\005\344&\340n\246\347\236%\020-\203)\302\334z\363\357\217\n\210\335M\025@\221#\"\204\020\3009\a\336\373&!\257\273Q\227\3126\345\211\241\036h1\337\3552|\n\377\002\276S\0005 D\374l\303\274)\r\027@\256\017!\024+\341+\226@\364\374\024\247}h7\254\351x\361\271`\350\022\224\242\355\311\204H\235^K\207Rn\274\026\314\363\014\313\262\\g\300\030\003J\251G\215F\344\277\307\362\023\246\332\213\011\265\334\332}\"W\226\361\305\344\217\200\034\350\322r%\202\310c\242\333&\324ZOR\312\342\216\327J\336\\\005%\021=\344]e\230\022\321K\336\344\201\234'\250\017\364\220wo\305\314\315G\312\331-\370\001q=\300\031B*k\327\000\000\000\000IEND\256B`\202", 474); + wxMemoryInputStream sm("\211PNG\r\n\032\n\000\000\000\rIHDR\000\000\000 \000\000\000 \b\006\000\000\000szz\364\000\000\000\006bKGD\000\377\000\377\000\377\240\275\247\223\000\000\000\011pHYs\000\000\013\023\000\000\013\023\001\000\232\234\030\000\000\000\atIME\a\337\001\006\0247:z\223\000\034\000\000\020+IDATX\011\001 \020\337\357\001\346\346\346\377\000\000\000\000\000\000\000\000\000\000\000\000RRR\000\a\a\a\000\005\005\005\000\000\000\000\000\000\000\000\000\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\001\001\000\000\000\000\000\000\000\000\000\377\377\377\000\377\377\377\000\001\001\001\000\001\001\001\000\376\376\376\000\001\001\001\000\377\377\377\000\004\004\004\000\240\240\240\000\000\000\000\000\000\000\000\000\000\000\000\000\001\346\346\346\377\000\000\000\000\000\000\000\000QQQ\000\364K\013\000\340D\373\000\365\033\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\013\345\001\000 \274\005\000\032\303\003\000\241\241\241\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\n\n\n\000\340D\373\000\365\033\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\365\033\377\000\340D\373\000\375\375\375\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\004\004\004\000\365\033\377\000\000\000\000\000\000\000\000\000\000\000\000\000\227\021s\000\325\031\242\000\343\033\256\000\177\016a\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000~\016`\000\331\031\245\000\325\031\242\000\227\021s\000\000\000\000\000\000\000\000\000\000\000\000\000\365\033\377\000\001\001\001\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\376\376\376\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000i\357\215\000\000\000\000\000\227\021s\000g\rN\000r\016W\000\017\344H\000\000\000\000\000\261\024\207\000\000\000\000\000O\354y\000\000\000\000\000\361\034\270\000\374\377\375\000\252\366\276\000i\357\215\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\001\001\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\001\001\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000i\357\215\000i\357\215\000\000\000\000\000\000\000\000\000\377\036\303\000\373\377\374\000\002\000\002\000\377\036\303\000\001\342=\000\017\344H\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\232\363\262\000\005\001\004\000\003\001\002\000\255\366\301\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\325\031\242\000\022\001\016\000\345\376\354\000\036\003\026\000\025\003\021\000\001\342=\000\025\003\020\000\000\000\000\000\000\000\000\000\002\000\001\000\000\000\000\000\314\030\234\000\377\000\377\000\346\374\354\000(\005\036\000\374\000\375\000+\347^\000\000\000\000\000\000\000\000\000\000\000\000\000\001\001\001\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000+\347^\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000Q\n>\000\000\000\000\000\000\000\000\000Q\n>\000\000\000\000\0004\350d\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\001\001\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\277\026\222\000@\b1\000\001\342=\000\001\342=\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\370\035\275\000\307\371\325\000A\352n\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\227\021s\000\372\035\277\000\353\376\360\000\001\342=\000\000\000\000\000\252\023\202\000\377\036\303\000\377\036\303\000\252\023\202\000\000\000\000\000\b\343C\000\362\376\365\000\367\035\274\000\227\021s\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\001\001\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\227\021s\000>\b/\000\006\343A\000\000\000\000\000\000\000\000\000\000\000\000\0009\a+\000\000\000\000\000\000\000\000\0009\a+\000\000\000\000\000\000\000\000\000O\354y\000\000\000\000\000\325\031\242\000\227\021s\000i\357\215\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000i\357\215\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\034\004\026\000\000\000\000\000\000\000\000\000\034\004\026\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000+\347^\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\001\001\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\001\001\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\325\031\242\000\000\000\000\000\274\370\314\000\313\371\327\000\000\000\000\000\325\031\242\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000*\005!\000\000\000\000\000E\352q\000\000\000\000\000\000\000\000\000*\005!\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\001\001\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\001\001\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\326\373\337\000\000\000\000\000\325\031\242\000\000\000\000\000\326\373\337\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\036\303\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\036\303\000\001\342=\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\001\001\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\344\374\352\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\344\374\352\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\002\002\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\375\375\375\000\013\345\001\000\365\033\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\035\346S\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\013\345\001\000\374\374\374\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\001\001\001\000 \274\005\000\013\345\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\013\345\001\000 \274\005\000\371\371\371\000\000\000\000\000\000\000\000\000\000\000\000\000\001\346\346\346\377\000\000\000\000\000\000\000\000\000\000\000\000\\\\\\\000\000\000\000\000\002\002\002\000\377\377\377\000\001\001\001\000\377\377\377\000\335R\374\000\340L\375\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \264\003\000$\257\005\000\000\000\000\000\000\000\000\000\000\000\000\000\373\373\373\000\370\370\370\000\257\257\257\000\000\000\000\000\000\000\000\000\000\000\000\000\001\346\346\346\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\\\\\\\000\336S\375\000\340L\375\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \264\003\000#\256\004\000\243\243\243\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\244\244\244\000$\257\005\000 \264\003\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \264\003\000#\256\004\000\243\243\243\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\242\242\242\000\"\255\003\000 \264\003\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \264\003\000\"\255\003\000\243\243\243\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\244\244\244\000 \253\001\000 \264\003\000\000\000\000\000\000\000\000\000 \264\003\000!\254\002\000\244\244\244\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\346\346\346\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000[[[\000\337T\376\000\000\000\000\000!\254\002\000\245\245\245\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\346\346\346\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000RRR\000\000\000\000\000\256\256\256\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\315%<8 2`2\000\000\000\000IEND\256B`\202", 4254); _img_plugin_logo = new wxBitmap(wxImage(sm)); } { wxMemoryInputStream sm("\211PNG\r\n\032\n\000\000\000\rIHDR\000\000\000 \000\000\000%\b\006\000\000\000#\267\353G\000\000\000\001sRGB\000\256\316\034\351\000\000\000\006bKGD\000\377\000\377\000\377\240\275\247\223\000\000\000\011pHYs\000\000\013\023\000\000\013\023\001\000\232\234\030\000\000\000\atIME\a\335\006\033\0031\022]\216H\314\000\000\003\357IDATX\303\355\226[lTU\024\206\277s\031\346RmK\245\005\333\231\352\324N\243m\264&@{\274$\275P\252\306\030\037\2244$\0301\210\004_H\324\244&b)Hb\032}\340\211\304\aC\346\251V\037E\001\223N!TBK\323\332\202\200\255\241ha\332\261X{A\230\2313s\266\017\325\351\314\3646\227\026_\370\337\366:{\257\365\237\265\327\277\326\206\373\370\237!\305\0334M\023f\263\031\305b\2363\032\306\322^d9f\257\b\033H\212\014\262\214\320CH\212\n,y\221\353RM*uY\025\324Q\001\271\0206\014\216O\236\245\365\326\025~\031}9\375\032h\333\024\246\3059g{\245;\310\353\327?\243w\352\n\361\345\"\204@\226$^\315\251\242\325\265\207s\317\347\322\3462\321\3462Q\226w:\261\032\210\317@C\217\302\343\371\247hq\326Gl'mV\266O\035\342\346\237\343\274d\325\250\265l\344\2315\245\345\253\240\a\275\350\014\014\335`\327\223]\254\017g#+\n\035!\211\275\003\331\211\253 \036\177\313\001r\324L\352\354v\352\345\267!\027B\241\020\036\257\227\326\231^\216\371\aq\347\177\314\021}\037C\243>\000\276\274X\0319_^\334\311\236\322\013|qys\212}@\022\377\236\221#\263BUU\352\013\013\331*\034\004\205\216\"+L\370\0024\014\351\363\216\367\377\272\223\376d:a\274\n\304\274&&\307\3545Kk0\014\203\222\374\r\364\345\303D`\212\236\340U\316\372\a8~\371\305\344\373\300\262\317\245\005;\353\234\213\034s\026u\031\233\371$w7}U\016:\265\207\330]\326\235\3704\\j\030%\336\352\347\\f\230m\274\273\3565>\3344\230\332\025l\351\234\006\246\323&\365t\356\314\334O\206\215\325\315\300B\370i|cb5p/\036$\222I]\234@8\034;|V\032-N\201\261\324\243\024Ib\177\363\201U!\361\337\263<\020\b,\255\264\232\332Z\021I\225a\314\312\3060\230\266?\214\376\346\241\204\202\231\334Md\217\214\306\330t]\307\357\367\323\325\325%%+\365\b\261\231G\n\226%ar7\221\365\273\227\366\366v)\355F\024\215\016\217G\312\364\3720\271\233V,xR\031X.\023&w\023\231\277\335\304\343\361$\3453%\335UWW\213\333NG\204\204\311\335\304\203\327o\320\321\321\221\264\277\224\205_SS#f\036\265\003\244\034a\306\323b \031\023\276J\235\031\273u\202\301`Z:\307\365\372(--U\355+U\034\204\257R\347\316\3575jjj\322\3267\356\347\317\222%K\324\271\347\a\353\305x\215\337\260\370\375~\345\367\373\025\267\344\006\344\037\254d\r\254\365nB\334\000\000\000\000IEND\256B`\202", 1400); - _img_ramp_grn = new wxBitmap(wxImage(sm)); - } return; } diff --git a/src/icons.h b/src/icons.h index 8ae246f..59f9fab 100644 --- a/src/icons.h +++ b/src/icons.h @@ -1,4 +1,4 @@ -/* Autogenerated by png2wx.pl on Tue Oct 8 13:37:23 2019 */ +/* Autogenerated by png2wx.pl on Fri May 29 16:20:54 2015 */ #ifndef ICONS_H #define ICONS_H 1 @@ -27,6 +27,5 @@ extern wxBitmap *_img_marina_grn; extern wxBitmap *_img_pier_yel; extern wxBitmap *_img_plugin_logo; extern wxBitmap *_img_ramp_azu; -extern wxBitmap *_img_ramp_grn; #endif /* ICONS_H */ diff --git a/src/images/logo_images/plugin_logo.png b/src/images/logo_images/plugin_logo.png deleted file mode 100644 index f04456386291aa39b5b6469433364ebd6becd5b2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4254 zcmd^COGs2v82;}(92?OzO?s$|Js@%sMbLwatPvH1=Aj1=n$Jq#(%jKeujtF@MC}?Xrkm1MH9MFLI;7@-fTA$6aD7mr7f7N+eNUp zFL%kUxyY$GsBh+>s7lGJF{CX>=864Zq~*{=e2Pk(g|yh2$5y-8nQNLmX!aNmFKK80 z3n6`q*0@VZrx=yJJ!0B{QL8*>0xAGUtMl&QEOCD0yW^(JE+ZwNW~YJ-6<(#Cnd?~v zu;(g;iwEg(WQ58mPpK-)xvd_+3HV+-MDODtS#Y4;%x`7QhXw=>${gEGpX1Z?t$2Xc zBghPlSIQnpRsjI*$XrJmW91x!jaxir=3M0YkwovnS3EhUgTP2zpk@awUB9*N zQf68)dB$|%GE-o|sEd>mP|IV1@mpdwhV(z6W@i=YS#*@Cc-i^f%3hSGOh8qNj-1C| zuNCooft5a)T-pLV6&Tkili@H~Djj!nIHZvBl?)d~++NjtA$P`D96BIQ)8c`x>$>D4 zrGpCK>I}m_P5fFOi9{r5>AL`$#>PfwfKs6+kQBz30i9m&k+0Mek}&bzbJD8*pC2|* zMWay)hr`t0-!E7yA10DUnIN%O2V!$3f#55HF6!>?RuGa;r7cKqGAr%r>0zrv04qv2 zIB;wy0OPK%E?Uv&q-04z2A$oN0}qr|0&qYje7B5d6)FL~^tOZPV3Q90(u8)M8yXsD xw0`zW3c-7Od+oYPcJodEDEO2I1%p90&gb=X^|sBv4NV*1TU}A>5AJGe{Q=(DSdst$ diff --git a/src/images/plugin_logo.png b/src/images/plugin_logo.png index 612da13b9cd07ce2c9c391d79e5032322267296c..f04456386291aa39b5b6469433364ebd6becd5b2 100644 GIT binary patch literal 4254 zcmd^COGs2v82;}(92?OzO?s$|Js@%sMbLwatPvH1=Aj1=n$Jq#(%jKeujtF@MC}?Xrkm1MH9MFLI;7@-fTA$6aD7mr7f7N+eNUp zFL%kUxyY$GsBh+>s7lGJF{CX>=864Zq~*{=e2Pk(g|yh2$5y-8nQNLmX!aNmFKK80 z3n6`q*0@VZrx=yJJ!0B{QL8*>0xAGUtMl&QEOCD0yW^(JE+ZwNW~YJ-6<(#Cnd?~v zu;(g;iwEg(WQ58mPpK-)xvd_+3HV+-MDODtS#Y4;%x`7QhXw=>${gEGpX1Z?t$2Xc zBghPlSIQnpRsjI*$XrJmW91x!jaxir=3M0YkwovnS3EhUgTP2zpk@awUB9*N zQf68)dB$|%GE-o|sEd>mP|IV1@mpdwhV(z6W@i=YS#*@Cc-i^f%3hSGOh8qNj-1C| zuNCooft5a)T-pLV6&Tkili@H~Djj!nIHZvBl?)d~++NjtA$P`D96BIQ)8c`x>$>D4 zrGpCK>I}m_P5fFOi9{r5>AL`$#>PfwfKs6+kQBz30i9m&k+0Mek}&bzbJD8*pC2|* zMWay)hr`t0-!E7yA10DUnIN%O2V!$3f#55HF6!>?RuGa;r7cKqGAr%r>0zrv04qv2 zIB;wy0OPK%E?Uv&q-04z2A$oN0}qr|0&qYje7B5d6)FL~^tOZPV3Q90(u8)M8yXsD xw0`zW3c-7Od+oYPcJodEDEO2I1%p90&gb=X^|sBv4NV*1TU}A>5AJGe{Q=(DSdst$ delta 403 zcmV;E0c`%BA=(3wQGeqK2oxVIH?5iz0004JNklxsXMm>dz|{eHu? zZI2QwrN9^i0B~>-A|5z`8~{FZN+}_m0X~r6y+6G>=ZZw7@qeknURTPUbEio-fwdN_ zwaIVse>sTS6vmTrGVgsgVRHs@K*Z#8D=sq-uW88#En}+%4-|aGd3jYGWQvfv}MEq>SyeSPA zK&}rV6f5B?mVZF>{1m5sXg93sc=5Sl=n|Bo?a72lonA|aQf|B!%<~M(vRr4t7z0YF zM~z10zsK?urrL`MwcOf$B3G92#pI8G9O%+=C4$IfqT43aT2E5S;*Qr!-dqJG5k2Hx xWtbAtOWx#xoF}Lc^pJON#mvn|%GoXW0dYOR8A2*+*9-sv002ovPDHLkV1m%jxYz&y diff --git a/src/images/ramp_grn.png b/src/images/ramp_grn.png deleted file mode 100644 index 210b2afa0022d3fd861c1eee783e0ab57dacf8b8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1400 zcmV-;1&8{HP)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2iyS| z7aSPvmr%+800j6+L_t(o!|j(@Y*bYk$A9PEbLUPsDy0F_QZqskS3nUuE`d@fSe0l3 zqCs#anjjBGUW^!Hga<<6gC+zMFfsUGG>T2MNm7!^QCNr~!vCX4ofMYvE+=uNXa1ios6f?A#Z`}fD~%HfAHGc#!k zSo9YvGBD7EhITzkX^VqPf1yQtz+&3L#64~Jhm?|Vp~8!SoFL->IvUx+L%2{Sxa&Fq zuImo|AT-1T86WBGF#!y1j=Z@-;ozbY)*zxRToh_N(f(fmMvHbGod@lic!WeCP$+U# z26dCRQ|RQS#luJ&GL@eUBsF(zBdTKj;asL=pp7hL^4Qh&Sh|ZBBW0J3bU{i0Vpz09 z&oMW%n3?)?ip?Sby0iCiu)mSLu?8AqA&yxgY|X_ZB!f|u9F!cjpa4RFD-;67qR#cS zPW_5P@6>zcjnJTA&m1Zex zCoN+}MgiGmBK1M_Tf4u;&?Qmjj16F9=FYKv9FZZsNDQH42%TD*In>vL-mCGNSOJJ^xjZdOSd+1oQ~LQ)tLmr#Gz8VtKLemP)(toCS=sv$u5i-_pn$LzB~MPG zOwK2ey?~Da+qU_(tC}w&m3$egVpqY3d}_TzbEJ(+qKl2;okW#|Ydfqq1ALINhW8>n z##sl%U`%M57Vi~ON>=BW^OAa!n6l6{oijb>+0e6%u!taq#49{tC@S2;R74IZ6yub$ zV2FhTw`f|zSyOm$U6)5E&!ukiPX3N|b1W93Hqu1ZKpl zTWGb~>2$l8trs!ND5BHp;zaBW2*E?1yU5cf5wg#7*7}{>wLIo|W?|#d7(GoFecU5` zm|}3cLL~u^Sc>7Gbt2BwX?20qu?s`}8GxVd)@$c=!9}jJ*J?=M_LSQmpNf*s149fr zxHoMKAMT>-0630AR)?TpS*R2zom6E&S!8txY}+0?27J{9?E#D4!styI%cIeOu`{i# ztV|72HT1wxO7ZJ*oAzZ+O2&MZI>i-6!kT4SL?RLD>+40jsU8Q`w!%pY!dIy?^9RX+ z0|!#lt)&Ve7z~Qy3IkuIK4HewVjvk4zDk`LyLE!WU|KrI_4+6+EmiF+RUCw`Qs>U^ zHEL>V($+Wb=g*QQOVqjN2kXUnjo+~N{eI>5`xUq32IL>CWDTtKZbIAu0000m_IconName == _T("ramp_azu")) return g_ViewRamps; - else if (wp->m_IconName == _T("ramp_grn")) - return g_ViewOthers; else if (wp->m_IconName == _T("others")) return g_ViewOthers; else if (wp->m_IconName == _T("aton_gry")) @@ -1204,9 +1200,7 @@ void squiddio_pi::SetLogsWindow() { } void squiddio_pi::OnToolbarToolCallback(int id) { - SetToolbarItemState( m_leftclick_tool_id, true ); PreferencesDialog(m_parent_window); - SetToolbarItemState( m_leftclick_tool_id, false ); } void squiddio_pi::SetPluginMessage(wxString &message_id, wxString &message_body) { g_psJSON->ProcessMessage(message_id, message_body); @@ -1408,10 +1402,6 @@ void squiddio_pi::AddODIcons() pAPI->PointIconName = _T("ramp_azu"); pAPI->PointIconDescription = _("Boat Ramp"); m_pODAddPointIcon(pAPI); - pAPI->PointIcon = *_img_ramp_grn; - pAPI->PointIconName = _T("ramp_grn"); - pAPI->PointIconDescription = _("Boat Yard"); - m_pODAddPointIcon(pAPI); pAPI->PointIcon = *_img_logimg_N; pAPI->PointIconName = _T("logimg_N"); pAPI->PointIconDescription = _("North"); From ec4760b9fa677cc1ef57e6e437034a570fb72941 Mon Sep 17 00:00:00 2001 From: Alec Leamas Date: Mon, 16 Jul 2018 22:40:35 +0200 Subject: [PATCH 02/31] flatpak: Initial packaging. --- flatpak/.gitignore | 3 +++ flatpak/Makefile | 16 +++++++++++++ flatpak/README.md | 22 ++++++++++++++++++ .../org.opencpn.OpenCPN.Plugin.squiddio.yaml | 23 +++++++++++++++++++ 4 files changed, 64 insertions(+) create mode 100644 flatpak/.gitignore create mode 100644 flatpak/Makefile create mode 100644 flatpak/README.md create mode 100644 flatpak/org.opencpn.OpenCPN.Plugin.squiddio.yaml diff --git a/flatpak/.gitignore b/flatpak/.gitignore new file mode 100644 index 0000000..fd1206b --- /dev/null +++ b/flatpak/.gitignore @@ -0,0 +1,3 @@ +app +repo +.flatpak-builder diff --git a/flatpak/Makefile b/flatpak/Makefile new file mode 100644 index 0000000..9755fb9 --- /dev/null +++ b/flatpak/Makefile @@ -0,0 +1,16 @@ +PLUGIN = org.opencpn.OpenCPN.Plugin.squiddio + +all: build + + +build: + flatpak-builder --force-clean app $(PLUGIN).yaml + flatpak build-export repo app stable + +install: + flatpak install --user --reinstall -y $(CURDIR)/repo $(PLUGIN) + +uninstall: + flatpak uninstall --user $(PLUGIN) + + diff --git a/flatpak/README.md b/flatpak/README.md new file mode 100644 index 0000000..e90c087 --- /dev/null +++ b/flatpak/README.md @@ -0,0 +1,22 @@ +squiddio flatpak README +----------------------- + +This is a simple packaging to be use the squiddio plugin when using the opencpn's +flatpak package. To build and install: + + - Install flatpak and flatpak-builder as described in https://flatpak.org/ + - Install the opencpn and opencpn base plugin flatpak packages. Using the + provisionary test repo at fedorapeople.org do: + + $ flatpak install --user \ + https://leamas.fedorapeople.org/opencpn/opencpn.flatpakref + $ flatpak install --user \ + https://leamas.fedorapeople.org/opencpn/opencpn-plugin-base.flatpakref + + - The squiddio plugin can now be built and installed using + + $ make + $ make install + +The actual version built depends on the tag: stanza in the yaml file; update to +other versions as preferred. diff --git a/flatpak/org.opencpn.OpenCPN.Plugin.squiddio.yaml b/flatpak/org.opencpn.OpenCPN.Plugin.squiddio.yaml new file mode 100644 index 0000000..5f0abd5 --- /dev/null +++ b/flatpak/org.opencpn.OpenCPN.Plugin.squiddio.yaml @@ -0,0 +1,23 @@ +id: org.opencpn.OpenCPN.Plugin.squiddio +runtime: org.opencpn.OpenCPN +runtime-version: stable +sdk: org.freedesktop.Sdk//1.6 +build-extension: true +separate-locales: false +appstream-compose: false +finish-args: + - --socket=x11 + - --socket=pulseaudio + - --filesystem=home + - --device=all +modules: + - name: squiddio + no-autogen: true + cmake: true + builddir: true + config-opts: + - -DCMAKE_INSTALL_PREFIX=/app/extensions/squiddio + sources: + - type: git + url: https://github.com/mauroc/squiddio_pi.git + commit: 614fd0f From 206b9a8813bb9fdb5c85a085fbe86ebfddbe8afd Mon Sep 17 00:00:00 2001 From: Alec Leamas Date: Thu, 22 Aug 2019 21:15:23 +0200 Subject: [PATCH 03/31] cmake: Define OpenGL lib to use (mute warning). --- CMakeLists.txt | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index 049815b..b17df34 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -37,6 +37,9 @@ SET(OCPN_MIN_VERSION "ov50") #SET(CMAKE_BUILD_TYPE Debug) +# Prefer libGL.so to libOpenGL.so, see CMP0072 +set(OpenGL_GL_PREFERENCE "LEGACY") + INCLUDE("cmake/PluginConfigure.cmake") SET(SRC_SQUIDDIO From 187137146dd5f8a07adea4f8849a254efb116b2d Mon Sep 17 00:00:00 2001 From: Alec Leamas Date: Thu, 22 Aug 2019 21:24:35 +0200 Subject: [PATCH 04/31] build: Add api16/opencpn.lib, handle api version. --- CMakeLists.txt | 1 + {src => api-16}/ocpn_plugin.h | 0 api-16/opencpn.lib | Bin 0 -> 149150 bytes cmake/PluginInstall.cmake | 2 +- 4 files changed, 2 insertions(+), 1 deletion(-) rename {src => api-16}/ocpn_plugin.h (100%) create mode 100644 api-16/opencpn.lib diff --git a/CMakeLists.txt b/CMakeLists.txt index b17df34..4345ea8 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -143,6 +143,7 @@ SET(SRC_NMEA0183 ) INCLUDE_DIRECTORIES(nmea0183) INCLUDE_DIRECTORIES(src/wxJSON) +INCLUDE_DIRECTORIES(api-16) ADD_DEFINITIONS(-DTIXML_USE_STL) IF(UNIX) diff --git a/src/ocpn_plugin.h b/api-16/ocpn_plugin.h similarity index 100% rename from src/ocpn_plugin.h rename to api-16/ocpn_plugin.h diff --git a/api-16/opencpn.lib b/api-16/opencpn.lib new file mode 100644 index 0000000000000000000000000000000000000000..7755bbddb54bb197d8deaba593eb24bab77d243e GIT binary patch literal 149150 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

+5Olho;cA-e>5Dy3a;D-a*|l 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 literal 0 HcmV?d00001 diff --git a/cmake/PluginInstall.cmake b/cmake/PluginInstall.cmake index fa45849..082f80c 100644 --- a/cmake/PluginInstall.cmake +++ b/cmake/PluginInstall.cmake @@ -17,7 +17,7 @@ IF(WIN32) # glu32.lib) TARGET_LINK_LIBRARIES(${PACKAGE_NAME} ${OPENGL_LIBRARIES}) - SET(OPENCPN_IMPORT_LIB "${PARENT}.lib") + SET(OPENCPN_IMPORT_LIB "${CMAKE_SOURCE_DIR}/api-16/opencpn.lib") ENDIF(MSVC) IF(MINGW) From 753d2a36d46158bccd478122cac45e44e8ce7836 Mon Sep 17 00:00:00 2001 From: Alec Leamas Date: Thu, 22 Aug 2019 21:35:35 +0200 Subject: [PATCH 05/31] build: Build a tar.gz package along with ordinary installer The standard PluginInstall has a nasty bug which uses the source path as part of installation path. Remove, and use a simple OpenCPN.app prefix The loader expects the apple tarball to have paths like: - OpenCPN.app/Contents/PlugIns: .dylib plugin file, binaries and helper libs. - OpenCPN.app/Contents/Resources: .lproj gettext translations directories. The prefix is discarded and could be anything. Let "make package" build both the traditional installer and the new installation tarball. Remove references to other formats, notably rpm. --- cmake/PluginInstall.cmake | 8 +------- cmake/PluginLocalization.cmake | 2 +- cmake/PluginPackage.cmake | 19 +++++-------------- 3 files changed, 7 insertions(+), 22 deletions(-) diff --git a/cmake/PluginInstall.cmake b/cmake/PluginInstall.cmake index 082f80c..455bebf 100644 --- a/cmake/PluginInstall.cmake +++ b/cmake/PluginInstall.cmake @@ -45,15 +45,9 @@ IF(UNIX) ENDIF(UNIX) IF(APPLE) - INSTALL(TARGETS ${PACKAGE_NAME} RUNTIME LIBRARY DESTINATION ${CMAKE_BINARY_DIR}/OpenCPN.app/Contents/SharedSupport/plugins) FIND_PACKAGE(ZLIB REQUIRED) TARGET_LINK_LIBRARIES( ${PACKAGE_NAME} ${ZLIB_LIBRARIES} ) - INSTALL(TARGETS ${PACKAGE_NAME} RUNTIME LIBRARY DESTINATION ${CMAKE_BINARY_DIR}/OpenCPN.app/Contents/PlugIns) - - IF(EXISTS ${PROJECT_SOURCE_DIR}/data) - INSTALL(DIRECTORY data DESTINATION ${CMAKE_BINARY_DIR}/OpenCPN.app/Contents/SharedSupport/plugins/${PACKAGE_NAME}) - ENDIF() - + INSTALL(TARGETS ${PACKAGE_NAME} RUNTIME LIBRARY DESTINATION OpenCPN.app/Contents/PlugIns) ENDIF(APPLE) IF(UNIX AND NOT APPLE) diff --git a/cmake/PluginLocalization.cmake b/cmake/PluginLocalization.cmake index 061c6ff..a8cb666 100644 --- a/cmake/PluginLocalization.cmake +++ b/cmake/PluginLocalization.cmake @@ -61,7 +61,7 @@ MACRO(GETTEXT_BUILD_MO) ) IF(APPLE) - INSTALL(FILES ${_gmoFile} DESTINATION ${CMAKE_INSTALL_PREFIX}/bin/OpenCPN.app/Contents/Resources/${_poBasename}.lproj RENAME opencpn-${PACKAGE_NAME}.mo ) + INSTALL(FILES ${_gmoFile} DESTINATION ${CMAKE_INSTALL_PREFIX}/OpenCPN.app/Contents/Resources/${_poBasename}.lproj RENAME opencpn-${PACKAGE_NAME}.mo ) ELSE(APPLE) INSTALL(FILES ${_gmoFile} DESTINATION ${PREFIX_DATA}/locale/${_poBasename}/LC_MESSAGES RENAME opencpn-${PACKAGE_NAME}.mo ) ENDIF(APPLE) diff --git a/cmake/PluginPackage.cmake b/cmake/PluginPackage.cmake index 6aeaa87..9efe3dc 100644 --- a/cmake/PluginPackage.cmake +++ b/cmake/PluginPackage.cmake @@ -18,8 +18,8 @@ SET(CPACK_INSTALL_CMAKE_PROJECTS "${CMAKE_CURRENT_BINARY_DIR};${PACKAGE_NAME};AL SET(CPACK_PACKAGE_EXECUTABLES OpenCPN ${PACKAGE_NAME}) IF(WIN32) -# to protect against confusable windows users, let us _not_ generate zip packages -# SET(CPACK_GENERATOR "NSIS;ZIP") + # The TGZ (tar.gz) is used by experimental plugin manager, + SET(CPACK_GENERATOR "NSIS;TGZ") # override install directory to put package files in the opencpn directory SET(CPACK_PACKAGE_INSTALL_DIRECTORY "OpenCPN") @@ -79,9 +79,9 @@ IF(UNIX AND NOT APPLE) IF (CMAKE_SYSTEM_PROCESSOR MATCHES "arm*") SET (ARCH "armhf") # don't bother with rpm on armhf - SET(CPACK_GENERATOR "DEB;RPM;TBZ2") + SET(CPACK_GENERATOR "DEB;TGZ") ELSE () - SET(CPACK_GENERATOR "DEB;RPM;TBZ2") + SET(CPACK_GENERATOR "DEB;TGZ") IF (CMAKE_SIZEOF_VOID_P MATCHES "8") SET (ARCH "amd64") @@ -100,17 +100,8 @@ IF(UNIX AND NOT APPLE) SET(CPACK_DEBIAN_PACKAGE_SECTION "misc") SET(CPACK_DEBIAN_COMPRESSION_TYPE "xz") # requires my patches to cmake - SET(CPACK_RPM_PACKAGE_VERSION "${CPACK_PACKAGE_VERSION}") - SET(CPACK_RPM_PACKAGE_REQUIRES ${PACKAGE_DEPS}) -# SET(CPACK_RPM_PACKAGE_GROUP "Applications/Engineering") - SET(CPACK_RPM_PACKAGE_LICENSE "gplv3+") - - SET(CPACK_RPM_COMPRESSION_TYPE "xz") -# SET(CPACK_RPM_USER_BINARY_SPECFILE "${PROJECT_SOURCE_DIR}/opencpn.spec.in") - SET(CPACK_PACKAGE_DESCRIPTION_SUMMARY "${PACKAGE_NAME} PlugIn for OpenCPN") SET(CPACK_PACKAGE_DESCRIPTION "${PACKAGE_NAME} PlugIn for OpenCPN") -# SET(CPACK_SET_DESTDIR ON) SET(CPACK_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}") @@ -178,7 +169,7 @@ configure_file(${PROJECT_SOURCE_DIR}/buildosx/InstallOSX/pkg_background.jpg ADD_CUSTOM_TARGET(create-pkg COMMENT "create-pkg: Done." DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/${VERBOSE_NAME}-Plugin.pkg ) - + SET(CPACK_GENERATOR "TGZ") ENDIF(APPLE) IF(WIN32) From 1860599e0c2572ddde65543e24817b4367ff97c9 Mon Sep 17 00:00:00 2001 From: Alec Leamas Date: Thu, 22 Aug 2019 21:45:55 +0200 Subject: [PATCH 06/31] build: give plugin a more unique name. Some places including bintray uses a common namespace for all plugins. Make sure the plugin filename is unique by including both source and target name and version. --- CMakeLists.txt | 8 ++++++ cmake/PluginPackage.cmake | 13 ++++++--- cmake/PluginSetup.cmake | 59 +++++++++++++++++++++++++++++++++++++++ 3 files changed, 76 insertions(+), 4 deletions(-) create mode 100644 cmake/PluginSetup.cmake diff --git a/CMakeLists.txt b/CMakeLists.txt index 4345ea8..b986c40 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -35,6 +35,13 @@ SET(VERSION_PATCH "4") SET(VERSION_DATE "19/05/2019") SET(OCPN_MIN_VERSION "ov50") +SET(PACKAGE_VERSION "${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}") +SET(PKG_RELEASE "1") +SET(PKG_API_VERSION "1.16") +SET(PKG_AUTHOR "Mauro Calvi") +SET(PKG_NVR ${PACKAGE_NAME}-${PACKAGE_VERSION}-${PKG_RELEASE}) + + #SET(CMAKE_BUILD_TYPE Debug) # Prefer libGL.so to libOpenGL.so, see CMP0072 @@ -166,6 +173,7 @@ ELSE(TINYXML_FOUND) ENDIF(TINYXML_FOUND) INCLUDE("cmake/PluginInstall.cmake") +INCLUDE("cmake/PluginSetup.cmake") INCLUDE("cmake/PluginLocalization.cmake") INCLUDE("cmake/PluginPackage.cmake") diff --git a/cmake/PluginPackage.cmake b/cmake/PluginPackage.cmake index 9efe3dc..bf605d7 100644 --- a/cmake/PluginPackage.cmake +++ b/cmake/PluginPackage.cmake @@ -134,8 +134,6 @@ ENDIF(TWIN32 AND NOT UNIX) #ADD_CUSTOM_TARGET(dummy COMMENT "dummy: Done." DEPENDS ${PACKAGE_NAME}) -INCLUDE(CPack) - IF(NOT STANDALONE MATCHES "BUNDLED") IF(APPLE) MESSAGE (STATUS "*** Staging to build PlugIn OSX Package ***") @@ -172,8 +170,12 @@ configure_file(${PROJECT_SOURCE_DIR}/buildosx/InstallOSX/pkg_background.jpg SET(CPACK_GENERATOR "TGZ") ENDIF(APPLE) +SET(CPACK_PACKAGE_DESCRIPTION_SUMMARY "${PACKAGE_NAME} S63 chart PlugIn for OpenCPN") +SET(CPACK_PACKAGE_DESCRIPTION "${PACKAGE_NAME} S63 chart PlugIn for OpenCPN") +SET(CPACK_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}") +SET(CPACK_PACKAGE_FILE_NAME "${PKG_NVR}_${PKG_TARGET}-${PKG_TARGET_VERSION}") + IF(WIN32) - SET(CPACK_PACKAGE_FILE_NAME "${PACKAGE_NAME}-${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}-win32.exe" ) MESSAGE(STATUS "FILE: ${CPACK_PACKAGE_FILE_NAME}") add_custom_command(OUTPUT ${CPACK_PACKAGE_FILE_NAME} COMMAND signtool sign /v /f \\cert\\OpenCPNSPC.pfx /d http://www.opencpn.org /t http://timestamp.verisign.com/scripts/timstamp.dll ${CPACK_PACKAGE_FILE_NAME} @@ -182,7 +184,10 @@ IF(WIN32) COMMENT "Code-Signing: ${CPACK_PACKAGE_FILE_NAME}") ADD_CUSTOM_TARGET(codesign COMMENT "code signing: Done." DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/${CPACK_PACKAGE_FILE_NAME} ) - ENDIF(WIN32) + +INCLUDE(CPack) + + ENDIF(NOT STANDALONE MATCHES "BUNDLED") diff --git a/cmake/PluginSetup.cmake b/cmake/PluginSetup.cmake new file mode 100644 index 0000000..06ee4b4 --- /dev/null +++ b/cmake/PluginSetup.cmake @@ -0,0 +1,59 @@ +# +# Export variables used in plugin setup: GIT_HASH, GIT_COMMIT, +# PKG_TARGET, PKG_TARGET_VERSION and PKG_NVR + +execute_process( + COMMAND git log -1 --format=%h + WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} + OUTPUT_VARIABLE GIT_HASH + OUTPUT_STRIP_TRAILING_WHITESPACE +) + +execute_process( + COMMAND git log -1 --format=%ci + WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} + OUTPUT_VARIABLE GIT_COMMIT_DATE + OUTPUT_STRIP_TRAILING_WHITESPACE +) + +if (OCPN_FLATPAK) + set(PKG_TARGET "flatpak") + set(PKG_TARGET_VERSION "18.08") # As of flatpak/*yaml +elseif (MINGW) + set(PKG_TARGET "mingw") + if (CMAKE_SYSTEM_VERSION) + set(PKG_TARGET_VERSION ${CMAKE_SYSTEM_VERSION}) + else () + set(PKG_TARGET_VERSION 10) + endif () +elseif (MSVC) + set(PKG_TARGET "msvc") + if (CMAKE_SYSTEM_VERSION) + set(PKG_TARGET_VERSION ${CMAKE_SYSTEM_VERSION}) + elseif (CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION) + set(PKG_TARGET_VERSION ${CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION}) + else () + set(PKG_TARGET_VERSION 10) + endif () +elseif (APPLE) + set(PKG_TARGET "darwin") + execute_process(COMMAND "sw_vers" "-productVersion" + OUTPUT_VARIABLE PKG_TARGET_VERSION) +elseif (UNIX) + # Some linux dist: + execute_process(COMMAND "lsb_release" "-is" + OUTPUT_VARIABLE PKG_TARGET) + execute_process(COMMAND "lsb_release" "-rs" + OUTPUT_VARIABLE PKG_TARGET_VERSION) +else () + set(PKG_TARGET "unknown") + set(PKG_TARGET_VERSION 1) +endif () + + +string(STRIP ${PKG_TARGET} PKG_TARGET) +string(TOLOWER ${PKG_TARGET} PKG_TARGET) +string(STRIP ${PKG_TARGET_VERSION} PKG_TARGET_VERSION) +string(TOLOWER ${PKG_TARGET_VERSION} PKG_TARGET_VERSION) +set(PKG_TARGET_NVR ${PKG_TARGET}-${PKG_TARGET_VERSION}) + From 25a89cd19c62e7f36ea685da279292948125bcb3 Mon Sep 17 00:00:00 2001 From: Alec Leamas Date: Thu, 22 Aug 2019 22:29:22 +0200 Subject: [PATCH 07/31] build: Move to C++11 --- CMakeLists.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index b986c40..12fb454 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -48,6 +48,7 @@ SET(PKG_NVR ${PACKAGE_NAME}-${PACKAGE_VERSION}-${PKG_RELEASE}) set(OpenGL_GL_PREFERENCE "LEGACY") INCLUDE("cmake/PluginConfigure.cmake") +set(CMAKE_CXX_STANDARD 11) SET(SRC_SQUIDDIO src/squiddio_pi.h From b99f86fce872b19de5399d3d67c91bb300b69e10 Mon Sep 17 00:00:00 2001 From: Alec Leamas Date: Thu, 22 Aug 2019 21:54:07 +0200 Subject: [PATCH 08/31] build: Add plugin XML metadata generation. --- CMakeLists.txt | 5 +++++ squiddio-plugin.xml.in | 26 ++++++++++++++++++++++++++ 2 files changed, 31 insertions(+) create mode 100644 squiddio-plugin.xml.in diff --git a/CMakeLists.txt b/CMakeLists.txt index 12fb454..728647e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -178,3 +178,8 @@ INCLUDE("cmake/PluginSetup.cmake") INCLUDE("cmake/PluginLocalization.cmake") INCLUDE("cmake/PluginPackage.cmake") +set(PLUGIN_NAME squiddio-plugin-${PKG_TARGET}-${PKG_TARGET_VERSION}) +configure_file( + ${CMAKE_SOURCE_DIR}/squiddio-plugin.xml.in + ${CMAKE_CURRENT_BINARY_DIR}/${PLUGIN_NAME}.xml +) diff --git a/squiddio-plugin.xml.in b/squiddio-plugin.xml.in new file mode 100644 index 0000000..83c8a3e --- /dev/null +++ b/squiddio-plugin.xml.in @@ -0,0 +1,26 @@ + + + squiddio + ${PACKAGE_VERSION} + ${PKG_RELEASE} +

Repository of sailing destination waypoints + + ${PKG_API_VERSION} + no + ${PKG_AUTHOR} + https://github.com/opencpn-radar-pi/radar_pi + + +Squiddio Plugin makes its global user-sourced and user-maintained +repository of sailing destinations (marinas, anchorages, yacht clubs, +docks, fuel stations etc.) available as waypoints in OpenCPN. OpenCPN +Android comes with sQuiddio built in. + + + ${PKG_TARGET} + ${PKG_TARGET_VERSION} + + https://bintray.com/leamas/OpenCPN/download_file?file_path=${PKG_NVR}_${PKG_TARGET_NVR}.tar.gz + + https://opencpn.org/OpenCPN/plugins/sQuiddio.html + From 08e68b09bf78148c5f0c99bd4db36a961d0cf1af Mon Sep 17 00:00:00 2001 From: Alec Leamas Date: Sun, 8 Sep 2019 15:07:13 +0200 Subject: [PATCH 09/31] mingw: Fix opencpn import lib --- api-16/libopencpn.dll.a | Bin 0 -> 266450 bytes cmake/PluginInstall.cmake | 3 +-- 2 files changed, 1 insertion(+), 2 deletions(-) create mode 100644 api-16/libopencpn.dll.a diff --git a/api-16/libopencpn.dll.a b/api-16/libopencpn.dll.a new file mode 100644 index 0000000000000000000000000000000000000000..bc781bb03106c2635fb00ef63c0d8011a12ed423 GIT binary patch literal 266450 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 HZU_HgrS{Gv literal 0 HcmV?d00001 diff --git a/cmake/PluginInstall.cmake b/cmake/PluginInstall.cmake index 455bebf..61061a1 100644 --- a/cmake/PluginInstall.cmake +++ b/cmake/PluginInstall.cmake @@ -24,8 +24,7 @@ IF(WIN32) # assuming wxwidgets is compiled with unicode, this is needed for mingw headers ADD_DEFINITIONS( " -DUNICODE" ) TARGET_LINK_LIBRARIES(${PACKAGE_NAME} ${OPENGL_LIBRARIES}) - SET(OPENCPN_IMPORT_LIB "${PARENT}.dll") - SET( CMAKE_SHARED_LINKER_FLAGS "-L../buildwin" ) + SET(OPENCPN_IMPORT_LIB "${CMAKE_SOURCE_DIR}/api-16/libopencpn.dll.a") ENDIF(MINGW) TARGET_LINK_LIBRARIES( ${PACKAGE_NAME} ${OPENCPN_IMPORT_LIB} ) From 7116858818aae3c809112e39cae7744db1ef08cb Mon Sep 17 00:00:00 2001 From: Alec Leamas Date: Sun, 8 Sep 2019 15:11:48 +0200 Subject: [PATCH 10/31] build: Update to handle recent cmake We are using deprecated and finally failing stuff. See: https://github.com/OpenCPN/OpenCPN/pull/1452 --- cmake/PluginConfigure.cmake | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/cmake/PluginConfigure.cmake b/cmake/PluginConfigure.cmake index b9ccc7f..118f03d 100644 --- a/cmake/PluginConfigure.cmake +++ b/cmake/PluginConfigure.cmake @@ -71,13 +71,13 @@ SET(BUILD_SHARED_LIBS "ON") # QT_ANDROID is a cross-build, so the native FIND_PACKAGE(wxWidgets...) and wxWidgets_USE_FILE is not useful. IF(NOT QT_ANDROID) IF(NOT DEFINED wxWidgets_USE_FILE) - SET(wxWidgets_USE_LIBS base core net xml html adv aui) + SET(wxWidgets_FIND_COMPONENTS base core net xml html adv aui) SET(BUILD_SHARED_LIBS TRUE) set (WXWIDGETS_FORCE_VERSION CACHE VERSION "Force usage of a specific wxWidgets version.") if(WXWIDGETS_FORCE_VERSION) set (wxWidgets_CONFIG_OPTIONS --version=${WXWIDGETS_FORCE_VERSION}) endif() - FIND_PACKAGE(wxWidgets REQUIRED) + FIND_PACKAGE(wxWidgets REQUIRED COMPONENTS ${wxWidgets_FIND_COMPONENTS}) ENDIF(NOT DEFINED wxWidgets_USE_FILE) INCLUDE(${wxWidgets_USE_FILE}) @@ -94,7 +94,7 @@ IF (NOT QT_ANDROID ) FIND_PACKAGE(OpenGL) IF(OPENGL_GLU_FOUND) - SET(wxWidgets_USE_LIBS ${wxWidgets_USE_LIBS} gl) + SET(wxWidgets_FIND_COMPONENTS ${wxWidgets_FIND_COMPONENTS} gl) INCLUDE_DIRECTORIES(${OPENGL_INCLUDE_DIR}) MESSAGE (STATUS "Found OpenGL..." ) From 2d9fa601f7b1bf261d6fba73257f776fffb216a3 Mon Sep 17 00:00:00 2001 From: Alec Leamas Date: Thu, 22 Aug 2019 22:03:26 +0200 Subject: [PATCH 11/31] ci: Add appveyor msvc build. --- appveyor.yml | 66 +++++++++++++++++++++++++++++++--------------------- 1 file changed, 39 insertions(+), 27 deletions(-) diff --git a/appveyor.yml b/appveyor.yml index dfbddb3..b067015 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -1,5 +1,7 @@ -clone_folder: c:\project\squiddio_pi -shallow_clone: true +clone_folder: c:\project\opencpn\squiddio_pi +shallow_clone: false +clone_depth: 10 + image: - Visual Studio 2017 @@ -7,13 +9,14 @@ platform: # - x64 - Win32 -configuration: Release +configuration: RelWithDebInfo test: OFF install: + # VS2015 and earlier version - '"C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\SetEnv.cmd" /x86' - call "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvars32.bat" - - # sent environment variables for wxWidgets + + # set environment variables for wxWidgets - set WXWIN=C:\wxWidgets-3.1.2 - set wxWidgets_ROOT_DIR=%WXWIN% - set wxWidgets_LIB_DIR=%WXWIN%\lib\vc_dll @@ -22,39 +25,48 @@ install: # install dependencies: - choco install poedit - - ps: Start-FileDownload http://opencpn.navnux.org/build_deps/nsis-3.04-setup.exe - - cmd: nsis-3.04-setup.exe /S - # Download and unzip wxwidgets - ps: Start-FileDownload http://opencpn.navnux.org/build_deps/wxWidgets-3.1.2.7z - cmd: 7z x wxWidgets-3.1.2.7z -o%WXWIN% > null - - set + # some debugging information + # - cmake --help + # - set Displays sensitive password! + + # build wxWidgets - Disabled as we provide prebuilt WX to save time + #- cmd: cd %WXWIN%\build\msw\ + #- cmd: nmake -f makefile.vc BUILD=release SHARED=1 CFLAGS=/D_USING_V120_SDK71_ CXXFLAGS=/D_USING_V120_SDK71_ + #- cmd: nmake -f makefile.vc BUILD=debug SHARED=1 CFLAGS=/D_USING_V120_SDK71_ CXXFLAGS=/D_USING_V120_SDK71_ before_build: - - cd c:\project\squiddio_pi + - cd c:\project\opencpn\squiddio_pi - mkdir build - cd build - - ps: Start-FileDownload https://downloads.sourceforge.net/project/opencpnplugins/opencpn_lib/4.99.1405-vc141_xp/opencpn.lib - - ps: Start-FileDownload http://opencpn.navnux.org/build_deps/OpenCPN_buildwin-4.99a.7z - - cmd: 7z x -y OpenCPN_buildwin-4.99a.7z -oc:\project\squiddio_pi\buildwin - - cmake -T v141_xp .. +# - ps: Start-FileDownload http://opencpn.navnux.org/build_deps/OpenCPN_buildwin-4.99a.7z +# - cmd: 7z x -y OpenCPN_buildwin-4.99a.7z -oc:\project\opencpn\buildwin + - cmake -T v141_xp -DOCPN_CI_BUILD=ON .. build_script: - - cmake --build . --target package --config release - # --target package doesn't work because of nsis not correctly installed + - cmake -G "Visual Studio 15 2017" .. + - cmake --build . --target install --config RelWithDebInfo + - cmake --build . --target package --config RelWithDebInfo + - dir *.* artifacts: - - path: 'build\*.exe' - name: installer + - path: 'build\*gz' + name: plugin_archive + - path: '**\*msvc*xml' + name: plugin_xml deploy: - description: 'release created by AppVeyor CI' - provider: GitHub - auth_token: '%GitHub_auth_token%' - artifact: installer,portable - draft: true - prerelease: true - on: - appveyor_repo_tag: true # deploy on tag push only - configuration: Release # Debug contains non-redist MS DLLs + - provider: BinTray + username: leamas + api_key: + secure: XleVzEPm+/uKCbcKlN9iMz7ueZPhqGlfNc4NgfJm4chdDOPUo4/S3iwVtTDz0QVC + subject: leamas + repo: OpenCPN + package: plugins + version: 1.15-0.beta2 + publish: true + override: true + explode: false From 69c5847365e45f4465ba95387fa2aecddbfb3794 Mon Sep 17 00:00:00 2001 From: Alec Leamas Date: Thu, 22 Aug 2019 22:21:08 +0200 Subject: [PATCH 12/31] ci: Add travis builds for macos and debian Updating the key is error-prone and requires the secret key. It also requires the travis command line utility. Using that and the key I was finally able to update .travis.yml using travis encrypt -x -a deploy.key -r leamas/squiddio_pi -x: Overwrite existing key -r: Name of repo Note that the repo is part of the key so after forking a new, encrypted key must be generated. --- .travis.yml | 34 ++++++++++++++++++++ ci/bintray.js | 58 ++++++++++++++++++++++++++++++++++ ci/control | 29 +++++++++++++++++ ci/docker-build-fedora.sh | 15 +++++++++ ci/opencpn-deps.spec | 66 +++++++++++++++++++++++++++++++++++++++ ci/opencpn-fedora.spec | 39 +++++++++++++++++++++++ ci/travis-build-debian.sh | 18 +++++++++++ ci/travis-build-fedora.sh | 32 +++++++++++++++++++ ci/travis-build-osx.sh | 29 +++++++++++++++++ 9 files changed, 320 insertions(+) create mode 100644 .travis.yml create mode 100644 ci/bintray.js create mode 100644 ci/control create mode 100755 ci/docker-build-fedora.sh create mode 100644 ci/opencpn-deps.spec create mode 100644 ci/opencpn-fedora.spec create mode 100755 ci/travis-build-debian.sh create mode 100755 ci/travis-build-fedora.sh create mode 100755 ci/travis-build-osx.sh diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000..5b72d64 --- /dev/null +++ b/.travis.yml @@ -0,0 +1,34 @@ +language: cpp +matrix: + include: + - env: + - OCPN_TARGET=xenial + dist: xenial + compiler: gcc + script: + - "./ci/travis-build-debian.sh" + - env: + - OCPN_TARGET=fedora + services: + - docker + script: + - "./ci/travis-build-fedora.sh" + - env: + - OCPN_TARGET=osx + os: osx + compiler: clang + script: + - "./ci/travis-build-osx.sh" +notifications: + email: false +git: + depth: 10 +deploy: + provider: bintray + file: ci/bintray.js + user: leamas + skip_cleanup: true + on: + all_branches: true + key: + secure: Mp9p6Y1lpkRqMnSvm6ibjiOnwT1GpvsoKRYGftO1dHptQSNn+Z0XiZElw9B47Pni5cR20Dq9ozRXrkNenIk2uYtv0PxTCtlEfDaHxgZBjdtnlvDT09LR5wlISmtZXLu9LU5Lp4WwNjWrVqt5qpTOwleDIjrpbhmGhGt7Y5oXzIwGYx3mnFb9/x+9DKsoYsi0uUppO91BWREhxJN3W/prRvK0iO78gu1OGbILz9jGPIjqpPOeFsiQci1+cwBseSbahCj/1kGuvujV8IqYJeMf9oIIae3Jyu2ewnxTmcRCimk8iI0xa+StS5ouaTi2yXR3BPCWvrvjSLmE/1gRiwv0US1KlbAkNAHIvKu+tuxQ6NPhOAPfwTBHtyAEYOn3SzxJBZD4NjKrcX0RTvTpLykFnbYwY705Hx5hphUgZtncEkPAThlUGK2EOnreAcG91KBybbF3aTbUGfhXoyt/iNoGNKbDnKjh6TF8T8BvgzG1gRXxhLv73t/+a2X/miENaQKWo9YGFYcVzuKFEKqhbFsriq2pNW4+wM85CgJS6XiDJg3+kvu2VJnNeWVarEmUyySPQzIlfQWYyYP5YD8fQZRFDzi0elF8nNyMYthe5lftQJUAeZEs+73WI00FLerhDOJZVyQg2oRe1zJM9LibaPa8UmjdBMyUyoc0ubcMhnUgiSQ= diff --git a/ci/bintray.js b/ci/bintray.js new file mode 100644 index 0000000..4cebf16 --- /dev/null +++ b/ci/bintray.js @@ -0,0 +1,58 @@ +{ + "package": { + "name": "plugins", + "repo": "OpenCPN", + "subject": "leamas", + "desc": "squiddio plugin automatic push", + "website_url": "www.jfrog.com", + "issue_tracker_url": "https://github.com/leamas/squiddio_pi/issues", + "vcs_url": "https://github.com/leamas/squiddio_pi.git", + "github_use_tag_release_notes": false, + "licenses": ["GPL2"], + "labels": [], + "public_download_numbers": false, + "public_stats": false, + "attributes": [{ + "name": "att5", + "values" : ["2014-12-28T19:43:37+0100"], + "type": "date" + }] + }, + + "version": { + "name": "1.15-0.beta2", + "desc": "Pre-release based on 5.0.0 beta2", + "released": "2019-03-14", + "vcs_tag": "1.15", + "attributes": [ + {"name": "VerAtt1", "values" : ["VerVal1"], "type": "string"}, + {"name": "VerAtt2", "values" : [1, 3.3, 5], "type": "number"}, + { + "name": "VerAtt3", + "values" : ["2015-01-01T19:43:37+0100"], + "type": "date" + } + ], + "gpgSign": false + }, + + "files": + [ + { + "includePattern": "build/(squiddio.*\\.tar.gz)", + "uploadPattern": "$1", + "matrixParams": {"override": 1} + }, + { + "includePattern": "build/(squiddio-plugin\\.xml)", + "uploadPattern": "$1", + "matrixParams": {"override": 1} + }, + { + "includePattern": "build/(squiddio-plugin-.*\\.xml)", + "uploadPattern": "$1", + "matrixParams": {"override": 1} + } + ], + "publish": true +} diff --git a/ci/control b/ci/control new file mode 100644 index 0000000..fe0c1ec --- /dev/null +++ b/ci/control @@ -0,0 +1,29 @@ +Source: opencpn +Build-Depends: debhelper (>= 9), + cmake, + libarchive-dev, + libbz2-dev, + libcairo2-dev, + libcurl4-openssl-dev, + libelf-dev, + libexif-dev, + libgdk-pixbuf2.0-dev, + libgtk2.0-dev, + liblz4-dev, + liblzma-dev, + libpango1.0-dev, + libsqlite3-dev, + libtinyxml-dev, + libunarr-dev | base-files, + libwxgtk3.0-dev, + libwxgtk3.0-0v5 | libwxgtk3.0-0, + libwxsvg-dev | base-files, + portaudio19-dev +Standards-Version: 4.3.0 +Homepage: https://opencpn.org + +Description: Packages needed to build opencpn on debian. + The Build-Depends field can be used to install dependencies + using mk-build-deps. + . + These packages are available in trusty+. diff --git a/ci/docker-build-fedora.sh b/ci/docker-build-fedora.sh new file mode 100755 index 0000000..f839187 --- /dev/null +++ b/ci/docker-build-fedora.sh @@ -0,0 +1,15 @@ +#!/bin/sh -xe + +# +# Actually build the artifacts inside the Fedora container. +# +set -xe + +df -h +cd /opencpn-ci +su -c "dnf install -y sudo dnf-plugins-core" +sudo dnf builddep -y ci/opencpn-fedora.spec +rm -rf build; mkdir build; cd build +cmake .. +make -j2 +make package diff --git a/ci/opencpn-deps.spec b/ci/opencpn-deps.spec new file mode 100644 index 0000000..8899406 --- /dev/null +++ b/ci/opencpn-deps.spec @@ -0,0 +1,66 @@ +Name: opencpn-deps +Version: 0.1 +Release: 1%{?dist} +Summary: Empty package with opencpn build dependencies + +License: MIT +URL: https://github.com/leamas/opencpn + +BuildRequires: cmake +BuildRequires: gettext +BuildRequires: make +BuildRequires: mingw-binutils-generic +BuildRequires: mingw-filesystem-base +BuildRequires: mingw32-binutils +BuildRequires: mingw32-bzip2 +BuildRequires: mingw32-cairo +BuildRequires: mingw32-curl +BuildRequires: mingw32-expat +BuildRequires: mingw32-filesystem +BuildRequires: mingw32-fontconfig +BuildRequires: mingw32-freetype +BuildRequires: mingw32-gcc +BuildRequires: mingw32-gcc-c++ +BuildRequires: mingw32-cpp +BuildRequires: mingw32-gettext +BuildRequires: mingw32-headers +BuildRequires: mingw32-glib2 +BuildRequires: mingw32-gtk2 +BuildRequires: mingw32-libarchive +BuildRequires: mingw32-libexif +BuildRequires: mingw32-libffi +BuildRequires: mingw32-libpng +BuildRequires: mingw32-libtiff +BuildRequires: mingw32-libxml2 +BuildRequires: mingw32-nsiswrapper +BuildRequires: mingw32-openssl +BuildRequires: mingw32-pcre +BuildRequires: mingw32-pixman +BuildRequires: mingw32-sqlite +BuildRequires: mingw32-win-iconv +BuildRequires: mingw32-wxWidgets3 >= 3.0.2 +BuildRequires: mingw32-xz-libs + +%description + +Empty package used to catch build dependencies for opencpn using +the mingw tools to create a Windows 32-bit executable + +Use dnf builddep opencpn-deps.spec to install the dependencies. + +%prep + + +%build + + +%install + + +%files +%doc COPYING + + +%changelog +* Fri Mar 01 2019 Alec Leamas - 0.1-1 +- Initial release diff --git a/ci/opencpn-fedora.spec b/ci/opencpn-fedora.spec new file mode 100644 index 0000000..00edf9e --- /dev/null +++ b/ci/opencpn-fedora.spec @@ -0,0 +1,39 @@ +Name: opencpn +Summary: Chartplotter and GPS navigation software +Version: 4.8.0 +Release: 4.1%{?dist} +License: GPLv2+ + +BuildRequires: bzip2-devel +BuildRequires: cmake +BuildRequires: desktop-file-utils +BuildRequires: elfutils-libelf-devel +BuildRequires: expat-devel +BuildRequires: gcc-c++ +BuildRequires: gettext +BuildRequires: libcurl-devel +BuildRequires: mesa-libGL-devel +BuildRequires: mesa-libGLU-devel +BuildRequires: portaudio-devel +BuildRequires: portaudio-devel +BuildRequires: redhat-lsb-core +BuildRequires: tar +BuildRequires: tinyxml-devel +BuildRequires: compat-wxGTK3-gtk2-devel +BuildRequires: xz-devel +BuildRequires: xz-lzma-compat + +%description +Empty package to catch build dependecies for OpenCPN + +%prep + +%build + +%install + +%changelog +* Sun Apr 28 2019 Alec Leamas - 4.8.0-4.1 +- rebuilt + + diff --git a/ci/travis-build-debian.sh b/ci/travis-build-debian.sh new file mode 100755 index 0000000..1aece3b --- /dev/null +++ b/ci/travis-build-debian.sh @@ -0,0 +1,18 @@ +#!/usr/bin/env bash + +# +# Build the Travis Debian artifacts +# +set -xe +sudo apt-get -qq update +sudo apt-get install devscripts equivs + +mkdir build +cd build +mk-build-deps ../ci/control +sudo apt-get install ./*all.deb || : +sudo apt-get --allow-unauthenticated install -f + +cmake -DCMAKE_BUILD_TYPE=Debug .. +make -sj2 +make package diff --git a/ci/travis-build-fedora.sh b/ci/travis-build-fedora.sh new file mode 100755 index 0000000..b54b7f8 --- /dev/null +++ b/ci/travis-build-fedora.sh @@ -0,0 +1,32 @@ +#!/usr/bin/env bash + +# +# Build the travis fedora artifacts. Uses docker to run Fedora on +# in the Travis ubuntu VM; the actual build is done in the Fedora +# container. +# + +# bailout on errors and echo commands. +set -xe +sudo apt-get -qq update + +DOCKER_SOCK="unix:///var/run/docker.sock" + +echo "DOCKER_OPTS=\"-H tcp://127.0.0.1:2375 -H $DOCKER_SOCK -s devicemapper\"" \ + | sudo tee /etc/default/docker > /dev/null +sudo service docker restart; +sleep 5; +sudo docker pull fedora:29; + +docker run --privileged -d -ti -e "container=docker" \ + -v /sys/fs/cgroup:/sys/fs/cgroup \ + -v $(pwd):/opencpn-ci:rw \ + fedora:29 /usr/sbin/init +DOCKER_CONTAINER_ID=$(docker ps | grep fedora | awk '{print $1}') +docker logs $DOCKER_CONTAINER_ID +docker exec -ti $DOCKER_CONTAINER_ID /bin/bash -xec \ + "bash -xe /opencpn-ci/ci/docker-build-fedora.sh 29; + echo -ne \"------\nEND OPENCPN-CI BUILD\n\";" +docker ps -a +docker stop $DOCKER_CONTAINER_ID +docker rm -v $DOCKER_CONTAINER_ID diff --git a/ci/travis-build-osx.sh b/ci/travis-build-osx.sh new file mode 100755 index 0000000..0ef4924 --- /dev/null +++ b/ci/travis-build-osx.sh @@ -0,0 +1,29 @@ +#!/usr/bin/env bash + +# +# Build the Travis OSX artifacts +# + +# bailout on errors and echo commands +set -xe + +brew install cairo libexif xz libarchive +wget http://opencpn.navnux.org/build_deps/wx312_opencpn50_macos109.tar.xz +tar xJf wx312_opencpn50_macos109.tar.xz -C /tmp +export PATH="/usr/local/opt/gettext/bin:$PATH" +echo 'export PATH="/usr/local/opt/gettext/bin:$PATH"' >> ~/.bash_profile + +mkdir build +cd build +test -z "$TRAVIS_TAG" && CI_BUILD=OFF || CI_BUILD=ON +cmake -DOCPN_CI_BUILD=$CI_BUILD \ + -DOCPN_USE_LIBCPP=ON \ + -DwxWidgets_CONFIG_EXECUTABLE=/tmp/wx312_opencpn50_macos109/bin/wx-config \ + -DwxWidgets_CONFIG_OPTIONS="--prefix=/tmp/wx312_opencpn50_macos109" \ + -DCMAKE_INSTALL_PREFIX=/tmp/opencpn -DCMAKE_OSX_DEPLOYMENT_TARGET=10.9 \ + .. +make -sj2 +make DESTDIR=orvar install +tar czf orvar.tar.gz orvar +make package +chmod 644 /usr/local/lib/lib*.dylib From 4b62982458349dada6fb03f062c06989bcf2ea8e Mon Sep 17 00:00:00 2001 From: Alec Leamas Date: Thu, 22 Aug 2019 22:42:44 +0200 Subject: [PATCH 13/31] Avoid using travis crappy bintray integration. The travis bintray integration seems just unstable. Use a raw access to the REST API in a shellscript instead. --- .gitignore | 1 + .travis.yml | 14 +++++++++----- ci/control | 1 + ci/opencpn-fedora.spec | 1 + ci/opencpn_rsa.enc | 39 +++++++++++++++++++++++++++++++++++++++ ci/travis-build-osx.sh | 1 + ci/travis-upload.sh | 24 ++++++++++++++++++++++++ squiddio-plugin.xml.in | 2 +- 8 files changed, 77 insertions(+), 6 deletions(-) create mode 100644 ci/opencpn_rsa.enc create mode 100755 ci/travis-upload.sh diff --git a/.gitignore b/.gitignore index 394c138..68931e3 100644 --- a/.gitignore +++ b/.gitignore @@ -9,6 +9,7 @@ CMakeFiles cscope.out .cproject .project +opencpn_rsa Release core .settings/ diff --git a/.travis.yml b/.travis.yml index 5b72d64..3f986b1 100644 --- a/.travis.yml +++ b/.travis.yml @@ -23,12 +23,16 @@ notifications: email: false git: depth: 10 -deploy: - provider: bintray - file: ci/bintray.js user: leamas skip_cleanup: true on: all_branches: true - key: - secure: Mp9p6Y1lpkRqMnSvm6ibjiOnwT1GpvsoKRYGftO1dHptQSNn+Z0XiZElw9B47Pni5cR20Dq9ozRXrkNenIk2uYtv0PxTCtlEfDaHxgZBjdtnlvDT09LR5wlISmtZXLu9LU5Lp4WwNjWrVqt5qpTOwleDIjrpbhmGhGt7Y5oXzIwGYx3mnFb9/x+9DKsoYsi0uUppO91BWREhxJN3W/prRvK0iO78gu1OGbILz9jGPIjqpPOeFsiQci1+cwBseSbahCj/1kGuvujV8IqYJeMf9oIIae3Jyu2ewnxTmcRCimk8iI0xa+StS5ouaTi2yXR3BPCWvrvjSLmE/1gRiwv0US1KlbAkNAHIvKu+tuxQ6NPhOAPfwTBHtyAEYOn3SzxJBZD4NjKrcX0RTvTpLykFnbYwY705Hx5hphUgZtncEkPAThlUGK2EOnreAcG91KBybbF3aTbUGfhXoyt/iNoGNKbDnKjh6TF8T8BvgzG1gRXxhLv73t/+a2X/miENaQKWo9YGFYcVzuKFEKqhbFsriq2pNW4+wM85CgJS6XiDJg3+kvu2VJnNeWVarEmUyySPQzIlfQWYyYP5YD8fQZRFDzi0elF8nNyMYthe5lftQJUAeZEs+73WI00FLerhDOJZVyQg2oRe1zJM9LibaPa8UmjdBMyUyoc0ubcMhnUgiSQ= + key: $BINTRAY_API_KEY +deploy: + provider: script + skip_cleanup: true + script: ci/travis-upload.sh + on: + branch: master + tags: false + diff --git a/ci/control b/ci/control index fe0c1ec..c18fe19 100644 --- a/ci/control +++ b/ci/control @@ -1,6 +1,7 @@ Source: opencpn Build-Depends: debhelper (>= 9), cmake, + curl, libarchive-dev, libbz2-dev, libcairo2-dev, diff --git a/ci/opencpn-fedora.spec b/ci/opencpn-fedora.spec index 00edf9e..731003a 100644 --- a/ci/opencpn-fedora.spec +++ b/ci/opencpn-fedora.spec @@ -6,6 +6,7 @@ License: GPLv2+ BuildRequires: bzip2-devel BuildRequires: cmake +BuildRequires: curl BuildRequires: desktop-file-utils BuildRequires: elfutils-libelf-devel BuildRequires: expat-devel diff --git a/ci/opencpn_rsa.enc b/ci/opencpn_rsa.enc new file mode 100644 index 0000000..b480da4 --- /dev/null +++ b/ci/opencpn_rsa.enc @@ -0,0 +1,39 @@ +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 +SRRjfjeVCMA8L/KFUWtODw== diff --git a/ci/travis-build-osx.sh b/ci/travis-build-osx.sh index 0ef4924..e86ff35 100755 --- a/ci/travis-build-osx.sh +++ b/ci/travis-build-osx.sh @@ -8,6 +8,7 @@ set -xe brew install cairo libexif xz libarchive +curl --version >/dev/null || brew install curl wget http://opencpn.navnux.org/build_deps/wx312_opencpn50_macos109.tar.xz tar xJf wx312_opencpn50_macos109.tar.xz -C /tmp export PATH="/usr/local/opt/gettext/bin:$PATH" diff --git a/ci/travis-upload.sh b/ci/travis-upload.sh new file mode 100755 index 0000000..b2dc61b --- /dev/null +++ b/ci/travis-upload.sh @@ -0,0 +1,24 @@ +#!/bin/sh +PKG="plugins" +VERSION=1.15-0.beta2 +OPTS="override=1;publish=1" + +set -x + +if [ -z "$BINTRAY_API_KEY" ]; then + echo 'Cannot deploy: missing $BINTRAY_API_KEY' + exit 0 +fi + +cd build +tarball=$(echo squiddio*.tar.gz) +xml=$(echo squiddio-plugin*.xml) + +echo "Uploading $tarball" +curl -T $tarball -uleamas:$BINTRAY_API_KEY \ + "https://api.bintray.com/content/leamas/OpenCPN/$PKG/$VERSION/$tarball;$OPTS" +echo +echo "Uploading $xml" +curl -T $xml -uleamas:$BINTRAY_API_KEY \ + "https://api.bintray.com/content/leamas/OpenCPN/$PKG/$VERSION/$xml;$OPTS" +echo diff --git a/squiddio-plugin.xml.in b/squiddio-plugin.xml.in index 83c8a3e..5a26175 100644 --- a/squiddio-plugin.xml.in +++ b/squiddio-plugin.xml.in @@ -20,7 +20,7 @@ Android comes with sQuiddio built in. ${PKG_TARGET} ${PKG_TARGET_VERSION} - https://bintray.com/leamas/OpenCPN/download_file?file_path=${PKG_NVR}_${PKG_TARGET_NVR}.tar.gz + https://dl.bintray.com/leamas/OpenCPN/${PKG_NVR}_${PKG_TARGET_NVR}.tar.gz https://opencpn.org/OpenCPN/plugins/sQuiddio.html From 51dea8bb7a3f90aa2343adf59663dbd94fdf9c96 Mon Sep 17 00:00:00 2001 From: Alec Leamas Date: Sat, 24 Aug 2019 22:44:51 +0200 Subject: [PATCH 14/31] Adding flatpak build. --- .travis.yml | 6 + CMakeLists.txt | 32 +- ci/docker-build-flatpak.sh | 20 + ci/travis-build-flatpak.sh | 32 + flatpak/.gitignore | 1 + flatpak/Makefile | 1589 ++++++++++++++++- flatpak/Makefile.fp | 16 + flatpak/README.md | 20 +- .../org.opencpn.OpenCPN.Plugin.squiddio.yaml | 31 +- 9 files changed, 1709 insertions(+), 38 deletions(-) create mode 100755 ci/docker-build-flatpak.sh create mode 100755 ci/travis-build-flatpak.sh create mode 100644 flatpak/Makefile.fp diff --git a/.travis.yml b/.travis.yml index 3f986b1..42e8a21 100644 --- a/.travis.yml +++ b/.travis.yml @@ -7,6 +7,12 @@ matrix: compiler: gcc script: - "./ci/travis-build-debian.sh" + - env: + - OCPN_TARGET=flatpak + services: + - docker + script: + - "./ci/travis-build-flatpak.sh" - env: - OCPN_TARGET=fedora services: diff --git a/CMakeLists.txt b/CMakeLists.txt index 728647e..522f3a5 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -41,6 +41,36 @@ SET(PKG_API_VERSION "1.16") SET(PKG_AUTHOR "Mauro Calvi") SET(PKG_NVR ${PACKAGE_NAME}-${PACKAGE_VERSION}-${PKG_RELEASE}) +INCLUDE("cmake/PluginSetup.cmake") +set(PLUGIN_NAME squiddio-plugin-${PKG_TARGET}-${PKG_TARGET_VERSION}) + +if (OCPN_FLATPAK) + find_program(TAR NAMES gtar tar) + if (NOT TAR) + message(FATAL_ERROR "tar not found, required for OCPN_FLATPAK") + endif () + configure_file( + ${CMAKE_SOURCE_DIR}/squiddio-plugin.xml.in + ${CMAKE_CURRENT_BINARY_DIR}/${PLUGIN_NAME}.xml + ) + add_custom_target(flatpak-build ALL + WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}/flatpak + COMMAND /usr/bin/flatpak-builder --force-clean + ${CMAKE_CURRENT_BINARY_DIR}/app + org.opencpn.OpenCPN.Plugin.squiddio.yaml + ) + add_custom_target("flatpak-pkg") + add_custom_command( + TARGET flatpak-pkg + COMMAND ${TAR} + -czf ${PKG_NVR}_${PKG_TARGET_NVR}.tar.gz + --transform 's|.*/files/|squiddio-flatpak-${PACKAGE_VERSION}/|' + ${CMAKE_CURRENT_BINARY_DIR}/app/files + ) + return () +endif() + + #SET(CMAKE_BUILD_TYPE Debug) @@ -174,11 +204,9 @@ ELSE(TINYXML_FOUND) ENDIF(TINYXML_FOUND) INCLUDE("cmake/PluginInstall.cmake") -INCLUDE("cmake/PluginSetup.cmake") INCLUDE("cmake/PluginLocalization.cmake") INCLUDE("cmake/PluginPackage.cmake") -set(PLUGIN_NAME squiddio-plugin-${PKG_TARGET}-${PKG_TARGET_VERSION}) configure_file( ${CMAKE_SOURCE_DIR}/squiddio-plugin.xml.in ${CMAKE_CURRENT_BINARY_DIR}/${PLUGIN_NAME}.xml diff --git a/ci/docker-build-flatpak.sh b/ci/docker-build-flatpak.sh new file mode 100755 index 0000000..1eb0e49 --- /dev/null +++ b/ci/docker-build-flatpak.sh @@ -0,0 +1,20 @@ +#!/bin/sh -xe +cd $(dirname $(readlink -fn $0)) + +# +# Actually build the Travis flatpak artifacts inside the Fedora container +# +set -xe + +df -h +cd /opencpn-ci +su -c "dnf install -y sudo cmake gcc-c++ flatpak-builder flatpak make tar" +flatpak remote-add --user --if-not-exists flathub \ + https://flathub.org/repo/flathub.flatpakrepo +flatpak install --user -y \ + http://opencpn.duckdns.org/opencpn/opencpn.flatpakref +flatpak install --user -y flathub org.freedesktop.Sdk//18.08 +rm -rf build && mkdir build && cd build +cmake -DOCPN_FLATPAK=ON .. +make flatpak-build +make flatpak-pkg diff --git a/ci/travis-build-flatpak.sh b/ci/travis-build-flatpak.sh new file mode 100755 index 0000000..c3b9b2d --- /dev/null +++ b/ci/travis-build-flatpak.sh @@ -0,0 +1,32 @@ +#!/usr/bin/env bash + +# +# Build the travis flatpak artifacts. Uses docker to run Fedora on +# in the Travis ubuntu VM; the actual build is done in the Fedora +# container. +# + +# bailout on errors and echo commands. +set -xe +sudo apt-get -qq update + +DOCKER_SOCK="unix:///var/run/docker.sock" + +echo "DOCKER_OPTS=\"-H tcp://127.0.0.1:2375 -H $DOCKER_SOCK -s devicemapper\"" \ + | sudo tee /etc/default/docker > /dev/null +sudo service docker restart; +sleep 5; +sudo docker pull fedora:28; + +docker run --privileged -d -ti -e "container=docker" \ + -v /sys/fs/cgroup:/sys/fs/cgroup \ + -v $(pwd):/opencpn-ci:rw \ + fedora:28 /usr/sbin/init +DOCKER_CONTAINER_ID=$(docker ps | grep fedora | awk '{print $1}') +docker logs $DOCKER_CONTAINER_ID +docker exec -ti $DOCKER_CONTAINER_ID /bin/bash -xec \ + "bash -xe /opencpn-ci/ci/docker-build-flatpak.sh 28; + echo -ne \"------\nEND OPENCPN-CI BUILD\n\";" +docker ps -a +docker stop $DOCKER_CONTAINER_ID +docker rm -v $DOCKER_CONTAINER_ID diff --git a/flatpak/.gitignore b/flatpak/.gitignore index fd1206b..84b2729 100644 --- a/flatpak/.gitignore +++ b/flatpak/.gitignore @@ -1,3 +1,4 @@ app repo .flatpak-builder +*.log diff --git a/flatpak/Makefile b/flatpak/Makefile index 9755fb9..354fb28 100644 --- a/flatpak/Makefile +++ b/flatpak/Makefile @@ -1,16 +1,1587 @@ -PLUGIN = org.opencpn.OpenCPN.Plugin.squiddio +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.14 -all: build +# Default target executed when no arguments are given to make. +default_target: all +.PHONY : default_target -build: - flatpak-builder --force-clean app $(PLUGIN).yaml - flatpak build-export repo app stable +# Allow only one "make -f Makefile2" at a time, but pass parallelism. +.NOTPARALLEL: -install: - flatpak install --user --reinstall -y $(CURDIR)/repo $(PLUGIN) -uninstall: - flatpak uninstall --user $(PLUGIN) +#============================================================================= +# Special targets provided by cmake. +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + + +# Remove some rules from gmake that .SUFFIXES does not remove. +SUFFIXES = + +.SUFFIXES: .hpux_make_needs_suffix_list + + +# Produce verbose output by default. +VERBOSE = 1 + +# Suppress display of executed commands. +$(VERBOSE).SILENT: + + +# A target that is always out of date. +cmake_force: + +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /usr/bin/cmake + +# The command to remove a file. +RM = /usr/bin/cmake -E remove -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /home/mk/src/squiddio_pi + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /home/mk/src/squiddio_pi/flatpak + +#============================================================================= +# Targets provided globally by CMake. + +# Special rule for the target install/strip +install/strip: preinstall + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Installing the project stripped..." + /usr/bin/cmake -DCMAKE_INSTALL_DO_STRIP=1 -P cmake_install.cmake +.PHONY : install/strip + +# Special rule for the target install/strip +install/strip/fast: preinstall/fast + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Installing the project stripped..." + /usr/bin/cmake -DCMAKE_INSTALL_DO_STRIP=1 -P cmake_install.cmake +.PHONY : install/strip/fast + +# Special rule for the target install/local +install/local: preinstall + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Installing only the local directory..." + /usr/bin/cmake -DCMAKE_INSTALL_LOCAL_ONLY=1 -P cmake_install.cmake +.PHONY : install/local + +# Special rule for the target install/local +install/local/fast: preinstall/fast + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Installing only the local directory..." + /usr/bin/cmake -DCMAKE_INSTALL_LOCAL_ONLY=1 -P cmake_install.cmake +.PHONY : install/local/fast + +# Special rule for the target list_install_components +list_install_components: + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Available install components are: \"Unspecified\"" +.PHONY : list_install_components + +# Special rule for the target list_install_components +list_install_components/fast: list_install_components + +.PHONY : list_install_components/fast + +# Special rule for the target rebuild_cache +rebuild_cache: + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Running CMake to regenerate build system..." + /usr/bin/cmake -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) +.PHONY : rebuild_cache + +# Special rule for the target rebuild_cache +rebuild_cache/fast: rebuild_cache + +.PHONY : rebuild_cache/fast + +# Special rule for the target edit_cache +edit_cache: + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Running CMake cache editor..." + /usr/bin/ccmake -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) +.PHONY : edit_cache + +# Special rule for the target edit_cache +edit_cache/fast: edit_cache + +.PHONY : edit_cache/fast + +# Special rule for the target install +install: preinstall + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Install the project..." + /usr/bin/cmake -P cmake_install.cmake +.PHONY : install + +# Special rule for the target install +install/fast: preinstall/fast + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Install the project..." + /usr/bin/cmake -P cmake_install.cmake +.PHONY : install/fast + +# Special rule for the target package +package: preinstall + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Run CPack packaging tool..." + /usr/bin/cpack --config ./CPackConfig.cmake +.PHONY : package + +# Special rule for the target package +package/fast: package + +.PHONY : package/fast + +# Special rule for the target package_source +package_source: + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Run CPack packaging tool for source..." + /usr/bin/cpack --config ./CPackSourceConfig.cmake /home/mk/src/squiddio_pi/flatpak/CPackSourceConfig.cmake +.PHONY : package_source + +# Special rule for the target package_source +package_source/fast: package_source + +.PHONY : package_source/fast + +# The main all target +all: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /home/mk/src/squiddio_pi/flatpak/CMakeFiles /home/mk/src/squiddio_pi/flatpak/CMakeFiles/progress.marks + $(MAKE) -f CMakeFiles/Makefile2 all + $(CMAKE_COMMAND) -E cmake_progress_start /home/mk/src/squiddio_pi/flatpak/CMakeFiles 0 +.PHONY : all + +# The main clean target +clean: + $(MAKE) -f CMakeFiles/Makefile2 clean +.PHONY : clean + +# The main clean target +clean/fast: clean + +.PHONY : clean/fast + +# Prepare targets for installation. +preinstall: all + $(MAKE) -f CMakeFiles/Makefile2 preinstall +.PHONY : preinstall + +# Prepare targets for installation. +preinstall/fast: + $(MAKE) -f CMakeFiles/Makefile2 preinstall +.PHONY : preinstall/fast + +# clear depends +depend: + $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 1 +.PHONY : depend + +#============================================================================= +# Target rules for targets named squiddio-po-update + +# Build rule for target. +squiddio-po-update: cmake_check_build_system + $(MAKE) -f CMakeFiles/Makefile2 squiddio-po-update +.PHONY : squiddio-po-update + +# fast build rule for target. +squiddio-po-update/fast: + $(MAKE) -f CMakeFiles/squiddio-po-update.dir/build.make CMakeFiles/squiddio-po-update.dir/build +.PHONY : squiddio-po-update/fast + +#============================================================================= +# Target rules for targets named squiddio_pi + +# Build rule for target. +squiddio_pi: cmake_check_build_system + $(MAKE) -f CMakeFiles/Makefile2 squiddio_pi +.PHONY : squiddio_pi + +# fast build rule for target. +squiddio_pi/fast: + $(MAKE) -f CMakeFiles/squiddio_pi.dir/build.make CMakeFiles/squiddio_pi.dir/build +.PHONY : squiddio_pi/fast + +#============================================================================= +# Target rules for targets named squiddio-i18n + +# Build rule for target. +squiddio-i18n: cmake_check_build_system + $(MAKE) -f CMakeFiles/Makefile2 squiddio-i18n +.PHONY : squiddio-i18n + +# fast build rule for target. +squiddio-i18n/fast: + $(MAKE) -f CMakeFiles/squiddio-i18n.dir/build.make CMakeFiles/squiddio-i18n.dir/build +.PHONY : squiddio-i18n/fast + +#============================================================================= +# Target rules for targets named squiddio-pot-update + +# Build rule for target. +squiddio-pot-update: cmake_check_build_system + $(MAKE) -f CMakeFiles/Makefile2 squiddio-pot-update +.PHONY : squiddio-pot-update + +# fast build rule for target. +squiddio-pot-update/fast: + $(MAKE) -f CMakeFiles/squiddio-pot-update.dir/build.make CMakeFiles/squiddio-pot-update.dir/build +.PHONY : squiddio-pot-update/fast + +src/NavObjectCollection.o: src/NavObjectCollection.cpp.o + +.PHONY : src/NavObjectCollection.o + +# target to build an object file +src/NavObjectCollection.cpp.o: + $(MAKE) -f CMakeFiles/squiddio_pi.dir/build.make CMakeFiles/squiddio_pi.dir/src/NavObjectCollection.cpp.o +.PHONY : src/NavObjectCollection.cpp.o + +src/NavObjectCollection.i: src/NavObjectCollection.cpp.i + +.PHONY : src/NavObjectCollection.i + +# target to preprocess a source file +src/NavObjectCollection.cpp.i: + $(MAKE) -f CMakeFiles/squiddio_pi.dir/build.make CMakeFiles/squiddio_pi.dir/src/NavObjectCollection.cpp.i +.PHONY : src/NavObjectCollection.cpp.i + +src/NavObjectCollection.s: src/NavObjectCollection.cpp.s + +.PHONY : src/NavObjectCollection.s + +# target to generate assembly for a file +src/NavObjectCollection.cpp.s: + $(MAKE) -f CMakeFiles/squiddio_pi.dir/build.make CMakeFiles/squiddio_pi.dir/src/NavObjectCollection.cpp.s +.PHONY : src/NavObjectCollection.cpp.s + +src/Poi.o: src/Poi.cpp.o + +.PHONY : src/Poi.o + +# target to build an object file +src/Poi.cpp.o: + $(MAKE) -f CMakeFiles/squiddio_pi.dir/build.make CMakeFiles/squiddio_pi.dir/src/Poi.cpp.o +.PHONY : src/Poi.cpp.o + +src/Poi.i: src/Poi.cpp.i + +.PHONY : src/Poi.i + +# target to preprocess a source file +src/Poi.cpp.i: + $(MAKE) -f CMakeFiles/squiddio_pi.dir/build.make CMakeFiles/squiddio_pi.dir/src/Poi.cpp.i +.PHONY : src/Poi.cpp.i + +src/Poi.s: src/Poi.cpp.s + +.PHONY : src/Poi.s + +# target to generate assembly for a file +src/Poi.cpp.s: + $(MAKE) -f CMakeFiles/squiddio_pi.dir/build.make CMakeFiles/squiddio_pi.dir/src/Poi.cpp.s +.PHONY : src/Poi.cpp.s + +src/PoiMan.o: src/PoiMan.cpp.o + +.PHONY : src/PoiMan.o + +# target to build an object file +src/PoiMan.cpp.o: + $(MAKE) -f CMakeFiles/squiddio_pi.dir/build.make CMakeFiles/squiddio_pi.dir/src/PoiMan.cpp.o +.PHONY : src/PoiMan.cpp.o + +src/PoiMan.i: src/PoiMan.cpp.i + +.PHONY : src/PoiMan.i + +# target to preprocess a source file +src/PoiMan.cpp.i: + $(MAKE) -f CMakeFiles/squiddio_pi.dir/build.make CMakeFiles/squiddio_pi.dir/src/PoiMan.cpp.i +.PHONY : src/PoiMan.cpp.i + +src/PoiMan.s: src/PoiMan.cpp.s + +.PHONY : src/PoiMan.s + +# target to generate assembly for a file +src/PoiMan.cpp.s: + $(MAKE) -f CMakeFiles/squiddio_pi.dir/build.make CMakeFiles/squiddio_pi.dir/src/PoiMan.cpp.s +.PHONY : src/PoiMan.cpp.s + +src/icons.o: src/icons.cpp.o + +.PHONY : src/icons.o + +# target to build an object file +src/icons.cpp.o: + $(MAKE) -f CMakeFiles/squiddio_pi.dir/build.make CMakeFiles/squiddio_pi.dir/src/icons.cpp.o +.PHONY : src/icons.cpp.o + +src/icons.i: src/icons.cpp.i + +.PHONY : src/icons.i + +# target to preprocess a source file +src/icons.cpp.i: + $(MAKE) -f CMakeFiles/squiddio_pi.dir/build.make CMakeFiles/squiddio_pi.dir/src/icons.cpp.i +.PHONY : src/icons.cpp.i + +src/icons.s: src/icons.cpp.s + +.PHONY : src/icons.s + +# target to generate assembly for a file +src/icons.cpp.s: + $(MAKE) -f CMakeFiles/squiddio_pi.dir/build.make CMakeFiles/squiddio_pi.dir/src/icons.cpp.s +.PHONY : src/icons.cpp.s + +src/logs.o: src/logs.cpp.o + +.PHONY : src/logs.o + +# target to build an object file +src/logs.cpp.o: + $(MAKE) -f CMakeFiles/squiddio_pi.dir/build.make CMakeFiles/squiddio_pi.dir/src/logs.cpp.o +.PHONY : src/logs.cpp.o + +src/logs.i: src/logs.cpp.i + +.PHONY : src/logs.i + +# target to preprocess a source file +src/logs.cpp.i: + $(MAKE) -f CMakeFiles/squiddio_pi.dir/build.make CMakeFiles/squiddio_pi.dir/src/logs.cpp.i +.PHONY : src/logs.cpp.i + +src/logs.s: src/logs.cpp.s + +.PHONY : src/logs.s + +# target to generate assembly for a file +src/logs.cpp.s: + $(MAKE) -f CMakeFiles/squiddio_pi.dir/build.make CMakeFiles/squiddio_pi.dir/src/logs.cpp.s +.PHONY : src/logs.cpp.s + +src/nmea0183/dbt.o: src/nmea0183/dbt.cpp.o + +.PHONY : src/nmea0183/dbt.o + +# target to build an object file +src/nmea0183/dbt.cpp.o: + $(MAKE) -f CMakeFiles/squiddio_pi.dir/build.make CMakeFiles/squiddio_pi.dir/src/nmea0183/dbt.cpp.o +.PHONY : src/nmea0183/dbt.cpp.o + +src/nmea0183/dbt.i: src/nmea0183/dbt.cpp.i + +.PHONY : src/nmea0183/dbt.i + +# target to preprocess a source file +src/nmea0183/dbt.cpp.i: + $(MAKE) -f CMakeFiles/squiddio_pi.dir/build.make CMakeFiles/squiddio_pi.dir/src/nmea0183/dbt.cpp.i +.PHONY : src/nmea0183/dbt.cpp.i + +src/nmea0183/dbt.s: src/nmea0183/dbt.cpp.s + +.PHONY : src/nmea0183/dbt.s + +# target to generate assembly for a file +src/nmea0183/dbt.cpp.s: + $(MAKE) -f CMakeFiles/squiddio_pi.dir/build.make CMakeFiles/squiddio_pi.dir/src/nmea0183/dbt.cpp.s +.PHONY : src/nmea0183/dbt.cpp.s + +src/nmea0183/dpt.o: src/nmea0183/dpt.cpp.o + +.PHONY : src/nmea0183/dpt.o + +# target to build an object file +src/nmea0183/dpt.cpp.o: + $(MAKE) -f CMakeFiles/squiddio_pi.dir/build.make CMakeFiles/squiddio_pi.dir/src/nmea0183/dpt.cpp.o +.PHONY : src/nmea0183/dpt.cpp.o + +src/nmea0183/dpt.i: src/nmea0183/dpt.cpp.i + +.PHONY : src/nmea0183/dpt.i + +# target to preprocess a source file +src/nmea0183/dpt.cpp.i: + $(MAKE) -f CMakeFiles/squiddio_pi.dir/build.make CMakeFiles/squiddio_pi.dir/src/nmea0183/dpt.cpp.i +.PHONY : src/nmea0183/dpt.cpp.i + +src/nmea0183/dpt.s: src/nmea0183/dpt.cpp.s + +.PHONY : src/nmea0183/dpt.s + +# target to generate assembly for a file +src/nmea0183/dpt.cpp.s: + $(MAKE) -f CMakeFiles/squiddio_pi.dir/build.make CMakeFiles/squiddio_pi.dir/src/nmea0183/dpt.cpp.s +.PHONY : src/nmea0183/dpt.cpp.s + +src/nmea0183/expid.o: src/nmea0183/expid.cpp.o + +.PHONY : src/nmea0183/expid.o + +# target to build an object file +src/nmea0183/expid.cpp.o: + $(MAKE) -f CMakeFiles/squiddio_pi.dir/build.make CMakeFiles/squiddio_pi.dir/src/nmea0183/expid.cpp.o +.PHONY : src/nmea0183/expid.cpp.o + +src/nmea0183/expid.i: src/nmea0183/expid.cpp.i + +.PHONY : src/nmea0183/expid.i + +# target to preprocess a source file +src/nmea0183/expid.cpp.i: + $(MAKE) -f CMakeFiles/squiddio_pi.dir/build.make CMakeFiles/squiddio_pi.dir/src/nmea0183/expid.cpp.i +.PHONY : src/nmea0183/expid.cpp.i + +src/nmea0183/expid.s: src/nmea0183/expid.cpp.s + +.PHONY : src/nmea0183/expid.s + +# target to generate assembly for a file +src/nmea0183/expid.cpp.s: + $(MAKE) -f CMakeFiles/squiddio_pi.dir/build.make CMakeFiles/squiddio_pi.dir/src/nmea0183/expid.cpp.s +.PHONY : src/nmea0183/expid.cpp.s + +src/nmea0183/gga.o: src/nmea0183/gga.cpp.o + +.PHONY : src/nmea0183/gga.o + +# target to build an object file +src/nmea0183/gga.cpp.o: + $(MAKE) -f CMakeFiles/squiddio_pi.dir/build.make CMakeFiles/squiddio_pi.dir/src/nmea0183/gga.cpp.o +.PHONY : src/nmea0183/gga.cpp.o + +src/nmea0183/gga.i: src/nmea0183/gga.cpp.i + +.PHONY : src/nmea0183/gga.i + +# target to preprocess a source file +src/nmea0183/gga.cpp.i: + $(MAKE) -f CMakeFiles/squiddio_pi.dir/build.make CMakeFiles/squiddio_pi.dir/src/nmea0183/gga.cpp.i +.PHONY : src/nmea0183/gga.cpp.i + +src/nmea0183/gga.s: src/nmea0183/gga.cpp.s + +.PHONY : src/nmea0183/gga.s + +# target to generate assembly for a file +src/nmea0183/gga.cpp.s: + $(MAKE) -f CMakeFiles/squiddio_pi.dir/build.make CMakeFiles/squiddio_pi.dir/src/nmea0183/gga.cpp.s +.PHONY : src/nmea0183/gga.cpp.s + +src/nmea0183/gll.o: src/nmea0183/gll.cpp.o + +.PHONY : src/nmea0183/gll.o + +# target to build an object file +src/nmea0183/gll.cpp.o: + $(MAKE) -f CMakeFiles/squiddio_pi.dir/build.make CMakeFiles/squiddio_pi.dir/src/nmea0183/gll.cpp.o +.PHONY : src/nmea0183/gll.cpp.o + +src/nmea0183/gll.i: src/nmea0183/gll.cpp.i + +.PHONY : src/nmea0183/gll.i + +# target to preprocess a source file +src/nmea0183/gll.cpp.i: + $(MAKE) -f CMakeFiles/squiddio_pi.dir/build.make CMakeFiles/squiddio_pi.dir/src/nmea0183/gll.cpp.i +.PHONY : src/nmea0183/gll.cpp.i + +src/nmea0183/gll.s: src/nmea0183/gll.cpp.s + +.PHONY : src/nmea0183/gll.s + +# target to generate assembly for a file +src/nmea0183/gll.cpp.s: + $(MAKE) -f CMakeFiles/squiddio_pi.dir/build.make CMakeFiles/squiddio_pi.dir/src/nmea0183/gll.cpp.s +.PHONY : src/nmea0183/gll.cpp.s + +src/nmea0183/gsv.o: src/nmea0183/gsv.cpp.o + +.PHONY : src/nmea0183/gsv.o + +# target to build an object file +src/nmea0183/gsv.cpp.o: + $(MAKE) -f CMakeFiles/squiddio_pi.dir/build.make CMakeFiles/squiddio_pi.dir/src/nmea0183/gsv.cpp.o +.PHONY : src/nmea0183/gsv.cpp.o + +src/nmea0183/gsv.i: src/nmea0183/gsv.cpp.i + +.PHONY : src/nmea0183/gsv.i + +# target to preprocess a source file +src/nmea0183/gsv.cpp.i: + $(MAKE) -f CMakeFiles/squiddio_pi.dir/build.make CMakeFiles/squiddio_pi.dir/src/nmea0183/gsv.cpp.i +.PHONY : src/nmea0183/gsv.cpp.i + +src/nmea0183/gsv.s: src/nmea0183/gsv.cpp.s + +.PHONY : src/nmea0183/gsv.s + +# target to generate assembly for a file +src/nmea0183/gsv.cpp.s: + $(MAKE) -f CMakeFiles/squiddio_pi.dir/build.make CMakeFiles/squiddio_pi.dir/src/nmea0183/gsv.cpp.s +.PHONY : src/nmea0183/gsv.cpp.s + +src/nmea0183/hdg.o: src/nmea0183/hdg.cpp.o + +.PHONY : src/nmea0183/hdg.o + +# target to build an object file +src/nmea0183/hdg.cpp.o: + $(MAKE) -f CMakeFiles/squiddio_pi.dir/build.make CMakeFiles/squiddio_pi.dir/src/nmea0183/hdg.cpp.o +.PHONY : src/nmea0183/hdg.cpp.o + +src/nmea0183/hdg.i: src/nmea0183/hdg.cpp.i + +.PHONY : src/nmea0183/hdg.i + +# target to preprocess a source file +src/nmea0183/hdg.cpp.i: + $(MAKE) -f CMakeFiles/squiddio_pi.dir/build.make CMakeFiles/squiddio_pi.dir/src/nmea0183/hdg.cpp.i +.PHONY : src/nmea0183/hdg.cpp.i + +src/nmea0183/hdg.s: src/nmea0183/hdg.cpp.s + +.PHONY : src/nmea0183/hdg.s + +# target to generate assembly for a file +src/nmea0183/hdg.cpp.s: + $(MAKE) -f CMakeFiles/squiddio_pi.dir/build.make CMakeFiles/squiddio_pi.dir/src/nmea0183/hdg.cpp.s +.PHONY : src/nmea0183/hdg.cpp.s + +src/nmea0183/hdm.o: src/nmea0183/hdm.cpp.o + +.PHONY : src/nmea0183/hdm.o + +# target to build an object file +src/nmea0183/hdm.cpp.o: + $(MAKE) -f CMakeFiles/squiddio_pi.dir/build.make CMakeFiles/squiddio_pi.dir/src/nmea0183/hdm.cpp.o +.PHONY : src/nmea0183/hdm.cpp.o + +src/nmea0183/hdm.i: src/nmea0183/hdm.cpp.i + +.PHONY : src/nmea0183/hdm.i + +# target to preprocess a source file +src/nmea0183/hdm.cpp.i: + $(MAKE) -f CMakeFiles/squiddio_pi.dir/build.make CMakeFiles/squiddio_pi.dir/src/nmea0183/hdm.cpp.i +.PHONY : src/nmea0183/hdm.cpp.i + +src/nmea0183/hdm.s: src/nmea0183/hdm.cpp.s + +.PHONY : src/nmea0183/hdm.s + +# target to generate assembly for a file +src/nmea0183/hdm.cpp.s: + $(MAKE) -f CMakeFiles/squiddio_pi.dir/build.make CMakeFiles/squiddio_pi.dir/src/nmea0183/hdm.cpp.s +.PHONY : src/nmea0183/hdm.cpp.s + +src/nmea0183/hdt.o: src/nmea0183/hdt.cpp.o + +.PHONY : src/nmea0183/hdt.o + +# target to build an object file +src/nmea0183/hdt.cpp.o: + $(MAKE) -f CMakeFiles/squiddio_pi.dir/build.make CMakeFiles/squiddio_pi.dir/src/nmea0183/hdt.cpp.o +.PHONY : src/nmea0183/hdt.cpp.o + +src/nmea0183/hdt.i: src/nmea0183/hdt.cpp.i + +.PHONY : src/nmea0183/hdt.i + +# target to preprocess a source file +src/nmea0183/hdt.cpp.i: + $(MAKE) -f CMakeFiles/squiddio_pi.dir/build.make CMakeFiles/squiddio_pi.dir/src/nmea0183/hdt.cpp.i +.PHONY : src/nmea0183/hdt.cpp.i + +src/nmea0183/hdt.s: src/nmea0183/hdt.cpp.s + +.PHONY : src/nmea0183/hdt.s + +# target to generate assembly for a file +src/nmea0183/hdt.cpp.s: + $(MAKE) -f CMakeFiles/squiddio_pi.dir/build.make CMakeFiles/squiddio_pi.dir/src/nmea0183/hdt.cpp.s +.PHONY : src/nmea0183/hdt.cpp.s + +src/nmea0183/hexvalue.o: src/nmea0183/hexvalue.cpp.o + +.PHONY : src/nmea0183/hexvalue.o + +# target to build an object file +src/nmea0183/hexvalue.cpp.o: + $(MAKE) -f CMakeFiles/squiddio_pi.dir/build.make CMakeFiles/squiddio_pi.dir/src/nmea0183/hexvalue.cpp.o +.PHONY : src/nmea0183/hexvalue.cpp.o + +src/nmea0183/hexvalue.i: src/nmea0183/hexvalue.cpp.i + +.PHONY : src/nmea0183/hexvalue.i + +# target to preprocess a source file +src/nmea0183/hexvalue.cpp.i: + $(MAKE) -f CMakeFiles/squiddio_pi.dir/build.make CMakeFiles/squiddio_pi.dir/src/nmea0183/hexvalue.cpp.i +.PHONY : src/nmea0183/hexvalue.cpp.i + +src/nmea0183/hexvalue.s: src/nmea0183/hexvalue.cpp.s + +.PHONY : src/nmea0183/hexvalue.s + +# target to generate assembly for a file +src/nmea0183/hexvalue.cpp.s: + $(MAKE) -f CMakeFiles/squiddio_pi.dir/build.make CMakeFiles/squiddio_pi.dir/src/nmea0183/hexvalue.cpp.s +.PHONY : src/nmea0183/hexvalue.cpp.s + +src/nmea0183/lat.o: src/nmea0183/lat.cpp.o + +.PHONY : src/nmea0183/lat.o + +# target to build an object file +src/nmea0183/lat.cpp.o: + $(MAKE) -f CMakeFiles/squiddio_pi.dir/build.make CMakeFiles/squiddio_pi.dir/src/nmea0183/lat.cpp.o +.PHONY : src/nmea0183/lat.cpp.o + +src/nmea0183/lat.i: src/nmea0183/lat.cpp.i + +.PHONY : src/nmea0183/lat.i + +# target to preprocess a source file +src/nmea0183/lat.cpp.i: + $(MAKE) -f CMakeFiles/squiddio_pi.dir/build.make CMakeFiles/squiddio_pi.dir/src/nmea0183/lat.cpp.i +.PHONY : src/nmea0183/lat.cpp.i + +src/nmea0183/lat.s: src/nmea0183/lat.cpp.s + +.PHONY : src/nmea0183/lat.s + +# target to generate assembly for a file +src/nmea0183/lat.cpp.s: + $(MAKE) -f CMakeFiles/squiddio_pi.dir/build.make CMakeFiles/squiddio_pi.dir/src/nmea0183/lat.cpp.s +.PHONY : src/nmea0183/lat.cpp.s + +src/nmea0183/latlong.o: src/nmea0183/latlong.cpp.o + +.PHONY : src/nmea0183/latlong.o + +# target to build an object file +src/nmea0183/latlong.cpp.o: + $(MAKE) -f CMakeFiles/squiddio_pi.dir/build.make CMakeFiles/squiddio_pi.dir/src/nmea0183/latlong.cpp.o +.PHONY : src/nmea0183/latlong.cpp.o + +src/nmea0183/latlong.i: src/nmea0183/latlong.cpp.i + +.PHONY : src/nmea0183/latlong.i + +# target to preprocess a source file +src/nmea0183/latlong.cpp.i: + $(MAKE) -f CMakeFiles/squiddio_pi.dir/build.make CMakeFiles/squiddio_pi.dir/src/nmea0183/latlong.cpp.i +.PHONY : src/nmea0183/latlong.cpp.i + +src/nmea0183/latlong.s: src/nmea0183/latlong.cpp.s + +.PHONY : src/nmea0183/latlong.s + +# target to generate assembly for a file +src/nmea0183/latlong.cpp.s: + $(MAKE) -f CMakeFiles/squiddio_pi.dir/build.make CMakeFiles/squiddio_pi.dir/src/nmea0183/latlong.cpp.s +.PHONY : src/nmea0183/latlong.cpp.s + +src/nmea0183/long.o: src/nmea0183/long.cpp.o + +.PHONY : src/nmea0183/long.o + +# target to build an object file +src/nmea0183/long.cpp.o: + $(MAKE) -f CMakeFiles/squiddio_pi.dir/build.make CMakeFiles/squiddio_pi.dir/src/nmea0183/long.cpp.o +.PHONY : src/nmea0183/long.cpp.o + +src/nmea0183/long.i: src/nmea0183/long.cpp.i + +.PHONY : src/nmea0183/long.i + +# target to preprocess a source file +src/nmea0183/long.cpp.i: + $(MAKE) -f CMakeFiles/squiddio_pi.dir/build.make CMakeFiles/squiddio_pi.dir/src/nmea0183/long.cpp.i +.PHONY : src/nmea0183/long.cpp.i + +src/nmea0183/long.s: src/nmea0183/long.cpp.s + +.PHONY : src/nmea0183/long.s + +# target to generate assembly for a file +src/nmea0183/long.cpp.s: + $(MAKE) -f CMakeFiles/squiddio_pi.dir/build.make CMakeFiles/squiddio_pi.dir/src/nmea0183/long.cpp.s +.PHONY : src/nmea0183/long.cpp.s + +src/nmea0183/mda.o: src/nmea0183/mda.cpp.o + +.PHONY : src/nmea0183/mda.o + +# target to build an object file +src/nmea0183/mda.cpp.o: + $(MAKE) -f CMakeFiles/squiddio_pi.dir/build.make CMakeFiles/squiddio_pi.dir/src/nmea0183/mda.cpp.o +.PHONY : src/nmea0183/mda.cpp.o + +src/nmea0183/mda.i: src/nmea0183/mda.cpp.i + +.PHONY : src/nmea0183/mda.i + +# target to preprocess a source file +src/nmea0183/mda.cpp.i: + $(MAKE) -f CMakeFiles/squiddio_pi.dir/build.make CMakeFiles/squiddio_pi.dir/src/nmea0183/mda.cpp.i +.PHONY : src/nmea0183/mda.cpp.i + +src/nmea0183/mda.s: src/nmea0183/mda.cpp.s + +.PHONY : src/nmea0183/mda.s + +# target to generate assembly for a file +src/nmea0183/mda.cpp.s: + $(MAKE) -f CMakeFiles/squiddio_pi.dir/build.make CMakeFiles/squiddio_pi.dir/src/nmea0183/mda.cpp.s +.PHONY : src/nmea0183/mda.cpp.s + +src/nmea0183/mta.o: src/nmea0183/mta.cpp.o + +.PHONY : src/nmea0183/mta.o + +# target to build an object file +src/nmea0183/mta.cpp.o: + $(MAKE) -f CMakeFiles/squiddio_pi.dir/build.make CMakeFiles/squiddio_pi.dir/src/nmea0183/mta.cpp.o +.PHONY : src/nmea0183/mta.cpp.o + +src/nmea0183/mta.i: src/nmea0183/mta.cpp.i + +.PHONY : src/nmea0183/mta.i + +# target to preprocess a source file +src/nmea0183/mta.cpp.i: + $(MAKE) -f CMakeFiles/squiddio_pi.dir/build.make CMakeFiles/squiddio_pi.dir/src/nmea0183/mta.cpp.i +.PHONY : src/nmea0183/mta.cpp.i + +src/nmea0183/mta.s: src/nmea0183/mta.cpp.s + +.PHONY : src/nmea0183/mta.s + +# target to generate assembly for a file +src/nmea0183/mta.cpp.s: + $(MAKE) -f CMakeFiles/squiddio_pi.dir/build.make CMakeFiles/squiddio_pi.dir/src/nmea0183/mta.cpp.s +.PHONY : src/nmea0183/mta.cpp.s + +src/nmea0183/mtw.o: src/nmea0183/mtw.cpp.o + +.PHONY : src/nmea0183/mtw.o + +# target to build an object file +src/nmea0183/mtw.cpp.o: + $(MAKE) -f CMakeFiles/squiddio_pi.dir/build.make CMakeFiles/squiddio_pi.dir/src/nmea0183/mtw.cpp.o +.PHONY : src/nmea0183/mtw.cpp.o + +src/nmea0183/mtw.i: src/nmea0183/mtw.cpp.i + +.PHONY : src/nmea0183/mtw.i + +# target to preprocess a source file +src/nmea0183/mtw.cpp.i: + $(MAKE) -f CMakeFiles/squiddio_pi.dir/build.make CMakeFiles/squiddio_pi.dir/src/nmea0183/mtw.cpp.i +.PHONY : src/nmea0183/mtw.cpp.i + +src/nmea0183/mtw.s: src/nmea0183/mtw.cpp.s + +.PHONY : src/nmea0183/mtw.s + +# target to generate assembly for a file +src/nmea0183/mtw.cpp.s: + $(MAKE) -f CMakeFiles/squiddio_pi.dir/build.make CMakeFiles/squiddio_pi.dir/src/nmea0183/mtw.cpp.s +.PHONY : src/nmea0183/mtw.cpp.s + +src/nmea0183/mwd.o: src/nmea0183/mwd.cpp.o + +.PHONY : src/nmea0183/mwd.o + +# target to build an object file +src/nmea0183/mwd.cpp.o: + $(MAKE) -f CMakeFiles/squiddio_pi.dir/build.make CMakeFiles/squiddio_pi.dir/src/nmea0183/mwd.cpp.o +.PHONY : src/nmea0183/mwd.cpp.o + +src/nmea0183/mwd.i: src/nmea0183/mwd.cpp.i + +.PHONY : src/nmea0183/mwd.i + +# target to preprocess a source file +src/nmea0183/mwd.cpp.i: + $(MAKE) -f CMakeFiles/squiddio_pi.dir/build.make CMakeFiles/squiddio_pi.dir/src/nmea0183/mwd.cpp.i +.PHONY : src/nmea0183/mwd.cpp.i + +src/nmea0183/mwd.s: src/nmea0183/mwd.cpp.s + +.PHONY : src/nmea0183/mwd.s + +# target to generate assembly for a file +src/nmea0183/mwd.cpp.s: + $(MAKE) -f CMakeFiles/squiddio_pi.dir/build.make CMakeFiles/squiddio_pi.dir/src/nmea0183/mwd.cpp.s +.PHONY : src/nmea0183/mwd.cpp.s + +src/nmea0183/mwv.o: src/nmea0183/mwv.cpp.o + +.PHONY : src/nmea0183/mwv.o + +# target to build an object file +src/nmea0183/mwv.cpp.o: + $(MAKE) -f CMakeFiles/squiddio_pi.dir/build.make CMakeFiles/squiddio_pi.dir/src/nmea0183/mwv.cpp.o +.PHONY : src/nmea0183/mwv.cpp.o + +src/nmea0183/mwv.i: src/nmea0183/mwv.cpp.i + +.PHONY : src/nmea0183/mwv.i + +# target to preprocess a source file +src/nmea0183/mwv.cpp.i: + $(MAKE) -f CMakeFiles/squiddio_pi.dir/build.make CMakeFiles/squiddio_pi.dir/src/nmea0183/mwv.cpp.i +.PHONY : src/nmea0183/mwv.cpp.i + +src/nmea0183/mwv.s: src/nmea0183/mwv.cpp.s + +.PHONY : src/nmea0183/mwv.s + +# target to generate assembly for a file +src/nmea0183/mwv.cpp.s: + $(MAKE) -f CMakeFiles/squiddio_pi.dir/build.make CMakeFiles/squiddio_pi.dir/src/nmea0183/mwv.cpp.s +.PHONY : src/nmea0183/mwv.cpp.s + +src/nmea0183/nmea0183.o: src/nmea0183/nmea0183.cpp.o + +.PHONY : src/nmea0183/nmea0183.o + +# target to build an object file +src/nmea0183/nmea0183.cpp.o: + $(MAKE) -f CMakeFiles/squiddio_pi.dir/build.make CMakeFiles/squiddio_pi.dir/src/nmea0183/nmea0183.cpp.o +.PHONY : src/nmea0183/nmea0183.cpp.o + +src/nmea0183/nmea0183.i: src/nmea0183/nmea0183.cpp.i + +.PHONY : src/nmea0183/nmea0183.i + +# target to preprocess a source file +src/nmea0183/nmea0183.cpp.i: + $(MAKE) -f CMakeFiles/squiddio_pi.dir/build.make CMakeFiles/squiddio_pi.dir/src/nmea0183/nmea0183.cpp.i +.PHONY : src/nmea0183/nmea0183.cpp.i + +src/nmea0183/nmea0183.s: src/nmea0183/nmea0183.cpp.s + +.PHONY : src/nmea0183/nmea0183.s + +# target to generate assembly for a file +src/nmea0183/nmea0183.cpp.s: + $(MAKE) -f CMakeFiles/squiddio_pi.dir/build.make CMakeFiles/squiddio_pi.dir/src/nmea0183/nmea0183.cpp.s +.PHONY : src/nmea0183/nmea0183.cpp.s + +src/nmea0183/response.o: src/nmea0183/response.cpp.o + +.PHONY : src/nmea0183/response.o + +# target to build an object file +src/nmea0183/response.cpp.o: + $(MAKE) -f CMakeFiles/squiddio_pi.dir/build.make CMakeFiles/squiddio_pi.dir/src/nmea0183/response.cpp.o +.PHONY : src/nmea0183/response.cpp.o + +src/nmea0183/response.i: src/nmea0183/response.cpp.i + +.PHONY : src/nmea0183/response.i + +# target to preprocess a source file +src/nmea0183/response.cpp.i: + $(MAKE) -f CMakeFiles/squiddio_pi.dir/build.make CMakeFiles/squiddio_pi.dir/src/nmea0183/response.cpp.i +.PHONY : src/nmea0183/response.cpp.i + +src/nmea0183/response.s: src/nmea0183/response.cpp.s + +.PHONY : src/nmea0183/response.s + +# target to generate assembly for a file +src/nmea0183/response.cpp.s: + $(MAKE) -f CMakeFiles/squiddio_pi.dir/build.make CMakeFiles/squiddio_pi.dir/src/nmea0183/response.cpp.s +.PHONY : src/nmea0183/response.cpp.s + +src/nmea0183/rmb.o: src/nmea0183/rmb.cpp.o + +.PHONY : src/nmea0183/rmb.o + +# target to build an object file +src/nmea0183/rmb.cpp.o: + $(MAKE) -f CMakeFiles/squiddio_pi.dir/build.make CMakeFiles/squiddio_pi.dir/src/nmea0183/rmb.cpp.o +.PHONY : src/nmea0183/rmb.cpp.o + +src/nmea0183/rmb.i: src/nmea0183/rmb.cpp.i + +.PHONY : src/nmea0183/rmb.i + +# target to preprocess a source file +src/nmea0183/rmb.cpp.i: + $(MAKE) -f CMakeFiles/squiddio_pi.dir/build.make CMakeFiles/squiddio_pi.dir/src/nmea0183/rmb.cpp.i +.PHONY : src/nmea0183/rmb.cpp.i + +src/nmea0183/rmb.s: src/nmea0183/rmb.cpp.s + +.PHONY : src/nmea0183/rmb.s + +# target to generate assembly for a file +src/nmea0183/rmb.cpp.s: + $(MAKE) -f CMakeFiles/squiddio_pi.dir/build.make CMakeFiles/squiddio_pi.dir/src/nmea0183/rmb.cpp.s +.PHONY : src/nmea0183/rmb.cpp.s + +src/nmea0183/rmc.o: src/nmea0183/rmc.cpp.o + +.PHONY : src/nmea0183/rmc.o + +# target to build an object file +src/nmea0183/rmc.cpp.o: + $(MAKE) -f CMakeFiles/squiddio_pi.dir/build.make CMakeFiles/squiddio_pi.dir/src/nmea0183/rmc.cpp.o +.PHONY : src/nmea0183/rmc.cpp.o + +src/nmea0183/rmc.i: src/nmea0183/rmc.cpp.i + +.PHONY : src/nmea0183/rmc.i + +# target to preprocess a source file +src/nmea0183/rmc.cpp.i: + $(MAKE) -f CMakeFiles/squiddio_pi.dir/build.make CMakeFiles/squiddio_pi.dir/src/nmea0183/rmc.cpp.i +.PHONY : src/nmea0183/rmc.cpp.i + +src/nmea0183/rmc.s: src/nmea0183/rmc.cpp.s + +.PHONY : src/nmea0183/rmc.s + +# target to generate assembly for a file +src/nmea0183/rmc.cpp.s: + $(MAKE) -f CMakeFiles/squiddio_pi.dir/build.make CMakeFiles/squiddio_pi.dir/src/nmea0183/rmc.cpp.s +.PHONY : src/nmea0183/rmc.cpp.s + +src/nmea0183/rsa.o: src/nmea0183/rsa.cpp.o + +.PHONY : src/nmea0183/rsa.o + +# target to build an object file +src/nmea0183/rsa.cpp.o: + $(MAKE) -f CMakeFiles/squiddio_pi.dir/build.make CMakeFiles/squiddio_pi.dir/src/nmea0183/rsa.cpp.o +.PHONY : src/nmea0183/rsa.cpp.o + +src/nmea0183/rsa.i: src/nmea0183/rsa.cpp.i + +.PHONY : src/nmea0183/rsa.i + +# target to preprocess a source file +src/nmea0183/rsa.cpp.i: + $(MAKE) -f CMakeFiles/squiddio_pi.dir/build.make CMakeFiles/squiddio_pi.dir/src/nmea0183/rsa.cpp.i +.PHONY : src/nmea0183/rsa.cpp.i + +src/nmea0183/rsa.s: src/nmea0183/rsa.cpp.s + +.PHONY : src/nmea0183/rsa.s + +# target to generate assembly for a file +src/nmea0183/rsa.cpp.s: + $(MAKE) -f CMakeFiles/squiddio_pi.dir/build.make CMakeFiles/squiddio_pi.dir/src/nmea0183/rsa.cpp.s +.PHONY : src/nmea0183/rsa.cpp.s + +src/nmea0183/rte.o: src/nmea0183/rte.cpp.o + +.PHONY : src/nmea0183/rte.o + +# target to build an object file +src/nmea0183/rte.cpp.o: + $(MAKE) -f CMakeFiles/squiddio_pi.dir/build.make CMakeFiles/squiddio_pi.dir/src/nmea0183/rte.cpp.o +.PHONY : src/nmea0183/rte.cpp.o + +src/nmea0183/rte.i: src/nmea0183/rte.cpp.i + +.PHONY : src/nmea0183/rte.i + +# target to preprocess a source file +src/nmea0183/rte.cpp.i: + $(MAKE) -f CMakeFiles/squiddio_pi.dir/build.make CMakeFiles/squiddio_pi.dir/src/nmea0183/rte.cpp.i +.PHONY : src/nmea0183/rte.cpp.i + +src/nmea0183/rte.s: src/nmea0183/rte.cpp.s + +.PHONY : src/nmea0183/rte.s + +# target to generate assembly for a file +src/nmea0183/rte.cpp.s: + $(MAKE) -f CMakeFiles/squiddio_pi.dir/build.make CMakeFiles/squiddio_pi.dir/src/nmea0183/rte.cpp.s +.PHONY : src/nmea0183/rte.cpp.s + +src/nmea0183/sentence.o: src/nmea0183/sentence.cpp.o + +.PHONY : src/nmea0183/sentence.o + +# target to build an object file +src/nmea0183/sentence.cpp.o: + $(MAKE) -f CMakeFiles/squiddio_pi.dir/build.make CMakeFiles/squiddio_pi.dir/src/nmea0183/sentence.cpp.o +.PHONY : src/nmea0183/sentence.cpp.o + +src/nmea0183/sentence.i: src/nmea0183/sentence.cpp.i + +.PHONY : src/nmea0183/sentence.i + +# target to preprocess a source file +src/nmea0183/sentence.cpp.i: + $(MAKE) -f CMakeFiles/squiddio_pi.dir/build.make CMakeFiles/squiddio_pi.dir/src/nmea0183/sentence.cpp.i +.PHONY : src/nmea0183/sentence.cpp.i + +src/nmea0183/sentence.s: src/nmea0183/sentence.cpp.s + +.PHONY : src/nmea0183/sentence.s + +# target to generate assembly for a file +src/nmea0183/sentence.cpp.s: + $(MAKE) -f CMakeFiles/squiddio_pi.dir/build.make CMakeFiles/squiddio_pi.dir/src/nmea0183/sentence.cpp.s +.PHONY : src/nmea0183/sentence.cpp.s + +src/nmea0183/talkerid.o: src/nmea0183/talkerid.cpp.o + +.PHONY : src/nmea0183/talkerid.o + +# target to build an object file +src/nmea0183/talkerid.cpp.o: + $(MAKE) -f CMakeFiles/squiddio_pi.dir/build.make CMakeFiles/squiddio_pi.dir/src/nmea0183/talkerid.cpp.o +.PHONY : src/nmea0183/talkerid.cpp.o + +src/nmea0183/talkerid.i: src/nmea0183/talkerid.cpp.i + +.PHONY : src/nmea0183/talkerid.i + +# target to preprocess a source file +src/nmea0183/talkerid.cpp.i: + $(MAKE) -f CMakeFiles/squiddio_pi.dir/build.make CMakeFiles/squiddio_pi.dir/src/nmea0183/talkerid.cpp.i +.PHONY : src/nmea0183/talkerid.cpp.i + +src/nmea0183/talkerid.s: src/nmea0183/talkerid.cpp.s + +.PHONY : src/nmea0183/talkerid.s + +# target to generate assembly for a file +src/nmea0183/talkerid.cpp.s: + $(MAKE) -f CMakeFiles/squiddio_pi.dir/build.make CMakeFiles/squiddio_pi.dir/src/nmea0183/talkerid.cpp.s +.PHONY : src/nmea0183/talkerid.cpp.s + +src/nmea0183/vhw.o: src/nmea0183/vhw.cpp.o + +.PHONY : src/nmea0183/vhw.o + +# target to build an object file +src/nmea0183/vhw.cpp.o: + $(MAKE) -f CMakeFiles/squiddio_pi.dir/build.make CMakeFiles/squiddio_pi.dir/src/nmea0183/vhw.cpp.o +.PHONY : src/nmea0183/vhw.cpp.o + +src/nmea0183/vhw.i: src/nmea0183/vhw.cpp.i + +.PHONY : src/nmea0183/vhw.i + +# target to preprocess a source file +src/nmea0183/vhw.cpp.i: + $(MAKE) -f CMakeFiles/squiddio_pi.dir/build.make CMakeFiles/squiddio_pi.dir/src/nmea0183/vhw.cpp.i +.PHONY : src/nmea0183/vhw.cpp.i + +src/nmea0183/vhw.s: src/nmea0183/vhw.cpp.s + +.PHONY : src/nmea0183/vhw.s + +# target to generate assembly for a file +src/nmea0183/vhw.cpp.s: + $(MAKE) -f CMakeFiles/squiddio_pi.dir/build.make CMakeFiles/squiddio_pi.dir/src/nmea0183/vhw.cpp.s +.PHONY : src/nmea0183/vhw.cpp.s + +src/nmea0183/vlw.o: src/nmea0183/vlw.cpp.o + +.PHONY : src/nmea0183/vlw.o + +# target to build an object file +src/nmea0183/vlw.cpp.o: + $(MAKE) -f CMakeFiles/squiddio_pi.dir/build.make CMakeFiles/squiddio_pi.dir/src/nmea0183/vlw.cpp.o +.PHONY : src/nmea0183/vlw.cpp.o + +src/nmea0183/vlw.i: src/nmea0183/vlw.cpp.i + +.PHONY : src/nmea0183/vlw.i + +# target to preprocess a source file +src/nmea0183/vlw.cpp.i: + $(MAKE) -f CMakeFiles/squiddio_pi.dir/build.make CMakeFiles/squiddio_pi.dir/src/nmea0183/vlw.cpp.i +.PHONY : src/nmea0183/vlw.cpp.i + +src/nmea0183/vlw.s: src/nmea0183/vlw.cpp.s + +.PHONY : src/nmea0183/vlw.s + +# target to generate assembly for a file +src/nmea0183/vlw.cpp.s: + $(MAKE) -f CMakeFiles/squiddio_pi.dir/build.make CMakeFiles/squiddio_pi.dir/src/nmea0183/vlw.cpp.s +.PHONY : src/nmea0183/vlw.cpp.s + +src/nmea0183/vtg.o: src/nmea0183/vtg.cpp.o + +.PHONY : src/nmea0183/vtg.o + +# target to build an object file +src/nmea0183/vtg.cpp.o: + $(MAKE) -f CMakeFiles/squiddio_pi.dir/build.make CMakeFiles/squiddio_pi.dir/src/nmea0183/vtg.cpp.o +.PHONY : src/nmea0183/vtg.cpp.o + +src/nmea0183/vtg.i: src/nmea0183/vtg.cpp.i + +.PHONY : src/nmea0183/vtg.i + +# target to preprocess a source file +src/nmea0183/vtg.cpp.i: + $(MAKE) -f CMakeFiles/squiddio_pi.dir/build.make CMakeFiles/squiddio_pi.dir/src/nmea0183/vtg.cpp.i +.PHONY : src/nmea0183/vtg.cpp.i + +src/nmea0183/vtg.s: src/nmea0183/vtg.cpp.s + +.PHONY : src/nmea0183/vtg.s + +# target to generate assembly for a file +src/nmea0183/vtg.cpp.s: + $(MAKE) -f CMakeFiles/squiddio_pi.dir/build.make CMakeFiles/squiddio_pi.dir/src/nmea0183/vtg.cpp.s +.PHONY : src/nmea0183/vtg.cpp.s + +src/nmea0183/vwr.o: src/nmea0183/vwr.cpp.o + +.PHONY : src/nmea0183/vwr.o + +# target to build an object file +src/nmea0183/vwr.cpp.o: + $(MAKE) -f CMakeFiles/squiddio_pi.dir/build.make CMakeFiles/squiddio_pi.dir/src/nmea0183/vwr.cpp.o +.PHONY : src/nmea0183/vwr.cpp.o + +src/nmea0183/vwr.i: src/nmea0183/vwr.cpp.i + +.PHONY : src/nmea0183/vwr.i + +# target to preprocess a source file +src/nmea0183/vwr.cpp.i: + $(MAKE) -f CMakeFiles/squiddio_pi.dir/build.make CMakeFiles/squiddio_pi.dir/src/nmea0183/vwr.cpp.i +.PHONY : src/nmea0183/vwr.cpp.i + +src/nmea0183/vwr.s: src/nmea0183/vwr.cpp.s + +.PHONY : src/nmea0183/vwr.s + +# target to generate assembly for a file +src/nmea0183/vwr.cpp.s: + $(MAKE) -f CMakeFiles/squiddio_pi.dir/build.make CMakeFiles/squiddio_pi.dir/src/nmea0183/vwr.cpp.s +.PHONY : src/nmea0183/vwr.cpp.s + +src/nmea0183/vwt.o: src/nmea0183/vwt.cpp.o + +.PHONY : src/nmea0183/vwt.o + +# target to build an object file +src/nmea0183/vwt.cpp.o: + $(MAKE) -f CMakeFiles/squiddio_pi.dir/build.make CMakeFiles/squiddio_pi.dir/src/nmea0183/vwt.cpp.o +.PHONY : src/nmea0183/vwt.cpp.o + +src/nmea0183/vwt.i: src/nmea0183/vwt.cpp.i + +.PHONY : src/nmea0183/vwt.i + +# target to preprocess a source file +src/nmea0183/vwt.cpp.i: + $(MAKE) -f CMakeFiles/squiddio_pi.dir/build.make CMakeFiles/squiddio_pi.dir/src/nmea0183/vwt.cpp.i +.PHONY : src/nmea0183/vwt.cpp.i + +src/nmea0183/vwt.s: src/nmea0183/vwt.cpp.s + +.PHONY : src/nmea0183/vwt.s + +# target to generate assembly for a file +src/nmea0183/vwt.cpp.s: + $(MAKE) -f CMakeFiles/squiddio_pi.dir/build.make CMakeFiles/squiddio_pi.dir/src/nmea0183/vwt.cpp.s +.PHONY : src/nmea0183/vwt.cpp.s + +src/nmea0183/wpl.o: src/nmea0183/wpl.cpp.o + +.PHONY : src/nmea0183/wpl.o + +# target to build an object file +src/nmea0183/wpl.cpp.o: + $(MAKE) -f CMakeFiles/squiddio_pi.dir/build.make CMakeFiles/squiddio_pi.dir/src/nmea0183/wpl.cpp.o +.PHONY : src/nmea0183/wpl.cpp.o + +src/nmea0183/wpl.i: src/nmea0183/wpl.cpp.i + +.PHONY : src/nmea0183/wpl.i + +# target to preprocess a source file +src/nmea0183/wpl.cpp.i: + $(MAKE) -f CMakeFiles/squiddio_pi.dir/build.make CMakeFiles/squiddio_pi.dir/src/nmea0183/wpl.cpp.i +.PHONY : src/nmea0183/wpl.cpp.i + +src/nmea0183/wpl.s: src/nmea0183/wpl.cpp.s + +.PHONY : src/nmea0183/wpl.s + +# target to generate assembly for a file +src/nmea0183/wpl.cpp.s: + $(MAKE) -f CMakeFiles/squiddio_pi.dir/build.make CMakeFiles/squiddio_pi.dir/src/nmea0183/wpl.cpp.s +.PHONY : src/nmea0183/wpl.cpp.s + +src/nmea0183/zda.o: src/nmea0183/zda.cpp.o + +.PHONY : src/nmea0183/zda.o + +# target to build an object file +src/nmea0183/zda.cpp.o: + $(MAKE) -f CMakeFiles/squiddio_pi.dir/build.make CMakeFiles/squiddio_pi.dir/src/nmea0183/zda.cpp.o +.PHONY : src/nmea0183/zda.cpp.o + +src/nmea0183/zda.i: src/nmea0183/zda.cpp.i + +.PHONY : src/nmea0183/zda.i + +# target to preprocess a source file +src/nmea0183/zda.cpp.i: + $(MAKE) -f CMakeFiles/squiddio_pi.dir/build.make CMakeFiles/squiddio_pi.dir/src/nmea0183/zda.cpp.i +.PHONY : src/nmea0183/zda.cpp.i + +src/nmea0183/zda.s: src/nmea0183/zda.cpp.s + +.PHONY : src/nmea0183/zda.s + +# target to generate assembly for a file +src/nmea0183/zda.cpp.s: + $(MAKE) -f CMakeFiles/squiddio_pi.dir/build.make CMakeFiles/squiddio_pi.dir/src/nmea0183/zda.cpp.s +.PHONY : src/nmea0183/zda.cpp.s + +src/pugixml.o: src/pugixml.cpp.o + +.PHONY : src/pugixml.o + +# target to build an object file +src/pugixml.cpp.o: + $(MAKE) -f CMakeFiles/squiddio_pi.dir/build.make CMakeFiles/squiddio_pi.dir/src/pugixml.cpp.o +.PHONY : src/pugixml.cpp.o + +src/pugixml.i: src/pugixml.cpp.i + +.PHONY : src/pugixml.i + +# target to preprocess a source file +src/pugixml.cpp.i: + $(MAKE) -f CMakeFiles/squiddio_pi.dir/build.make CMakeFiles/squiddio_pi.dir/src/pugixml.cpp.i +.PHONY : src/pugixml.cpp.i + +src/pugixml.s: src/pugixml.cpp.s + +.PHONY : src/pugixml.s + +# target to generate assembly for a file +src/pugixml.cpp.s: + $(MAKE) -f CMakeFiles/squiddio_pi.dir/build.make CMakeFiles/squiddio_pi.dir/src/pugixml.cpp.s +.PHONY : src/pugixml.cpp.s + +src/squiddioPrefsDialogBase.o: src/squiddioPrefsDialogBase.cpp.o + +.PHONY : src/squiddioPrefsDialogBase.o + +# target to build an object file +src/squiddioPrefsDialogBase.cpp.o: + $(MAKE) -f CMakeFiles/squiddio_pi.dir/build.make CMakeFiles/squiddio_pi.dir/src/squiddioPrefsDialogBase.cpp.o +.PHONY : src/squiddioPrefsDialogBase.cpp.o + +src/squiddioPrefsDialogBase.i: src/squiddioPrefsDialogBase.cpp.i + +.PHONY : src/squiddioPrefsDialogBase.i + +# target to preprocess a source file +src/squiddioPrefsDialogBase.cpp.i: + $(MAKE) -f CMakeFiles/squiddio_pi.dir/build.make CMakeFiles/squiddio_pi.dir/src/squiddioPrefsDialogBase.cpp.i +.PHONY : src/squiddioPrefsDialogBase.cpp.i + +src/squiddioPrefsDialogBase.s: src/squiddioPrefsDialogBase.cpp.s + +.PHONY : src/squiddioPrefsDialogBase.s + +# target to generate assembly for a file +src/squiddioPrefsDialogBase.cpp.s: + $(MAKE) -f CMakeFiles/squiddio_pi.dir/build.make CMakeFiles/squiddio_pi.dir/src/squiddioPrefsDialogBase.cpp.s +.PHONY : src/squiddioPrefsDialogBase.cpp.s + +src/squiddio_pi.o: src/squiddio_pi.cpp.o + +.PHONY : src/squiddio_pi.o + +# target to build an object file +src/squiddio_pi.cpp.o: + $(MAKE) -f CMakeFiles/squiddio_pi.dir/build.make CMakeFiles/squiddio_pi.dir/src/squiddio_pi.cpp.o +.PHONY : src/squiddio_pi.cpp.o + +src/squiddio_pi.i: src/squiddio_pi.cpp.i + +.PHONY : src/squiddio_pi.i + +# target to preprocess a source file +src/squiddio_pi.cpp.i: + $(MAKE) -f CMakeFiles/squiddio_pi.dir/build.make CMakeFiles/squiddio_pi.dir/src/squiddio_pi.cpp.i +.PHONY : src/squiddio_pi.cpp.i + +src/squiddio_pi.s: src/squiddio_pi.cpp.s + +.PHONY : src/squiddio_pi.s + +# target to generate assembly for a file +src/squiddio_pi.cpp.s: + $(MAKE) -f CMakeFiles/squiddio_pi.dir/build.make CMakeFiles/squiddio_pi.dir/src/squiddio_pi.cpp.s +.PHONY : src/squiddio_pi.cpp.s + +src/squiddio_pi_thread.o: src/squiddio_pi_thread.cpp.o + +.PHONY : src/squiddio_pi_thread.o + +# target to build an object file +src/squiddio_pi_thread.cpp.o: + $(MAKE) -f CMakeFiles/squiddio_pi.dir/build.make CMakeFiles/squiddio_pi.dir/src/squiddio_pi_thread.cpp.o +.PHONY : src/squiddio_pi_thread.cpp.o + +src/squiddio_pi_thread.i: src/squiddio_pi_thread.cpp.i + +.PHONY : src/squiddio_pi_thread.i + +# target to preprocess a source file +src/squiddio_pi_thread.cpp.i: + $(MAKE) -f CMakeFiles/squiddio_pi.dir/build.make CMakeFiles/squiddio_pi.dir/src/squiddio_pi_thread.cpp.i +.PHONY : src/squiddio_pi_thread.cpp.i + +src/squiddio_pi_thread.s: src/squiddio_pi_thread.cpp.s + +.PHONY : src/squiddio_pi_thread.s + +# target to generate assembly for a file +src/squiddio_pi_thread.cpp.s: + $(MAKE) -f CMakeFiles/squiddio_pi.dir/build.make CMakeFiles/squiddio_pi.dir/src/squiddio_pi_thread.cpp.s +.PHONY : src/squiddio_pi_thread.cpp.s + +src/wxJSON/jsonreader.o: src/wxJSON/jsonreader.cpp.o + +.PHONY : src/wxJSON/jsonreader.o + +# target to build an object file +src/wxJSON/jsonreader.cpp.o: + $(MAKE) -f CMakeFiles/squiddio_pi.dir/build.make CMakeFiles/squiddio_pi.dir/src/wxJSON/jsonreader.cpp.o +.PHONY : src/wxJSON/jsonreader.cpp.o + +src/wxJSON/jsonreader.i: src/wxJSON/jsonreader.cpp.i + +.PHONY : src/wxJSON/jsonreader.i + +# target to preprocess a source file +src/wxJSON/jsonreader.cpp.i: + $(MAKE) -f CMakeFiles/squiddio_pi.dir/build.make CMakeFiles/squiddio_pi.dir/src/wxJSON/jsonreader.cpp.i +.PHONY : src/wxJSON/jsonreader.cpp.i + +src/wxJSON/jsonreader.s: src/wxJSON/jsonreader.cpp.s + +.PHONY : src/wxJSON/jsonreader.s + +# target to generate assembly for a file +src/wxJSON/jsonreader.cpp.s: + $(MAKE) -f CMakeFiles/squiddio_pi.dir/build.make CMakeFiles/squiddio_pi.dir/src/wxJSON/jsonreader.cpp.s +.PHONY : src/wxJSON/jsonreader.cpp.s + +src/wxJSON/jsonval.o: src/wxJSON/jsonval.cpp.o + +.PHONY : src/wxJSON/jsonval.o + +# target to build an object file +src/wxJSON/jsonval.cpp.o: + $(MAKE) -f CMakeFiles/squiddio_pi.dir/build.make CMakeFiles/squiddio_pi.dir/src/wxJSON/jsonval.cpp.o +.PHONY : src/wxJSON/jsonval.cpp.o + +src/wxJSON/jsonval.i: src/wxJSON/jsonval.cpp.i + +.PHONY : src/wxJSON/jsonval.i + +# target to preprocess a source file +src/wxJSON/jsonval.cpp.i: + $(MAKE) -f CMakeFiles/squiddio_pi.dir/build.make CMakeFiles/squiddio_pi.dir/src/wxJSON/jsonval.cpp.i +.PHONY : src/wxJSON/jsonval.cpp.i + +src/wxJSON/jsonval.s: src/wxJSON/jsonval.cpp.s + +.PHONY : src/wxJSON/jsonval.s + +# target to generate assembly for a file +src/wxJSON/jsonval.cpp.s: + $(MAKE) -f CMakeFiles/squiddio_pi.dir/build.make CMakeFiles/squiddio_pi.dir/src/wxJSON/jsonval.cpp.s +.PHONY : src/wxJSON/jsonval.cpp.s + +# Help Target +help: + @echo "The following are some of the valid targets for this Makefile:" + @echo "... all (the default if no target is provided)" + @echo "... clean" + @echo "... depend" + @echo "... install/strip" + @echo "... install/local" + @echo "... list_install_components" + @echo "... rebuild_cache" + @echo "... edit_cache" + @echo "... squiddio-po-update" + @echo "... squiddio_pi" + @echo "... install" + @echo "... squiddio-i18n" + @echo "... squiddio-pot-update" + @echo "... package" + @echo "... package_source" + @echo "... src/NavObjectCollection.o" + @echo "... src/NavObjectCollection.i" + @echo "... src/NavObjectCollection.s" + @echo "... src/Poi.o" + @echo "... src/Poi.i" + @echo "... src/Poi.s" + @echo "... src/PoiMan.o" + @echo "... src/PoiMan.i" + @echo "... src/PoiMan.s" + @echo "... src/icons.o" + @echo "... src/icons.i" + @echo "... src/icons.s" + @echo "... src/logs.o" + @echo "... src/logs.i" + @echo "... src/logs.s" + @echo "... src/nmea0183/dbt.o" + @echo "... src/nmea0183/dbt.i" + @echo "... src/nmea0183/dbt.s" + @echo "... src/nmea0183/dpt.o" + @echo "... src/nmea0183/dpt.i" + @echo "... src/nmea0183/dpt.s" + @echo "... src/nmea0183/expid.o" + @echo "... src/nmea0183/expid.i" + @echo "... src/nmea0183/expid.s" + @echo "... src/nmea0183/gga.o" + @echo "... src/nmea0183/gga.i" + @echo "... src/nmea0183/gga.s" + @echo "... src/nmea0183/gll.o" + @echo "... src/nmea0183/gll.i" + @echo "... src/nmea0183/gll.s" + @echo "... src/nmea0183/gsv.o" + @echo "... src/nmea0183/gsv.i" + @echo "... src/nmea0183/gsv.s" + @echo "... src/nmea0183/hdg.o" + @echo "... src/nmea0183/hdg.i" + @echo "... src/nmea0183/hdg.s" + @echo "... src/nmea0183/hdm.o" + @echo "... src/nmea0183/hdm.i" + @echo "... src/nmea0183/hdm.s" + @echo "... src/nmea0183/hdt.o" + @echo "... src/nmea0183/hdt.i" + @echo "... src/nmea0183/hdt.s" + @echo "... src/nmea0183/hexvalue.o" + @echo "... src/nmea0183/hexvalue.i" + @echo "... src/nmea0183/hexvalue.s" + @echo "... src/nmea0183/lat.o" + @echo "... src/nmea0183/lat.i" + @echo "... src/nmea0183/lat.s" + @echo "... src/nmea0183/latlong.o" + @echo "... src/nmea0183/latlong.i" + @echo "... src/nmea0183/latlong.s" + @echo "... src/nmea0183/long.o" + @echo "... src/nmea0183/long.i" + @echo "... src/nmea0183/long.s" + @echo "... src/nmea0183/mda.o" + @echo "... src/nmea0183/mda.i" + @echo "... src/nmea0183/mda.s" + @echo "... src/nmea0183/mta.o" + @echo "... src/nmea0183/mta.i" + @echo "... src/nmea0183/mta.s" + @echo "... src/nmea0183/mtw.o" + @echo "... src/nmea0183/mtw.i" + @echo "... src/nmea0183/mtw.s" + @echo "... src/nmea0183/mwd.o" + @echo "... src/nmea0183/mwd.i" + @echo "... src/nmea0183/mwd.s" + @echo "... src/nmea0183/mwv.o" + @echo "... src/nmea0183/mwv.i" + @echo "... src/nmea0183/mwv.s" + @echo "... src/nmea0183/nmea0183.o" + @echo "... src/nmea0183/nmea0183.i" + @echo "... src/nmea0183/nmea0183.s" + @echo "... src/nmea0183/response.o" + @echo "... src/nmea0183/response.i" + @echo "... src/nmea0183/response.s" + @echo "... src/nmea0183/rmb.o" + @echo "... src/nmea0183/rmb.i" + @echo "... src/nmea0183/rmb.s" + @echo "... src/nmea0183/rmc.o" + @echo "... src/nmea0183/rmc.i" + @echo "... src/nmea0183/rmc.s" + @echo "... src/nmea0183/rsa.o" + @echo "... src/nmea0183/rsa.i" + @echo "... src/nmea0183/rsa.s" + @echo "... src/nmea0183/rte.o" + @echo "... src/nmea0183/rte.i" + @echo "... src/nmea0183/rte.s" + @echo "... src/nmea0183/sentence.o" + @echo "... src/nmea0183/sentence.i" + @echo "... src/nmea0183/sentence.s" + @echo "... src/nmea0183/talkerid.o" + @echo "... src/nmea0183/talkerid.i" + @echo "... src/nmea0183/talkerid.s" + @echo "... src/nmea0183/vhw.o" + @echo "... src/nmea0183/vhw.i" + @echo "... src/nmea0183/vhw.s" + @echo "... src/nmea0183/vlw.o" + @echo "... src/nmea0183/vlw.i" + @echo "... src/nmea0183/vlw.s" + @echo "... src/nmea0183/vtg.o" + @echo "... src/nmea0183/vtg.i" + @echo "... src/nmea0183/vtg.s" + @echo "... src/nmea0183/vwr.o" + @echo "... src/nmea0183/vwr.i" + @echo "... src/nmea0183/vwr.s" + @echo "... src/nmea0183/vwt.o" + @echo "... src/nmea0183/vwt.i" + @echo "... src/nmea0183/vwt.s" + @echo "... src/nmea0183/wpl.o" + @echo "... src/nmea0183/wpl.i" + @echo "... src/nmea0183/wpl.s" + @echo "... src/nmea0183/zda.o" + @echo "... src/nmea0183/zda.i" + @echo "... src/nmea0183/zda.s" + @echo "... src/pugixml.o" + @echo "... src/pugixml.i" + @echo "... src/pugixml.s" + @echo "... src/squiddioPrefsDialogBase.o" + @echo "... src/squiddioPrefsDialogBase.i" + @echo "... src/squiddioPrefsDialogBase.s" + @echo "... src/squiddio_pi.o" + @echo "... src/squiddio_pi.i" + @echo "... src/squiddio_pi.s" + @echo "... src/squiddio_pi_thread.o" + @echo "... src/squiddio_pi_thread.i" + @echo "... src/squiddio_pi_thread.s" + @echo "... src/wxJSON/jsonreader.o" + @echo "... src/wxJSON/jsonreader.i" + @echo "... src/wxJSON/jsonreader.s" + @echo "... src/wxJSON/jsonval.o" + @echo "... src/wxJSON/jsonval.i" + @echo "... src/wxJSON/jsonval.s" +.PHONY : help + + + +#============================================================================= +# Special targets to cleanup operation of make. + +# Special rule to run CMake to check the build system integrity. +# No rule that depends on this can have commands that come from listfiles +# because they might be regenerated. +cmake_check_build_system: + $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 0 +.PHONY : cmake_check_build_system diff --git a/flatpak/Makefile.fp b/flatpak/Makefile.fp new file mode 100644 index 0000000..9755fb9 --- /dev/null +++ b/flatpak/Makefile.fp @@ -0,0 +1,16 @@ +PLUGIN = org.opencpn.OpenCPN.Plugin.squiddio + +all: build + + +build: + flatpak-builder --force-clean app $(PLUGIN).yaml + flatpak build-export repo app stable + +install: + flatpak install --user --reinstall -y $(CURDIR)/repo $(PLUGIN) + +uninstall: + flatpak uninstall --user $(PLUGIN) + + diff --git a/flatpak/README.md b/flatpak/README.md index e90c087..f8571d4 100644 --- a/flatpak/README.md +++ b/flatpak/README.md @@ -1,22 +1,20 @@ -squiddio flatpak README ------------------------ +squiddio plugin flatpak README +------------------------------ -This is a simple packaging to be use the squiddio plugin when using the opencpn's +This is a simple packaging to use the squiddio plugin when using the opencpn's flatpak package. To build and install: - Install flatpak and flatpak-builder as described in https://flatpak.org/ - - Install the opencpn and opencpn base plugin flatpak packages. Using the - provisionary test repo at fedorapeople.org do: + - Install the opencpn flatpak package. Using the provisionary repo at + fedorapeople.org do: $ flatpak install --user \ - https://leamas.fedorapeople.org/opencpn/opencpn.flatpakref - $ flatpak install --user \ - https://leamas.fedorapeople.org/opencpn/opencpn-plugin-base.flatpakref + https://opencpn.duckdns.org/opencpn/opencpn.flatpakref - - The squiddio plugin can now be built and installed using + - The plugin can now be built and installed using $ make $ make install -The actual version built depends on the tag: stanza in the yaml file; update to -other versions as preferred. +The actual version built depends on the *tag:* stanza in the yaml file; +update to other versions as preferred. diff --git a/flatpak/org.opencpn.OpenCPN.Plugin.squiddio.yaml b/flatpak/org.opencpn.OpenCPN.Plugin.squiddio.yaml index 5f0abd5..8028abf 100644 --- a/flatpak/org.opencpn.OpenCPN.Plugin.squiddio.yaml +++ b/flatpak/org.opencpn.OpenCPN.Plugin.squiddio.yaml @@ -1,23 +1,22 @@ id: org.opencpn.OpenCPN.Plugin.squiddio runtime: org.opencpn.OpenCPN runtime-version: stable -sdk: org.freedesktop.Sdk//1.6 +sdk: org.freedesktop.Sdk//18.08 build-extension: true separate-locales: false appstream-compose: false -finish-args: - - --socket=x11 - - --socket=pulseaudio - - --filesystem=home - - --device=all modules: - - name: squiddio - no-autogen: true - cmake: true - builddir: true - config-opts: - - -DCMAKE_INSTALL_PREFIX=/app/extensions/squiddio - sources: - - type: git - url: https://github.com/mauroc/squiddio_pi.git - commit: 614fd0f + - name: squiddio + no-autogen: true + buildsystem: cmake + builddir: true + config-opts: + - -DCMAKE_INSTALL_PREFIX=/app/extensions/squiddio + - -DOCPN_FLATPAK=ON + build-options: + cflags: -fPIC + cxxflags: -fPIC + sources: + - type: git + url: https://github.com/mauroc/squiddio_pi.git + commit: d474c8ffa3c4addbaf724d55b1b464e894b1934d From 97c4b30be9599f533b7cc5cc3e3a86286ad8d216 Mon Sep 17 00:00:00 2001 From: Alec Leamas Date: Mon, 2 Sep 2019 21:11:13 +0200 Subject: [PATCH 15/31] ci: Add cloudsmith deployment. --- .gitignore | 1 - appveyor.yml | 6 +++- ci/appveyor-upload.sh | 28 ++++++++++++++++ ci/control | 4 ++- ci/opencpn-deps.spec | 66 -------------------------------------- ci/opencpn-fedora.spec | 5 +-- ci/opencpn_rsa.enc | 39 ---------------------- ci/travis-build-fedora.sh | 1 + ci/travis-build-flatpak.sh | 1 + ci/travis-build-osx.sh | 4 +-- ci/travis-upload.sh | 44 ++++++++++++++++--------- 11 files changed, 68 insertions(+), 131 deletions(-) create mode 100755 ci/appveyor-upload.sh delete mode 100644 ci/opencpn-deps.spec delete mode 100644 ci/opencpn_rsa.enc diff --git a/.gitignore b/.gitignore index 68931e3..394c138 100644 --- a/.gitignore +++ b/.gitignore @@ -9,7 +9,6 @@ CMakeFiles cscope.out .cproject .project -opencpn_rsa Release core .settings/ diff --git a/appveyor.yml b/appveyor.yml index b067015..81edbca 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -50,7 +50,11 @@ build_script: - cmake -G "Visual Studio 15 2017" .. - cmake --build . --target install --config RelWithDebInfo - cmake --build . --target package --config RelWithDebInfo - - dir *.* + - choco install git + - python -m ensurepip + - python -m pip install -q setuptools + - python -m pip install -q cloudsmith-cli + - bash ../ci/appveyor-upload.sh artifacts: - path: 'build\*gz' diff --git a/ci/appveyor-upload.sh b/ci/appveyor-upload.sh new file mode 100755 index 0000000..7fddfe4 --- /dev/null +++ b/ci/appveyor-upload.sh @@ -0,0 +1,28 @@ +#!/usr/bin/env bash + +# +# Upload the .tar.gz and .xml artifacts to cloudsmith +# + +set -xe + +REPO='alec-leamas/opencpn-plugins-unstable' + +if [ -z "$CLOUDSMITH_API_KEY" ]; then + echo 'Cannot deploy to cloudsmith, missing $CLOUDSMITH_API_KEY' + exit 0 +fi + +python -m ensurepip +python -m pip install -q setuptools +python -m pip install -q cloudsmith-cli + +commit=$(git rev-parse --short=7 HEAD) || commit="unknown" +now=$(date --rfc-3339=seconds) || now=$(date) + +tarball=$(ls *.tar.gz) +xml=$(ls *.xml) +echo '" >> $xml + +cloudsmith push raw --republish --no-wait-for-sync $REPO $tarball +cloudsmith push raw --republish --no-wait-for-sync $REPO $xml diff --git a/ci/control b/ci/control index c18fe19..548b01e 100644 --- a/ci/control +++ b/ci/control @@ -19,7 +19,9 @@ Build-Depends: debhelper (>= 9), libwxgtk3.0-dev, libwxgtk3.0-0v5 | libwxgtk3.0-0, libwxsvg-dev | base-files, - portaudio19-dev + portaudio19-dev, + python3-pip, + python3-setuptools Standards-Version: 4.3.0 Homepage: https://opencpn.org diff --git a/ci/opencpn-deps.spec b/ci/opencpn-deps.spec deleted file mode 100644 index 8899406..0000000 --- a/ci/opencpn-deps.spec +++ /dev/null @@ -1,66 +0,0 @@ -Name: opencpn-deps -Version: 0.1 -Release: 1%{?dist} -Summary: Empty package with opencpn build dependencies - -License: MIT -URL: https://github.com/leamas/opencpn - -BuildRequires: cmake -BuildRequires: gettext -BuildRequires: make -BuildRequires: mingw-binutils-generic -BuildRequires: mingw-filesystem-base -BuildRequires: mingw32-binutils -BuildRequires: mingw32-bzip2 -BuildRequires: mingw32-cairo -BuildRequires: mingw32-curl -BuildRequires: mingw32-expat -BuildRequires: mingw32-filesystem -BuildRequires: mingw32-fontconfig -BuildRequires: mingw32-freetype -BuildRequires: mingw32-gcc -BuildRequires: mingw32-gcc-c++ -BuildRequires: mingw32-cpp -BuildRequires: mingw32-gettext -BuildRequires: mingw32-headers -BuildRequires: mingw32-glib2 -BuildRequires: mingw32-gtk2 -BuildRequires: mingw32-libarchive -BuildRequires: mingw32-libexif -BuildRequires: mingw32-libffi -BuildRequires: mingw32-libpng -BuildRequires: mingw32-libtiff -BuildRequires: mingw32-libxml2 -BuildRequires: mingw32-nsiswrapper -BuildRequires: mingw32-openssl -BuildRequires: mingw32-pcre -BuildRequires: mingw32-pixman -BuildRequires: mingw32-sqlite -BuildRequires: mingw32-win-iconv -BuildRequires: mingw32-wxWidgets3 >= 3.0.2 -BuildRequires: mingw32-xz-libs - -%description - -Empty package used to catch build dependencies for opencpn using -the mingw tools to create a Windows 32-bit executable - -Use dnf builddep opencpn-deps.spec to install the dependencies. - -%prep - - -%build - - -%install - - -%files -%doc COPYING - - -%changelog -* Fri Mar 01 2019 Alec Leamas - 0.1-1 -- Initial release diff --git a/ci/opencpn-fedora.spec b/ci/opencpn-fedora.spec index 731003a..292dfee 100644 --- a/ci/opencpn-fedora.spec +++ b/ci/opencpn-fedora.spec @@ -1,6 +1,6 @@ Name: opencpn Summary: Chartplotter and GPS navigation software -Version: 4.8.0 +Version: 5.0.0 Release: 4.1%{?dist} License: GPLv2+ @@ -16,7 +16,6 @@ BuildRequires: libcurl-devel BuildRequires: mesa-libGL-devel BuildRequires: mesa-libGLU-devel BuildRequires: portaudio-devel -BuildRequires: portaudio-devel BuildRequires: redhat-lsb-core BuildRequires: tar BuildRequires: tinyxml-devel @@ -36,5 +35,3 @@ Empty package to catch build dependecies for OpenCPN %changelog * Sun Apr 28 2019 Alec Leamas - 4.8.0-4.1 - rebuilt - - diff --git a/ci/opencpn_rsa.enc b/ci/opencpn_rsa.enc deleted file mode 100644 index b480da4..0000000 --- a/ci/opencpn_rsa.enc +++ /dev/null @@ -1,39 +0,0 @@ -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 -SRRjfjeVCMA8L/KFUWtODw== diff --git a/ci/travis-build-fedora.sh b/ci/travis-build-fedora.sh index b54b7f8..1d68381 100755 --- a/ci/travis-build-fedora.sh +++ b/ci/travis-build-fedora.sh @@ -30,3 +30,4 @@ docker exec -ti $DOCKER_CONTAINER_ID /bin/bash -xec \ docker ps -a docker stop $DOCKER_CONTAINER_ID docker rm -v $DOCKER_CONTAINER_ID +sudo apt-get install python3-pip python3-setuptools diff --git a/ci/travis-build-flatpak.sh b/ci/travis-build-flatpak.sh index c3b9b2d..58b4823 100755 --- a/ci/travis-build-flatpak.sh +++ b/ci/travis-build-flatpak.sh @@ -30,3 +30,4 @@ docker exec -ti $DOCKER_CONTAINER_ID /bin/bash -xec \ docker ps -a docker stop $DOCKER_CONTAINER_ID docker rm -v $DOCKER_CONTAINER_ID +sudo apt-get install python3-pip python3-setuptools diff --git a/ci/travis-build-osx.sh b/ci/travis-build-osx.sh index e86ff35..11a4089 100755 --- a/ci/travis-build-osx.sh +++ b/ci/travis-build-osx.sh @@ -7,7 +7,7 @@ # bailout on errors and echo commands set -xe -brew install cairo libexif xz libarchive +brew install cairo libexif xz libarchive python3 curl --version >/dev/null || brew install curl wget http://opencpn.navnux.org/build_deps/wx312_opencpn50_macos109.tar.xz tar xJf wx312_opencpn50_macos109.tar.xz -C /tmp @@ -24,7 +24,5 @@ cmake -DOCPN_CI_BUILD=$CI_BUILD \ -DCMAKE_INSTALL_PREFIX=/tmp/opencpn -DCMAKE_OSX_DEPLOYMENT_TARGET=10.9 \ .. make -sj2 -make DESTDIR=orvar install -tar czf orvar.tar.gz orvar make package chmod 644 /usr/local/lib/lib*.dylib diff --git a/ci/travis-upload.sh b/ci/travis-upload.sh index b2dc61b..ec950b6 100755 --- a/ci/travis-upload.sh +++ b/ci/travis-upload.sh @@ -1,24 +1,36 @@ #!/bin/sh -PKG="plugins" -VERSION=1.15-0.beta2 +PLUGIN="squiddio" + +VERSION="unstable" OPTS="override=1;publish=1" +PKG="plugins" -set -x +API_BASE="https://api.bintray.com/content/leamas/OpenCPN/$PKG/$VERSION" + +cd build +tarball=$(echo ${PLUGIN}*.tar.gz) +xml=$(echo ${PLUGIN}-plugin*.xml) if [ -z "$BINTRAY_API_KEY" ]; then - echo 'Cannot deploy: missing $BINTRAY_API_KEY' - exit 0 + echo 'Cannot deploy to bintray:: missing $BINTRAY_API_KEY' +else + echo "Deploying to bintray" + set -x + curl -T $tarball --user leamas:$BINTRAY_API_KEY "$API_BASE/$tarball;$OPTS" + curl -T $xml --user leamas:$BINTRAY_API_KEY "$API_BASE/$xml;$OPTS" + set +x fi -cd build -tarball=$(echo squiddio*.tar.gz) -xml=$(echo squiddio-plugin*.xml) -echo "Uploading $tarball" -curl -T $tarball -uleamas:$BINTRAY_API_KEY \ - "https://api.bintray.com/content/leamas/OpenCPN/$PKG/$VERSION/$tarball;$OPTS" -echo -echo "Uploading $xml" -curl -T $xml -uleamas:$BINTRAY_API_KEY \ - "https://api.bintray.com/content/leamas/OpenCPN/$PKG/$VERSION/$xml;$OPTS" -echo +if [ -z "$CLOUDSMITH_API_KEY" ]; then + echo 'Cannot deploy to cloudsmith: missing $CLOUDSMITH_API_KEY' +else + echo "Deploying to cloudsmith" + set -x + sudo python3 -m pip install cloudsmith-cli + cloudsmith push raw --republish --no-wait-for-sync \ + alec-leamas/opencpn-plugins-unstable $tarball + cloudsmith push raw --republish --no-wait-for-sync \ + alec-leamas/opencpn-plugins-unstable $xml + set +x +fi From 55c9753c0cd5ff394e8b1ed31d9c7fae3b4f4c52 Mon Sep 17 00:00:00 2001 From: Alec Leamas Date: Sun, 8 Sep 2019 15:20:07 +0200 Subject: [PATCH 16/31] ci: Add circleci configuration. ... and move tarball location to cloudsmith --- .circleci/config.yml | 82 ++++++++++++++++++++++++++++++++++ CMakeLists.txt | 3 ++ ci/circleci-build-debian.sh | 17 +++++++ ci/circleci-build-fedora.sh | 13 ++++++ ci/circleci-build-flatpak.sh | 47 +++++++++++++++++++ ci/circleci-build-macos.sh | 27 +++++++++++ ci/circleci-build-mingw.sh | 14 ++++++ ci/circleci-upload.sh | 46 +++++++++++++++++++ ci/docker-build-flatpak.sh | 2 +- ci/travis-build-flatpak.sh | 1 + mingw/fedora/README.md | 21 +++++++++ mingw/fedora/opencpn-deps.spec | 67 +++++++++++++++++++++++++++ mingw/fedora/toolchain.cmake | 18 ++++++++ squiddio-plugin.xml.in | 2 +- 14 files changed, 358 insertions(+), 2 deletions(-) create mode 100644 .circleci/config.yml create mode 100755 ci/circleci-build-debian.sh create mode 100755 ci/circleci-build-fedora.sh create mode 100755 ci/circleci-build-flatpak.sh create mode 100755 ci/circleci-build-macos.sh create mode 100755 ci/circleci-build-mingw.sh create mode 100755 ci/circleci-upload.sh create mode 100644 mingw/fedora/README.md create mode 100644 mingw/fedora/opencpn-deps.spec create mode 100644 mingw/fedora/toolchain.cmake diff --git a/.circleci/config.yml b/.circleci/config.yml new file mode 100644 index 0000000..bc05fd6 --- /dev/null +++ b/.circleci/config.yml @@ -0,0 +1,82 @@ +--- +version: 2 +jobs: + build-debian: + docker: + - image: circleci/buildpack-deps:xenial-scm + environment: + - OCPN_TARGET: xenial + steps: + - checkout + - run: > + echo "deb-src http://us.archive.ubuntu.com/ubuntu/ xenial main" + | sudo tee -a /etc/apt/sources.list + - run: > + echo "deb-src http://us.archive.ubuntu.com/ubuntu/ xenial-updates main" + | sudo tee -a /etc/apt/sources.list + - run: cat /etc/apt/sources.list + - run: ci/circleci-build-debian.sh + - run: ci/circleci-upload.sh + build-flatpak: + machine: + image: circleci/classic:201808-01 + environment: + - OCPN_TARGET: flatpak + steps: + - checkout + - run: ci/circleci-build-flatpak.sh + - run: ci/circleci-upload.sh + build-fedora: + docker: + - image: fedora:29 + environment: + - OCPN_TARGET: fedora + steps: + - run: su -c "dnf install -q -y git openssh-clients openssh-server" + - checkout + - run: ci/circleci-build-fedora.sh + - run: ci/circleci-upload.sh + build-mingw: + docker: + - image: fedora:29 + environment: + - OCPN_TARGET: mingw + steps: + - run: su -c "dnf install -q -y git openssh-clients openssh-server" + - checkout + - run: ci/circleci-build-mingw.sh + - run: ci/circleci-upload.sh + build-macos: + macos: + xcode: "10.0.0" + environment: + - OCPN_TARGET: macos + steps: + - checkout + - run: ci/circleci-build-macos.sh + - run: ci/circleci-upload.sh + +workflows: + version: 2 + build_all: + jobs: + - build-debian: + filters: + branches: + only: master + - build-flatpak: + filters: + branches: + only: master + - build-fedora: + filters: + branches: + only: master + - build-macos: + filters: + branches: + only: master + - build-mingw: + filters: + branches: + only: master diff --git a/CMakeLists.txt b/CMakeLists.txt index 522f3a5..0d8db6e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -40,6 +40,9 @@ SET(PKG_RELEASE "1") SET(PKG_API_VERSION "1.16") SET(PKG_AUTHOR "Mauro Calvi") SET(PKG_NVR ${PACKAGE_NAME}-${PACKAGE_VERSION}-${PKG_RELEASE}) +SET(PKG_BASE_URL + "https://dl.cloudsmith.io/public/alec-leamas/opencpn-plugins-unstable/raw/files") + INCLUDE("cmake/PluginSetup.cmake") set(PLUGIN_NAME squiddio-plugin-${PKG_TARGET}-${PKG_TARGET_VERSION}) diff --git a/ci/circleci-build-debian.sh b/ci/circleci-build-debian.sh new file mode 100755 index 0000000..c86b38c --- /dev/null +++ b/ci/circleci-build-debian.sh @@ -0,0 +1,17 @@ +#!/usr/bin/env bash + +# +# Build the Debian artifacts +# +set -xe +sudo apt-get -qq update +sudo apt-get install devscripts equivs + +rm -rf build && mkdir build && cd build +mk-build-deps ../ci/control +sudo apt-get install ./*all.deb || : +sudo apt-get --allow-unauthenticated install -f + +cmake -DCMAKE_BUILD_TYPE=Debug .. +make -sj2 +make package diff --git a/ci/circleci-build-fedora.sh b/ci/circleci-build-fedora.sh new file mode 100755 index 0000000..d59dc2f --- /dev/null +++ b/ci/circleci-build-fedora.sh @@ -0,0 +1,13 @@ +#!/bin/sh -xe + +# +# Build the mingw artifacts inside the Fedora container +# +set -xe + +su -c "dnf install -y sudo dnf-plugins-core" +sudo dnf builddep -y ci/opencpn-fedora.spec +rm -rf build; mkdir build; cd build +cmake .. +make -j2 +make package diff --git a/ci/circleci-build-flatpak.sh b/ci/circleci-build-flatpak.sh new file mode 100755 index 0000000..5aee33b --- /dev/null +++ b/ci/circleci-build-flatpak.sh @@ -0,0 +1,47 @@ +#!/usr/bin/env bash + +# +# Build the flatpak artifacts. Uses docker to run Fedora on +# in full-fledged VM; the actual build is done in the Fedora +# container. +# +# flatpak-builder can be run in a docker image. However, this +# must then be run in privileged mode, which means it we need +# a full VM to run it. +# + +# bailout on errors and echo commands. +set -xe +##sudo apt-get -qq update + +PLUGIN=bsb4 + +DOCKER_SOCK="unix:///var/run/docker.sock" +if [-n "$TRAVIS" ]; then + TOPDIR=/opencpn-ci +fi + +if [ -n "$CIRCLECI" ]; then + TOPDIR=/root/project +fi + +echo "DOCKER_OPTS=\"-H tcp://127.0.0.1:2375 -H $DOCKER_SOCK -s devicemapper\"" \ + | sudo tee /etc/default/docker > /dev/null +sudo service docker restart; +sleep 5; +sudo docker pull fedora:28; +sleep 2 + +docker run --privileged -d -ti -e "container=docker" \ + -e TOPDIR=$TOPDIR \ + -v /sys/fs/cgroup:/sys/fs/cgroup \ + -v $(pwd):$TOPDIR:rw \ + fedora:28 /usr/sbin/init +DOCKER_CONTAINER_ID=$(docker ps | grep fedora | awk '{print $1}') +docker logs $DOCKER_CONTAINER_ID +docker exec -ti $DOCKER_CONTAINER_ID /bin/bash -xec \ + "bash -xe $TOPDIR/ci/docker-build-flatpak.sh 28; + echo -ne \"------\nEND OPENCPN-CI BUILD\n\";" +docker ps -a +docker stop $DOCKER_CONTAINER_ID +docker rm -v $DOCKER_CONTAINER_ID diff --git a/ci/circleci-build-macos.sh b/ci/circleci-build-macos.sh new file mode 100755 index 0000000..b8cb99c --- /dev/null +++ b/ci/circleci-build-macos.sh @@ -0,0 +1,27 @@ +#!/usr/bin/env bash + +# +# Build the MacOS artifacts +# + +set -xe + +for pkg in cairo libexif xz libarchive python3 wget cmake; do + brew list $pkg 2>&1 >/dev/null || brew install $pkg +done + +wget http://opencpn.navnux.org/build_deps/wx312_opencpn50_macos109.tar.xz +tar xJf wx312_opencpn50_macos109.tar.xz -C /tmp +export PATH="/usr/local/opt/gettext/bin:$PATH" +echo 'export PATH="/usr/local/opt/gettext/bin:$PATH"' >> ~/.bash_profile + +rm -rf build && mkdir build && cd build +test -z "$TRAVIS_TAG" && CI_BUILD=OFF || CI_BUILD=ON +cmake -DOCPN_CI_BUILD=$CI_BUILD \ + -DOCPN_USE_LIBCPP=ON \ + -DwxWidgets_CONFIG_EXECUTABLE=/tmp/wx312_opencpn50_macos109/bin/wx-config \ + -DwxWidgets_CONFIG_OPTIONS="--prefix=/tmp/wx312_opencpn50_macos109" \ + -DCMAKE_INSTALL_PREFIX=/tmp/opencpn -DCMAKE_OSX_DEPLOYMENT_TARGET=10.9 \ + .. +make -sj2 +make package diff --git a/ci/circleci-build-mingw.sh b/ci/circleci-build-mingw.sh new file mode 100755 index 0000000..c284ad5 --- /dev/null +++ b/ci/circleci-build-mingw.sh @@ -0,0 +1,14 @@ +#!/bin/sh -xe + +# +# Build the mingw artifacts inside the Fedora container +# + +set -xe + +su -c "dnf install -q -y sudo dnf-plugins-core" +sudo dnf -q builddep -y mingw/fedora/opencpn-deps.spec +rm -rf build; mkdir build; cd build +cmake -DCMAKE_TOOLCHAIN_FILE=../mingw/fedora/toolchain.cmake .. +make -j2 +make package diff --git a/ci/circleci-upload.sh b/ci/circleci-upload.sh new file mode 100755 index 0000000..0510b0d --- /dev/null +++ b/ci/circleci-upload.sh @@ -0,0 +1,46 @@ +#!/usr/bin/env bash + +# +# Upload the .tar.gz and .xml artifacts to cloudsmith. +# + +set -xe + +REPO='alec-leamas/opencpn-plugins-unstable' + +if [ -z "$CIRCLECI" ]; then + exit 0; +fi + +if [ -z "$CLOUDSMITH_API_KEY" ]; then + echo 'Cannot deploy to cloudsmith, missing $CLOUDSMITH_API_KEY' + exit 0 +fi + +if pyenv versions 2>&1 >/dev/null; then + pyenv global 3.7.0 + python -m pip install cloudsmith-cli + pyenv rehash +elif dnf --version 2>&1 >/dev/null; then + sudo dnf install python3-pip python3-setuptools + sudo python3 -m pip install -q cloudsmith-cli +elif apt-get --version 2>&1 >/dev/null; then + sudo apt-get install python3-pip python3-setuptools + sudo python3 -m pip install -q cloudsmith-cli +else + sudo -H python3 -m ensurepip + sudo -H python3 -m pip install -q setuptools + sudo -H python3 -m pip install -q cloudsmith-cli +fi + +BUILD_ID=${CIRCLE_BUILD_NUM:-1} +commit=$(git rev-parse --short=7 HEAD) || commit="unknown" +now=$(date --rfc-3339=seconds) || now=$(date) + +tarball=$(ls $HOME/project/build/*.tar.gz) +xml=$(ls $HOME/project/build/*.xml) +sudo chmod 666 $xml +echo '" >> $xml + +cloudsmith push raw --republish --no-wait-for-sync $REPO $tarball +cloudsmith push raw --republish --no-wait-for-sync $REPO $xml diff --git a/ci/docker-build-flatpak.sh b/ci/docker-build-flatpak.sh index 1eb0e49..ca715c4 100755 --- a/ci/docker-build-flatpak.sh +++ b/ci/docker-build-flatpak.sh @@ -7,7 +7,7 @@ cd $(dirname $(readlink -fn $0)) set -xe df -h -cd /opencpn-ci +cd $TOPDIR su -c "dnf install -y sudo cmake gcc-c++ flatpak-builder flatpak make tar" flatpak remote-add --user --if-not-exists flathub \ https://flathub.org/repo/flathub.flatpakrepo diff --git a/ci/travis-build-flatpak.sh b/ci/travis-build-flatpak.sh index 58b4823..e674ae3 100755 --- a/ci/travis-build-flatpak.sh +++ b/ci/travis-build-flatpak.sh @@ -19,6 +19,7 @@ sleep 5; sudo docker pull fedora:28; docker run --privileged -d -ti -e "container=docker" \ + -e "TOPDIR=/opencpn-ci" \ -v /sys/fs/cgroup:/sys/fs/cgroup \ -v $(pwd):/opencpn-ci:rw \ fedora:28 /usr/sbin/init diff --git a/mingw/fedora/README.md b/mingw/fedora/README.md new file mode 100644 index 0000000..aa17ac8 --- /dev/null +++ b/mingw/fedora/README.md @@ -0,0 +1,21 @@ +What's here? +============ + +Tools to build a windows 32-bit executable using the mingw toolchain. + +How? +==== + $ sudo dnf copr enable leamas/opencpn-mingw + $ sudo dnf builddep opencpn-deps.spec + $ cd ../.. + $ rm -rf build; mkdir build + $ cd build; + $ cmake -DCMAKE_TOOLCHAIN_FILE=../mingw/fedora/toolchain.cmake .. + $ make + $ make package + +Notes: +===== +The build requires updated packages, notably wx3GTK, available at +https://copr.fedorainfracloud.org/coprs/leamas/opencpn-mingw. +The copr enable command above sets up access to this repo. diff --git a/mingw/fedora/opencpn-deps.spec b/mingw/fedora/opencpn-deps.spec new file mode 100644 index 0000000..4c3b6c9 --- /dev/null +++ b/mingw/fedora/opencpn-deps.spec @@ -0,0 +1,67 @@ +Name: opencpn-deps +Version: 0.1 +Release: 1%{?dist} +Summary: Empty package with opencpn build dependencies + +License: MIT +URL: https://github.com/leamas/opencpn + +BuildRequires: binutils +BuildRequires: cmake +BuildRequires: gettext +BuildRequires: git +BuildRequires: make +BuildRequires: mingw-binutils-generic +BuildRequires: mingw-filesystem-base +BuildRequires: mingw32-binutils +BuildRequires: mingw32-bzip2 +BuildRequires: mingw32-cairo +BuildRequires: mingw32-curl +BuildRequires: mingw32-expat +BuildRequires: mingw32-filesystem +BuildRequires: mingw32-fontconfig +BuildRequires: mingw32-freetype +BuildRequires: mingw32-gcc +BuildRequires: mingw32-gcc-c++ +BuildRequires: mingw32-cpp +BuildRequires: mingw32-gettext +BuildRequires: mingw32-headers +BuildRequires: mingw32-glib2 +BuildRequires: mingw32-gtk2 +BuildRequires: mingw32-libarchive +BuildRequires: mingw32-libffi +BuildRequires: mingw32-libpng +BuildRequires: mingw32-libtiff +BuildRequires: mingw32-libxml2 +BuildRequires: mingw32-nsiswrapper +BuildRequires: mingw32-openssl +BuildRequires: mingw32-pcre +BuildRequires: mingw32-pixman +BuildRequires: mingw32-sqlite +BuildRequires: mingw32-win-iconv +BuildRequires: mingw32-wxWidgets3 >= 3.0.2 +BuildRequires: mingw32-xz-libs + +%description + +Empty package used to catch build dependencies for opencpn using +the mingw tools to create a Windows 32-bit executable + +Use dnf builddep opencpn-deps.spec to install the dependencies. + +%prep + + +%build + + +%install + + +%files +%doc COPYING + + +%changelog +* Fri Mar 01 2019 Alec Leamas - 0.1-1 +- Initial release diff --git a/mingw/fedora/toolchain.cmake b/mingw/fedora/toolchain.cmake new file mode 100644 index 0000000..25fad71 --- /dev/null +++ b/mingw/fedora/toolchain.cmake @@ -0,0 +1,18 @@ +# the name of the target operating system +SET(CMAKE_SYSTEM_NAME Windows) + +# which compilers to use for C and C++ +SET(CMAKE_C_COMPILER i686-w64-mingw32-gcc) +SET(CMAKE_CXX_COMPILER i686-w64-mingw32-c++) +SET(CMAKE_RC_COMPILER i686-w64-mingw32-windres) + +# here is the target environment located +SET(CMAKE_FIND_ROOT_PATH + /usr/i686-w64-mingw32 /usr/i686-w64-mingw32/sys-root/mingw) + +# adjust the default behaviour of the FIND_XXX() commands: +# search headers and libraries in the target environment, search +# programs in the host environment +set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) +set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) +set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) diff --git a/squiddio-plugin.xml.in b/squiddio-plugin.xml.in index 5a26175..0f7adbf 100644 --- a/squiddio-plugin.xml.in +++ b/squiddio-plugin.xml.in @@ -20,7 +20,7 @@ Android comes with sQuiddio built in. ${PKG_TARGET} ${PKG_TARGET_VERSION} - https://dl.bintray.com/leamas/OpenCPN/${PKG_NVR}_${PKG_TARGET_NVR}.tar.gz + ${PKG_BASE_URL}/${PKG_NVR}_${PKG_TARGET_NVR}.tar.gz https://opencpn.org/OpenCPN/plugins/sQuiddio.html From 8c5dffd9c172bd10a8369febfdfdd3c2e082fc06 Mon Sep 17 00:00:00 2001 From: Alec Leamas Date: Thu, 12 Sep 2019 21:37:07 +0200 Subject: [PATCH 17/31] .gitignore --- flatpak/.gitignore | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/flatpak/.gitignore b/flatpak/.gitignore index 84b2729..0581f53 100644 --- a/flatpak/.gitignore +++ b/flatpak/.gitignore @@ -2,3 +2,12 @@ app repo .flatpak-builder *.log + +CMakeCache.txt +CPackConfig.cmake +CPackSourceConfig.cmake +Resources/ +cmake_install.cmake +*.so +*.xml + From ba4802fde4bedd2dc6d646b26faf70b306587960 Mon Sep 17 00:00:00 2001 From: Alec Leamas Date: Sun, 15 Sep 2019 15:11:07 +0200 Subject: [PATCH 18/31] appveyor: drop secret, unused key --- appveyor.yml | 3 --- 1 file changed, 3 deletions(-) diff --git a/appveyor.yml b/appveyor.yml index 81edbca..89f2e86 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -65,9 +65,6 @@ artifacts: deploy: - provider: BinTray username: leamas - api_key: - secure: XleVzEPm+/uKCbcKlN9iMz7ueZPhqGlfNc4NgfJm4chdDOPUo4/S3iwVtTDz0QVC - subject: leamas repo: OpenCPN package: plugins version: 1.15-0.beta2 From 39489ce2c67d285247e0ace5cacb51ac11107bad Mon Sep 17 00:00:00 2001 From: Alec Leamas Date: Fri, 11 Oct 2019 22:22:43 +0200 Subject: [PATCH 19/31] build: flatpak: Update used branch stable -> master --- flatpak/Makefile.fp | 2 +- flatpak/org.opencpn.OpenCPN.Plugin.squiddio.yaml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/flatpak/Makefile.fp b/flatpak/Makefile.fp index 9755fb9..17c72fa 100644 --- a/flatpak/Makefile.fp +++ b/flatpak/Makefile.fp @@ -5,7 +5,7 @@ all: build build: flatpak-builder --force-clean app $(PLUGIN).yaml - flatpak build-export repo app stable + flatpak build-export repo app master install: flatpak install --user --reinstall -y $(CURDIR)/repo $(PLUGIN) diff --git a/flatpak/org.opencpn.OpenCPN.Plugin.squiddio.yaml b/flatpak/org.opencpn.OpenCPN.Plugin.squiddio.yaml index 8028abf..0bcad7b 100644 --- a/flatpak/org.opencpn.OpenCPN.Plugin.squiddio.yaml +++ b/flatpak/org.opencpn.OpenCPN.Plugin.squiddio.yaml @@ -1,6 +1,6 @@ id: org.opencpn.OpenCPN.Plugin.squiddio runtime: org.opencpn.OpenCPN -runtime-version: stable +runtime-version: master sdk: org.freedesktop.Sdk//18.08 build-extension: true separate-locales: false From b22dd37edfe4d0b04894bbebf0bb3114b82ba4b6 Mon Sep 17 00:00:00 2001 From: Alec Leamas Date: Fri, 11 Oct 2019 22:24:48 +0200 Subject: [PATCH 20/31] build: Restore .travis.yml to original state. --- .travis.yml | 82 +++++++++++++++++++++++++++++++---------------------- 1 file changed, 48 insertions(+), 34 deletions(-) diff --git a/.travis.yml b/.travis.yml index 42e8a21..9274883 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,44 +1,58 @@ +# ov50 Linux/OSX build - courtesy to https://github.com/seandepagnier language: cpp matrix: include: - - env: - - OCPN_TARGET=xenial - dist: xenial - compiler: gcc - script: - - "./ci/travis-build-debian.sh" - - env: - - OCPN_TARGET=flatpak - services: - - docker - script: - - "./ci/travis-build-flatpak.sh" - - env: - - OCPN_TARGET=fedora - services: - - docker - script: - - "./ci/travis-build-fedora.sh" - - env: - - OCPN_TARGET=osx - os: osx - compiler: clang - script: - - "./ci/travis-build-osx.sh" + - env: + - OCPN_TARGET=xenial + dist: xenial + compiler: gcc + script: + - sh ./ci/travis-build-debian.sh + + - env: + - OCPN_TARGET=trusty + dist: trusty + compiler: gcc + script: + - sh ./ci/travis-build-debian.sh + + - env: + - OCPN_TARGET=osx + os: osx + compiler: clang + script: + - bash ./ci/travis-build-osx.sh + +script: + - if [[ "${COVERITY_SCAN_BRANCH}" == 1 ]]; + then + echo "Don't build on coverty_scan branch."; + exit 0; + fi + - ls -l; + notifications: email: false git: depth: 10 - user: leamas - skip_cleanup: true - on: - all_branches: true - key: $BINTRAY_API_KEY +before_install: +- if [ "$CXX" = "g++" ]; then export CXX="g++-6" CC="gcc-6"; fi +addons: + apt: + sources: + - ubuntu-toolchain-r-test + packages: + - gcc-6 + - g++-6 deploy: - provider: script +- provider: releases + api_key: + secure: "fAXQOEZd83GYDVDw+KOHEJwKWAD/ILVlT9vWl6FNQkjltIBVp0PpbkgRr/fQcGrQno7UMUZdPm+OIbWAq+0d675SoeZ8NFjGd884SzjslWauB8kRG7iK72Y0EAYqRHl83XqdspuCcBE24fU95C87DbQdhp/zmKi+NB8n3m0X4ifw2G6CNpUdaj9Oxq7dDIQikUTynmmIlTMXtNLr8aQRBihLVpMoIuWLyjskyxPuRU+jFkM0xAeyqy246ZFg0eK2HTIqhlSA/HJHlPHF0gBDxnjca5ZIGYC7s5rr03ghSIMAr6nLHCmAelWPp3+znwTzJ5mGv+4vKwOvOi3EMpCDtsDbh0ybMkSr3tdJzJ9TEsgZ6MIqC2X9bwKtQcW/cmSeJmmpUVhaIZ7KjYS3cIxlQ+jU0aIZupsf0P73rovTfNWuC919H9Ggu/Mc3rELwBUZ1FctxDFZ13cM1gnpbAZXA0xZGGK0AV3Y9M1BQ/RBcnez2OT7DAwYofYe2VAnvMJbYkJUKVVMsKZqPF+9fXGYhtVTpKw3j89nE98xRkIKiWQBmUE6x5XPSgxsI1CaDBIuZiXDO/IMh2v3HGiFlOC8qAuV6Z1vdHbaIFtzPkVEZ1miMBbD3XPki3Crl4kVXtGrCPAl6uH3YVrats9CL6shfgwzsS52zBacQxQu7RCrT6U=" + file_glob: true + file: "$TRAVIS_BUILD_DIR/build/*.{deb,rpm,dmg,txz,pkg,pkg.tar.xz}" skip_cleanup: true - script: ci/travis-upload.sh on: - branch: master - tags: false - + repo: mauroc/squiddio_pi + tags: true + all_branches: true + From 04d60163fa865b895ffbb7f4a295de816343c39a Mon Sep 17 00:00:00 2001 From: Alec Leamas Date: Fri, 11 Oct 2019 22:30:34 +0200 Subject: [PATCH 21/31] build: appveyor: restore original deployement. --- .circleci/config.yml | 10 +++---- appveyor.yml | 66 +++++++++++++++++++++----------------------- 2 files changed, 36 insertions(+), 40 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index bc05fd6..aee4e08 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -63,20 +63,20 @@ workflows: - build-debian: filters: branches: - only: master + only: work - build-flatpak: filters: branches: - only: master + only: work - build-fedora: filters: branches: - only: master + only: work - build-macos: filters: branches: - only: master + only: work - build-mingw: filters: branches: - only: master + only: work diff --git a/appveyor.yml b/appveyor.yml index 89f2e86..3fe1227 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -1,4 +1,4 @@ -clone_folder: c:\project\opencpn\squiddio_pi +clone_folder: c:\project\squiddio_pi shallow_clone: false clone_depth: 10 @@ -7,49 +7,43 @@ image: platform: # - x64 -- Win32 + - Win32 -configuration: RelWithDebInfo +configuration: Release test: OFF install: # VS2015 and earlier version - '"C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\SetEnv.cmd" /x86' - call "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvars32.bat" - - # set environment variables for wxWidgets + +# sent environment variables for wxWidgets - set WXWIN=C:\wxWidgets-3.1.2 - set wxWidgets_ROOT_DIR=%WXWIN% - set wxWidgets_LIB_DIR=%WXWIN%\lib\vc_dll - cmd: SET PATH=%PATH%;%WXWIN%;%wxWidgets_LIB_DIR%;C:\Program Files (x86)\Poedit\Gettexttools\bin; - # install dependencies: +# install dependencies: - choco install poedit # Download and unzip wxwidgets - ps: Start-FileDownload http://opencpn.navnux.org/build_deps/wxWidgets-3.1.2.7z - cmd: 7z x wxWidgets-3.1.2.7z -o%WXWIN% > null - # some debugging information - # - cmake --help - # - set Displays sensitive password! - - # build wxWidgets - Disabled as we provide prebuilt WX to save time - #- cmd: cd %WXWIN%\build\msw\ - #- cmd: nmake -f makefile.vc BUILD=release SHARED=1 CFLAGS=/D_USING_V120_SDK71_ CXXFLAGS=/D_USING_V120_SDK71_ - #- cmd: nmake -f makefile.vc BUILD=debug SHARED=1 CFLAGS=/D_USING_V120_SDK71_ CXXFLAGS=/D_USING_V120_SDK71_ +#- set #Use only while debugging - it reveals the deploy token set on Appveyor +#- cmake --help before_build: - - cd c:\project\opencpn\squiddio_pi - - mkdir build - - cd build -# - ps: Start-FileDownload http://opencpn.navnux.org/build_deps/OpenCPN_buildwin-4.99a.7z -# - cmd: 7z x -y OpenCPN_buildwin-4.99a.7z -oc:\project\opencpn\buildwin - - cmake -T v141_xp -DOCPN_CI_BUILD=ON .. + - cd c:\project\squiddio_pi + - rm -rf build && mkdir build && cd build + - ps: Start-FileDownload https://downloads.sourceforge.net/project/opencpnplugins/opencpn_lib/4.99.1405-vc141_xp/opencpn.lib + - ps: Start-FileDownload http://opencpn.navnux.org/build_deps/OpenCPN_buildwin-4.99a.7z + - cmd: 7z x -y OpenCPN_buildwin-4.99a.7z -oc:\project\squiddio_pi\buildwin + - cmake -T v141_xp .. build_script: - cmake -G "Visual Studio 15 2017" .. - - cmake --build . --target install --config RelWithDebInfo - - cmake --build . --target package --config RelWithDebInfo + - cmake --build . --target install --config Release + - cmake --build . --target package --config Release - choco install git - python -m ensurepip - python -m pip install -q setuptools @@ -57,17 +51,19 @@ build_script: - bash ../ci/appveyor-upload.sh artifacts: - - path: 'build\*gz' - name: plugin_archive - - path: '**\*msvc*xml' - name: plugin_xml - + path: 'build\*.exe' + name: installer +# Deploy to GitHub Releases deploy: - - provider: BinTray - username: leamas - repo: OpenCPN - package: plugins - version: 1.15-0.beta2 - publish: true - override: true - explode: false + + provider: GitHub + auth_token: + secure: 4l9NTrQyvKVqzBPAT3ejCSZhllJXWaI/QcFWTBHueU3YEqLRAZM3+LinoOBnMcf2 #Mauro's encryption + artifact: installer,portable + draft: true + prerelease: true +# tag: $(APPVEYOR_REPO_TAG_NAME) # insert version name + on: + configuration: Release # Debug contains non-redist MS DLLs + APPVEYOR_REPO_TAG: true # deploy on tag push only +# branch: master # release from master branch only From 9feb1bdcc7a6923abd066ba4ddcc2e3e2a13905c Mon Sep 17 00:00:00 2001 From: Alec Leamas Date: Fri, 11 Oct 2019 23:25:11 +0200 Subject: [PATCH 22/31] build: circleci: Reset built branch to master only. --- .circleci/config.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index aee4e08..bc05fd6 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -63,20 +63,20 @@ workflows: - build-debian: filters: branches: - only: work + only: master - build-flatpak: filters: branches: - only: work + only: master - build-fedora: filters: branches: - only: work + only: master - build-macos: filters: branches: - only: work + only: master - build-mingw: filters: branches: - only: work + only: master From 3230d331b11aaba592eb09494c8030a229331c4d Mon Sep 17 00:00:00 2001 From: Alec Leamas Date: Fri, 11 Oct 2019 23:29:35 +0200 Subject: [PATCH 23/31] ci: cloudsmith: Update repo url in upload an xml metadata. --- CMakeLists.txt | 2 +- ci/appveyor-upload.sh | 2 +- ci/circleci-upload.sh | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 0d8db6e..8cf5f6c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -41,7 +41,7 @@ SET(PKG_API_VERSION "1.16") SET(PKG_AUTHOR "Mauro Calvi") SET(PKG_NVR ${PACKAGE_NAME}-${PACKAGE_VERSION}-${PKG_RELEASE}) SET(PKG_BASE_URL - "https://dl.cloudsmith.io/public/alec-leamas/opencpn-plugins-unstable/raw/files") + "https://dl.cloudsmith.io/public/mauro-calvi/squiddio-pi/raw/files") INCLUDE("cmake/PluginSetup.cmake") diff --git a/ci/appveyor-upload.sh b/ci/appveyor-upload.sh index 7fddfe4..96103f6 100755 --- a/ci/appveyor-upload.sh +++ b/ci/appveyor-upload.sh @@ -6,7 +6,7 @@ set -xe -REPO='alec-leamas/opencpn-plugins-unstable' +REPO='mauro-calvi/squiddio-pi' if [ -z "$CLOUDSMITH_API_KEY" ]; then echo 'Cannot deploy to cloudsmith, missing $CLOUDSMITH_API_KEY' diff --git a/ci/circleci-upload.sh b/ci/circleci-upload.sh index 0510b0d..a6897b6 100755 --- a/ci/circleci-upload.sh +++ b/ci/circleci-upload.sh @@ -6,7 +6,7 @@ set -xe -REPO='alec-leamas/opencpn-plugins-unstable' +REPO='mauro-calvi/squiddio-pi' if [ -z "$CIRCLECI" ]; then exit 0; From 69db5d11bef64fb66e51376bdf7a252d29022fe6 Mon Sep 17 00:00:00 2001 From: Alec Leamas Date: Sat, 12 Oct 2019 08:39:45 +0200 Subject: [PATCH 24/31] ci: circleci: Build all branches, not just master --- .circleci/config.yml | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index bc05fd6..2b60bb2 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -63,20 +63,30 @@ workflows: - build-debian: filters: branches: - only: master + ignore: + - devel + - tmp - build-flatpak: filters: branches: - only: master + ignore: + - devel + - tmp - build-fedora: filters: branches: - only: master + ignore: + - devel + - tmp - build-macos: filters: branches: - only: master + ignore: + - devel + - tmp - build-mingw: filters: branches: - only: master + ignore: + - devel + - tmp From 093eab1df076dac167ee6360d81d929e9a54ec2e Mon Sep 17 00:00:00 2001 From: Alec Leamas Date: Sat, 12 Oct 2019 13:40:26 +0200 Subject: [PATCH 25/31] ci: Drop not really useful fedora build. --- .circleci/config.yml | 16 ---------------- 1 file changed, 16 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 2b60bb2..04eef01 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -26,16 +26,6 @@ jobs: - checkout - run: ci/circleci-build-flatpak.sh - run: ci/circleci-upload.sh - build-fedora: - docker: - - image: fedora:29 - environment: - - OCPN_TARGET: fedora - steps: - - run: su -c "dnf install -q -y git openssh-clients openssh-server" - - checkout - - run: ci/circleci-build-fedora.sh - - run: ci/circleci-upload.sh build-mingw: docker: - image: fedora:29 @@ -72,12 +62,6 @@ workflows: ignore: - devel - tmp - - build-fedora: - filters: - branches: - ignore: - - devel - - tmp - build-macos: filters: branches: From 5911f1747d6410e32217dc4f801ab98f6a641c8f Mon Sep 17 00:00:00 2001 From: Alec Leamas Date: Sat, 12 Oct 2019 13:44:49 +0200 Subject: [PATCH 26/31] ci: upload scripts: Don't log cloudsmith key --- ci/appveyor-upload.sh | 4 ++-- ci/circleci-upload.sh | 3 ++- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/ci/appveyor-upload.sh b/ci/appveyor-upload.sh index 96103f6..648216f 100755 --- a/ci/appveyor-upload.sh +++ b/ci/appveyor-upload.sh @@ -4,8 +4,6 @@ # Upload the .tar.gz and .xml artifacts to cloudsmith # -set -xe - REPO='mauro-calvi/squiddio-pi' if [ -z "$CLOUDSMITH_API_KEY" ]; then @@ -13,6 +11,8 @@ if [ -z "$CLOUDSMITH_API_KEY" ]; then exit 0 fi +set -xe + python -m ensurepip python -m pip install -q setuptools python -m pip install -q cloudsmith-cli diff --git a/ci/circleci-upload.sh b/ci/circleci-upload.sh index a6897b6..b9af371 100755 --- a/ci/circleci-upload.sh +++ b/ci/circleci-upload.sh @@ -4,7 +4,6 @@ # Upload the .tar.gz and .xml artifacts to cloudsmith. # -set -xe REPO='mauro-calvi/squiddio-pi' @@ -17,6 +16,8 @@ if [ -z "$CLOUDSMITH_API_KEY" ]; then exit 0 fi +set -xe + if pyenv versions 2>&1 >/dev/null; then pyenv global 3.7.0 python -m pip install cloudsmith-cli From fe707faa13cb36b1d5cbbfd39fe759919d839fb2 Mon Sep 17 00:00:00 2001 From: Alec Leamas Date: Sun, 13 Oct 2019 20:51:17 +0200 Subject: [PATCH 27/31] ci: Remove unused files. --- ci/bintray.js | 58 --------------------------------------------- ci/travis-upload.sh | 36 ---------------------------- 2 files changed, 94 deletions(-) delete mode 100644 ci/bintray.js delete mode 100755 ci/travis-upload.sh diff --git a/ci/bintray.js b/ci/bintray.js deleted file mode 100644 index 4cebf16..0000000 --- a/ci/bintray.js +++ /dev/null @@ -1,58 +0,0 @@ -{ - "package": { - "name": "plugins", - "repo": "OpenCPN", - "subject": "leamas", - "desc": "squiddio plugin automatic push", - "website_url": "www.jfrog.com", - "issue_tracker_url": "https://github.com/leamas/squiddio_pi/issues", - "vcs_url": "https://github.com/leamas/squiddio_pi.git", - "github_use_tag_release_notes": false, - "licenses": ["GPL2"], - "labels": [], - "public_download_numbers": false, - "public_stats": false, - "attributes": [{ - "name": "att5", - "values" : ["2014-12-28T19:43:37+0100"], - "type": "date" - }] - }, - - "version": { - "name": "1.15-0.beta2", - "desc": "Pre-release based on 5.0.0 beta2", - "released": "2019-03-14", - "vcs_tag": "1.15", - "attributes": [ - {"name": "VerAtt1", "values" : ["VerVal1"], "type": "string"}, - {"name": "VerAtt2", "values" : [1, 3.3, 5], "type": "number"}, - { - "name": "VerAtt3", - "values" : ["2015-01-01T19:43:37+0100"], - "type": "date" - } - ], - "gpgSign": false - }, - - "files": - [ - { - "includePattern": "build/(squiddio.*\\.tar.gz)", - "uploadPattern": "$1", - "matrixParams": {"override": 1} - }, - { - "includePattern": "build/(squiddio-plugin\\.xml)", - "uploadPattern": "$1", - "matrixParams": {"override": 1} - }, - { - "includePattern": "build/(squiddio-plugin-.*\\.xml)", - "uploadPattern": "$1", - "matrixParams": {"override": 1} - } - ], - "publish": true -} diff --git a/ci/travis-upload.sh b/ci/travis-upload.sh deleted file mode 100755 index ec950b6..0000000 --- a/ci/travis-upload.sh +++ /dev/null @@ -1,36 +0,0 @@ -#!/bin/sh -PLUGIN="squiddio" - -VERSION="unstable" -OPTS="override=1;publish=1" -PKG="plugins" - -API_BASE="https://api.bintray.com/content/leamas/OpenCPN/$PKG/$VERSION" - -cd build -tarball=$(echo ${PLUGIN}*.tar.gz) -xml=$(echo ${PLUGIN}-plugin*.xml) - -if [ -z "$BINTRAY_API_KEY" ]; then - echo 'Cannot deploy to bintray:: missing $BINTRAY_API_KEY' -else - echo "Deploying to bintray" - set -x - curl -T $tarball --user leamas:$BINTRAY_API_KEY "$API_BASE/$tarball;$OPTS" - curl -T $xml --user leamas:$BINTRAY_API_KEY "$API_BASE/$xml;$OPTS" - set +x -fi - - -if [ -z "$CLOUDSMITH_API_KEY" ]; then - echo 'Cannot deploy to cloudsmith: missing $CLOUDSMITH_API_KEY' -else - echo "Deploying to cloudsmith" - set -x - sudo python3 -m pip install cloudsmith-cli - cloudsmith push raw --republish --no-wait-for-sync \ - alec-leamas/opencpn-plugins-unstable $tarball - cloudsmith push raw --republish --no-wait-for-sync \ - alec-leamas/opencpn-plugins-unstable $xml - set +x -fi From 08cd5fbc0e481711871c40db977ce68ae791ad40 Mon Sep 17 00:00:00 2001 From: Alec Leamas Date: Mon, 14 Oct 2019 07:47:12 +0200 Subject: [PATCH 28/31] ci: circleci-upload: Log used deployment key. --- ci/circleci-upload.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/ci/circleci-upload.sh b/ci/circleci-upload.sh index b9af371..92834ce 100755 --- a/ci/circleci-upload.sh +++ b/ci/circleci-upload.sh @@ -16,6 +16,8 @@ if [ -z "$CLOUDSMITH_API_KEY" ]; then exit 0 fi +echo "Using \$CLOUDSMITH_API_KEY: ${CLOUDSMITH_API_KEY:0:4}..." + set -xe if pyenv versions 2>&1 >/dev/null; then From 057afa4b47c562ec96dcee9554fd370c162afe5f Mon Sep 17 00:00:00 2001 From: Alec Leamas Date: Tue, 15 Oct 2019 07:20:38 +0200 Subject: [PATCH 29/31] ci: appveyor-upload: Log used deployment key. --- ci/appveyor-upload.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/ci/appveyor-upload.sh b/ci/appveyor-upload.sh index 648216f..43a471a 100755 --- a/ci/appveyor-upload.sh +++ b/ci/appveyor-upload.sh @@ -11,6 +11,8 @@ if [ -z "$CLOUDSMITH_API_KEY" ]; then exit 0 fi +echo "Using \$CLOUDSMITH_API_KEY: ${CLOUDSMITH_API_KEY:0:4}..." + set -xe python -m ensurepip From 3d4eed252f7281cbfd7168138389e628d4ab129c Mon Sep 17 00:00:00 2001 From: Alec Leamas Date: Tue, 15 Oct 2019 21:42:00 +0200 Subject: [PATCH 30/31] ci: macos: Fix broken travis macos image. Lately, the travis MacOS image homebrew installation has become broken. Walk aroun dby re-installing homebrew. --- ci/travis-build-osx.sh | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/ci/travis-build-osx.sh b/ci/travis-build-osx.sh index 11a4089..a91d364 100755 --- a/ci/travis-build-osx.sh +++ b/ci/travis-build-osx.sh @@ -5,8 +5,12 @@ # # bailout on errors and echo commands -set -xe +curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/uninstall > uninstall +chmod 755 uninstall +./uninstall -f +/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" +set -xe brew install cairo libexif xz libarchive python3 curl --version >/dev/null || brew install curl wget http://opencpn.navnux.org/build_deps/wx312_opencpn50_macos109.tar.xz From fdbac6cf3789fb1a9fe80685bae2dd4ff8e2c2d5 Mon Sep 17 00:00:00 2001 From: Alec Leamas Date: Tue, 15 Oct 2019 22:43:49 +0200 Subject: [PATCH 31/31] ci: macos: Update dependencies installation code. --- ci/travis-build-osx.sh | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/ci/travis-build-osx.sh b/ci/travis-build-osx.sh index a91d364..de51df1 100755 --- a/ci/travis-build-osx.sh +++ b/ci/travis-build-osx.sh @@ -11,7 +11,10 @@ chmod 755 uninstall /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" set -xe -brew install cairo libexif xz libarchive python3 + +for pkg in cairo cmake libarchive libexif python3 wget xz; do + brew list $pkg || brew install $pkg +done curl --version >/dev/null || brew install curl wget http://opencpn.navnux.org/build_deps/wx312_opencpn50_macos109.tar.xz tar xJf wx312_opencpn50_macos109.tar.xz -C /tmp