mirror of
				https://github.com/dborth/snes9xgx.git
				synced 2025-10-30 19:16:00 +01:00 
			
		
		
		
	 fb27030208
			
		
	
	fb27030208
	
	
	
		
			
			- added: classic and nunchuk support
- added: all controllers can now be configured
- added: GC version (untested)
- changed: mappings are no longer stored in SRAM, but in config file. 
           This means no per-game configurations, but one global 
           config per controller.
- one makefile to make all versions. (thanks to snes9x143 SVN)
		
	
		
			
				
	
	
		
			180 lines
		
	
	
		
			7.1 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			180 lines
		
	
	
		
			7.1 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| #---------------------------------------------------------------------------------
 | |
| # Generic makefile for Gamecube projects
 | |
| #
 | |
| # Tab stops set to 4
 | |
| #	|	|	|	|
 | |
| #	0	1	2	3
 | |
| #---------------------------------------------------------------------------------
 | |
| # 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		:=	bin/snes9xGx201b8-noload
 | |
| BUILD		:=	build
 | |
| SOURCES		:=	source/snes9x source/unzip source/ngc source/smb
 | |
| INCLUDES	:=	source/snes9x source/unzip source/ngc source/smb
 | |
| 
 | |
| #---------------------------------------------------------------------------------
 | |
| # options for code generation
 | |
| #---------------------------------------------------------------------------------
 | |
| MACHDEP	= -DGEKKO -mcpu=750 -meabi -mhard-float 
 | |
| CFLAGS  = -g -O2 -Wall $(MACHDEP) $(INCLUDE) \
 | |
| 	  -DNGC -DNO_ASM -DCPU_SHUTDOWN -DSPC700C \
 | |
| 	  -DSPC700_SHUTDOWN -DNEW_COLOUR_BLENDING \
 | |
| 	  -DNO_INLINE_GET_SET -DSDD1_DECOMP -DCORRECT_VRAM_READS \
 | |
| 	  -DDETECT_NASTY_FX_INTERLEAVE -DNGC_ZOOM -DSDUSE_LFN \
 | |
| 	  -DQUICK_SAVE_SLOT=-1 \
 | |
| 	  -fomit-frame-pointer -fno-exceptions -Wno-unused-parameter \
 | |
| 	  -pipe
 | |
| 	   
 | |
| 
 | |
| LDFLAGS	=	$(MACHDEP) -mogc -Wl,-Map,$(notdir $@).map -Wl,--cref
 | |
| 
 | |
| PREFIX	:=	powerpc-gekko-
 | |
| 
 | |
| #export PATH:=/c/devkitPPC_r11/bin:/bin
 | |
| 
 | |
| #---------------------------------------------------------------------------------
 | |
| # list of directories containing libraries, this must be the top level containing
 | |
| # include and lib
 | |
| #---------------------------------------------------------------------------------
 | |
| LIBDIRS	:=
 | |
| 
 | |
| #---------------------------------------------------------------------------------
 | |
| # any extra libraries we wish to link with
 | |
| #---------------------------------------------------------------------------------
 | |
| LIBS	:=	-logc -lm -lz -logcsys -lfreetype -lbba -lsdcard
 | |
| 
 | |
| #---------------------------------------------------------------------------------
 | |
| # 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
 | |
| #---------------------------------------------------------------------------------
 | |
| # automatically build a list of object files for our project
 | |
| #---------------------------------------------------------------------------------
 | |
| CFILES		:=	$(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.c)))
 | |
| CPPFILES	:=	$(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.cpp)))
 | |
| sFILES		:=	$(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.s)))
 | |
| SFILES		:=	$(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.S)))
 | |
| #---------------------------------------------------------------------------------
 | |
| # use CXX for linking C++ projects, CC for standard C
 | |
| #---------------------------------------------------------------------------------
 | |
| ifeq ($(strip $(CPPFILES)),)
 | |
| 	export LD	:=	$(CC)
 | |
| else
 | |
| 	export LD	:=	$(CXX)
 | |
| endif
 | |
| 
 | |
| export OFILES	:= $(CPPFILES:.cpp=.o) $(CFILES:.c=.o) $(sFILES:.s=.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)
 | |
| 
 | |
| export OUTPUT	:=	$(CURDIR)/$(TARGET)
 | |
| .PHONY: $(BUILD) clean
 | |
| 
 | |
| #---------------------------------------------------------------------------------
 | |
| $(BUILD):
 | |
| 	@[ -d $@ ] || mkdir $@
 | |
| 	@make --no-print-directory -C $(BUILD) -f $(CURDIR)/Makefile
 | |
| 
 | |
| #---------------------------------------------------------------------------------
 | |
| clean:
 | |
| 	@echo clean ...
 | |
| 	@rm -fr $(BUILD) *.elf
 | |
| 
 | |
| #---------------------------------------------------------------------------------
 | |
| run:
 | |
| 	psoload $(TARGET).dol
 | |
| 
 | |
| #---------------------------------------------------------------------------------
 | |
| reload:
 | |
| 	psoload -r $(TARGET).dol
 | |
| 
 | |
| 
 | |
| #---------------------------------------------------------------------------------
 | |
| else
 | |
| 
 | |
| DEPENDS	:=	$(OFILES:.o=.d)
 | |
| 
 | |
| #---------------------------------------------------------------------------------
 | |
| # main targets
 | |
| #---------------------------------------------------------------------------------
 | |
| $(OUTPUT).dol: $(OUTPUT).elf
 | |
| 	@echo output ... $(notdir $@)
 | |
| 	@$(OBJCOPY)  -O binary $< $@
 | |
| 
 | |
| #---------------------------------------------------------------------------------
 | |
| $(OUTPUT).elf: $(OFILES)
 | |
| 	@echo linking ... $(notdir $@)
 | |
| 	@$(LD)  $^ $(LDFLAGS) $(LIBPATHS) $(LIBS) -o $@
 | |
| 
 | |
| #---------------------------------------------------------------------------------
 | |
| # Compile Targets for C/C++
 | |
| #---------------------------------------------------------------------------------
 | |
| 
 | |
| #---------------------------------------------------------------------------------
 | |
| %.o : %.cpp
 | |
| 	@echo Compiling ... $(notdir $<)
 | |
| 	@$(CXX) -MMD $(CFLAGS) -o $@ -c $<
 | |
| 
 | |
| #---------------------------------------------------------------------------------
 | |
| %.o : %.c
 | |
| 	@echo Compiling ... $(notdir $<)
 | |
| 	@$(CC) -MMD $(CFLAGS) -o $@ -c $<
 | |
| 
 | |
| #---------------------------------------------------------------------------------
 | |
| %.o : %.S
 | |
| 	@echo Compiling ... $(notdir $<)
 | |
| 	@$(CC) -MMD $(CFLAGS) -D_LANGUAGE_ASSEMBLY -c $< -o $@
 | |
| 
 | |
| #---------------------------------------------------------------------------------
 | |
| %.o : %.s
 | |
| 	@echo Compiling ... $(notdir $<)
 | |
| 	@$(CC) -MMD $(CFLAGS) -D_LANGUAGE_ASSEMBLY -c $< -o $@
 | |
| 
 | |
| #---------------------------------------------------------------------------------
 | |
| # canned command sequence for binary data
 | |
| #---------------------------------------------------------------------------------
 | |
| define bin2o
 | |
| 	cp $(<) $(*).tmp
 | |
| 	$(OBJCOPY) -I binary -O elf32-powerpc -B powerpc \
 | |
| 	--rename-section .data=.rodata,readonly,data,contents,alloc \
 | |
| 	--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
 | |
| 
 | |
| -include $(DEPENDS)
 | |
| 
 | |
| #---------------------------------------------------------------------------------
 | |
| endif
 | |
| #---------------------------------------------------------------------------------
 |