Preprocessed Fortran files may contain OpenMP directives with comment lines starting with:
!$ompWe observe that CMake + Ninja + Flang breaks when an OpenMP directive is inside a call subprocess statement as in mini.F
This is relevant to programs like MUMPS.
cmake -P main.cmakeResult:
-- OK: gfortran Ninja
CMake Warning at main.cmake:45 (message):
FAIL: flang Ninja
-- Error: 1
[1/3] Generating Fortran dyndep file CMakeFiles/mini.dir/Fortran.dd
[2/3] Building Fortran object CMakeFiles/mini.dir/mini.F.o
FAILED: [code=1] CMakeFiles/mini.dir/mini.F.o
/opt/homebrew/bin/flang -I/tmp/flangc -O2 -g -ffixed-line-length-72 -c CMakeFiles/mini.dir/mini.F-pp.f -o CMakeFiles/mini.dir/mini.F.o
error: Could not scan CMakeFiles/mini.dir/mini.F-pp.f
/tmp/flangc/mini.F:3:17: error: Unmatched '('
call mysub(a, b
^
/tmp/flangc/mini.F:5:8: error: Unmatched ')'
)
^
ninja: build stopped: subcommand failed.
-- OK: gfortran Unix Makefiles
-- OK: flang Unix Makefiles
% flang --version
Homebrew flang version 21.1.3
Target: arm64-apple-darwin25.0.0
Thread model: posix
InstalledDir: /opt/homebrew/Cellar/flang/21.1.3/libexec
Configuration file: /opt/homebrew/Cellar/flang/21.1.3/libexec/flang.cfg
Configuration file: /opt/homebrew/etc/clang/arm64-apple-darwin25.cfg
% ninja --version
1.13.1
% cmake --version
cmake version 4.1.2