On Sat, Apr 15, 2023 at 6:47 AM Stuart Henderson <s...@spacehopper.org> wrote: > > > - if llvm is installed, the wrong ar is used by py-awscrt > > -- CMAKE_AR found: /usr/local/bin/llvm-ar > > This is because it's not using standard ports build arguments for > cmake as would be used by the cmake module (there are a bunch of > CONFIGURE_ARGS lines to override various detected paths and other > settings). > > The cc command lines are hidden in the output but I bet they are not > using proper CFLAGS etc too. > > Not sure the best way to deal with this, but ideally it would use > things from cmake.port.mk directly somehow rather than having to > replicate and sync when things change..
I tried a few things, but haven't been able to find the ideal solution for this. What I've done for now is extract the relevant CONFIGURE_ARGS from cmake.port.mk and set the toolchain paths in py-awscrt's top level CMakeLists.txt. With this patch, I can build the port with or without llvm installed, and CMAKE_AR is set to /usr/bin/ar in both cases. This also holds true if I 'make configure' with llvm installed, uninstall llvm, and then 'make build'. Thoughts? Index: crt/CMakeLists.txt --- crt/CMakeLists.txt.orig +++ crt/CMakeLists.txt @@ -26,6 +26,22 @@ set(CMAKE_POSITION_INDEPENDENT_CODE ON CACHE BOOL "") set(BUILD_TESTING OFF CACHE BOOL "") include(CTest) +# Force use of toolchain in base. Otherwise, if the devel/llvm port is +# installed, cmake will prefer toolchain binaries in /usr/local. +# This is done here instead of relying on cmake.port.mk because the +# devel/py-awscrt port is built with py-setuptools, not make(1), which +# makes it a case that cmake.port.mk isn't suited for. +foreach(_LANG ASM C CXX) + set(CMAKE_${_LANG}_COMPILER_AR "/usr/bin/ar" CACHE FILEPATH "" FORCE) + set(CMAKE_${_LANG}_COMPILER_RANLIB "/usr/bin/ranlib" CACHE FILEPATH "" FORCE) +endforeach() +set(CMAKE_ADDR2LINE "/usr/bin/addr2line" CACHE FILEPATH "" FORCE) +set(CMAKE_AR "/usr/bin/ar" CACHE FILEPATH "" FORCE) +set(CMAKE_NM "/usr/bin/nm" CACHE FILEPATH "" FORCE) +set(CMAKE_RANLIB "/usr/bin/ranlib" CACHE FILEPATH "" FORCE) +set(CMAKE_READELF "/usr/bin/readelf" CACHE FILEPATH "" FORCE) +set(CMAKE_STRIP "/usr/bin/strip" CACHE FILEPATH "" FORCE) + # On Unix we use S2N for TLS and AWS-LC crypto. # (On Windows and Apple we use the default OS libraries) if(UNIX AND NOT APPLE) .joel
awscliv2-73-20230422.tar.gz
Description: GNU Zip compressed data