Hmm, I left out a crucial detail in the original post.
This is the actual sequence of commands being run:
cd skia
python3 tools/git-sync-deps
gn gen out/Static
--args="skia_compile_modules=true"
*removing out/Static*
gn gen out/Static
ninja -C out/Static
At this point, each file in src/sksl/generated follows a similar pattern:
// from sksl_shared.dehydrated
// line 1
static constexpr uint8_t SKSL_INCLUDE_C:/skia/out/Static/sksl_shared[] = {13,0,200,3,
//last line
static constexpr size_t SKSL_INCLUDE_C:/skia/out/Static/sksl_shared_LENGTH = sizeof(SKSL_INCLUDE_C:/skia/out/Static/sksl_shared);
Now, if I replace all files in src/sksl/generated with clean ones and run only
gn gen out/Static
ninja -C out/Static
it compiles fine and none of the files in src/sksl/generated is modified like above.
Including the output when compiling with clang-cl as well:
ninja: Entering directory `out/Static'
[378/3776] compile ../../modules/skcms/skcms.cc
clang-cl: warning: unknown argument ignored in clang-cl: '-std=c11' [-Wunknown-argument]
[1082/3776] compile ../../src/sksl/SkSLCompiler.cpp
FAILED: obj/src/sksl/skia.SkSLCompiler.obj
"C:/Program Files/LLVM/bin/clang-cl.exe" /nologo /showIncludes /FC -DSK_HAS_ANDROID_CODEC -DSKSL_ENABLE_TRACING -DSK_ENABLE_SPIRV_VALIDATION -D_CRT_SECURE_NO_WARNINGS -D_HAS_EXCEPTIONS=0 -DWIN32_LEAN_AND_MEAN -DNOMINMAX -DSK_ENABLE_SKSL -DSK_ENABLE_PRECOMPILE -DSK_GAMMA_APPLY_TO_A8 -DSK_ALLOW_STATIC_GLOBAL_INITIALIZERS=1 -DGR_TEST_UTILS=1 -DSKIA_IMPLEMENTATION=1 -DSK_GL -DSK_ENABLE_DUMP_GPU -DSK_SUPPORT_GPU=1 -DSK_SUPPORT_PDF -DSK_CODEC_DECODES_JPEG -DSK_ENCODE_JPEG -DSK_SUPPORT_XPS -DSK_ENABLE_ANDROID_UTILS -DSK_USE_LIBGIFCODEC -DSK_HAS_HEIF_LIBRARY -DSK_CODEC_DECODES_PNG -DSK_ENCODE_PNG -DSKVM_JIT_WHEN_POSSIBLE -DSK_CODEC_DECODES_WEBP -DSK_ENCODE_WEBP -DSK_XML -I../.. -I../.. -I../../third_party/externals/libgifcodec -I../../third_party/externals/spirv-tools/include -Wno-attributes /bigobj /utf-8 -imsvc "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC/Tools/MSVC/14.29.30133/include" -imsvc "C:/Program Files (x86)/Windows Kits/10/Include/10.0.19041.0/shared" -imsvc "C:/Program Files (x86)/Windows Kits/10/Include/10.0.19041.0/ucrt" -imsvc "C:/Program Files (x86)/Windows Kits/10/Include/10.0.19041.0/um" -imsvc "C:/Program Files (x86)/Windows Kits/10/Include/10.0.19041.0/winrt" /Z7 -gcodeview-ghash /W3 /wd4244 /wd4267 /wd4800 /wd4291 /wd4251 /wd4275 /wd5041 -Wno-unused-parameter -fcolor-diagnostics -Weverything -Wno-unknown-warning-option -Wno-weak-template-vtables -Wno-nonportable-include-path -Wno-nonportable-system-include-path -Wno-cast-align -Wno-cast-qual -Wno-conversion -Wno-disabled-macro-expansion -Wno-documentation -Wno-documentation-unknown-command -Wno-double-promotion -Wno-exit-time-destructors -Wno-float-equal -Wno-global-constructors -Wno-missing-prototypes -Wno-missing-variable-declarations -Wno-pedantic -Wno-reserved-id-macro -Wno-reserved-identifier -Wno-shift-sign-overflow -Wno-signed-enum-bitfield -Wno-switch-enum -Wno-thread-safety-negative -Wno-undef -Wno-unreachable-code-break -Wno-unreachable-code-return -Wno-unused-macros -Wno-unused-member-function -Wno-non-c-typedef-for-linkage -Wno-covered-switch-default -Wno-deprecated -Wno-missing-noreturn -Wno-old-style-cast -Wno-newline-eof -Wno-padded -Wno-shadow-field-in-constructor -Wno-shadow-uncaptured-local -Wno-zero-as-null-pointer-constant -Wno-declaration-after-statement -Wno-range-loop-analysis -Wrange-loop-construct -Wdeprecated-anon-enum-enum-conversion -Wdeprecated-array-compare -Wdeprecated-attributes -Wdeprecated-comma-subscript -Wdeprecated-copy -Wdeprecated-copy-dtor -Wdeprecated-dynamic-exception-spec -Wdeprecated-enum-compare -Wdeprecated-enum-compare-conditional -Wdeprecated-enum-enum-conversion -Wdeprecated-enum-float-conversion -Wdeprecated-increment-bool -Wdeprecated-register -Wdeprecated-this-capture -Wdeprecated-volatile -Wdeprecated-writable-str /std:c++17 /GR- -Wno-abstract-vbase-init -Wno-weak-vtables -Wno-c++98-compat -Wno-c++98-compat-pedantic -Wno-undefined-func-template /c ../../src/sksl/SkSLCompiler.cpp /Foobj/src/sksl/skia.SkSLCompiler.obj /Fd"obj/skia_c.pdb"
In file included from ../../src/sksl/SkSLCompiler.cpp:77:
../..\src/sksl/generated/sksl_shared.dehydrated.sksl(1,26): error: default initialization of an object of const type 'const uint8_t' (aka 'const unsigned char')
static constexpr uint8_t SKSL_INCLUDE_C:/skia/out/Static/sksl_shared[] = {13,0,200,3,
^
= '\0'
../..\src/sksl/generated/sksl_shared.dehydrated.sksl(1,40): error: expected ';' after top level declarator
static constexpr uint8_t SKSL_INCLUDE_C:/skia/out/Static/sksl_shared[] = {13,0,200,3,
^
;
../..\src/sksl/generated/sksl_shared.dehydrated.sksl(1,41): error: expected unqualified-id
static constexpr uint8_t SKSL_INCLUDE_C:/skia/out/Static/sksl_shared[] = {13,0,200,3,
^
../..\src/sksl/generated/sksl_shared.dehydrated.sksl(2526,25): error: redefinition of 'SKSL_INCLUDE_C' with a different type: 'const size_t' (aka 'const unsigned long long') vs 'const uint8_t' (aka 'const unsigned char')
static constexpr size_t SKSL_INCLUDE_C:/skia/out/Static/sksl_shared_LENGTH = sizeof(SKSL_INCLUDE_C:/skia/out/Static/sksl_shared);
^
../..\src/sksl/generated/sksl_shared.dehydrated.sksl(1,26): note: previous definition is here
static constexpr uint8_t SKSL_INCLUDE_C:/skia/out/Static/sksl_shared[] = {13,0,200,3,
^
../..\src/sksl/generated/sksl_shared.dehydrated.sksl(2526,39): error: expected ';' after top level declarator
static constexpr size_t SKSL_INCLUDE_C:/skia/out/Static/sksl_shared_LENGTH = sizeof(SKSL_INCLUDE_C:/skia/out/Static/sksl_shared);
^
;
../..\src/sksl/generated/sksl_shared.dehydrated.sksl(2526,40): error: expected unqualified-id
static constexpr size_t SKSL_INCLUDE_C:/skia/out/Static/sksl_shared_LENGTH = sizeof(SKSL_INCLUDE_C:/skia/out/Static/sksl_shared);
^
In file included from ../../src/sksl/SkSLCompiler.cpp:78:
../..\src/sksl/generated/sksl_compute.dehydrated.sksl(1,26): error: redefinition of 'SKSL_INCLUDE_C'
static constexpr uint8_t SKSL_INCLUDE_C:/skia/out/Static/sksl_compute[] = {13,0,111,0,
^
../..\src/sksl/generated/sksl_shared.dehydrated.sksl(1,26): note: previous definition is here
static constexpr uint8_t SKSL_INCLUDE_C:/skia/out/Static/sksl_shared[] = {13,0,200,3,
^
In file included from ../../src/sksl/SkSLCompiler.cpp:78:
../..\src/sksl/generated/sksl_compute.dehydrated.sksl(1,40): error: expected ';' after top level declarator
static constexpr uint8_t SKSL_INCLUDE_C:/skia/out/Static/sksl_compute[] = {13,0,111,0,
^
;
../..\src/sksl/generated/sksl_compute.dehydrated.sksl(1,41): error: expected unqualified-id
static constexpr uint8_t SKSL_INCLUDE_C:/skia/out/Static/sksl_compute[] = {13,0,111,0,
^
../..\src/sksl/generated/sksl_compute.dehydrated.sksl(80,25): error: redefinition of 'SKSL_INCLUDE_C' with a different type: 'const size_t' (aka 'const unsigned long long') vs 'const uint8_t' (aka 'const unsigned char')
static constexpr size_t SKSL_INCLUDE_C:/skia/out/Static/sksl_compute_LENGTH = sizeof(SKSL_INCLUDE_C:/skia/out/Static/sksl_compute);
^
../..\src/sksl/generated/sksl_shared.dehydrated.sksl(1,26): note: previous definition is here
static constexpr uint8_t SKSL_INCLUDE_C:/skia/out/Static/sksl_shared[] = {13,0,200,3,
^
In file included from ../../src/sksl/SkSLCompiler.cpp:78:
../..\src/sksl/generated/sksl_compute.dehydrated.sksl(80,39): error: expected ';' after top level declarator
static constexpr size_t SKSL_INCLUDE_C:/skia/out/Static/sksl_compute_LENGTH = sizeof(SKSL_INCLUDE_C:/skia/out/Static/sksl_compute);
^
;
../..\src/sksl/generated/sksl_compute.dehydrated.sksl(80,40): error: expected unqualified-id
static constexpr size_t SKSL_INCLUDE_C:/skia/out/Static/sksl_compute_LENGTH = sizeof(SKSL_INCLUDE_C:/skia/out/Static/sksl_compute);
^
In file included from ../../src/sksl/SkSLCompiler.cpp:79:
../..\src/sksl/generated/sksl_frag.dehydrated.sksl(1,26): error: redefinition of 'SKSL_INCLUDE_C'
static constexpr uint8_t SKSL_INCLUDE_C:/skia/out/Static/sksl_frag[] = {13,0,96,0,
^
../..\src/sksl/generated/sksl_shared.dehydrated.sksl(1,26): note: previous definition is here
static constexpr uint8_t SKSL_INCLUDE_C:/skia/out/Static/sksl_shared[] = {13,0,200,3,
^
In file included from ../../src/sksl/SkSLCompiler.cpp:79:
../..\src/sksl/generated/sksl_frag.dehydrated.sksl(1,40): error: expected ';' after top level declarator
static constexpr uint8_t SKSL_INCLUDE_C:/skia/out/Static/sksl_frag[] = {13,0,96,0,
^
;
../..\src/sksl/generated/sksl_frag.dehydrated.sksl(1,41): error: expected unqualified-id
static constexpr uint8_t SKSL_INCLUDE_C:/skia/out/Static/sksl_frag[] = {13,0,96,0,
^
../..\src/sksl/generated/sksl_frag.dehydrated.sksl(58,25): error: redefinition of 'SKSL_INCLUDE_C' with a different type: 'const size_t' (aka 'const unsigned long long') vs 'const uint8_t' (aka 'const unsigned char')
static constexpr size_t SKSL_INCLUDE_C:/skia/out/Static/sksl_frag_LENGTH = sizeof(SKSL_INCLUDE_C:/skia/out/Static/sksl_frag);
^
../..\src/sksl/generated/sksl_shared.dehydrated.sksl(1,26): note: previous definition is here
static constexpr uint8_t SKSL_INCLUDE_C:/skia/out/Static/sksl_shared[] = {13,0,200,3,
^
In file included from ../../src/sksl/SkSLCompiler.cpp:79:
../..\src/sksl/generated/sksl_frag.dehydrated.sksl(58,39): error: expected ';' after top level declarator
static constexpr size_t SKSL_INCLUDE_C:/skia/out/Static/sksl_frag_LENGTH = sizeof(SKSL_INCLUDE_C:/skia/out/Static/sksl_frag);
^
;
../..\src/sksl/generated/sksl_frag.dehydrated.sksl(58,40): error: expected unqualified-id
static constexpr size_t SKSL_INCLUDE_C:/skia/out/Static/sksl_frag_LENGTH = sizeof(SKSL_INCLUDE_C:/skia/out/Static/sksl_frag);
^
In file included from ../../src/sksl/SkSLCompiler.cpp:80:
../..\src/sksl/generated/sksl_gpu.dehydrated.sksl(1,26): error: redefinition of 'SKSL_INCLUDE_C'
static constexpr uint8_t SKSL_INCLUDE_C:/skia/out/Static/sksl_gpu[] = {13,0,100,5,
^
../..\src/sksl/generated/sksl_shared.dehydrated.sksl(1,26): note: previous definition is here
static constexpr uint8_t SKSL_INCLUDE_C:/skia/out/Static/sksl_shared[] = {13,0,200,3,
^
fatal error: too many errors emitted, stopping now [-ferror-limit=]
20 errors generated.
[1091/3776] compile ../../src/sksl/SkSLInliner.cpp
ninja: build stopped: subcommand failed.