diff --git a/CMakeLists.txt b/CMakeLists.txt index 5c54eae41..6bd331125 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -116,6 +116,11 @@ target_link_libraries(cquery PRIVATE Threads::Threads) if(${CMAKE_SYSTEM_NAME} STREQUAL Linux) # loguru calls dladdr target_link_libraries(cquery PRIVATE ${CMAKE_DL_LIBS}) + string(FIND ${CMAKE_HOST_SYSTEM_PROCESSOR} "armv7" result) + + if(${result} GREATER -1) + target_link_libraries(cquery PRIVATE atomic) + endif() elseif(${CMAKE_SYSTEM_NAME} STREQUAL FreeBSD) # loguru::stacktrace_as_stdstring calls backtrace_symbols diff --git a/clang_archive_hashes/clang+llvm-7.0.0-aarch64-linux-gnu.tar.xz.SHA256 b/clang_archive_hashes/clang+llvm-7.0.0-aarch64-linux-gnu.tar.xz.SHA256 new file mode 100644 index 000000000..4a62842e1 --- /dev/null +++ b/clang_archive_hashes/clang+llvm-7.0.0-aarch64-linux-gnu.tar.xz.SHA256 @@ -0,0 +1 @@ +bd962b32818f8b07ae60e708f736eca5cd856f0d34ed9d1038cc9e0991390217 \ No newline at end of file diff --git a/clang_archive_hashes/clang+llvm-7.0.0-armv7a-linux-gnueabihf.tar.xz.SHA256 b/clang_archive_hashes/clang+llvm-7.0.0-armv7a-linux-gnueabihf.tar.xz.SHA256 new file mode 100644 index 000000000..d2240d8df --- /dev/null +++ b/clang_archive_hashes/clang+llvm-7.0.0-armv7a-linux-gnueabihf.tar.xz.SHA256 @@ -0,0 +1 @@ +2d831636d54ff7a3225a3a52f05b8723110e71fa982de1fa55c9fed307ec8aca \ No newline at end of file diff --git a/cmake/DownloadAndExtractClang.cmake b/cmake/DownloadAndExtractClang.cmake index e504a6e97..177c38601 100644 --- a/cmake/DownloadAndExtractClang.cmake +++ b/cmake/DownloadAndExtractClang.cmake @@ -27,6 +27,12 @@ if(${CMAKE_SYSTEM_NAME} STREQUAL Linux) set(CLANG_ARCHIVE_NAME clang+llvm-${CLANG_VERSION}-x86_64-linux-gnu-ubuntu-16.04) endif() + message(STATUS "Host system processor: ${CMAKE_HOST_SYSTEM_PROCESSOR}") + if (${CMAKE_HOST_SYSTEM_PROCESSOR} STREQUAL "aarch64") + set(CLANG_ARCHIVE_NAME clang+llvm-${CLANG_VERSION}-aarch64-linux-gnu) + elseif (${CMAKE_HOST_SYSTEM_PROCESSOR} STREQUAL "armv7l") + set(CLANG_ARCHIVE_NAME clang+llvm-${CLANG_VERSION}-armv7a-linux-gnueabihf) + endif() endif() elseif(${CMAKE_SYSTEM_NAME} STREQUAL Darwin) @@ -73,15 +79,19 @@ file an issue to get it added.") endif() # Download Clang archive -message(STATUS "Downloading Clang ${CLANG_VERSION} (${CLANG_ARCHIVE_URL}) ...") -file(DOWNLOAD ${CLANG_ARCHIVE_URL} ${CLANG_ARCHIVE_FILE} - STATUS CLANG_ARCHIVE_DOWNLOAD_RESULT) - -# Abort if download failed -list(GET ${CLANG_ARCHIVE_DOWNLOAD_RESULT} 0 ERROR_CODE) -if(${ERROR_CODE}) - list(GET ${CLANG_ARCHIVE_DOWNLOAD_RESULT} 1 ERROR_STRING) - message(FATAL_ERROR ${ERROR_STRING}) +if (EXISTS ${CLANG_ARCHIVE_FILE}) + message (STATUS "file exists, skipping download: ${CLANG_ARCHIVE_FILE}") +else() + message(STATUS "Downloading Clang ${CLANG_VERSION} (${CLANG_ARCHIVE_URL}) ...") + file(DOWNLOAD ${CLANG_ARCHIVE_URL} ${CLANG_ARCHIVE_FILE} + STATUS CLANG_ARCHIVE_DOWNLOAD_RESULT) + + # Abort if download failed + list(GET ${CLANG_ARCHIVE_DOWNLOAD_RESULT} 0 ERROR_CODE) + if(${ERROR_CODE}) + list(GET ${CLANG_ARCHIVE_DOWNLOAD_RESULT} 1 ERROR_STRING) + message(FATAL_ERROR ${ERROR_STRING}) + endif() endif() # Retrieve expected hash from file and strip newline diff --git a/cquery.sh b/cquery.sh new file mode 100755 index 000000000..821cc155d --- /dev/null +++ b/cquery.sh @@ -0,0 +1,9 @@ +#!/bin/bash + +# with clang90 +# cmake .. -DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX=debug -DCLANG_ROOT=$HOME/toolchains/clang90 -DSYSTEM_CLANG=ON +# export LD_LIBRARY_PATH=$HOME/toolchains/clang90/lib:$LD_LIBRARY_PATH +# $HOME/SRC_jetson/cquery-kuba/build_clang90/debug/bin/cquery $@ + +$HOME/SRC_jetson/cquery-kuba/build/cquery $@ +