[PATCH] D112753: [llvm] [Support] Add CURL HTTP Client.
Dimitry Andric via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Wed Dec 8 13:39:05 PST 2021
dim added a comment.
In D112753#3180838 <https://reviews.llvm.org/D112753#3180838>, @noajshu wrote:
> Thanks @dim, I have a patch that should fix this D115189 <https://reviews.llvm.org/D115189>
> Would that solve the breakage on freebsd?
No, as I went back in history to find this commit that introduced the feature. I'm not a cmake expert, but I think the problem lies in the way features are tested in `llvm/cmake/config-ix.cmake`, e.g.:
if(CURL_FOUND)
# Check if curl we found is usable; for example, we may have found a 32-bit
# library on a 64-bit system which would result in a link-time failure.
cmake_push_check_state()
list(APPEND CMAKE_REQUIRED_INCLUDES ${CURL_INCLUDE_DIRS})
list(APPEND CMAKE_REQUIRED_LIBRARIES ${CURL_LIBRARY})
check_symbol_exists(curl_easy_init curl/curl.h HAVE_CURL)
cmake_pop_check_state()
if(LLVM_ENABLE_CURL STREQUAL FORCE_ON AND NOT HAVE_CURL)
message(FATAL_ERROR "Failed to configure curl")
endif()
endif()
As far as I understand it, the `cmake_pop_check_state()` after the checks *restores* the `CMAKE_REQUIRED_INCLUDES` to its previous value, and therefore removes the appended `CURL_INCLUDE_DIRS` value.
Strangely, most of the external library checks go this way, e.g. for libxml just above:
if(LibXml2_FOUND)
# Check if libxml2 we found is usable; for example, we may have found a 32-bit
# library on a 64-bit system which would result in a link-time failure.
cmake_push_check_state()
list(APPEND CMAKE_REQUIRED_INCLUDES ${LIBXML2_INCLUDE_DIRS})
list(APPEND CMAKE_REQUIRED_LIBRARIES ${LIBXML2_LIBRARIES})
list(APPEND CMAKE_REQUIRED_DEFINITIONS ${LIBXML2_DEFINITIONS})
check_symbol_exists(xmlReadMemory libxml/xmlreader.h HAVE_LIBXML2)
cmake_pop_check_state()
if(LLVM_ENABLE_LIBXML2 STREQUAL FORCE_ON AND NOT HAVE_LIBXML2)
message(FATAL_ERROR "Failed to configure libxml2")
endif()
endif()
I simply don't understand how this can work, if the detected include dirs are not in a system-default location, such as `/usr/include`...
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D112753/new/
https://reviews.llvm.org/D112753
More information about the llvm-commits
mailing list