summaryrefslogtreecommitdiff
path: root/cmake/dtrace.cmake
diff options
context:
space:
mode:
authorVladislav Vaintroub <wlad@sol>2009-12-13 05:42:26 +0000
committerVladislav Vaintroub <wlad@sol>2009-12-13 05:42:26 +0000
commitef65dae9b1b915450fb623c94f78c421a1137d53 (patch)
tree7a97f92c96db155c06c333c0c9e4ae7784e2ab2a /cmake/dtrace.cmake
parent3c3dc0f524b70258fe554f03c23c8c04fb5dab74 (diff)
downloadmariadb-git-ef65dae9b1b915450fb623c94f78c421a1137d53.tar.gz
Dtrace on Solaris:
fix excessive relinking that results from rerunning dtrace -G second time on the objects that come into static library. The reason for relinking is that dtrace -G changes timestamp for the object file, which in turn results in re-archiving the mysys on next time make runs, which causes relinking of the whole mysql, because everything depends on mysys. The fix is to copy objects into temp before running dtrace -G in mysqld pre-build step. This way dtrace does not affect the object timestamp.
Diffstat (limited to 'cmake/dtrace.cmake')
-rw-r--r--cmake/dtrace.cmake9
1 files changed, 5 insertions, 4 deletions
diff --git a/cmake/dtrace.cmake b/cmake/dtrace.cmake
index 653114d4963..92a39a224d5 100644
--- a/cmake/dtrace.cmake
+++ b/cmake/dtrace.cmake
@@ -75,7 +75,7 @@ MACRO (DTRACE_INSTRUMENT target)
IF(CMAKE_SYSTEM_NAME MATCHES "SunOS")
SET(objdir ${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/${target}.dir)
SET(outfile ${objdir}/${target}_dtrace.o)
-
+ GET_TARGET_PROPERTY(target_type ${target} TYPE)
ADD_CUSTOM_COMMAND(
TARGET ${target} PRE_LINK
COMMAND ${CMAKE_COMMAND}
@@ -84,6 +84,7 @@ MACRO (DTRACE_INSTRUMENT target)
-DDFILE=${CMAKE_BINARY_DIR}/include/probes_mysql.d
-DDTRACE_FLAGS=${DTRACE_FLAGS}
-DDIRS=.
+ -DTYPE=${target_type}
-P ${CMAKE_SOURCE_DIR}/cmake/dtrace_prelink.cmake
WORKING_DIRECTORY ${objdir}
)
@@ -94,7 +95,7 @@ MACRO (DTRACE_INSTRUMENT target)
ELSE()
# For static library flags, add the object to the library.
# Note: DTrace probes in static libraries are unusable currently
- # (see http://opensolaris.org/jive/thread.jspa?messageID=432454)
+ # (see explanation for DTRACE_INSTRUMENT_STATIC_LIBS below)
# but maybe one day this will be fixed.
GET_TARGET_PROPERTY(target_location ${target} LOCATION)
ADD_CUSTOM_COMMAND(
@@ -102,7 +103,6 @@ MACRO (DTRACE_INSTRUMENT target)
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()
@@ -123,7 +123,7 @@ IF(CMAKE_SYSTEM_NAME MATCHES "SunOS" AND ENABLE_DTRACE)
FOREACH(lib ${libs})
SET(dirs ${dirs} ${TARGET_OBJECT_DIRECTORY_${lib}})
ENDFOREACH()
- SET (obj ${CMAKE_BINARY_DIR}/${target}_dtrace_all.o)
+ SET (obj ${CMAKE_CURRENT_BINARY_DIR}/${target}_dtrace_all.o)
ADD_CUSTOM_COMMAND(
OUTPUT ${obj}
DEPENDS ${libs}
@@ -133,6 +133,7 @@ IF(CMAKE_SYSTEM_NAME MATCHES "SunOS" AND ENABLE_DTRACE)
-DDFILE=${CMAKE_BINARY_DIR}/include/probes_mysql.d
-DDTRACE_FLAGS=${DTRACE_FLAGS}
"-DDIRS=${dirs}"
+ -DTYPE=MERGE
-P ${CMAKE_SOURCE_DIR}/cmake/dtrace_prelink.cmake
VERBATIM
)