usbloadergx/ehcmodule/Makefile
dimok321 7210addaf2 *Added support for starting .wbfs game files from fat32/ntfs partitions on a sector size > 512 (tested with 4096)
*modified libcustomfat and ntfs fragment fetch function to support >512 bytes per sector
*Added new ehcmodule (thanks rodries)
*Added real support of using both ports simultaniously without shutting down the other (thanks rodries for the ehcmodule works on this). There is no longer the limitation that the settings have to be on SD card for this. (ONLY HERMES CIOS)
*Moved a few settings to Feature Settings and added a new Hard Drive Settings
*Changed Wiinnertag path to only point to the path and not to the file. You must correct the path manually in custom path settings or reset you configs for this change or Winnertag won't work!!
*Removed a few compile warnings for devkitPPC R23
2011-06-22 17:57:37 +00:00

145 lines
5.0 KiB
Makefile

#---------------------------------------------------------------------------------
# Clear the implicit built in rules
#---------------------------------------------------------------------------------
.SUFFIXES:
#---------------------------------------------------------------------------------
# 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
# INCLUDES is a list of directories containing extra header files
#---------------------------------------------------------------------------------
TARGET := $(notdir $(CURDIR))
BUILD := build
SOURCES := source ../libcios/source ../wii_wbfs
DATA := data
INCLUDES := include ../tinyehci ../libcios/include ../wii_wbfs
SCRIPTDIR := scripts
BIN := bin
STRIPIOS := ../stripios/stripios.exe
LIBS :=
LIBDIRS :=
export IOS_MODULE=ehc
CFLAGS+=-D$(IOS_MODULE) $(DEBUG)
#---------------------------------------------------------------------------------
# the prefix on the compiler executables
#---------------------------------------------------------------------------------
#$(DEVKITARM)/bin/
PREFIX := $(DEVKITARM)/bin/arm-eabi-
CC := $(PREFIX)gcc
CXX := $(PREFIX)g++
AR := $(PREFIX)ar
OBJCOPY := $(PREFIX)objcopy
LD := $(PREFIX)g++
AS := $(PREFIX)g++
#---------------------------------------------------------------------------------
# linker script
#---------------------------------------------------------------------------------
LINKSCRIPT := $(ROOT)/$(SCRIPTDIR)/link.ld
SPECS := $(ROOT)/$(SCRIPTDIR)/nostart.specs
ifeq ($(BUILDING),$(emptystring))
export ROOT := $(CURDIR)
all:
@[ -d $(BUILD) ] || mkdir -p $(BUILD)
@$(MAKE) -C $(BUILD) --no-print-directory -f $(CURDIR)/Makefile BUILDING=all
clean:
@echo clean ...
@rm -fr $(BUILD) $(BIN)/*.elf
else
TARGET := $(notdir $(ROOT))
STRIPIOS := $(ROOT)/$(STRIPIOS)
#----------------------------------------------------
# MS Visual Studio Style Fix:
#----------------------------------------------------
#STYLEFIX = 2>&1 | sed -e 's/\([a-zA-Z\.]\+\):\([0-9]\+\):\([0-9]\+:\)\?\(.\+\)/\1(\2):\4/' -e 's/undefined/error: undefined/'
STYLEFIX ?=
#---------------------------------------------------------------------------------
# automatically build a list of object files for our project
#---------------------------------------------------------------------------------
OUTPUT := $(ROOT)/$(BIN)/$(TARGET)
CFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(ROOT)/$(dir)/*.c)))
CPPFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(ROOT)/$(dir)/*.cpp)))
sFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(ROOT)/$(dir)/*.s)))
SFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(ROOT)/$(dir)/*.S)))
BINFILES := $(foreach dir,$(DATA),$(notdir $(wildcard $(ROOT)/$(dir)/*.*)))
OFILES := $(addsuffix _bin.o,$(BINFILES)) \
$(CPPFILES:.cpp=_cpp.o) $(CFILES:.c=_c.o) \
$(sFILES:.s=_s.o) $(SFILES:.S=_S.o)
DEPENDS := $(OFILES:.o=.d)
VPATH = $(foreach dir,$(SOURCES),$(ROOT)/$(dir))
#---------------------------------------------------------------------------------
# options for code generation
#---------------------------------------------------------------------------------
INCLUDE := $(foreach dir,$(INCLUDES),-I$(ROOT)/$(dir)) \
$(foreach dir,$(LIBDIRS),-I$(dir)/include) \
-I$(ROOT)/$(BUILD)
#---------------------------------------------------------------------------------
# build a list of library paths
#---------------------------------------------------------------------------------
LIBPATHS := $(foreach dir,$(LIBDIRS),-L$(dir)/lib)
ARCH = -mcpu=arm9tdmi -mtune=arm9tdmi -mthumb -mthumb-interwork -mbig-endian
CFLAGS += $(ARCH) $(INCLUDE) -fno-strict-aliasing -Wall -Os -fomit-frame-pointer -ffast-math -fverbose-asm -Wpointer-arith -Winline -Wundef -g -ffunction-sections -fdata-sections -fno-exceptions
CFLAGS += -Wstrict-prototypes
AFLAGS = $(ARCH) -x assembler-with-cpp
LDFLAGS = $(ARCH) -specs=$(SPECS) -T$(LINKSCRIPT) $(LIBPATHS) $(LIBS) -Wl,--gc-sections -Wl,-static -Wl,-Map,$(TARGET).map -nostartfiles
$(OUTPUT).elf: $(TARGET).elf
@echo stripping $(notdir $@)
@$(STRIPIOS) $< $@
%.elf: $(OFILES)
@echo linking $(notdir $@)
@$(LD) -o $@ $(OFILES) $(LDFLAGS) $(STYLEFIX)
%_cpp.o : %.cpp
@echo $(notdir $<)
@$(CXX) -MMD -MF $*_cpp.d $(CFLAGS) -c $< -o$@ $(STYLEFIX)
%_c.o : %.c
@echo $(notdir $<)
@$(CC) -MMD -MF $*_c.d $(CFLAGS) -c $< -o$@ $(STYLEFIX)
%_s.o : %.s
@echo $(notdir $<)
@$(AS) -MMD -MF $*_s.d $(AFLAGS) -c $< -o$@ $(STYLEFIX)
%_bin.o : %.bin
@echo $(notdir $<)
@$(bin2o)
-include $(DEPENDS)
define bin2o
@echo -e "\t.section .rodata\n\t.align 4\n\t.global $(*)\n\t.global $(*)_end\n$(*):\n\t.incbin \"$(subst /,\\\\\\\\,$(shell echo $< | sed 's=/==;s=/=:/='))\"\n$(*)_end:\n" > $@.s
@$(CC) $(ASFLAGS) $(AFLAGS) -c $@.s -o $@
@rm -rf $@.s
endef
endif