summaryrefslogtreecommitdiff
path: root/base/incbin.h
blob: fc1ecd2f9f9cfb7207eb8e919d45b4fb29af2634 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
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[];

*/