From f6a590065c5df9ea2cdb7779843511f3605aeeb3 Mon Sep 17 00:00:00 2001 From: Povilas Kanapickas Date: Fri, 23 Sep 2022 04:08:21 +0300 Subject: [PATCH] Prefix symbols from stb_image.h This makes it possible to link assimp statically into an executable with another static library that includes stb_image.h without hiding its symbols. --- code/Common/StbCommon.h | 58 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) diff --git a/code/Common/StbCommon.h b/code/Common/StbCommon.h index 1265d25da..573c98ac7 100644 --- a/code/Common/StbCommon.h +++ b/code/Common/StbCommon.h @@ -48,6 +48,64 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #pragma GCC diagnostic ignored "-Wunused-function" #endif +#ifndef STB_USE_HUNTER +/* Use prefixed names for the symbols from stb_image as it is a very commonly embedded library. + Including vanilla stb_image symbols causes duplicate symbol problems if assimp is linked + statically together with another library or executable that also embeds stb_image. + + Symbols are not prefixed if using Hunter because in such case there exists a single true + stb_image library on the system that is used by assimp and can be used by all the other + libraries and executables. + + The list can be regenerated using the following: + + cat | fgrep STBIDEF | fgrep '(' | sed -E 's/\*|\(.+//g' | \ + awk '{print "#define " $(NF) " assimp_" $(NF) }' | sort | uniq" +*/ +#define stbi_convert_iphone_png_to_rgb assimp_stbi_convert_iphone_png_to_rgb +#define stbi_convert_wchar_to_utf8 assimp_stbi_convert_wchar_to_utf8 +#define stbi_failure_reason assimp_stbi_failure_reason +#define stbi_hdr_to_ldr_gamma assimp_stbi_hdr_to_ldr_gamma +#define stbi_hdr_to_ldr_scale assimp_stbi_hdr_to_ldr_scale +#define stbi_image_free assimp_stbi_image_free +#define stbi_info assimp_stbi_info +#define stbi_info_from_callbacks assimp_stbi_info_from_callbacks +#define stbi_info_from_file assimp_stbi_info_from_file +#define stbi_info_from_memory assimp_stbi_info_from_memory +#define stbi_is_16_bit assimp_stbi_is_16_bit +#define stbi_is_16_bit_from_callbacks assimp_stbi_is_16_bit_from_callbacks +#define stbi_is_16_bit_from_file assimp_stbi_is_16_bit_from_file +#define stbi_is_16_bit_from_memory assimp_stbi_is_16_bit_from_memory +#define stbi_is_hdr assimp_stbi_is_hdr +#define stbi_is_hdr_from_callbacks assimp_stbi_is_hdr_from_callbacks +#define stbi_is_hdr_from_file assimp_stbi_is_hdr_from_file +#define stbi_is_hdr_from_memory assimp_stbi_is_hdr_from_memory +#define stbi_ldr_to_hdr_gamma assimp_stbi_ldr_to_hdr_gamma +#define stbi_ldr_to_hdr_scale assimp_stbi_ldr_to_hdr_scale +#define stbi_load_16 assimp_stbi_load_16 +#define stbi_load_16_from_callbacks assimp_stbi_load_16_from_callbacks +#define stbi_load_16_from_memory assimp_stbi_load_16_from_memory +#define stbi_load assimp_stbi_load +#define stbi_loadf assimp_stbi_loadf +#define stbi_loadf_from_callbacks assimp_stbi_loadf_from_callbacks +#define stbi_loadf_from_file assimp_stbi_loadf_from_file +#define stbi_loadf_from_memory assimp_stbi_loadf_from_memory +#define stbi_load_from_callbacks assimp_stbi_load_from_callbacks +#define stbi_load_from_file_16 assimp_stbi_load_from_file_16 +#define stbi_load_from_file assimp_stbi_load_from_file +#define stbi_load_from_memory assimp_stbi_load_from_memory +#define stbi_load_gif_from_memory assimp_stbi_load_gif_from_memory +#define stbi_set_flip_vertically_on_load assimp_stbi_set_flip_vertically_on_load +#define stbi_set_flip_vertically_on_load_thread assimp_stbi_set_flip_vertically_on_load_thread +#define stbi_set_unpremultiply_on_load assimp_stbi_set_unpremultiply_on_load +#define stbi_zlib_decode_buffer assimp_stbi_zlib_decode_buffer +#define stbi_zlib_decode_malloc assimp_stbi_zlib_decode_malloc +#define stbi_zlib_decode_malloc_guesssize assimp_stbi_zlib_decode_malloc_guesssize +#define stbi_zlib_decode_malloc_guesssize_headerflag assimp_stbi_zlib_decode_malloc_guesssize_headerflag +#define stbi_zlib_decode_noheader_buffer assimp_stbi_zlib_decode_noheader_buffer +#define stbi_zlib_decode_noheader_malloc assimp_stbi_zlib_decode_noheader_malloc +#endif + #include "stb/stb_image.h" #if _MSC_VER