Created
March 1, 2025 05:04
-
-
Save hYdos/dd4a7ba64185ec59675ab55db00b09a7 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#------------------------------------------------------------------------------- | |
.SUFFIXES: | |
#------------------------------------------------------------------------------- | |
ifeq ($(strip $(DEVKITPRO)),) | |
$(error "Please set DEVKITPRO in your environment. export DEVKITPRO=<path to>/devkitpro") | |
endif | |
TOPDIR ?= $(CURDIR) | |
#------------------------------------------------------------------------------- | |
# APP_NAME sets the long name of the application | |
# APP_SHORTNAME sets the short name of the application | |
# APP_AUTHOR sets the author of the application | |
#------------------------------------------------------------------------------- | |
APP_NAME := vWii-Decaffeinator | |
APP_SHORTNAME := vWii-Decaf | |
APP_AUTHOR := GaryOderNichts | |
APP_VERSION := 3.0 | |
include $(DEVKITPRO)/wut/share/wut_rules | |
#------------------------------------------------------------------------------- | |
# TARGET is the name of the output | |
# BUILD is the directory where object files & intermediate files will be placed | |
# SOURCES is a list of directories containing source code | |
# DATA is a list of directories containing data files | |
# INCLUDES is a list of directories containing header files | |
#------------------------------------------------------------------------------- | |
TARGET := $(notdir $(CURDIR)) | |
BUILD := build | |
SOURCES := src \ | |
src/utils \ | |
src/menu | |
DATA := data | |
INCLUDES := include src | |
#------------------------------------------------------------------------------- | |
# options for code generation | |
#------------------------------------------------------------------------------- | |
CFLAGS := -Wall -O2 -ffunction-sections \ | |
$(MACHDEP) | |
CFLAGS += $(INCLUDE) -D__WIIU__ -D__WUT__ -D_GNU_SOURCE -DAPP_VERSION=\"$(APP_VERSION)\" | |
CXXFLAGS := $(CFLAGS) -std=gnu++20 | |
ASFLAGS := -g $(ARCH) | |
LDFLAGS = -g $(ARCH) $(RPXSPECS) -Wl,-Map,$(notdir $*.map) | |
LIBS := -lmocha -lwut | |
#------------------------------------------------------------------------------- | |
# list of directories containing libraries, this must be the top level | |
# containing include and lib | |
#------------------------------------------------------------------------------- | |
LIBDIRS := $(PORTLIBS) $(WUT_ROOT) $(WUT_ROOT)/usr | |
#------------------------------------------------------------------------------- | |
# no real need to edit anything past this point unless you need to add additional | |
# rules for different file extensions | |
#------------------------------------------------------------------------------- | |
ifneq ($(BUILD),$(notdir $(CURDIR))) | |
#------------------------------------------------------------------------------- | |
export OUTPUT := $(CURDIR)/$(TARGET) | |
export TOPDIR := $(CURDIR) | |
export VPATH := $(foreach dir,$(SOURCES),$(CURDIR)/$(dir)) \ | |
$(foreach dir,$(DATA),$(CURDIR)/$(dir)) | |
export DEPSDIR := $(CURDIR)/$(BUILD) | |
CFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.c))) | |
CPPFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.cpp))) | |
SFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.s))) | |
BINFILES := $(foreach dir,$(DATA),$(notdir $(wildcard $(dir)/*.*))) | |
#------------------------------------------------------------------------------- | |
# use CXX for linking C++ projects, CC for standard C | |
#------------------------------------------------------------------------------- | |
ifeq ($(strip $(CPPFILES)),) | |
#------------------------------------------------------------------------------- | |
export LD := $(CC) | |
#------------------------------------------------------------------------------- | |
else | |
#------------------------------------------------------------------------------- | |
export LD := $(CXX) | |
#------------------------------------------------------------------------------- | |
endif | |
#------------------------------------------------------------------------------- | |
export OFILES_BIN := $(addsuffix .o,$(BINFILES)) | |
export OFILES_SRC := $(CPPFILES:.cpp=.o) $(CFILES:.c=.o) $(SFILES:.s=.o) | |
export OFILES := $(OFILES_BIN) $(OFILES_SRC) | |
export HFILES_BIN := $(addsuffix .h,$(subst .,_,$(BINFILES))) | |
export INCLUDE := $(foreach dir,$(INCLUDES),-I$(CURDIR)/$(dir)) \ | |
$(foreach dir,$(LIBDIRS),-I$(dir)/include) \ | |
-I$(CURDIR)/$(BUILD) | |
export LIBPATHS := $(foreach dir,$(LIBDIRS),-L$(dir)/lib) | |
.PHONY: $(BUILD) clean all | |
#------------------------------------------------------------------------------- | |
all: $(BUILD) | |
$(BUILD): | |
@[ -d $@ ] || mkdir -p $@ | |
@$(MAKE) --no-print-directory -C $(BUILD) -f $(CURDIR)/Makefile | |
#------------------------------------------------------------------------------- | |
clean: | |
@echo clean ... | |
@rm -fr $(BUILD) $(TARGET).wuhb $(TARGET).rpx $(TARGET).elf | |
#------------------------------------------------------------------------------- | |
else | |
.PHONY: all | |
DEPENDS := $(OFILES:.o=.d) | |
#------------------------------------------------------------------------------- | |
# main targets | |
#------------------------------------------------------------------------------- | |
all : $(OUTPUT).wuhb | |
$(OUTPUT).wuhb : $(OUTPUT).rpx | |
$(OUTPUT).rpx : $(OUTPUT).elf | |
$(OUTPUT).elf : $(OFILES) | |
$(OFILES_SRC) : $(HFILES_BIN) | |
#------------------------------------------------------------------------------- | |
# you need a rule like this for each extension you use as binary data | |
#------------------------------------------------------------------------------- | |
%.bin.o %_bin.h : %.bin | |
#------------------------------------------------------------------------------- | |
@echo $(notdir $<) | |
@$(bin2o) | |
-include $(DEPENDS) | |
#------------------------------------------------------------------------------- | |
endif | |
#------------------------------------------------------------------------------- |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment