From patchwork Sat Mar 7 21:13:23 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Laurent Pinchart X-Patchwork-Id: 3044 Return-Path: Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [IPv6:2001:4b98:dc2:55:216:3eff:fef7:d647]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id 3586062826 for ; Sat, 7 Mar 2020 22:13:39 +0100 (CET) Received: from pendragon.bb.dnainternet.fi (81-175-216-236.bb.dnainternet.fi [81.175.216.236]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id C746D9CC for ; Sat, 7 Mar 2020 22:13:38 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1583615618; bh=8+VJnOTs3m7iwGkvU+Jz7ztgj7FTqf4VWAxBW5dNOLg=; h=From:To:Subject:Date:In-Reply-To:References:From; b=IBhbxYWedmPFBWT8gEi2nM5ZBiQawB9CghqkCLBxClygssGS5hHDUPjrTip4OtKJE QPwAY2WGbjV/2Wdyl488huLO/Fs1NZOSba6Ab9Pi43eFCY6jqUsx/biTyMlHeS6vVM ZQ1+azVUrlhaqYi4PD0KzlwzLQfXXQWHhKyKih/c= From: Laurent Pinchart To: libcamera-devel@lists.libcamera.org Date: Sat, 7 Mar 2020 23:13:23 +0200 Message-Id: <20200307211326.26994-5-laurent.pinchart@ideasonboard.com> X-Mailer: git-send-email 2.24.1 In-Reply-To: <20200307211326.26994-1-laurent.pinchart@ideasonboard.com> References: <20200307211326.26994-1-laurent.pinchart@ideasonboard.com> MIME-Version: 1.0 Subject: [libcamera-devel] [PATCH v3 4/7] libcamera: Don't unnecessarily link against libatomic X-BeenThere: libcamera-devel@lists.libcamera.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 07 Mar 2020 21:13:40 -0000 libatomic provides atomic operations that are also available as compiler built-ins on most platforms. On some platforms (such as Sparc) linking against libatomic is required to use any atomic operation. libcamera links against libatomic if available for that reason. This however makes libcamera link against libatomic even when not required, if libatomic is available. Restrict this to only the cases where libatomic is required with a link test. Signed-off-by: Laurent Pinchart Reviewed-by: Kieran Bingham --- meson.build | 1 + src/libcamera/meson.build | 2 +- src/meson.build | 17 +++++++++++++++++ 3 files changed, 19 insertions(+), 1 deletion(-) diff --git a/meson.build b/meson.build index c6e6a934e54e..a1e455249b0d 100644 --- a/meson.build +++ b/meson.build @@ -24,6 +24,7 @@ libcamera_version = libcamera_git_version.split('+')[0] # Configure the build environment. cc = meson.get_compiler('c') +cxx = meson.get_compiler('cpp') config_h = configuration_data() if cc.has_header_symbol('execinfo.h', 'backtrace') diff --git a/src/libcamera/meson.build b/src/libcamera/meson.build index 1b69bc0dee54..ac6f597c6188 100644 --- a/src/libcamera/meson.build +++ b/src/libcamera/meson.build @@ -93,7 +93,7 @@ version_cpp = vcs_tag(command : [gen_version, meson.build_root()], libcamera_sources += version_cpp libcamera_deps = [ - cc.find_library('atomic', required: false), + libatomic_dep, cc.find_library('dl'), libudev, dependency('threads'), diff --git a/src/meson.build b/src/meson.build index d818d8b86d93..abf755936f2b 100644 --- a/src/meson.build +++ b/src/meson.build @@ -1,3 +1,20 @@ +# On some platforms gcc doesn't provide built-ins for atomic operations, +# explicit linking against libatomic is required. +if cxx.links(''' + #include + #include + int main(void) + { + std::atomic u32(0); + std::atomic u64(0); + return u32.load() + u64.load(); + } +''') + libatomic_dep = dependency('', required : false) +else + libatomic_dep = cc.find_library('atomic') +endif + if get_option('android') subdir('android') endif