From 404df9fccf651f8eb84c7cf00d5ea197a650fbc1 Mon Sep 17 00:00:00 2001 From: Novice Arts LLC Date: Mon, 26 May 2025 17:39:36 -0400 Subject: [PATCH 1/2] added initial support for emscripten clang compilers Signed-off-by: Novice Arts LLC --- incbin.h | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/incbin.h b/incbin.h index 3f662e1..9e9de7d 100644 --- a/incbin.h +++ b/incbin.h @@ -131,6 +131,8 @@ #if !defined(INCBIN_OUTPUT_SECTION) # if defined(__APPLE__) # define INCBIN_OUTPUT_SECTION ".const_data" +# elif defined(__EMSCRIPTEN__) +# define INCBIN_OUTPUT_SECTION ".data" # else # define INCBIN_OUTPUT_SECTION ".rodata" # endif @@ -173,8 +175,13 @@ # define INCBIN_BYTE ".byte " # define INCBIN_TYPE(...) #else -# define INCBIN_SECTION ".section " INCBIN_OUTPUT_SECTION "\n" -# define INCBIN_GLOBAL(NAME) ".global " INCBIN_STRINGIZE(INCBIN_PREFIX) #NAME "\n" +# if defined(__EMSCRIPTEN__) +# define INCBIN_SECTION ".section " INCBIN_OUTPUT_SECTION ",\"\",@" "\n" +# define INCBIN_GLOBAL(NAME) ".global " INCBIN_STRINGIZE(INCBIN_PREFIX) #NAME "\n" +# else +# define INCBIN_SECTION ".section " INCBIN_OUTPUT_SECTION "\n" +# define INCBIN_GLOBAL(NAME) ".global " INCBIN_STRINGIZE(INCBIN_PREFIX) #NAME "\n" +# endif # if defined(__ghs__) # define INCBIN_INT ".word " # else @@ -423,17 +430,28 @@ INCBIN_ALIGN_BYTE \ INCBIN_MANGLE INCBIN_STRINGIZE(INCBIN_PREFIX) #NAME INCBIN_STYLE_STRING(END) ":\n" \ INCBIN_BYTE "1\n" \ + INCBIN_WEB_SIZE(END, NAME, 0)\ INCBIN_GLOBAL_LABELS(NAME, SIZE) \ INCBIN_ALIGN_HOST \ INCBIN_MANGLE INCBIN_STRINGIZE(INCBIN_PREFIX) #NAME INCBIN_STYLE_STRING(SIZE) ":\n" \ INCBIN_INT INCBIN_MANGLE INCBIN_STRINGIZE(INCBIN_PREFIX) #NAME INCBIN_STYLE_STRING(END) " - " \ INCBIN_MANGLE INCBIN_STRINGIZE(INCBIN_PREFIX) #NAME INCBIN_STYLE_STRING(DATA) "\n" \ INCBIN_ALIGN_HOST \ + INCBIN_WEB_SIZE(SIZE, NAME, 4)\ + INCBIN_WEB_DATA_SIZE(NAME)\ ".text\n" \ ); \ INCBIN_EXTERN(TYPE, NAME) #endif +#if defined(__EMSCRIPTEN__) +# define INCBIN_WEB_SIZE(VAR_TYPE, NAME, SIZE) ".size " INCBIN_MANGLE INCBIN_STRINGIZE(INCBIN_PREFIX) #NAME INCBIN_STYLE_STRING(VAR_TYPE) ", " AS_STR(SIZE) "\n" +# define INCBIN_WEB_DATA_SIZE(NAME) ".size " INCBIN_MANGLE INCBIN_STRINGIZE(INCBIN_PREFIX) #NAME INCBIN_STYLE_STRING(DATA) ", " INCBIN_MANGLE INCBIN_STRINGIZE(INCBIN_PREFIX) #NAME INCBIN_STYLE_STRING(END) " - " INCBIN_MANGLE INCBIN_STRINGIZE(INCBIN_PREFIX) #NAME INCBIN_STYLE_STRING(DATA) "\n" +#else +# define INCBIN_WEB_SIZE(VAR_TYPE, NAME, SIZE) +# define INCBIN_WEB_DATA_SIZE(NAME) +#endif + /** * @brief Include a textual file into the current translation unit. * From 9792f9f02ec422e18e0c14d140acc1d0422504c3 Mon Sep 17 00:00:00 2001 From: Novice Arts LLC Date: Mon, 26 May 2025 21:12:39 -0400 Subject: [PATCH 2/2] replace AS_STR with incbin stringize macro Signed-off-by: Novice Arts LLC --- incbin.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/incbin.h b/incbin.h index 9e9de7d..41da084 100644 --- a/incbin.h +++ b/incbin.h @@ -445,7 +445,7 @@ #endif #if defined(__EMSCRIPTEN__) -# define INCBIN_WEB_SIZE(VAR_TYPE, NAME, SIZE) ".size " INCBIN_MANGLE INCBIN_STRINGIZE(INCBIN_PREFIX) #NAME INCBIN_STYLE_STRING(VAR_TYPE) ", " AS_STR(SIZE) "\n" +# define INCBIN_WEB_SIZE(VAR_TYPE, NAME, SIZE) ".size " INCBIN_MANGLE INCBIN_STRINGIZE(INCBIN_PREFIX) #NAME INCBIN_STYLE_STRING(VAR_TYPE) ", " INCBIN_STRINGIZE(SIZE) "\n" # define INCBIN_WEB_DATA_SIZE(NAME) ".size " INCBIN_MANGLE INCBIN_STRINGIZE(INCBIN_PREFIX) #NAME INCBIN_STYLE_STRING(DATA) ", " INCBIN_MANGLE INCBIN_STRINGIZE(INCBIN_PREFIX) #NAME INCBIN_STYLE_STRING(END) " - " INCBIN_MANGLE INCBIN_STRINGIZE(INCBIN_PREFIX) #NAME INCBIN_STYLE_STRING(DATA) "\n" #else # define INCBIN_WEB_SIZE(VAR_TYPE, NAME, SIZE)