6 Commits

Author SHA1 Message Date
7ab0d21ba1 fix(cpp_args): properly propegate args
previously Cpp args were set with add_project_argument, which does not work from subprojects. Changed this so args can be set from calling projects
2026-02-03 11:20:21 -05:00
917d416ce2 fix(build-check): ! -> not
fix broken check for subproject
2026-02-03 08:11:23 -05:00
1cdd2d92e0 fix(degfined_engine_view): removed broken logs
some old log statements reference a member no longer present, removed these
2026-02-03 08:02:09 -05:00
4423d7594c fix(build-check): only add global arguments when not a subproject
This is needd to let gridfire work as a subproject
2026-02-03 07:52:24 -05:00
087926728a docs(version): v0.7.6rc3 -> v0.7.6rc3.1
this version uses the target workaround which we use for the SUNDIALS suite to get meson to recognize it as position indepenednt code to CppAD
2025-12-22 08:23:20 -05:00
df09564c9a fix(cppad): build static lib for cppad
this is needed for gcc build and does not break clang build
2025-12-22 08:22:07 -05:00
10 changed files with 73 additions and 42 deletions

View File

@@ -33,7 +33,7 @@ else
endif
if get_option('openmp_support')
add_project_arguments('-DGF_USE_OPENMP', language: 'cpp')
gridfire_args += ['-DGF_USE_OPENMP']
endif
if get_option('asan') and get_option('buildtype') != 'debug' and get_option('buildtype') != 'debugoptimized'

View File

@@ -5,8 +5,10 @@ cc = meson.get_compiler('c')
ignore_unused_args = '-Wno-unused-command-line-argument'
add_global_arguments(ignore_unused_args, language: 'cpp')
add_global_arguments(ignore_unused_args, language: 'c')
if not meson.is_subproject()
add_global_arguments(ignore_unused_args, language: 'cpp')
add_global_arguments(ignore_unused_args, language: 'c')
endif
subdir('CPPC')

View File

@@ -1,21 +1,11 @@
#cppad_inc = include_directories('include', is_system: true)
#cppad_dep = declare_dependency(
# include_directories: cppad_inc,
#)
#
#message('Registering CppAD headers for installation...')
#install_subdir('include/cppad', install_dir: get_option('includedir'))
#message('Done registering CppAD headers for installation!')
#
cppad_cmake_options = cmake.subproject_options()
cppad_cmake_options.add_cmake_defines({
'cppad_static_lib': 'true',
'cpp_mas_num_threads': '10',
'cppad_debug_and_release': 'false',
'include_doc': 'false'
'include_doc': 'false',
'CMAKE_POSITION_INDEPENDENT_CODE': true
})
cppad_cmake_options.set_install(false)
@@ -25,4 +15,29 @@ cppad_sp = cmake.subproject(
options: cppad_cmake_options,
)
cppad_dep = cppad_sp.dependency('cppad_lib').as_system()
cppad_target = cppad_sp.target('cppad_lib')
cppad_objs = [cppad_target.extract_all_objects(recursive: true)]
cppad_incs = cppad_sp.include_directories('cppad_lib')
empty_cppad_file = configure_file(output: 'cppad_dummy_ar.cpp', command: ['echo'], capture: true)
libcppad_static = static_library(
'cppad-static',
empty_cppad_file,
objects: cppad_objs,
include_directories: cppad_incs,
pic: true,
install: false
)
cppad_dep = declare_dependency(
link_with: libcppad_static,
include_directories: cppad_incs
)
message('Installing CppAD headers to ' + get_option('includedir'))
install_subdir(
'subprojects/CppAD-20250000.2/include',
install_dir: get_option('includedir'),
strip_directory: true
)

View File

@@ -29,4 +29,4 @@ elif (llevel == 'critical')
endif
log_argument = '-DQUILL_COMPILE_ACTIVE_LOG_LEVEL=' + log_argument
add_project_arguments(log_argument, language: 'cpp')
gridfire_args += [log_argument]

View File

@@ -9,7 +9,11 @@ if get_option('pkg_config')
libgridfire,
libcomposition,
libconst,
liblogging
liblogging,
libcppad_static,
libcvode_static,
libkinsol_static
],
subdirs: ['gridfire'],
filebase: 'gridfire',

View File

@@ -18,7 +18,9 @@
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#
# *********************************************************************** #
project('GridFire', ['c', 'cpp'], version: 'v0.7.6rc3', default_options: ['cpp_std=c++23'], meson_version: '>=1.5.0')
project('GridFire', ['c', 'cpp'], version: 'v0.7.6rc3.4', default_options: ['cpp_std=c++23'], meson_version: '>=1.5.0')
gridfire_args = []
# Start by running the code which validates the build environment
subdir('build-check')

View File

@@ -0,0 +1,26 @@
#pragma once
#include <format>
namespace gridfire {
struct version {
static constexpr int major = #STRINGIFY(GF_VERSION_MAJOR);
static constexpr int minor = #STRINGIFY(GF_VERSION_MINOR);
static constexpr int patch = #STRINGIFY(GF_VERSION_PATCH);
static constexpr const char* tag = #STRINGIFY(GF_VERSION_TAG);
};
}
template <>
struct std::formatter<gridfire::version> : std::formatter<std::string> {
auto format(const gridfire::version& v, auto& ctx) {
std::string versionStr = std::to_string(v.major) + "." +
std::to_string(v.minor) + "." +
std::to_string(v.patch);
if (std::string(v.tag) != "") {
versionStr += "-" + std::string(v.tag);
}
return std::formatter<std::string>::format(versionStr, ctx);
}
};

View File

View File

@@ -415,29 +415,6 @@ namespace gridfire::engine {
}
state->active_reactions.add_reaction(*reaction);
}
LOG_TRACE_L3(m_logger, "DefinedEngineView built with {} active species and {} active reactions.", m_activeSpecies.size(), m_activeReactions.size());
LOG_TRACE_L3(m_logger, "Active species: {}", [this]() -> std::string {
std::string result;
for (const auto& species : m_activeSpecies) {
result += std::string(species.name()) + ", ";
}
if (!result.empty()) {
result.pop_back(); // Remove last space
result.pop_back(); // Remove last comma
}
return result;
}());
LOG_TRACE_L3(m_logger, "Active reactions: {}", [this]() -> std::string {
std::string result;
for (const auto& reaction : m_activeReactions) {
result += std::string(reaction->id()) + ", ";
}
if (!result.empty()) {
result.pop_back(); // Remove last space
result.pop_back(); // Remove last comma
}
return result;
}());
state->species_index_map = constructSpeciesIndexMap(ctx);
state->reaction_index_map = constructReactionIndexMap(ctx);
}

View File

@@ -1,4 +1,6 @@
# Define the library
subdir('include/gridfire/utils') # Generate the version header file first
gridfire_sources = files(
'lib/engine/engine_graph.cpp',
'lib/engine/views/engine_adaptive.cpp',
@@ -63,6 +65,7 @@ if get_option('build_python')
gridfire_sources,
include_directories: include_directories('include'),
dependencies: gridfire_build_dependencies,
cpp_args: gridfire_args,
objects: [cvode_objs, kinsol_objs],
install : false)
else
@@ -71,6 +74,7 @@ else
include_directories: include_directories('include'),
dependencies: gridfire_build_dependencies,
objects: [cvode_objs, kinsol_objs],
cpp_args: gridfire_args,
install : true)
endif
@@ -79,6 +83,7 @@ gridfire_dep = declare_dependency(
link_with: libgridfire,
sources: gridfire_sources,
dependencies: gridfire_build_dependencies,
compile_args: gridfire_args,
)
install_subdir('include/gridfire', install_dir: get_option('includedir'))