diff --git a/meson.build b/meson.build new file mode 100644 index 0000000..1c9183c --- /dev/null +++ b/meson.build @@ -0,0 +1,9 @@ +project('4DSSE', 'cpp', version: '0.0.1a', default_options: ['cpp_std=c++23']) + +# Add default visibility for all C++ targets +add_project_arguments('-fvisibility=default', language: 'cpp') +add_project_arguments('-Wl,-export_dynamic', language: 'cpp') + + +subdir('src') +subdir('tests') \ No newline at end of file diff --git a/mk b/mk new file mode 100755 index 0000000..d9ba04d --- /dev/null +++ b/mk @@ -0,0 +1,9 @@ +#!/bin/bash + +# if build directory is present, remove it +if [ -d "build" ]; then + rm -rf build +fi + +meson setup build +meson compile -C build \ No newline at end of file diff --git a/src/meson.build b/src/meson.build new file mode 100644 index 0000000..08e8c91 --- /dev/null +++ b/src/meson.build @@ -0,0 +1,18 @@ +# Define the library +dobj_sources = files( + 'dobj/private/Metadata.cpp' +) + +dobj_headers = files( + 'dobj/public/Metadata.h' +) + +# Define the libdobj library so it can be linked against by other parts of the build system +libdobj = library('dobj', + dobj_sources, + include_directories: include_directories('dobj/public'), + cpp_args: ['-fvisibility=default'], + install : true) + +# Make headers accessible +install_headers(dobj_headers, subdir : '4DSSE/dobj') diff --git a/tests/dobj/meson.build b/tests/dobj/meson.build new file mode 100644 index 0000000..a8964cd --- /dev/null +++ b/tests/dobj/meson.build @@ -0,0 +1,22 @@ +# Test files for dobj +test_sources = [ + 'MetadataTest.cpp' +] + +foreach test_file : test_sources + exe_name = test_file.split('.')[0] + message('Building test: ' + exe_name) + + # Create an executable target for each test + test_exe = executable( + exe_name, + test_file, + dependencies: gtest_dep, + include_directories: include_directories('../../src/dobj/public'), + link_with: libdobj, # Link the dobj library + install_rpath: '@loader_path/../../src' # Ensure runtime library path resolves correctly + ) + + # Add the executable as a test + test(exe_name, test_exe) +endforeach diff --git a/tests/meson.build b/tests/meson.build new file mode 100644 index 0000000..5608016 --- /dev/null +++ b/tests/meson.build @@ -0,0 +1,5 @@ +# Google Test dependency +gtest_dep = dependency('gtest', main: true, required : true) + +# Subdirectory for dobj tests +subdir('dobj')