build(wasm): major progress on gridfire compiling to wasm

This commit is contained in:
2025-12-03 11:38:08 -05:00
parent d852ee43fe
commit 7242c765f3
20 changed files with 295 additions and 250 deletions

View File

View File

@@ -0,0 +1,33 @@
cppc = meson.get_compiler('cpp')
if cppc.get_id() == 'clang'
message('disabling bitwise-instead-of-logical warnings for clang')
add_project_arguments('-Wno-bitwise-instead-of-logical', language: 'cpp')
endif
if cppc.get_id() == 'gcc'
message('disabling psabi warnings for gcc')
add_project_arguments('-Wno-psabi', language: 'cpp')
if (cppc.version().version_compare('<14.0'))
error('g++ version must be at least 14.0, found ' + cppc.version())
endif
endif
if not cppc.has_header('print')
error('C++ standard library header <print> not found. Please ensure your compiler and standard library supports C++23. We have already validated your compiler version so this is likely an issue with your standard library installation.')
endif
if not cppc.has_header('format')
error('C++ standard library header <format> not found. Please ensure your compiler and standard library supports C++23. We have already validated your compiler version so this is likely an issue with your standard library installation.')
endif
# For Eigen
add_project_arguments('-Wno-deprecated-declarations', language: 'cpp')
if get_option('build_python')
message('enabling hidden visibility for C++ symbols when building Python extension. This reduces the size of the resulting shared library.')
add_project_arguments('-fvisibility=hidden', language: 'cpp')
else
message('enabling default visibility for C++ symbols')
add_project_arguments('-fvisibility=default', language: 'cpp')
endif

View File

@@ -0,0 +1,15 @@
if get_option('build_fortran')
add_languages('fortran', native: true)
message('Found FORTRAN compiler: ' + meson.get_compiler('fortran').get_id())
message('Fortran standard set to: ' + get_option('fortran_std'))
message('Building fortran module (gridfire_mod.mod)')
fc = meson.get_compiler('fortran')
if not get_option('unsafe_fortran')
if fc.get_id() != 'gcc'
error('The only supported fortran compiler for GridFire is gfortran (version >= 14.0), found ' + fc + '. GridFire has not been tested with any other compilers. You can disable this check with the -Dunsafe-fortran=true flag to try other compilers')
endif
endif
if (fc.version().version_compare('<14.0'))
error('gfortran version must be at least 14.0, found ' + fc.version())
endif
endif

15
build-check/meson.build Normal file
View File

@@ -0,0 +1,15 @@
message('Found CXX compiler: ' + meson.get_compiler('cpp').get_id())
message('C++ standard set to: ' + get_option('cpp_std'))
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')
subdir('CPPC')
subdir('FC')