Skip to content

Emscripten toolchain fails to build Harfbuzz/Freetype on aarch64 macOS #141

@patapancakes

Description

@patapancakes

Building the Emscripten toolchain fails on macOS while compiling Harfbuzz/Freetype. Commenting out those libraries in the shell script makes the build succeed.

[1/3] Building CXX object CMakeFiles/harfbuzz.dir/src/harfbuzz.cc.o
FAILED: CMakeFiles/harfbuzz.dir/src/harfbuzz.cc.o 
/opt/homebrew/Cellar/emscripten/3.1.28/libexec/em++ -DHAVE_ATEXIT -DHAVE_FREETYPE=1 -DHAVE_FT_DONE_MM_VAR -DHAVE_FT_GET_VAR_BLEND_COORDINATES -DHAVE_FT_SET_VAR_BLEND_COORDINATES -DHAVE_GETPAGESIZE -DHAVE_ISATTY -DHAVE_MMAP -DHAVE_MPROTECT -DHAVE_PTHREAD -DHAVE_STDBOOL_H -DHAVE_SYSCONF -DHAVE_SYS_MMAN_H -DHAVE_UNISTD_H -I/Users/maru/Developer/EasyRPG/buildscripts/emscripten/harfbuzz-5.3.1/src -I/Users/maru/Developer/EasyRPG/buildscripts/emscripten/harfbuzz-5.3.1/build/src -I/Users/maru/Developer/EasyRPG/buildscripts/emscripten/include/freetype2 -O2 -g0 -sUSE_SDL=0 -I/Users/maru/Developer/EasyRPG/buildscripts/emscripten/include -fno-rtti -fno-exceptions -fno-threadsafe-statics -std=c++11 -O2 -g -DNDEBUG -MD -MT CMakeFiles/harfbuzz.dir/src/harfbuzz.cc.o -MF CMakeFiles/harfbuzz.dir/src/harfbuzz.cc.o.d -o CMakeFiles/harfbuzz.dir/src/harfbuzz.cc.o -c /Users/maru/Developer/EasyRPG/buildscripts/emscripten/harfbuzz-5.3.1/src/harfbuzz.cc
In file included from /Users/maru/Developer/EasyRPG/buildscripts/emscripten/harfbuzz-5.3.1/src/harfbuzz.cc:14:
/Users/maru/Developer/EasyRPG/buildscripts/emscripten/harfbuzz-5.3.1/src/hb-ft.cc:790:5: error: cast from 'int (*)(const FT_Vector *, hb_draw_session_t *)' (aka 'int (*)(const FT_Vector_ *, hb_draw_session_t *)') to 'FT_Outline_MoveToFunc' (aka 'int (*)(const FT_Vector_ *, void *)') converts to incompatible function type [-Werror,-Wcast-function-type-strict]
    (FT_Outline_MoveToFunc) _hb_ft_move_to,
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/maru/Developer/EasyRPG/buildscripts/emscripten/harfbuzz-5.3.1/src/hb-ft.cc:791:5: error: cast from 'int (*)(const FT_Vector *, hb_draw_session_t *)' (aka 'int (*)(const FT_Vector_ *, hb_draw_session_t *)') to 'FT_Outline_LineToFunc' (aka 'int (*)(const FT_Vector_ *, void *)') converts to incompatible function type [-Werror,-Wcast-function-type-strict]
    (FT_Outline_LineToFunc) _hb_ft_line_to,
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/maru/Developer/EasyRPG/buildscripts/emscripten/harfbuzz-5.3.1/src/hb-ft.cc:792:5: error: cast from 'int (*)(const FT_Vector *, const FT_Vector *, hb_draw_session_t *)' (aka 'int (*)(const FT_Vector_ *, const FT_Vector_ *, hb_draw_session_t *)') to 'FT_Outline_ConicToFunc' (aka 'int (*)(const FT_Vector_ *, const FT_Vector_ *, void *)') converts to incompatible function type [-Werror,-Wcast-function-type-strict]
    (FT_Outline_ConicToFunc) _hb_ft_conic_to,
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/maru/Developer/EasyRPG/buildscripts/emscripten/harfbuzz-5.3.1/src/hb-ft.cc:793:5: error: cast from 'int (*)(const FT_Vector *, const FT_Vector *, const FT_Vector *, hb_draw_session_t *)' (aka 'int (*)(const FT_Vector_ *, const FT_Vector_ *, const FT_Vector_ *, hb_draw_session_t *)') to 'FT_Outline_CubicToFunc' (aka 'int (*)(const FT_Vector_ *, const FT_Vector_ *, const FT_Vector_ *, void *)') converts to incompatible function type [-Werror,-Wcast-function-type-strict]
    (FT_Outline_CubicToFunc) _hb_ft_cubic_to,
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/maru/Developer/EasyRPG/buildscripts/emscripten/harfbuzz-5.3.1/src/hb-ft.cc:1005:73: error: cast from 'void (*)(FT_Face)' (aka 'void (*)(FT_FaceRec_ *)') to 'FT_Generic_Finalizer' (aka 'void (*)(void *)') converts to incompatible function type [-Werror,-Wcast-function-type-strict]
  if (unlikely (!ft_face->generic.data || ft_face->generic.finalizer != (FT_Generic_Finalizer) hb_ft_face_finalize))
                                                                        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/maru/Developer/EasyRPG/buildscripts/emscripten/harfbuzz-5.3.1/src/hb.hh:248:46: note: expanded from macro 'unlikely'
#define unlikely(expr) (__builtin_expect (!!(expr), 0))
                                             ^~~~
In file included from /Users/maru/Developer/EasyRPG/buildscripts/emscripten/harfbuzz-5.3.1/src/harfbuzz.cc:14:
/Users/maru/Developer/EasyRPG/buildscripts/emscripten/harfbuzz-5.3.1/src/hb-ft.cc:1011:34: error: cast from 'void (*)(FT_Face)' (aka 'void (*)(FT_FaceRec_ *)') to 'FT_Generic_Finalizer' (aka 'void (*)(void *)') converts to incompatible function type [-Werror,-Wcast-function-type-strict]
    ft_face->generic.finalizer = (FT_Generic_Finalizer) hb_ft_face_finalize;
                                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/maru/Developer/EasyRPG/buildscripts/emscripten/harfbuzz-5.3.1/src/hb-ft.cc:1274:32: error: cast from 'void (*)(FT_Face)' (aka 'void (*)(FT_FaceRec_ *)') to 'FT_Generic_Finalizer' (aka 'void (*)(void *)') converts to incompatible function type [-Werror,-Wcast-function-type-strict]
  ft_face->generic.finalizer = (FT_Generic_Finalizer) _release_blob;
                               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
7 errors generated.
em++: error: '/opt/homebrew/Cellar/emscripten/3.1.28/libexec/llvm/bin/clang++ -target wasm32-unknown-emscripten -fignore-exceptions -fvisibility=default -mllvm -combiner-global-alias-analysis=false -mllvm -enable-emscripten-sjlj -mllvm -disable-lsr -DEMSCRIPTEN --sysroot=/opt/homebrew/Cellar/emscripten/3.1.28/libexec/cache/sysroot -Xclang -iwithsysroot/include/compat -DHAVE_ATEXIT -DHAVE_FREETYPE=1 -DHAVE_FT_DONE_MM_VAR -DHAVE_FT_GET_VAR_BLEND_COORDINATES -DHAVE_FT_SET_VAR_BLEND_COORDINATES -DHAVE_GETPAGESIZE -DHAVE_ISATTY -DHAVE_MMAP -DHAVE_MPROTECT -DHAVE_PTHREAD -DHAVE_STDBOOL_H -DHAVE_SYSCONF -DHAVE_SYS_MMAN_H -DHAVE_UNISTD_H -I/Users/maru/Developer/EasyRPG/buildscripts/emscripten/harfbuzz-5.3.1/src -I/Users/maru/Developer/EasyRPG/buildscripts/emscripten/harfbuzz-5.3.1/build/src -I/Users/maru/Developer/EasyRPG/buildscripts/emscripten/include/freetype2 -O2 -g0 -I/Users/maru/Developer/EasyRPG/buildscripts/emscripten/include -fno-rtti -fno-exceptions -fno-threadsafe-statics -std=c++11 -O2 -g3 -DNDEBUG -MD -MT CMakeFiles/harfbuzz.dir/src/harfbuzz.cc.o -MF CMakeFiles/harfbuzz.dir/src/harfbuzz.cc.o.d -c /Users/maru/Developer/EasyRPG/buildscripts/emscripten/harfbuzz-5.3.1/src/harfbuzz.cc -o CMakeFiles/harfbuzz.dir/src/harfbuzz.cc.o' failed (returned 1)
ninja: build stopped: subcommand failed.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions