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)
|
||||
CMAKE_POLICY(SET CMP0075 NEW)
|
||||
ENDIF()
|
||||
IF(POLICY CMP0069)
|
||||
CMAKE_POLICY(SET CMP0069 NEW)
|
||||
ENDIF()
|
||||
|
||||
MESSAGE(STATUS "Running cmake version ${CMAKE_VERSION}")
|
||||
|
||||
|
@@ -330,3 +330,15 @@ FUNCTION(RESTRICT_SYMBOL_EXPORTS target)
|
||||
COMPILE_FLAGS "${COMPILE_FLAGS} ${VISIBILITY_HIDDEN_FLAG}")
|
||||
ENDIF()
|
||||
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)
|
||||
ADD_CONVENIENCE_LIBRARY(dbug ${DBUG_SOURCES})
|
||||
TARGET_LINK_LIBRARIES(dbug mysys)
|
||||
MAYBE_DISABLE_IPO(dbug)
|
||||
|
||||
ADD_EXECUTABLE(tests tests.c)
|
||||
TARGET_LINK_LIBRARIES(tests dbug)
|
||||
|
@@ -71,6 +71,7 @@ IF(HAVE_MLOCK)
|
||||
ENDIF()
|
||||
|
||||
ADD_CONVENIENCE_LIBRARY(mysys ${MYSYS_SOURCES})
|
||||
MAYBE_DISABLE_IPO(mysys)
|
||||
TARGET_LINK_LIBRARIES(mysys dbug strings ${ZLIB_LIBRARY}
|
||||
${LIBNSL} ${LIBM} ${LIBRT} ${LIBDL} ${LIBSOCKET} ${LIBEXECINFO} ${CRC32_LIBRARY})
|
||||
DTRACE_INSTRUMENT(mysys)
|
||||
|
@@ -188,6 +188,7 @@ MYSQL_ADD_PLUGIN(sql_sequence ha_sequence.cc STORAGE_ENGINE MANDATORY STATIC_ONL
|
||||
RECOMPILE_FOR_EMBEDDED)
|
||||
|
||||
ADD_LIBRARY(sql STATIC ${SQL_SOURCE})
|
||||
MAYBE_DISABLE_IPO(sql)
|
||||
DTRACE_INSTRUMENT(sql)
|
||||
TARGET_LINK_LIBRARIES(sql
|
||||
mysys mysys_ssl dbug strings vio pcre2-8
|
||||
@@ -234,13 +235,13 @@ IF(MSVC)
|
||||
IF(deps)
|
||||
LIST(APPEND all_deps ${deps})
|
||||
ENDIF()
|
||||
ENDFOREACH()
|
||||
ENDFOREACH()
|
||||
LIST(REMOVE_DUPLICATES all_deps)
|
||||
FOREACH(lib ${libs_to_export_symbols})
|
||||
LIST(REMOVE_ITEM all_deps ${lib})
|
||||
ENDFOREACH()
|
||||
|
||||
TARGET_LINK_LIBRARIES(server
|
||||
TARGET_LINK_LIBRARIES(server PRIVATE
|
||||
${all_deps}
|
||||
sql_builtins
|
||||
)
|
||||
|
@@ -32,7 +32,8 @@ ENDIF()
|
||||
# Avoid dependencies on perschema data defined in mysys
|
||||
ADD_DEFINITIONS(-DDISABLE_MYSQL_THREAD_H)
|
||||
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)
|
||||
SET_TARGET_PROPERTIES(conf_to_src PROPERTIES EXCLUDE_FROM_DEFAULT_BUILD TRUE)
|
||||
TARGET_LINK_LIBRARIES(conf_to_src mysys strings)
|
||||
|
Reference in New Issue
Block a user