#if 0 SRC=${0##*/} BIN=${SRC%.*} glslc compute_module.comp -o COMPUTE_MODULE.tmp gcc $SRC -o $BIN -lm -lvulkan && ./$BIN && rm $BIN rm COMPUTE_MODULE.tmp exit 0 #endif #include int main(int argc, char **argv) { FILE *in = fopen("COMPUTE_MODULE.tmp", "rb"); if (in == NULL) { printf("Cannot open compiled module code.\n"); return -1; } FILE *out = fopen("compute_module.inl.h", "wb"); if (out == NULL) { printf("Cannot write compiled module inlined data.\n"); return -1; } fprintf(out, "#ifndef SAMPLE_COMPUTE_COMPUTE_MODULE_INL_H\n"); fprintf(out, "#define SAMPLE_COMPUTE_COMPUTE_MODULE_INL_H\n"); fprintf(out, "\n"); fprintf(out, "unsigned COMPUTE_MODULE_CODE[] = {\n "); while (!feof(in)) { int x = 0; int n = fread(&x, 1, 4, in); if (n <= 0) break; fprintf(out, " %d,", x); } fprintf(out, "\n};\n\n"); fprintf(out, "#endif\n"); fclose(in); fclose(out); return 0; }