Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
install_actflow [2025/04/17 10:32] – [Installing actflow] rajitinstall_actflow [2025/08/30 12:57] (current) – [MacOS] rajit
Line 66: Line 66:
 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
Line 79: Line 81:
  
 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:
Line 106: Line 120:
 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: