1
- # Copyright (c) 2009, 2013 , Oracle and/or its affiliates. All rights reserved.
1
+ # Copyright (c) 2009, 2014 , Oracle and/or its affiliates. All rights reserved.
2
2
#
3
3
# This program is free software; you can redistribute it and/or modify
4
4
# it under the terms of the GNU General Public License as published by
@@ -74,13 +74,6 @@ IF(ENABLE_DTRACE)
74
74
${CMAKE_BINARY_DIR} /include /probes_mysql_dtrace.h
75
75
${CMAKE_BINARY_DIR} /include /probes_mysql_nodtrace.h
76
76
)
77
- IF (CMAKE_SYSTEM_NAME MATCHES "Linux" )
78
- # Systemtap object
79
- EXECUTE_PROCESS (
80
- COMMAND ${DTRACE} -G -s ${CMAKE_SOURCE_DIR} /include /probes_mysql.d.base
81
- -o ${CMAKE_BINARY_DIR} /probes_mysql.o
82
- )
83
- ENDIF ()
84
77
ADD_CUSTOM_TARGET (gen_dtrace_header
85
78
DEPENDS
86
79
${CMAKE_BINARY_DIR} /include /probes_mysql.d
@@ -99,12 +92,7 @@ FUNCTION(DTRACE_INSTRUMENT target)
99
92
IF (ENABLE_DTRACE)
100
93
ADD_DEPENDENCIES (${target} gen_dtrace_header)
101
94
102
- IF (CMAKE_SYSTEM_NAME MATCHES "Linux" )
103
- TARGET_LINK_LIBRARIES (${target} ${CMAKE_BINARY_DIR} /probes_mysql.o)
104
- ENDIF ()
105
-
106
- # On Solaris, invoke dtrace -G to generate object file and
107
- # link it together with target.
95
+ # Invoke dtrace to generate object file and link it together with target.
108
96
IF (CMAKE_SYSTEM_NAME MATCHES "SunOS" )
109
97
SET (objdir ${CMAKE_CURRENT_BINARY_DIR} /CMakeFiles/${target} .dir)
110
98
SET (outfile ${objdir} /${target} _dtrace.o)
@@ -121,6 +109,21 @@ FUNCTION(DTRACE_INSTRUMENT target)
121
109
-P ${CMAKE_SOURCE_DIR} /cmake/dtrace_prelink.cmake
122
110
WORKING_DIRECTORY ${objdir}
123
111
)
112
+ ELSEIF (CMAKE_SYSTEM_NAME MATCHES "Linux" )
113
+ # dtrace on Linux runs gcc and uses flags from environment
114
+ SET (CFLAGS_SAVED $ENV{CFLAGS} )
115
+ SET (ENV{CFLAGS} ${CMAKE_C_FLAGS} )
116
+ SET (outfile "${CMAKE_BINARY_DIR} /probes_mysql.o" )
117
+ # Systemtap object
118
+ EXECUTE_PROCESS (
119
+ COMMAND ${DTRACE} -G -s ${CMAKE_SOURCE_DIR} /include /probes_mysql.d.base
120
+ -o ${outfile}
121
+ )
122
+ SET (ENV{CFLAGS} ${CFLAGS_SAVED} )
123
+ ENDIF ()
124
+
125
+ # Do not try to extend the library if we have not built the .o file
126
+ IF (outfile)
124
127
# Add full object path to linker flags
125
128
GET_TARGET_PROPERTY (target_type ${target} TYPE )
126
129
IF (NOT target_type MATCHES "STATIC" )
@@ -132,12 +135,12 @@ FUNCTION(DTRACE_INSTRUMENT target)
132
135
# but maybe one day this will be fixed.
133
136
GET_TARGET_PROPERTY (target_location ${target} LOCATION )
134
137
ADD_CUSTOM_COMMAND (
135
- TARGET ${target} POST_BUILD
136
- COMMAND ${CMAKE_AR} r ${target_location} ${outfile}
137
- COMMAND ${CMAKE_RANLIB} ${target_location}
138
- )
139
- # Used in DTRACE_INSTRUMENT_WITH_STATIC_LIBS
140
- SET (TARGET_OBJECT_DIRECTORY_${target} ${objdir} CACHE INTERNAL "" )
138
+ TARGET ${target} POST_BUILD
139
+ COMMAND ${CMAKE_AR} r ${target_location} ${outfile}
140
+ COMMAND ${CMAKE_RANLIB} ${target_location}
141
+ )
142
+ # Used in DTRACE_INSTRUMENT_WITH_STATIC_LIBS
143
+ SET (TARGET_OBJECT_DIRECTORY_${target} ${objdir} CACHE INTERNAL "" )
141
144
ENDIF ()
142
145
ENDIF ()
143
146
ENDIF ()
0 commit comments