#174436 - brave_orakio - Fri Jun 11, 2010 4:09 am
Hi guys . I recently decided to use the standard makefile for my current GBA project since my makefile doesn't work with version r30. Or at least I think it doesn't thats why I'm going to try and use the default makefile and see if it works that way.
now here is my makefile:
The ones with A at the end (ARCHA, CFLAGSA, etc.) indicate that the it is in ARM code and the rest THUMB. At the top SOURCA is the directory that contains the c files required to be compiled in ARM and SOURCET is the directory that contains the files for THUMB. INCLUDES contains all *.h files from both SOURCET and SOURCA.
Question is, what am I doing wrong here? I have no idea how to connect the ARCH and ARCHA to SOURCET and SOURCEA respectively so I doubt that SOURCEA is being compiled to ARM code.
Also what do I need to change so it doesn't compile as multiboot? My old one had a -specs=gba.specs but I don't know what to use in this case.
many thanks!
_________________
help me
now here is my makefile:
Code: |
#--------------------------------------------------------------------------------- # Clear the implicit built in rules #--------------------------------------------------------------------------------- .SUFFIXES: #--------------------------------------------------------------------------------- ifeq ($(strip $(DEVKITARM)),) $(error "Please set DEVKITARM in your environment. export DEVKITARM=<path to>devkitARM) endif include $(DEVKITARM)/gba_rules #--------------------------------------------------------------------------------- # TARGET is the name of the output, if this ends with _mb a multiboot image is generated # 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 SOURCEA := sourceArm SOURCET := sourceThumb DATA := INCLUDES := includes #--------------------------------------------------------------------------------- # options for code generation #--------------------------------------------------------------------------------- ARCH := -mthumb -mthumb-interwork CFLAGS := -g -Wall -O3\ -mcpu=arm7tdmi -mtune=arm7tdmi\ -fomit-frame-pointer\ -ffast-math \ $(ARCH) CFLAGS += $(INCLUDE) CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions ASFLAGS := $(ARCH) LDFLAGS = -g $(ARCH) -Wl,-Map,$(notdir $@).map ARCHA := -marm -mlong-calls -mthumb-interwork CFLAGSA := -g -Wall -O3\ -mcpu=arm7tdmi -mtune=arm7tdmi\ -fomit-frame-pointer\ -ffast-math \ $(ARCHA) CFLAGSA += $(INCLUDE) CXXFLAGSA := $(CFLAGSA) -fno-rtti -fno-exceptions ASFLAGSA := $(ARCHA) LDFLAGSA = -g $(ARCHA) -Wl,-Map,$(notdir $@).map #--------------------------------------------------------------------------------- # any extra libraries we wish to link with the project #--------------------------------------------------------------------------------- LIBS := -lgba #--------------------------------------------------------------------------------- # list of directories containing libraries, this must be the top level containing # include and lib #--------------------------------------------------------------------------------- LIBDIRS := $(LIBGBA) #--------------------------------------------------------------------------------- # 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,$(SOURCEA),$(CURDIR)/$(dir)) \ $(foreach dir,$(SOURCET),$(CURDIR)/$(dir)) \ $(foreach dir,$(DATA),$(CURDIR)/$(dir)) export DEPSDIR := $(CURDIR)/$(BUILD) #--------------------------------------------------------------------------------- # automatically build a list of object files for our project #--------------------------------------------------------------------------------- CFILES := $(foreach dir,$(SOURCEA),$(notdir $(wildcard $(dir)/*.c))) CFILES := $(foreach dir,$(SOURCET),$(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)/*.*))) #BMPFILES := $(foreach dir,$(GRAPHICS),$(notdir $(wildcard $(dir)/*.bmp))) #--------------------------------------------------------------------------------- # 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)) \ $(BMPFILES:.bmp=.o) \ $(CPPFILES:.cpp=.o) $(CFILES:.c=.o) $(SFILES:.s=.o) #--------------------------------------------------------------------------------- # build a list of include paths #--------------------------------------------------------------------------------- export INCLUDE := $(foreach dir,$(INCLUDES),-I$(CURDIR)/$(dir)) \ $(foreach dir,$(LIBDIRS),-I$(dir)/include) \ -I$(CURDIR)/$(BUILD) #--------------------------------------------------------------------------------- # build a list of library paths #--------------------------------------------------------------------------------- export LIBPATHS := $(foreach dir,$(LIBDIRS),-L$(dir)/lib) .PHONY: $(BUILD) clean #--------------------------------------------------------------------------------- $(BUILD): @[ -d $@ ] || mkdir -p $@ @make --no-print-directory -C $(BUILD) -f $(CURDIR)/Makefile all : $(BUILD) #--------------------------------------------------------------------------------- clean: @echo clean ... @rm -fr $(BUILD) $(TARGET).elf $(TARGET).gba #--------------------------------------------------------------------------------- else DEPENDS := $(OFILES:.o=.d) #--------------------------------------------------------------------------------- # main targets #--------------------------------------------------------------------------------- $(OUTPUT).gba : $(OUTPUT).elf $(OUTPUT).elf : $(OFILES) #--------------------------------------------------------------------------------- # The bin2o rule should be copied and modified # for each extension used in the data directories #--------------------------------------------------------------------------------- #--------------------------------------------------------------------------------- # This rule links in binary data with the .bin extension #--------------------------------------------------------------------------------- %.bin.o : %.bin #--------------------------------------------------------------------------------- @echo $(notdir $<) @$(bin2o) #--------------------------------------------------------------------------------- # This rule links in binary data with the .raw extension #--------------------------------------------------------------------------------- %.raw.o : %.raw #--------------------------------------------------------------------------------- @echo $(notdir $<) @$(bin2o) #--------------------------------------------------------------------------------- # This rule creates assembly source files using grit # grit takes an image file and a .grit describing how the file is to be processed # add additional rules like this for each image extension # you use in the graphics folders #--------------------------------------------------------------------------------- %.s %.h : %.bmp %.grit #--------------------------------------------------------------------------------- grit $< -fts -o$* -include $(DEPENDS) #--------------------------------------------------------------------------------- endif #--------------------------------------------------------------------------------- |
The ones with A at the end (ARCHA, CFLAGSA, etc.) indicate that the it is in ARM code and the rest THUMB. At the top SOURCA is the directory that contains the c files required to be compiled in ARM and SOURCET is the directory that contains the files for THUMB. INCLUDES contains all *.h files from both SOURCET and SOURCA.
Question is, what am I doing wrong here? I have no idea how to connect the ARCH and ARCHA to SOURCET and SOURCEA respectively so I doubt that SOURCEA is being compiled to ARM code.
Also what do I need to change so it doesn't compile as multiboot? My old one had a -specs=gba.specs but I don't know what to use in this case.
many thanks!
_________________
help me