CLAM-Development  1.4.0
EmbeddedFile.hxx
Go to the documentation of this file.
1 #ifndef EmbeddedFile_hxx
2 #define EmbeddedFile_hxx
3 
8 
9 #if defined __MINGW32__
10 // COFF binary target version
11 #define CLAM_EMBEDDED_FILE(varname, file) \
12 asm ( \
13 " .section \".rodata\"\n" \
14 " .def _" #varname "\n" \
15 " _" #varname ":\n" \
16 " .incbin \"" file "\"\n" \
17 " .byte 0\n" \
18 " .scl 2\n" \
19 " .size . - _" #varname "\n" \
20 " .endef\n" \
21 ); \
22 extern const char varname[];
23 // This was needed but at some version it made it not to compile
24 // " .scl 1\n"
25 
26 #elif defined __ELF__
27 // ELF binary target version
28 
29 #define CLAM_EMBEDDED_FILE(varname, file) \
30 asm ( \
31 " .section \".rodata\"\n" \
32 " .type " #varname ", @object\n" \
33 " " #varname ":\n" \
34 " .incbin \"" file "\"\n" \
35 " .byte 0\n" \
36 " .size " #varname ", .-" #varname "\n" \
37 ); \
38 extern const char varname[];
39 #else
40 #error "No support for embedded files in your platform"
41 #define CLAM_EMBEDDED_FILE(varname, file) \
42 extern const char varname[];
43 #endif
44 
45 
47 #define CLAM_EXTERNAL_FILE_DATA(varname, file) CLAM_EMBEDDED_FILE(varname, file)
48 
49 
50 #endif//EmbeddedFile_hxx