2025-06-22 04:56:04 -04:00
|
|
|
required_headers = [
|
2025-11-08 07:08:52 -05:00
|
|
|
'fourdst/atomic/atomicSpecies.h',
|
|
|
|
|
'fourdst/atomic/species.h',
|
2025-11-07 15:49:25 -05:00
|
|
|
'fourdst/composition/composition.h',
|
|
|
|
|
'fourdst/composition/utils.h',
|
|
|
|
|
'fourdst/composition/composition_abstract.h',
|
2026-06-02 15:57:33 +02:00
|
|
|
'fourdst/composition/exceptions/exceptions_composition.h',
|
|
|
|
|
'fourdst/composition/io/standard_compositions.h',
|
2026-06-05 22:47:15 +02:00
|
|
|
'fourdst/composition/io/StandardMetalFractionsBinary.h'
|
2025-06-22 04:56:04 -04:00
|
|
|
]
|
|
|
|
|
|
|
|
|
|
foreach h : required_headers
|
|
|
|
|
if not cpp.has_header(h, include_directories: include_directories('include'))
|
|
|
|
|
error('libcomposition requires the header file ' + h + ' to be present in the fourdst/composition directory.')
|
|
|
|
|
endif
|
|
|
|
|
endforeach
|
|
|
|
|
|
|
|
|
|
species_weight_dep = declare_dependency(
|
|
|
|
|
include_directories: include_directories('include'),
|
2025-03-24 10:41:13 -04:00
|
|
|
)
|
|
|
|
|
|
2025-06-22 04:56:04 -04:00
|
|
|
message('✅ libcomposition species_weight dependency declared')
|
|
|
|
|
|
|
|
|
|
composition_sources = files(
|
|
|
|
|
'lib/composition.cpp',
|
2025-11-07 15:49:25 -05:00
|
|
|
'lib/utils.cpp',
|
2025-11-10 08:47:35 -05:00
|
|
|
'lib/decorators/composition_masked.cpp',
|
2026-06-02 15:57:33 +02:00
|
|
|
'lib/io/standard_compositions.cpp'
|
2025-03-24 10:41:13 -04:00
|
|
|
)
|
|
|
|
|
|
2025-06-22 04:56:04 -04:00
|
|
|
|
2025-03-24 10:41:13 -04:00
|
|
|
dependencies = [
|
2025-06-19 14:51:42 -04:00
|
|
|
species_weight_dep,
|
|
|
|
|
const_dep,
|
2025-06-21 11:33:27 -04:00
|
|
|
config_dep,
|
2025-11-12 15:21:33 -05:00
|
|
|
log_dep,
|
|
|
|
|
xxhash_dep
|
2025-03-24 10:41:13 -04:00
|
|
|
]
|
|
|
|
|
|
|
|
|
|
# Define the libcomposition library so it can be linked against by other parts of the build system
|
2025-04-30 11:41:52 -04:00
|
|
|
libcomposition = library('composition',
|
2025-03-24 10:41:13 -04:00
|
|
|
composition_sources,
|
|
|
|
|
cpp_args: ['-fvisibility=default'],
|
|
|
|
|
dependencies: dependencies,
|
|
|
|
|
install : true)
|
|
|
|
|
|
|
|
|
|
composition_dep = declare_dependency(
|
|
|
|
|
link_with: libcomposition,
|
|
|
|
|
dependencies: dependencies,
|
|
|
|
|
sources: composition_sources,
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
# Make headers accessible
|
2025-06-22 04:56:04 -04:00
|
|
|
composition_headers = files(
|
|
|
|
|
'include/fourdst/composition/composition.h',
|
2026-06-02 15:57:33 +02:00
|
|
|
'include/fourdst/composition/composition_abstract.h',
|
2025-06-22 04:56:04 -04:00
|
|
|
)
|
2026-06-05 10:23:53 +02:00
|
|
|
install_headers(composition_headers, subdir : 'fourdst/composition')
|
2025-08-13 13:07:49 -04:00
|
|
|
|
2025-11-07 15:49:25 -05:00
|
|
|
composition_headers_utils = files(
|
2026-06-05 10:23:53 +02:00
|
|
|
'include/fourdst/composition/utils/utils.h',
|
|
|
|
|
'include/fourdst/composition/utils/composition_hash.h'
|
|
|
|
|
)
|
|
|
|
|
install_headers(composition_headers_utils, subdir : 'fourdst/composition/utils')
|
|
|
|
|
|
|
|
|
|
composition_headers_io = files(
|
|
|
|
|
'include/fourdst/composition/io/standard_compositions.h',
|
2026-06-08 09:07:08 -04:00
|
|
|
'include/fourdst/composition/io/StandardMetalFractionsBinary.h'
|
2025-11-07 15:49:25 -05:00
|
|
|
)
|
2026-06-05 10:23:53 +02:00
|
|
|
|
|
|
|
|
install_headers(composition_headers_io, subdir : 'fourdst/composition/io')
|
|
|
|
|
|
|
|
|
|
composition_headers_decorators = files(
|
|
|
|
|
'include/fourdst/composition/decorators/composition_masked.h',
|
|
|
|
|
'include/fourdst/composition/decorators/composition_decorator_abstract.h',
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
install_headers(composition_headers_decorators, subdir : 'fourdst/composition/decorators')
|
2025-11-07 15:49:25 -05:00
|
|
|
|
|
|
|
|
composition_headers_atomic = files(
|
|
|
|
|
'include/fourdst/atomic/atomicSpecies.h',
|
|
|
|
|
'include/fourdst/atomic/elements.h',
|
|
|
|
|
'include/fourdst/atomic/species.h',
|
2026-06-02 15:57:33 +02:00
|
|
|
|
2025-11-07 15:49:25 -05:00
|
|
|
)
|
2026-06-05 10:23:53 +02:00
|
|
|
install_headers(composition_headers_atomic, subdir : 'fourdst/atomic')
|
2025-11-07 15:49:25 -05:00
|
|
|
|
2025-08-13 13:07:49 -04:00
|
|
|
composition_exception_headers = files(
|
|
|
|
|
'include/fourdst/composition/exceptions/exceptions_composition.h',
|
|
|
|
|
)
|
2026-06-05 10:23:53 +02:00
|
|
|
install_headers(composition_exception_headers, subdir : 'fourdst/composition/exceptions')
|
2025-11-12 15:21:33 -05:00
|
|
|
|
2026-06-08 09:08:11 -04:00
|
|
|
composition_iterator_headers = files(
|
|
|
|
|
'include/fourdst/composition/iterators/composition_abstract_iterator.h',
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
install_headers(composition_iterator_headers, subdir : 'fourdst/composition/iterators')
|
|
|
|
|
|
2025-11-12 15:21:33 -05:00
|
|
|
v = meson.project_version()
|
|
|
|
|
|
|
|
|
|
conf_data = configuration_data()
|
|
|
|
|
conf_data.set_quoted('PROJECT_VERSION', v)
|
|
|
|
|
conf_data.set_quoted('PROJECT_NAME', meson.project_name())
|
|
|
|
|
|
|
|
|
|
configure_file(
|
|
|
|
|
input : 'include/fourdst/config.h.in',
|
|
|
|
|
output : 'config.h',
|
|
|
|
|
configuration : conf_data
|
|
|
|
|
)
|