aboutsummaryrefslogtreecommitdiff
path: root/backends/platform/ds/arm7/Makefile
diff options
context:
space:
mode:
Diffstat (limited to 'backends/platform/ds/arm7/Makefile')
-rw-r--r--backends/platform/ds/arm7/Makefile436
1 files changed, 436 insertions, 0 deletions
diff --git a/backends/platform/ds/arm7/Makefile b/backends/platform/ds/arm7/Makefile
new file mode 100644
index 0000000000..349de22427
--- /dev/null
+++ b/backends/platform/ds/arm7/Makefile
@@ -0,0 +1,436 @@
+#---------------------------------------------------------------------------------
+.SUFFIXES:
+#---------------------------------------------------------------------------------
+
+#---------------------------------------------------------------------------------
+# TARGET is the name of the output, if this ends with _mb generates a multiboot image
+# 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 := arm7
+BUILD := build
+SOURCES := gfx source data
+INCLUDES := include build
+
+#---------------------------------------------------------------------------------
+# options for code generation
+#---------------------------------------------------------------------------------
+ARCH := -mthumb-interwork
+
+# note: arm9tdmi isn't the correct CPU arch, but anything newer and LD
+# *insists* it has a FPU or VFP, and it won't take no for an answer!
+CFLAGS := -g -Wall -O2\
+ -mcpu=arm7tdmi -mtune=arm7tdmi -fomit-frame-pointer\
+ -ffast-math \
+ $(ARCH)
+
+CFLAGS += $(INCLUDE) -DARM7
+
+CXXFLAGS := $(CFLAGS) -fno-exceptions -fno-rtti
+ASFLAGS := -g $(ARCH)
+LDFLAGS := -g $(ARCH) -mno-fpu
+
+#---------------------------------------------------------------------------------
+# path to tools - this can be deleted if you set the path in windows
+#---------------------------------------------------------------------------------
+# export PATH := /d/dev/ds/devkitARM_r11/bin:/bin
+
+#---------------------------------------------------------------------------------
+# PATH to ndslib - just make a system variable called NDSLIBPATH and be done with it
+#---------------------------------------------------------------------------------
+# NDSLIBPATH := /d/dev/ds/ndslib/
+
+#---------------------------------------------------------------------------------
+# the prefix on the compiler executables
+#---------------------------------------------------------------------------------
+PREFIX := arm-eabi-
+#---------------------------------------------------------------------------------
+# any extra libraries we wish to link with the project
+#---------------------------------------------------------------------------------
+LIBS := -lnds7
+
+
+#---------------------------------------------------------------------------------
+# list of directories containing libraries, this must be the top level containing
+# include and lib
+#---------------------------------------------------------------------------------
+LIBDIRS := $(DEVKITPRO)/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)/$(TARGET)
+
+export VPATH := $(foreach dir,$(SOURCES),$(CURDIR)/$(dir))
+
+export CC := $(PREFIX)gcc
+export CXX := $(PREFIX)g++
+export AR := $(PREFIX)ar
+export OBJCOPY := $(PREFIX)objcopy
+#---------------------------------------------------------------------------------
+# use CXX for linking C++ projects, CC for standard C
+#---------------------------------------------------------------------------------
+export LD := $(CXX)
+#export LD := $(CC)
+
+CFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.c)))
+CPPFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.cpp)))
+SFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.s)))
+PCXFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.pcx)))
+BINFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.bin)))
+PALFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.pal)))
+RAWFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.raw)))
+MAPFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.map)))
+
+export OFILES := $(MAPFILES:.map=.o) $(RAWFILES:.raw=.o) $(PALFILES:.pal=.o) $(BINFILES:.bin=.o) $(PCXFILES:.pcx=.o)\
+ $(CPPFILES:.cpp=.o) $(CFILES:.c=.o) $(SFILES:.s=.o)
+
+export INCLUDE := $(foreach dir,$(INCLUDES),-I$(CURDIR)/$(dir)) -I- -I$(CURDIR)/../commoninclude\
+ $(foreach dir,$(LIBDIRS),-I$(dir)/include) \
+ $(foreach dir,$(LIBDIRS),-I$(dir)/include/NDS)\
+ -I$(CURDIR)/$(BUILD)
+
+export LIBPATHS := $(foreach dir,$(LIBDIRS),-L$(dir)/lib)
+
+.PHONY: $(BUILD) clean
+
+#---------------------------------------------------------------------------------
+$(BUILD):
+ @[ -d $@ ] || mkdir -p $@
+ @make --no-print-directory -C $(BUILD) -f $(CURDIR)/Makefile
+
+#---------------------------------------------------------------------------------
+clean:
+ @echo clean ...$(TARGET)
+ @rm -fr $(BUILD) *.bin
+
+
+#---------------------------------------------------------------------------------
+else
+
+DEPENDS := $(OFILES:.o=.d)
+
+#---------------------------------------------------------------------------------
+# main targets
+#---------------------------------------------------------------------------------
+
+$(OUTPUT).bin : $(OUTPUT).elf
+
+$(OUTPUT).elf : $(OFILES)
+
+
+
+#---------------------------------------------------------------------------------
+%.bin: %.elf
+ @echo built ... $(notdir $@)
+ @$(OBJCOPY) -O binary $(TARGET).elf $@
+
+#---------------------------------------------------------------------------------
+%.elf:
+ echo ELF
+ @$(LD) $(LDFLAGS) -specs=ds_arm7.specs $(OFILES) $(LIBPATHS) $(LIBS) -o $(TARGET).elf
+
+
+
+#---------------------------------------------------------------------------------
+# Compile Targets for C/C++
+#---------------------------------------------------------------------------------
+
+#---------------------------------------------------------------------------------
+%.o : %.cpp
+ @echo $(notdir $<)
+ @echo $(CXX) -MM $(CXXFLAGS) -o $*.d $<
+ @$(CXX) -MM $(CXXFLAGS) -o $*.d $<
+ @$(CXX) $(CXXFLAGS) -c $< -o$@
+
+#---------------------------------------------------------------------------------
+%.o : %.c
+ @echo $(notdir $<)
+ @$(CC) -MM $(CFLAGS) -o $*.d $<
+ @$(CC) $(CFLAGS) -c $< -o$@
+
+#---------------------------------------------------------------------------------
+%.o : %.s
+ @echo $(notdir $<)
+ @$(CC) -MM $(CFLAGS) -o $*.d $<
+ @$(CC) $(ASFLAGS) -c $< -o$@
+
+define bin2o
+ cp $(<) $(*).tmp
+ $(OBJCOPY) -I binary -O elf32-littlearm -B arm \
+ --rename-section .data=.rodata \
+ --redefine-sym _binary_$*_tmp_start=$*\
+ --redefine-sym _binary_$*_tmp_end=$*_end\
+ --redefine-sym _binary_$*_tmp_size=$*_size\
+ $(*).tmp $(@)
+ echo "extern const u8" $(*)"[];" > $(*).h
+ echo "extern const u32" $(*)_size[]";" >> $(*).h
+ rm $(*).tmp
+endef
+
+#---------------------------------------------------------------------------------
+%.o : %.pcx
+#---------------------------------------------------------------------------------
+ @echo $(notdir $<)
+ @$(bin2o)
+
+#---------------------------------------------------------------------------------
+%.o : %.bin
+#---------------------------------------------------------------------------------
+ @echo $(notdir $<)
+ @$(bin2o)
+
+#---------------------------------------------------------------------------------
+%.o : %.raw
+#---------------------------------------------------------------------------------
+ @echo $(notdir $<)
+ @$(bin2o)
+
+#---------------------------------------------------------------------------------
+%.o : %.pal
+#---------------------------------------------------------------------------------
+ @echo $(notdir $<)
+ @$(bin2o)
+
+#---------------------------------------------------------------------------------
+%.o : %.map
+#---------------------------------------------------------------------------------
+ @echo $(notdir $<)
+ @$(bin2o)
+
+#---------------------------------------------------------------------------------
+%.o : %.mdl
+#---------------------------------------------------------------------------------
+ @echo $(notdir $<)
+ @$(bin2o)
+
+
+-include $(DEPENDS)
+
+#---------------------------------------------------------------------------------------
+endif
+#---------------------------------------------------------------------------------------
+#---------------------------------------------------------------------------------
+.SUFFIXES:
+#---------------------------------------------------------------------------------
+
+#---------------------------------------------------------------------------------
+# TARGET is the name of the output, if this ends with _mb generates a multiboot image
+# 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 := arm7
+BUILD := build
+SOURCES := gfx source data
+INCLUDES := include build
+
+#---------------------------------------------------------------------------------
+# options for code generation
+#---------------------------------------------------------------------------------
+ARCH := -mthumb-interwork
+
+# note: arm9tdmi isn't the correct CPU arch, but anything newer and LD
+# *insists* it has a FPU or VFP, and it won't take no for an answer!
+CFLAGS := -g -Wall -O2\
+ -mcpu=arm7tdmi -mtune=arm7tdmi -fomit-frame-pointer\
+ -ffast-math \
+ $(ARCH)
+
+CFLAGS += $(INCLUDE) -DARM7
+
+CXXFLAGS := $(CFLAGS) -fno-exceptions -fno-rtti
+ASFLAGS := -g $(ARCH)
+LDFLAGS := -g $(ARCH) -mno-fpu
+
+#---------------------------------------------------------------------------------
+# path to tools - this can be deleted if you set the path in windows
+#---------------------------------------------------------------------------------
+# export PATH := /d/dev/ds/devkitARM_r11/bin:/bin
+
+#---------------------------------------------------------------------------------
+# PATH to ndslib - just make a system variable called NDSLIBPATH and be done with it
+#---------------------------------------------------------------------------------
+# NDSLIBPATH := /d/dev/ds/ndslib/
+
+#---------------------------------------------------------------------------------
+# the prefix on the compiler executables
+#---------------------------------------------------------------------------------
+PREFIX := arm-eabi-
+#---------------------------------------------------------------------------------
+# any extra libraries we wish to link with the project
+#---------------------------------------------------------------------------------
+LIBS := -lnds7
+
+
+#---------------------------------------------------------------------------------
+# list of directories containing libraries, this must be the top level containing
+# include and lib
+#---------------------------------------------------------------------------------
+LIBDIRS := $(DEVKITPRO)/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)/$(TARGET)
+
+export VPATH := $(foreach dir,$(SOURCES),$(CURDIR)/$(dir))
+
+export CC := $(PREFIX)gcc
+export CXX := $(PREFIX)g++
+export AR := $(PREFIX)ar
+export OBJCOPY := $(PREFIX)objcopy
+#---------------------------------------------------------------------------------
+# use CXX for linking C++ projects, CC for standard C
+#---------------------------------------------------------------------------------
+export LD := $(CXX)
+#export LD := $(CC)
+
+CFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.c)))
+CPPFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.cpp)))
+SFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.s)))
+PCXFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.pcx)))
+BINFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.bin)))
+PALFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.pal)))
+RAWFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.raw)))
+MAPFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.map)))
+
+export OFILES := $(MAPFILES:.map=.o) $(RAWFILES:.raw=.o) $(PALFILES:.pal=.o) $(BINFILES:.bin=.o) $(PCXFILES:.pcx=.o)\
+ $(CPPFILES:.cpp=.o) $(CFILES:.c=.o) $(SFILES:.s=.o)
+
+export INCLUDE := $(foreach dir,$(INCLUDES),-I$(CURDIR)/$(dir)) -I- -I$(CURDIR)/../commoninclude\
+ $(foreach dir,$(LIBDIRS),-I$(dir)/include) \
+ $(foreach dir,$(LIBDIRS),-I$(dir)/include/NDS)\
+ -I$(CURDIR)/$(BUILD)
+
+export LIBPATHS := $(foreach dir,$(LIBDIRS),-L$(dir)/lib)
+
+.PHONY: $(BUILD) clean
+
+#---------------------------------------------------------------------------------
+$(BUILD):
+ @[ -d $@ ] || mkdir -p $@
+ @make --no-print-directory -C $(BUILD) -f $(CURDIR)/Makefile
+
+#---------------------------------------------------------------------------------
+clean:
+ @echo clean ...$(TARGET)
+ @rm -fr $(BUILD) *.bin
+
+
+#---------------------------------------------------------------------------------
+else
+
+DEPENDS := $(OFILES:.o=.d)
+
+#---------------------------------------------------------------------------------
+# main targets
+#---------------------------------------------------------------------------------
+
+$(OUTPUT).bin : $(OUTPUT).elf
+
+$(OUTPUT).elf : $(OFILES)
+
+
+
+#---------------------------------------------------------------------------------
+%.bin: %.elf
+ @echo built ... $(notdir $@)
+ @$(OBJCOPY) -O binary $(TARGET).elf $@
+
+#---------------------------------------------------------------------------------
+%.elf:
+ echo ELF
+ @$(LD) $(LDFLAGS) -specs=ds_arm7.specs $(OFILES) $(LIBPATHS) $(LIBS) -o $(TARGET).elf
+
+
+
+#---------------------------------------------------------------------------------
+# Compile Targets for C/C++
+#---------------------------------------------------------------------------------
+
+#---------------------------------------------------------------------------------
+%.o : %.cpp
+ @echo $(notdir $<)
+ @echo $(CXX) -MM $(CXXFLAGS) -o $*.d $<
+ @$(CXX) -MM $(CXXFLAGS) -o $*.d $<
+ @$(CXX) $(CXXFLAGS) -c $< -o$@
+
+#---------------------------------------------------------------------------------
+%.o : %.c
+ @echo $(notdir $<)
+ @$(CC) -MM $(CFLAGS) -o $*.d $<
+ @$(CC) $(CFLAGS) -c $< -o$@
+
+#---------------------------------------------------------------------------------
+%.o : %.s
+ @echo $(notdir $<)
+ @$(CC) -MM $(CFLAGS) -o $*.d $<
+ @$(CC) $(ASFLAGS) -c $< -o$@
+
+define bin2o
+ cp $(<) $(*).tmp
+ $(OBJCOPY) -I binary -O elf32-littlearm -B arm \
+ --rename-section .data=.rodata \
+ --redefine-sym _binary_$*_tmp_start=$*\
+ --redefine-sym _binary_$*_tmp_end=$*_end\
+ --redefine-sym _binary_$*_tmp_size=$*_size\
+ $(*).tmp $(@)
+ echo "extern const u8" $(*)"[];" > $(*).h
+ echo "extern const u32" $(*)_size[]";" >> $(*).h
+ rm $(*).tmp
+endef
+
+#---------------------------------------------------------------------------------
+%.o : %.pcx
+#---------------------------------------------------------------------------------
+ @echo $(notdir $<)
+ @$(bin2o)
+
+#---------------------------------------------------------------------------------
+%.o : %.bin
+#---------------------------------------------------------------------------------
+ @echo $(notdir $<)
+ @$(bin2o)
+
+#---------------------------------------------------------------------------------
+%.o : %.raw
+#---------------------------------------------------------------------------------
+ @echo $(notdir $<)
+ @$(bin2o)
+
+#---------------------------------------------------------------------------------
+%.o : %.pal
+#---------------------------------------------------------------------------------
+ @echo $(notdir $<)
+ @$(bin2o)
+
+#---------------------------------------------------------------------------------
+%.o : %.map
+#---------------------------------------------------------------------------------
+ @echo $(notdir $<)
+ @$(bin2o)
+
+#---------------------------------------------------------------------------------
+%.o : %.mdl
+#---------------------------------------------------------------------------------
+ @echo $(notdir $<)
+ @$(bin2o)
+
+
+-include $(DEPENDS)
+
+#---------------------------------------------------------------------------------------
+endif
+#--------------------------------------------------------------------------------------- \ No newline at end of file