Skip to content

Commit b87d27d

Browse files
author
Marcin Babij
committed
Bug #31420212 CREATE_DEF_FILE.JS TAKES LONG TIME TO COMPLETE BLOCKING THE COMPILATION
Slow cscript is replaced by custom C++ program to do the same 10x faster. The .def file creation is no longer called at mysqld pre-link, but as a separate target with well defined dependencies. This allows a mysqld compilation after doing some changes e.g. in innodb without regenerating .def file at all. RB#24549
1 parent 105780f commit b87d27d

File tree

3 files changed

+455
-247
lines changed

3 files changed

+455
-247
lines changed

sql/CMakeLists.txt

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1013,9 +1013,13 @@ IF(MSVC)
10131013
"${mysqld_link_flags} /DEF:${CMAKE_CURRENT_BINARY_DIR}/mysqld.def")
10141014

10151015
SET(_PLATFORM x64)
1016-
ADD_CUSTOM_COMMAND(TARGET mysqld PRE_LINK
1017-
COMMAND echo ${_PLATFORM} && cscript ARGS //nologo ${PROJECT_SOURCE_DIR}/win/create_def_file.js
1018-
${_PLATFORM}
1016+
1017+
MYSQL_ADD_EXECUTABLE(create_def create_def.cc SKIP_INSTALL)
1018+
1019+
# Build mysql_fix_privilege_tables.h
1020+
ADD_CUSTOM_COMMAND(
1021+
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/mysqld.def
1022+
COMMAND create_def
10191023
"$<TARGET_FILE:binlog>"
10201024
"$<TARGET_FILE:binlogevents_static>"
10211025
"$<TARGET_FILE:mysys>"
@@ -1026,8 +1030,14 @@ IF(MSVC)
10261030
"$<TARGET_FILE:strings>"
10271031
"$<TARGET_FILE:vio>"
10281032
> mysqld.def
1029-
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
1033+
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
1034+
DEPENDS create_def binlog binlogevents_static mysys mytime rpl slave sql_main strings vio
1035+
)
1036+
ADD_CUSTOM_TARGET(GenMysqldDef ALL
1037+
DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/mysqld.def)
1038+
10301039
ADD_DEPENDENCIES(sql_main GenError)
1040+
ADD_DEPENDENCIES(mysqld GenMysqldDef)
10311041
ENDIF()
10321042

10331043
SET_TARGET_PROPERTIES(mysqld PROPERTIES ENABLE_EXPORTS TRUE)

0 commit comments

Comments
 (0)