macOS 26 (Darwin 25.5.0) introduced stricter Clang module map rules in
DarwinFoundation1.modulemap: the '_c_standard_library_obsolete' module
now requires the 'found_incompatible_headers__check_search_paths' feature,
which CLING's runtime interpreter does not set. When fftw3.h (from
/opt/homebrew/include) was parsed by CLING via the inlined PStartupHandler
dictionary payload, it triggered this module map error, causing all
PStartupHandler signal/slot connections to fail.
Two fixes:
- PMusr.h: guard '#include "fftw3.h"' with '#ifndef __CLING__'. No fftw
types appear in PMusr.h class definitions, so CLING does not need it
for reflection. This is the primary runtime fix.
- CMakeLists.txt (src/classes and all src/external libs): replace
'-I${FFTW3_INCLUDE}', '-I${Boost_INCLUDE_DIRS}', '-I${GSL_INCLUDE_DIRS}',
and '-I${ROOT_INCLUDE_DIRS}' with '-isystem' in all root_generate_dictionary
OPTIONS blocks, and change 'include_directories(${FFTW3_INCLUDE})' to
'include_directories(SYSTEM ...)'. Internal project paths (MUSRFIT_INC,
BMW_TOOLS_INC, NONLOCAL_INC, CMAKE_CURRENT_SOURCE_DIR, etc.) keep '-I'.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
In order that package assembly works, the code needs to be relocatble
and any hints linking it to the original source need to be absent.
The changes here do exactely this. For rootcling the '-inlineInputHeader'
option is needed, otherwise the dictionary wants to load the header
file from the source destination which of course will fail when installing
the package on a machine without the source.
For the moment we keep to copies of it -- one for the use within the various
musrfit programs, one that can be used in user functions.
* musrt0 is now again activated in musrgui/musredit by default.
A workaround has been implemented where it is not tried any more to "directly
parse the file" but rather the file is read into a memory buffer which then
is parsed.
For further information, see MUSR-122.
* Fixed a linking problem when only shared libraries are built on Cygwin
(introduced with the split-off of libPUserFcnBase).
It should now be possible to build a static version of musrfit and shared libraries for the user functions.
This is needed on systems which do not support linking static libraries to shared ones (like Cygwin).
These changes still need to be tested on Cygwin, especially with user functions implementing the "global interface".