From 3b2e1bcf79e2592de9c6cd8138ade70917615083 Mon Sep 17 00:00:00 2001 From: Nebuleon Fumika Date: Mon, 17 Dec 2012 22:30:29 -0500 Subject: Makefile overhaul. --- Makefile | 202 ++++++++++++++++++++++++++++++--------------------------------- 1 file changed, 97 insertions(+), 105 deletions(-) (limited to 'Makefile') diff --git a/Makefile b/Makefile index cc24000..7cbb503 100644 --- a/Makefile +++ b/Makefile @@ -1,124 +1,116 @@ -#1-0---------------------------------------------------------------------------- - -DS2SDKPATH :=/opt/ds2sdk - -#The name final target -TARGET := CATSFC -#The directory where object files & intermediate files will be placed -BUILD := build - -#1-1---------------------------------------------------------------------------- -ifneq ($(BUILD),$(notdir $(CURDIR))) -#------------------------------------------------------------------------------- - -export OUTPUT := $(CURDIR)/$(TARGET) - -.PHONY: $(BUILD) clean - -#--------------------------------------------------------------------------------- -$(BUILD): - @[ -d $@ ] || mkdir -p $@ - $(MAKE) -C $(BUILD) -f $(CURDIR)/Makefile - -#--------------------------------------------------------------------------------- -clean: - rm -fr $(BUILD) $(OUTPUT).plg - -#--------------------------------------------------------------------------------- - -#1-1---------------------------------------------------------------------------- -else -#------------------------------------------------------------------------------- - -# CROSS :=# -CROSS := /opt/mipsel-4.1.2-nopic/bin/ - -CC = $(CROSS)mipsel-linux-gcc -AR = $(CROSS)mipsel-linux-ar rcsv -LD = $(CROSS)mipsel-linux-ld -OBJCOPY = $(CROSS)mipsel-linux-objcopy -NM = $(CROSS)mipsel-linux-nm -OBJDUMP = $(CROSS)mipsel-linux-objdump - -TOPDIR = ./.. -SFCDIR = $(TOPDIR)/source - -FS_DIR = $(DS2SDKPATH)/libsrc/fs -CONSOLE_DIR = $(DS2SDKPATH)/libsrc/console -KEY_DIR = $(DS2SDKPATH)/libsrc/key -ZLIB_DIR = $(DS2SDKPATH)/libsrc/zlib - -SRC := - - -SSRC := - -LIBS := $(DS2SDKPATH)/lib/libds2b.a -lc -lm -lgcc -EXTLIBS := $(DS2SDKPATH)/lib/libds2a.a - -INC := -I$(DS2SDKPATH)/include -I$(FS_DIR) -I$(CONSOLE_DIR) -I$(KEY_DIR) -I$(ZLIB_DIR) - +# - - - Modifiable paths - - - +DS2SDKPATH := /opt/ds2sdk +CROSS := /opt/mipsel-4.1.2-nopic/bin/mipsel-linux- + +# - - - Libraries and includes - - - +FS_DIR = $(DS2SDKPATH)/libsrc/fs +CONSOLE_DIR = $(DS2SDKPATH)/libsrc/console +KEY_DIR = $(DS2SDKPATH)/libsrc/key +ZLIB_DIR = $(DS2SDKPATH)/libsrc/zlib + +LIBS := $(DS2SDKPATH)/lib/libds2b.a -lc -lm -lgcc +EXTLIBS := $(DS2SDKPATH)/lib/libds2a.a + +INCLUDE := -Isource -Isource/unzip -Isource/nds -I$(DS2SDKPATH)/include \ + -I$(FS_DIR) -I$(CONSOLE_DIR) -I$(KEY_DIR) -I$(ZLIB_DIR) + +LINK_SPEC := $(DS2SDKPATH)/specs/link.xn +START_ASM := $(DS2SDKPATH)/specs/start.S +START_O := start.o + +# - - - Names - - - +OUTPUT := catsfc +PLUGIN_DIR := CATSFC + +# - - - Tools - - - +CC = $(CROSS)gcc +AR = $(CROSS)ar rcsv +LD = $(CROSS)ld +OBJCOPY = $(CROSS)objcopy +NM = $(CROSS)nm +OBJDUMP = $(CROSS)objdump + +# - - - Sources and objects - - - +C_SOURCES = source/unicode.c \ + source/unzip/explode.c source/unzip/unreduce.c \ + source/unzip/unshrink.c source/unzip/unzip.c \ + source/nds/bdf_font.c source/nds/bitmap.c source/nds/charsets.c \ + source/nds/draw.c source/nds/ds2_main.c source/nds/gcheat.c \ + source/nds/gui.c +CPP_SOURCES = source/apu.cpp source/apudebug.cpp source/c4.cpp \ + source/c4emu.cpp source/cheats2.cpp source/cheats.cpp \ + source/clip.cpp source/cpu.cpp source/cpuexec.cpp \ + source/cpuops.cpp source/data.cpp source/debug.cpp \ + source/dma.cpp source/dsp1.cpp \ + source/fxdbg.cpp source/fxemu.cpp source/fxinst.cpp \ + source/gfx.cpp source/globals.cpp source/loadzip.cpp \ + source/memmap.cpp source/movie.cpp source/netplay.cpp \ + source/obc1.cpp source/offsets.cpp source/ppu.cpp \ + source/sa1.cpp source/sa1cpu.cpp source/screenshot.cpp \ + source/sdd1.cpp source/sdd1emu.cpp source/server.cpp \ + source/seta010.cpp source/seta011.cpp source/seta018.cpp \ + source/seta.cpp source/snaporig.cpp source/snapshot.cpp \ + source/snes9x.cpp source/soundux.cpp \ + source/spc700.cpp source/spc7110.cpp \ + source/srtc.cpp \ + source/tile.cpp source/nds/cheats3.cpp \ + source/nds/displaymodes.cpp source/nds/entry.cpp +# spctool.cpp, sound.cpp, dsp* except dsp1.cpp, spc.cpp, spccycles.cpp have been deleted! +SOURCES = $(C_SOURCES) $(CPP_SOURCES) +C_OBJECTS = $(C_SOURCES:.c=.o) +CPP_OBJECTS = $(CPP_SOURCES:.cpp=.o) +OBJECTS = $(C_OBJECTS) $(CPP_OBJECTS) + +# - - - Compilation flags - - - CFLAGS := -mips32 -Os -mno-abicalls -fno-pic -fno-builtin \ - -fno-exceptions -fno-function-sections -mlong-calls\ - -fomit-frame-pointer -msoft-float -G 4 - - + -fno-exceptions -fno-function-sections -mlong-calls \ + -fomit-frame-pointer -msoft-float -G 4 -LINKS := $(DS2SDKPATH)/specs/link.xn -STARTS := $(DS2SDKPATH)/specs/start.S -STARTO := start.o +DEFS := -DSPC700_C -DEXECUTE_SUPERFX_PER_LINE -DSDD1_DECOMP \ + -DVAR_CYCLES -DCPU_SHUTDOWN -DSPC700_SHUTDOWN \ + -DNO_INLINE_SET_GET -DNOASM -DHAVE_MKSTEMP '-DACCEPT_SIZE_T=size_t' \ + -DUNZIP_SUPPORT -include $(SFCDIR)/sfc.mk +.PHONY: clean makedirs +.SUFFIXES: .elf .dat .plg -OBJS := $(addsuffix .o , $(basename $(notdir $(SRC)))) -SOBJS := $(addsuffix .o , $(basename $(notdir $(SSRC)))) +all: $(OUTPUT).plg makedirs -# OBJS := $(SRC:.c=.o) -# SOBJS := $(SSRC:.S=.o) +# $< is the source (OUTPUT.dat); $@ is the target (OUTPUT.plg) +.dat.plg: + $(DS2SDKPATH)/tools/makeplug $< $@ +# $< is the source (OUTPUT.elf); $@ is the target (OUTPUT.dat) +.elf.dat: + $(OBJCOPY) -x -O binary $< $@ -APP := sfc.elf +$(OUTPUT).elf: Makefile $(OBJECTS) $(START_O) $(LINK_SPEC) $(EXTLIBS) + $(CC) -nostdlib -static -T $(LINK_SPEC) -o $@ $(START_O) $(OBJECTS) $(EXTLIBS) $(LIBS) +$(EXTLIBS): + $(MAKE) -C $(DS2SDKPATH)/source/ -all: $(APP) - @echo $(INC) - $(OBJCOPY) -x -O binary $(APP) sfc.dat - $(DS2SDKPATH)/tools/makeplug sfc.dat $(OUTPUT).plg -# but also, if you want to debug even more -# $(OBJDUMP) -d $(APP) > sfc.dump -# $(NM) $(APP) | sort > sfc.sym -# $(OBJDUMP) -h $(APP) > sfc.map +$(START_O): $(START_ASM) + $(CC) $(CFLAGS) $(INCLUDE) -o $@ -c $< -$(APP): depend $(SOBJS) $(OBJS) $(STARTO) $(LINKS) $(EXTLIBS) - $(CC) -nostdlib -static -T $(LINKS) -o $@ $(STARTO) $(SOBJS) $(OBJS) $(EXTLIBS) $(LIBS) +makedirs: + -mkdir $(PLUGIN_DIR)/gamepak + -mkdir $(PLUGIN_DIR)/gamecht + -mkdir $(PLUGIN_DIR)/gamerts + -mkdir $(PLUGIN_DIR)/gamepic -$(EXTLIBS): - make -C $(DS2SDKPATH)/source/ - -$(STARTO): - $(CC) $(CFLAGS) $(INC) -o $@ -c $(STARTS) +clean: + -rm -rf $(OUTPUT).plg $(OUTPUT).dat $(OUTPUT).elf depend $(OBJECTS) .c.o: - $(CC) $(CFLAGS) $(INC) -o $@ -c $< + $(CC) $(CFLAGS) $(INCLUDE) $(DEFS) -o $@ -c $< .cpp.o: - $(CC) $(CFLAGS) $(INC) -fno-rtti -o $@ -c $< -.S.o: - $(CC) $(CFLAGS) $(INC) -D_ASSEMBLER_ -D__ASSEMBLY__ -o $@ -c $< - -clean: - rm -fr *.o $(OBJS) $(OTHER) *.bin *.sym *.map *.dump *.lib - rm depend - -# depend: Makefile $(OBJS:.o=.c) $(SOBJS:.o=.S) + $(CC) $(CFLAGS) $(INCLUDE) $(DEFS) -fno-rtti -o $@ -c $< Makefile: depend - touch $@ -depend: $(SSRC) $(SRC) - $(CC) -MM $(CFLAGS) $(INC) $(SSRC) $(SRC) > $@ +depend: $(SOURCES) + $(CC) -MM $(CFLAGS) $(INCLUDE) $(DEFS) $(SOURCES) > $@ + touch Makefile -include depend - -#1-1---------------------------------------------------------------------------- -endif -#------------------------------------------------------------------------------- -- cgit v1.2.3