summaryrefslogtreecommitdiff
path: root/cmake/libutils.cmake
diff options
context:
space:
mode:
authorVladislav Vaintroub <wlad@mariadb.com>2016-01-07 14:45:40 +0100
committerVladislav Vaintroub <wlad@mariadb.com>2016-01-07 14:45:40 +0100
commit5f48b61509e4bc0fcb4e679abe51a6fc2dbb6359 (patch)
tree043f7a89c07bb5d4674351a9cc68b4d23acbabd3 /cmake/libutils.cmake
parentff2482026996d007689f41d522fb4d8289143a6b (diff)
downloadmariadb-git-5f48b61509e4bc0fcb4e679abe51a6fc2dbb6359.tar.gz
MDEV-9298 : Build failure when linking libmysql.
If GCC or CLang compile with link time optimization (-flto), they throw an error during link , when lto sees a function (e.g mysql_real_connect) is redeclared as "external void *" in libmysql_exports.cc The fix disables -flto for generated libmysql_exports.cc
Diffstat (limited to 'cmake/libutils.cmake')
-rw-r--r--cmake/libutils.cmake5
1 files changed, 5 insertions, 0 deletions
diff --git a/cmake/libutils.cmake b/cmake/libutils.cmake
index cca0032962d..41b7d9d1d86 100644
--- a/cmake/libutils.cmake
+++ b/cmake/libutils.cmake
@@ -87,6 +87,11 @@ MACRO(CREATE_EXPORT_FILE VAR TARGET API_FUNCTIONS)
ENDFOREACH()
SET(CONTENT "${CONTENT} (void *)0\n}\;")
CONFIGURE_FILE_CONTENT(${CONTENT} ${EXPORTS})
+ # Avoid "function redeclared as variable" error
+ # when using gcc/clang option -flto(link time optimization)
+ IF(" ${CMAKE_C_FLAGS} ${CMAKE_CXX_FLAGS} " MATCHES " -flto")
+ SET_SOURCE_FILES_PROPERTIES(${EXPORTS} PROPERTIES COMPILE_FLAGS "-fno-lto")
+ ENDIF()
SET(${VAR} ${EXPORTS})
ENDIF()
ENDMACRO()