Skip to content

Commit 16b8179

Browse files
author
Tor Didriksen
committed
Backport from trunk:
Bug #18593044 COMPILE FLAGS NOT PASSED TO DTRACE, BREAKS CROSS BUILD
1 parent a195ced commit 16b8179

File tree

1 file changed

+23
-20
lines changed

1 file changed

+23
-20
lines changed

cmake/dtrace.cmake

+23-20
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
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.
22
#
33
# This program is free software; you can redistribute it and/or modify
44
# it under the terms of the GNU General Public License as published by
@@ -74,13 +74,6 @@ IF(ENABLE_DTRACE)
7474
${CMAKE_BINARY_DIR}/include/probes_mysql_dtrace.h
7575
${CMAKE_BINARY_DIR}/include/probes_mysql_nodtrace.h
7676
)
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()
8477
ADD_CUSTOM_TARGET(gen_dtrace_header
8578
DEPENDS
8679
${CMAKE_BINARY_DIR}/include/probes_mysql.d
@@ -99,12 +92,7 @@ FUNCTION(DTRACE_INSTRUMENT target)
9992
IF(ENABLE_DTRACE)
10093
ADD_DEPENDENCIES(${target} gen_dtrace_header)
10194

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.
10896
IF(CMAKE_SYSTEM_NAME MATCHES "SunOS")
10997
SET(objdir ${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/${target}.dir)
11098
SET(outfile ${objdir}/${target}_dtrace.o)
@@ -121,6 +109,21 @@ FUNCTION(DTRACE_INSTRUMENT target)
121109
-P ${CMAKE_SOURCE_DIR}/cmake/dtrace_prelink.cmake
122110
WORKING_DIRECTORY ${objdir}
123111
)
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)
124127
# Add full object path to linker flags
125128
GET_TARGET_PROPERTY(target_type ${target} TYPE)
126129
IF(NOT target_type MATCHES "STATIC")
@@ -132,12 +135,12 @@ FUNCTION(DTRACE_INSTRUMENT target)
132135
# but maybe one day this will be fixed.
133136
GET_TARGET_PROPERTY(target_location ${target} LOCATION)
134137
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 "")
141144
ENDIF()
142145
ENDIF()
143146
ENDIF()

0 commit comments

Comments
 (0)