1. update meson/cmake to change directory structure (move common files and plugins to gst/nnstreamer)
2. move nnstreamer meson-build to gst/nnstreamer
3. set project args to build nnstreamer
Signed-off-by: Jaeyun Jung <jy1210.jung@samsung.com>
SET(OBJECTS)
FOREACH(PRJ IN LISTS PROJECTS)
- ADD_SUBDIRECTORY(gst/${PRJ})
+ ADD_SUBDIRECTORY(gst/nnstreamer/${PRJ})
LIST(APPEND OBJECTS $<TARGET_OBJECTS:${PRJ}OBJ>)
ENDFOREACH(PRJ)
ENDIF(ENABLE_TENSORFLOW)
LIST(LENGTH FILTER_DEP FILTER_DEP_LEN)
-ADD_LIBRARY(nnstreamerStatic STATIC gst/nnstreamer/nnstreamer.c gst/nnstreamer/tensor_common.c gst/nnstreamer/tensor_repo.c gst/nnstreamer/nnstreamer_conf.c gst/nnstreamer/nnstreamer_subplugin.c ${OBJECTS})
+SET(NNST_COMMON_SRCS
+ gst/nnstreamer/nnstreamer.c
+ gst/nnstreamer/nnstreamer_conf.c
+ gst/nnstreamer/nnstreamer_subplugin.c
+ gst/nnstreamer/tensor_common.c
+ gst/nnstreamer/tensor_repo.c
+)
+
+ADD_LIBRARY(nnstreamerStatic STATIC ${NNST_COMMON_SRCS} ${OBJECTS})
SET_TARGET_PROPERTIES(nnstreamerStatic PROPERTIES OUTPUT_NAME nnstreamer)
TARGET_INCLUDE_DIRECTORIES(nnstreamerStatic PUBLIC ${pkgs_INCLUDE_DIRS})
TARGET_COMPILE_OPTIONS(nnstreamerStatic PUBLIC ${pkgs_CFLAGS_OTHER})
-ADD_LIBRARY(nnstreamer SHARED gst/nnstreamer/nnstreamer.c gst/nnstreamer/tensor_common.c gst/nnstreamer/tensor_repo.c ${OBJECTS})
+ADD_LIBRARY(nnstreamer SHARED ${NNST_COMMON_SRCS} ${OBJECTS})
TARGET_INCLUDE_DIRECTORIES(nnstreamer PUBLIC ${pkgs_INCLUDE_DIRS})
TARGET_COMPILE_OPTIONS(nnstreamer PUBLIC ${pkgs_CFLAGS_OTHER})
TARGET_LINK_LIBRARIES(nnstreamer ${pkgs_LIBRARIES} ${FILTER_LIB})
CONFIGURE_FILE(nnstreamer.pc.in nnstreamer.pc @ONLY)
-# For nnstreamer users (gst app developers using via gstreamer API)
-INSTALL(FILES gst/nnstreamer/tensor_typedef.h
- DESTINATION ${INCLUDE_INSTALL_DIR}/nnstreamer
- )
-
-# For nnstreamer custom filter developers
-INSTALL(FILES gst/nnstreamer/tensor_common.h gst/nnstreamer/tensor_filter_custom.h
+# tensor_typedef.h for nnstreamer users (gst app developers using via gstreamer API)
+# tensor_filter_custom.h for nnstreamer custom filter developers
+INSTALL(FILES gst/nnstreamer/tensor_typedef.h gst/nnstreamer/tensor_filter_custom.h
DESTINATION ${INCLUDE_INSTALL_DIR}/nnstreamer
- )
+)
INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/nnstreamer.pc
DESTINATION ${LIB_INSTALL_DIR}/pkgconfig
- )
+)
--- /dev/null
+subdir('nnstreamer')\r
+nnstreamer_inc = include_directories('.')
+nnstreamer_sources = []
+nnstreamer_headers = []
+
+# Dependencies
+nnstreamer_base_deps = [
+ glib_dep,
+ gst_dep,
+ gst_base_dep,
+ gst_controller_dep,
+ gst_video_dep,
+ gst_audio_dep,
+ libm_dep,
+ libdl_dep,
+ libpthread_dep
+]
+
+if have_orcc
+ nnstreamer_base_deps += [orc_dep]
+endif
+
+# For extra dependencies (subplugins, filters)
+nnstreamer_extra_deps = []
+
+# Add nnstreamer registerer and common sources
nnst_common_sources = [
'nnstreamer.c',
- 'tensor_repo.c',
- 'tensor_common.c'
+ 'nnstreamer_conf.c',
+ 'nnstreamer_subplugin.c',
+ 'tensor_common.c',
+ 'tensor_repo.c'
]
foreach s : nnst_common_sources
nnstreamer_sources += join_paths(meson.current_source_dir(), s)
endforeach
+
+# Common headers to be installed
+nnst_common_headers = [
+ 'tensor_typedef.h',
+ 'tensor_filter_custom.h'
+]
+
+foreach h : nnst_common_headers
+ nnstreamer_headers += join_paths(meson.current_source_dir(), h)
+endforeach
+
+# Add plugins
+nnst_plugins = [
+ 'tensor_aggregator',
+ 'tensor_converter',
+ 'tensor_decoder',
+ 'tensor_demux',
+ 'tensor_merge',
+ 'tensor_mux',
+ 'tensor_saveload',
+ 'tensor_sink',
+ 'tensor_split',
+ 'tensor_transform',
+ 'tensor_filter',
+ 'tensor_reposrc',
+ 'tensor_reposink'
+]
+
+foreach p : nnst_plugins
+ subdir(p)
+endforeach
+
+# Build libraries ("both_libraries" are supported from 0.46.)
+nnstreamer_shared = shared_library('nnstreamer',
+ nnstreamer_sources,
+ dependencies: [nnstreamer_base_deps, nnstreamer_extra_deps],
+ include_directories: nnstreamer_inc,
+ install: true,
+ install_dir: plugins_install_dir
+)
+
+nnstreamer_static = static_library('nnstreamer',
+ nnstreamer_sources,
+ dependencies: [nnstreamer_base_deps, nnstreamer_extra_deps],
+ include_directories: nnstreamer_inc,
+ install: true,
+ install_dir: libs_install_dir
+)
+
+nnstreamer_lib = nnstreamer_shared
+if get_option('default_library') == 'static'
+ nnstreamer_lib = nnstreamer_static
+endif
+
+nnstreamer_dep = declare_dependency(link_with: nnstreamer_lib,
+ dependencies: nnstreamer_base_deps,
+ include_directories: nnstreamer_inc)
+
+# Install headers into /{includedir}/nnstreamer
+install_headers(nnstreamer_headers,
+ subdir: 'nnstreamer'
+)
tensor_filter_tfcore_lib_shared = shared_library('tensor_filter_tfcore',
['tensor_filter_tensorflow_core.cc'],
- cpp_args: nnstreamer_base_args + ['-Wno-sign-compare'],
+ cpp_args: ['-Wno-sign-compare'],
dependencies: [tf_dep, protobuf_dep, glib_dep, gst_dep],
include_directories: nnstreamer_inc,
install: true,
tensor_filter_tfcore_lib_static = static_library('tensor_filter_tfcore',
['tensor_filter_tensorflow_core.cc'],
- cpp_args: nnstreamer_base_args + ['-Wno-sign-compare'],
+ cpp_args: ['-Wno-sign-compare'],
dependencies: [tf_dep, protobuf_dep, glib_dep, gst_dep],
include_directories: nnstreamer_inc,
install: true,
tensor_filter_tflitecore_lib_shared = shared_library('tensor_filter_tflitecore',
['tensor_filter_tensorflow_lite_core.cc'],
- cpp_args: nnstreamer_base_args + ['-Wno-sign-compare'],
+ cpp_args: ['-Wno-sign-compare'],
dependencies: [tflite_dep, libpthread_dep, libdl_dep, glib_dep, gst_dep],
include_directories: nnstreamer_inc,
install: true,
tensor_filter_tflitecore_lib_static = static_library('tensor_filter_tflitecore',
['tensor_filter_tensorflow_lite_core.cc'],
- cpp_args: nnstreamer_base_args + ['-Wno-sign-compare'],
+ cpp_args: ['-Wno-sign-compare'],
dependencies: [tflite_dep, libpthread_dep, libdl_dep, glib_dep, gst_dep],
include_directories: nnstreamer_inc,
install: true,
]
)
-add_project_arguments('-DVERSION="'+meson.project_version()+'"', language: 'c')
+add_project_arguments('-DVERSION="'+meson.project_version()+'"', language: ['c', 'cpp'])
cc = meson.get_compiler('c')
cxx = meson.get_compiler('cpp')
nnstreamer_conf = configuration_data()
nnstreamer_conf.set('VERSION', meson.project_version())
-nnstreamer_inc = include_directories('gst/nnstreamer')
-nnstreamer_sources = []
-nnstreamer_base_args = []
-
-# Common headers to be installed
-nnstreamer_headers = [
- 'gst/nnstreamer/tensor_common.h',
- 'gst/nnstreamer/tensor_typedef.h',
- 'gst/nnstreamer/tensor_filter_custom.h'
-]
-
# Set install path
nnstreamer_prefix = get_option('prefix')
nnstreamer_libdir = join_paths(nnstreamer_prefix, get_option('libdir'))
libdl_dep = cc.find_library('dl') # DL library
libpthread_dep = cxx.find_library('pthread') # pthread for tensorflow-lite
-nnstreamer_base_deps = [
- glib_dep,
- gst_dep,
- gst_base_dep,
- gst_controller_dep,
- gst_video_dep,
- gst_audio_dep,
- libm_dep,
- libdl_dep,
- libpthread_dep
-]
-
-# For extra dependencies (subplugins, filters)
-nnstreamer_extra_deps = []
-
# Orc
have_orcc = false
if orc_dep.found() and orcc.found()
have_orcc = true
orcc_args = [orcc, '--include', 'glib.h']
- nnstreamer_base_deps += [orc_dep]
- nnstreamer_base_args += ['-DHAVE_ORC=1']
+ add_project_arguments('-DHAVE_ORC=1', language: ['c', 'cpp'])
else
message('Cannot find orc library')
- nnstreamer_base_args += ['-DDISABLE_ORC=1']
+ add_project_arguments('-DDISABLE_ORC=1', language: ['c', 'cpp'])
endif
# Tensorflow
if tf_dep.found() and protobuf_dep.found()
have_tensorflow = true
- nnstreamer_base_args += ['-DENABLE_TENSORFLOW=1']
+ add_project_arguments('-DENABLE_TENSORFLOW=1', language: ['c', 'cpp'])
else
message('Cannot find tensorflow')
endif
if tflite_dep.found()
have_tensorflow_lite = true
- nnstreamer_base_args += ['-DENABLE_TENSORFLOW_LITE=1']
+ add_project_arguments('-DENABLE_TENSORFLOW_LITE=1', language: ['c', 'cpp'])
else
message('Cannot find tensorflow-lite')
endif
endif
# Build nnstreamer (common, plugins)
-projects = [
- 'nnstreamer',
- 'tensor_aggregator',
- 'tensor_converter',
- 'tensor_decoder',
- 'tensor_demux',
- 'tensor_merge',
- 'tensor_mux',
- 'tensor_saveload',
- 'tensor_sink',
- 'tensor_split',
- 'tensor_transform',
- 'tensor_filter',
- 'tensor_reposrc',
- 'tensor_reposink'
-]
-
-foreach p : projects
- subdir('gst/'+ p)
-endforeach
-
-# "both_libraries" are supported from 0.46.
-nnstreamer_shared = shared_library('nnstreamer',
- nnstreamer_sources,
- c_args: nnstreamer_base_args,
- dependencies: [nnstreamer_base_deps, nnstreamer_extra_deps],
- include_directories: nnstreamer_inc,
- install: true,
- install_dir: plugins_install_dir
-)
+subdir('gst')
-nnstreamer_static = static_library('nnstreamer',
- nnstreamer_sources,
- c_args: nnstreamer_base_args,
- dependencies: [nnstreamer_base_deps, nnstreamer_extra_deps],
- include_directories: nnstreamer_inc,
- install: true,
- install_dir: libs_install_dir
-)
+# Build nnstreamer examples
+subdir('nnstreamer_example')
-nnstreamer_lib = nnstreamer_shared
-if get_option('default_library') == 'static'
- nnstreamer_lib = nnstreamer_static
+# Build unittests
+if get_option('ENABLE_TEST')
+ subdir('tests')
endif
-nnstreamer_dep = declare_dependency(link_with: nnstreamer_lib, include_directories: nnstreamer_inc)
-
-# Install headers into /{includedir}/nnstreamer
-install_headers(nnstreamer_headers,
- subdir: 'nnstreamer'
-)
-
configure_file(input: 'nnstreamer.pc.in', output: 'nnstreamer.pc',
install: true,
install_dir: join_paths(libs_install_dir, 'pkgconfig'),
configuration: nnstreamer_conf
)
-
-# Build nnstreamer examples
-subdir('nnstreamer_example')
-
-# Build unittests
-if get_option('ENABLE_TEST')
- subdir('tests')
-endif
%ifarch x86_64 aarch64
meson --buildtype=plain --werror --prefix=%{_prefix} --libdir=%{_libdir} --bindir=%{nnstexampledir} --includedir=%{_includedir} -DINSTALL_EXAMPLES=true build
- export TEST_TENSORFLOW=1
%else
meson --buildtype=plain --werror --prefix=%{_prefix} --libdir=%{_libdir} --bindir=%{nnstexampledir} --includedir=%{_includedir} -DINSTALL_EXAMPLES=true -DENABLE_TENSORFLOW=false build
%endif
pushd build
# Copy bmp2png for ssat
cp ./tests/bmp2png ../tests
- export LD_LIBRARY_PATH=$(pwd):$(pwd)/gst/tensor_filter
+ export LD_LIBRARY_PATH=$(pwd)/gst/nnstreamer:$(pwd)/gst/nnstreamer/tensor_filter
+ %ifarch x86_64 aarch64
+ export TEST_TENSORFLOW=1
+ %endif
./tests/unittest_common
./tests/unittest_sink --gst-plugin-path=.
./tests/unittest_plugins --gst-plugin-path=.
cp -r result %{buildroot}%{_datadir}/nnstreamer/unittest/
%endif
-install build/libnnstreamer.a %{buildroot}%{_libdir}/
-install build/gst/tensor_filter/*.a %{buildroot}%{_libdir}/
+install build/gst/nnstreamer/libnnstreamer.a %{buildroot}%{_libdir}/
+install build/gst/nnstreamer/tensor_filter/*.a %{buildroot}%{_libdir}/
%post -p /sbin/ldconfig
%postun -p /sbin/ldconfig
# This custom filter is used in unittest_sink.
nnscustom_framecounter_lib = library('nnscustom_framecounter',
'nnstreamer_sink/nnscustom_framecounter.c',
- c_args: nnstreamer_base_args,
dependencies: [glib_dep],
include_directories: nnstreamer_inc)
nnstreamer_unittest_deps = [
- nnstreamer_base_deps,
nnstreamer_dep,
gst_app_dep,
gst_check_dep,
# Run unittest_common
unittest_common = executable('unittest_common',
'common/unittest_common.cpp',
- cpp_args: nnstreamer_base_args,
dependencies: [nnstreamer_unittest_deps])
test('unittest_common', unittest_common)
# Run unittest_sink
unittest_sink = executable('unittest_sink',
'nnstreamer_sink/unittest_sink.cpp',
- cpp_args: nnstreamer_base_args,
dependencies: [nnstreamer_unittest_deps])
test('unittest_sink', unittest_sink, args: ['--gst-plugin-path=../'])
# Run unittest_plugins
unittest_plugins = executable('unittest_plugins',
'nnstreamer_plugins/unittest_plugins.cpp',
- cpp_args: nnstreamer_base_args,
dependencies: [nnstreamer_unittest_deps])
test('unittest_plugins', unittest_plugins, args: ['--gst-plugin-path=../'])
}
#ifdef HAVE_ORC
-#include "../../gst/tensor_transform/transform-orc.h"
+#include "../../gst/nnstreamer/tensor_transform/transform-orc.h"
/**
* @brief Test for tensor_transform orc functions (add constant value)