--- cmake/dtrace.cmake.orig 2011-06-21 16:42:39.000000000 +0000 +++ cmake/dtrace.cmake 2011-07-27 11:49:47.214815458 +0000 @@ -34,13 +34,11 @@ FIND_PROGRAM(DTRACE dtrace) MARK_AS_ADVANCED(DTRACE) - # On FreeBSD, dtrace does not handle userland tracing yet - IF(DTRACE AND NOT CMAKE_SYSTEM_NAME MATCHES "FreeBSD" - AND NOT BUGGY_GCC_NO_DTRACE_MODULES) + IF(DTRACE AND NOT BUGGY_GCC_NO_DTRACE_MODULES) SET(ENABLE_DTRACE ON CACHE BOOL "Enable dtrace") ENDIF() SET(HAVE_DTRACE ${ENABLE_DTRACE}) - IF(CMAKE_SYSTEM_NAME MATCHES "SunOS") + IF(CMAKE_SYSTEM_NAME MATCHES "SunOS|FreeBSD") IF(CMAKE_SIZEOF_VOID_P EQUAL 4) SET(DTRACE_FLAGS -32 CACHE INTERNAL "DTrace architecture flags") ELSE() @@ -90,6 +88,10 @@ ENDIF() FUNCTION(DTRACE_INSTRUMENT target) + # add libelf to the linker in the FreeBSD + IF(ENABLE_DTRACE AND CMAKE_SYSTEM_NAME MATCHES "FreeBSD") + TARGET_LINK_LIBRARIES(${target} elf) + ENDIF() IF(BUGGY_GCC_NO_DTRACE_MODULES) GET_TARGET_PROPERTY(target_type ${target} TYPE) IF(target_type MATCHES "MODULE_LIBRARY") @@ -105,7 +107,7 @@ # On Solaris, invoke dtrace -G to generate object file and # link it together with target. - IF(CMAKE_SYSTEM_NAME MATCHES "SunOS") + IF(CMAKE_SYSTEM_NAME MATCHES "SunOS|FreeBSD") SET(objdir ${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/${target}.dir) SET(outfile ${objdir}/${target}_dtrace.o) GET_TARGET_PROPERTY(target_type ${target} TYPE) @@ -117,6 +119,7 @@ -DDFILE=${CMAKE_BINARY_DIR}/include/probes_mysql.d -DDTRACE_FLAGS=${DTRACE_FLAGS} -DDIRS=. + -DCMAKE_SYSTEM_NAME=${CMAKE_SYSTEM_NAME} -DTYPE=${target_type} -P ${CMAKE_SOURCE_DIR}/cmake/dtrace_prelink.cmake WORKING_DIRECTORY ${objdir} @@ -152,13 +155,13 @@ # run them again through dtrace -G to generate an ELF file that links # to mysqld. MACRO (DTRACE_INSTRUMENT_STATIC_LIBS target libs) -IF(CMAKE_SYSTEM_NAME MATCHES "SunOS" AND ENABLE_DTRACE) +IF(CMAKE_SYSTEM_NAME MATCHES "SunOS|FreeBSD" AND ENABLE_DTRACE) # Filter out non-static libraries in the list, if any SET(static_libs) FOREACH(lib ${libs}) GET_TARGET_PROPERTY(libtype ${lib} TYPE) IF(libtype MATCHES STATIC_LIBRARY) - SET(static_libs ${static_lics} ${lib}) + SET(static_libs ${static_libs} ${lib}) ENDIF() ENDFOREACH() @@ -177,6 +180,7 @@ -DDTRACE_FLAGS=${DTRACE_FLAGS} "-DDIRS=${dirs}" -DTYPE=MERGE + -DCMAKE_SYSTEM_NAME=${CMAKE_SYSTEM_NAME} -P ${CMAKE_SOURCE_DIR}/cmake/dtrace_prelink.cmake VERBATIM )