Merge pull request #140 from hussainnaqvee/patch-1
[awesomized/libmemcached] / CMake / EnableDtrace.cmake
index 184a327a7fc68f807886dcb387b09628e3ea610d..add0d7fd6c7f0da22386b27c00353be5b5f012ff 100644 (file)
@@ -1,9 +1,8 @@
 function(enable_dtrace_for TARGET PROBES_D PROBES_H)
     if(HAVE_DTRACE AND NOT CMAKE_CROSSCOMPILING)
-        target_sources(${TARGET} PRIVATE ${PROBES_H})
         add_custom_command(
                 OUTPUT
-                    ${PROBES_H}
+                    ${CMAKE_CURRENT_BINARY_DIR}/${PROBES_H}
                 MAIN_DEPENDENCY
                     ${PROBES_D}
                 COMMAND
@@ -11,36 +10,40 @@ function(enable_dtrace_for TARGET PROBES_D PROBES_H)
                 ARGS
                     -x nolibs -h
                     -s ${CMAKE_CURRENT_SOURCE_DIR}/${PROBES_D}
-                    -o ${PROBES_H}
+                    -o ${CMAKE_CURRENT_BINARY_DIR}/${PROBES_H}
         )
+        target_sources(${TARGET} PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/${PROBES_H})
         if(CMAKE_HOST_SYSTEM_NAME STREQUAL "Linux")
             add_custom_command(
                     OUTPUT
-                        ${TARGET}_probes.o
+                        ${CMAKE_CURRENT_BINARY_DIR}/${TARGET}_probes.o
                     MAIN_DEPENDENCY
-                        ${PROBES_H}
+                        ${CMAKE_CURRENT_BINARY_DIR}/${PROBES_H}
                     COMMAND
                         ${DTRACE_EXECUTABLE}
                     ARGS
                         -x nolibs -G
                         -s ${CMAKE_CURRENT_SOURCE_DIR}/${PROBES_D}
-                        -o ${TARGET}_probes.o
+                        -o ${CMAKE_CURRENT_BINARY_DIR}/${TARGET}_probes.o
             )
             target_sources(${TARGET} PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/${TARGET}_probes.o)
             set_source_files_properties(${TARGET}_probes.o PROPERTIES
                     GENERATED true
                     EXTERNAL_OBJECT true)
-        else() # not Linux
+            return()
+        endif()
+        cmake_host_system_information(RESULT OS_RELEASE QUERY OS_RELEASE)
+        if(NOT (CMAKE_HOST_SYSTEM_NAME STREQUAL Darwin AND OS_RELEASE VERSION_GREATER_EQUAL 11))
             set(PROBES_C ${TARGET}_probes.cc)
             file(GENERATE
                     OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${PROBES_C}
-                    CONTENT "#include \"${PROBES_H}\""
+                    CONTENT "#include \"${PROBES_H}\"\n"
                     )
             add_custom_command(
                     TARGET ${TARGET}
                         PRE_LINK
                     DEPENDS
-                        ${PROBES_H}
+                        ${CMAKE_CURRENT_BINARY_DIR}/${PROBES_H}
                     COMMAND
                         rm -f ${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/${TARGET}.dir/${PROBES_C}.o
                     COMMAND