From: Sergey Bronnikov via Tarantool-patches <tarantool-patches@dev.tarantool.org> To: tarantool-patches@dev.tarantool.org, Sergey Kaplun <skaplun@tarantool.org>, Maxim Kokryashkin <m.kokryashkin@tarantool.org> Subject: [Tarantool-patches] [PATCH luajit 2/6] test: refactor CMake macro LibRealPath Date: Tue, 26 Mar 2024 11:33:28 +0300 [thread overview] Message-ID: <943fd56f6ea4c207074f9f978f8c6c458dbe1bb0.1711441864.git.sergeyb@tarantool.org> (raw) In-Reply-To: <cover.1711441864.git.sergeyb@tarantool.org> From: Sergey Bronnikov <sergeyb@tarantool.org> The patch refactors the CMake macro LibRealPath: - Replace CMAKE_CXX_COMPILER with CMAKE_C_COMPILER because LuaJIT doesn't require the CXX compiler, and thus it can be unavailable on a build system. - Add a check for a code returned by a command with the compiler. - Add a check for a value returned by the compiler. A value equal to a passed one means that the library was not found in the system. - Unset local variables to avoid namespace pollution. Needed for tarantool/tarantool#9656 --- test/LuaJIT-tests/CMakeLists.txt | 27 +++++++++++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-) diff --git a/test/LuaJIT-tests/CMakeLists.txt b/test/LuaJIT-tests/CMakeLists.txt index a0fb5440..badec91d 100644 --- a/test/LuaJIT-tests/CMakeLists.txt +++ b/test/LuaJIT-tests/CMakeLists.txt @@ -33,18 +33,41 @@ if(LUAJIT_USE_ASAN) # https://github.com/google/sanitizers/issues/934. macro(LibRealPath output lib) execute_process( - COMMAND ${CMAKE_CXX_COMPILER} -print-file-name=${lib} + # CMAKE_C_COMPILER is used because it has the same behaviour + # as CMAKE_CXX_COMPILER, but CMAKE_CXX_COMPILER is not + # required for building LuaJIT and can be missed in GH + # Actions. + COMMAND ${CMAKE_C_COMPILER} -print-file-name=${lib} OUTPUT_VARIABLE LIB_LINK OUTPUT_STRIP_TRAILING_WHITESPACE + RESULT_VARIABLE RES ) + + if(NOT RES EQUAL 0) + message(FATAL_ERROR + "Executing '${CMAKE_C_COMPILER} -print-file-name=${lib}' has failed" + ) + endif() + + # GCC and Clang return a passed filename when a library is + # not found. + if(LIB_LINK STREQUAL ${lib}) + message(FATAL_ERROR "Library '${lib}' is not found") + endif() + # Fortunately, we are not interested in macOS here, so we can - # use realpath. + # use realpath. Beware, `realpath` always returns an exit code + # equal to 0, so we cannot check if it fails. execute_process( COMMAND realpath ${LIB_LINK} OUTPUT_VARIABLE ${output} OUTPUT_STRIP_TRAILING_WHITESPACE ) + + unset(LIB_LINK) + unset(RES) endmacro() + LibRealPath(LIB_STDCPP libstdc++.so) # XXX: GCC requires both. Clang requires only libstdc++. if(CMAKE_C_COMPILER_ID STREQUAL "GNU") -- 2.34.1
next prev parent reply other threads:[~2024-03-26 8:35 UTC|newest] Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top 2024-03-26 8:33 [Tarantool-patches] [PATCH luajit 0/6][v5] cmake: replace prove with CTest Sergey Bronnikov via Tarantool-patches 2024-03-26 8:33 ` [Tarantool-patches] [PATCH luajit 1/6] ci: execute LuaJIT tests with GCC 10 and ASAN Sergey Bronnikov via Tarantool-patches 2024-03-26 9:51 ` Sergey Kaplun via Tarantool-patches 2024-03-26 8:33 ` Sergey Bronnikov via Tarantool-patches [this message] 2024-03-26 9:57 ` [Tarantool-patches] [PATCH luajit 2/6] test: refactor CMake macro LibRealPath Sergey Kaplun via Tarantool-patches 2024-03-26 8:33 ` [Tarantool-patches] [PATCH luajit 3/6] test: move LibRealPath to the separate module Sergey Bronnikov via Tarantool-patches 2024-03-26 10:01 ` Sergey Kaplun via Tarantool-patches 2024-03-26 8:33 ` [Tarantool-patches] [PATCH luajit 4/6] test: more cautious usage of LD_PRELOAD for ASan Sergey Bronnikov via Tarantool-patches 2024-03-26 10:04 ` Sergey Kaplun via Tarantool-patches 2024-03-26 8:33 ` [Tarantool-patches] [PATCH luajit 5/6] test: fix lj-802-panic-at-mcode-protfail GCC+ASan Sergey Bronnikov via Tarantool-patches 2024-03-26 10:08 ` Sergey Kaplun via Tarantool-patches 2024-03-26 15:22 ` Sergey Bronnikov via Tarantool-patches 2024-03-26 8:33 ` [Tarantool-patches] [PATCH luajit 6/6] cmake: replace prove with CTest Sergey Bronnikov via Tarantool-patches 2024-03-26 11:03 ` Sergey Kaplun via Tarantool-patches 2024-04-01 14:28 ` Sergey Bronnikov via Tarantool-patches 2024-04-01 18:46 ` Sergey Kaplun via Tarantool-patches 2024-04-11 16:47 ` [Tarantool-patches] [PATCH luajit 0/6][v5] " Sergey Kaplun via Tarantool-patches
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=943fd56f6ea4c207074f9f978f8c6c458dbe1bb0.1711441864.git.sergeyb@tarantool.org \ --to=tarantool-patches@dev.tarantool.org \ --cc=estetus@gmail.com \ --cc=m.kokryashkin@tarantool.org \ --cc=skaplun@tarantool.org \ --subject='Re: [Tarantool-patches] [PATCH luajit 2/6] test: refactor CMake macro LibRealPath' \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox