mirror of
https://github.com/MariaDB/server.git
synced 2025-08-08 11:22:35 +03:00
MDEV-22454
Disable IPO (interprocedural optimization, aka /GL) on Windows on libraries, from which server.dll exports symbols - exporting symbols does not work for objects compiled with /GL.
This commit is contained in:
@@ -30,6 +30,9 @@ ENDIF()
|
|||||||
IF(POLICY CMP0075)
|
IF(POLICY CMP0075)
|
||||||
CMAKE_POLICY(SET CMP0075 NEW)
|
CMAKE_POLICY(SET CMP0075 NEW)
|
||||||
ENDIF()
|
ENDIF()
|
||||||
|
IF(POLICY CMP0069)
|
||||||
|
CMAKE_POLICY(SET CMP0069 NEW)
|
||||||
|
ENDIF()
|
||||||
|
|
||||||
MESSAGE(STATUS "Running cmake version ${CMAKE_VERSION}")
|
MESSAGE(STATUS "Running cmake version ${CMAKE_VERSION}")
|
||||||
|
|
||||||
|
@@ -330,3 +330,15 @@ FUNCTION(RESTRICT_SYMBOL_EXPORTS target)
|
|||||||
COMPILE_FLAGS "${COMPILE_FLAGS} ${VISIBILITY_HIDDEN_FLAG}")
|
COMPILE_FLAGS "${COMPILE_FLAGS} ${VISIBILITY_HIDDEN_FLAG}")
|
||||||
ENDIF()
|
ENDIF()
|
||||||
ENDFUNCTION()
|
ENDFUNCTION()
|
||||||
|
|
||||||
|
# The MSVC /GL flag, used for link-time code generation
|
||||||
|
# creates objects files with a format not readable by tools
|
||||||
|
# i.e exporting all symbols is not possible with IPO
|
||||||
|
# To workaround this, we disable INTERPROCEDURAL_OPTIMIZATION
|
||||||
|
# for some static libraries.
|
||||||
|
|
||||||
|
FUNCTION (MAYBE_DISABLE_IPO target)
|
||||||
|
IF(MSVC AND NOT CLANG_CL)
|
||||||
|
SET_TARGET_PROPERTIES(${target} PROPERTIES INTERPROCEDURAL_OPTIMIZATION OFF)
|
||||||
|
ENDIF()
|
||||||
|
ENDFUNCTION()
|
||||||
|
@@ -20,6 +20,7 @@ INCLUDE_DIRECTORIES(
|
|||||||
SET(DBUG_SOURCES dbug.c)
|
SET(DBUG_SOURCES dbug.c)
|
||||||
ADD_CONVENIENCE_LIBRARY(dbug ${DBUG_SOURCES})
|
ADD_CONVENIENCE_LIBRARY(dbug ${DBUG_SOURCES})
|
||||||
TARGET_LINK_LIBRARIES(dbug mysys)
|
TARGET_LINK_LIBRARIES(dbug mysys)
|
||||||
|
MAYBE_DISABLE_IPO(dbug)
|
||||||
|
|
||||||
ADD_EXECUTABLE(tests tests.c)
|
ADD_EXECUTABLE(tests tests.c)
|
||||||
TARGET_LINK_LIBRARIES(tests dbug)
|
TARGET_LINK_LIBRARIES(tests dbug)
|
||||||
|
@@ -71,6 +71,7 @@ IF(HAVE_MLOCK)
|
|||||||
ENDIF()
|
ENDIF()
|
||||||
|
|
||||||
ADD_CONVENIENCE_LIBRARY(mysys ${MYSYS_SOURCES})
|
ADD_CONVENIENCE_LIBRARY(mysys ${MYSYS_SOURCES})
|
||||||
|
MAYBE_DISABLE_IPO(mysys)
|
||||||
TARGET_LINK_LIBRARIES(mysys dbug strings ${ZLIB_LIBRARY}
|
TARGET_LINK_LIBRARIES(mysys dbug strings ${ZLIB_LIBRARY}
|
||||||
${LIBNSL} ${LIBM} ${LIBRT} ${LIBDL} ${LIBSOCKET} ${LIBEXECINFO} ${CRC32_LIBRARY})
|
${LIBNSL} ${LIBM} ${LIBRT} ${LIBDL} ${LIBSOCKET} ${LIBEXECINFO} ${CRC32_LIBRARY})
|
||||||
DTRACE_INSTRUMENT(mysys)
|
DTRACE_INSTRUMENT(mysys)
|
||||||
|
@@ -188,6 +188,7 @@ MYSQL_ADD_PLUGIN(sql_sequence ha_sequence.cc STORAGE_ENGINE MANDATORY STATIC_ONL
|
|||||||
RECOMPILE_FOR_EMBEDDED)
|
RECOMPILE_FOR_EMBEDDED)
|
||||||
|
|
||||||
ADD_LIBRARY(sql STATIC ${SQL_SOURCE})
|
ADD_LIBRARY(sql STATIC ${SQL_SOURCE})
|
||||||
|
MAYBE_DISABLE_IPO(sql)
|
||||||
DTRACE_INSTRUMENT(sql)
|
DTRACE_INSTRUMENT(sql)
|
||||||
TARGET_LINK_LIBRARIES(sql
|
TARGET_LINK_LIBRARIES(sql
|
||||||
mysys mysys_ssl dbug strings vio pcre2-8
|
mysys mysys_ssl dbug strings vio pcre2-8
|
||||||
@@ -234,13 +235,13 @@ IF(MSVC)
|
|||||||
IF(deps)
|
IF(deps)
|
||||||
LIST(APPEND all_deps ${deps})
|
LIST(APPEND all_deps ${deps})
|
||||||
ENDIF()
|
ENDIF()
|
||||||
ENDFOREACH()
|
ENDFOREACH()
|
||||||
LIST(REMOVE_DUPLICATES all_deps)
|
LIST(REMOVE_DUPLICATES all_deps)
|
||||||
FOREACH(lib ${libs_to_export_symbols})
|
FOREACH(lib ${libs_to_export_symbols})
|
||||||
LIST(REMOVE_ITEM all_deps ${lib})
|
LIST(REMOVE_ITEM all_deps ${lib})
|
||||||
ENDFOREACH()
|
ENDFOREACH()
|
||||||
|
|
||||||
TARGET_LINK_LIBRARIES(server
|
TARGET_LINK_LIBRARIES(server PRIVATE
|
||||||
${all_deps}
|
${all_deps}
|
||||||
sql_builtins
|
sql_builtins
|
||||||
)
|
)
|
||||||
|
@@ -32,7 +32,8 @@ ENDIF()
|
|||||||
# Avoid dependencies on perschema data defined in mysys
|
# Avoid dependencies on perschema data defined in mysys
|
||||||
ADD_DEFINITIONS(-DDISABLE_MYSQL_THREAD_H)
|
ADD_DEFINITIONS(-DDISABLE_MYSQL_THREAD_H)
|
||||||
ADD_CONVENIENCE_LIBRARY(strings ${STRINGS_SOURCES})
|
ADD_CONVENIENCE_LIBRARY(strings ${STRINGS_SOURCES})
|
||||||
|
TARGET_LINK_LIBRARIES(strings dbug mysys)
|
||||||
|
MAYBE_DISABLE_IPO(strings)
|
||||||
ADD_EXECUTABLE(conf_to_src EXCLUDE_FROM_ALL conf_to_src.c)
|
ADD_EXECUTABLE(conf_to_src EXCLUDE_FROM_ALL conf_to_src.c)
|
||||||
SET_TARGET_PROPERTIES(conf_to_src PROPERTIES EXCLUDE_FROM_DEFAULT_BUILD TRUE)
|
SET_TARGET_PROPERTIES(conf_to_src PROPERTIES EXCLUDE_FROM_DEFAULT_BUILD TRUE)
|
||||||
TARGET_LINK_LIBRARIES(conf_to_src mysys strings)
|
TARGET_LINK_LIBRARIES(conf_to_src mysys strings)
|
||||||
|
Reference in New Issue
Block a user