summaryrefslogtreecommitdiff
path: root/cmake/dtrace.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/dtrace.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/dtrace.cmake')
-rw-r--r--cmake/dtrace.cmake43
1 files changed, 23 insertions, 20 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()