summaryrefslogtreecommitdiff
path: root/cmake
diff options
context:
space:
mode:
authorSergei Golubchik <sergii@pisem.net>2014-08-02 21:26:16 +0200
committerSergei Golubchik <sergii@pisem.net>2014-08-02 21:26:16 +0200
commit1c6ad62a269a3a03d8a343e1412876e04e9e9c37 (patch)
tree1e837eb728452ebaf749b5f9eedc018404798ed6 /cmake
parent14200dfa43756a0f9cb50c0b5d47d99b4fb1b6fa (diff)
parente9b2f5bf15281583b38a56b12f9ae2420c46a6d1 (diff)
downloadmariadb-git-1c6ad62a269a3a03d8a343e1412876e04e9e9c37.tar.gz
mysql-5.5.39 merge
~40% bugfixed(*) applied ~40$ bugfixed reverted (incorrect or we're not buggy) ~20% bugfixed applied, despite us being not buggy (*) only changes in the server code, e.g. not cmakefiles
Diffstat (limited to 'cmake')
-rw-r--r--cmake/dtrace.cmake43
-rw-r--r--cmake/install_macros.cmake4
-rw-r--r--cmake/os/Windows.cmake29
3 files changed, 44 insertions, 32 deletions
diff --git a/cmake/dtrace.cmake b/cmake/dtrace.cmake
index 1fc87cfcbef..5d0bb7ff8c9 100644
--- a/cmake/dtrace.cmake
+++ b/cmake/dtrace.cmake
@@ -1,4 +1,4 @@
-# Copyright (c) 2009, 2013, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2009, 2014, Oracle and/or its affiliates. All rights reserved.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -80,13 +80,6 @@ IF(ENABLE_DTRACE)
${CMAKE_BINARY_DIR}/include/probes_mysql_dtrace.h
${CMAKE_BINARY_DIR}/include/probes_mysql_nodtrace.h
)
- IF(CMAKE_SYSTEM_NAME MATCHES "Linux")
- # Systemtap object
- EXECUTE_PROCESS(
- COMMAND ${DTRACE} -G -s ${CMAKE_SOURCE_DIR}/include/probes_mysql.d.base
- -o ${CMAKE_BINARY_DIR}/probes_mysql.o
- )
- ENDIF()
ADD_CUSTOM_TARGET(gen_dtrace_header
DEPENDS
${CMAKE_BINARY_DIR}/include/probes_mysql.d
@@ -105,12 +98,7 @@ FUNCTION(DTRACE_INSTRUMENT target)
IF(ENABLE_DTRACE)
ADD_DEPENDENCIES(${target} gen_dtrace_header)
- IF(CMAKE_SYSTEM_NAME MATCHES "Linux")
- TARGET_LINK_LIBRARIES(${target} ${CMAKE_BINARY_DIR}/probes_mysql.o)
- ENDIF()
-
- # On Solaris, invoke dtrace -G to generate object file and
- # link it together with target.
+ # Invoke dtrace to generate object file and link it together with target.
IF(CMAKE_SYSTEM_NAME MATCHES "SunOS")
SET(objdir ${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/${target}.dir)
SET(outfile ${objdir}/${target}_dtrace.o)
@@ -127,6 +115,21 @@ FUNCTION(DTRACE_INSTRUMENT target)
-P ${CMAKE_SOURCE_DIR}/cmake/dtrace_prelink.cmake
WORKING_DIRECTORY ${objdir}
)
+ ELSEIF(CMAKE_SYSTEM_NAME MATCHES "Linux")
+ # dtrace on Linux runs gcc and uses flags from environment
+ SET(CFLAGS_SAVED $ENV{CFLAGS})
+ SET(ENV{CFLAGS} ${CMAKE_C_FLAGS})
+ SET(outfile "${CMAKE_BINARY_DIR}/probes_mysql.o")
+ # Systemtap object
+ EXECUTE_PROCESS(
+ COMMAND ${DTRACE} -G -s ${CMAKE_SOURCE_DIR}/include/probes_mysql.d.base
+ -o ${outfile}
+ )
+ SET(ENV{CFLAGS} ${CFLAGS_SAVED})
+ ENDIF()
+
+ # Do not try to extend the library if we have not built the .o file
+ IF(outfile)
# Add full object path to linker flags
GET_TARGET_PROPERTY(target_type ${target} TYPE)
IF(NOT target_type MATCHES "STATIC")
@@ -138,12 +141,12 @@ FUNCTION(DTRACE_INSTRUMENT target)
# but maybe one day this will be fixed.
GET_TARGET_PROPERTY(target_location ${target} LOCATION)
ADD_CUSTOM_COMMAND(
- TARGET ${target} POST_BUILD
- COMMAND ${CMAKE_AR} r ${target_location} ${outfile}
- COMMAND ${CMAKE_RANLIB} ${target_location}
- )
- # Used in DTRACE_INSTRUMENT_WITH_STATIC_LIBS
- SET(TARGET_OBJECT_DIRECTORY_${target} ${objdir} CACHE INTERNAL "")
+ TARGET ${target} POST_BUILD
+ COMMAND ${CMAKE_AR} r ${target_location} ${outfile}
+ COMMAND ${CMAKE_RANLIB} ${target_location}
+ )
+ # Used in DTRACE_INSTRUMENT_WITH_STATIC_LIBS
+ SET(TARGET_OBJECT_DIRECTORY_${target} ${objdir} CACHE INTERNAL "")
ENDIF()
ENDIF()
ENDIF()
diff --git a/cmake/install_macros.cmake b/cmake/install_macros.cmake
index ee345b177bd..15e2dc4930b 100644
--- a/cmake/install_macros.cmake
+++ b/cmake/install_macros.cmake
@@ -38,7 +38,9 @@ FUNCTION (INSTALL_DEBUG_SYMBOLS)
STRING(REPLACE ".dll" ".pdb" pdb_location ${pdb_location})
STRING(REPLACE ".lib" ".pdb" pdb_location ${pdb_location})
IF(CMAKE_GENERATOR MATCHES "Visual Studio")
- STRING(REPLACE "${CMAKE_CFG_INTDIR}" "\${CMAKE_INSTALL_CONFIG_NAME}" pdb_location ${pdb_location})
+ STRING(REPLACE
+ "${CMAKE_CFG_INTDIR}" "\${CMAKE_INSTALL_CONFIG_NAME}"
+ pdb_location ${pdb_location})
ENDIF()
set(comp "")
diff --git a/cmake/os/Windows.cmake b/cmake/os/Windows.cmake
index 42ddb12bf37..16c2743aa4a 100644
--- a/cmake/os/Windows.cmake
+++ b/cmake/os/Windows.cmake
@@ -1,4 +1,4 @@
-# Copyright (c) 2010, 2011, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2010, 2014, Oracle and/or its affiliates. All rights reserved.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -62,22 +62,30 @@ IF(MINGW AND CMAKE_SIZEOF_VOID_P EQUAL 4)
ENDIF()
IF(MSVC)
- # Enable debug info also in Release build, and create PDB to be able to analyze
- # crashes
- FOREACH(lang C CXX)
- SET(CMAKE_${lang}_FLAGS_RELEASE "${CMAKE_${lang}_FLAGS_RELEASE} /Zi")
- ENDFOREACH()
+ # Enable debug info also in Release build,
+ # and create PDB to be able to analyze crashes.
FOREACH(type EXE SHARED MODULE)
- SET(CMAKE_{type}_LINKER_FLAGS_RELEASE "${CMAKE_${type}_LINKER_FLAGS_RELEASE} /debug")
+ SET(CMAKE_{type}_LINKER_FLAGS_RELEASE
+ "${CMAKE_${type}_LINKER_FLAGS_RELEASE} /debug")
ENDFOREACH()
# Force static runtime libraries
+ # - Choose debugging information:
+ # /Z7
+ # Produces an .obj file containing full symbolic debugging
+ # information for use with the debugger. The symbolic debugging
+ # information includes the names and types of variables, as well as
+ # functions and line numbers. No .pdb file is produced by the compiler.
+ FOREACH(lang C CXX)
+ SET(CMAKE_${lang}_FLAGS_RELEASE "${CMAKE_${lang}_FLAGS_RELEASE} /Z7")
+ ENDFOREACH()
FOREACH(flag
- CMAKE_C_FLAGS_RELEASE CMAKE_C_FLAGS_RELWITHDEBINFO
- CMAKE_C_FLAGS_DEBUG CMAKE_C_FLAGS_DEBUG_INIT
+ CMAKE_C_FLAGS_RELEASE CMAKE_C_FLAGS_RELWITHDEBINFO
+ CMAKE_C_FLAGS_DEBUG CMAKE_C_FLAGS_DEBUG_INIT
CMAKE_CXX_FLAGS_RELEASE CMAKE_CXX_FLAGS_RELWITHDEBINFO
- CMAKE_CXX_FLAGS_DEBUG CMAKE_CXX_FLAGS_DEBUG_INIT)
+ CMAKE_CXX_FLAGS_DEBUG CMAKE_CXX_FLAGS_DEBUG_INIT)
STRING(REPLACE "/MD" "/MT" "${flag}" "${${flag}}")
+ STRING(REPLACE "/Zi" "/Z7" "${flag}" "${${flag}}")
ENDFOREACH()
# Remove support for exceptions
@@ -109,7 +117,6 @@ IF(MSVC)
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /wd4800 /wd4805 /wd4996")
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /wd4800 /wd4805 /wd4996 /we4099")
-
IF(CMAKE_SIZEOF_VOID_P MATCHES 8)
# _WIN64 is defined by the compiler itself.
# Yet, we define it here again to work around a bug with Intellisense