<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<p>Hello, Sergey<br>
</p>
<div class="moz-cite-prefix">On 10/31/23 16:21, Sergey Kaplun wrote:<br>
</div>
<p><br>
</p>
<p><snipped><br>
</p>
<blockquote type="cite" cite="mid:ZUD_bhh-8x_8_9Gm@root"><span
style="white-space: pre-wrap">
</span>
<blockquote type="cite">
<pre class="moz-quote-pre" wrap="">--- a/test/tarantool-tests/lj-551-bytecode-c-broken-macro/CMakeLists.txt
+++ b/test/tarantool-tests/lj-551-bytecode-c-broken-macro/CMakeLists.txt
@@ -1,5 +1,6 @@
set(LIB_NAME "bcsaved_clib<a class="moz-txt-link-rfc2396E" href="mailto:)-set(LUA_FILE${CMAKE_CURRENT_SOURCE_DIR}/${LIB_NAME}.lua)+set(LUA_FILE_ORIG${CMAKE_CURRENT_SOURCE_DIR}/bcsaved.lua)+set(LUA_FILE${CMAKE_CURRENT_BINARY_DIR}/${LIB_NAME}.lua) set(C_FILE${LIB_NAME}.c) make_lua_path(LUA_PATH@@-8,11+9,24@@make_lua_path(LUA_PATH ${PROJECT_SOURCE_DIR}/src/jit/?.lua )+add_custom_target(copy_lua+ COMMAND${CMAKE_COMMAND}-E+ copy+ ${LUA_FILE_ORIG}+ ${LUA_FILE}+ DEPENDS${LUA_FILE_ORIG}+ BYPRODUCTS${LUA_FILE}+ COMMENT">")
-set(LUA_FILE ${CMAKE_CURRENT_SOURCE_DIR}/${LIB_NAME}.lua)
+set(LUA_FILE_ORIG ${CMAKE_CURRENT_SOURCE_DIR}/bcsaved.lua)
+set(LUA_FILE ${CMAKE_CURRENT_BINARY_DIR}/${LIB_NAME}.lua)
set(C_FILE ${LIB_NAME}.c)
make_lua_path(LUA_PATH
@@ -8,11 +9,24 @@ make_lua_path(LUA_PATH
${PROJECT_SOURCE_DIR}/src/jit/?.lua
)
+add_custom_target(copy_lua
+ COMMAND ${CMAKE_COMMAND} -E
+ copy
+ ${LUA_FILE_ORIG}
+ ${LUA_FILE}
+ DEPENDS ${LUA_FILE_ORIG}
+ BYPRODUCTS ${LUA_FILE}
+ COMMENT "</a>Copying Lua module"
+ VERBATIM
+)
+
add_custom_target(export_bc
COMMAND ${CMAKE_COMMAND} -E
env
LUA_PATH=${LUA_PATH}
${LUAJIT_BINARY} -b ${LUA_FILE} ${C_FILE}
+ COMMAND ${CMAKE_COMMAND} -E
+ remove ${LUA_FILE}
DEPENDS luajit-main ${LUA_FILE}
BYPRODUCTS ${C_FILE}
COMMENT "Exporting bytecode to a C file"
</pre>
</blockquote>
<pre class="moz-quote-pre" wrap="">
The test still doesn't fail before the commit.
The reason is that the C file is compiled by C compiler, not the C++
compiler (so this macro is irrelevant).</pre>
</blockquote>
Fixed, thanks. <br>
<blockquote type="cite" cite="mid:ZUD_bhh-8x_8_9Gm@root">
<pre class="moz-quote-pre" wrap="">
I suppose that we should add a .cpp file for the test too (and add the
LINKER_LANGUAGE CXX [1] property for this target if its necessary).</pre>
</blockquote>
<p>Unfortunately, setting property with LINKER_LANGUAGE is not
enough.</p>
<p>Additionally one need setting CXX language for a project or
enable CXX in required CMakeLists.txt</p>
<p>and it is better to have .cc extension for a file too. Otherwise
CMake fails to build a file by CXX compiler.</p>
<p>I believe you will not against to backporting
e826d0c101d750fac8334d71e221c50d8dbe236c ("Add 'cc' file type for
saving bytecode.")</p>
<p>as well because commit enables saving bc to .cc file directly.</p>
<p><br>
</p>
<p>Final patch:<br>
</p>
<p>diff --git
a/test/tarantool-tests/lj-551-bytecode-c-broken-macro/CMakeLists.txt
b/test/tarantool-tests/lj-551-bytecode-c-broken-macro/CMakeLists.txt<br>
index 45857386..1baf6ec8 100644<br>
---
a/test/tarantool-tests/lj-551-bytecode-c-broken-macro/CMakeLists.txt<br>
+++
b/test/tarantool-tests/lj-551-bytecode-c-broken-macro/CMakeLists.txt<br>
@@ -1,7 +1,9 @@<br>
+enable_language(CXX)<br>
+<br>
set(LIB_NAME "bcsaved_clib")<br>
set(LUA_FILE_ORIG ${CMAKE_CURRENT_SOURCE_DIR}/bcsaved.lua)<br>
set(LUA_FILE ${CMAKE_CURRENT_BINARY_DIR}/${LIB_NAME}.lua)<br>
-set(C_FILE ${LIB_NAME}.c)<br>
+set(CXX_FILE ${LIB_NAME}.cc)<br>
<br>
make_lua_path(LUA_PATH<br>
PATHS<br>
@@ -24,14 +26,14 @@ add_custom_target(export_bc<br>
COMMAND ${CMAKE_COMMAND} -E<br>
env<br>
LUA_PATH=${LUA_PATH}<br>
- ${LUAJIT_BINARY} -b ${LUA_FILE} ${C_FILE}<br>
+ ${LUAJIT_BINARY} -b ${LUA_FILE} ${CXX_FILE}<br>
COMMAND ${CMAKE_COMMAND} -E<br>
remove ${LUA_FILE}<br>
DEPENDS luajit-main ${LUA_FILE}<br>
- BYPRODUCTS ${C_FILE}<br>
+ BYPRODUCTS ${CXX_FILE}<br>
</p>
<p> - COMMENT "Exporting bytecode to a C file"<br>
+ COMMENT "Exporting bytecode to a CXX file"<br>
VERBATIM<br>
)<br>
<br>
-BuildTestCLib(${LIB_NAME} ${C_FILE})<br>
+BuildTestCLib(${LIB_NAME} ${CXX_FILE})<br>
add_dependencies(${LIB_NAME} export_bc)<br>
</p>
<blockquote type="cite" cite="mid:ZUD_bhh-8x_8_9Gm@root">
<pre class="moz-quote-pre" wrap="">
[1]: <a class="moz-txt-link-freetext" href="https://cmake.org/cmake/help/latest/prop_tgt/LINKER_LANGUAGE.html#linker-language">https://cmake.org/cmake/help/latest/prop_tgt/LINKER_LANGUAGE.html#linker-language</a>
</pre>
</blockquote>
</body>
</html>