-nntrainer_inc = include_directories('./include')
+nntrainer_inc = [
+ include_directories('.'),
+ include_directories('../api', '../api/ccapi/include')
+]
+
+# meson provides include_directories. But there is no support to get the absolute path from the object.
+# to feed to the android.mk, sadly nntrainer_inc_abs is saved as well
+nntrainer_inc_abs = [
+ meson.current_source_dir(),
+ meson.source_root() / 'api',
+ meson.source_root() / 'api' / 'ccapi' / 'include'
+]
+
+nntrainer_sources = []
+nntrainer_headers = [
+ meson.current_source_dir() / 'nntrainer_log.h',
+ meson.current_source_dir() / 'nntrainer_logger.h',
+ meson.current_source_dir() / 'nntrainer_error.h',
+ meson.current_source_dir() / 'app_context.h',
+]
# Dependencies
nntrainer_base_deps=[
- openmp_dep,
blas_dep,
iniparser_dep,
+ ml_api_common_dep,
libm_dep,
libdl_dep,
- thread_dep
+ thread_dep,
+ openmp_dep
]
-if build_platform == 'tizen'
+if get_option('platform') == 'tizen'
nntrainer_base_deps += dependency('dlog')
endif
-nntrainer_sources = [
- 'src/neuralnet.cpp',
- 'src/tensor.cpp',
- 'src/layer.cpp',
- 'src/input_layer.cpp',
- 'src/fc_layer.cpp',
- 'src/bn_layer.cpp',
- 'src/loss_layer.cpp',
- 'src/databuffer.cpp',
- 'src/databuffer_file.cpp',
- 'src/databuffer_func.cpp',
- 'src/nntrainer_logger.cpp',
- 'src/optimizer.cpp',
- 'src/util_func.cpp',
- 'src/parse_util.cpp',
- 'src/tensor_dim.cpp',
- 'src/conv2d_layer.cpp',
- 'src/lazy_tensor.cpp',
- 'src/pooling2d_layer.cpp',
- 'src/flatten_layer.cpp'
+nntrainer_elements = [
+ 'compiler',
+ 'dataset',
+ 'layers',
+ 'models',
+ 'optimizers',
+ 'tensor',
+ 'utils',
+ 'graph'
]
-nntrainer_headers = [
- 'include/neuralnet.h',
- 'include/tensor.h',
- 'include/layer.h',
- 'include/input_layer.h',
- 'include/fc_layer.h',
- 'include/bn_layer.h',
- 'include/loss_layer.h',
- 'include/databuffer.h',
- 'include/databuffer_file.h',
- 'include/databuffer_func.h',
- 'include/nntrainer_log.h',
- 'include/nntrainer_logger.h',
- 'include/optimizer.h',
- 'include/util_func.h',
- 'include/parse_util.h',
- 'include/tensor_dim.h',
- 'include/conv2d_layer.h',
- 'include/lazy_tensor.h',
- 'include/pooling2d_layer.h',
- 'include/flatten_layer.h'
+foreach elem : nntrainer_elements
+ subdir(elem)
+ nntrainer_inc += include_directories(elem)
+ nntrainer_inc_abs += meson.current_source_dir() / elem
+endforeach
+
+
+nntrainer_common_sources = [
+ 'nntrainer_logger.cpp',
+ 'app_context.cpp'
]
-# Build libraries
-nntrainer_shared = shared_library('nntrainer',
- nntrainer_sources,
- dependencies: nntrainer_base_deps,
- include_directories: nntrainer_inc,
- install: true,
- install_dir: nntrainer_libdir
-)
+foreach s : nntrainer_common_sources
+ nntrainer_sources += meson.current_source_dir() / s
+endforeach
-nntrainer_static = static_library('nntrainer',
- nntrainer_sources,
- dependencies: nntrainer_base_deps,
- include_directories: nntrainer_inc,
- install: true,
- install_dir: nntrainer_libdir
-)
+if get_option('platform') == 'android'
+ nntrainer_dep = found_dummy_dep
+else
+ # Build libraries
+ nntrainer_shared = shared_library('nntrainer',
+ nntrainer_sources,
+ dependencies: nntrainer_base_deps,
+ include_directories: nntrainer_inc,
+ install: true,
+ install_dir: nntrainer_libdir
+ )
-nntrainer_lib = nntrainer_shared
-if get_option('default_library') == 'static'
- nntrainer_lib = nntrainer_static
-endif
+ nntrainer_static = static_library('nntrainer',
+ nntrainer_sources,
+ dependencies: nntrainer_base_deps,
+ include_directories: nntrainer_inc,
+ install: true,
+ install_dir: nntrainer_libdir
+ )
-nntrainer_dep = declare_dependency(link_with: nntrainer_lib,
- dependencies: nntrainer_base_deps,
- include_directories: nntrainer_inc
-)
+ nntrainer_lib = nntrainer_shared
+ if get_option('default_library') == 'static'
+ nntrainer_lib = nntrainer_static
+ endif
+
+ nntrainer_dep = declare_dependency(link_with: nntrainer_lib,
+ dependencies: nntrainer_base_deps,
+ include_directories: nntrainer_inc
+ )
+endif
# Install headers
install_headers(nntrainer_headers,
- subdir: 'nntrainer'
+ install_dir: nntrainer_includedir,
)
+