Checkout https://github.com/sm64-port/sm64-port.git, apply the following super hacky diff, brew install gcc mingw-w64 make pkg-config sdl2 glew libusb, copy the ROM per the docs, and run gmake (for the newer brew version, not the old OS one).
$ file build/us_pc/sm64.us build/us_pc/sm64.us: Mach-O 64-bit executable arm64 $ otool -L build/us_pc/sm64.us build/us_pc/sm64.us: /opt/homebrew/opt/libusb/lib/libusb-1.0.0.dylib (compatibility version 4.0.0, current version 4.0.0) /opt/homebrew/opt/sdl2/lib/libSDL2-2.0.0.dylib (compatibility version 23.0.0, current version 23.0.0) /opt/homebrew/opt/glew/lib/libGLEW.2.2.dylib (compatibility version 2.2.0, current version 2.2.0) /opt/homebrew/opt/gcc/lib/gcc/11/libstdc++.6.dylib (compatibility version 7.0.0, current version 7.29.0) /System/Library/Frameworks/OpenGL.framework/Versions/A/OpenGL (compatibility version 1.0.0, current version 1.0.0) /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1311.100.3) $
Fascinating how we've gotten here, no?
diff --git a/Makefile b/Makefile index cfac1e8..cf62291 100644 --- a/Makefile +++ b/Makefile @@ -456,10 +456,10 @@ export LANG := C else # TARGET_N64 -AS := as +AS := i686-w64-mingw32-as ifneq ($(TARGET_WEB),1) - CC := gcc - CXX := g++ + CC := gcc-11 + CXX := g++-11 else CC := emcc endif @@ -468,8 +468,8 @@ ifeq ($(CXX_FILES),"") else LD := $(CXX) endif -OBJDUMP := objdump -OBJCOPY := objcopy +OBJDUMP := i686-w64-mingw32-objdump +OBJCOPY := i686-w64-mingw32-objcopy PYTHON := python3 # Platform-specific compiler and linker flags @@ -479,7 +479,7 @@ ifeq ($(TARGET_WINDOWS),1) endif ifeq ($(TARGET_LINUX),1) PLATFORM_CFLAGS := -DTARGET_LINUX `pkg-config --cflags libusb-1.0` - PLATFORM_LDFLAGS := -lm -lpthread `pkg-config --libs libusb-1.0` -lasound -lpulse -no-pie + PLATFORM_LDFLAGS := -lm -lpthread `pkg-config --libs libusb-1.0` -no-pie endif ifeq ($(TARGET_WEB),1) PLATFORM_CFLAGS := -DTARGET_WEB @@ -497,8 +497,8 @@ ifeq ($(ENABLE_OPENGL),1) GFX_LDFLAGS += $(shell sdl2-config --libs) -lglew32 -lopengl32 -lwinmm -limm32 -lversion -loleaut32 -lsetupapi endif ifeq ($(TARGET_LINUX),1) - GFX_CFLAGS += $(shell sdl2-config --cflags) - GFX_LDFLAGS += -lGL $(shell sdl2-config --libs) -lX11 -lXrandr + GFX_CFLAGS += $(shell sdl2-config --cflags) -I/opt/homebrew/include + GFX_LDFLAGS += $(shell sdl2-config --libs) -L/opt/homebrew/lib -lGLEW -framework OpenGL endif ifeq ($(TARGET_WEB),1) GFX_CFLAGS += -s USE_SDL=2 diff --git a/include/PR/os_libc.h b/include/PR/os_libc.h index 94111c0..6a43358 100644 --- a/include/PR/os_libc.h +++ b/include/PR/os_libc.h @@ -3,8 +3,6 @@ #include "ultratypes.h" -// Old deprecated functions from strings.h, replaced by memcpy/memset. -extern void bcopy(const void *, void *, size_t); -extern void bzero(void *, size_t); +#include <string.h> #endif /* !_OS_LIBC_H_ */ diff --git a/src/pc/controller/wup.c b/src/pc/controller/wup.c index 9de54c1..35a37d3 100644 --- a/src/pc/controller/wup.c +++ b/src/pc/controller/wup.c @@ -1,4 +1,4 @@ -#if !defined(__MINGW32__) && !defined(__BSD__) && !defined(TARGET_WEB) +#if !defined(__MINGW32__) && !defined(__BSD__) && !defined(TARGET_WEB) && !defined(__APPLE__) // See LICENSE for license #define _XOPEN_SOURCE 600 diff --git a/src/pc/gfx/gfx_opengl.c b/src/pc/gfx/gfx_opengl.c index 7bc9745..51824cc 100644 --- a/src/pc/gfx/gfx_opengl.c +++ b/src/pc/gfx/gfx_opengl.c @@ -8,7 +8,7 @@ #endif #include <PR/gbi.h> -#ifdef __MINGW32__ +#if defined(__MINGW32__) || defined(__APPLE__) #define FOR_WINDOWS 1 #else #define FOR_WINDOWS 0 diff --git a/src/pc/gfx/gfx_sdl2.c b/src/pc/gfx/gfx_sdl2.c index 4fd5c43..79622a5 100644 --- a/src/pc/gfx/gfx_sdl2.c +++ b/src/pc/gfx/gfx_sdl2.c @@ -2,7 +2,7 @@ #if !defined(__linux__) && !defined(__BSD__) && defined(ENABLE_OPENGL) -#ifdef __MINGW32__ +#if defined(__MINGW32__) || defined(__APPLE__) #define FOR_WINDOWS 1 #else #define FOR_WINDOWS 0 diff --git a/src/pc/pc_main.c b/src/pc/pc_main.c index 89aa1fa..d1fde8d 100644 --- a/src/pc/pc_main.c +++ b/src/pc/pc_main.c @@ -196,7 +196,7 @@ void main_func(void) { audio_api = &audio_alsa; } #endif -#ifdef TARGET_WEB +#if defined(TARGET_WEB) || defined(__APPLE__) if (audio_api == NULL && audio_sdl.init()) { audio_api = &audio_sdl; }