eliaskosunen/scnlib

Clang (clang-scan-deps) emits error about c++14 digit separator in preprocessor constants

Delta-dev-99 opened this issue · 0 comments

This issue is solved with this pull request

Newer cmake versions (3.28 onward, i believe) automatically scan the sources, at build time, for c++ module dependencies, when building with c++ standard 20 or higher. With clang, this dependency scanning is performed by clang-scan-deps.

NOTE: Clang does build the project without issues if dependency scanning is manually disabled by setting CMAKE_CXX_SCAN_FOR_MODULES OFF.

Dependency scanning fails to recognize c++14 digit separator in preprocessor constants.
Error logs:

[proc] Executing command: /usr/local/bin/cmake --build /home/dd99/Documents/programming/c++/Index_AKA_Booking/build --config Debug --target test_scn_1 -j 4 --
[build] [1/4  25% :: 0.116] Scanning /home/dd99/Documents/programming/c++/Index_AKA_Booking/test_sources/test_scn_1/src/main.cpp for CXX dependencies
[build] FAILED: test_sources/test_scn_1/CMakeFiles/test_scn_1.dir/src/main.cpp.o.ddi 
[build] "/usr/bin/clang-scan-deps-18" -format=p1689 -- /usr/bin/clang++-18  -I/home/dd99/Documents/programming/c++/Index_AKA_Booking/test_sources/test_scn_1/src -I/home/dd99/Documents/programming/c++/Index_AKA_Booking/build/_deps/scn-src/include -g -std=gnu++23 -DSCN_REGEX_BACKEND=0 -x c++ /home/dd99/Documents/programming/c++/Index_AKA_Booking/test_sources/test_scn_1/src/main.cpp -c -o test_sources/test_scn_1/CMakeFiles/test_scn_1.dir/src/main.cpp.o -resource-dir "/usr/lib/llvm-18/lib/clang/18" -MT test_sources/test_scn_1/CMakeFiles/test_scn_1.dir/src/main.cpp.o.ddi -MD -MF test_sources/test_scn_1/CMakeFiles/test_scn_1.dir/src/main.cpp.o.ddi.d > test_sources/test_scn_1/CMakeFiles/test_scn_1.dir/src/main.cpp.o.ddi.tmp && mv test_sources/test_scn_1/CMakeFiles/test_scn_1.dir/src/main.cpp.o.ddi.tmp test_sources/test_scn_1/CMakeFiles/test_scn_1.dir/src/main.cpp.o.ddi
[build] Error while scanning dependencies for /home/dd99/Documents/programming/c++/Index_AKA_Booking/test_sources/test_scn_1/src/main.cpp:
[build] In file included from /home/dd99/Documents/programming/c++/Index_AKA_Booking/test_sources/test_scn_1/src/main.cpp:2:
[build] In file included from /home/dd99/Documents/programming/c++/Index_AKA_Booking/build/_deps/scn-src/include/scn/scan.h:20:
[build] In file included from /home/dd99/Documents/programming/c++/Index_AKA_Booking/build/_deps/scn-src/include/scn/detail/scan.h:20:
[build] In file included from /home/dd99/Documents/programming/c++/Index_AKA_Booking/build/_deps/scn-src/include/scn/detail/args.h:26:
[build] In file included from /home/dd99/Documents/programming/c++/Index_AKA_Booking/build/_deps/scn-src/include/scn/detail/error.h:20:
[build] In file included from /home/dd99/Documents/programming/c++/Index_AKA_Booking/build/_deps/scn-src/include/scn/fwd.h:20:
[build] In file included from /home/dd99/Documents/programming/c++/Index_AKA_Booking/build/_deps/scn-src/include/scn/detail/pp.h:20:
[build] In file included from /home/dd99/Documents/programming/c++/Index_AKA_Booking/build/_deps/scn-src/include/scn/detail/config.h:20:
[build] /home/dd99/Documents/programming/c++/Index_AKA_Booking/build/_deps/scn-src/include/scn/detail/pp_detect.h:97:5: error: token is not a valid binary operator in a preprocessor subexpression
[build] /home/dd99/Documents/programming/c++/Index_AKA_Booking/build/_deps/scn-src/include/scn/detail/pp_detect.h:65:5: note: expanded from macro 'SCN_CLANG'
[build] /home/dd99/Documents/programming/c++/Index_AKA_Booking/build/_deps/scn-src/include/scn/detail/pp_detect.h:54:16: note: expanded from macro 'SCN_COMPILER'
[build] /home/dd99/Documents/programming/c++/Index_AKA_Booking/build/_deps/scn-src/include/scn/detail/pp_detect.h:252:16: error: token is not a valid binary operator in a preprocessor subexpression
[build] /home/dd99/Documents/programming/c++/Index_AKA_Booking/build/_deps/scn-src/include/scn/detail/pp_detect.h:54:16: note: expanded from macro 'SCN_COMPILER'
[build] /home/dd99/Documents/programming/c++/Index_AKA_Booking/build/_deps/scn-src/include/scn/detail/pp_detect.h:254:7: error: token is not a valid binary operator in a preprocessor subexpression
[build] /home/dd99/Documents/programming/c++/Index_AKA_Booking/build/_deps/scn-src/include/scn/detail/pp_detect.h:65:5: note: expanded from macro 'SCN_CLANG'
[build] /home/dd99/Documents/programming/c++/Index_AKA_Booking/build/_deps/scn-src/include/scn/detail/pp_detect.h:54:16: note: expanded from macro 'SCN_COMPILER'
[build] /home/dd99/Documents/programming/c++/Index_AKA_Booking/build/_deps/scn-src/include/scn/detail/pp_detect.h:256:19: error: token is not a valid binary operator in a preprocessor subexpression
[build] /home/dd99/Documents/programming/c++/Index_AKA_Booking/build/_deps/scn-src/include/scn/detail/pp_detect.h:54:16: note: expanded from macro 'SCN_COMPILER'
[build] /home/dd99/Documents/programming/c++/Index_AKA_Booking/build/_deps/scn-src/include/scn/detail/pp_detect.h:258:20: error: token is not a valid binary operator in a preprocessor subexpression
[build] /home/dd99/Documents/programming/c++/Index_AKA_Booking/build/_deps/scn-src/include/scn/detail/pp_detect.h:54:16: note: expanded from macro 'SCN_COMPILER'
[build] /home/dd99/Documents/programming/c++/Index_AKA_Booking/build/_deps/scn-src/include/scn/detail/pp_detect.h:283:17: error: token is not a valid binary operator in a preprocessor subexpression
[build] /home/dd99/Documents/programming/c++/Index_AKA_Booking/build/_deps/scn-src/include/scn/detail/pp_detect.h:54:16: note: expanded from macro 'SCN_COMPILER'
[build] /home/dd99/Documents/programming/c++/Index_AKA_Booking/build/_deps/scn-src/include/scn/detail/pp_detect.h:310:16: error: token is not a valid binary operator in a preprocessor subexpression
[build] /home/dd99/Documents/programming/c++/Index_AKA_Booking/build/_deps/scn-src/include/scn/detail/pp_detect.h:54:16: note: expanded from macro 'SCN_COMPILER'
[build] /home/dd99/Documents/programming/c++/Index_AKA_Booking/build/_deps/scn-src/include/scn/detail/pp_detect.h:640:22: error: token is not a valid binary operator in a preprocessor subexpression
[build] /home/dd99/Documents/programming/c++/Index_AKA_Booking/build/_deps/scn-src/include/scn/detail/pp_detect.h:119:5: note: expanded from macro 'SCN_GCC_COMPAT'
[build] /home/dd99/Documents/programming/c++/Index_AKA_Booking/build/_deps/scn-src/include/scn/detail/pp_detect.h:54:16: note: expanded from macro 'SCN_COMPILER'
[build] In file included from /home/dd99/Documents/programming/c++/Index_AKA_Booking/test_sources/test_scn_1/src/main.cpp:2:
[build] In file included from /home/dd99/Documents/programming/c++/Index_AKA_Booking/build/_deps/scn-src/include/scn/scan.h:20:
[build] In file included from /home/dd99/Documents/programming/c++/Index_AKA_Booking/build/_deps/scn-src/include/scn/detail/scan.h:20:
[build] In file included from /home/dd99/Documents/programming/c++/Index_AKA_Booking/build/_deps/scn-src/include/scn/detail/args.h:26:
[build] In file included from /home/dd99/Documents/programming/c++/Index_AKA_Booking/build/_deps/scn-src/include/scn/detail/error.h:20:
[build] In file included from /home/dd99/Documents/programming/c++/Index_AKA_Booking/build/_deps/scn-src/include/scn/fwd.h:20:
[build] /home/dd99/Documents/programming/c++/Index_AKA_Booking/build/_deps/scn-src/include/scn/detail/pp.h:41:5: error: token is not a valid binary operator in a preprocessor subexpression
[build] /home/dd99/Documents/programming/c++/Index_AKA_Booking/build/_deps/scn-src/include/scn/detail/pp_detect.h:65:5: note: expanded from macro 'SCN_CLANG'
[build] /home/dd99/Documents/programming/c++/Index_AKA_Booking/build/_deps/scn-src/include/scn/detail/pp_detect.h:54:16: note: expanded from macro 'SCN_COMPILER'
[build] In file included from /home/dd99/Documents/programming/c++/Index_AKA_Booking/test_sources/test_scn_1/src/main.cpp:2:
[build] In file included from /home/dd99/Documents/programming/c++/Index_AKA_Booking/build/_deps/scn-src/include/scn/scan.h:20:
[build] In file included from /home/dd99/Documents/programming/c++/Index_AKA_Booking/build/_deps/scn-src/include/scn/detail/scan.h:20:
[build] In file included from /home/dd99/Documents/programming/c++/Index_AKA_Booking/build/_deps/scn-src/include/scn/detail/args.h:26:
[build] In file included from /home/dd99/Documents/programming/c++/Index_AKA_Booking/build/_deps/scn-src/include/scn/detail/error.h:20:
[build] In file included from /home/dd99/Documents/programming/c++/Index_AKA_Booking/build/_deps/scn-src/include/scn/fwd.h:20:
[build] /home/dd99/Documents/programming/c++/Index_AKA_Booking/build/_deps/scn-src/include/scn/detail/pp.h:77:5: error: token is not a valid binary operator in a preprocessor subexpression
[build] /home/dd99/Documents/programming/c++/Index_AKA_Booking/build/_deps/scn-src/include/scn/detail/pp_detect.h:119:5: note: expanded from macro 'SCN_GCC_COMPAT'
[build] /home/dd99/Documents/programming/c++/Index_AKA_Booking/build/_deps/scn-src/include/scn/detail/pp_detect.h:54:16: note: expanded from macro 'SCN_COMPILER'
[build] In file included from /home/dd99/Documents/programming/c++/Index_AKA_Booking/test_sources/test_scn_1/src/main.cpp:2:
[build] In file included from /home/dd99/Documents/programming/c++/Index_AKA_Booking/build/_deps/scn-src/include/scn/scan.h:20:
[build] In file included from /home/dd99/Documents/programming/c++/Index_AKA_Booking/build/_deps/scn-src/include/scn/detail/scan.h:20:
[build] In file included from /home/dd99/Documents/programming/c++/Index_AKA_Booking/build/_deps/scn-src/include/scn/detail/args.h:26:
[build] In file included from /home/dd99/Documents/programming/c++/Index_AKA_Booking/build/_deps/scn-src/include/scn/detail/error.h:20:
[build] In file included from /home/dd99/Documents/programming/c++/Index_AKA_Booking/build/_deps/scn-src/include/scn/fwd.h:20:
[build] /home/dd99/Documents/programming/c++/Index_AKA_Booking/build/_deps/scn-src/include/scn/detail/pp.h:214:5: error: token is not a valid binary operator in a preprocessor subexpression
[build] /home/dd99/Documents/programming/c++/Index_AKA_Booking/build/_deps/scn-src/include/scn/detail/pp_detect.h:65:5: note: expanded from macro 'SCN_CLANG'
[build] /home/dd99/Documents/programming/c++/Index_AKA_Booking/build/_deps/scn-src/include/scn/detail/pp_detect.h:54:16: note: expanded from macro 'SCN_COMPILER'
[build] In file included from /home/dd99/Documents/programming/c++/Index_AKA_Booking/test_sources/test_scn_1/src/main.cpp:2:
[build] In file included from /home/dd99/Documents/programming/c++/Index_AKA_Booking/build/_deps/scn-src/include/scn/scan.h:20:
[build] In file included from /home/dd99/Documents/programming/c++/Index_AKA_Booking/build/_deps/scn-src/include/scn/detail/scan.h:21:
[build] /home/dd99/Documents/programming/c++/Index_AKA_Booking/build/_deps/scn-src/include/scn/detail/format_string.h:636:5: error: token is not a valid binary operator in a preprocessor subexpression
[build] /home/dd99/Documents/programming/c++/Index_AKA_Booking/build/_deps/scn-src/include/scn/detail/pp_detect.h:65:5: note: expanded from macro 'SCN_CLANG'
[build] /home/dd99/Documents/programming/c++/Index_AKA_Booking/build/_deps/scn-src/include/scn/detail/pp_detect.h:54:16: note: expanded from macro 'SCN_COMPILER'
[build] ninja: build stopped: subcommand failed.
[proc] The command: /usr/local/bin/cmake --build /home/dd99/Documents/programming/c++/Index_AKA_Booking/build --config Debug --target test_scn_1 -j 4 -- exited with code: 1
[driver] Build completed: 00:00:00.211
[build] Build finished with exit code 1