diff --git a/.gitignore b/.gitignore index 42c4a5cb5..29f6d0f19 100644 --- a/.gitignore +++ b/.gitignore @@ -37,6 +37,8 @@ build-* bin-* mkqtdecl.tmp testtmp +*build.macos* +*bin.macos* # private data private @@ -54,3 +56,12 @@ src/klayout.pro.user *.egg-info/ build/ dist/ + + +# IDEs +.vscode + + +# Macos artifacts +*.dmg +*.dmg.md5 diff --git a/.travis.yml b/.travis.yml index 34ac00e1e..bbe40495a 100644 --- a/.travis.yml +++ b/.travis.yml @@ -162,37 +162,6 @@ matrix: directories: - ccache - - name: "cp34-cp34m-manylinux1_x86_64.whl" - os: linux - sudo: true - language: python - python: '3.4' - services: - - docker - env: - - DOCKER_IMAGE="quay.io/pypa/manylinux1_x86_64" - - PY_VERSION="cp34-cp34m" - - DOCKER_BUILD=true - - TEST_IN_HOST=true - - MATRIX_EVAL="" - cache: - directories: - - ccache - - - name: "cp34-cp34m-manylinux1_i686.whl" - os: linux - sudo: true - services: - - docker - env: - - DOCKER_IMAGE="quay.io/pypa/manylinux1_i686" - - PY_VERSION="cp34-cp34m" - - DOCKER_BUILD=true - - MATRIX_EVAL="" - cache: - directories: - - ccache - - name: "cp27-cp27mu-manylinux1_x86_64.whl" os: linux sudo: true @@ -255,6 +224,229 @@ matrix: directories: - ccache + # python 3 osx + + # MacOS 10.15 + + # MacOS 10.15, Python 3.9 + - name: "cp39-cp39m-macosx_10_15_x86_64.whl" + os: osx + osx_image: xcode12 # macOS 10.15 + cache: + directories: + - ccache + addons: + homebrew: + packages: + - python@3.9 + - ccache + update: true + env: + - MATRIX_EVAL="shopt -s expand_aliases; alias python='/usr/local/opt/python@3.9/bin/python3'; alias pip='/usr/local/opt/python@3.9/bin/pip3';" + - ARCHFLAGS="-std=c++11" + - PIP_UPDATE="1" + - PYTHON_BUILD=true + + # MacOS 10.15, Python 3.8 + - name: "cp38-cp38m-macosx_10_15_x86_64.whl" + os: osx + osx_image: xcode12 # macOS 10.15 + cache: + directories: + - ccache + addons: + homebrew: + packages: + - python@3.8 + - ccache + update: true + env: + - MATRIX_EVAL="shopt -s expand_aliases; alias python='/usr/local/opt/python@3.8/bin/python3'; alias pip='/usr/local/opt/python@3.8/bin/pip3';" + - ARCHFLAGS="-std=c++11" + - PIP_UPDATE="1" + - PYTHON_BUILD=true + + # MacOS 10.15, Python 3.7 + - name: "cp37-cp37m-macosx_10_15_x86_64.whl" + os: osx + osx_image: xcode12 # macOS 10.15 + cache: + directories: + - ccache + addons: + homebrew: + packages: + - python@3.7 + - ccache + update: true + env: + - MATRIX_EVAL="shopt -s expand_aliases; alias python='/usr/local/opt/python@3.7/bin/python3'; alias pip='/usr/local/opt/python@3.7/bin/pip3';" + - ARCHFLAGS="-std=c++11" + - PIP_UPDATE="1" + - PYTHON_BUILD=true + + # MacOS 10.14 + + # MacOS 10.14, Python 3.9 + - name: "cp39-cp39m-macosx_10_14_x86_64.whl" + os: osx + osx_image: xcode11 # macOS 10.14 + cache: + directories: + - ccache + addons: + homebrew: + packages: + - python@3.9 + - ccache + update: true + env: + - MATRIX_EVAL="shopt -s expand_aliases; alias python='/usr/local/opt/python@3.9/bin/python3'; alias pip='/usr/local/opt/python@3.9/bin/pip3';" + - ARCHFLAGS="-std=c++11" + - PIP_UPDATE="1" + - PYTHON_BUILD=true + + # MacOS 10.14, Python 3.8 + - name: "cp38-cp38m-macosx_10_14_x86_64.whl" + os: osx + osx_image: xcode11 # macOS 10.14 + cache: + directories: + - ccache + addons: + homebrew: + packages: + - python@3.8 + - ccache + update: true + env: + - MATRIX_EVAL="shopt -s expand_aliases; alias python='/usr/local/opt/python@3.8/bin/python3'; alias pip='/usr/local/opt/python@3.8/bin/pip3';" + - ARCHFLAGS="-std=c++11" + - PIP_UPDATE="1" + - PYTHON_BUILD=true + + # MacOS 10.14, Python 3.7 + - name: "cp37-cp37m-macosx_10_14_x86_64.whl" + os: osx + osx_image: xcode11 # macOS 10.14 + cache: + directories: + - ccache + addons: + homebrew: + packages: + - python@3.7 + - ccache + update: true + env: + - MATRIX_EVAL="shopt -s expand_aliases; alias python='/usr/local/opt/python@3.7/bin/python3'; alias pip='/usr/local/opt/python@3.7/bin/pip3';" + - ARCHFLAGS="-std=c++11" + - PIP_UPDATE="1" + - PYTHON_BUILD=true + + # MacOS 10.13 + + # MacOS 10.13, Python 3.9 + - name: "cp39-cp39m-macosx_10_13_x86_64.whl" + os: osx + osx_image: xcode10.1 # macOS 10.13 + cache: + directories: + - ccache + addons: + homebrew: + packages: + - python@3.9 + - ccache + update: true + env: + - MATRIX_EVAL="shopt -s expand_aliases; alias python='/usr/local/opt/python@3.9/bin/python3'; alias pip='/usr/local/opt/python@3.9/bin/pip3';" + - ARCHFLAGS="-std=c++11" + - PIP_UPDATE="1" + - PYTHON_BUILD=true + + # MacOS 10.13, Python 3.8 + - name: "cp38-cp38m-macosx_10_13_x86_64.whl" + os: osx + osx_image: xcode10.1 # macOS 10.13 + cache: + directories: + - ccache + addons: + homebrew: + packages: + - python@3.8 + - ccache + update: true + env: + - MATRIX_EVAL="shopt -s expand_aliases; alias python='/usr/local/opt/python@3.8/bin/python3'; alias pip='/usr/local/opt/python@3.8/bin/pip3';" + - ARCHFLAGS="-std=c++11" + - PIP_UPDATE="1" + - PYTHON_BUILD=true + + # MacOS 10.13, Python 3.7 + - name: "cp37-cp37m-macosx_10_13_x86_64.whl" + os: osx + osx_image: xcode10.1 # macOS 10.13 + cache: + directories: + - ccache + addons: + homebrew: + packages: + - python@3.7 + - ccache + update: true + env: + - MATRIX_EVAL="shopt -s expand_aliases; alias python='/usr/local/opt/python@3.7/bin/python3'; alias pip='/usr/local/opt/python@3.7/bin/pip3';" + - ARCHFLAGS="-std=c++11" + - PIP_UPDATE="1" + - PYTHON_BUILD=true + + # MacOS 10.12, Python 3.7 + + # - name: "klayout python3 osx10.12" + - name: "cp37-cp37m-macosx_10_12_x86_64.whl" + os: osx + osx_image: xcode9.2 # macOS 10.12 + cache: + directories: + - ccache + addons: + homebrew: + packages: + - python3 + - ccache + update: true + env: + - MATRIX_EVAL="shopt -s expand_aliases; alias python='python3'; alias pip='pip3';" + - ARCHFLAGS="-std=c++11" + - PIP_UPDATE="1" + - PYTHON_BUILD=true + + exclude: + + # No XCode 8.2.1 for Mac OS 10.11 + + # - name: "klayout python3 osx10.11" + - name: "cp37-cp37m-macosx_10_11_x86_64.whl" + os: osx + osx_image: xcode8 # macOS 10.11 + cache: + directories: + - ccache + addons: + homebrew: + packages: + - ccache + update: true + env: + - MATRIX_EVAL="brew update; brew config; brew upgrade python; brew postinstall python; ls -l /usr/local/opt/python/libexec/bin/; shopt -s expand_aliases; alias python='/usr/local/opt/python/libexec/bin/python'; alias pip='/usr/local/opt/python/libexec/bin/pip';" + - ARCHFLAGS="-std=c++11" + - PIP_UPDATE="1" + - PYTHON_BUILD=true + + # Python 2 is EOL # python 2 osx @@ -312,99 +504,7 @@ matrix: - PIP_UPDATE="1" - PYTHON_BUILD=true - # python 3 osx - - # - name: "klayout python3 osx10.13" - - name: "cp37-cp37m-macosx_10_13_x86_64.whl" - os: osx - osx_image: xcode9.4 # macOS 10.13 - cache: - directories: - - ccache - addons: - homebrew: - packages: - - python3 - - ccache - update: true - env: - - MATRIX_EVAL="shopt -s expand_aliases; alias python='python3'; alias pip='pip3';" - - ARCHFLAGS="-std=c++11" - - PIP_UPDATE="1" - - PYTHON_BUILD=true - - # - name: "klayout python3.6.6 osx10.13" - - name: "cp36-cp36m-macosx_10_13_x86_64.whl" - os: osx - osx_image: xcode9.4 # macOS 10.13 - cache: - directories: - - ccache - addons: - homebrew: - packages: - - ccache - update: true - env: - - MATRIX_EVAL="brew update; brew tap sashkab/python; brew install sashkab/python/python36; brew link --force --overwrite python36; shopt -s expand_aliases; alias python='/usr/local/opt/python36/bin/python3.6'; alias pip='/usr/local/opt/python36/bin/pip3.6';" - - ARCHFLAGS="-std=c++11" - - PIP_UPDATE="1" - - PYTHON_BUILD=true - - # - name: "klayout python3.5.6 osx10.13" - - name: "cp35-cp35m-macosx_10_13_x86_64.whl" - os: osx - osx_image: xcode9.4 # macOS 10.13 - cache: - directories: - - ccache - addons: - homebrew: - packages: - - ccache - update: true - env: - - MATRIX_EVAL="brew update; brew tap sashkab/python; brew install sashkab/python/python35; brew link --force --overwrite python35; shopt -s expand_aliases; alias python='/usr/local/opt/python35/bin/python3.5'; alias pip='/usr/local/opt/python35/bin/pip3.5';" - - ARCHFLAGS="-std=c++11" - - PIP_UPDATE="1" - - PYTHON_BUILD=true - - # - name: "klayout python3 osx10.12" - - name: "cp37-cp37m-macosx_10_12_x86_64.whl" - os: osx - osx_image: xcode8.3 # macOS 10.12 - cache: - directories: - - ccache - addons: - homebrew: - packages: - - python3 - - ccache - update: true - env: - - MATRIX_EVAL="shopt -s expand_aliases; alias python='python3'; alias pip='pip3';" - - ARCHFLAGS="-std=c++11" - - PIP_UPDATE="1" - - PYTHON_BUILD=true - - # - name: "klayout python3 osx10.11" - - name: "cp37-cp37m-macosx_10_11_x86_64.whl" - os: osx - osx_image: xcode8 # macOS 10.11 - cache: - directories: - - ccache - addons: - homebrew: - packages: - - ccache - update: true - env: - - MATRIX_EVAL="brew update; brew config; brew upgrade python; brew postinstall python; ls -l /usr/local/opt/python/libexec/bin/; shopt -s expand_aliases; alias python='/usr/local/opt/python/libexec/bin/python'; alias pip='/usr/local/opt/python/libexec/bin/pip';" - - ARCHFLAGS="-std=c++11" - - PIP_UPDATE="1" - - PYTHON_BUILD=true + # KLayout builds not enabled for now on MacOS # KLayout builds for mac # Python 3 diff --git a/MANIFEST.in b/MANIFEST.in index 8088e14c0..4116c5b22 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -9,3 +9,4 @@ include src/plugins/*/*/db_plugin/*.cc include src/plugins/*/db_plugin/*.h include src/plugins/*/*/db_plugin/*.h recursive-include src/plugins/common *.h +include version.sh diff --git a/Makefile b/Makefile index a8e1d727b..b96f80895 100644 --- a/Makefile +++ b/Makefile @@ -3,10 +3,10 @@ GITCOMMIT := $(shell git rev-parse --short HEAD) KLAYOUT_VERSION := $(shell source version.sh && echo $$KLAYOUT_VERSION) ifndef PYTHON_VERSION - PYTHON_VERSION := B37 + PYTHON_VERSION := HB38 endif ifndef MACOS_VERSION - MACOS_VERSION := HighSierra + MACOS_VERSION := Catalina endif .ONESHELL: @@ -15,11 +15,11 @@ default: help help: @echo "For Mac OS only" - @echo "make build PYTHON_VERSION=B37" - @echo "make deploy PYTHON_VERSION=B37" + @echo "make build PYTHON_VERSION=HB38" + @echo "make deploy PYTHON_VERSION=HB38" @echo "make test MACOS_VERSION=HighSierra" - @echo "Valid Mac OS Versions: [Yosemite, ElCapitan, Sierra, HighSierra]" - @echo "Valid Python Version: [nil, Sys, B37]" + @echo "Valid Mac OS Versions: [Yosemite, ElCapitan, Sierra, HighSierra, Mojave, Catalina]" + @echo "Valid Python Version: [nil, Sys, HB38]" build: @echo "Building for Mac $(GITCOMMIT)" @@ -29,11 +29,11 @@ build: deploy: @echo "Deploying 4 Mac $(GITCOMMIT)" ./build4mac.py -p $(PYTHON_VERSION) -q Qt5Brew -y - + test: @echo "Testing 4 Mac $(GITCOMMIT)" - qt5.pkg.macos-$(MACOS_VERSION)-release/klayout.app/Contents/MacOS/klayout -b -r test-pylib-script.py; \ - cd qt5.build.macos-$(MACOS_VERSION)-release; \ + PIP_REQUIRE_VIRTUALENV="false" HW-qt5Brew.pkg.macos-$(MACOS_VERSION)-release-RsysPhb38/klayout.app/Contents/MacOS/klayout -b -r test-pylib-script.py; \ + cd qt5Brew.build.macos-$(MACOS_VERSION)-release-RsysPhb38; \ ln -s klayout.app/Contents/MacOS/klayout klayout; \ export TESTTMP=testtmp; \ export TESTSRC=..; \ @@ -41,18 +41,24 @@ test: ./ut_runner -h || true; \ cd .. +dmg-template: + mkdir -p testtemplate/klayout.app + ./makeDMG4mac.py -p testtemplate -m -z -t klayoutDMGTemplate.dmg + cp -a klayoutDMGTemplate.dmg* macbuild/Resources/ + rm -Rf testtemplate + dropbox-deploy: @echo "Preparing for dropbox deployment $(MACOS_VERSION) $(GITCOMMIT)" - mkdir -p deploy/$(MACOS_VERSION)/$(PYTHON_VERSION)/$(KLAYOUT_VERSION); \ - pwd; \ - ls -lah; \ - touch build.txt; \ - cp build.txt deploy/$(MACOS_VERSION)/$(PYTHON_VERSION)/$(KLAYOUT_VERSION)/qt5.pkg.macos-$(MACOS_VERSION)-$(PYTHON_VERSION)-release-$(KLAYOUT_VERSION)-$(GITCOMMIT).log.txt; \ - hdiutil convert macbuild/Resources/klayoutDMGTemplate.dmg -format UDRW -o work-KLayout.dmg; \ - hdiutil resize -size 500m work-KLayout.dmg; \ - hdiutil attach work-KLayout.dmg -readwrite -noverify -quiet -mountpoint tempKLayout -noautoopen; \ - cp -a qt5.pkg.macos-$(MACOS_VERSION)-release/ tempKLayout/; \ - hdiutil detach tempKLayout; \ - hdiutil convert work-KLayout.dmg -format UDZO -imagekey zlib-level=9 -o deploy/$(MACOS_VERSION)/$(PYTHON_VERSION)/$(KLAYOUT_VERSION)/qt5.pkg.macos-$(MACOS_VERSION)-$(PYTHON_VERSION)-release-$(KLAYOUT_VERSION)-$(GITCOMMIT).dmg; \ - md5 -q deploy/$(MACOS_VERSION)/$(PYTHON_VERSION)/$(KLAYOUT_VERSION)/qt5.pkg.macos-$(MACOS_VERSION)-$(PYTHON_VERSION)-release-$(KLAYOUT_VERSION)-$(GITCOMMIT).dmg > deploy/$(MACOS_VERSION)/$(PYTHON_VERSION)/$(KLAYOUT_VERSION)/qt5.pkg.macos-$(MACOS_VERSION)-$(PYTHON_VERSION)-release-$(KLAYOUT_VERSION)-$(GITCOMMIT).dmg.md5; \ + mkdir -p deploy/$(MACOS_VERSION)/$(PYTHON_VERSION)/$(KLAYOUT_VERSION) + pwd + ls -lah + touch build.txt + cp build.txt deploy/$(MACOS_VERSION)/$(PYTHON_VERSION)/$(KLAYOUT_VERSION)/qt5.pkg.macos-$(MACOS_VERSION)-$(PYTHON_VERSION)-release-$(KLAYOUT_VERSION)-$(GITCOMMIT).log.txt + hdiutil convert macbuild/Resources/klayoutDMGTemplate.dmg -ov -format UDRW -o work-KLayout.dmg + hdiutil resize -size 500m work-KLayout.dmg + hdiutil attach -readwrite -noverify -quiet -mountpoint tempKLayout -noautoopen work-KLayout.dmg + cp -a HW-qt5Brew.pkg.macos-$(MACOS_VERSION)-release-RsysPhb38/ tempKLayout/ + hdiutil detach tempKLayout + hdiutil convert work-KLayout.dmg -ov -format UDZO -imagekey zlib-level=9 -o deploy/$(MACOS_VERSION)/$(PYTHON_VERSION)/$(KLAYOUT_VERSION)/qt5.pkg.macos-$(MACOS_VERSION)-$(PYTHON_VERSION)-release-$(KLAYOUT_VERSION)-$(GITCOMMIT).dmg + md5 -q deploy/$(MACOS_VERSION)/$(PYTHON_VERSION)/$(KLAYOUT_VERSION)/qt5.pkg.macos-$(MACOS_VERSION)-$(PYTHON_VERSION)-release-$(KLAYOUT_VERSION)-$(GITCOMMIT).dmg > deploy/$(MACOS_VERSION)/$(PYTHON_VERSION)/$(KLAYOUT_VERSION)/qt5.pkg.macos-$(MACOS_VERSION)-$(PYTHON_VERSION)-release-$(KLAYOUT_VERSION)-$(GITCOMMIT).dmg.md5 rm work-KLayout.dmg diff --git a/azure-pipelines.yml b/azure-pipelines.yml index 55921a370..33e89610e 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -28,6 +28,9 @@ jobs: cp38-cp38-win_amd64.whl: python.version: '3.8' python.architecture: 'x64' + cp39-cp39-win_amd64.whl: + python.version: '3.9' + python.architecture: 'x64' cp35-cp35m-win32.whl: python.version: '3.5' python.architecture: 'x86' @@ -40,6 +43,9 @@ jobs: cp38-cp38-win32.whl: python.version: '3.8' python.architecture: 'x86' + cp39-cp39-win32.whl: + python.version: '3.9' + python.architecture: 'x86' maxParallel: 6 steps: @@ -123,6 +129,11 @@ jobs: vmImage: 'vs2017-win2016' # other options: 'macOS-10.13', 'ubuntu-16.04' steps: - checkout: none #skip checking out the default repository resource + - task: DownloadBuildArtifacts@0 + displayName: 'Download Build Artifacts wheel-3.9.x64' + inputs: + artifactName: 'wheel-3.9.x64' + downloadPath: '$(System.DefaultWorkingDirectory)' - task: DownloadBuildArtifacts@0 displayName: 'Download Build Artifacts wheel-3.8.x64' inputs: @@ -143,6 +154,11 @@ jobs: inputs: artifactName: 'wheel-3.5.x64' downloadPath: '$(System.DefaultWorkingDirectory)' + - task: DownloadBuildArtifacts@0 + displayName: 'Download Build Artifacts wheel-3.9.x86' + inputs: + artifactName: 'wheel-3.9.x86' + downloadPath: '$(System.DefaultWorkingDirectory)' - task: DownloadBuildArtifacts@0 displayName: 'Download Build Artifacts wheel-3.8.x86' inputs: diff --git a/build.sh b/build.sh index 6c6150e8f..676d8aa99 100755 --- a/build.sh +++ b/build.sh @@ -532,6 +532,11 @@ if [ "$BIN" = "" ]; then BIN=$CURR_DIR/bin-$CONFIG fi +if [ "$QMAKE_CCACHE" = 1 ]; then + echo " Compilation caching is activated." +else + echo " Compilation caching is deactivated!" +fi echo " Installation target: $BIN" echo " Build directory: $BUILD" diff --git a/etc/klayout.desktop b/etc/klayout.desktop index a84e2abcf..2be01f169 100644 --- a/etc/klayout.desktop +++ b/etc/klayout.desktop @@ -3,7 +3,7 @@ Version=1.0 Name=Klayout, viewer and editor of mask layouts. GenericName=layout viewer Comment=Klayout is a viewer (and editor) of mask layout in a.o. GDSII and CIF format. -Exec=klayout +Exec=klayout %f Icon=klayout Type=Application Categories=Development;Engineering;Electronics; diff --git a/macbuild/.gitignore b/macbuild/.gitignore index 0d20b6487..4081080e3 100644 --- a/macbuild/.gitignore +++ b/macbuild/.gitignore @@ -1 +1,2 @@ *.pyc +KLayoutDMG.applescript diff --git a/macbuild/ReadMe.md b/macbuild/ReadMe.md index 09344755b..c23589f7b 100644 --- a/macbuild/ReadMe.md +++ b/macbuild/ReadMe.md @@ -1,27 +1,28 @@ -Relevant KLayout version: 0.26.7 +Relevant KLayout version: 0.26.9 # 1. Introduction -This directory **`macbuild`** contains different files required for building KLayout (http://www.klayout.de/) version 0.26.1 or later for different 64-bit Mac OSXs including: +This directory **`macbuild`** contains different files required for building KLayout (http://www.klayout.de/) version 0.26.1 or later for different 64-bit Mac OSXs, including: * El Capitan (10.11) * Sierra (10.12) * High Sierra (10.13) * Mojave (10.14) -* Catalina (10.15) +* Catalina (10.15) : the primary development environment +* Big Sur (11.0) : under development for the future support # 2. Qt5 Frameworks -By default, Qt frameworks are "Qt5" from MacPorts (https://www.macports.org/) which is usually located under: +By default, the Qt framework is "Qt5" from MacPorts (https://www.macports.org/), which is usually located under: ``` /opt/local/libexec/qt5/ ``` -Alternatively, you can use "Qt5" from Homebrew (https://brew.sh/) which is usually located under: +Alternatively, you can use "Qt5" from Homebrew (https://brew.sh/), which is usually located under: ``` /usr/local/opt/qt/ ``` OR -"Qt5" from Anaconda3 (https://www.anaconda.com/) which is usually located under: +"Qt5" from Anaconda3 (https://www.anaconda.com/), which is usually located under: ``` $HOME/opt/anaconda3/pkgs/qt-{version} ``` @@ -41,9 +42,9 @@ $ /usr/bin/ruby -v $ /usr/bin/python --version Python 2.7.16 ``` -Even in the latest OS as of today (December 2019), Python 3.x is not bundled with the OS, and this is the main reason why users want non-OS-standard script language support. +Even in the latest OS (11.0 Big Sur) as of today (November 2020), Python 3.x is not bundled with the OS, which is why users want non-OS-standard script language support. -To meet such a requirement, the build script **`build4mac.py`** provides several possible combinations of Qt5, Ruy and Python module.
+To meet such a requirement, the build script **`build4mac.py`** provides several possible combinations of Qt5, Ruy, and Python module.
Some typical use cases are described in Section 6. # 4. Prerequisites @@ -66,22 +67,24 @@ $ [python] ./build4mac.py : Qt5MacPorts: use Qt5 from MacPorts | : Qt5Brew: use Qt5 from Homebrew | : Qt5Ana3: use Qt5 from Anaconda3 | - [-r|--ruby ] : case-insensitive type=['nil', 'Sys', 'MP26', 'HB27', 'Ana3'] | sys + [-r|--ruby ] : case-insensitive type=['nil', 'Sys', 'MP27', 'HB27', 'Ana3'] | sys : nil: don't bind Ruby | : Sys: use OS-bundled Ruby [2.0 - 2.6] depending on OS | - : MP26: use Ruby 2.6 from MacPorts | + : MP27: use Ruby 2.7 from MacPorts | : HB27: use Ruby 2.7 from Homebrew | : Ana3: use Ruby 2.5 from Anaconda3 | - [-p|--python ] : case-insensitive type=['nil', 'Sys', 'MP38', 'HB38', 'Ana3'] | sys + [-p|--python ] : case-insensitive type=['nil', 'Sys', 'MP38', 'HB38', 'Ana3', | sys + : 'HBAuto'] | : nil: don't bind Python | - : Sys: use OS-bundled Python 2.7 [ElCapitan -- Catalina] | + : Sys: use OS-bundled Python 2.7 [ElCapitan -- BigSur] | : MP38: use Python 3.8 from MacPorts | : HB38: use Python 3.8 from Homebrew | - : Ana3: use Python 3.8 from Anaconda3 | + : Ana3: use Python 3.7 from Anaconda3 | + : HBAuto: use the latest Python 3.x auto-detected from Homebrew | [-n|--noqtbinding] : don't create Qt bindings for ruby scripts | disabled [-m|--make