transposed makefile style from vmax2bella

This commit is contained in:
Harvey Fong 2025-04-12 11:49:20 -06:00
parent 331313288e
commit ae30ea29f5

281
makefile
View File

@ -1,139 +1,164 @@
SDKNAME =bella_engine_sdk # Project configuration
OUTNAME =poomer-raylib-bella_onimage BELLA_SDK_NAME = bella_engine_sdk
UNAME =$(shell uname) EXECUTABLE_NAME = poomer-raylib-bella_onimage
PLATFORM = $(shell uname)
BUILD_TYPE ?= release# Default to release build if not specified
ifeq ($(UNAME), Darwin) # Common paths
BELLA_SDK_PATH = ../bella_engine_sdk
RAYGUI_PATH = ../raygui
RAYLIB_PATH = ../raylib
OBJ_DIR = obj/$(PLATFORM)/$(BUILD_TYPE)
BIN_DIR = bin/$(PLATFORM)/$(BUILD_TYPE)
OUTPUT_FILE = $(BIN_DIR)/$(EXECUTABLE_NAME)
SDKBASE = ../bella_engine_sdk # Platform-specific configuration
ifeq ($(PLATFORM), Darwin)
SDKFNAME = lib$(SDKNAME).dylib # macOS configuration
INCLUDEDIRS = -I$(SDKBASE)/src SDK_LIB_EXT = dylib
INCLUDEDIRS2 = -I../raygui/src SDK_LIB_FILE = lib$(BELLA_SDK_NAME).$(SDK_LIB_EXT)
INCLUDEDIRS3 = -I../raylib/src RAYLIB_LIB_NAME = libraylib.$(SDK_LIB_EXT)
RAYLIBDIR = ../raylib/src MACOS_SDK_PATH = /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk
RAYLIBNAME = libraylib.dylib
LIBDIR = $(SDKBASE)/lib # Compiler settings
LIBDIRS = -L$(LIBDIR) -L$(RAYLIBDIR) CC = clang
OBJDIR = obj/$(UNAME) CXX = clang++
BINDIR = bin/$(UNAME)
OUTPUT = $(BINDIR)/$(OUTNAME) # Architecture flags
ARCH_FLAGS = -arch x86_64 -arch arm64 -mmacosx-version-min=11.0 -isysroot $(MACOS_SDK_PATH)
ISYSROOT = /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk
# Include paths
CC = clang INCLUDE_PATHS = -I$(BELLA_SDK_PATH)/src \
CXX = clang++ -I$(RAYGUI_PATH)/src \
-I$(RAYLIB_PATH)/src
CCFLAGS = -arch x86_64\
-arch arm64\ # Library paths
-mmacosx-version-min=11.0\ SDK_LIB_PATH = $(BELLA_SDK_PATH)/lib
-isysroot $(ISYSROOT)\ RAYLIB_LIB_PATH = $(RAYLIB_PATH)/src
-fvisibility=hidden\ LIB_PATHS = -L$(SDK_LIB_PATH) -L$(RAYLIB_LIB_PATH)
-O3\
$(INCLUDEDIRS)\ # Platform-specific libraries
$(INCLUDEDIRS2)\ LIBRARIES = -l$(BELLA_SDK_NAME) \
$(INCLUDEDIRS3) -lraylib \
-lm \
CFLAGS = $(CCFLAGS)\ -ldl \
-std=c11 -framework OpenGL \
-framework CoreFoundation \
CXXFLAGS = $(CCFLAGS)\ -framework AppKit \
-std=c++11 -framework IOKit \
-framework CoreGraphics \
CPPDEFINES = -DNDEBUG=1\ -framework Foundation
-DDL_USE_SHARED
# Linking flags
LIBS = -l$(SDKNAME)\ LINKER_FLAGS = -mmacosx-version-min=11.0 \
-lraylib\ -isysroot $(MACOS_SDK_PATH) \
-lm\ -framework Cocoa \
-ldl\ -framework IOKit \
-framework OpenGL\ -framework CoreVideo \
-framework CoreFoundation\ -framework CoreFoundation \
-framework AppKit\ -framework Accelerate \
-framework IOKit\ -fvisibility=hidden \
-framework CoreGraphics\ -O5 \
-framework Foundation -rpath @executable_path \
-weak_library $(SDK_LIB_PATH)/libvulkan.dylib
LINKFLAGS = -mmacosx-version-min=11.0\
-isysroot $(ISYSROOT)\
-framework Cocoa\
-framework IOKit\
-framework CoreVideo\
-framework CoreFoundation\
-framework Accelerate\
-fvisibility=hidden\
-O5\
-rpath @executable_path\
-weak_library $(LIBDIR)/libvulkan.dylib
else else
# Linux configuration
SDKBASE = ../bella_engine_sdk SDK_LIB_EXT = so
SDK_LIB_FILE = lib$(BELLA_SDK_NAME).$(SDK_LIB_EXT)
SDKFNAME = lib$(SDKNAME).so RAYLIB_LIB_NAME = libraylib.$(SDK_LIB_EXT)
INCLUDEDIRS = -I$(SDKBASE)/src
INCLUDEDIRS2 = -I../raygui/src # Compiler settings
INCLUDEDIRS3 = -I../raylib/src CC = gcc
LIBDIR = $(SDKBASE)/lib CXX = g++
RAYLIBDIR = ../raylib/src
RAYLIBNAME = libraylib.so # Architecture flags
SODDIR = /usr/lib/x86_64-linux-gnu/ ARCH_FLAGS = -m64 -D_FILE_OFFSET_BITS=64
LIBDIRS = -L$(LIBDIR) -L$(RAYLIBDIR)
OBJDIR = obj/$(UNAME) # Include paths
BINDIR = bin/$(UNAME) INCLUDE_PATHS = -I$(BELLA_SDK_PATH)/src \
OUTPUT = $(BINDIR)/$(OUTNAME) -I$(RAYGUI_PATH)/src \
-I$(RAYLIB_PATH)/src
CC = gcc
CXX = g++ # Library paths
SDK_LIB_PATH = $(BELLA_SDK_PATH)/lib
CCFLAGS = -m64\ RAYLIB_LIB_PATH = $(RAYLIB_PATH)/src
-Wall\ SYSTEM_LIB_PATH = /usr/lib/x86_64-linux-gnu/
-fvisibility=hidden\ LIB_PATHS = -L$(SDK_LIB_PATH) -L$(RAYLIB_LIB_PATH)
-D_FILE_OFFSET_BITS=64\
-O3\ # Platform-specific libraries
$(INCLUDEDIRS)\ LIBRARIES = -l$(BELLA_SDK_NAME) \
$(INCLUDEDIRS2)\ -lraylib \
$(INCLUDEDIRS3) -lm \
-ldl \
CFLAGS = $(CCFLAGS)\ -lrt \
-std=c11 -lpthread \
-lX11 \
CXXFLAGS = $(CCFLAGS)\ -lGL \
-std=c++11 -lvulkan
CPPDEFINES = -DNDEBUG=1\ # Linking flags
-DDL_USE_SHARED LINKER_FLAGS = -m64 \
-fvisibility=hidden \
LIBS = -l$(SDKNAME)\ -O3 \
-lraylib\ -Wl,-rpath,'$$ORIGIN' \
-lm\ -Wl,-rpath,'$$ORIGIN/lib'
-ldl\
-lrt\
-lpthread\
-lX11\
-lGL\
-lvulkan
LINKFLAGS = -m64\
-fvisibility=hidden\
-O3\
-Wl,-rpath,'$$ORIGIN'\
-Wl,-rpath,'$$ORIGIN/lib'
endif endif
OBJS = poomer-raylib-bella_onimage.o # Build type specific flags
OBJ = $(patsubst %,$(OBJDIR)/%,$(OBJS)) ifeq ($(BUILD_TYPE), debug)
CPP_DEFINES = -D_DEBUG -DDL_USE_SHARED
COMMON_FLAGS = $(ARCH_FLAGS) -fvisibility=hidden -g -O0 $(INCLUDE_PATHS)
else
CPP_DEFINES = -DNDEBUG=1 -DDL_USE_SHARED
COMMON_FLAGS = $(ARCH_FLAGS) -fvisibility=hidden -O3 $(INCLUDE_PATHS)
endif
$(OBJDIR)/%.o: %.cpp # Language-specific flags
C_FLAGS = $(COMMON_FLAGS) -std=c11
CXX_FLAGS = $(COMMON_FLAGS) -std=c++11
# Objects
OBJECTS = $(EXECUTABLE_NAME).o
OBJECT_FILES = $(patsubst %,$(OBJ_DIR)/%,$(OBJECTS))
# Build rules
$(OBJ_DIR)/%.o: %.cpp
@mkdir -p $(@D) @mkdir -p $(@D)
$(CXX) -c -o $@ $< $(CXXFLAGS) $(CPPDEFINES) $(CXX) -c -o $@ $< $(CXX_FLAGS) $(CPP_DEFINES)
$(OUTPUT): $(OBJ) $(OUTPUT_FILE): $(OBJECT_FILES)
@mkdir -p $(@D) @mkdir -p $(@D)
$(CXX) -o $@ $^ $(LINKFLAGS) $(LIBDIRS) $(LIBS) $(CXX) -o $@ $^ $(LINKER_FLAGS) $(LIB_PATHS) $(LIBRARIES)
@cp $(LIBDIR)/$(SDKFNAME) $(BINDIR)/$(SDKFNAME) @echo "Copying libraries to $(BIN_DIR)..."
@cp $(SDK_LIB_PATH)/$(SDK_LIB_FILE) $(BIN_DIR)/$(SDK_LIB_FILE)
@echo "Build complete: $(OUTPUT_FILE)"
.PHONY: clean # Add default target
all: $(OUTPUT_FILE)
.PHONY: clean cleanall all
clean: clean:
rm -f $(OBJDIR)/*.o rm -f $(OBJ_DIR)/*.o
rm -f $(OUTPUT) rm -f $(OUTPUT_FILE)
rm -f $(BINDIR)/$(SDKFNAME) rm -f $(BIN_DIR)/$(SDK_LIB_FILE)
rm -f $(BINDIR)/$(RAYLIBNAME) rm -f $(BIN_DIR)/$(RAYLIB_LIB_NAME)
rmdir $(OBJ_DIR) 2>/dev/null || true
rmdir $(BIN_DIR) 2>/dev/null || true
cleanall:
rm -f obj/*/release/*.o
rm -f obj/*/debug/*.o
rm -f bin/*/release/$(EXECUTABLE_NAME)
rm -f bin/*/debug/$(EXECUTABLE_NAME)
rm -f bin/*/release/$(SDK_LIB_FILE)
rm -f bin/*/debug/$(SDK_LIB_FILE)
rm -f bin/*/release/*.$(SDK_LIB_EXT)
rm -f bin/*/debug/*.$(SDK_LIB_EXT)
rmdir obj/*/release 2>/dev/null || true
rmdir obj/*/debug 2>/dev/null || true
rmdir bin/*/release 2>/dev/null || true
rmdir bin/*/debug 2>/dev/null || true
rmdir obj/* 2>/dev/null || true
rmdir bin/* 2>/dev/null || true
rmdir obj 2>/dev/null || true
rmdir bin 2>/dev/null || true