From 404b0bd7571dcf5d8ddbfbec892011f9900a603d Mon Sep 17 00:00:00 2001 From: Emily Boudreaux Date: Thu, 11 Jun 2026 09:28:36 -0400 Subject: [PATCH] build(header_install_dir): added header_install_dir option this option is useful for wheel builds --- Doxyfile | 2 +- meson.build | 2 +- meson_options.txt | 1 + src/composition/meson.build | 18 +++++++++++------- 4 files changed, 14 insertions(+), 9 deletions(-) diff --git a/Doxyfile b/Doxyfile index 4942380..590daa9 100644 --- a/Doxyfile +++ b/Doxyfile @@ -48,7 +48,7 @@ PROJECT_NAME = fourdst::libcomposition # could be handy for archiving the generated documentation or if some version # control system is used. -PROJECT_NUMBER = v2.4.3 +PROJECT_NUMBER = v2.4.5 # Using the PROJECT_BRIEF tag one can provide an optional one line description # for a project that appears at the top of each page and should give viewers a diff --git a/meson.build b/meson.build index 27193ee..195718a 100644 --- a/meson.build +++ b/meson.build @@ -18,7 +18,7 @@ # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # *********************************************************************** # -project('libcomposition', 'cpp', version: 'v2.4.4', default_options: ['cpp_std=c++23'], meson_version: '>=1.5.0') +project('libcomposition', 'cpp', version: 'v2.4.5', default_options: ['cpp_std=c++23'], meson_version: '>=1.5.0') # Add default visibility for all C++ targets add_project_arguments('-fvisibility=default', language: 'cpp') diff --git a/meson_options.txt b/meson_options.txt index b15d3b1..8624d2f 100644 --- a/meson_options.txt +++ b/meson_options.txt @@ -3,3 +3,4 @@ option('build_tests', type: 'boolean', value: true, description: 'build unit tes option('build_examples', type: 'boolean', value: true, description: 'build example programs') option('build_benchmarks', type: 'boolean', value: false, description: 'build benchmark programs') option('lib_install_dir', type: 'string', value: '', description: 'Override install dir for the shared library (used by the fourdst umbrella to place libs inside the Python package in wheel builds). Empty = default libdir.') +option('header_install_dir', type: 'string', value: '', description: 'Override the header install root (used by the fourdst umbrella to place headers inside the Python package in wheel builds). Empty = default includedir.') diff --git a/src/composition/meson.build b/src/composition/meson.build index b2f6fea..115b3fd 100644 --- a/src/composition/meson.build +++ b/src/composition/meson.build @@ -53,32 +53,36 @@ composition_dep = declare_dependency( sources: composition_sources, ) +composition_header_install_dir = get_option('header_install_dir') != '' \ + ? get_option('header_install_dir') / 'fourdst' / 'composition' \ + : get_option('includedir') / 'fourdst' / 'composition' + # Make headers accessible composition_headers = files( 'include/fourdst/composition/composition.h', 'include/fourdst/composition/composition_abstract.h', ) -install_headers(composition_headers, subdir : 'fourdst/composition') +install_headers(composition_headers, install_dir : composition_header_install_dir) composition_headers_utils = files( 'include/fourdst/composition/utils/utils.h', 'include/fourdst/composition/utils/composition_hash.h' ) -install_headers(composition_headers_utils, subdir : 'fourdst/composition/utils') +install_headers(composition_headers_utils, install_dir: composition_header_install_dir / 'utils') composition_headers_io = files( 'include/fourdst/composition/io/standard_compositions.h', 'include/fourdst/composition/io/StandardMetalFractionsBinary.h' ) -install_headers(composition_headers_io, subdir : 'fourdst/composition/io') +install_headers(composition_headers_io, install_dir: composition_header_install_dir / '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') +install_headers(composition_headers_decorators, install_dir: composition_header_install_dir / 'decorators') composition_headers_atomic = files( 'include/fourdst/atomic/atomicSpecies.h', @@ -86,18 +90,18 @@ composition_headers_atomic = files( 'include/fourdst/atomic/species.h', ) -install_headers(composition_headers_atomic, subdir : 'fourdst/atomic') +install_headers(composition_headers_atomic, install_dir: composition_header_install_dir / 'atomic') composition_exception_headers = files( 'include/fourdst/composition/exceptions/exceptions_composition.h', ) -install_headers(composition_exception_headers, subdir : 'fourdst/composition/exceptions') +install_headers(composition_exception_headers, install_dir: composition_header_install_dir / 'exceptions') composition_iterator_headers = files( 'include/fourdst/composition/iterators/composition_abstract_iterator.h', ) -install_headers(composition_iterator_headers, subdir : 'fourdst/composition/iterators') +install_headers(composition_iterator_headers, install_dir: composition_header_install_dir / 'iterators') v = meson.project_version()