espruino / Espruino

The Espruino JavaScript interpreter - Official Repo
http://www.espruino.com/
Other
2.73k stars 741 forks source link

Build LINUX board on Mac Os X Intel #2483

Open MaBecker opened 2 months ago

MaBecker commented 2 months ago

Hi, wanted to know if this is Mac gcc specific or if there is someting broken when building a Espruino on Mac as Linux board.

#/usr/bin/gcc -v
# Apple clang version 15.0.0 (clang-1500.3.9.4)
# Target: x86_64-apple-darwin23.4.0

targets/linux/jshardware.c:361:48: error: incompatible function pointer types passing 'void (*)()' to parameter of type 'void * _Nullable (* _Nonnull)(void * _Nullable)' [-Wincompatible-function-pointer-types]
  int err = pthread_create(&inputThread, NULL, &jshInputThread, NULL);
                                               ^~~~~~~~~~~~~~~
MaBecker commented 2 months ago

The last time I tried to build a Linux board was release 2v18.6.

gfwilliams commented 2 months ago

Pretty sure this is Mac specific - works fine on Linux

opichals commented 2 months ago

@MaBecker Seeing the same error here on an M1 Mac.

% gcc -v
Apple clang version 15.0.0 (clang-1500.3.9.4)
Target: arm64-apple-darwin23.4.0
targets/linux/jshardware.c:361:48: error: incompatible function pointer types passing 'void (*)()' to parameter of type 'void * _Nullable (* _Nonnull)(void * _Nullable)' [-Wincompatible-function-pointer-types]
  int err = pthread_create(&inputThread, NULL, &jshInputThread, NULL);
                                               ^~~~~~~~~~~~~~~
MaBecker commented 2 months ago

Found this, adding it is building but causing a lot linker warnings like this:

53 warnings generated.
LD bin/espruino
ld: warning: disabling chained fixups because of unaligned pointers
ld: warning: pointer not aligned at _jswSymbols_Pin_proto+0x4 from  /github/Espruino/Espruino/obj/gen/jswrapper.o
.....
looks like for all _jswSysmbols_*
.....

I will keep this localy until someone comes up with a propper solution for this on Mac's.

MaBecker commented 2 months ago

Pretty sure this is Mac specific - works fine on Linux

Well, I guess it's more a gcc version thing ;-)