OSX_BUILD cleaned commit

This commit is contained in:
Hyenadae 2020-05-16 15:30:27 -04:00
parent 8722b09bb4
commit 5dd43ad674
8 changed files with 89 additions and 32 deletions

View file

@ -22,8 +22,9 @@ TARGET_N64 = 0
# Build and optimize for Raspberry Pi(s) # Build and optimize for Raspberry Pi(s)
TARGET_RPI ?= 0 TARGET_RPI ?= 0
# Compiler to use (ido or gcc)
COMPILER ?= ido # Makeflag to enable OSX fixes
OSX_BUILD ?= 0
# Disable better camera by default # Disable better camera by default
BETTERCAMERA ?= 0 BETTERCAMERA ?= 0
@ -141,6 +142,10 @@ ifeq ($(TARGET_RPI),1) # Define RPi to change SDL2 title & GLES2 hints
VERSION_CFLAGS += -DUSE_GLES VERSION_CFLAGS += -DUSE_GLES
endif endif
ifeq ($(OSX_BUILD),1) # Modify GFX & SDL2 for OSX GL
VERSION_CFLAGS += -DOSX_BUILD
endif
VERSION_ASFLAGS := --defsym AVOID_UB=1 VERSION_ASFLAGS := --defsym AVOID_UB=1
COMPARE := 0 COMPARE := 0
@ -167,7 +172,7 @@ endif
endif endif
# Make tools if out of date # Make tools if out of date
DUMMY != make -s -C tools >&2 || echo FAIL DUMMY != make -C tools >&2 || echo FAIL
ifeq ($(DUMMY),FAIL) ifeq ($(DUMMY),FAIL)
$(error Failed to build tools) $(error Failed to build tools)
endif endif
@ -228,10 +233,6 @@ GODDARD_SRC_DIRS := src/goddard src/goddard/dynlists
MIPSISET := -mips2 MIPSISET := -mips2
MIPSBIT := -32 MIPSBIT := -32
ifeq ($(COMPILER),gcc)
MIPSISET := -mips3
endif
ifeq ($(VERSION),eu) ifeq ($(VERSION),eu)
OPT_FLAGS := -O2 OPT_FLAGS := -O2
else else
@ -250,9 +251,8 @@ ifeq ($(TARGET_WEB),1)
endif endif
# Use a default opt flag for gcc, then override if RPi # Use a default opt flag for gcc, then override if RPi
ifeq ($(COMPILER),gcc) # OPT_FLAGS := -O2 # -O2 opt breaks sound on x86?
OPT_FLAGS := -O2 # Breaks sound on x86?
endif
ifeq ($(TARGET_RPI),1) ifeq ($(TARGET_RPI),1)
machine = $(shell sh -c 'uname -m 2>/dev/null || echo unknown') machine = $(shell sh -c 'uname -m 2>/dev/null || echo unknown')
@ -415,6 +415,10 @@ ENDIAN_BITWIDTH := $(BUILD_DIR)/endian-and-bitwidth
AS := as AS := as
ifeq ($(OSX_BUILD),1)
AS := i686-w64-mingw32-as
endif
ifneq ($(TARGET_WEB),1) # As in, not-web PC port ifneq ($(TARGET_WEB),1) # As in, not-web PC port
CC := $(CROSS)gcc CC := $(CROSS)gcc
CXX := $(CROSS)g++ CXX := $(CROSS)g++
@ -431,11 +435,19 @@ endif
ifeq ($(WINDOWS_BUILD),1) # fixes compilation in MXE on Linux and WSL ifeq ($(WINDOWS_BUILD),1) # fixes compilation in MXE on Linux and WSL
CPP := cpp -P CPP := cpp -P
OBJCOPY := objcopy OBJCOPY := objcopy
OBJDUMP := $(CROSS)objdump
else else
ifeq ($(OSX_BUILD),1)
CPP := cpp-9 -P
OBJDUMP := i686-w64-mingw32-objdump
OBJCOPY := i686-w64-mingw32-objcopy
else # Linux & other builds
CPP := $(CROSS)cpp -P CPP := $(CROSS)cpp -P
OBJCOPY := $(CROSS)objcopy OBJCOPY := $(CROSS)objcopy
endif
OBJDUMP := $(CROSS)objdump OBJDUMP := $(CROSS)objdump
endif
endif
PYTHON := python3 PYTHON := python3
SDLCONFIG := $(CROSS)sdl2-config SDLCONFIG := $(CROSS)sdl2-config
@ -498,9 +510,12 @@ else ifeq ($(TARGET_RPI),1)
# Linux / Other builds below # Linux / Other builds below
LDFLAGS := $(OPT_FLAGS) -lm -lGLESv2 `$(SDLCONFIG) --libs` -no-pie LDFLAGS := $(OPT_FLAGS) -lm -lGLESv2 `$(SDLCONFIG) --libs` -no-pie
else else
ifeq ($(OSX_BUILD),1)
LDFLAGS := -lm -framework OpenGL `$(SDLCONFIG) --libs` -no-pie -lpthread `pkg-config --libs libusb-1.0 glfw3 glew`
else
LDFLAGS := $(BITS) -march=$(TARGET_ARCH) -lm -lGL `$(SDLCONFIG) --libs` -no-pie -lpthread LDFLAGS := $(BITS) -march=$(TARGET_ARCH) -lm -lGL `$(SDLCONFIG) --libs` -no-pie -lpthread
endif endif
endif # End of LDFLAGS
# Prevent a crash with -sopt # Prevent a crash with -sopt
export LANG := C export LANG := C
@ -711,7 +726,6 @@ $(BUILD_DIR)/assets/mario_anim_data.c: $(wildcard assets/anims/*.inc.c)
$(BUILD_DIR)/assets/demo_data.c: assets/demo_data.json $(wildcard assets/demos/*.bin) $(BUILD_DIR)/assets/demo_data.c: assets/demo_data.json $(wildcard assets/demos/*.bin)
$(PYTHON) tools/demo_data_converter.py assets/demo_data.json $(VERSION_CFLAGS) > $@ $(PYTHON) tools/demo_data_converter.py assets/demo_data.json $(VERSION_CFLAGS) > $@
ifeq ($(COMPILER),ido)
# Source code # Source code
$(BUILD_DIR)/levels/%/leveldata.o: OPT_FLAGS := -g $(BUILD_DIR)/levels/%/leveldata.o: OPT_FLAGS := -g
$(BUILD_DIR)/actors/%.o: OPT_FLAGS := -g $(BUILD_DIR)/actors/%.o: OPT_FLAGS := -g
@ -753,8 +767,6 @@ $(BUILD_DIR)/src/audio/%.acpp: src/audio/%.c
$(BUILD_DIR)/src/audio/%.copt: $(BUILD_DIR)/src/audio/%.acpp $(BUILD_DIR)/src/audio/%.copt: $(BUILD_DIR)/src/audio/%.acpp
$(QEMU_IRIX) -silent -L $(IRIX_ROOT) $(IRIX_ROOT)/usr/lib/copt -signed -I=$< -CMP=$@ -cp=i -scalaroptimize=1 $(QEMU_IRIX) -silent -L $(IRIX_ROOT) $(IRIX_ROOT)/usr/lib/copt -signed -I=$< -CMP=$@ -cp=i -scalaroptimize=1
endif endif
endif
# Rebuild files with 'GLOBAL_ASM' if the NON_MATCHING flag changes. # Rebuild files with 'GLOBAL_ASM' if the NON_MATCHING flag changes.
$(GLOBAL_ASM_O_FILES): $(GLOBAL_ASM_DEP).$(NON_MATCHING) $(GLOBAL_ASM_O_FILES): $(GLOBAL_ASM_DEP).$(NON_MATCHING)

View file

@ -3,8 +3,13 @@
#include "ultratypes.h" #include "ultratypes.h"
#ifdef OSX_BUILD
#include <strings.h> // OSX doesn't like it not being included?
#else
// Old deprecated functions from strings.h, replaced by memcpy/memset. // Old deprecated functions from strings.h, replaced by memcpy/memset.
extern void bcopy(const void *, void *, size_t); extern void bcopy(const void *, void *, size_t);
extern void bzero(void *, size_t); extern void bzero(void *, size_t);
#endif
#endif /* !_OS_LIBC_H_ */ #endif /* !_OS_LIBC_H_ */

View file

@ -1,6 +1,7 @@
#include "libultra_internal.h" #include "libultra_internal.h"
#include <stdlib.h> #include <stdlib.h>
#ifndef OSX_BUILD
lldiv_t lldiv(long long num, long long denom) { lldiv_t lldiv(long long num, long long denom) {
lldiv_t ret; lldiv_t ret;
@ -13,6 +14,7 @@ lldiv_t lldiv(long long num, long long denom) {
return ret; return ret;
} }
#endif // OSX_BUILD cannot use this
ldiv_t ldiv(long num, long denom) { ldiv_t ldiv(long num, long denom) {
ldiv_t ret; ldiv_t ret;

View file

@ -33,6 +33,7 @@ static const du pilo = {
static const fu zero = {0.0}; static const fu zero = {0.0};
extern const fu NAN; extern const fu NAN;
#ifndef OSX_BUILD
float cosf(float x) float cosf(float x)
{ {
double dx; // double x double dx; // double x
@ -92,3 +93,5 @@ float cosf(float x)
return zero.f; return zero.f;
} }
#endif // OSX_BUILD cannot use this

View file

@ -18,12 +18,19 @@
#include <SDL2/SDL.h> #include <SDL2/SDL.h>
#define GL_GLEXT_PROTOTYPES 1 #define GL_GLEXT_PROTOTYPES 1
#include <SDL2/SDL_opengl.h> #include <SDL2/SDL_opengl.h>
#else #else
#include <SDL2/SDL.h> #include <SDL2/SDL.h>
#define GL_GLEXT_PROTOTYPES 1 #define GL_GLEXT_PROTOTYPES 1
#ifdef OSX_BUILD
#include <SDL2/SDL_opengl.h>
#else
#include <SDL2/SDL_opengles2.h> #include <SDL2/SDL_opengles2.h>
#endif #endif
#endif
#include "gfx_cc.h" #include "gfx_cc.h"
#include "gfx_rendering_api.h" #include "gfx_rendering_api.h"
@ -187,7 +194,11 @@ static struct ShaderProgram *gfx_opengl_create_and_load_new_shader(uint32_t shad
size_t num_floats = 4; size_t num_floats = 4;
// Vertex shader // Vertex shader
#ifdef OSX_BUILD
append_line(vs_buf, &vs_len, "");
#else
append_line(vs_buf, &vs_len, "#version 100"); append_line(vs_buf, &vs_len, "#version 100");
#endif
append_line(vs_buf, &vs_len, "attribute vec4 aVtxPos;"); append_line(vs_buf, &vs_len, "attribute vec4 aVtxPos;");
if (used_textures[0] || used_textures[1]) { if (used_textures[0] || used_textures[1]) {
append_line(vs_buf, &vs_len, "attribute vec2 aTexCoord;"); append_line(vs_buf, &vs_len, "attribute vec2 aTexCoord;");
@ -218,8 +229,13 @@ static struct ShaderProgram *gfx_opengl_create_and_load_new_shader(uint32_t shad
append_line(vs_buf, &vs_len, "}"); append_line(vs_buf, &vs_len, "}");
// Fragment shader // Fragment shader
#ifdef OSX_BUILD
append_line(fs_buf, &fs_len, "");
#else
append_line(fs_buf, &fs_len, "#version 100"); append_line(fs_buf, &fs_len, "#version 100");
append_line(fs_buf, &fs_len, "precision mediump float;"); append_line(fs_buf, &fs_len, "precision mediump float;");
#endif
if (used_textures[0] || used_textures[1]) { if (used_textures[0] || used_textures[1]) {
append_line(fs_buf, &fs_len, "varying vec2 vTexCoord;"); append_line(fs_buf, &fs_len, "varying vec2 vTexCoord;");
} }
@ -465,6 +481,10 @@ static void gfx_opengl_init(void) {
glewInit(); glewInit();
#endif #endif
#ifdef OSX_BUILD
glewInit();
#endif
glGenBuffers(1, &opengl_vbo); glGenBuffers(1, &opengl_vbo);
glBindBuffer(GL_ARRAY_BUFFER, opengl_vbo); glBindBuffer(GL_ARRAY_BUFFER, opengl_vbo);

View file

@ -13,9 +13,15 @@
#else #else
#include <SDL2/SDL.h> #include <SDL2/SDL.h>
#define GL_GLEXT_PROTOTYPES 1 #define GL_GLEXT_PROTOTYPES 1
#ifdef OSX_BUILD
#include <SDL2/SDL_opengl.h>
#else
#include <SDL2/SDL_opengles2.h> #include <SDL2/SDL_opengles2.h>
#endif #endif
#endif // End of OS-Specific GL defines
#include "gfx_window_manager_api.h" #include "gfx_window_manager_api.h"
#include "gfx_screen_config.h" #include "gfx_screen_config.h"
#include "../configfile.h" #include "../configfile.h"

View file

@ -1,5 +1,10 @@
UNAME := $(shell uname)
ifeq ($(UNAME),Darwin)
OSX_BUILD := -DOSX_BUILD
endif
CC := gcc CC := gcc
CFLAGS := -Llib -Iinclude -I . -Wall -Wextra -Wno-unused-parameter -pedantic -std=c99 -O3 -s CFLAGS := -Llib -Iinclude -I . -Wall -Wextra -Wno-unused-parameter $(OSX_BUILD) -pedantic -std=c99 -O3 -s
PROGRAMS := n64graphics n64graphics_ci mio0 n64cksum textconv patch_libultra_math iplfontutil aifc_decode aiff_extract_codebook vadpcm_enc tabledesign extract_data_for_mio skyconv PROGRAMS := n64graphics n64graphics_ci mio0 n64cksum textconv patch_libultra_math iplfontutil aifc_decode aiff_extract_codebook vadpcm_enc tabledesign extract_data_for_mio skyconv
n64graphics_SOURCES := n64graphics.c utils.c n64graphics_SOURCES := n64graphics.c utils.c
@ -43,7 +48,7 @@ clean:
define COMPILE define COMPILE
$(1): $($1_SOURCES) $(1): $($1_SOURCES)
$(CC) $(CFLAGS) $$^ -lm -o $$@ $($1_CFLAGS) $(CC) $(CFLAGS) $(OSX_BUILD) $$^ -lm -o $$@ $($1_CFLAGS)
endef endef
$(foreach p,$(PROGRAMS),$(eval $(call COMPILE,$(p)))) $(foreach p,$(PROGRAMS),$(eval $(call COMPILE,$(p))))

View file

@ -23,7 +23,11 @@ SOFTWARE.
*/ */
#include "exoquant.h" #include "exoquant.h"
#ifndef OSX_BUILD // OSX build cannot have malloc defined
#include <malloc.h> #include <malloc.h>
#endif
#include <math.h> #include <math.h>
#include <stdlib.h> #include <stdlib.h>
#include <stdio.h> #include <stdio.h>