
index 307f78af9f6..95662ab7b15 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -537,7 +537,7 @@ ADD_SUBDIRECTORY(support-files)
 ADD_SUBDIRECTORY(extra/aws_sdk)
 
 IF(NOT CMAKE_CROSSCOMPILING OR DEFINED CMAKE_CROSSCOMPILING_EMULATOR)
-  SET(EXPORTED comp_err comp_sql factorial uca-dump)
+  SET(EXPORTED comp_err comp_sql factorial uca-dump generate_option_list)
   IF(NOT WITHOUT_SERVER)
     SET(EXPORTED ${EXPORTED} gen_lex_hash gen_lex_token)
   ENDIF()
diff --git a/extra/CMakeLists.txt b/extra/CMakeLists.txt
index 0a9a360a712..de1919b7581 100644
--- a/extra/CMakeLists.txt
+++ b/extra/CMakeLists.txt
@@ -47,11 +47,11 @@ ADD_CUSTOM_TARGET(GenError
                   ${CMAKE_BINARY_DIR}/include/mysqld_error.h.tmp)
 
 # this approach doesn't work with cross-compiing (runs mariadbd)
-# and doesn't work with ASAN, because LSAN complains about RocksDB (MDEV-36345).
-IF(NOT CMAKE_CROSSCOMPILING AND NOT WITH_ASAN AND TARGET mariadbd)
+IF(NOT CMAKE_CROSSCOMPILING OR DEFINED CMAKE_CROSSCOMPILING_EMULATOR)
   ADD_EXECUTABLE(generate_option_list generate_option_list.cc)
   TARGET_LINK_LIBRARIES(generate_option_list mysys pcre2-8)
   TARGET_INCLUDE_DIRECTORIES(generate_option_list PRIVATE ${PCRE_INCLUDE_DIRS})
+
   GET_PROPERTY(dynamic_plugins GLOBAL PROPERTY SERVER_DYNAMIC_PLUGINS)
   GET_PROPERTY(is_multi_config GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG)
   IF(is_multi_config)
@@ -93,6 +93,7 @@ IF(NOT CMAKE_CROSSCOMPILING AND NOT WITH_ASAN AND TARGET mariadbd)
    #COMMAND ${CMAKE_COMMAND} -E echo "Executing generate_option_list $<TARGET_FILE:mariadbd> ${my_plugin_dir} ${escaped_plugin_load} ${genhdr}"
    COMMAND generate_option_list "$<TARGET_FILE:mariadbd>" "${my_plugin_dir}" "${escaped_plugin_load}" "${genhdr}"
    COMMAND_EXPAND_LISTS
+   DEPENDS mariadbd ${dynamic_plugins}
  )
 
  ADD_CUSTOM_TARGET(gen_mariadbd_options_h
diff --git a/extra/generate_option_list.cc b/extra/generate_option_list.cc
index 7adfa2f1bbc..f1d8b2d31f5 100644
--- a/extra/generate_option_list.cc
+++ b/extra/generate_option_list.cc
@@ -86,6 +86,9 @@ std::string call_mariadbd(const char *mariadbd_path, const char *plugin_dir, con
              " --help";
 #ifdef _WIN32
   command << "\"";
+#else
+  setenv("LSAN_OPTIONS=detect_leaks", "0", 1);
+  setenv("ASAN_OPTIONS=detect_leaks", "0", 1);
 #endif
   std::cout << "Executing command: " << command.str() << '\n';
   FILE *f= my_popen(command.str().c_str(), "r");
