<!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>