Both sides previous revisionPrevious revisionNext revision | Previous revision |
install_actflow [2025/04/17 10:32] – [Installing actflow] rajit | install_actflow [2025/08/30 12:57] (current) – [MacOS] rajit |
---|
https://github.com/asyncvlsi/actflow/blob/main/.circleci/config.yml | https://github.com/asyncvlsi/actflow/blob/main/.circleci/config.yml |
| |
for ''Debian'', ''Ubuntu'' look at the ubuntu section. Here's the script used by the continuous integration build on Ubuntu to build and install the tools in ''/usr/local/cad'', and run the test cases: | ==== Debian or Ubuntu Linux ==== |
| |
| For ''Debian'', ''Ubuntu'' look at the ubuntu section. Here's the script used by the continuous integration build on Ubuntu to build and install the tools in ''/usr/local/cad'', and run the test cases: |
<code> | <code> |
$ apt-get -q update -y | $ apt-get -q update -y |
| |
Replace ''/usr/local/cad'' on the lines where it is used with your actual installation directory. | Replace ''/usr/local/cad'' on the lines where it is used with your actual installation directory. |
| |
| ==== Alpine Linux ==== |
| |
For Alpine Linux look at the alpine section in the yml file. | For Alpine Linux look at the alpine section in the yml file. |
| |
**MacOS:** Recent versions of MacOS have a C++ compiler issue, namely that the default compiler distributed by Apple does not support the "-fopenmp" flag. To fix this issue, we normally install either ''llvm'' or ''g++'' using homebrew. This normally results in the compiler being installed in a path that looks something like ''/opt/homebrew/Cellar/llvm/<version>/bin/clang++'' or ''/opt/homebrew/Cellar/gcc/<version>/bin/g++-<version>''. Set the environment variable ''CXX'' to the absolute path name of this C++ compiler before running "./build". | ==== MacOS ==== |
| |
=== OpenMP message === | Recent versions of MacOS have a C++ compiler issue, namely that the default compiler distributed by Apple does not support the "-fopenmp" flag. To fix this issue, we normally install either ''llvm'' or ''g++'' using homebrew. This normally results in the compiler being installed in a path that looks something like ''/opt/homebrew/Cellar/llvm/<version>/bin/clang++'' or ''/opt/homebrew/Cellar/gcc/<version>/bin/g++-<version>''. Set the environment variable ''CXX'' to the absolute path name of this C++ compiler before running "./build". |
| |
| More recent versions of LLVM have problems with linking. If you see messages like this: |
| <code> |
| Undefined symbols for architecture arm64: |
| "std::__1::__hash_memory(void const*, unsigned long)", referenced from: |
| ... |
| </code> |
| then chances are you have a known issue in recent LLVM versions on MacOS ([[https://github.com/llvm/llvm-project/issues/155606|github issue]]). The workaround that fixes this at least for the actflow build (see the discussion for details, this may not necessarily be a proper fix) is to edit the ''.cfg'' file installed with LLVM to include |
| the location of the LLVM C++ standard library. The [[https://github.com/llvm/llvm-project/issues/155606|github issue]] has details and various workarounds, and the root cause appears to be that while the LLVM compiler uses a specific algorithm to find include paths, it uses a different one to find libraries; so the system C++ standard library is being used instead of the LLVM-provided C++ standard library. Explicitly including the LLVM-provided library fixes this issue in the build. |
| ==== OpenMP message ==== |
| |
You may see the following message: | You may see the following message: |
A modern install of g++ or clang++ can compile this program when given the ''-fopenmp'' option. | A modern install of g++ or clang++ can compile this program when given the ''-fopenmp'' option. |
| |
=== Filesystem message === | ==== Filesystem message ==== |
| |
You may see the following message: | You may see the following message: |