From patchwork Wed Oct 19 23:15:37 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Laurent Pinchart X-Patchwork-Id: 17650 Return-Path: X-Original-To: parsemail@patchwork.libcamera.org Delivered-To: parsemail@patchwork.libcamera.org Received: from lancelot.ideasonboard.com (lancelot.ideasonboard.com [92.243.16.209]) by patchwork.libcamera.org (Postfix) with ESMTPS id 290EAC327C for ; Wed, 19 Oct 2022 23:16:17 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id D460D62E8C; Thu, 20 Oct 2022 01:16:16 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=libcamera.org; s=mail; t=1666221376; bh=pCr3sJUk3p4so3UXHmEcJQE/it87CV9I2iElBI3Gf2I=; h=To:Date:In-Reply-To:References:Subject:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To: From; b=nIEdFNw1bW6I8uUlR/LYYgXNbY9FkcV4+zmRC7Jpz3jZC1DhSqfGlNshzEmYxHgx+ C2m1uIbEnqMwwkwlvn0yn1vI+rtqzBLC8yZsavl3+ObjGpoxUOW1ZXZJ6w6jgBYSoM nHD0W9sDZurRANVLsBtVrHKdPoIzhWSaQKxpQkLVb5dSOLHLY/quUPmEIibWoMIjMU MxE9HIN1KWmedtwRJ37bM6MWUsd+C9ELTtWa+lW8k5g/U6pBiIr4PdW5pT1pmyNOE/ H8FDME8po4hsn6iFXDP3eXZJ1KIfxoNUqR7z32DFUryts5gu+7rsaPnyQHr4+HBr8H yNesYx1AflOTQ== 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 6E62A62E85 for ; Thu, 20 Oct 2022 01:16:14 +0200 (CEST) Authentication-Results: lancelot.ideasonboard.com; dkim=pass (1024-bit key; unprotected) header.d=ideasonboard.com header.i=@ideasonboard.com header.b="vrax0qJE"; dkim-atps=neutral Received: from pendragon.ideasonboard.com (62-78-145-57.bb.dnainternet.fi [62.78.145.57]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id ECDE88BF for ; Thu, 20 Oct 2022 01:16:13 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1666221374; bh=pCr3sJUk3p4so3UXHmEcJQE/it87CV9I2iElBI3Gf2I=; h=From:To:Subject:Date:In-Reply-To:References:From; b=vrax0qJEpPbBLYGYLpLwgAmaq9+aaUOyY6GTxiPEDLl1UGLqECekyxeXRalKXew21 h5iUqRPhESCWgRriHjrocZZc4rnMAiQojs2B9rksOeVn80cD1ubZlE5J0pxvgboQTz 1hNezO0kGPiKmStGT7jcc/e2A09brNTJxRL5cmT8= To: libcamera-devel@lists.libcamera.org Date: Thu, 20 Oct 2022 02:15:37 +0300 Message-Id: <20221019231537.26880-7-laurent.pinchart@ideasonboard.com> X-Mailer: git-send-email 2.37.3 In-Reply-To: <20221019231537.26880-1-laurent.pinchart@ideasonboard.com> References: <20221019231537.26880-1-laurent.pinchart@ideasonboard.com> MIME-Version: 1.0 Subject: [libcamera-devel] [PATCH v1 6/6] apps: Shared common source between applications 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-Patchwork-Original-From: Laurent Pinchart via libcamera-devel From: Laurent Pinchart Reply-To: Laurent Pinchart Errors-To: libcamera-devel-bounces@lists.libcamera.org Sender: "libcamera-devel" Multiple source files in the src/apps/cam/ directory are used by cam, qcam and lc-compliance. They are compiled separately for each application. Move them to the src/apps/ directory and compile them in a static library to decrease the number of compilation operations. Signed-off-by: Laurent Pinchart --- src/apps/cam/camera_session.cpp | 5 +++-- src/apps/cam/camera_session.h | 2 +- src/apps/cam/drm.cpp | 2 +- src/apps/cam/file_sink.cpp | 5 +++-- src/apps/cam/main.cpp | 7 ++++--- src/apps/cam/meson.build | 14 ++------------ src/apps/cam/sdl_sink.cpp | 5 +++-- src/apps/cam/sdl_texture.h | 2 +- src/apps/{cam => }/dng_writer.cpp | 0 src/apps/{cam => }/dng_writer.h | 0 src/apps/{cam => }/event_loop.cpp | 0 src/apps/{cam => }/event_loop.h | 0 src/apps/{cam => }/image.cpp | 0 src/apps/{cam => }/image.h | 0 src/apps/lc-compliance/main.cpp | 2 +- src/apps/lc-compliance/meson.build | 3 +-- src/apps/lc-compliance/simple_capture.h | 2 +- src/apps/meson.build | 25 +++++++++++++++++++++++++ src/apps/{cam => }/options.cpp | 0 src/apps/{cam => }/options.h | 0 src/apps/qcam/format_converter.cpp | 2 +- src/apps/qcam/main.cpp | 4 ++-- src/apps/qcam/main_window.cpp | 4 ++-- src/apps/qcam/main_window.h | 2 +- src/apps/qcam/meson.build | 13 ++----------- src/apps/qcam/viewfinder_gl.cpp | 2 +- src/apps/qcam/viewfinder_qt.cpp | 2 +- src/apps/{cam => }/stream_options.cpp | 0 src/apps/{cam => }/stream_options.h | 0 29 files changed, 56 insertions(+), 47 deletions(-) rename src/apps/{cam => }/dng_writer.cpp (100%) rename src/apps/{cam => }/dng_writer.h (100%) rename src/apps/{cam => }/event_loop.cpp (100%) rename src/apps/{cam => }/event_loop.h (100%) rename src/apps/{cam => }/image.cpp (100%) rename src/apps/{cam => }/image.h (100%) rename src/apps/{cam => }/options.cpp (100%) rename src/apps/{cam => }/options.h (100%) rename src/apps/{cam => }/stream_options.cpp (100%) rename src/apps/{cam => }/stream_options.h (100%) diff --git a/src/apps/cam/camera_session.cpp b/src/apps/cam/camera_session.cpp index 6b409c983b86..c581410e4dec 100644 --- a/src/apps/cam/camera_session.cpp +++ b/src/apps/cam/camera_session.cpp @@ -13,9 +13,11 @@ #include #include +#include "../event_loop.h" +#include "../stream_options.h" + #include "camera_session.h" #include "capture_script.h" -#include "event_loop.h" #include "file_sink.h" #ifdef HAVE_KMS #include "kms_sink.h" @@ -24,7 +26,6 @@ #ifdef HAVE_SDL #include "sdl_sink.h" #endif -#include "stream_options.h" using namespace libcamera; diff --git a/src/apps/cam/camera_session.h b/src/apps/cam/camera_session.h index d562caae0794..46748d5c98ac 100644 --- a/src/apps/cam/camera_session.h +++ b/src/apps/cam/camera_session.h @@ -21,7 +21,7 @@ #include #include -#include "options.h" +#include "../options.h" class CaptureScript; class FrameSink; diff --git a/src/apps/cam/drm.cpp b/src/apps/cam/drm.cpp index 2e4d7985245d..3ad33175fdd3 100644 --- a/src/apps/cam/drm.cpp +++ b/src/apps/cam/drm.cpp @@ -24,7 +24,7 @@ #include -#include "event_loop.h" +#include "../event_loop.h" namespace DRM { diff --git a/src/apps/cam/file_sink.cpp b/src/apps/cam/file_sink.cpp index 9d60c04e1cf4..dc109af729fe 100644 --- a/src/apps/cam/file_sink.cpp +++ b/src/apps/cam/file_sink.cpp @@ -15,9 +15,10 @@ #include -#include "dng_writer.h" +#include "../dng_writer.h" +#include "../image.h" + #include "file_sink.h" -#include "image.h" using namespace libcamera; diff --git a/src/apps/cam/main.cpp b/src/apps/cam/main.cpp index d70130e2ab81..85a678f86819 100644 --- a/src/apps/cam/main.cpp +++ b/src/apps/cam/main.cpp @@ -14,11 +14,12 @@ #include #include +#include "../event_loop.h" +#include "../options.h" +#include "../stream_options.h" + #include "camera_session.h" -#include "event_loop.h" #include "main.h" -#include "options.h" -#include "stream_options.h" using namespace libcamera; diff --git a/src/apps/cam/meson.build b/src/apps/cam/meson.build index 297de64fbdd9..48c834ace71b 100644 --- a/src/apps/cam/meson.build +++ b/src/apps/cam/meson.build @@ -10,16 +10,12 @@ cam_enabled = true cam_sources = files([ 'camera_session.cpp', 'capture_script.cpp', - 'event_loop.cpp', 'file_sink.cpp', 'frame_sink.cpp', - 'image.cpp', 'main.cpp', - 'options.cpp', - 'stream_options.cpp', ]) -cam_cpp_args = [] +cam_cpp_args = [apps_cpp_args] libdrm = dependency('libdrm', required : false) libjpeg = dependency('libjpeg', required : false) @@ -49,14 +45,8 @@ if libsdl2.found() endif endif -if libtiff.found() - cam_cpp_args += ['-DHAVE_TIFF'] - cam_sources += files([ - 'dng_writer.cpp', - ]) -endif - cam = executable('cam', cam_sources, + link_with : apps_lib, dependencies : [ libatomic, libcamera_public, diff --git a/src/apps/cam/sdl_sink.cpp b/src/apps/cam/sdl_sink.cpp index ee177227dbca..ec9dd1868332 100644 --- a/src/apps/cam/sdl_sink.cpp +++ b/src/apps/cam/sdl_sink.cpp @@ -19,8 +19,9 @@ #include #include -#include "event_loop.h" -#include "image.h" +#include "../event_loop.h" +#include "../image.h" + #ifdef HAVE_LIBJPEG #include "sdl_texture_mjpg.h" #endif diff --git a/src/apps/cam/sdl_texture.h b/src/apps/cam/sdl_texture.h index 6ccd85eab390..6890f239ddd6 100644 --- a/src/apps/cam/sdl_texture.h +++ b/src/apps/cam/sdl_texture.h @@ -11,7 +11,7 @@ #include -#include "image.h" +#include "../image.h" class SDLTexture { diff --git a/src/apps/cam/dng_writer.cpp b/src/apps/dng_writer.cpp similarity index 100% rename from src/apps/cam/dng_writer.cpp rename to src/apps/dng_writer.cpp diff --git a/src/apps/cam/dng_writer.h b/src/apps/dng_writer.h similarity index 100% rename from src/apps/cam/dng_writer.h rename to src/apps/dng_writer.h diff --git a/src/apps/cam/event_loop.cpp b/src/apps/event_loop.cpp similarity index 100% rename from src/apps/cam/event_loop.cpp rename to src/apps/event_loop.cpp diff --git a/src/apps/cam/event_loop.h b/src/apps/event_loop.h similarity index 100% rename from src/apps/cam/event_loop.h rename to src/apps/event_loop.h diff --git a/src/apps/cam/image.cpp b/src/apps/image.cpp similarity index 100% rename from src/apps/cam/image.cpp rename to src/apps/image.cpp diff --git a/src/apps/cam/image.h b/src/apps/image.h similarity index 100% rename from src/apps/cam/image.h rename to src/apps/image.h diff --git a/src/apps/lc-compliance/main.cpp b/src/apps/lc-compliance/main.cpp index 7eb52ae4c094..2cc6b77fc78e 100644 --- a/src/apps/lc-compliance/main.cpp +++ b/src/apps/lc-compliance/main.cpp @@ -15,7 +15,7 @@ #include #include "environment.h" -#include "../cam/options.h" +#include "../options.h" using namespace libcamera; diff --git a/src/apps/lc-compliance/meson.build b/src/apps/lc-compliance/meson.build index 05d622be0a40..51d9075ac30b 100644 --- a/src/apps/lc-compliance/meson.build +++ b/src/apps/lc-compliance/meson.build @@ -11,8 +11,6 @@ endif lc_compliance_enabled = true lc_compliance_sources = files([ - '../cam/event_loop.cpp', - '../cam/options.cpp', 'environment.cpp', 'main.cpp', 'simple_capture.cpp', @@ -21,6 +19,7 @@ lc_compliance_sources = files([ lc_compliance = executable('lc-compliance', lc_compliance_sources, cpp_args : [ '-fexceptions' ], + link_with : apps_lib, dependencies : [ libatomic, libcamera_public, diff --git a/src/apps/lc-compliance/simple_capture.h b/src/apps/lc-compliance/simple_capture.h index 9d31f7cb2e53..5a64395d986c 100644 --- a/src/apps/lc-compliance/simple_capture.h +++ b/src/apps/lc-compliance/simple_capture.h @@ -11,7 +11,7 @@ #include -#include "../cam/event_loop.h" +#include "../event_loop.h" class SimpleCapture { diff --git a/src/apps/meson.build b/src/apps/meson.build index 95f1f5190c7a..e1879806c99e 100644 --- a/src/apps/meson.build +++ b/src/apps/meson.build @@ -10,6 +10,31 @@ endif libtiff = dependency('libtiff-4', required : false) +apps_sources = files([ + 'image.cpp', + 'options.cpp', + 'stream_options.cpp', +]) + +apps_cpp_args = [] + +if libevent.found() + apps_sources += files([ + 'event_loop.cpp', + ]) +endif + +if libtiff.found() + apps_cpp_args += ['-DHAVE_TIFF'] + apps_sources += files([ + 'dng_writer.cpp', + ]) +endif + +apps_lib = static_library('apps', apps_sources, + cpp_args : apps_cpp_args, + dependencies : [libcamera_public]) + subdir('lc-compliance') subdir('cam') diff --git a/src/apps/cam/options.cpp b/src/apps/options.cpp similarity index 100% rename from src/apps/cam/options.cpp rename to src/apps/options.cpp diff --git a/src/apps/cam/options.h b/src/apps/options.h similarity index 100% rename from src/apps/cam/options.h rename to src/apps/options.h diff --git a/src/apps/qcam/format_converter.cpp b/src/apps/qcam/format_converter.cpp index 9331da0ce7a3..0390e0184454 100644 --- a/src/apps/qcam/format_converter.cpp +++ b/src/apps/qcam/format_converter.cpp @@ -14,7 +14,7 @@ #include -#include "../cam/image.h" +#include "../image.h" #define RGBSHIFT 8 #ifndef MAX diff --git a/src/apps/qcam/main.cpp b/src/apps/qcam/main.cpp index d3f01a85f1fb..0373c78d53c8 100644 --- a/src/apps/qcam/main.cpp +++ b/src/apps/qcam/main.cpp @@ -13,8 +13,8 @@ #include -#include "../cam/options.h" -#include "../cam/stream_options.h" +#include "../options.h" +#include "../stream_options.h" #include "main_window.h" #include "message_handler.h" diff --git a/src/apps/qcam/main_window.cpp b/src/apps/qcam/main_window.cpp index f553ccb01805..a90e95d545e1 100644 --- a/src/apps/qcam/main_window.cpp +++ b/src/apps/qcam/main_window.cpp @@ -26,8 +26,8 @@ #include #include -#include "../cam/dng_writer.h" -#include "../cam/image.h" +#include "../dng_writer.h" +#include "../image.h" #include "cam_select_dialog.h" #ifndef QT_NO_OPENGL diff --git a/src/apps/qcam/main_window.h b/src/apps/qcam/main_window.h index 95b64124336f..8d378a1ff768 100644 --- a/src/apps/qcam/main_window.h +++ b/src/apps/qcam/main_window.h @@ -27,7 +27,7 @@ #include #include -#include "../cam/stream_options.h" +#include "../stream_options.h" #include "viewfinder.h" diff --git a/src/apps/qcam/meson.build b/src/apps/qcam/meson.build index e298101e2c43..eb0712d91351 100644 --- a/src/apps/qcam/meson.build +++ b/src/apps/qcam/meson.build @@ -15,9 +15,6 @@ endif qcam_enabled = true qcam_sources = files([ - '../cam/image.cpp', - '../cam/options.cpp', - '../cam/stream_options.cpp', 'cam_select_dialog.cpp', 'format_converter.cpp', 'main.cpp', @@ -36,14 +33,7 @@ qcam_resources = files([ 'assets/feathericons/feathericons.qrc', ]) -qt5_cpp_args = ['-DQT_NO_KEYWORDS'] - -if libtiff.found() - qt5_cpp_args += ['-DHAVE_TIFF'] - qcam_sources += files([ - '../cam/dng_writer.cpp', - ]) -endif +qt5_cpp_args = [apps_cpp_args, '-DQT_NO_KEYWORDS'] if cxx.has_header_symbol('QOpenGLWidget', 'QOpenGLWidget', dependencies : qt5_dep, args : '-fPIC') @@ -73,6 +63,7 @@ resources = qt5.preprocess(moc_headers: qcam_moc_headers, qcam = executable('qcam', qcam_sources, resources, install : true, + link_with : apps_lib, dependencies : [ libatomic, libcamera_public, diff --git a/src/apps/qcam/viewfinder_gl.cpp b/src/apps/qcam/viewfinder_gl.cpp index 38ddad58e09e..7b791765734e 100644 --- a/src/apps/qcam/viewfinder_gl.cpp +++ b/src/apps/qcam/viewfinder_gl.cpp @@ -16,7 +16,7 @@ #include -#include "../cam/image.h" +#include "../image.h" static const QList supportedFormats{ /* YUV - packed (single plane) */ diff --git a/src/apps/qcam/viewfinder_qt.cpp b/src/apps/qcam/viewfinder_qt.cpp index c20fd6bc8fc2..e4efc587c759 100644 --- a/src/apps/qcam/viewfinder_qt.cpp +++ b/src/apps/qcam/viewfinder_qt.cpp @@ -20,7 +20,7 @@ #include #include -#include "../cam/image.h" +#include "../image.h" #include "format_converter.h" diff --git a/src/apps/cam/stream_options.cpp b/src/apps/stream_options.cpp similarity index 100% rename from src/apps/cam/stream_options.cpp rename to src/apps/stream_options.cpp diff --git a/src/apps/cam/stream_options.h b/src/apps/stream_options.h similarity index 100% rename from src/apps/cam/stream_options.h rename to src/apps/stream_options.h