working macOS build

This commit is contained in:
Zack Buhman 2025-12-15 14:14:18 -06:00
parent 1b8459aaae
commit d73c2be344
23 changed files with 40 additions and 52 deletions

7
.gitignore vendored
View File

@ -1,4 +1,9 @@
*~
.#*
*.o
*.d
*.s
*.blend1
main
*.zip
main
main*

View File

@ -13,14 +13,10 @@ CXXSTD += -std=gnu++14
CFLAGS += -Wall -Werror -Wfatal-errors
CFLAGS += -Wno-error=unused-function
CFLAGS += -Wno-error=unused-const-variable
CFLAGS += -Wno-error=unused-but-set-variable
#CFLAGS += -Wno-error=unused-but-set-variable
CFLAGS += -Wno-error=unused-variable
CFLAGS += -I$(MAKEFILE_PATH)/include
ifeq ($(shell uname),Darwin)
CFLAGS += $(shell pkg-config --cflags glfw3)
else
CFLAGS += -I$(dir $(GLFW))../include
endif
CXXFLAGS += -fno-exceptions
#CFLAGS += -DDEBUG_BUTTONS
#CFLAGS += -DDEBUG_AXES
@ -32,17 +28,14 @@ ifeq ($(OS),Windows_NT)
LDFLAGS += -Wl,--subsystem,windows -mwindows
endif
ifeq ($(shell uname),Darwin)
LDFLAGS += $(shell pkg-config --libs glfw3)
LDFLAGS += -framework Foundation -framework IOKit -framework AppKit
endif
OBJCOPY ?= objcopy
ifneq ($(shell uname),Darwin)
ifndef GLFW
$(error GLFW undefined)
endif
endif
ifdef I386
ARCH='-m32'
@ -77,20 +70,22 @@ OPT = -Og
all: main
define BUILD_BINARY_O
$(OBJCOPY) \
-I binary $(OBJARCH) \
--rename-section .data=.data.$(basename $@) \
$< $@
endef
#makefile_relative = $(shell realpath --relative-to $(makefile_path) $(1))
makefile_path := $(dir $(abspath $(firstword $(MAKEFILE_LIST))))
makefile_relative = $(shell realpath --relative-to $(makefile_path) $(1))
as_obj_binary = $(subst -,_,$(subst .,_,$(subst /,_,$(subst .h,,$(call makefile_relative,$(1))))))
as_obj_binary = $(subst -,_,$(subst .,_,$(subst /,_,$(subst .h,,$(1)))))
as_obj_binary_p = _binary_$(call as_obj_binary,$(1))
define BUILD_BINARY_S
@echo build_binary_h $@
@echo '.global $(call as_obj_binary_p,$<)_start' > $@
@echo '.global $(call as_obj_binary_p,$<)_end' >> $@
@echo '$(call as_obj_binary_p,$<)_start:' >> $@
@printf '\t.incbin "$<"\n' >> $@
@echo '$(call as_obj_binary_p,$<)_end:' >> $@
endef
define BUILD_BINARY_H
@echo gen $(call makefile_relative,$@)
@echo build_binary_h $@
@echo '#pragma once' > $@
@echo '' >> $@
@echo '#include <stdint.h>' >> $@
@ -101,7 +96,6 @@ define BUILD_BINARY_H
@echo '' >> $@
@echo 'extern uint32_t $(call as_obj_binary_p,$<)_start __asm("$(call as_obj_binary_p,$<)_start");' >> $@
@echo 'extern uint32_t $(call as_obj_binary_p,$<)_end __asm("$(call as_obj_binary_p,$<)_end");' >> $@
@echo 'extern uint32_t $(call as_obj_binary_p,$<)_size __asm("$(call as_obj_binary_p,$<)_size");' >> $@
@echo '' >> $@
@echo '#define $(call as_obj_binary,$<)_start ((const char *)&$(call as_obj_binary_p,$<)_start)' >> $@
@echo '#define $(call as_obj_binary,$<)_end ((const char *)&$(call as_obj_binary_p,$<)_end)' >> $@
@ -112,21 +106,21 @@ define BUILD_BINARY_H
@echo '#endif' >> $@
endef
%.glsl.o: %.glsl
$(BUILD_BINARY_O)
%.glsl.s: %.glsl
$(BUILD_BINARY_S)
%.data.s: %.data
$(BUILD_BINARY_S)
%.data.pal.s: %.data.pal
$(BUILD_BINARY_S)
include/%.glsl.h: src/%.glsl
$(BUILD_BINARY_H)
%.data.o: %.data
$(BUILD_BINARY_O)
include/%.data.h: src/%.data
$(BUILD_BINARY_H)
%.data.pal.o: %.data.pal
$(BUILD_BINARY_O)
include/%.data.pal.h: src/%.data.pal
$(BUILD_BINARY_H)
@ -134,11 +128,14 @@ clean:
rm -f *.o *.d *.gch
rm -f main
%.o: %.s
$(AS) $< -o $@ $(TARGET)
%.o: %.cpp
$(CXX) $(CXXSTD) $(ARCH) $(CFLAGS) $(OPT) $(DEBUG) $(DEPFLAGS) -MF ${<}.d -c $< -o $@
$(CXX) $(CXXSTD) $(ARCH) $(CFLAGS) $(OPT) $(DEBUG) $(DEPFLAGS) -MF ${<}.d -c $< -o $@ $(TARGET)
%.o: %.c
$(CC) $(CSTD) $(ARCH) $(CFLAGS) $(CXXFLAGS) $(OPT) $(DEBUG) $(DEPFLAGS) -MF ${<}.d -c $< -o $@
$(CC) $(CSTD) $(ARCH) $(CFLAGS) $(CXXFLAGS) $(OPT) $(DEBUG) $(DEPFLAGS) -MF ${<}.d -c $< -o $@ $(TARGET)
MAIN_OBJS = \
src/main.o \
@ -156,7 +153,7 @@ MAIN_OBJS = \
$(GLFW)
main: $(MAIN_OBJS)
$(CXX) $^ $(CXXFLAGS) $(ARCH) -o $@ $(LDFLAGS)
$(CXX) $^ $(CXXFLAGS) $(ARCH) -o $@ $(LDFLAGS) $(TARGET)
#-include $(shell find -type f -name 'src/*.d')

6
build_macos.sh Normal file
View File

@ -0,0 +1,6 @@
make \
TARGET='-target x86_64-apple-macos10.15' \
GLFW=$HOME/glfw-3.4-x86_64/src/libglfw3.a \
-j -B
mv main engineless-any-percent-speedrun.x86_64-macos10.15
zip engineless-any-percent-speedrun.x86_64-macos10.15.zip engineless-any-percent-speedrun.x86_64-macos10.15

View File

@ -8,7 +8,6 @@ extern "C" {
extern uint32_t _binary_src_font_ter_u32n_data_start __asm("_binary_src_font_ter_u32n_data_start");
extern uint32_t _binary_src_font_ter_u32n_data_end __asm("_binary_src_font_ter_u32n_data_end");
extern uint32_t _binary_src_font_ter_u32n_data_size __asm("_binary_src_font_ter_u32n_data_size");
#define src_font_ter_u32n_data_start ((const char *)&_binary_src_font_ter_u32n_data_start)
#define src_font_ter_u32n_data_end ((const char *)&_binary_src_font_ter_u32n_data_end)

View File

@ -8,7 +8,6 @@ extern "C" {
extern uint32_t _binary_src_level_level1_data_start __asm("_binary_src_level_level1_data_start");
extern uint32_t _binary_src_level_level1_data_end __asm("_binary_src_level_level1_data_end");
extern uint32_t _binary_src_level_level1_data_size __asm("_binary_src_level_level1_data_size");
#define src_level_level1_data_start ((const char *)&_binary_src_level_level1_data_start)
#define src_level_level1_data_end ((const char *)&_binary_src_level_level1_data_end)

View File

@ -8,7 +8,6 @@ extern "C" {
extern uint32_t _binary_src_level_level1_data_pal_start __asm("_binary_src_level_level1_data_pal_start");
extern uint32_t _binary_src_level_level1_data_pal_end __asm("_binary_src_level_level1_data_pal_end");
extern uint32_t _binary_src_level_level1_data_pal_size __asm("_binary_src_level_level1_data_pal_size");
#define src_level_level1_data_pal_start ((const char *)&_binary_src_level_level1_data_pal_start)
#define src_level_level1_data_pal_end ((const char *)&_binary_src_level_level1_data_pal_end)

View File

@ -8,7 +8,6 @@ extern "C" {
extern uint32_t _binary_src_level_level2_data_start __asm("_binary_src_level_level2_data_start");
extern uint32_t _binary_src_level_level2_data_end __asm("_binary_src_level_level2_data_end");
extern uint32_t _binary_src_level_level2_data_size __asm("_binary_src_level_level2_data_size");
#define src_level_level2_data_start ((const char *)&_binary_src_level_level2_data_start)
#define src_level_level2_data_end ((const char *)&_binary_src_level_level2_data_end)

View File

@ -8,7 +8,6 @@ extern "C" {
extern uint32_t _binary_src_level_level2_data_pal_start __asm("_binary_src_level_level2_data_pal_start");
extern uint32_t _binary_src_level_level2_data_pal_end __asm("_binary_src_level_level2_data_pal_end");
extern uint32_t _binary_src_level_level2_data_pal_size __asm("_binary_src_level_level2_data_pal_size");
#define src_level_level2_data_pal_start ((const char *)&_binary_src_level_level2_data_pal_start)
#define src_level_level2_data_pal_end ((const char *)&_binary_src_level_level2_data_pal_end)

View File

@ -8,7 +8,6 @@ extern "C" {
extern uint32_t _binary_src_level_level3_data_start __asm("_binary_src_level_level3_data_start");
extern uint32_t _binary_src_level_level3_data_end __asm("_binary_src_level_level3_data_end");
extern uint32_t _binary_src_level_level3_data_size __asm("_binary_src_level_level3_data_size");
#define src_level_level3_data_start ((const char *)&_binary_src_level_level3_data_start)
#define src_level_level3_data_end ((const char *)&_binary_src_level_level3_data_end)

View File

@ -8,7 +8,6 @@ extern "C" {
extern uint32_t _binary_src_level_level3_data_pal_start __asm("_binary_src_level_level3_data_pal_start");
extern uint32_t _binary_src_level_level3_data_pal_end __asm("_binary_src_level_level3_data_pal_end");
extern uint32_t _binary_src_level_level3_data_pal_size __asm("_binary_src_level_level3_data_pal_size");
#define src_level_level3_data_pal_start ((const char *)&_binary_src_level_level3_data_pal_start)
#define src_level_level3_data_pal_end ((const char *)&_binary_src_level_level3_data_pal_end)

View File

@ -8,7 +8,6 @@ extern "C" {
extern uint32_t _binary_src_level_level4_data_start __asm("_binary_src_level_level4_data_start");
extern uint32_t _binary_src_level_level4_data_end __asm("_binary_src_level_level4_data_end");
extern uint32_t _binary_src_level_level4_data_size __asm("_binary_src_level_level4_data_size");
#define src_level_level4_data_start ((const char *)&_binary_src_level_level4_data_start)
#define src_level_level4_data_end ((const char *)&_binary_src_level_level4_data_end)

View File

@ -8,7 +8,6 @@ extern "C" {
extern uint32_t _binary_src_level_level4_data_pal_start __asm("_binary_src_level_level4_data_pal_start");
extern uint32_t _binary_src_level_level4_data_pal_end __asm("_binary_src_level_level4_data_pal_end");
extern uint32_t _binary_src_level_level4_data_pal_size __asm("_binary_src_level_level4_data_pal_size");
#define src_level_level4_data_pal_start ((const char *)&_binary_src_level_level4_data_pal_start)
#define src_level_level4_data_pal_end ((const char *)&_binary_src_level_level4_data_pal_end)

View File

@ -8,7 +8,6 @@ extern "C" {
extern uint32_t _binary_src_level_level5_data_start __asm("_binary_src_level_level5_data_start");
extern uint32_t _binary_src_level_level5_data_end __asm("_binary_src_level_level5_data_end");
extern uint32_t _binary_src_level_level5_data_size __asm("_binary_src_level_level5_data_size");
#define src_level_level5_data_start ((const char *)&_binary_src_level_level5_data_start)
#define src_level_level5_data_end ((const char *)&_binary_src_level_level5_data_end)

View File

@ -8,7 +8,6 @@ extern "C" {
extern uint32_t _binary_src_level_level5_data_pal_start __asm("_binary_src_level_level5_data_pal_start");
extern uint32_t _binary_src_level_level5_data_pal_end __asm("_binary_src_level_level5_data_pal_end");
extern uint32_t _binary_src_level_level5_data_pal_size __asm("_binary_src_level_level5_data_pal_size");
#define src_level_level5_data_pal_start ((const char *)&_binary_src_level_level5_data_pal_start)
#define src_level_level5_data_pal_end ((const char *)&_binary_src_level_level5_data_pal_end)

View File

@ -8,7 +8,6 @@ extern "C" {
extern uint32_t _binary_src_shader_background_fp_glsl_start __asm("_binary_src_shader_background_fp_glsl_start");
extern uint32_t _binary_src_shader_background_fp_glsl_end __asm("_binary_src_shader_background_fp_glsl_end");
extern uint32_t _binary_src_shader_background_fp_glsl_size __asm("_binary_src_shader_background_fp_glsl_size");
#define src_shader_background_fp_glsl_start ((const char *)&_binary_src_shader_background_fp_glsl_start)
#define src_shader_background_fp_glsl_end ((const char *)&_binary_src_shader_background_fp_glsl_end)

View File

@ -8,7 +8,6 @@ extern "C" {
extern uint32_t _binary_src_shader_background_vp_glsl_start __asm("_binary_src_shader_background_vp_glsl_start");
extern uint32_t _binary_src_shader_background_vp_glsl_end __asm("_binary_src_shader_background_vp_glsl_end");
extern uint32_t _binary_src_shader_background_vp_glsl_size __asm("_binary_src_shader_background_vp_glsl_size");
#define src_shader_background_vp_glsl_start ((const char *)&_binary_src_shader_background_vp_glsl_start)
#define src_shader_background_vp_glsl_end ((const char *)&_binary_src_shader_background_vp_glsl_end)

View File

@ -8,7 +8,6 @@ extern "C" {
extern uint32_t _binary_src_shader_block_fp_glsl_start __asm("_binary_src_shader_block_fp_glsl_start");
extern uint32_t _binary_src_shader_block_fp_glsl_end __asm("_binary_src_shader_block_fp_glsl_end");
extern uint32_t _binary_src_shader_block_fp_glsl_size __asm("_binary_src_shader_block_fp_glsl_size");
#define src_shader_block_fp_glsl_start ((const char *)&_binary_src_shader_block_fp_glsl_start)
#define src_shader_block_fp_glsl_end ((const char *)&_binary_src_shader_block_fp_glsl_end)

View File

@ -8,7 +8,6 @@ extern "C" {
extern uint32_t _binary_src_shader_font_fp_glsl_start __asm("_binary_src_shader_font_fp_glsl_start");
extern uint32_t _binary_src_shader_font_fp_glsl_end __asm("_binary_src_shader_font_fp_glsl_end");
extern uint32_t _binary_src_shader_font_fp_glsl_size __asm("_binary_src_shader_font_fp_glsl_size");
#define src_shader_font_fp_glsl_start ((const char *)&_binary_src_shader_font_fp_glsl_start)
#define src_shader_font_fp_glsl_end ((const char *)&_binary_src_shader_font_fp_glsl_end)

View File

@ -8,7 +8,6 @@ extern "C" {
extern uint32_t _binary_src_shader_font_vp_glsl_start __asm("_binary_src_shader_font_vp_glsl_start");
extern uint32_t _binary_src_shader_font_vp_glsl_end __asm("_binary_src_shader_font_vp_glsl_end");
extern uint32_t _binary_src_shader_font_vp_glsl_size __asm("_binary_src_shader_font_vp_glsl_size");
#define src_shader_font_vp_glsl_start ((const char *)&_binary_src_shader_font_vp_glsl_start)
#define src_shader_font_vp_glsl_end ((const char *)&_binary_src_shader_font_vp_glsl_end)

View File

@ -8,7 +8,6 @@ extern "C" {
extern uint32_t _binary_src_shader_paddle_fp_glsl_start __asm("_binary_src_shader_paddle_fp_glsl_start");
extern uint32_t _binary_src_shader_paddle_fp_glsl_end __asm("_binary_src_shader_paddle_fp_glsl_end");
extern uint32_t _binary_src_shader_paddle_fp_glsl_size __asm("_binary_src_shader_paddle_fp_glsl_size");
#define src_shader_paddle_fp_glsl_start ((const char *)&_binary_src_shader_paddle_fp_glsl_start)
#define src_shader_paddle_fp_glsl_end ((const char *)&_binary_src_shader_paddle_fp_glsl_end)

View File

@ -8,7 +8,6 @@ extern "C" {
extern uint32_t _binary_src_shader_vertex_color_fp_glsl_start __asm("_binary_src_shader_vertex_color_fp_glsl_start");
extern uint32_t _binary_src_shader_vertex_color_fp_glsl_end __asm("_binary_src_shader_vertex_color_fp_glsl_end");
extern uint32_t _binary_src_shader_vertex_color_fp_glsl_size __asm("_binary_src_shader_vertex_color_fp_glsl_size");
#define src_shader_vertex_color_fp_glsl_start ((const char *)&_binary_src_shader_vertex_color_fp_glsl_start)
#define src_shader_vertex_color_fp_glsl_end ((const char *)&_binary_src_shader_vertex_color_fp_glsl_end)

View File

@ -8,7 +8,6 @@ extern "C" {
extern uint32_t _binary_src_shader_vertex_color_vp_glsl_start __asm("_binary_src_shader_vertex_color_vp_glsl_start");
extern uint32_t _binary_src_shader_vertex_color_vp_glsl_end __asm("_binary_src_shader_vertex_color_vp_glsl_end");
extern uint32_t _binary_src_shader_vertex_color_vp_glsl_size __asm("_binary_src_shader_vertex_color_vp_glsl_size");
#define src_shader_vertex_color_vp_glsl_start ((const char *)&_binary_src_shader_vertex_color_vp_glsl_start)
#define src_shader_vertex_color_vp_glsl_end ((const char *)&_binary_src_shader_vertex_color_vp_glsl_end)

View File

@ -8,7 +8,6 @@ extern "C" {
extern uint32_t _binary_src_texture_noise_data_start __asm("_binary_src_texture_noise_data_start");
extern uint32_t _binary_src_texture_noise_data_end __asm("_binary_src_texture_noise_data_end");
extern uint32_t _binary_src_texture_noise_data_size __asm("_binary_src_texture_noise_data_size");
#define src_texture_noise_data_start ((const char *)&_binary_src_texture_noise_data_start)
#define src_texture_noise_data_end ((const char *)&_binary_src_texture_noise_data_end)