kirius | Voila la bête :
Code :
- PROGNAME =PAlib
- OFILES +=
- ADD_LIBS +=
- PATH := $(DEVKITARM)/bin:$(PATH)
- ARM7BIN := -7 $(PAPATH)/lib/arm7/arm7.bin
- TEXT1 := PAlib Project
- TEXT2 := using PAlib
- TEXT3 := www.palib.info
- ICON := -b $(CURDIR)/../logo.bmp
- LOGO := -o $(CURDIR)/../logo_wifi.bmp
- #---------------------------------------------------------------------------------
- .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, 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 := $(shell basename $(CURDIR))
- BUILD := build
- SOURCES := gfx source data
- INCLUDES := include build data
- EXPORT_DIR := /c/ndsexamples/
- #---------------------------------------------------------------------------------
- # ARM7BIN is the path to an arm7 binary other than the default
- # usage: ARM7BIN := -7 binaryName.bin
- #
- # ICON is the path to an icon to be used int the header plus text
- # usage: ICON := -t iconName.bmp "text line one; text line 2; text line 3"
- #
- #---------------------------------------------------------------------------------
- #---------------------------------------------------------------------------------
- # 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 -Wformat=2 -Winline -Wall -O2\
- -mcpu=arm946e-s -mtune=arm946e-s -fomit-frame-pointer\
- -ffast-math \
- $(ARCH)
- CFLAGS += $(INCLUDE) -DARM9 -I$(DEVKITPRO)/PAlib/include/nds -I$(DEVKITARM)/include
- ASFLAGS := -g $(ARCH)
- LDFLAGS := -g $(ARCH) -mno-fpu -L$(DEVKITPRO)/PAlib/lib -L$(DEVKITARM)/lib
- #---------------------------------------------------------------------------------
- # 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 := -lfat -lnds9 -ldswifi9
- LIBSPA := -lpa9
- LIBSMAD := -lmad
- #---------------------------------------------------------------------------------
- # list of directories containing libraries, this must be the top level containing
- # include and lib
- #---------------------------------------------------------------------------------
- LIBDIRS := $(DEVKITPRO)/libnds
- LIBDIRPA := $(PAPATH)
- LIBDIRMAD := $(DEVKITPRO)/libmad
- #---------------------------------------------------------------------------------
- # 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)))
- JPEGFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.jpg)))
- MODFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.mod)))
- GIFFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.gif)))
- BMPFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.bmp)))
-
- export OFILES := $(MAPFILES:.map=.o) $(RAWFILES:.raw=.o) $(PALFILES:.pal=.o) $(BINFILES:.bin=.o) $(PCXFILES:.pcx=.o) $(JPEGFILES:.jpg=.o) $(MODFILES:.mod=.o) $(GIFFILES:.gif=.o) $(BMPFILES:.bmp=.o)\
- $(CPPFILES:.cpp=.o) $(CFILES:.c=.o) $(SFILES:.s=.o)
-
- export INCLUDE := $(foreach dir,$(INCLUDES),-I$(CURDIR)/$(dir)) \
- $(foreach dir,$(LIBDIRS),-I$(dir)/include) \
- $(foreach dir,$(LIBDIRS),-I$(dir)/include/nds) \
- $(foreach dir,$(LIBDIRMAD),-I$(dir)/include) \
- -I$(PAPATH)/include/nds\
- -I$(CURDIR)/$(BUILD)
-
- export LIBPATHS := $(foreach dir,$(LIBDIRS),-L$(dir)/lib)
- export LIBPATHPA := $(foreach dir,$(LIBDIRPA),-L$(dir)/lib)
- export LIBPATHMAD := $(foreach dir,$(LIBDIRMAD),-L$(dir)/lib)
-
- .PHONY: $(BUILD) clean export
-
- #---------------------------------------------------------------------------------
- $(BUILD):
- @[ -d $@ ] || mkdir -p $@
- @make --no-print-directory -C $(BUILD) -f $(CURDIR)/Makefile
-
- #---------------------------------------------------------------------------------
- clean:
- @echo clean ...$(TARGET)
- @rm -fr $(BUILD) *.elf *.*ds*
-
- export:
- @echo exporting ...$(TARGET)
- @cp *.nds $(EXPORT_DIR)/$(TARGET).nds
-
- #---------------------------------------------------------------------------------
- else
-
- DEPENDS := $(OFILES:.o=.d)
-
- #---------------------------------------------------------------------------------
- # main targets
- #---------------------------------------------------------------------------------
- $(OUTPUT).ds.gba : $(OUTPUT).nds
-
- $(OUTPUT).nds : $(OUTPUT).bin
-
- $(OUTPUT).bin : $(OUTPUT).elf
-
- $(OUTPUT).elf : $(OFILES)
-
- #---------------------------------------------------------------------------------
- %.ds.gba: %.nds
- @echo built ... $(notdir $@)
- @dsbuild $<
- @cp $(CURDIR)/../$(notdir $@) ../$(notdir $(OUTPUT)).sc.nds
-
- #---------------------------------------------------------------------------------
- %.nds: %.bin
-
- @ndstool -c $@ -9 $(TARGET).bin $(ARM7BIN) $(LOGO) $(ICON) "$(TEXT1);$(TEXT2);$(TEXT3)"
-
-
- #---------------------------------------------------------------------------------
- %.bin: %.elf
-
- @$(OBJCOPY) -O binary $(TARGET).elf $(TARGET).bin
-
- #---------------------------------------------------------------------------------
- %.elf:
- @echo $(LD) $(LDFLAGS) -specs=ds_arm9.specs $(OFILES) $(LIBPATHMAD) $(LIBSMAD) $(LIBPATHPA) $(LIBSPA) $(LIBPATHS) $(LIBS) -o $(TARGET).elf
- @$(LD) $(LDFLAGS) -specs=ds_arm9.specs $(OFILES) $(LIBPATHMAD) $(LIBSMAD) $(LIBPATHPA) $(LIBSPA) $(LIBPATHS) $(LIBS) -o $(TARGET).elf
-
-
-
- #---------------------------------------------------------------------------------
- # Compile Targets for C/C++
- #---------------------------------------------------------------------------------
-
- #---------------------------------------------------------------------------------
- %.o : %.cpp
- @echo $(notdir $< )
- @$(CXX) -MM $(CFLAGS) -o $*.d $<
- @$(CXX) $(CFLAGS) -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
- echo -n $$(( `cat $(*).tmp | wc -c` & 3 )) | sed -e 's/0//g' | sed -e 's/1/000/g' | sed -e 's/2/00/g' | sed -e 's/3/0/g' >> $(*).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)
-
- #---------------------------------------------------------------------------------
- %.o : %.jpg
- #---------------------------------------------------------------------------------
- @echo $(notdir $< )
- @$(bin2o)
-
- #---------------------------------------------------------------------------------
- %.o : %.mod
- #---------------------------------------------------------------------------------
- @echo $(notdir $< )
- @$(bin2o)
-
- #---------------------------------------------------------------------------------
- %.o : %.gif
- #---------------------------------------------------------------------------------
- @echo $(notdir $< )
- @$(bin2o)
-
- #---------------------------------------------------------------------------------
- %.o : %.bmp
- #---------------------------------------------------------------------------------
- @echo $(notdir $< )
- @$(bin2o)
-
-
- -include $(DEPENDS)
- #---------------------------------------------------------------------------------------
- endif
- #---------------------------------------------------------------------------------------
|
J'ai seulement ajouté dans le makefile, les "variables" (je sais pas si on appelle ça comme ça pour un makefile) :
LIBSMAD, LIBDIRMAD, et LIBPATHMAD
En gros j'ai fait la meme chose que pour les variables LIBS, LIBDIRS, LIBPATHS, LIBPA, LIBDIRPA, et LIBPATHPA qui étaient déjà présentes.
J'ai ensuite ajouté les variables LIBSMAD et LIBPATHMAD dans la ligne de build
@$(LD) $(LDFLAGS) -specs=ds_arm9.specs $(OFILES) $(LIBPATHMAD) $(LIBSMAD) $(LIBPATHPA) $(LIBSPA) $(LIBPATHS) $(LIBS) -o $(TARGET).elf
Pour information, voici ce que j'obtiens lorsque le build échoue
Code :
- bstdfile.c
- main.c
- c:/Homebrews/TestRaw2/source/main.c:17:31: warning: backslash and newline separated by space
- c:/Homebrews/TestRaw2/source/main.c:18:29: warning: backslash and newline separated by space
- c:/Homebrews/TestRaw2/source/main.c:19:31: warning: backslash and newline separated by space
- c:/Homebrews/TestRaw2/source/main.c:20:29: warning: backslash and newline separated by space
- c:/Homebrews/TestRaw2/source/main.c:177:33: warning: backslash and newline separated by space
- c:/Homebrews/TestRaw2/source/main.c: In function 'MpegAudioDecoder':
- c:/Homebrews/TestRaw2/source/main.c:235: warning: unused variable 'i'
- c:/Homebrews/TestRaw2/source/main.c:234: warning: unused variable 'OutputBufferEnd'
- c:/Homebrews/TestRaw2/source/main.c:231: warning: unused variable 'OutputPtr'
- c:/Homebrews/TestRaw2/source/main.c: At top level:
- c:/Homebrews/TestRaw2/source/main.c:104: warning: 'MadFixedToSshort' defined but not used
- c:/Homebrews/TestRaw2/source/main.c:202: warning: 'ApplyFilter' defined but not used
- c:/Homebrews/TestRaw2/source/main.c: In function 'main':
- c:/Homebrews/TestRaw2/source/main.c:455: warning: 'num' is used uninitialized in this function
- arm-eabi-gcc -g -mthumb-interwork -mno-fpu -L/c/devkitPro/PAlib/lib -L/c/devkitPro/devkitARM/lib -specs=ds_arm9.specs bstdfile.o main.o -L/c/devkitPro/libmad/lib -lmad -L/c/devkitPro/PAlib/lib -lpa9 -L/c/devkitPro/libnds/lib -lfat -lnds9 -ldswifi9 -o build.elf
- main.o: In function `MpegAudioDecoder':
- c:/Homebrews/TestRaw2/source/main.c:239: undefined reference to `mad_stream_init'
- c:/Homebrews/TestRaw2/source/main.c:240: undefined reference to `mad_frame_init'
- c:/Homebrews/TestRaw2/source/main.c:241: undefined reference to `mad_synth_init'
- c:/Homebrews/TestRaw2/source/main.c:301: undefined reference to `mad_frame_decode'
- c:/Homebrews/TestRaw2/source/main.c:308: undefined reference to `mad_stream_errorstr'
- c:/Homebrews/TestRaw2/source/main.c:318: undefined reference to `mad_stream_errorstr'
- c:/Homebrews/TestRaw2/source/main.c:293: undefined reference to `mad_stream_buffer'
- c:/Homebrews/TestRaw2/source/main.c:391: undefined reference to `mad_frame_finish'
- c:/Homebrews/TestRaw2/source/main.c:392: undefined reference to `mad_stream_finish'
- collect2: ld returned 1 exit status
- make[1]: *** [/c/Homebrews/TestRaw2/TestRaw2.elf] Error 1
- make: *** [build] Error 2
|
|