You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
126 lines
4.6 KiB
126 lines
4.6 KiB
#--------------------------------------------------------------------------------- |
|
.SUFFIXES: |
|
#--------------------------------------------------------------------------------- |
|
|
|
ifeq ($(strip $(DEVKITARM)),) |
|
$(error "Please set DEVKITARM in your environment. export DEVKITARM=<path to>devkitARM") |
|
endif |
|
|
|
include $(DEVKITARM)/ds_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 := $(shell basename $(CURDIR)) |
|
BUILD := build |
|
SOURCES := ../../ |
|
DATA := data |
|
INCLUDES := include |
|
|
|
#--------------------------------------------------------------------------------- |
|
# options for code generation |
|
#--------------------------------------------------------------------------------- |
|
ARCH := -mthumb -mthumb-interwork |
|
|
|
CFLAGS := -Wall -O2\ |
|
-march=armv5te -mtune=arm946e-s \ |
|
-fomit-frame-pointer -ffast-math \ |
|
$(ARCH) |
|
|
|
CFLAGS += $(INCLUDE) -DARM9 |
|
CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions |
|
|
|
ASFLAGS := $(ARCH) -march=armv5te -mtune=arm946e-s |
|
LDFLAGS = -specs=ds_arm9.specs -g $(ARCH) -Wl,-Map,$(notdir $*.map) |
|
|
|
#--------------------------------------------------------------------------------- |
|
# list of directories containing libraries, this must be the top level containing |
|
# include and lib |
|
#--------------------------------------------------------------------------------- |
|
LIBDIRS := $(LIBNDS) |
|
|
|
#--------------------------------------------------------------------------------- |
|
# 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)/lib/libz.a |
|
|
|
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 := $(addsuffix .o,$(BINFILES)) \ |
|
$(CPPFILES:.cpp=.o) $(CFILES:.c=.o) $(SFILES:.s=.o) |
|
|
|
export INCLUDE := $(foreach dir,$(INCLUDES),-I$(CURDIR)/$(dir)) \ |
|
$(foreach dir,$(LIBDIRS),-I$(dir)/include) \ |
|
-I$(CURDIR)/$(BUILD) |
|
|
|
.PHONY: $(BUILD) clean all |
|
|
|
#--------------------------------------------------------------------------------- |
|
all: $(BUILD) |
|
@[ -d $@ ] || mkdir -p include |
|
@cp ../../*.h include |
|
|
|
lib: |
|
@[ -d $@ ] || mkdir -p $@ |
|
|
|
$(BUILD): lib |
|
@[ -d $@ ] || mkdir -p $@ |
|
@$(MAKE) --no-print-directory -C $(BUILD) -f $(CURDIR)/Makefile |
|
|
|
#--------------------------------------------------------------------------------- |
|
clean: |
|
@echo clean ... |
|
@rm -fr $(BUILD) lib |
|
|
|
#--------------------------------------------------------------------------------- |
|
else |
|
|
|
DEPENDS := $(OFILES:.o=.d) |
|
|
|
#--------------------------------------------------------------------------------- |
|
# main targets |
|
#--------------------------------------------------------------------------------- |
|
$(OUTPUT) : $(OFILES) |
|
|
|
#--------------------------------------------------------------------------------- |
|
%.bin.o : %.bin |
|
#--------------------------------------------------------------------------------- |
|
@echo $(notdir $<) |
|
@$(bin2o) |
|
|
|
|
|
-include $(DEPENDS) |
|
|
|
#--------------------------------------------------------------------------------------- |
|
endif |
|
#---------------------------------------------------------------------------------------
|
|
|