diff options
Diffstat (limited to 'base/incbin.h')
| -rw-r--r-- | base/incbin.h | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/base/incbin.h b/base/incbin.h new file mode 100644 index 0000000..fc1ecd2 --- /dev/null +++ b/base/incbin.h @@ -0,0 +1,50 @@ + + +#define STR2(x) #x +#define STR(x) STR2(x) + +#ifdef _WIN32 +#define INCBIN_SECTION ".data, \"aw\"" +#else +#define INCBIN_SECTION ".data" +#endif + +/* +#ifdef _WIN32 +#define INCBIN_SECTION ".rdata, \"dr\"" +#else +#define INCBIN_SECTION ".rodata" +#endif +*/ + +#define INCBIN(name, file) \ + __asm__(".section " INCBIN_SECTION "\n" \ + ".global " STR(name) "_data\n" \ + ".balign 64\n" \ + STR(name) "_data:\n" \ + ".incbin " STR(file) "\n" \ + ".zero 64\n" \ + ".global " STR(name) "_end\n" \ + ".balign 1\n" \ + STR(name) "_end:\n"); \ + extern __attribute__((aligned(64))) char name##_data[]; \ + extern char name##_end[]; + +/* +// INCBIN_SHADER(vertexshader, "#version 140", "shader_header.glsl", "vertex_shader.glsl"); +#define INCBIN_SHADER(name, version_str, header_file, shader_file) \ + __asm__(".section " INCBIN_SECTION "\n" \ + ".global " STR(name) "_data\n" \ + ".balign 64\n" \ + STR(name) "_data:\n" \ + ".ascii \"" version_str "\\n\"\n" \ + ".incbin \"" header_file "\"\n" \ + ".incbin \"" shader_file "\"\n" \ + ".byte 0\n" \ + ".global " STR(name) "_end\n" \ + ".balign 1\n" \ + STR(name) "_end:\n"); \ + extern __attribute__((aligned(64))) char name##_data[]; \ + extern char name##_end[]; + +*/ |
