Skip to content

Commit b0bcb8b

Browse files
authored
Merge pull request #6779 from xmake-io/embeddirs
add #embed and embedirs support #6762
2 parents 85c5964 + aa52387 commit b0bcb8b

File tree

7 files changed

+39
-0
lines changed

7 files changed

+39
-0
lines changed

tests/projects/c/embeddirs/.gitignore

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
# Xmake cache
2+
.xmake/
3+
build/
4+
5+
# MacOS Cache
6+
.DS_Store
7+
8+
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Hello from an embedded C23 file!

tests/projects/c/embeddirs/src/main.c

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
#include <stdio.h>
2+
#include <string.h>
3+
4+
static const unsigned char message_data[] = {
5+
#embed "message.txt"
6+
, '\0'
7+
};
8+
9+
int main(int argc, char** argv) {
10+
printf("Embedded message: %s\n", (const char*)message_data);
11+
printf("Size of embedded data (including null terminator): %zu bytes\n", sizeof(message_data));
12+
printf("Length of embedded string: %zu characters\n", strlen((const char*)message_data));
13+
return 0;
14+
}

tests/projects/c/embeddirs/xmake.lua

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
add_rules("mode.debug", "mode.release")
2+
3+
set_languages("c23")
4+
5+
target("embeddirs")
6+
set_kind("binary")
7+
add_files("src/*.c")
8+
add_embeddirs("assets")
9+

xmake/languages/c/load.lua

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,7 @@ function _get_apis()
100100
, "target.add_includedirs"
101101
, "target.add_sysincludedirs"
102102
, "target.add_frameworkdirs"
103+
, "target.add_embeddirs"
103104
-- option.add_xxx
104105
, "option.add_linkdirs"
105106
, "option.add_includedirs"

xmake/languages/c/xmake.lua

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ language("c")
4444
, "target.languages"
4545
, "target.pcheader"
4646
, "target.includedirs"
47+
, "target.embeddirs"
4748
, "target.defines"
4849
, "target.undefines"
4950
, "target.frameworkdirs"

xmake/modules/core/tools/gcc.lua

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -661,6 +661,11 @@ function nf_includedir(self, dir)
661661
return {"-I" .. path.translate(dir)}
662662
end
663663

664+
-- make the embeddir flag
665+
function nf_embeddir(self, dir)
666+
return {"--embed-dir=" .. path.translate(dir)}
667+
end
668+
664669
-- make the sysincludedir flag
665670
function nf_sysincludedir(self, dir)
666671
return {"-isystem", path.translate(dir)}

0 commit comments

Comments
 (0)