summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLaurent Pinchart <laurent.pinchart@ideasonboard.com>2022-10-20 01:25:45 +0300
committerLaurent Pinchart <laurent.pinchart@ideasonboard.com>2022-10-24 23:11:37 +0300
commita8113fb3a89984cc65d51436480cee45b60543e8 (patch)
treef54e072d0b169004bcf2fc4b6262fccf2759e60a
parent11f5c3ad0561a4e4b1e06f477ab2022c69803ad2 (diff)
apps: Share common source between applications
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 a new src/apps/common/ directory and compile them in a static library to decrease the number of compilation operations. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Reviewed-by: Umang Jain <umang.jain@ideasonboard.com> Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
-rw-r--r--src/apps/cam/camera_session.cpp5
-rw-r--r--src/apps/cam/camera_session.h2
-rw-r--r--src/apps/cam/drm.cpp2
-rw-r--r--src/apps/cam/file_sink.cpp5
-rw-r--r--src/apps/cam/main.cpp7
-rw-r--r--src/apps/cam/meson.build14
-rw-r--r--src/apps/cam/sdl_sink.cpp5
-rw-r--r--src/apps/cam/sdl_texture.h2
-rw-r--r--src/apps/common/dng_writer.cpp (renamed from src/apps/cam/dng_writer.cpp)0
-rw-r--r--src/apps/common/dng_writer.h (renamed from src/apps/cam/dng_writer.h)0
-rw-r--r--src/apps/common/event_loop.cpp (renamed from src/apps/cam/event_loop.cpp)0
-rw-r--r--src/apps/common/event_loop.h (renamed from src/apps/cam/event_loop.h)0
-rw-r--r--src/apps/common/image.cpp (renamed from src/apps/cam/image.cpp)0
-rw-r--r--src/apps/common/image.h (renamed from src/apps/cam/image.h)0
-rw-r--r--src/apps/common/meson.build26
-rw-r--r--src/apps/common/options.cpp (renamed from src/apps/cam/options.cpp)0
-rw-r--r--src/apps/common/options.h (renamed from src/apps/cam/options.h)0
-rw-r--r--src/apps/common/stream_options.cpp (renamed from src/apps/cam/stream_options.cpp)0
-rw-r--r--src/apps/common/stream_options.h (renamed from src/apps/cam/stream_options.h)0
-rw-r--r--src/apps/lc-compliance/main.cpp3
-rw-r--r--src/apps/lc-compliance/meson.build3
-rw-r--r--src/apps/lc-compliance/simple_capture.h2
-rw-r--r--src/apps/meson.build2
-rw-r--r--src/apps/qcam/format_converter.cpp2
-rw-r--r--src/apps/qcam/main.cpp5
-rw-r--r--src/apps/qcam/main_window.cpp4
-rw-r--r--src/apps/qcam/main_window.h2
-rw-r--r--src/apps/qcam/meson.build13
-rw-r--r--src/apps/qcam/viewfinder_gl.cpp2
-rw-r--r--src/apps/qcam/viewfinder_qt.cpp2
30 files changed, 61 insertions, 47 deletions
diff --git a/src/apps/cam/camera_session.cpp b/src/apps/cam/camera_session.cpp
index 6b409c98..8fcec630 100644
--- a/src/apps/cam/camera_session.cpp
+++ b/src/apps/cam/camera_session.cpp
@@ -13,9 +13,11 @@
#include <libcamera/control_ids.h>
#include <libcamera/property_ids.h>
+#include "../common/event_loop.h"
+#include "../common/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 d562caae..0bab519f 100644
--- a/src/apps/cam/camera_session.h
+++ b/src/apps/cam/camera_session.h
@@ -21,7 +21,7 @@
#include <libcamera/request.h>
#include <libcamera/stream.h>
-#include "options.h"
+#include "../common/options.h"
class CaptureScript;
class FrameSink;
diff --git a/src/apps/cam/drm.cpp b/src/apps/cam/drm.cpp
index 2e4d7985..8779a713 100644
--- a/src/apps/cam/drm.cpp
+++ b/src/apps/cam/drm.cpp
@@ -24,7 +24,7 @@
#include <libdrm/drm_mode.h>
-#include "event_loop.h"
+#include "../common/event_loop.h"
namespace DRM {
diff --git a/src/apps/cam/file_sink.cpp b/src/apps/cam/file_sink.cpp
index 4dfacc10..b32aad24 100644
--- a/src/apps/cam/file_sink.cpp
+++ b/src/apps/cam/file_sink.cpp
@@ -15,9 +15,10 @@
#include <libcamera/camera.h>
-#include "dng_writer.h"
+#include "../common/dng_writer.h"
+#include "../common/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 d70130e2..5d8a57bc 100644
--- a/src/apps/cam/main.cpp
+++ b/src/apps/cam/main.cpp
@@ -14,11 +14,12 @@
#include <libcamera/libcamera.h>
#include <libcamera/property_ids.h>
+#include "../common/event_loop.h"
+#include "../common/options.h"
+#include "../common/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 297de64f..48c834ac 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 ee177227..a2f4abc1 100644
--- a/src/apps/cam/sdl_sink.cpp
+++ b/src/apps/cam/sdl_sink.cpp
@@ -19,8 +19,9 @@
#include <libcamera/camera.h>
#include <libcamera/formats.h>
-#include "event_loop.h"
-#include "image.h"
+#include "../common/event_loop.h"
+#include "../common/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 6ccd85ea..3993dd46 100644
--- a/src/apps/cam/sdl_texture.h
+++ b/src/apps/cam/sdl_texture.h
@@ -11,7 +11,7 @@
#include <SDL2/SDL.h>
-#include "image.h"
+#include "../common/image.h"
class SDLTexture
{
diff --git a/src/apps/cam/dng_writer.cpp b/src/apps/common/dng_writer.cpp
index c945edce..c945edce 100644
--- a/src/apps/cam/dng_writer.cpp
+++ b/src/apps/common/dng_writer.cpp
diff --git a/src/apps/cam/dng_writer.h b/src/apps/common/dng_writer.h
index 38f38f62..38f38f62 100644
--- a/src/apps/cam/dng_writer.h
+++ b/src/apps/common/dng_writer.h
diff --git a/src/apps/cam/event_loop.cpp b/src/apps/common/event_loop.cpp
index cb83845c..cb83845c 100644
--- a/src/apps/cam/event_loop.cpp
+++ b/src/apps/common/event_loop.cpp
diff --git a/src/apps/cam/event_loop.h b/src/apps/common/event_loop.h
index ef79e8e5..ef79e8e5 100644
--- a/src/apps/cam/event_loop.h
+++ b/src/apps/common/event_loop.h
diff --git a/src/apps/cam/image.cpp b/src/apps/common/image.cpp
index fe2cc6da..fe2cc6da 100644
--- a/src/apps/cam/image.cpp
+++ b/src/apps/common/image.cpp
diff --git a/src/apps/cam/image.h b/src/apps/common/image.h
index 7953b177..7953b177 100644
--- a/src/apps/cam/image.h
+++ b/src/apps/common/image.h
diff --git a/src/apps/common/meson.build b/src/apps/common/meson.build
new file mode 100644
index 00000000..479326cd
--- /dev/null
+++ b/src/apps/common/meson.build
@@ -0,0 +1,26 @@
+# SPDX-License-Identifier: CC0-1.0
+
+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])
diff --git a/src/apps/cam/options.cpp b/src/apps/common/options.cpp
index 4f7e8691..4f7e8691 100644
--- a/src/apps/cam/options.cpp
+++ b/src/apps/common/options.cpp
diff --git a/src/apps/cam/options.h b/src/apps/common/options.h
index 4ddd4987..4ddd4987 100644
--- a/src/apps/cam/options.h
+++ b/src/apps/common/options.h
diff --git a/src/apps/cam/stream_options.cpp b/src/apps/common/stream_options.cpp
index 3a5625f5..3a5625f5 100644
--- a/src/apps/cam/stream_options.cpp
+++ b/src/apps/common/stream_options.cpp
diff --git a/src/apps/cam/stream_options.h b/src/apps/common/stream_options.h
index 35e4e7c0..35e4e7c0 100644
--- a/src/apps/cam/stream_options.h
+++ b/src/apps/common/stream_options.h
diff --git a/src/apps/lc-compliance/main.cpp b/src/apps/lc-compliance/main.cpp
index 7eb52ae4..74e0d4df 100644
--- a/src/apps/lc-compliance/main.cpp
+++ b/src/apps/lc-compliance/main.cpp
@@ -14,8 +14,9 @@
#include <libcamera/libcamera.h>
+#include "../common/options.h"
+
#include "environment.h"
-#include "../cam/options.h"
using namespace libcamera;
diff --git a/src/apps/lc-compliance/meson.build b/src/apps/lc-compliance/meson.build
index 05d622be..51d9075a 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 9d31f7cb..fd9d2a97 100644
--- a/src/apps/lc-compliance/simple_capture.h
+++ b/src/apps/lc-compliance/simple_capture.h
@@ -11,7 +11,7 @@
#include <libcamera/libcamera.h>
-#include "../cam/event_loop.h"
+#include "../common/event_loop.h"
class SimpleCapture
{
diff --git a/src/apps/meson.build b/src/apps/meson.build
index b722a8f1..09987635 100644
--- a/src/apps/meson.build
+++ b/src/apps/meson.build
@@ -12,6 +12,8 @@ endif
libtiff = dependency('libtiff-4', required : false)
+subdir('common')
+
subdir('lc-compliance')
subdir('cam')
diff --git a/src/apps/qcam/format_converter.cpp b/src/apps/qcam/format_converter.cpp
index 9331da0c..de76b32c 100644
--- a/src/apps/qcam/format_converter.cpp
+++ b/src/apps/qcam/format_converter.cpp
@@ -14,7 +14,7 @@
#include <libcamera/formats.h>
-#include "../cam/image.h"
+#include "../common/image.h"
#define RGBSHIFT 8
#ifndef MAX
diff --git a/src/apps/qcam/main.cpp b/src/apps/qcam/main.cpp
index d3f01a85..36cb93a5 100644
--- a/src/apps/qcam/main.cpp
+++ b/src/apps/qcam/main.cpp
@@ -13,8 +13,9 @@
#include <libcamera/camera_manager.h>
-#include "../cam/options.h"
-#include "../cam/stream_options.h"
+#include "../common/options.h"
+#include "../common/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 f553ccb0..fb2db4aa 100644
--- a/src/apps/qcam/main_window.cpp
+++ b/src/apps/qcam/main_window.cpp
@@ -26,8 +26,8 @@
#include <QToolButton>
#include <QtDebug>
-#include "../cam/dng_writer.h"
-#include "../cam/image.h"
+#include "../common/dng_writer.h"
+#include "../common/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 95b64124..2e3e1b5c 100644
--- a/src/apps/qcam/main_window.h
+++ b/src/apps/qcam/main_window.h
@@ -27,7 +27,7 @@
#include <QQueue>
#include <QTimer>
-#include "../cam/stream_options.h"
+#include "../common/stream_options.h"
#include "viewfinder.h"
diff --git a/src/apps/qcam/meson.build b/src/apps/qcam/meson.build
index e298101e..eb0712d9 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 38ddad58..f83b99ad 100644
--- a/src/apps/qcam/viewfinder_gl.cpp
+++ b/src/apps/qcam/viewfinder_gl.cpp
@@ -16,7 +16,7 @@
#include <libcamera/formats.h>
-#include "../cam/image.h"
+#include "../common/image.h"
static const QList<libcamera::PixelFormat> supportedFormats{
/* YUV - packed (single plane) */
diff --git a/src/apps/qcam/viewfinder_qt.cpp b/src/apps/qcam/viewfinder_qt.cpp
index c20fd6bc..a7482bea 100644
--- a/src/apps/qcam/viewfinder_qt.cpp
+++ b/src/apps/qcam/viewfinder_qt.cpp
@@ -20,7 +20,7 @@
#include <QPainter>
#include <QtDebug>
-#include "../cam/image.h"
+#include "../common/image.h"
#include "format_converter.h"