diff -ru blender-2.82.org/CMakeLists.txt blender-2.82/CMakeLists.txt --- blender-2.82.org/CMakeLists.txt 2020-02-13 01:42:10.000000000 -0800 +++ blender-2.82/CMakeLists.txt 2020-02-28 03:28:50.491903370 -0800 @@ -848,6 +848,19 @@ endif() endif() +# musl-libc related checks (missing execinfo.h, and feenableexcept()) +include(CheckIncludeFiles) +check_include_files(execinfo.h HAVE_EXECINFO_H) +if (HAVE_EXECINFO_H) + add_definitions(-DHAVE_EXECINFO_H) +endif() + +include(CheckLibraryExists) +check_library_exists(m feenableexcept "fenv.h" HAVE_FEENABLEEXCEPT) +if (HAVE_FEENABLEEXCEPT) + add_definitions(-DHAVE_FEENABLEEXCEPT) +endif() + # See TEST_SSE_SUPPORT() for how this is defined. # Do it globally, SSE2 is required for quite some time now. diff -ru blender-2.78.orig/source/blender/blenlib/intern/system.c blender-2.78a/source/blender/blenlib/intern/system.c --- blender-2.78.orig/source/blender/blenlib/intern/system.c 2016-10-25 09:59:23.000000000 +0000 +++ blender-2.78a/source/blender/blenlib/intern/system.c 2017-02-07 14:44:35.213040733 +0000 @@ -77,7 +77,7 @@ { /* ------------- */ /* Linux / Apple */ -#if defined(__linux__) || defined(__APPLE__) +#if (defined(__linux__) && defined(HAVE_EXECINFO_H)) || defined(__APPLE__) #define SIZE 100 void *buffer[SIZE]; diff -ru blender-2.78.orig/source/creator/creator_signals.c blender-2.78a/source/creator/creator_signals.c --- blender-2.78.orig/source/creator/creator_signals.c 2016-10-24 14:13:56.000000000 +0000 +++ blender-2.78a/source/creator/creator_signals.c 2017-02-07 14:47:01.888625973 +0000 @@ -309,7 +309,7 @@ * set breakpoints on sig_handle_fpe */ signal(SIGFPE, sig_handle_fpe); -# if defined(__linux__) && defined(__GNUC__) +# if defined(__linux__) && defined(__GNUC__) && defined(HAVE_FEENABLEEXCEPT) feenableexcept(FE_DIVBYZERO | FE_INVALID | FE_OVERFLOW); # endif /* defined(__linux__) && defined(__GNUC__) */ # if defined(OSX_SSE_FPE) --- a/source/blender/blenlib/intern/system.c 2019-07-30 21:05:30.702224608 +0200 +++ - 2019-07-30 21:13:21.535328709 +0200 @@ -38,10 +38,13 @@ # include # pragma warning(pop) #else -# include # include #endif +#if (defined(__linux__) && defined(HAVE_EXECINFO_H)) || defined(__APPLE__) +# include +#endif + int BLI_cpu_support_sse2(void) { #if defined(__x86_64__) || defined(_M_X64) --- a/intern/guardedalloc/intern/mallocn_intern.h 2019-07-24 09:41:39.000000000 +0200 +++ - 2019-10-20 00:03:13.450031866 +0200 @@ -40,7 +40,7 @@ #undef HAVE_MALLOC_STATS #define USE_MALLOC_USABLE_SIZE /* internal, when we have malloc_usable_size() */ -#if defined(__linux__) || (defined(__FreeBSD_kernel__) && !defined(__FreeBSD__)) || \ +#if (defined(__FreeBSD_kernel__) && !defined(__FreeBSD__)) || \ defined(__GLIBC__) # include # define HAVE_MALLOC_STATS --- a/intern/libc_compat/libc_compat.c +++ b/intern/libc_compat/libc_compat.c @@ -21,10 +21,10 @@ * incompatible with the system libraries that Blender is built on. To solve * this we add a few -ffast-math symbols that can be missing. */ -#ifdef __linux__ # include # include +#ifdef __GLIBC__ # if defined(__GLIBC_PREREQ) && __GLIBC_PREREQ(2, 31) double __exp_finite(double x);