The-OpenROAD-Project / OpenROAD

OpenROAD's unified application implementing an RTL-to-GDS Flow. Documentation at https://openroad.readthedocs.io/en/latest/
https://theopenroadproject.org/
BSD 3-Clause "New" or "Revised" License
1.64k stars 564 forks source link

MacOS brew upgrade: tcl-tk 9.0 breaks compile/linking #6139

Open stefanottili opened 2 weeks ago

stefanottili commented 2 weeks ago

Describe the bug

brew upgrade changed tcl-tk from 8.6 to 9.0, this broke the configure step

./build_openroad.sh --local --latest 
...
-- Configuring done (8.7s)
CMake Error: The following variables are used in this project, but they are set to NOTFOUND.
Please set them or make sure they are set and tested correctly in the CMake files:
TCL_LIBRARY

Adding tcl90 tcl9.0 to set TCL_POSSIBLE_NAMES in ./cmake/FindTCL.cmake allows configure to finish. It claims find the tcl lib, but not the tcl headers.

-- TCL library: /opt/homebrew/opt/tcl-tk/lib/libtcl9.0.dylib
-- TCL header: TCL_HEADER-NOTFOUND

Despite this, it compiles just fine. But at the end openroad fails to be linked. /opt/homebrew/opt/tcl-tk/lib/libtcl9.0.dylib is specified in the link command multiple times. See the make VERBOSE=1 output below.

set(TCL_POSSIBLE_NAMES 
  tcl90 tcl9.0
  tcl87 tcl8.7
  tcl86 tcl8.6
  ...   )

I didn't have to update TCL_POSSIBLE_NAMES in sta/cmake/FindTCL.cmake ...

Expected Behavior

Be able to link the openroad executable.

Environment

MacOS homebrew tcl-tk 9.0

Git commit: dcba5786c8e714e3b7682a98d73de40e875699b1
kernel: Darwin 24.1.0
os: macOS 15.1
cmake version 3.31.0
CMake Deprecation Warning at third-party/abc/CMakeLists.txt:1 (cmake_minimum_required):
  Compatibility with CMake < 3.10 will be removed from a future version of
  CMake.

  Update the VERSION argument <min> value or use a ...<max> suffix to tell
  CMake that the project does not need compatibility with older versions.

CMake Warning (dev) at src/CMakeLists.txt:175 (find_package):
  Policy CMP0167 is not set: The FindBoost module is removed.  Run "cmake
  --help-policy CMP0167" for policy details.  Use the cmake_policy command to
  set the policy and suppress this warning.

This warning is for project developers.  Use -Wno-dev to suppress it.

CMake Warning at src/CMakeLists.txt:267 (message):
  spdlog: SPDLOG_FMT_EXTERNAL=ON

CMake Deprecation Warning at src/sta/CMakeLists.txt:17 (cmake_minimum_required):
  Compatibility with CMake < 3.10 will be removed from a future version of
  CMake.

  Update the VERSION argument <min> value or use a ...<max> suffix to tell
  CMake that the project does not need compatibility with older versions.

CMake Warning (dev) at src/dpl/CMakeLists.txt:41 (find_package):
  Policy CMP0167 is not set: The FindBoost module is removed.  Run "cmake
  --help-policy CMP0167" for policy details.  Use the cmake_policy command to
  set the policy and suppress this warning.

This warning is for project developers.  Use -Wno-dev to suppress it.

CMake Warning (dev) at src/cts/CMakeLists.txt:36 (find_package):
  Policy CMP0167 is not set: The FindBoost module is removed.  Run "cmake
  --help-policy CMP0167" for policy details.  Use the cmake_policy command to
  set the policy and suppress this warning.

This warning is for project developers.  Use -Wno-dev to suppress it.

CMake Warning (dev) at src/drt/CMakeLists.txt:49 (find_package):
  Policy CMP0167 is not set: The FindBoost module is removed.  Run "cmake
  --help-policy CMP0167" for policy details.  Use the cmake_policy command to
  set the policy and suppress this warning.

This warning is for project developers.  Use -Wno-dev to suppress it.

CMake Warning (dev) at src/utl/CMakeLists.txt:38 (find_package):
  Policy CMP0167 is not set: The FindBoost module is removed.  Run "cmake
  --help-policy CMP0167" for policy details.  Use the cmake_policy command to
  set the policy and suppress this warning.

This warning is for project developers.  Use -Wno-dev to suppress it.

CMake Warning (dev) at src/dst/CMakeLists.txt:42 (find_package):
  Policy CMP0167 is not set: The FindBoost module is removed.  Run "cmake
  --help-policy CMP0167" for policy details.  Use the cmake_policy command to
  set the policy and suppress this warning.

This warning is for project developers.  Use -Wno-dev to suppress it.

CMake Warning (dev) at src/dft/test/CMakeLists.txt:18 (find_package):
  Policy CMP0167 is not set: The FindBoost module is removed.  Run "cmake
  --help-policy CMP0167" for policy details.  Use the cmake_policy command to
  set the policy and suppress this warning.

This warning is for project developers.  Use -Wno-dev to suppress it.

Number of processor cores: 8
-- The CXX compiler identification is AppleClang 16.0.0.16000026
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /Library/Developer/CommandLineTools/usr/bin/c++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- OpenROAD version: v2.0-16963-gdcba5786c
-- System name: Darwin
-- Compiler: AppleClang 16.0.0.16000026
-- Build type: RELEASE
-- Install prefix: /usr/local
-- C++ Standard: 17
-- C++ Standard Required: ON
-- C++ Extensions: OFF
-- The C compiler identification is AppleClang 16.0.0.16000026
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /Library/Developer/CommandLineTools/usr/bin/cc - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Performing Test C_COMPILER_SUPPORTS__-Wall
-- Performing Test C_COMPILER_SUPPORTS__-Wall - Success
-- Performing Test CXX_COMPILER_SUPPORTS__-Wall
-- Performing Test CXX_COMPILER_SUPPORTS__-Wall - Success
-- Performing Test C_COMPILER_SUPPORTS__-Wno-array-bounds
-- Performing Test C_COMPILER_SUPPORTS__-Wno-array-bounds - Success
-- Performing Test CXX_COMPILER_SUPPORTS__-Wno-array-bounds
-- Performing Test CXX_COMPILER_SUPPORTS__-Wno-array-bounds - Success
-- Performing Test C_COMPILER_SUPPORTS__-Wno-nonnull
-- Performing Test C_COMPILER_SUPPORTS__-Wno-nonnull - Success
-- Performing Test CXX_COMPILER_SUPPORTS__-Wno-nonnull
-- Performing Test CXX_COMPILER_SUPPORTS__-Wno-nonnull - Success
-- Performing Test C_COMPILER_SUPPORTS__-Wno-maybe-uninitialized
-- Performing Test C_COMPILER_SUPPORTS__-Wno-maybe-uninitialized - Failed
-- Performing Test CXX_COMPILER_SUPPORTS__-Wno-maybe-uninitialized
-- Performing Test CXX_COMPILER_SUPPORTS__-Wno-maybe-uninitialized - Failed
-- Performing Test C_COMPILER_SUPPORTS__-Wno-format-overflow
-- Performing Test C_COMPILER_SUPPORTS__-Wno-format-overflow - Failed
-- Performing Test CXX_COMPILER_SUPPORTS__-Wno-format-overflow
-- Performing Test CXX_COMPILER_SUPPORTS__-Wno-format-overflow - Failed
-- Performing Test C_COMPILER_SUPPORTS__-Wno-unused-variable
-- Performing Test C_COMPILER_SUPPORTS__-Wno-unused-variable - Success
-- Performing Test CXX_COMPILER_SUPPORTS__-Wno-unused-variable
-- Performing Test CXX_COMPILER_SUPPORTS__-Wno-unused-variable - Success
-- Performing Test C_COMPILER_SUPPORTS__-Wno-unused-function
-- Performing Test C_COMPILER_SUPPORTS__-Wno-unused-function - Success
-- Performing Test CXX_COMPILER_SUPPORTS__-Wno-unused-function
-- Performing Test CXX_COMPILER_SUPPORTS__-Wno-unused-function - Success
-- Performing Test C_COMPILER_SUPPORTS__-Wno-write-strings
-- Performing Test C_COMPILER_SUPPORTS__-Wno-write-strings - Success
-- Performing Test CXX_COMPILER_SUPPORTS__-Wno-write-strings
-- Performing Test CXX_COMPILER_SUPPORTS__-Wno-write-strings - Success
-- Performing Test C_COMPILER_SUPPORTS__-Wno-sign-compare
-- Performing Test C_COMPILER_SUPPORTS__-Wno-sign-compare - Success
-- Performing Test CXX_COMPILER_SUPPORTS__-Wno-sign-compare
-- Performing Test CXX_COMPILER_SUPPORTS__-Wno-sign-compare - Success
-- Performing Test C_COMPILER_SUPPORTS__-Wno-deprecated
-- Performing Test C_COMPILER_SUPPORTS__-Wno-deprecated - Success
-- Performing Test CXX_COMPILER_SUPPORTS__-Wno-deprecated
-- Performing Test CXX_COMPILER_SUPPORTS__-Wno-deprecated - Success
-- Performing Test C_COMPILER_SUPPORTS__-Wno-c++11-narrowing
-- Performing Test C_COMPILER_SUPPORTS__-Wno-c++11-narrowing - Success
-- Performing Test CXX_COMPILER_SUPPORTS__-Wno-c++11-narrowing
-- Performing Test CXX_COMPILER_SUPPORTS__-Wno-c++11-narrowing - Success
-- Performing Test C_COMPILER_SUPPORTS__-Wno-register
-- Performing Test C_COMPILER_SUPPORTS__-Wno-register - Success
-- Performing Test CXX_COMPILER_SUPPORTS__-Wno-register
-- Performing Test CXX_COMPILER_SUPPORTS__-Wno-register - Success
-- Performing Test C_COMPILER_SUPPORTS__-Wno-format
-- Performing Test C_COMPILER_SUPPORTS__-Wno-format - Success
-- Performing Test CXX_COMPILER_SUPPORTS__-Wno-format
-- Performing Test CXX_COMPILER_SUPPORTS__-Wno-format - Success
-- Performing Test C_COMPILER_SUPPORTS__-Wno-reserved-user-defined-literal
-- Performing Test C_COMPILER_SUPPORTS__-Wno-reserved-user-defined-literal - Success
-- Performing Test CXX_COMPILER_SUPPORTS__-Wno-reserved-user-defined-literal
-- Performing Test CXX_COMPILER_SUPPORTS__-Wno-reserved-user-defined-literal - Success
-- Performing Test C_COMPILER_SUPPORTS__-fpermissive
-- Performing Test C_COMPILER_SUPPORTS__-fpermissive - Success
-- Performing Test CXX_COMPILER_SUPPORTS__-fpermissive
-- Performing Test CXX_COMPILER_SUPPORTS__-fpermissive - Success
-- Performing Test C_COMPILER_SUPPORTS__-x
-- Performing Test C_COMPILER_SUPPORTS__-x - Failed
-- Performing Test CXX_COMPILER_SUPPORTS__-x
-- Performing Test CXX_COMPILER_SUPPORTS__-x - Failed
-- Performing Test C_COMPILER_SUPPORTS__c++
-- Performing Test C_COMPILER_SUPPORTS__c++ - Failed
-- Performing Test CXX_COMPILER_SUPPORTS__c++
-- Performing Test CXX_COMPILER_SUPPORTS__c++ - Failed
-- Performing Test C_COMPILER_SUPPORTS__-std=c++17
-- Performing Test C_COMPILER_SUPPORTS__-std=c++17 - Failed
-- Performing Test CXX_COMPILER_SUPPORTS__-std=c++17
-- Performing Test CXX_COMPILER_SUPPORTS__-std=c++17 - Success
-- Performing Test C_COMPILER_SUPPORTS__-Wno-unused-but-set-variable
-- Performing Test C_COMPILER_SUPPORTS__-Wno-unused-but-set-variable - Success
-- Performing Test CXX_COMPILER_SUPPORTS__-Wno-unused-but-set-variable
-- Performing Test CXX_COMPILER_SUPPORTS__-Wno-unused-but-set-variable - Success
-- TCL library: /opt/homebrew/opt/tcl-tk/lib/libtcl9.0.dylib
-- TCL header: TCL_HEADER-NOTFOUND
-- Found SWIG: /opt/homebrew/bin/swig (found suitable version "4.1.1", minimum required is "4.0")
-- Using SWIG >= 4.1.1 -flatstaticmethod flag for python
-- Found Boost: /opt/homebrew/lib/cmake/Boost-1.86.0/BoostConfig.cmake (found version "1.86.0")
-- boost: 1.86.0
-- Found GTest: /opt/homebrew/lib/cmake/GTest/GTestConfig.cmake (found version "1.15.2")
-- GTest: 1.15.2
-- Found Python3: /opt/homebrew/opt/python@3.13/Frameworks/Python.framework/Versions/3.13/include/python3.13 (found version "3.13.0") found components: Development Development.Module Development.Embed
-- Found ZLIB: /Library/Developer/CommandLineTools/SDKs/MacOSX15.1.sdk/usr/lib/libz.tbd (found version "1.2.12")
-- Found Threads: TRUE
-- spdlog: 1.9.2
-- Found BISON: /opt/homebrew/opt/bison/bin/bison (found version "3.8.2")
-- Could NOT find Doxygen (missing: DOXYGEN_EXECUTABLE) 
-- STA version: 2.6.0
-- STA git sha: aa598a2f14c5c142e90391a69988523505e7db3d
-- System name: Darwin
-- Compiler: AppleClang 16.0.0.16000026
-- Build type: RELEASE
-- Build CXX_FLAGS: -O3 -DNDEBUG
-- Install prefix: /usr/local
-- Found FLEX: /opt/homebrew/opt/flex/bin/flex (found version "2.6.4")
-- TCL library: /opt/homebrew/opt/tcl-tk/lib/libtcl9.0.dylib
-- TCL header: TCL_HEADER-NOTFOUND
-- TCL readline library: NOT FOUND
-- TCL readline header: NOT FOUND
-- CUDD library: /opt/homebrew/lib/libcudd.dylib
-- CUDD header: /opt/homebrew/include/cudd.h
-- SSTA: 0
-- Found SWIG: /opt/homebrew/bin/swig (found suitable version "4.1.1", minimum required is "3.0")
-- STA executable: OpenROAD-flow-scripts/tools/OpenROAD/src/sta/app/sta
-- Found Protobuf: /opt/homebrew/lib/libprotobuf.dylib (found version "5.28.3")
-- Found re2: /opt/homebrew/lib/cmake/re2/re2Config.cmake (found version "11.0.0")
-- Found SCIP: /opt/homebrew/lib/cmake/scip/scip-config.cmake (found version "9.2.0")
-- Found OpenMP_CXX: -Xclang -fopenmp (found version "5.1")
-- Found OpenMP: TRUE (found version "5.1")
-- Found OR-Tools: /opt/homebrew/lib/cmake/ortools (version: 9.11.9999)
-- TCL library: /opt/homebrew/opt/tcl-tk/lib/libtcl9.0.dylib
-- TCL header: TCL_HEADER-NOTFOUND
-- Found OpenMP_C: -Xclang -fopenmp (found version "5.1")
-- Found OpenMP: TRUE (found version "5.1")
-- Found OpenMP: TRUE (found version "5.1")
-- GUI is enabled
-- Charts widget is enabled
-- Found Boost: /opt/homebrew/lib/cmake/Boost-1.86.0/BoostConfig.cmake (found version "1.86.0") found components: serialization
-- Could NOT find VTune (missing: VTune_LIBRARIES VTune_INCLUDE_DIRS) 
-- Found Boost: /opt/homebrew/lib/cmake/Boost-1.86.0/BoostConfig.cmake (found suitable version "1.86.0", minimum required is "1.78")
-- TCL library: /opt/homebrew/opt/tcl-tk/lib/libtcl9.0.dylib
-- TCL header: TCL_HEADER-NOTFOUND
-- Found Boost: /opt/homebrew/lib/cmake/Boost-1.86.0/BoostConfig.cmake (found version "1.86.0") found components: serialization system thread
-- Found Boost: /opt/homebrew/lib/cmake/Boost-1.86.0/BoostConfig.cmake (found version "1.86.0")
-- Found Eigen3: /opt/homebrew/share/eigen3/cmake/Eigen3Config.cmake (found version "3.4.0")
-- TCL readline disabled
-- Tcl Extended disabled
-- Python3 enabled
-- Configuring done (7.7s)
-- Generating done (1.3s)

To Reproduce

brew upgrade ./build_openroad.sh --local --latest

Relevant log output

[ 97%] Linking CXX executable openroad
cd OpenROAD-flow-scripts/tools/OpenROAD/build/src && /opt/homebrew/Cellar/cmake/3.31.0/bin/cmake -E cmake_link_script CMakeFiles/openroad.dir/link.txt --verbose=1
/Library/Developer/CommandLineTools/usr/bin/g++ -O3 -DNDEBUG -arch arm64 -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX15.1.sdk -Wl,-search_paths_first -Wl,-headerpad_max_install_names CMakeFiles/openroad.dir/Design.cc.o CMakeFiles/openroad.dir/Timing.cc.o CMakeFiles/openroad.dir/Tech.cc.o CMakeFiles/openroad.dir/OpenRoad.cc.o CMakeFiles/openroad.dir/Main.cc.o -o openroad -F/opt/homebrew/opt/qt@5/lib  -Wl,-rpath,/opt/homebrew/opt/or-tools/lib -Wl,-rpath,/opt/homebrew/lib ifp/src/ifp.a pad/pad.a openroad_swig.a gpl/gpl.a dpl/dpl.a dpo/dpo.a fin/fin.a rsz/src/rsz.a ppl/ppl.a stt/stt.a dbSta/src/dbSta.a OpenROAD-flow-scripts/tools/OpenROAD/src/sta/app/libOpenSTA.a odb/src/swig/tcl/odbtcl.a rcx/src/rcx.a rmp/src/rmp.a cts/src/cts.a grt/grt.a tap/src/tap.a gui/gui.a drt/drt.a dst/dst.a mpl/mpl.a psm/src/psm.a ant/src/ant.a upf/src/upf.a utl/utl.a pdn/src/pdn.a dft/dft.a mpl2/mpl2.a par/par.a ../third-party/abc/libabc.a /opt/homebrew/opt/tcl-tk/lib/libtcl9.0.dylib /Library/Developer/CommandLineTools/SDKs/MacOSX15.1.sdk/usr/lib/libz.tbd /opt/homebrew/lib/libcudd.dylib _openroad_swig_py.a odb/src/swig/python/_odb_py.a ifp/src/_ifp_py.a utl/_utl_py.a ant/src/_ant_py.a grt/_grt_py.a gpl/_gpl_py.a dpl/_dpl_py.a mpl/_mpl_py.a ppl/_ppl_py.a tap/src/_tap_py.a cts/src/_cts_py.a drt/_drt_py.a dpo/_dpo_py.a fin/_fin_py.a rcx/src/_rcx_py.a rmp/src/_rmp_py.a stt/_stt_py.a psm/src/_psm_py.a pdn/src/_pdn_py.a dft/_dft_py.a par/_par_py.a /opt/homebrew/opt/or-tools/lib/libortools.9.11.dylib /opt/homebrew/lib/libabsl_die_if_null.2407.0.0.dylib /opt/homebrew/lib/libabsl_flags_parse.2407.0.0.dylib /opt/homebrew/lib/libabsl_flags_usage.2407.0.0.dylib /opt/homebrew/lib/libabsl_flags_usage_internal.2407.0.0.dylib /opt/homebrew/lib/libabsl_log_flags.2407.0.0.dylib /opt/homebrew/lib/libabsl_log_initialize.2407.0.0.dylib /opt/homebrew/lib/libabsl_random_distributions.2407.0.0.dylib /opt/homebrew/lib/libabsl_random_seed_sequences.2407.0.0.dylib /opt/homebrew/lib/libabsl_random_internal_pool_urbg.2407.0.0.dylib /opt/homebrew/lib/libabsl_random_internal_randen.2407.0.0.dylib /opt/homebrew/lib/libabsl_random_internal_randen_hwaes.2407.0.0.dylib /opt/homebrew/lib/libabsl_random_internal_randen_hwaes_impl.2407.0.0.dylib /opt/homebrew/lib/libabsl_random_internal_randen_slow.2407.0.0.dylib /opt/homebrew/lib/libabsl_random_internal_platform.2407.0.0.dylib /opt/homebrew/lib/libabsl_random_internal_seed_material.2407.0.0.dylib /opt/homebrew/lib/libabsl_random_seed_gen_exception.2407.0.0.dylib /opt/homebrew/lib/libabsl_leak_check.2407.0.0.dylib /opt/homebrew/lib/libabsl_statusor.2407.0.0.dylib /opt/homebrew/lib/libabsl_status.2407.0.0.dylib /opt/homebrew/lib/libabsl_bad_any_cast_impl.2407.0.0.dylib /opt/homebrew/lib/libprotobuf.dylib /opt/homebrew/lib/libre2.11.0.0.dylib /opt/homebrew/lib/libabsl_log_internal_check_op.2407.0.0.dylib /opt/homebrew/lib/libabsl_log_internal_conditions.2407.0.0.dylib /opt/homebrew/lib/libabsl_log_internal_message.2407.0.0.dylib /opt/homebrew/lib/libabsl_examine_stack.2407.0.0.dylib /opt/homebrew/lib/libabsl_log_internal_format.2407.0.0.dylib /opt/homebrew/lib/libabsl_log_internal_proto.2407.0.0.dylib /opt/homebrew/lib/libabsl_log_internal_nullguard.2407.0.0.dylib /opt/homebrew/lib/libabsl_log_internal_log_sink_set.2407.0.0.dylib /opt/homebrew/lib/libabsl_log_globals.2407.0.0.dylib /opt/homebrew/lib/libabsl_log_internal_globals.2407.0.0.dylib /opt/homebrew/lib/libabsl_log_sink.2407.0.0.dylib /opt/homebrew/lib/libabsl_log_entry.2407.0.0.dylib /opt/homebrew/lib/libabsl_strerror.2407.0.0.dylib /opt/homebrew/lib/libabsl_vlog_config_internal.2407.0.0.dylib /opt/homebrew/lib/libabsl_log_internal_fnmatch.2407.0.0.dylib /opt/homebrew/lib/libabsl_flags_reflection.2407.0.0.dylib /opt/homebrew/lib/libabsl_flags_private_handle_accessor.2407.0.0.dylib /opt/homebrew/lib/libabsl_flags_internal.2407.0.0.dylib /opt/homebrew/lib/libabsl_flags_commandlineflag.2407.0.0.dylib /opt/homebrew/lib/libabsl_flags_marshalling.2407.0.0.dylib /opt/homebrew/lib/libabsl_flags_config.2407.0.0.dylib /opt/homebrew/lib/libabsl_flags_program_name.2407.0.0.dylib /opt/homebrew/lib/libabsl_flags_commandlineflag_internal.2407.0.0.dylib /opt/homebrew/lib/libabsl_raw_hash_set.2407.0.0.dylib /opt/homebrew/lib/libabsl_hashtablez_sampler.2407.0.0.dylib /opt/homebrew/lib/libabsl_cord.2407.0.0.dylib /opt/homebrew/lib/libabsl_cordz_info.2407.0.0.dylib /opt/homebrew/lib/libabsl_cord_internal.2407.0.0.dylib /opt/homebrew/lib/libabsl_cordz_functions.2407.0.0.dylib /opt/homebrew/lib/libabsl_exponential_biased.2407.0.0.dylib /opt/homebrew/lib/libabsl_cordz_handle.2407.0.0.dylib /opt/homebrew/lib/libabsl_synchronization.2407.0.0.dylib /opt/homebrew/lib/libabsl_stacktrace.2407.0.0.dylib /opt/homebrew/lib/libabsl_symbolize.2407.0.0.dylib /opt/homebrew/lib/libabsl_debugging_internal.2407.0.0.dylib /opt/homebrew/lib/libabsl_demangle_internal.2407.0.0.dylib /opt/homebrew/lib/libabsl_demangle_rust.2407.0.0.dylib /opt/homebrew/lib/libabsl_decode_rust_punycode.2407.0.0.dylib /opt/homebrew/lib/libabsl_utf8_for_code_point.2407.0.0.dylib /opt/homebrew/lib/libabsl_graphcycles_internal.2407.0.0.dylib /opt/homebrew/lib/libabsl_kernel_timeout_internal.2407.0.0.dylib /opt/homebrew/lib/libabsl_time.2407.0.0.dylib /opt/homebrew/lib/libabsl_civil_time.2407.0.0.dylib /opt/homebrew/lib/libabsl_time_zone.2407.0.0.dylib /opt/homebrew/lib/libabsl_malloc_internal.2407.0.0.dylib /opt/homebrew/lib/libabsl_crc_cord_state.2407.0.0.dylib /opt/homebrew/lib/libabsl_crc32c.2407.0.0.dylib /opt/homebrew/lib/libabsl_str_format_internal.2407.0.0.dylib /opt/homebrew/lib/libabsl_crc_internal.2407.0.0.dylib /opt/homebrew/lib/libabsl_crc_cpu_detect.2407.0.0.dylib /opt/homebrew/lib/libabsl_hash.2407.0.0.dylib /opt/homebrew/lib/libabsl_bad_optional_access.2407.0.0.dylib /opt/homebrew/lib/libabsl_city.2407.0.0.dylib /opt/homebrew/lib/libabsl_bad_variant_access.2407.0.0.dylib /opt/homebrew/lib/libabsl_low_level_hash.2407.0.0.dylib /opt/homebrew/lib/libabsl_strings.2407.0.0.dylib /opt/homebrew/lib/libabsl_int128.2407.0.0.dylib /opt/homebrew/lib/libabsl_strings_internal.2407.0.0.dylib /opt/homebrew/lib/libabsl_string_view.2407.0.0.dylib /opt/homebrew/lib/libabsl_base.2407.0.0.dylib /opt/homebrew/lib/libabsl_spinlock_wait.2407.0.0.dylib /opt/homebrew/lib/libabsl_throw_delegate.2407.0.0.dylib /opt/homebrew/lib/libabsl_raw_logging_internal.2407.0.0.dylib /opt/homebrew/lib/libabsl_log_severity.2407.0.0.dylib /opt/homebrew/lib/libscip.9.2.0.0.dylib mpl2/libmpl2_lib.a /opt/homebrew/opt/or-tools/lib/libortools.9.11.dylib /opt/homebrew/lib/libabsl_die_if_null.2407.0.0.dylib /opt/homebrew/lib/libabsl_flags_parse.2407.0.0.dylib /opt/homebrew/lib/libabsl_flags_usage.2407.0.0.dylib /opt/homebrew/lib/libabsl_flags_usage_internal.2407.0.0.dylib /opt/homebrew/lib/libabsl_log_flags.2407.0.0.dylib /opt/homebrew/lib/libabsl_log_initialize.2407.0.0.dylib /opt/homebrew/lib/libabsl_random_distributions.2407.0.0.dylib /opt/homebrew/lib/libabsl_random_seed_sequences.2407.0.0.dylib /opt/homebrew/lib/libabsl_random_internal_pool_urbg.2407.0.0.dylib /opt/homebrew/lib/libabsl_random_internal_randen.2407.0.0.dylib /opt/homebrew/lib/libabsl_random_internal_randen_hwaes.2407.0.0.dylib /opt/homebrew/lib/libabsl_random_internal_randen_hwaes_impl.2407.0.0.dylib /opt/homebrew/lib/libabsl_random_internal_randen_slow.2407.0.0.dylib /opt/homebrew/lib/libabsl_random_internal_platform.2407.0.0.dylib /opt/homebrew/lib/libabsl_random_internal_seed_material.2407.0.0.dylib /opt/homebrew/lib/libabsl_random_seed_gen_exception.2407.0.0.dylib /opt/homebrew/lib/libabsl_leak_check.2407.0.0.dylib /opt/homebrew/lib/libabsl_statusor.2407.0.0.dylib /opt/homebrew/lib/libabsl_status.2407.0.0.dylib /opt/homebrew/lib/libabsl_bad_any_cast_impl.2407.0.0.dylib /opt/homebrew/lib/libprotobuf.dylib /opt/homebrew/lib/libre2.11.0.0.dylib /opt/homebrew/lib/libabsl_log_internal_check_op.2407.0.0.dylib /opt/homebrew/lib/libabsl_log_internal_conditions.2407.0.0.dylib /opt/homebrew/lib/libabsl_log_internal_message.2407.0.0.dylib /opt/homebrew/lib/libabsl_examine_stack.2407.0.0.dylib /opt/homebrew/lib/libabsl_log_internal_format.2407.0.0.dylib /opt/homebrew/lib/libabsl_log_internal_proto.2407.0.0.dylib /opt/homebrew/lib/libabsl_log_internal_nullguard.2407.0.0.dylib /opt/homebrew/lib/libabsl_log_internal_log_sink_set.2407.0.0.dylib /opt/homebrew/lib/libabsl_log_globals.2407.0.0.dylib /opt/homebrew/lib/libabsl_log_internal_globals.2407.0.0.dylib /opt/homebrew/lib/libabsl_log_sink.2407.0.0.dylib /opt/homebrew/lib/libabsl_log_entry.2407.0.0.dylib /opt/homebrew/lib/libabsl_strerror.2407.0.0.dylib /opt/homebrew/lib/libabsl_vlog_config_internal.2407.0.0.dylib /opt/homebrew/lib/libabsl_log_internal_fnmatch.2407.0.0.dylib /opt/homebrew/lib/libabsl_flags_reflection.2407.0.0.dylib /opt/homebrew/lib/libabsl_flags_private_handle_accessor.2407.0.0.dylib /opt/homebrew/lib/libabsl_flags_internal.2407.0.0.dylib /opt/homebrew/lib/libabsl_flags_commandlineflag.2407.0.0.dylib /opt/homebrew/lib/libabsl_flags_marshalling.2407.0.0.dylib /opt/homebrew/lib/libabsl_flags_config.2407.0.0.dylib /opt/homebrew/lib/libabsl_flags_program_name.2407.0.0.dylib /opt/homebrew/lib/libabsl_flags_commandlineflag_internal.2407.0.0.dylib /opt/homebrew/lib/libabsl_raw_hash_set.2407.0.0.dylib /opt/homebrew/lib/libabsl_hashtablez_sampler.2407.0.0.dylib /opt/homebrew/lib/libabsl_cord.2407.0.0.dylib /opt/homebrew/lib/libabsl_cordz_info.2407.0.0.dylib /opt/homebrew/lib/libabsl_cord_internal.2407.0.0.dylib /opt/homebrew/lib/libabsl_cordz_functions.2407.0.0.dylib /opt/homebrew/lib/libabsl_exponential_biased.2407.0.0.dylib /opt/homebrew/lib/libabsl_cordz_handle.2407.0.0.dylib /opt/homebrew/lib/libabsl_synchronization.2407.0.0.dylib /opt/homebrew/lib/libabsl_stacktrace.2407.0.0.dylib /opt/homebrew/lib/libabsl_symbolize.2407.0.0.dylib /opt/homebrew/lib/libabsl_debugging_internal.2407.0.0.dylib /opt/homebrew/lib/libabsl_demangle_internal.2407.0.0.dylib /opt/homebrew/lib/libabsl_demangle_rust.2407.0.0.dylib /opt/homebrew/lib/libabsl_decode_rust_punycode.2407.0.0.dylib /opt/homebrew/lib/libabsl_utf8_for_code_point.2407.0.0.dylib /opt/homebrew/lib/libabsl_graphcycles_internal.2407.0.0.dylib /opt/homebrew/lib/libabsl_kernel_timeout_internal.2407.0.0.dylib /opt/homebrew/lib/libabsl_time.2407.0.0.dylib /opt/homebrew/lib/libabsl_civil_time.2407.0.0.dylib /opt/homebrew/lib/libabsl_time_zone.2407.0.0.dylib /opt/homebrew/lib/libabsl_malloc_internal.2407.0.0.dylib /opt/homebrew/lib/libabsl_crc_cord_state.2407.0.0.dylib /opt/homebrew/lib/libabsl_crc32c.2407.0.0.dylib /opt/homebrew/lib/libabsl_str_format_internal.2407.0.0.dylib /opt/homebrew/lib/libabsl_crc_internal.2407.0.0.dylib /opt/homebrew/lib/libabsl_crc_cpu_detect.2407.0.0.dylib /opt/homebrew/lib/libabsl_hash.2407.0.0.dylib /opt/homebrew/lib/libabsl_bad_optional_access.2407.0.0.dylib /opt/homebrew/lib/libabsl_city.2407.0.0.dylib /opt/homebrew/lib/libabsl_bad_variant_access.2407.0.0.dylib /opt/homebrew/lib/libabsl_low_level_hash.2407.0.0.dylib /opt/homebrew/lib/libabsl_strings.2407.0.0.dylib /opt/homebrew/lib/libabsl_int128.2407.0.0.dylib /opt/homebrew/lib/libabsl_strings_internal.2407.0.0.dylib /opt/homebrew/lib/libabsl_string_view.2407.0.0.dylib /opt/homebrew/lib/libabsl_base.2407.0.0.dylib /opt/homebrew/lib/libabsl_spinlock_wait.2407.0.0.dylib /opt/homebrew/lib/libabsl_throw_delegate.2407.0.0.dylib /opt/homebrew/lib/libabsl_raw_logging_internal.2407.0.0.dylib /opt/homebrew/lib/libabsl_log_severity.2407.0.0.dylib /opt/homebrew/lib/libscip.9.2.0.0.dylib -ldl odb/src/swig/common/libodb_swig_common.a ifp/src/ifp.a upf/src/libupf_lib.a mpl/mpl.a mpl/src/ParquetFP/libParquetFP.a ppl/ppl.a ppl/src/munkres/libMunkres.a tap/src/tap.a cts/src/cts.a cts/src/libcts_lib.a drt/drt.a dst/dst.a /opt/homebrew/lib/libboost_serialization-mt.a /opt/homebrew/lib/libboost_system-mt.a /opt/homebrew/lib/libboost_thread-mt.a /opt/homebrew/lib/libboost_serialization-mt.a dpo/dpo.a fin/fin.a rcx/src/librcx_lib.a rmp/src/rmp.a rsz/src/rsz.a grt/grt.a rsz/src/rsz.a grt/grt.a ../third-party/abc/libabc.a -lpthread -lm -ldl stt/stt.a psm/src/psm.a pad/pad.a rsz/src/librsz_lib.a grt/libgrt_lib.a rsz/src/librsz_lib.a grt/libgrt_lib.a grt/src/fastroute/libFastRoute4.1.a stt/libstt_lib.a ant/src/libant_lib.a /opt/homebrew/lib/libomp.dylib dpl/libdpl_lib.a pdn/src/pdn.a dft/dft.a dft/src/replace/libdft_replace_lib.a dft/src/stitch/libdft_stitch_lib.a dft/src/cells/libdft_cells_lib.a dft/src/architect/libdft_architect_lib.a dft/src/cells/libdft_base_scan_cell_lib.a dft/src/clock_domain/libdft_clock_domain_lib.a dft/src/config/libdft_config_lib.a dft/src/utils/libdft_utils_scan_pin_lib.a dft/src/utils/libdft_utils_lib.a dbSta/src/dbSta.a gui/gui.a /opt/homebrew/opt/qt@5/lib/QtCharts.framework/QtCharts /opt/homebrew/opt/qt@5/lib/QtWidgets.framework/QtWidgets /opt/homebrew/opt/qt@5/lib/QtGui.framework/QtGui /opt/homebrew/opt/qt@5/lib/QtCore.framework/QtCore utl/utl.a par/libpar_lib.a dbSta/src/libdbSta_lib.a OpenROAD-flow-scripts/tools/OpenROAD/src/sta/app/libOpenSTA.a /opt/homebrew/lib/libcudd.dylib odb/src/cdl/libcdl.a odb/src/defin/libdefin.a odb/src/def/libdef.a odb/src/def/libdefzlib.a odb/src/defout/libdefout.a odb/src/lefin/liblefin.a odb/src/lef/liblef.a odb/src/lef/liblefzlib.a odb/src/lefout/liblefout.a odb/src/gdsin/libgdsin.a odb/src/gdsout/libgdsout.a odb/src/db/libdb.a odb/src/zutil/libzutil.a odb/src/db/libdb.a odb/src/zutil/libzutil.a /opt/homebrew/opt/tcl-tk/lib/libtcl9.0.dylib utl/libutl_lib.a /opt/homebrew/lib/libspdlog.1.9.2.dylib /opt/homebrew/lib/libfmt.8.1.1.dylib /opt/homebrew/opt/or-tools/lib/libortools.9.11.dylib /Library/Developer/CommandLineTools/SDKs/MacOSX15.1.sdk/usr/lib/libz.tbd /opt/homebrew/Cellar/cbc/2.10.12/lib/libOsiCbc.dylib /opt/homebrew/Cellar/cbc/2.10.12/lib/libCbcSolver.dylib /opt/homebrew/Cellar/cbc/2.10.12/lib/libCbc.dylib /Library/Developer/CommandLineTools/SDKs/MacOSX15.1.sdk/usr/lib/libpthread.tbd /opt/homebrew/Cellar/cgl/0.60.9/lib/libCgl.dylib /opt/homebrew/Cellar/clp/1.17.10/lib/libOsiClp.dylib /opt/homebrew/Cellar/clp/1.17.10/lib/libClpSolver.dylib /opt/homebrew/Cellar/clp/1.17.10/lib/libClp.dylib /opt/homebrew/Cellar/osi/0.108.11/lib/libOsi.dylib /opt/homebrew/Cellar/coinutils/2.11.12/lib/libCoinUtils.dylib /Library/Developer/CommandLineTools/SDKs/MacOSX15.1.sdk/usr/lib/libbz2.tbd /Library/Developer/CommandLineTools/SDKs/MacOSX15.1.sdk/usr/lib/libz.tbd /opt/homebrew/opt/openblas/lib/libopenblas.dylib /Library/Developer/CommandLineTools/SDKs/MacOSX15.1.sdk/usr/lib/libm.tbd /opt/homebrew/lib/libabsl_die_if_null.2407.0.0.dylib /opt/homebrew/lib/libabsl_flags_parse.2407.0.0.dylib /opt/homebrew/lib/libabsl_flags_usage.2407.0.0.dylib /opt/homebrew/lib/libabsl_flags_usage_internal.2407.0.0.dylib /opt/homebrew/lib/libabsl_log_flags.2407.0.0.dylib /opt/homebrew/lib/libabsl_log_initialize.2407.0.0.dylib /opt/homebrew/lib/libabsl_random_distributions.2407.0.0.dylib /opt/homebrew/lib/libabsl_random_seed_sequences.240l_random_internal_randen_hwaes.2407.0.0.dylib /opt/homebrew/lib/libabsl_random_internal_randen_hwaes_impl.2407.0.0.dylib /opt/homebrew/lib/libabsl_random_internal_randen_slow.2407.0.0.dylib /opt/homebrew/lib/libabsl_random_internal_platform.2407.0.0.dylib /opt/homebrew/lib/libabsl_random_internal_seed_material.2407.0.0.dylib /opt/homebrew/lib/libabsl_random_seed_gen_exception.2407.0.0.dylib /opt/homebrew/lib/libabsl_leak_check.2407.0.0.dylib /opt/homebrew/lib/libabsl_statusor.2407.0.0.dylib /opt/homebrew/lib/libabsl_status.2407.0.0.dylib /opt/homebrew/lib/libabsl_bad_any_cast_impl.2407.0.0.dylib /opt/homebrew/lib/libprotobuf.dylib /opt/homebrew/lib/libre2.11.0.0.dylib /opt/homebrew/lib/libabsl_log_internal_check_op.2407.0.0.dylib /opt/homebrew/lioto.2407.0.0.dylib /opt/homebrew/lib/libabsl_log_internal_nullguard.2407.0.0.dylib /opt/homebrew/lib/libabsl_log_internal_log_sink_set.2407.0.0.dylib /opt/homebrew/lib/libabsl_log_globals.2407.0.0.dylib /opt/homebrew/lib/libabsl_lld: warning: ignoring duplicate libraries: '-ldl', '../third-party/abc/libabc.a', 'OpenROAD-flow-scripts/tools/OpenROAD/src/sta/app/libOpenSTA.a', '/opt/homebrew/lib/libboost_serialization-mt.a', 'cts/src/cts.a', 'dbSta/src/dbSta.a', 'dft/dft.a', 'dpo/dpo.a', 'drt/drt.a', 'dst/dst.a', 'fin/fin.a', 'grt/grt.a', 'grt/libgrt_lib.a', 'gui/gui.a', 'ifp/src/ifp.a', 'mpl/mpl.a', 'odb/src/db/libdb.a', 'odb/src/zutil/libzutil.a', 'pad/pad.a', 'pdn/src/pdn.a', 'ppl/ppl.a', 'psm/src/psm.a', 'rmp/src/rmp.a', 'rsz/src/librsz_lib.a', 'rsz/src/rsz.a', 'stt/stt.a', 'tap/src/tap.a', 'utl/utl.a'
Undefined symbols for architecture arm64:
  "_Tcl_Eval", referenced from:
      ord::Design::evalTclString(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&) in Design.cc.o
      ord::OpenRoad::init(Tcl_Interp*) in OpenRoad.cc.o
      ord::OpenRoad::init(Tcl_Interp*) in OpenRoad.cc.o
      ord::OpenRoad::init(Tcl_Interp*) in OpenRoad.cc.o
      _Ifp_Init in ifp.a[2](InitFloorplanTCL_wrap.cxx.o)
      _Pad_Init in pad.a[2](padTCL_wrap.cxx.o)
      _Openroad_swig_Init in openroad_swig.a[2](OpenRoadTCL_wrap.cxx.o)
      ...
  "_Tcl_GetStringResult", referenced from:
      ord::Design::evalTclString(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&) in Design.cc.o
      SWIG_Tcl_MethodCommand(void*, Tcl_Interp*, int, Tcl_Obj* const*) in ifp.a[2](InitFloorplanTCL_wrap.cxx.o)
      SWIG_Tcl_MethodCommand(void*, Tcl_Interp*, int, Tcl_Obj* const*) in pad.a[2](padTCL_wrap.cxx.o)
      SWIG_Tcl_MethodCommand(void*, Tcl_Interp*, int, Tcl_Obj* const*) in openroad_swig.a[2](OpenRoadTCL_wrap.cxx.o)
      SWIG_Tcl_MethodCommand(void*, Tcl_Interp*, int, Tcl_Obj* const*) in rsz.a[2](ResizerTCL_wrap.cxx.o)
      SWIG_Tcl_MethodCommand(void*, Tcl_Interp*, int, Tcl_Obj* const*) in ppl.a[2](IOPlacerTCL_wrap.cxx.o)
      SWIG_Tcl_MethodCommand(void*, Tcl_Interp*, int, Tcl_Obj* const*) in stt.a[2](SteinerTreeBuilderTCL_wrap.cxx.o)
      ...
  "_Tcl_GetVar", referenced from:
      _Ifp_Init in ifp.a[2](InitFloorplanTCL_wrap.cxx.o)
      _Pad_Init in pad.a[2](padTCL_wrap.cxx.o)
      _Openroad_swig_Init in openroad_swig.a[2](OpenRoadTCL_wrap.cxx.o)
      _Gpl_Init in gpl.a[2](replaceTCL_wrap.cxx.o)
      _Dpl_Init in dpl.a[2](OpendpTCL_wrap.cxx.o)
      _Dpo_Init in dpo.a[2](OptdpTCL_wrap.cxx.o)
      _Fin_Init in fin.a[2](finaleTCL_wrap.cxx.o)
      ...
  "_Tcl_Main", referenced from:
      _main in Main.cc.o
  "_Tcl_NewBooleanObj", referenced from:
      _wrap_openroad_gpu_compiled(void*, Tcl_Interp*, int, Tcl_Obj* const*) in openroad_swig.a[2](OpenRoadTCL_wrap.cxx.o)
      _wrap_openroad_python_compiled(void*, Tcl_Interp*, int, Tcl_Obj* const*) in openroad_swig.a[2](OpenRoadTCL_wrap.cxx.o)
      _wrap_openroad_gui_compiled(void*, Tcl_Interp*, int, Tcl_Obj* const*) in openroad_swig.a[2](OpenRoadTCL_wrap.cxx.o)
      _wrap_openroad_charts_compiled(void*, Tcl_Interp*, int, Tcl_Obj* const*) in openroad_swig.a[2](OpenRoadTCL_wrap.cxx.o)
      _wrap_db_has_tech(void*, Tcl_Interp*, int, Tcl_Obj* const*) in openroad_swig.a[2](OpenRoadTCL_wrap.cxx.o)
      _wrap_db_has_rows(void*, Tcl_Interp*, int, Tcl_Obj* const*) in openroad_swig.a[2](OpenRoadTCL_wrap.cxx.o)
      _wrap_db_layer_has_tracks(void*, Tcl_Interp*, int, Tcl_Obj* const*) in openroad_swig.a[2](OpenRoadTCL_wrap.cxx.o)
      ...
  "_Tcl_NewIntObj", referenced from:
      _wrap_microns_to_dbu(void*, Tcl_Interp*, int, Tcl_Obj* const*) in openroad_swig.a[2](OpenRoadTCL_wrap.cxx.o)
      _wrap_thread_count(void*, Tcl_Interp*, int, Tcl_Obj* const*) in openroad_swig.a[2](OpenRoadTCL_wrap.cxx.o)
      _wrap_repair_design_buffer_count(void*, Tcl_Interp*, int, Tcl_Obj* const*) in rsz.a[2](ResizerTCL_wrap.cxx.o)
      _wrap_hold_buffer_count(void*, Tcl_Interp*, int, Tcl_Obj* const*) in rsz.a[2](ResizerTCL_wrap.cxx.o)
      _wrap_compute_io_nets_hpwl(void*, Tcl_Interp*, int, Tcl_Obj* const*) in ppl.a[2](IOPlacerTCL_wrap.cxx.o)
      _wrap_xy_size(void*, Tcl_Interp*, int, Tcl_Obj* const*) in stt.a[2](SteinerTreeBuilderTCL_wrap.cxx.o)
      _wrap_xy_pop(void*, Tcl_Interp*, int, Tcl_Obj* const*) in stt.a[2](SteinerTreeBuilderTCL_wrap.cxx.o)
      ...
  "_Tcl_NewLongObj", referenced from:
      _wrap_xy_size(void*, Tcl_Interp*, int, Tcl_Obj* const*) in stt.a[2](SteinerTreeBuilderTCL_wrap.cxx.o)
      _wrap_endpoint_count(void*, Tcl_Interp*, int, Tcl_Obj* const*) in dbSta.a[2](dbStaTCL_wrap.cxx.o)
      _wrap_max_slew_violation_count(void*, Tcl_Interp*, int, Tcl_Obj* const*) in dbSta.a[2](dbStaTCL_wrap.cxx.o)
      _wrap_max_fanout_violation_count(void*, Tcl_Interp*, int, Tcl_Obj* const*) in dbSta.a[2](dbStaTCL_wrap.cxx.o)
      _wrap_max_capacitance_violation_count(void*, Tcl_Interp*, int, Tcl_Obj* const*) in dbSta.a[2](dbStaTCL_wrap.cxx.o)
      _wrap_cputime(void*, Tcl_Interp*, int, Tcl_Obj* const*) in dbSta.a[2](dbStaTCL_wrap.cxx.o)
      _wrap_memory_usage(void*, Tcl_Interp*, int, Tcl_Obj* const*) in dbSta.a[2](dbStaTCL_wrap.cxx.o)
      ...
  "_Tcl_SetIntObj", referenced from:
      _wrap_dbWireDecoder_getColor(void*, Tcl_Interp*, int, Tcl_Obj* const*) in odbtcl.a[2](odbTCL_wrap.cxx.o)
  "_Tcl_SetResult", referenced from:
      _wrap_init_floorplan_core(void*, Tcl_Interp*, int, Tcl_Obj* const*) in ifp.a[2](InitFloorplanTCL_wrap.cxx.o)
      _wrap_init_floorplan_core(void*, Tcl_Interp*, int, Tcl_Obj* const*) in ifp.a[2](InitFloorplanTCL_wrap.cxx.o)
      _wrap_init_floorplan_util(void*, Tcl_Interp*, int, Tcl_Obj* const*) in ifp.a[2](InitFloorplanTCL_wrap.cxx.o)
      _wrap_init_floorplan_util(void*, Tcl_Interp*, int, Tcl_Obj* const*) in ifp.a[2](InitFloorplanTCL_wrap.cxx.o)
      _wrap_make_layer_tracks(void*, Tcl_Interp*, int, Tcl_Obj* const*) in ifp.a[2](InitFloorplanTCL_wrap.cxx.o)
      SWIG_Tcl_GetArgs(Tcl_Interp*, int, Tcl_Obj* const*, char const*, ...) in ifp.a[2](InitFloorplanTCL_wrap.cxx.o)
      SWIG_Tcl_MethodCommand(void*, Tcl_Interp*, int, Tcl_Obj* const*) in ifp.a[2](InitFloorplanTCL_wrap.cxx.o)
      SWIG_Tcl_MethodCommand(void*, Tcl_Interp*, int, Tcl_Obj* const*) in ifp.a[2](InitFloorplanTCL_wrap.cxx.o)
      SWIG_Tcl_MethodCommand(void*, Tcl_Interp*, int, Tcl_Obj* const*) in ifp.a[2](InitFloorplanTCL_wrap.cxx.o)
      ...
  "_Tcl_SetVar", referenced from:
      _Ifp_Init in ifp.a[2](InitFloorplanTCL_wrap.cxx.o)
      _Pad_Init in pad.a[2](padTCL_wrap.cxx.o)
      _Openroad_swig_Init in openroad_swig.a[2](OpenRoadTCL_wrap.cxx.o)
      _Gpl_Init in gpl.a[2](replaceTCL_wrap.cxx.o)
      _Dpl_Init in dpl.a[2](OpendpTCL_wrap.cxx.o)
      _Dpo_Init in dpo.a[2](OptdpTCL_wrap.cxx.o)
      _Fin_Init in fin.a[2](finaleTCL_wrap.cxx.o)
      ...
  "_Tcl_TraceVar", referenced from:
      _Dbsta_Init in dbSta.a[2](dbStaTCL_wrap.cxx.o)
      _Dbsta_Init in dbSta.a[2](dbStaTCL_wrap.cxx.o)
      _Dbsta_Init in dbSta.a[2](dbStaTCL_wrap.cxx.o)
      _Dbsta_Init in dbSta.a[2](dbStaTCL_wrap.cxx.o)
ld: symbol(s) not found for architecture arm64
clang++: error: linker command failed with exit code 1 (use -v to see invocation)
og_internal_globals.2407.0.0.dylib /opt/homebrew/lib/libabsl_log_sink.2407.0.0.dylib /opt/homebrew/lib/libabsl_log_entry.2407.0.0.dylib /opt/homebrew/lib/libabsl_strerror.2407.0.0.dylib /opt/homebrew/lib/libabsl_vlog_config_internal.2407.0.0.dylib /opt/homebrew/lib/libabsl_log_internal_fnmatch.2407.0.0.dylib /opt/homebrew/lib/libabsl_flags_reflection.2407.0.0.dylib /opt/homebrew/lib/libabsl_flags_private_handle_accessor.2407.0.0.dylib /opt/homebrew/lib/libabsl_flags_internal.2407.0.0.dylib /opt/homebrew/lib/libabsl_flags_commandlineflag.2407.0.0.dylib /opt/homebrew/lib/libabsl_flags_marshalling.2407.0.0.dylib /opt/homebrew/lib/libabsl_flags_config.2407.0.0.dylib /opt/homebrew/lib/libabsl_flags_program_name.2407.0.0.dylib /opt/homebrew/lib/libabsl_flags_commandlineflag_internal.2407.0.0.dylib /opt/homebrew/lib/libabsl_raw_hash_set.2407.0.0.dylib /opt/homebrew/lib/libabsl_hashtablez_sampler.2407.0.0.dylib /opt/homebrew/lib/libabsl_cord.2407.0.0.dylib /opt/homebrew/lib/libabsl_cordz_info.2407.0.0.dylib /opt/homebrew/lib/libabsl_cord_internal.2407.0.0.dylib /opt/homebrew/lib/libabsl_cordz_functions.2407.0.0.dylib /opt/homebrew/lib/libabsl_exponential_biased.2407.0.0.dylib /opt/homebrew/lib/libabsl_cordz_handle.2407.0.0.dylib /opt/homebrew/lib/libabsl_synchronization.2407.0.0.dylib /opt/homebrew/lib/libabsl_stacktrace.2407.0.0.dylib /opt/homebrew/lib/libabsl_symbolize.2407.0.0.dylib /opt/homebrew/lib/libabsl_debugging_internal.2407.0.0.dylib /opt/homebrew/lib/libabsl_demangle_internal.2407.0.0.dylib /opt/homebrew/lib/libabsl_demangle_rust.2407.0.0.dylib /opt/homebrew/lib/libabsl_decode_rust_punycode.2407.0.0.dylib /opt/homebrew/lib/libabsl_utf8_for_code_point.2407.0.0.dylib /opt/homebrew/lib/libabsl_graphcycles_internal.2407.0.0.dylib /opt/homebrew/lib/libabsl_kernel_timeout_internal.2407.0.0.dylib /opt/homebrew/lib/libabsl_time.2407.0.0.dylib /opt/homebrew/lib/libabsl_civil_time.2407.0.0.dylib /opt/homebrew/lib/libabsl_time_zone.2407.0.0.dylib -Wl,-framework,CoreFoundation /opt/homebrew/lib/libabsl_malloc_internal.2407.0.0.dylib /opt/homebrew/lib/libabsl_crc_cord_state.2407.0.0.dylib /opt/homebrew/lib/libabsl_crc32c.2407.0.0.dylib /opt/homebrew/lib/libabsl_str_format_internal.2407.0.0.dylib /opt/homebrew/lib/libabsl_crc_internal.2407.0.0.dylib /opt/homebrew/lib/libabsl_crc_cpu_detect.2407.0.0.dylib /opt/homebrew/lib/libabsl_hash.2407.0.0.dylib /opt/homebrew/lib/libabsl_bad_optional_access.2407.0.0.dylib /opt/homebrew/lib/libabsl_city.2407.0.0.dylib /opt/homebrew/lib/libabsl_bad_variant_access.2407.0.0.dylib /opt/homebrew/lib/libabsl_low_level_hash.2407.0.0.dylib /opt/homebrew/lib/libabsl_strings.2407.0.0.dylib /opt/homebrew/lib/libabsl_int128.2407.0.0.dylib /opt/homebrew/lib/libabsl_strings_internal.2407.0.0.dylib /opt/homebrew/lib/libabsl_string_view.2407.0.0.dylib /opt/homebrew/lib/libabsl_base.2407.0.0.dylib /opt/homebrew/lib/libabsl_spinlock_wait.2407.0.0.dylib /opt/homebrew/lib/libabsl_throw_delegate.2407.0.0.dylib /opt/homebrew/lib/libabsl_raw_logging_internal.2407.0.0.dylib /opt/homebrew/lib/libabsl_log_severity.2407.0.0.dylib /opt/homebrew/lib/libscip.9.2.0.0.dylib /opt/homebrew/opt/python@3.13/Frameworks/Python.framework/Versions/3.13/lib/libpython3.13.dylib
make[2]: *** [src/openroad] Error 1
make[1]: *** [src/CMakeFiles/openroad.dir/all] Error 2
make: *** [all] Error 2

Screenshots

No response

Additional Context

No response

gadfort commented 1 week ago

@stefanottili it doesn't looks like 9.0 would be supported at the moment, we would have to update SWIG as well (atleast to 4.2.1: https://www.swig.org/)

maliberty commented 1 week ago

Can brew support installing a selected version? If so that is the easiest solution. I have no plan to deal with a tcl + swig upgrade.

stefanottili commented 1 week ago

yes, homebrew can have multiple tcl-tk versions installed. E.g. git-gui still uses tcl-tk 8.6. On homebrew it's installed as /opt/homebrew/top/tcl-tk@8@ -> ../Cellar/tcl-tk@8/8.6.15

brew uninstall tcl-tk uninstalls tcl-tk 9.0, but it seems that yosys doesn't pick up tcl-tk@8

./build_openroad.sh --local fails with

[INFO FLW-0017] Compiling Yosys.
$BREW_PREFIX is [/opt/homebrew/opt]
[ 16%] Building frontends/verilog/verilog_lexer.o
[ 26%] Building yosys-filterlib
[ 26%] Building share/gatemate/lut_tree_cells.genlib
ld: warning: ignoring duplicate libraries: '-lc++'
ld: library 'tcl8.6' not found
ln -s /opt/homebrew/opt/tcl-tk@8 /opt/homebew/opt/tclk-tk

gets yosys and openroad to build, but that's a hacky workaround

1) yosys needs to be taught about tcl-tk@8 on homebrew. It might be able to use env-vars, have not checked yet, does anybody know ? 2) it seems that adding /opt/homebrew/opt/tcl-tk@8 to FindTCL.tcl might work for openroad without having to set TCL_LIB_PATHS

 33 # tcl lib path guesses.
 34 if (NOT TCL_LIB_PATHS)
 35   if (CMAKE_SYSTEM_NAME STREQUAL "Darwin")
 36     set(TCL_LIB_PATHS /usr/local/lib
 37       /opt/homebrew/opt/tcl-tk/lib
 38       /opt/homebrew/opt/tcl-tk@8/lib
 39       /usr/local/opt/tcl-tk/lib
 40       )