From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-15.7 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id A3162C433FE for ; Fri, 11 Dec 2020 15:15:13 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 4FD29207A4 for ; Fri, 11 Dec 2020 15:15:13 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2406324AbgLKOrN (ORCPT ); Fri, 11 Dec 2020 09:47:13 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:47206 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2406377AbgLKOqY (ORCPT ); Fri, 11 Dec 2020 09:46:24 -0500 Received: from mail-wr1-x42e.google.com (mail-wr1-x42e.google.com [IPv6:2a00:1450:4864:20::42e]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id AAA42C0617A7 for ; Fri, 11 Dec 2020 06:45:27 -0800 (PST) Received: by mail-wr1-x42e.google.com with SMTP id y17so9267185wrr.10 for ; Fri, 11 Dec 2020 06:45:27 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=I0NmFYspL0nWDyoDHbxV8zk5GA140LeU8XNBINoc6GA=; b=bpRq/2GTugqnxIUhv5rf7pDIohx7fR95cnYz+2DWreXwDwmtGwTEeDoydMWUaFIEho 3QqZzrQh3LjnJFK8jOY3IYku2CqBwmEGwa7vNQ6uzCqBCurxfBABeSSeNGEAjOPEFOza IktwCd7b9poic3L2dQRM/NoqMgW1SWeVyS4mRdr5Wb9F6Wjp1veSofU6Ap0nYbnBl3jn K5vFN8U3VfYK3FXogybGJaALu5dlw3hc1HMgeMx29gSVkfj4g7iVCVe64L4SxxWxDks6 V1Y/Zc0oCHds+aiXjmWvEcgNxlX5gw8OrL063OjXnaYXJM23QCiKzRG/7emvxfQ3cl9b HhIA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=I0NmFYspL0nWDyoDHbxV8zk5GA140LeU8XNBINoc6GA=; b=FHgAxVZ6zDGjyC6h2Yijdl6DNlT8y3oBUb0EUm6jw4gKYDJYJ7Een0CrKtR1p2+KIy f9HwArkbq6Ya1DPSdnUkCy+zyeEhntdDL1QnDkz3Lc6CbmCsOrsUGEbOwvlkMTSFehRa 9PlYT4wJX24VU5My0XB7iOTf5gxJlJpB2/rrUggWh8APldSSKglCL6UfdSEdTJNpp0+C zJ3Wqe6o2ABuUmCioXGmWP4gyqU/l3+whFGqT64+EKB0ecbEneE8lUPc/9AeJ/gjLMoE DGxxtFWQd6BFskHX6Q1NE2U5r9DZ49UaXNMaaTCnxkgr8d9ecRXFI4/clCB55TgN+qhY dRpA== X-Gm-Message-State: AOAM530dXhPWyUXWHwmbYvD7RK0cx2VcSWv3glimt0isYbr9bekaEeoL uxMe4GBTAOlDqi0G5ZggAQI= X-Google-Smtp-Source: ABdhPJwuQHBTIF1X60NW+ox1K9QacoDVdHYJFmlfDcDkOsMZSrdzTPcRJcSOD2qt1mZiWzJFs70JEw== X-Received: by 2002:a5d:604a:: with SMTP id j10mr11858254wrt.290.1607697926446; Fri, 11 Dec 2020 06:45:26 -0800 (PST) Received: from localhost.localdomain ([95.87.199.104]) by smtp.gmail.com with ESMTPSA id y2sm14471471wma.6.2020.12.11.06.45.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 11 Dec 2020 06:45:25 -0800 (PST) From: "Yordan Karadzhov (VMware)" To: rostedt@goodmis.org Cc: linux-trace-devel@vger.kernel.org, "Yordan Karadzhov (VMware)" Subject: [PATCH v7 05/32] kernel-shark: Define build target for JSONC Date: Fri, 11 Dec 2020 16:44:44 +0200 Message-Id: <20201211144511.575346-6-y.karadz@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20201211144511.575346-1-y.karadz@gmail.com> References: <20201211144511.575346-1-y.karadz@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-trace-devel@vger.kernel.org Having the JSONC libs as a target simplifies the build/linking of the KernelShark libraries and executables because all necessary information, like include paths, compiler flags and library names can be retriever directly from the target. The patch also adds to FindJSONC.cmake the standard module documentation header. Signed-off-by: Yordan Karadzhov (VMware) --- CMakeLists.txt | 4 +-- build/FindJSONC.cmake | 70 +++++++++++++++++++++++++++++++++---------- src/CMakeLists.txt | 2 +- 3 files changed, 57 insertions(+), 19 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 007f46a..a66050f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -26,8 +26,7 @@ include(${KS_DIR}/build/FindTraceCmd.cmake) set(CMAKE_MODULE_PATH "${KS_DIR}/build") find_package(TraceEvent REQUIRED) find_package(TraceFS REQUIRED) - -include(${KS_DIR}/build/FindJSONC.cmake) +find_package(JSONC REQUIRED) find_package(Doxygen) @@ -84,7 +83,6 @@ endif (CMAKE_BUILD_TYPE MATCHES Package) include_directories(${KS_DIR}/src/ ${KS_DIR}/build/src/ - ${JSONC_INCLUDE_DIR} ${TRACECMD_INCLUDE_DIR}) message("") diff --git a/build/FindJSONC.cmake b/build/FindJSONC.cmake index 3bae20f..2d0d41f 100644 --- a/build/FindJSONC.cmake +++ b/build/FindJSONC.cmake @@ -1,13 +1,44 @@ -# - Try to find json-c -# https://cmake.org/Wiki/CMake:How_To_Find_Libraries -# Once done this will define -# JSONC_FOUND - System has json-c -# JSONC_INCLUDE_DIRS - The json-c include directories -# JSONC_LIBRARIES - The libraries needed to use json-c -# JSONC_DEFINITIONS - Compiler switches required for using json-c - -find_package(PkgConfig) + +#[=======================================================================[.rst: +FindJSONC +------- + +Finds the traceevent library. + +Imported Targets +^^^^^^^^^^^^^^^^ + +This module defines the :prop_tgt:`IMPORTED` targets: + +``jsonc::jsonc`` + Defined if the system has json-c. + +Result Variables +^^^^^^^^^^^^^^^^ + +``JSONC_FOUND`` + True if the system has the json-c library. +``JSONC_VERSION`` + The version of the json-c library which was found. +``JSONC_INCLUDE_DIRS`` + Include directories needed to use json-c. +``JSONC_LIBRARIES`` + Libraries needed to link to json-c. + +Cache Variables +^^^^^^^^^^^^^^^ + +``JSONC_INCLUDE_DIR`` + The directory containing ``json.h``. +``JSONC_LIBRARY`` + The path to the traceevent library. + +#]=======================================================================] + +find_package(PkgConfig QUIET) pkg_check_modules(PC_JSONC QUIET json-c) + +set(JSONC_VERSION ${PC_JSONC_VERSION}) set(JSONC_DEFINITIONS ${PC_JSONC_CFLAGS_OTHER}) find_path(JSONC_INCLUDE_DIR json.h @@ -20,19 +51,28 @@ find_library(JSONC_LIBRARY NAMES json-c libjson-c find_library(JSONC_LIBRARY NAMES json-c libjson-c HINTS ${PC_JSON-C_LIBDIR} ${PC_JSON-C_LIBRARY_DIRS}) +mark_as_advanced(JSONC_INCLUDE_DIR JSONC_LIBRARY) + include(FindPackageHandleStandardArgs) # handle the QUIETLY and REQUIRED arguments and set JSONC_FOUND to TRUE # if all listed variables are TRUE find_package_handle_standard_args(JSONC DEFAULT_MSG JSONC_LIBRARY JSONC_INCLUDE_DIR) -if (NOT JSONC_FOUND) +if(JSONC_FOUND) - message(FATAL_ERROR "Json-C is Required!\n") + set(JSONC_LIBRARIES ${JSONC_LIBRARY}) + set(JSONC_INCLUDE_DIRS ${JSONC_INCLUDE_DIR}) -endif (NOT JSONC_FOUND) + if(NOT TARGET jsonc::jsonc) + add_library(jsonc::jsonc UNKNOWN IMPORTED) -mark_as_advanced(JSONC_INCLUDE_DIR JSONC_LIBRARY) + set_target_properties(jsonc::jsonc + PROPERTIES + INTERFACE_INCLUDE_DIRECTORIES "${JSONC_INCLUDE_DIRS}" + INTERFACE_COMPILE_DEFINITIONS "${JSONC_DEFINITIONS}" + IMPORTED_LINK_INTERFACE_LANGUAGES "C" + IMPORTED_LOCATION "${JSONC_LIBRARIES}") + endif() -set(JSONC_LIBRARIES ${JSONC_LIBRARY}) -set(JSONC_INCLUDE_DIRS ${JSONC_INCLUDE_DIR}) +endif() diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 7474e9d..213ce87 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -10,7 +10,7 @@ add_library(kshark SHARED libkshark.c target_link_libraries(kshark ${TRACECMD_LIBRARY} trace::fs trace::event - ${JSONC_LIBRARY} + jsonc::jsonc ${CMAKE_DL_LIBS}) set_target_properties(kshark PROPERTIES SUFFIX ".so.${KS_VERSION_STRING}") -- 2.25.1