diff --git a/macbuild/ReadMe.md b/macbuild/ReadMe.md
index c23589f7b..cb9e98f62 100644
--- a/macbuild/ReadMe.md
+++ b/macbuild/ReadMe.md
@@ -1,13 +1,22 @@
-Relevant KLayout version: 0.26.9
+Relevant KLayout version: 0.27.4
+Author: Kazzz-S
+Last modified: 2021-11-07
# 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:
-* El Capitan (10.11)
-* Sierra (10.12)
-* High Sierra (10.13)
+This directory **`macbuild`** contains different files required for building KLayout (http://www.klayout.de/) version 0.27.4 or later for different 64-bit macOS, including:
+* Catalina (10.15.7) : the primary development environment
+* Big Sur (11.x) : experimental; Apple M1 chip is not tested since the author does not own an M1 Mac
+* Monterey (12.x) : -- ditto --
+
+Building KLayout for the previous operating systems listed below should still be possible.
+However, they are not actively supported, and DMG packages for them are not provided.
* Mojave (10.14)
-* Catalina (10.15) : the primary development environment
-* Big Sur (11.0) : under development for the future support
+* High Sierra (10.13)
+* Sierra (10.12)
+* El Capitan (10.11)
+
+Throughout this document, the primary target machine is **Intel x86_64** with **macOS Catalina**.
+A **((Notes))** marker indicates special notes for specific operating systems.
# 2. Qt5 Frameworks
By default, the Qt framework is "Qt5" from MacPorts (https://www.macports.org/), which is usually located under:
@@ -17,7 +26,7 @@ By default, the Qt framework is "Qt5" from MacPorts (https://www.macports.org/),
Alternatively, you can use "Qt5" from Homebrew (https://brew.sh/), which is usually located under:
```
-/usr/local/opt/qt/
+/usr/local/opt/qt@5/
```
OR
@@ -31,10 +40,11 @@ If you have installed Anaconda3 under $HOME/opt/anaconda3/, make a symbolic link
```
/Applications/anaconda3/ ---> $HOME/opt/anaconda3/
```
+**((Notes))** "Qt5" from Homebrew is chosen as the default for **Big Sur** and **Monterey**.
# 3. Script language support: Ruby and Python
-By default, supported script languages, i.e., Ruby and Python, are those standard ones bundled with the OS.
-As for Catalina (10.15),
+Earlier, by default, supported script languages, i.e., Ruby and Python, were those standard ones bundled with the OS.
+This configuration is possible only for macOS Catalina (10.15.7).
```
$ /usr/bin/ruby -v
ruby 2.6.3p62 (2019-04-16 revision 67580) [universal.x86_64-darwin19]
@@ -42,9 +52,12 @@ $ /usr/bin/ruby -v
$ /usr/bin/python --version
Python 2.7.16
```
-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.
+Big Sur (11.x) and Monterey (12.x) still provide the Python 2.7 binaries to run various legacy applications.
+However, the latest Xcode 13.1 does not allow us to link the legacy Python 2.7 library with the newly compiled KLayout binaries.
+Therefore, Homebrew is adopted as the default environment for Big Sur and Monterey.
+
+The build script **`build4mac.py`** provides several possible combinations of Qt5, Ruy, and Python modules to accommodate such a slightly complex environment.
Some typical use cases are described in Section 6.
# 4. Prerequisites
@@ -52,51 +65,100 @@ You need to have:
* the latest Xcode and command-line tool kit compliant with each OS
* Qt5 package from MacPorts, Homebrew, or Anaconda3
* optionally Ruby and Python packages from MacPorts, Homebrew, or Anaconda3
-#### For matching versions of Ruby and Python, please also refer to `build4mac_env.py`. ####
+#### For matching versions of Ruby and Python, please also refer to `build4mac_env.py`.
# 5. Command-line options of **`build4mac.py`** are as shown below.
+**((Notes))** For **Catalina**
```
---------------------------------------------------------------------------------------------------------
-<< Usage of **`build4mac.py`** >>
- for building KLayout 0.26.1 or later on different Apple Mac OSX platforms.
+<< Usage of 'build4mac.py' >>
+ for building KLayout 0.27.4 or later on different Apple macOS / Mac OSX platforms.
-$ [python] ./build4mac.py
+$ [python] ./build4mac.py
option & argument : descriptions (refer to 'macbuild/build4mac_env.py' for details)| default value
--------------------------------------------------------------------------------------+---------------
- [-q|--qt ] : case-insensitive type=['Qt5MacPorts', 'Qt5Brew', 'Qt5Ana3'] | qt5macports
- : Qt5MacPorts: use Qt5 from MacPorts |
- : Qt5Brew: use Qt5 from Homebrew |
- : Qt5Ana3: use Qt5 from Anaconda3 |
- [-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 |
- : 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
- : 'HBAuto'] |
- : nil: don't bind Python |
- : 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.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 ] : option passed to 'make' | '-j4'
- [-d|--debug] : enable debug mode build | disabled
- [-c|--checkcom] : check command-line and exit without building | disabled
- [-y|--deploy] : deploy executables and dylibs including Qt's Frameworks | disabled
- [-Y|--DEPLOY] : deploy executables and dylibs for those who built KLayout | disabled
- : from the source code and use the tools in the same machine |
- : ! After confirmation of successful build of 'klayout.app', |
- : rerun this script with BOTH: |
- : 1) the same options used for building AND |
- : 2) <-y|--deploy> OR <-Y|--DEPLOY> |
- : optionally with [-v|--verbose <0-3>] |
- [-v|--verbose <0-3>] : verbose level of `macdeployqt' (effective with -y only) | 1
- : 0 = no output, 1 = error/warning (default), |
- : 2 = normal, 3 = debug |
- [-?|--?] : print this usage and exit | disabled
+ [-q|--qt ] : case-insensitive type=['Qt5MacPorts', 'Qt5Brew', 'Qt5Ana3'] | qt5macports
+ : Qt5MacPorts: use Qt5 from MacPorts |
+ : Qt5Brew: use Qt5 from Homebrew |
+ : Qt5Ana3: use Qt5 from Anaconda3 |
+ [-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 |
+ : 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
+ : 'HBAuto'] |
+ : nil: don't bind Python |
+ : Sys: use OS-bundled Python 2.7 [ElCapitan -- Catalina] |
+ : MP38: use Python 3.8 from MacPorts |
+ : HB38: use Python 3.8 from Homebrew |
+ : Ana3: use Python 3.8 from Anaconda3 |
+ : HBAuto: use the latest Python 3.x auto-detected from Homebrew |
+ [-n|--noqtbinding] : don't create Qt bindings for ruby scripts | disabled
+ [-u|--noqtuitools] : don't include uitools in Qt binding | disabled
+ [-m|--make ] : option passed to 'make' | '--jobs=4'
+ [-d|--debug] : enable debug mode build | disabled
+ [-c|--checkcom] : check command-line and exit without building | disabled
+ [-y|--deploy] : deploy executables and dylibs including Qt's Frameworks | disabled
+ [-Y|--DEPLOY] : deploy executables and dylibs for those who built KLayout | disabled
+ : from the source code and use the tools in the same machine |
+ : ! After confirmation of successful build of 'klayout.app', |
+ : rerun this script with BOTH: |
+ : 1) the same options used for building AND |
+ : 2) <-y|--deploy> OR <-Y|--DEPLOY> |
+ : optionally with [-v|--verbose <0-3>] |
+ [-v|--verbose <0-3>] : verbose level of `macdeployqt' (effective with -y only) | 1
+ : 0 = no output, 1 = error/warning (default), |
+ : 2 = normal, 3 = debug |
+ [-?|--?] : print this usage and exit | disabled
+-----------------------------------------------------------------------------------------+---------------
+```
+
+**((Notes))** For **Big Sur** and **Monterey**
+```
+---------------------------------------------------------------------------------------------------------
+<< Usage of 'build4mac.py' >>
+ for building KLayout 0.27.4 or later on different Apple macOS / Mac OSX platforms.
+
+$ [python] ./build4mac.py
+ option & argument : descriptions (refer to 'macbuild/build4mac_env.py' for details)| default value
+ --------------------------------------------------------------------------------------+---------------
+ [-q|--qt ] : case-insensitive type=['Qt5MacPorts', 'Qt5Brew', 'Qt5Ana3'] | qt5brew
+ : Qt5MacPorts: use Qt5 from MacPorts |
+ : Qt5Brew: use Qt5 from Homebrew |
+ : Qt5Ana3: use Qt5 from Anaconda3 |
+ [-r|--ruby ] : case-insensitive type=['nil', 'Sys', 'MP27', 'HB27', 'Ana3'] | hb27
+ : nil: don't bind Ruby |
+ : Sys: use OS-bundled Ruby [2.0 - 2.6] depending on OS |
+ : 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', | hb38
+ : 'HBAuto'] |
+ : nil: don't bind Python |
+ : Sys: use OS-bundled Python 2.7 [ElCapitan -- Catalina] |
+ : MP38: use Python 3.8 from MacPorts |
+ : HB38: use Python 3.8 from Homebrew |
+ : Ana3: use Python 3.8 from Anaconda3 |
+ : HBAuto: use the latest Python 3.x auto-detected from Homebrew |
+ [-n|--noqtbinding] : don't create Qt bindings for ruby scripts | disabled
+ [-u|--noqtuitools] : don't include uitools in Qt binding | disabled
+ [-m|--make ] : option passed to 'make' | '--jobs=4'
+ [-d|--debug] : enable debug mode build | disabled
+ [-c|--checkcom] : check command-line and exit without building | disabled
+ [-y|--deploy] : deploy executables and dylibs including Qt's Frameworks | disabled
+ [-Y|--DEPLOY] : deploy executables and dylibs for those who built KLayout | disabled
+ : from the source code and use the tools in the same machine |
+ : ! After confirmation of successful build of 'klayout.app', |
+ : rerun this script with BOTH: |
+ : 1) the same options used for building AND |
+ : 2) <-y|--deploy> OR <-Y|--DEPLOY> |
+ : optionally with [-v|--verbose <0-3>] |
+ [-v|--verbose <0-3>] : verbose level of `macdeployqt' (effective with -y only) | 1
+ : 0 = no output, 1 = error/warning (default), |
+ : 2 = normal, 3 = debug |
+ [-?|--?] : print this usage and exit | disabled
-----------------------------------------------------------------------------------------+---------------
```
@@ -105,7 +167,13 @@ In this section, the actual file names and directory names are those obtained on
On different OS, those names differ accordingly.
### 6A. Standard build using the OS-bundled Ruby and Python
-1. Invoke **`build4mac.py`** with the default options:
+0. Install MacPorts, then install Qt5 by
+```
+$ sudo port install coreutils
+$ sudo port install findutils
+$ sudo port install qt5
+```
+1. Invoke **`build4mac.py`** with the default options: **((Notes))** only for Catalina
```
$ cd /where/'build.sh'/exists
$ ./build4mac.py
@@ -127,9 +195,19 @@ If you use the "-Y" option instead of the "-y" in Step-3, the Qt5 framework is N
Then the directory name will be **`LW-qt5MP.pkg.macos-Catalina-release-RsysPsys`**, where
* "LW-" means that this is a lightweight package.
-#### If you build KLayout from the source code AND run it on the same machine, the "-Y" option is highly recommended. ####
+#### If you build KLayout from the source code AND run it on the same machine, the "-Y" option is highly recommended.
### 6B. Fully MacPorts-flavored build with MacPorts Ruby 2.7 and MacPorts Python 3.8
+0. Install MacPorts, then install Qt5, Ruby 2.7, and Python 3.8 by
+```
+$ sudo port install coreutils
+$ sudo port install findutils
+$ sudo port install qt5
+$ sudo port install ruby27
+$ sudo port install python38
+$ sudo port install py38-pip
+```
+1. Invoke **`build4mac.py`** with the following options:
```
$ cd /where/'build.sh'/exists
$ ./build4mac.py -q qt5macports -r mp27 -p mp38
@@ -148,6 +226,13 @@ $ ./build4mac.py -q qt5macports -r mp27 -p mp38 -Y
4. Copy/move the generated application bundle **`klayout.app`** to your **`/Applications`** directory for installation.
### 6C. Fully Homebrew-flavored build with Homebrew Ruby 2.7 and Homebrew Python 3.8
+0. Install Homebrew, then install Qt5, Ruby 2.7, and Python 3.8 by
+```
+$ brew install qt@5
+$ brew install ruby@2.7
+$ brew install python@3.8
+```
+1. Invoke **`build4mac.py`** with the following options: **((Notes))** These options are the default for Big Sur and Monterey.
```
$ cd /where/'build.sh'/exists
$ ./build4mac.py -q qt5brew -r hb27 -p hb38
@@ -166,6 +251,12 @@ $ ./build4mac.py -q qt5brew -r hb27 -p hb38 -Y
4. Copy/move the generated application bundle **`klayout.app`** to your **`/Applications`** directory for installation.
### 6D. Partially Homebrew-flavored build with System Ruby and Homebrew Python 3.8
+0. Install Homebrew, then install Qt5 and Python 3.8 by
+```
+$ brew install qt@5
+$ brew install python@3.8
+```
+1. Invoke **`build4mac.py`** with the following options:
```
$ cd /where/'build.sh'/exists
$ ./build4mac.py -q qt5brew -r sys -p hb38
@@ -178,15 +269,20 @@ $ ./build4mac.py -q qt5brew -r sys -p hb38 -y
```
The application bundle **`klayout.app`** is located under:
**`HW-qt5Brew.pkg.macos-Catalina-release-RsysPhb38`** directory, where
-* "HW-" means that this is a heavyweight package because both Qt5 and Python are deployed.
+* "HW-" means that this is a heavyweight package because both Qt5 and Python Frameworks are deployed.
* "qt5Brew" means that Qt5 from Homebrew is used.
* "RsysPhb38" means that Ruby is OS-bundled; Python is 3.8 from Homebrew.
4. Copy/move the generated application bundle **`klayout.app`** to your **`/Applications`** directory for installation.
-### Important ###
+### Important
So far, the deployment of Homebrew Ruby is not supported.
Therefore, if you intend to use the "-y" option for deployment, you need to use the "-r sys" option for building.
### 6E. Fully Anaconda3-flavored build with Anaconda3 Ruby 2.5 and Anaconda3 Python 3.8
+0. Install Anaconda3, then install Ruby 2.5 by
+```
+$ conda install ruby
+```
+1. Invoke **`build4mac.py`** with the following options:
```
$ cd /where/'build.sh'/exists
$ ./build4mac.py -q qt5ana3 -r ana3 -p ana3
@@ -216,7 +312,7 @@ If you choose such a combination, the resultant package directory name will begi
# 7. Making a DMG installer
You can make a DMG installer using another Python script **`makeDMG4mac.py`**.
-This script requires a directory generated by **`build4mac.py`** with [-y|-Y] option (refer to 6A through 6E).
+This script requires a directory generated by **`build4mac.py`** with the [-y|-Y] option (refer to 6A through 6E).
1. Make a symbolic link (if it does not exist) from the parent directory (where **`build.sh`** exists) to **`makeDMG4mac.py`**, that is,
```
@@ -228,8 +324,8 @@ $ cd /where/'build.sh'/exists
$ ./makeDMG4mac.py -p ST-qt5MP.pkg.macos-Catalina-release-RsysPsys -m
```
This command will generate the two files below:
-* **`ST-klayout-0.26.9-macOS-Catalina-1-qt5MP-RsysPsys.dmg`** ---(1) the main DMG file
-* **`ST-klayout-0.26.9-macOS-Catalina-1-qt5MP-RsysPsys.dmg.md5`** ---(2) MD5-value text file
+* **`ST-klayout-0.27.4-macOS-Catalina-1-qt5MP-RsysPsys.dmg`** ---(1) the main DMG file
+* **`ST-klayout-0.27.4-macOS-Catalina-1-qt5MP-RsysPsys.dmg.md5`** ---(2) MD5-value text file
# Known issues
Because we assume some specific versions of non-OS-standard Ruby and Python, updating MacPorts, Homebrew, or Anaconda3 may cause build- and link errors.
@@ -237,7 +333,7 @@ In such cases, you need to update the dictionary contents of **`build4mac_env.py
# Final comments
No need to say, KLayout is a great tool!
-With the object-oriented script language (both Ruby and Python) support, our error-prone jobs can be greatly simplified and speed-up.
+With the object-oriented script language (both Ruby and Python) support, our error-prone layout jobs can be greatly simplified and speed-up.
Building KLayout from its source code is not difficult. Try it with your favorite environment!
[End of File]
diff --git a/macbuild/Resources/KLayoutDMG-Back.logoist b/macbuild/Resources/KLayoutDMG-Back.logoist
index 4f87f0910..d33073885 100644
Binary files a/macbuild/Resources/KLayoutDMG-Back.logoist and b/macbuild/Resources/KLayoutDMG-Back.logoist differ
diff --git a/macbuild/Resources/KLayoutDMG-Back.png b/macbuild/Resources/KLayoutDMG-Back.png
index 4a2465f84..cab79141d 100644
Binary files a/macbuild/Resources/KLayoutDMG-Back.png and b/macbuild/Resources/KLayoutDMG-Back.png differ
diff --git a/macbuild/Resources/script-bundle-A.zip b/macbuild/Resources/script-bundle-A.zip
index 58e91d629..2e1a41015 100644
Binary files a/macbuild/Resources/script-bundle-A.zip and b/macbuild/Resources/script-bundle-A.zip differ
diff --git a/macbuild/Resources/script-bundle-B.zip b/macbuild/Resources/script-bundle-B.zip
index 9ea190e46..7efc6d950 100644
Binary files a/macbuild/Resources/script-bundle-B.zip and b/macbuild/Resources/script-bundle-B.zip differ
diff --git a/macbuild/Resources/script-bundle-P.zip b/macbuild/Resources/script-bundle-P.zip
index 81f1bfef9..92e9e3327 100644
Binary files a/macbuild/Resources/script-bundle-P.zip and b/macbuild/Resources/script-bundle-P.zip differ
diff --git a/macbuild/build4mac.py b/macbuild/build4mac.py
index 7ee07758c..075a7ef44 100755
--- a/macbuild/build4mac.py
+++ b/macbuild/build4mac.py
@@ -25,57 +25,77 @@ sys.path.append( mydir + "/macbuild" )
from build4mac_env import *
from build4mac_util import *
+#-------------------------------------------------------------------------------
+## To generate the OS-wise usage strings and the default module set
+#
+# @param[in] platform platform name
+#
+# @return (usage, moduleset)-tuple
+#-------------------------------------------------------------------------------
+def GenerateUsage(platform):
+ if platform.upper() in [ "MONTEREY", "BIGSUR" ]: # with Xcode [13.1 .. ]
+ myQt5 = "qt5brew"
+ myRuby = "hb27"
+ myPython = "hb38"
+ moduleset = ('qt5Brew', 'HB27', 'HB38')
+ else: # with Xcode [ .. 12.4]
+ myQt5 = "qt5macports"
+ myRuby = "sys"
+ myPython = "sys"
+ moduleset = ('qt5MP', 'Sys', 'Sys')
+
+ usage = "\n"
+ usage += "---------------------------------------------------------------------------------------------------------\n"
+ usage += "<< Usage of 'build4mac.py' >>\n"
+ usage += " for building KLayout 0.27.4 or later on different Apple macOS / Mac OSX platforms.\n"
+ usage += "\n"
+ usage += "$ [python] ./build4mac.py\n"
+ usage += " option & argument : descriptions (refer to 'macbuild/build4mac_env.py' for details)| default value\n"
+ usage += " --------------------------------------------------------------------------------------+---------------\n"
+ usage += " [-q|--qt ] : case-insensitive type=['Qt5MacPorts', 'Qt5Brew', 'Qt5Ana3'] | %s \n" % myQt5
+ usage += " : Qt5MacPorts: use Qt5 from MacPorts | \n"
+ usage += " : Qt5Brew: use Qt5 from Homebrew | \n"
+ usage += " : Qt5Ana3: use Qt5 from Anaconda3 | \n"
+ usage += " [-r|--ruby ] : case-insensitive type=['nil', 'Sys', 'MP27', 'HB27', 'Ana3'] | %s \n" % myRuby
+ usage += " : nil: don't bind Ruby | \n"
+ usage += " : Sys: use OS-bundled Ruby [2.0 - 2.6] depending on OS | \n"
+ usage += " : MP27: use Ruby 2.7 from MacPorts | \n"
+ usage += " : HB27: use Ruby 2.7 from Homebrew | \n"
+ usage += " : Ana3: use Ruby 2.5 from Anaconda3 | \n"
+ usage += " [-p|--python ] : case-insensitive type=['nil', 'Sys', 'MP38', 'HB38', 'Ana3', | %s \n" % myPython
+ usage += " : 'HBAuto'] | \n"
+ usage += " : nil: don't bind Python | \n"
+ usage += " : Sys: use OS-bundled Python 2.7 [ElCapitan -- Catalina] | \n"
+ usage += " : MP38: use Python 3.8 from MacPorts | \n"
+ usage += " : HB38: use Python 3.8 from Homebrew | \n"
+ usage += " : Ana3: use Python 3.8 from Anaconda3 | \n"
+ usage += " : HBAuto: use the latest Python 3.x auto-detected from Homebrew | \n"
+ usage += " [-n|--noqtbinding] : don't create Qt bindings for ruby scripts | disabled\n"
+ usage += " [-u|--noqtuitools] : don't include uitools in Qt binding | disabled\n"
+ usage += " [-m|--make ] : option passed to 'make' | '--jobs=4'\n"
+ usage += " [-d|--debug] : enable debug mode build | disabled\n"
+ usage += " [-c|--checkcom] : check command-line and exit without building | disabled\n"
+ usage += " [-y|--deploy] : deploy executables and dylibs including Qt's Frameworks | disabled\n"
+ usage += " [-Y|--DEPLOY] : deploy executables and dylibs for those who built KLayout | disabled\n"
+ usage += " : from the source code and use the tools in the same machine | \n"
+ usage += " : ! After confirmation of successful build of 'klayout.app', | \n"
+ usage += " : rerun this script with BOTH: | \n"
+ usage += " : 1) the same options used for building AND | \n"
+ usage += " : 2) <-y|--deploy> OR <-Y|--DEPLOY> | \n"
+ usage += " : optionally with [-v|--verbose <0-3>] | \n"
+ usage += " [-v|--verbose <0-3>] : verbose level of `macdeployqt' (effective with -y only) | 1\n"
+ usage += " : 0 = no output, 1 = error/warning (default), | \n"
+ usage += " : 2 = normal, 3 = debug | \n"
+ usage += " [-?|--?] : print this usage and exit | disabled\n"
+ usage += "-----------------------------------------------------------------------------------------+---------------\n"
+ return (usage, moduleset)
+
#-------------------------------------------------------------------------------
## To get the default configurations
#
# @return a dictionary containing the default configuration for the macOS build
#-------------------------------------------------------------------------------
def Get_Default_Config():
- Usage = "\n"
- Usage += "---------------------------------------------------------------------------------------------------------\n"
- Usage += "<< Usage of 'build4mac.py' >>\n"
- Usage += " for building KLayout 0.26.12 or later on different Apple Mac OSX / macOS platforms.\n"
- Usage += "\n"
- Usage += "$ [python] ./build4mac.py \n"
- Usage += " option & argument : descriptions (refer to 'macbuild/build4mac_env.py' for details)| default value\n"
- Usage += " --------------------------------------------------------------------------------------+---------------\n"
- Usage += " [-q|--qt ] : case-insensitive type=['Qt5MacPorts', 'Qt5Brew', 'Qt5Ana3'] | qt5macports \n"
- Usage += " : Qt5MacPorts: use Qt5 from MacPorts | \n"
- Usage += " : Qt5Brew: use Qt5 from Homebrew | \n"
- Usage += " : Qt5Ana3: use Qt5 from Anaconda3 | \n"
- Usage += " [-r|--ruby ] : case-insensitive type=['nil', 'Sys', 'MP27', 'HB27', 'Ana3'] | sys \n"
- Usage += " : nil: don't bind Ruby | \n"
- Usage += " : Sys: use OS-bundled Ruby [2.0 - 2.7] depending on OS | \n"
- Usage += " : MP27: use Ruby 2.7 from MacPorts | \n"
- Usage += " : HB27: use Ruby 2.7 from Homebrew | \n"
- Usage += " : Ana3: use Ruby 2.5 from Anaconda3 | \n"
- Usage += " [-p|--python ] : case-insensitive type=['nil', 'Sys', 'MP38', 'HB38', 'Ana3', | sys \n"
- Usage += " : 'HBAuto'] | \n"
- Usage += " : nil: don't bind Python | \n"
- Usage += " : Sys: use OS-bundled Python 2.7 [ElCapitan -- BigSur] | \n"
- Usage += " : MP38: use Python 3.8 from MacPorts | \n"
- Usage += " : HB38: use Python 3.8 from Homebrew | \n"
- Usage += " : Ana3: use Python 3.8 from Anaconda3 | \n"
- Usage += " : HBAuto: use the latest Python 3.x auto-detected from Homebrew | \n"
- Usage += " [-n|--noqtbinding] : don't create Qt bindings for ruby scripts | disabled \n"
- Usage += " [-u|--noqtuitools] : don't include uitools in Qt binding | disabled \n"
- Usage += " [-m|--make ] : option passed to 'make' | '--jobs=4' \n"
- Usage += " [-d|--debug] : enable debug mode build | disabled \n"
- Usage += " [-c|--checkcom] : check command-line and exit without building | disabled \n"
- Usage += " [-y|--deploy] : deploy executables and dylibs including Qt's Frameworks | disabled \n"
- Usage += " [-Y|--DEPLOY] : deploy executables and dylibs for those who built KLayout | disabled \n"
- Usage += " : from the source code and use the tools in the same machine | \n"
- Usage += " : ! After confirmation of successful build of 'klayout.app', | \n"
- Usage += " : rerun this script with BOTH: | \n"
- Usage += " : 1) the same options used for building AND | \n"
- Usage += " : 2) <-y|--deploy> OR <-Y|--DEPLOY> | \n"
- Usage += " : optionally with [-v|--verbose <0-3>] | \n"
- Usage += " [-v|--verbose <0-3>] : verbose level of `macdeployqt' (effective with -y only) | 1 \n"
- Usage += " : 0 = no output, 1 = error/warning (default), | \n"
- Usage += " : 2 = normal, 3 = debug | \n"
- Usage += " [-?|--?] : print this usage and exit | disabled \n"
- Usage += "-----------------------------------------------------------------------------------------+---------------\n"
-
ProjectDir = os.getcwd()
BuildBash = "./build.sh"
(System, Node, Release, MacVersion, Machine, Processor) = platform.uname()
@@ -83,11 +103,13 @@ def Get_Default_Config():
if not System == "Darwin":
print("")
print( "!!! Sorry. Your system <%s> looks like non-Mac" % System, file=sys.stderr )
- print(Usage)
+ print( GenerateUsage("")[0] )
sys.exit(1)
release = int( Release.split(".")[0] ) # take the first of ['19', '0', '0']
- if release == 20:
+ if release == 21:
+ Platform = "Monterey"
+ elif release == 20:
Platform = "BigSur"
elif release == 19:
Platform = "Catalina"
@@ -103,23 +125,29 @@ def Get_Default_Config():
Platform = ""
print("")
print( "!!! Sorry. Unsupported major OS release <%d>" % release, file=sys.stderr )
- print(Usage)
+ print( GenerateUsage("")[0] )
sys.exit(1)
if not Machine == "x86_64":
- if Machine == "arm64" and Platform == "BigSur": # with an Apple Silicon Chip
+ if Machine == "arm64" and (Platform == "Monterey" or Platform == "BigSur"): # with an Apple Silicon Chip
print("")
print( "### Your Mac equips an Apple Silicon Chip ###" )
print("")
else:
print("")
print( "!!! Sorry. Only x86_64/arm64 architecture machine is supported but found <%s>" % Machine, file=sys.stderr )
- print(Usage)
+ print( GenerateUsage("")[0] )
sys.exit(1)
+ # Set the OS-wise usage and module set
+ Usage, ModuleSet = GenerateUsage(Platform)
+
# Set the default modules
ModuleQt = "Qt5MacPorts"
- if Platform == "BigSur":
+ if Platform == "Monterey":
+ ModuleRuby = "RubyMonterey"
+ ModulePython = "PythonMonterey"
+ elif Platform == "BigSur":
ModuleRuby = "RubyBigSur"
ModulePython = "PythonBigSur"
elif Platform == "Catalina":
@@ -152,7 +180,6 @@ def Get_Default_Config():
PackagePrefix = ""
DeployVerbose = 1
Version = GetKLayoutVersionFrom( "./version.sh" )
- ModuleSet = ( 'qt5MP', 'Sys', 'Sys' )
config = dict()
config['ProjectDir'] = ProjectDir # project directory where "build.sh" exists
@@ -341,7 +368,9 @@ def Parse_CLI_Args(config):
ModuleRuby = 'nil'
elif choiceRuby == "Sys":
choiceRuby = "Sys"
- if Platform == "BigSur":
+ if Platform == "Monterey":
+ ModuleRuby = 'RubyMonterey'
+ elif Platform == "BigSur":
ModuleRuby = 'RubyBigSur'
elif Platform == "Catalina":
ModuleRuby = 'RubyCatalina'
@@ -387,7 +416,9 @@ def Parse_CLI_Args(config):
if choicePython == "nil":
ModulePython = 'nil'
elif choicePython == "Sys":
- if Platform == "BigSur":
+ if Platform == "Monterey":
+ ModulePython = 'PythonMonterey'
+ elif Platform == "BigSur":
ModulePython = 'PythonBigSur'
elif Platform == "Catalina":
ModulePython = 'PythonCatalina'
@@ -1098,7 +1129,7 @@ def Deploy_Binaries_For_Bundle(config, parameters):
cmd06 = "rm -rf %s" % binTarget
cmd07 = "mkdir %s" % sitepackagesTarget
- cmd08 = "cp -RL %s/{pip*,pkg_resources,setuptools*,wheel*} %s" % (sitepackagesSource, sitepackagesTarget)
+ cmd08 = "cp -RL %s/{*distutils*,pip*,pkg_resources,setuptools*,wheel*} %s" % (sitepackagesSource, sitepackagesTarget)
shell_commands = list()
shell_commands.append(cmd01)
diff --git a/macbuild/build4mac_env.py b/macbuild/build4mac_env.py
index 73a840fdc..3a9331b0c 100755
--- a/macbuild/build4mac_env.py
+++ b/macbuild/build4mac_env.py
@@ -64,10 +64,11 @@ Qt5Ana3 = { 'qmake' : '/Applications/anaconda3/bin/qmake',
#-----------------------------------------------------
# [2] Ruby
#-----------------------------------------------------
-RubyNil = [ 'nil' ]
-RubySys = [ 'RubyElCapitan', 'RubySierra', 'RubyHighSierra', 'RubyMojave', 'RubyCatalina', 'RubyBigSur' ]
-RubyExt = [ 'Ruby27MacPorts', 'Ruby27Brew', 'RubyAnaconda3' ]
-Rubies = RubyNil + RubySys + RubyExt
+RubyNil = [ 'nil' ]
+RubySys = [ 'RubyElCapitan', 'RubySierra', 'RubyHighSierra', 'RubyMojave' ]
+RubySys += [ 'RubyCatalina', 'RubyBigSur', 'RubyMonterey' ]
+RubyExt = [ 'Ruby27MacPorts', 'Ruby27Brew', 'RubyAnaconda3' ]
+Rubies = RubyNil + RubySys + RubyExt
#-----------------------------------------------------
# Whereabout of different components of Ruby
@@ -135,7 +136,7 @@ RubyCatalina = { 'exe': '/System/Library/Frameworks/Ruby.framework/Versions/
'lib': '%s/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/libruby.tbd' % CatalinaSDK
}
-# Bundled with Big Sur (11.0)
+# Bundled with Big Sur (11.x)
# Refer to the "Catalina" section above
# [Key Type Name] = 'Sys'
BigSurSDK = "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk"
@@ -145,6 +146,16 @@ RubyBigSur = { 'exe': '/System/Library/Frameworks/Ruby.framework/Versions/
'lib': '%s/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/libruby.tbd' % BigSurSDK
}
+# Bundled with Monterey (12.x)
+# Refer to the "Catalina" section above
+# [Key Type Name] = 'Sys'
+MontereySDK = "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk"
+RubyMonterey = { 'exe': '/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/bin/ruby',
+ 'inc': '%s/System/Library/Frameworks/Ruby.framework/Headers' % MontereySDK,
+ 'inc2': '%s/System/Library/Frameworks/Ruby.framework/Headers/ruby' % MontereySDK,
+ 'lib': '%s/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/libruby.tbd' % MontereySDK
+ }
+
# Ruby 2.7 from MacPorts (https://www.macports.org/) *+*+*+ EXPERIMENTAL *+*+*+
# install with 'sudo port install ruby27'
# [Key Type Name] = 'MP27'
@@ -180,6 +191,7 @@ RubyDictionary = { 'nil' : None,
'RubyMojave' : RubyMojave,
'RubyCatalina' : RubyCatalina,
'RubyBigSur' : RubyBigSur,
+ 'RubyMonterey' : RubyMonterey,
'Ruby27MacPorts': Ruby27MacPorts,
'Ruby27Brew' : Ruby27Brew,
'RubyAnaconda3' : RubyAnaconda3
@@ -188,10 +200,11 @@ RubyDictionary = { 'nil' : None,
#-----------------------------------------------------
# [3] Python
#-----------------------------------------------------
-PythonNil = [ 'nil' ]
-PythonSys = [ 'PythonElCapitan', 'PythonSierra', 'PythonHighSierra', 'PythonMojave', 'PythonCatalina', 'PythonBigSur' ]
-PythonExt = [ 'Python38MacPorts', 'Python38Brew', 'PythonAnaconda3', 'PythonAutoBrew' ]
-Pythons = PythonNil + PythonSys + PythonExt
+PythonNil = [ 'nil' ]
+PythonSys = [ 'PythonElCapitan', 'PythonSierra', 'PythonHighSierra', 'PythonMojave' ]
+PythonSys += [ 'PythonCatalina', 'PythonBigSur', 'PythonMonterey' ]
+PythonExt = [ 'Python38MacPorts', 'Python38Brew', 'PythonAnaconda3', 'PythonAutoBrew' ]
+Pythons = PythonNil + PythonSys + PythonExt
#-----------------------------------------------------
# Whereabout of different components of Python
@@ -240,13 +253,26 @@ PythonCatalina = { 'exe': '/System/Library/Frameworks/Python.framework/Versions
'lib': '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/libpython2.7.dylib'
}
-# Bundled with Big Sur (11.0)
+# Bundled with Big Sur (11.x)
+# ** IMPORTANT NOTES **
+# Xcode [13.1 .. ] does not allow to link the legacy Python 2.7 library not to produce unsupported applications.
+# This code block remains here to keep the parallelism.
# [Key Type Name] = 'Sys'
PythonBigSur = { 'exe': '/System/Library/Frameworks/Python.framework/Versions/2.7/bin/python',
'inc': '/System/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7',
'lib': '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/libpython2.7.dylib'
}
+# Bundled with Monterey (12.x)
+# ** IMPORTANT NOTES **
+# Xcode [13.1 .. ] does not allow to link the legacy Python 2.7 library not to produce unsupported applications.
+# This code block remains here to keep the parallelism.
+# [Key Type Name] = 'Sys'
+PythonMonterey = { 'exe': '/System/Library/Frameworks/Python.framework/Versions/2.7/bin/python',
+ 'inc': '/System/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7',
+ 'lib': '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/libpython2.7.dylib'
+ }
+
# Python 3.8 from MacPorts (https://www.macports.org/) *+*+*+ EXPERIMENTAL *+*+*+
# install with 'sudo port install python38'
# [Key Type Name] = 'MP38'
@@ -303,6 +329,7 @@ PythonDictionary = { 'nil' : None,
'PythonMojave' : PythonMojave,
'PythonCatalina' : PythonCatalina,
'PythonBigSur' : PythonBigSur,
+ 'PythonMonterey' : PythonMonterey,
'Python38MacPorts': Python38MacPorts,
'Python38Brew' : Python38Brew,
'PythonAnaconda3' : PythonAnaconda3
diff --git a/macbuild/makeDMG4mac.py b/macbuild/makeDMG4mac.py
index 4fb5b2076..a9b3f5c0d 100755
--- a/macbuild/makeDMG4mac.py
+++ b/macbuild/makeDMG4mac.py
@@ -75,24 +75,24 @@ def SetGlobals():
global Bit # machine bit-size
Usage = "\n"
- Usage += "--------------------------------------------------------------------------------------------------------\n"
+ Usage += "---------------------------------------------------------------------------------------------------------\n"
Usage += "<< Usage of 'makeDMG4mac.py' >>\n"
- Usage += " for making a DMG file of KLayout 0.26.12 or later on different Apple Mac OSX / macOS platforms.\n"
+ Usage += " for making a DMG file of KLayout 0.27.4 or later on different Apple macOS / Mac OSX platforms.\n"
Usage += "\n"
- Usage += "$ [python] ./makeDMG4mac.py \n"
+ Usage += "$ [python] ./makeDMG4mac.py\n"
Usage += " option & argument : descriptions | default value\n"
- Usage += " ----------------------------------------------------------------------------------+---------------\n"
- Usage += " <-p|--pkg > : package directory created by `build4mac.py` with [-y|-Y] | `` \n"
+ Usage += " ----------------------------------------------------------------------------------+-----------------\n"
+ Usage += " <-p|--pkg > : package directory created by `build4mac.py` with [-y|-Y] | ``\n"
Usage += " : like 'ST-qt5MP.pkg.macos-Catalina-release-RsysPsys' | \n"
- Usage += " <-c|--clean> : clean the work directory | disabled \n"
- Usage += " <-m|--make> : make a compressed DMG file | disabled \n"
+ Usage += " <-c|--clean> : clean the work directory | disabled\n"
+ Usage += " <-m|--make> : make a compressed DMG file | disabled\n"
Usage += " : <-c|--clean> and <-m|--make> are mutually exclusive | \n"
- Usage += " [-b|--bundle ] : forcibly use this bundle name in the DMG | '' \n"
- Usage += " [-s|--serial ] : DMG serial number | 1 \n"
- Usage += " [-u|--unsafe] : Ignores a few checks (use with caution) | disabled \n"
- Usage += " [-t|--targetdmg] : Specify output .dmg filename | chosen by script \n"
- Usage += " [-?|--?] : print this usage and exit | disabled \n"
- Usage += "-------------------------------------------------------------------------------------+------------------\n"
+ Usage += " [-b|--bundle ] : forcibly use this bundle name in the DMG | ''\n"
+ Usage += " [-s|--serial ] : DMG serial number | 1\n"
+ Usage += " [-u|--unsafe] : Ignores a few checks (use with caution) | disabled\n"
+ Usage += " [-t|--targetdmg] : Specify output .dmg filename | chosen by script\n"
+ Usage += " [-?|--?] : print this usage and exit | disabled\n"
+ Usage += "-------------------------------------------------------------------------------------+-------------------\n"
ProjectDir = os.getcwd()
(System, Node, Release, Version, Machine, Processor) = platform.uname()
@@ -105,7 +105,11 @@ def SetGlobals():
release = int( Release.split(".")[0] ) # take the first of ['19', '0', '0']
LatestOS = ""
- if release == 20:
+ if release == 21:
+ GenOSName = "macOS"
+ Platform = "Monterey"
+ LatestOS = Platform
+ elif release == 20:
GenOSName = "macOS"
Platform = "BigSur"
LatestOS = Platform
@@ -133,7 +137,7 @@ def SetGlobals():
sys.exit(1)
if not Machine == "x86_64":
- if Machine == "arm64" and Platform == "BigSur": # with an Apple Silicon Chip
+ if Machine == "arm64" and (Platform == "Monterey" or Platform == "BigSur"): # with an Apple Silicon Chip
print("")
print( "### Your Mac equips an Apple Silicon Chip ###" )
print("")
diff --git a/macbuild/nightlyBuild.py b/macbuild/nightlyBuild.py
index 07d0a9518..ceaf277cb 100755
--- a/macbuild/nightlyBuild.py
+++ b/macbuild/nightlyBuild.py
@@ -17,14 +17,16 @@ import subprocess
#
# @return matching platform name on success; "" on failure
#------------------------------------------------------------------------------
-def Test_My_Platform( platforms=['Catalina', 'BigSur'] ):
+def Test_My_Platform( platforms=['Catalina', 'BigSur', 'Monterey' ] ):
(System, Node, Release, MacVersion, Machine, Processor) = platform.uname()
if not System == "Darwin":
return ""
release = int( Release.split(".")[0] ) # take the first of ['19', '0', '0']
- if release == 20:
+ if release == 21:
+ Platform = "Monterey"
+ elif release == 20:
Platform = "BigSur"
elif release == 19:
Platform = "Catalina"
@@ -173,15 +175,23 @@ def Parse_CommandLine_Arguments():
global SrlDMG # DMG serial number
global Dropbox # Dropbox directory
+ platform = Test_My_Platform()
+ if platform in [ "Monterey", "BigSur" ]:
+ targetopt = "1,2,3,4"
+ elif platform in ["Catalina"]:
+ targetopt = "0,1,2,3,4"
+ else:
+ targetopt = ""
+
Usage = "\n"
- Usage += "--------------------------------------------------------------------------------------------\n"
+ Usage += "--------------------------------------------------------------------------------------------------\n"
Usage += " nightlyBuild.py [EXPERIMENTAL] \n"
- Usage += " << To execute the jobs for making KLayout's DMGs for macOS Catalina or Big Sur >> \n"
+ Usage += " << To execute the jobs for making KLayout's DMGs for macOS Catalina, Big Sur, or Monterey >>\n"
Usage += "\n"
- Usage += "$ [python] nightlyBuild.py \n"
+ Usage += "$ [python] nightlyBuild.py\n"
Usage += " option & argument : comment on option if any | default value\n"
Usage += " ------------------------------------------------------------------------+--------------\n"
- Usage += " [--target ] : 0='std', 1='ports', 2='brew', 3='brewHW', 4='ana3', | '0,1,2,3,4'\n"
+ Usage += " [--target ] : 0='std', 1='ports', 2='brew', 3='brewHW', 4='ana3', | '%s'\n" % targetopt
Usage += " 5='brewA', 6='brewAHW' | \n"
Usage += " [--build] : build and deploy | disabled\n"
Usage += " [--test] : run the QA Test | disabled\n"
@@ -199,9 +209,9 @@ def Parse_CommandLine_Arguments():
Usage += " (3) $ ./nightlyBuild.py --test | \n"
Usage += " (4) $ ./nightlyBuild.py --check (confirm the QA Test results) | \n"
Usage += " (5) $ ./nightlyBuild.py --makedmg 1 | \n"
- Usage += " (6) $ ./nightlyBuild.py --upload '0.26.12' | \n"
+ Usage += " (6) $ ./nightlyBuild.py --upload '0.27.4' | \n"
Usage += " (7) $ ./nightlyBuild.py --cleandmg 1 | \n"
- Usage += "---------------------------------------------------------------------------+----------------\n"
+ Usage += "---------------------------------------------------------------------------+----------------------\n"
p = optparse.OptionParser( usage=Usage )
p.add_option( '--target',
@@ -244,7 +254,7 @@ def Parse_CommandLine_Arguments():
default=False,
help='check usage' )
- p.set_defaults( targets = "0,1,2,3,4",
+ p.set_defaults( targets = "%s" % targetopt,
build = False,
qa_test = False,
qa_check = False,
@@ -258,9 +268,9 @@ def Parse_CommandLine_Arguments():
print(Usage)
quit()
- myPlatform = Test_My_Platform( ['Catalina', 'BigSur'] )
+ myPlatform = Test_My_Platform( ['Catalina', 'BigSur', 'Monterey' ] )
if myPlatform == "":
- print( "! Current platform is not ['Catalina', 'BigSur']" )
+ print( "! Current platform is not ['Catalina', 'BigSur', 'Monterey' ]" )
print(Usage)
quit()
@@ -295,7 +305,7 @@ def Parse_CommandLine_Arguments():
Dropbox = opt.upload
if not (Build or QATest or QACheck or MakeDMG or CleanDMG or Upload):
- print( "! No option selected" )
+ print( "! No action selected" )
print(Usage)
quit()
diff --git a/src/plugins/streamers/lefdef/db_plugin/dbLEFDEFPlugin.cc b/src/plugins/streamers/lefdef/db_plugin/dbLEFDEFPlugin.cc
index 35489ff1e..24f8383ea 100644
--- a/src/plugins/streamers/lefdef/db_plugin/dbLEFDEFPlugin.cc
+++ b/src/plugins/streamers/lefdef/db_plugin/dbLEFDEFPlugin.cc
@@ -331,59 +331,75 @@ class LEFDEFFormatDeclaration
tl::make_member (&LEFDEFReaderOptions::inst_property_name, &LEFDEFReaderOptions::set_inst_property_name, "inst-property-name") +
tl::make_member (&LEFDEFReaderOptions::produce_pin_names, &LEFDEFReaderOptions::set_produce_pin_names, "produce-pin-names") +
tl::make_member (&LEFDEFReaderOptions::pin_property_name, &LEFDEFReaderOptions::set_pin_property_name, "pin-property-name") +
+
tl::make_member (&LEFDEFReaderOptions::produce_cell_outlines, &LEFDEFReaderOptions::set_produce_cell_outlines, "produce-cell-outlines") +
tl::make_member (&LEFDEFReaderOptions::cell_outline_layer, &LEFDEFReaderOptions::set_cell_outline_layer, "cell-outline-layer") +
+
tl::make_member (&LEFDEFReaderOptions::produce_placement_blockages, &LEFDEFReaderOptions::set_produce_placement_blockages, "produce-placement-blockages") +
tl::make_member (&LEFDEFReaderOptions::placement_blockage_layer, &LEFDEFReaderOptions::set_placement_blockage_layer, "placement-blockage-layer") +
+
tl::make_member (&LEFDEFReaderOptions::produce_regions, &LEFDEFReaderOptions::set_produce_regions, "produce-regions") +
tl::make_member (&LEFDEFReaderOptions::region_layer, &LEFDEFReaderOptions::set_region_layer, "region-layer") +
+
tl::make_member (&LEFDEFReaderOptions::produce_via_geometry, &LEFDEFReaderOptions::set_produce_via_geometry, "produce-via-geometry") +
// for backward compatibility
tl::make_member (&LEFDEFReaderOptions::set_via_geometry_suffix, "special-via_geometry-suffix") +
tl::make_member (&LEFDEFReaderOptions::set_via_geometry_datatype, "special-via_geometry-datatype") +
+ tl::make_member (&LEFDEFReaderOptions::set_via_geometry_suffix_str, "special-via_geometry-suffix-string") +
+ tl::make_member (&LEFDEFReaderOptions::set_via_geometry_datatype_str, "special-via_geometry-datatype-string") +
// new:
- tl::make_member (&LEFDEFReaderOptions::via_geometry_suffix_str, &LEFDEFReaderOptions::set_via_geometry_suffix_str, "special-via_geometry-suffix-string") +
- tl::make_member (&LEFDEFReaderOptions::via_geometry_datatype_str, &LEFDEFReaderOptions::set_via_geometry_datatype_str, "special-via_geometry-datatype-string") +
+ tl::make_member (&LEFDEFReaderOptions::via_geometry_suffix_str, &LEFDEFReaderOptions::set_via_geometry_suffix_str, "via_geometry-suffix-string") +
+ tl::make_member (&LEFDEFReaderOptions::via_geometry_datatype_str, &LEFDEFReaderOptions::set_via_geometry_datatype_str, "via_geometry-datatype-string") +
+
tl::make_member (&LEFDEFReaderOptions::produce_pins, &LEFDEFReaderOptions::set_produce_pins, "produce-pins") +
// for backward compatibility
tl::make_member (&LEFDEFReaderOptions::set_pins_suffix, "special-pins-suffix") +
tl::make_member (&LEFDEFReaderOptions::set_pins_datatype, "special-pins-datatype") +
+ tl::make_member (&LEFDEFReaderOptions::set_pins_suffix_str, "special-pins-suffix-string") +
+ tl::make_member (&LEFDEFReaderOptions::set_pins_datatype_str, "special-pins-datatype-string") +
// new:
- tl::make_member (&LEFDEFReaderOptions::pins_suffix_str, &LEFDEFReaderOptions::set_pins_suffix_str, "special-pins-suffix-string") +
- tl::make_member (&LEFDEFReaderOptions::pins_datatype_str, &LEFDEFReaderOptions::set_pins_datatype_str, "special-pins-datatype-string") +
+ tl::make_member (&LEFDEFReaderOptions::pins_suffix_str, &LEFDEFReaderOptions::set_pins_suffix_str, "pins-suffix-string") +
+ tl::make_member (&LEFDEFReaderOptions::pins_datatype_str, &LEFDEFReaderOptions::set_pins_datatype_str, "pins-datatype-string") +
+
tl::make_member (&LEFDEFReaderOptions::produce_lef_pins, &LEFDEFReaderOptions::set_produce_lef_pins, "produce-lef-pins") +
// for backward compatibility
tl::make_member (&LEFDEFReaderOptions::set_lef_pins_suffix, "special-lef_pins-suffix") +
tl::make_member (&LEFDEFReaderOptions::set_lef_pins_datatype, "special-lef_pins-datatype") +
+ tl::make_member (&LEFDEFReaderOptions::set_lef_pins_suffix_str, "special-lef_pins-suffix-string") +
+ tl::make_member (&LEFDEFReaderOptions::set_lef_pins_datatype_str, "special-lef_pins-datatype-string") +
// new:
- tl::make_member (&LEFDEFReaderOptions::lef_pins_suffix_str, &LEFDEFReaderOptions::set_lef_pins_suffix_str, "special-lef_pins-suffix-string") +
- tl::make_member (&LEFDEFReaderOptions::lef_pins_datatype_str, &LEFDEFReaderOptions::set_lef_pins_datatype_str, "special-lef_pins-datatype-string") +
+ tl::make_member (&LEFDEFReaderOptions::lef_pins_suffix_str, &LEFDEFReaderOptions::set_lef_pins_suffix_str, "lef_pins-suffix-string") +
+ tl::make_member (&LEFDEFReaderOptions::lef_pins_datatype_str, &LEFDEFReaderOptions::set_lef_pins_datatype_str, "lef_pins-datatype-string") +
+
tl::make_member (&LEFDEFReaderOptions::produce_fills, &LEFDEFReaderOptions::set_produce_fills, "produce-fills") +
// for backward compatibility
tl::make_member (&LEFDEFReaderOptions::set_fills_suffix, "special-fills-suffix") +
tl::make_member (&LEFDEFReaderOptions::set_fills_datatype, "special-fills-datatype") +
+ tl::make_member (&LEFDEFReaderOptions::set_fills_suffix_str, "special-fills-suffix-string") +
+ tl::make_member (&LEFDEFReaderOptions::set_fills_datatype_str, "special-fills-datatype-string") +
// new:
- tl::make_member (&LEFDEFReaderOptions::fills_suffix_str, &LEFDEFReaderOptions::set_fills_suffix_str, "special-fills-suffix-string") +
- tl::make_member (&LEFDEFReaderOptions::fills_datatype_str, &LEFDEFReaderOptions::set_fills_datatype_str, "special-fills-datatype-string") +
+ tl::make_member (&LEFDEFReaderOptions::fills_suffix_str, &LEFDEFReaderOptions::set_fills_suffix_str, "fills-suffix-string") +
+ tl::make_member (&LEFDEFReaderOptions::fills_datatype_str, &LEFDEFReaderOptions::set_fills_datatype_str, "fills-datatype-string") +
+
tl::make_member (&LEFDEFReaderOptions::produce_obstructions, &LEFDEFReaderOptions::set_produce_obstructions, "produce-obstructions") +
tl::make_member (&LEFDEFReaderOptions::obstructions_suffix, &LEFDEFReaderOptions::set_obstructions_suffix, "obstructions-suffix") +
tl::make_member (&LEFDEFReaderOptions::obstructions_datatype, &LEFDEFReaderOptions::set_obstructions_datatype, "obstructions-datatype") +
+
tl::make_member (&LEFDEFReaderOptions::produce_blockages, &LEFDEFReaderOptions::set_produce_blockages, "produce-blockages") +
tl::make_member (&LEFDEFReaderOptions::blockages_suffix, &LEFDEFReaderOptions::set_blockages_suffix, "blockages-suffix") +
tl::make_member (&LEFDEFReaderOptions::blockages_datatype, &LEFDEFReaderOptions::set_blockages_datatype, "blockages-datatype") +
+
tl::make_member (&LEFDEFReaderOptions::produce_labels, &LEFDEFReaderOptions::set_produce_labels, "produce-labels") +
tl::make_member (&LEFDEFReaderOptions::labels_suffix, &LEFDEFReaderOptions::set_labels_suffix, "labels-suffix") +
tl::make_member (&LEFDEFReaderOptions::labels_datatype, &LEFDEFReaderOptions::set_labels_datatype, "labels-datatype") +
tl::make_member (&LEFDEFReaderOptions::produce_lef_labels, &LEFDEFReaderOptions::set_produce_lef_labels, "produce-lef-labels") +
tl::make_member (&LEFDEFReaderOptions::lef_labels_suffix, &LEFDEFReaderOptions::set_lef_labels_suffix, "lef-labels-suffix") +
tl::make_member (&LEFDEFReaderOptions::lef_labels_datatype, &LEFDEFReaderOptions::set_lef_labels_datatype, "lef-labels-datatype") +
+
tl::make_member (&LEFDEFReaderOptions::produce_routing, &LEFDEFReaderOptions::set_produce_routing, "produce-routing") +
- // for backward compatibility
- tl::make_member (&LEFDEFReaderOptions::set_routing_suffix, "special-routing-suffix") +
- tl::make_member (&LEFDEFReaderOptions::set_routing_datatype, "special-routing-datatype") +
- // new:
- tl::make_member (&LEFDEFReaderOptions::routing_suffix_str, &LEFDEFReaderOptions::set_routing_suffix_str, "special-routing-suffix-string") +
- tl::make_member (&LEFDEFReaderOptions::routing_datatype_str, &LEFDEFReaderOptions::set_routing_datatype_str, "special-routing-datatype-string") +
+ tl::make_member (&LEFDEFReaderOptions::routing_suffix_str, &LEFDEFReaderOptions::set_routing_suffix_str, "routing-suffix-string") +
+ tl::make_member (&LEFDEFReaderOptions::routing_datatype_str, &LEFDEFReaderOptions::set_routing_datatype_str, "routing-datatype-string") +
+
tl::make_member (&LEFDEFReaderOptions::produce_special_routing, &LEFDEFReaderOptions::set_produce_special_routing, "produce-special-routing") +
// for backward compatibility
tl::make_member (&LEFDEFReaderOptions::set_special_routing_suffix, "special-routing-suffix") +
@@ -391,6 +407,7 @@ class LEFDEFFormatDeclaration
// new:
tl::make_member (&LEFDEFReaderOptions::special_routing_suffix_str, &LEFDEFReaderOptions::set_special_routing_suffix_str, "special-routing-suffix-string") +
tl::make_member (&LEFDEFReaderOptions::special_routing_datatype_str, &LEFDEFReaderOptions::set_special_routing_datatype_str, "special-routing-datatype-string") +
+
tl::make_member (&LEFDEFReaderOptions::via_cellname_prefix, &LEFDEFReaderOptions::set_via_cellname_prefix, "via-cellname-prefix") +
tl::make_member (&LEFDEFReaderOptions::begin_lef_files, &LEFDEFReaderOptions::end_lef_files, &LEFDEFReaderOptions::push_lef_file, "lef-files") +
tl::make_member (&LEFDEFReaderOptions::begin_macro_layout_files, &LEFDEFReaderOptions::end_macro_layout_files, &LEFDEFReaderOptions::push_macro_layout_file, "macro_layout-files") +
diff --git a/src/plugins/streamers/lefdef/lay_plugin/layLEFDEFImportDialogs.cc b/src/plugins/streamers/lefdef/lay_plugin/layLEFDEFImportDialogs.cc
index 744dab2f0..4badeb7e9 100644
--- a/src/plugins/streamers/lefdef/lay_plugin/layLEFDEFImportDialogs.cc
+++ b/src/plugins/streamers/lefdef/lay_plugin/layLEFDEFImportDialogs.cc
@@ -360,6 +360,7 @@ LEFDEFReaderOptionsEditor::LEFDEFReaderOptionsEditor (QWidget *parent)
connect (produce_routing, SIGNAL (stateChanged (int)), this, SLOT (checkbox_changed ()));
connect (produce_special_routing, SIGNAL (stateChanged (int)), this, SLOT (checkbox_changed ()));
connect (produce_labels, SIGNAL (stateChanged (int)), this, SLOT (checkbox_changed ()));
+ connect (produce_lef_labels, SIGNAL (stateChanged (int)), this, SLOT (checkbox_changed ()));
connect (add_lef_file, SIGNAL (clicked ()), this, SLOT (add_lef_file_clicked ()));
connect (del_lef_files, SIGNAL (clicked ()), this, SLOT (del_lef_files_clicked ()));
connect (move_lef_files_up, SIGNAL (clicked ()), this, SLOT (move_lef_files_up_clicked ()));
@@ -644,6 +645,7 @@ LEFDEFReaderOptionsEditor::checkbox_changed ()
suffix_routing->setEnabled (produce_routing->isChecked ());
suffix_special_routing->setEnabled (produce_special_routing->isChecked ());
suffix_labels->setEnabled (produce_labels->isChecked ());
+ suffix_lef_labels->setEnabled (produce_lef_labels->isChecked ());
datatype_via_geometry->setEnabled (produce_via_geometry->isChecked ());
datatype_pins->setEnabled (produce_pins->isChecked ());
datatype_lef_pins->setEnabled (produce_lef_pins->isChecked ());
@@ -653,6 +655,7 @@ LEFDEFReaderOptionsEditor::checkbox_changed ()
datatype_routing->setEnabled (produce_routing->isChecked ());
datatype_special_routing->setEnabled (produce_special_routing->isChecked ());
datatype_labels->setEnabled (produce_labels->isChecked ());
+ datatype_lef_labels->setEnabled (produce_lef_labels->isChecked ());
}
void