mirror of
https://github.com/dborth/snes9xgx.git
synced 2024-12-26 19:21:50 +01:00
404 lines
9.5 KiB
Makefile
404 lines
9.5 KiB
Makefile
@ZSNESFX@
|
|
@ZSNESC4@
|
|
@ASMCPU@
|
|
@SPC700ASM@
|
|
@NETPLAY@
|
|
UNZIP=1
|
|
@JMA@
|
|
@GLIDE@
|
|
@OPENGL@
|
|
@AIDO@
|
|
#GUI=0
|
|
@THREAD_SOUND@
|
|
@ASMKREED@
|
|
@SDD1_DECOMP@
|
|
@CORRECT_VRAM_READS@
|
|
@DREAMCAST@
|
|
CHEATS=1
|
|
2XSAI=1
|
|
|
|
#Fairly good and special-char-safe descriptor of the os being built on.
|
|
OS=`uname -s -r -m|sed \"s/ /-/g\"|tr \"[A-Z]\" \"[a-z]\"|tr \"/()\" \"___\"`
|
|
BUILDDIR=.
|
|
#BUILDDIR=build/$(OS)
|
|
|
|
ifdef DREAMCAST
|
|
CPU=sh
|
|
ASMCPU=1
|
|
CHEATS=0
|
|
2XSAI=0
|
|
else
|
|
CPU=i386
|
|
endif
|
|
|
|
ifdef ZSNESFX
|
|
FXOBJ=$(CPU)/fxemu2b.o $(CPU)/fxemu2.o $(CPU)/fxemu2c.o $(CPU)/fxtable.o $(CPU)/sfxproc.o $(CPU)/ZSNES.O
|
|
FXDEFINES=-DZSNES_FX -DEXECUTE_SUPERFX_PER_LINE
|
|
FXDEPENDS=zsnes_fx
|
|
FXNO_DEPENDS=c_fx
|
|
else
|
|
FXOBJ=fxinst.o fxemu.o fxdbg.o
|
|
FXDEFINES=
|
|
FXDEPENDS=c_fx
|
|
FXNO_DEPENDS=zsnes_fx
|
|
endif
|
|
|
|
ifdef ZSNESC4
|
|
C4OBJ=$(CPU)/C4.O $(CPU)/zsnesc4.o c4.o
|
|
C4DEFINES=-DZSNES_C4
|
|
C4DEPENDS=zsnes_c4
|
|
C4NO_DEPENDS=c_c4
|
|
else
|
|
C4OBJ=c4.o c4emu.o
|
|
C4DEFINES=
|
|
C4DEPENDS=c_c4
|
|
C4NO_DEPENDS=zsnes_c4
|
|
endif
|
|
|
|
SOUNDOBJ=spc700.o soundux.o apu.o @I386SPC@
|
|
SOUNDDEFINES=-DSPC700_C
|
|
|
|
ifdef ASMCPU
|
|
CPUOBJ=$(CPU)/cpuops.o $(CPU)/cpuexec.o $(CPU)/sa1ops.o
|
|
else
|
|
CPUOBJ=cpuops.o cpuexec.o sa1cpu.o
|
|
endif
|
|
|
|
ifdef DREAMCAST
|
|
PLATFORMOBJ=dc/input.o dc/display.o dc/sound.o \
|
|
dc/dc.o dc/menu.o dc/trace.o dc/lcd.o \
|
|
dc/lain_blanker.o dc/td.o dc/md5.o
|
|
else
|
|
PLATFORMOBJ=unix/unix.o
|
|
endif
|
|
|
|
ifdef CHEATS
|
|
CHEATOBJ=cheats.o cheats2.o
|
|
endif
|
|
|
|
ifndef DREAMCAST
|
|
SNAPOBJ = snaporig.o snapshot.o
|
|
SCREENSHOTOBJ = screenshot.o
|
|
MOVIEOBJ = movie.o
|
|
endif
|
|
|
|
ifdef 2XSAI
|
|
ifdef ASMKREED
|
|
KREEDOBJ=$(CPU)/2XSAIMMX.O $(CPU)/bilinear.o 2xsai.o
|
|
KREEDDEFINES=-DMMX
|
|
else
|
|
KREEDOBJ=2xsai.o
|
|
endif
|
|
endif
|
|
|
|
ifdef SDD1_DECOMP
|
|
SDD1OBJ=sdd1emu.o
|
|
ifdef SDD1_VERIFY
|
|
SDD1DEFINES=-DSDD1_DECOMP -DSDD1_VERIFY
|
|
else
|
|
SDD1DEFINES=-DSDD1_DECOMP
|
|
endif
|
|
endif
|
|
|
|
ifdef CORRECT_VRAM_READS
|
|
CORRVRAMDEFINES=-DCORRECT_VRAM_READS
|
|
endif
|
|
|
|
SPC7110OBJ=spc7110.o
|
|
OBC1OBJ=obc1.o
|
|
SETAOBJ=seta.o seta010.o seta011.o seta018.o
|
|
|
|
OBJECTS=$(CPUOBJ) $(SOUNDOBJ) apudebug.o $(FXOBJ) $(C4OBJ) \
|
|
controls.o crosshairs.o cpu.o sa1.o debug.o sdd1.o tile.o srtc.o gfx.o \
|
|
memmap.o clip.o dsp1.o ppu.o dma.o snes9x.o data.o globals.o reader.o \
|
|
conffile.o bsx.o logger.o \
|
|
$(SPC7110OBJ) $(OBC1OBJ) $(SETAOBJ) $(KREEDOBJ) $(SDD1OBJ) \
|
|
$(CHEATOBJ) $(PLATFORMOBJ) $(SNAPOBJ) $(SCREENSHOTOBJ) $(MOVIEOBJ)
|
|
|
|
ifdef NETPLAY
|
|
OBJECTS += netplay.o server.o
|
|
NETPLAYDEFINES=-DNETPLAY_SUPPORT
|
|
SERVER_OBJECTS=server.o unix/server_main.o globals.o netplay.o
|
|
endif
|
|
|
|
ifdef UNZIP
|
|
OBJECTS += loadzip.o unzip/unzip.o unzip/explode.o unzip/unreduce.o unzip/unshrink.o
|
|
UNZIPDEFINES=-DUNZIP_SUPPORT
|
|
endif
|
|
|
|
ifdef JMA
|
|
OBJECTS += jma/s9x-jma.o jma/7zlzma.o jma/crc32.o jma/iiostrm.o jma/inbyte.o jma/jma.o jma/lzma.o jma/lzmadec.o jma/winout.o
|
|
JMADEFINES = -DJMA_SUPPORT
|
|
endif
|
|
|
|
ifdef THREAD_SOUND
|
|
CPUDEFINES += -DUSE_THREADS
|
|
EXTRALIBS += -lpthread
|
|
endif
|
|
|
|
ifdef GLIDE
|
|
GLIDEOBJS = unix/glide.o
|
|
GLIDEDEFINES = -DUSE_GLIDE -I/usr/include/glide
|
|
GLIDELIBS = -lglide2x
|
|
endif
|
|
|
|
ifdef OPENGL
|
|
OPENGLOBJS = unix/opengl.o
|
|
OPENGLDEFINES = -DUSE_OPENGL
|
|
OPENGLLIBS = -lGL -lGLU -ldl
|
|
endif
|
|
|
|
ifdef AIDO
|
|
AIDOOBJS = unix/aido.o
|
|
AIDODEFINES = -DUSE_AIDO
|
|
endif
|
|
|
|
JOYDEFINES = @JOYDEFINES@
|
|
|
|
ifdef DREAMCAST
|
|
CCC = sh-elf-c++ -fno-rtti
|
|
CC = sh-elf-gcc
|
|
NASM = fail
|
|
GASM = fail
|
|
else
|
|
CCC = @CXX@ @RTTIFLAG@
|
|
CC = @CC@
|
|
NASM = @NASM@
|
|
GASM = @CXX@
|
|
endif
|
|
|
|
#INCLUDES = -I../zlib @X_INCLUDES@
|
|
ifdef DREAMCAST
|
|
INCLUDES = -Idc
|
|
DEFS = -DDC
|
|
else
|
|
INCLUDES = @X_INCLUDES@
|
|
DEFS = -DMITSHM
|
|
endif
|
|
|
|
INCLUDES += -I. -Iunzip @CPUINC@
|
|
|
|
ifdef DREAMCAST
|
|
OPTIMISE=-O4 -ffreestanding -ffast-math -fschedule-insns2 -fomit-frame-pointer -fno-inline-functions -fno-defer-pop -fforce-addr -fstrict-aliasing -funroll-loops -fdelete-null-pointer-checks -fno-exceptions
|
|
CPUFLAGS=-ml -m4-single-only
|
|
else
|
|
OPTIMISE = @OPTIMIZE@
|
|
endif
|
|
|
|
DEFS += \
|
|
-DCPU_SHUTDOWN \
|
|
-DSPC700_SHUTDOWN \
|
|
$(FXDEFINES) \
|
|
$(C4DEFINES) \
|
|
$(CPUDEFINES) \
|
|
$(SOUNDDEFINES) \
|
|
$(NETPLAYDEFINES) \
|
|
$(UNZIPDEFINES) \
|
|
$(JMADEFINES) \
|
|
$(GLIDEDEFINES) \
|
|
$(OPENGLDEFINES) \
|
|
$(AIDODEFINES) \
|
|
$(KREEDDEFINES) \
|
|
$(SDD1DEFINES) \
|
|
$(CORRVRAMDEFINES) \
|
|
$(JOYDEFINES) \
|
|
-DNO_INLINE_SET_GET @SYSDEFINES@
|
|
|
|
CCFLAGS = $(OPTIMISE) $(CPUFLAGS) $(INCLUDES) $(DEFS)
|
|
|
|
CFLAGS=$(CCFLAGS)
|
|
|
|
.SUFFIXES: .o .cpp .c .cc .h .m .i .S .asm .obj .O .CPP .C .ASM
|
|
#FIXME: Why is this set statically?
|
|
#LDLIBS = -L/usr/X11R6/lib
|
|
# -L../zlib
|
|
|
|
ifdef GLIDE
|
|
all: Makefile configure gsnes9x
|
|
else
|
|
ifdef OPENGL
|
|
all: Makefile configure osnes9x
|
|
else
|
|
all: Makefile configure snes9x
|
|
endif
|
|
endif
|
|
|
|
Makefile: configure Makefile.in
|
|
@echo "Makefile is older than configure or in-file. Run configure or touch Makefile."
|
|
exit 1
|
|
|
|
configure: configure.in
|
|
@echo "configure is older than in-file. Run autoconf or touch configure."
|
|
exit 1
|
|
|
|
#ggisnes9x
|
|
#xf86snes9x
|
|
|
|
ifdef ASMCPU
|
|
OFFSET=offsets
|
|
else
|
|
OFFSET=
|
|
endif
|
|
|
|
offsets: offsets.o
|
|
$(CCC) $(INCLUDES) -o $@ offsets.o
|
|
./offsets >$(CPU)/offsets.h
|
|
|
|
#../zlib/libz.a:
|
|
# cd ../zlib && sh ./configure && make
|
|
|
|
snes9x: $(OBJECTS) unix/x11.o $(AIDOOBJS) $(OFFSET)
|
|
$(CCC) $(INCLUDES) -o $@ $(OBJECTS) $(AIDOOBJS) $(GLIDEOBJS) $(OPENGLOBJS) unix/x11.o $(LDLIBS) $(GLIDELIBS) $(OPENGLLIBS) @SYSLIBS@ -lXext -lX11 $(EXTRALIBS) -lm
|
|
|
|
unix/svga_keynames.h: unix/svga_get_keynames.pl
|
|
unix/svga_get_keynames.pl /usr/include/vgakeyboard.h > unix/svga_keynames.h
|
|
|
|
unix/svga.o: unix/svga_keynames.h
|
|
|
|
ssnes9x: $(OBJECTS) unix/svga.o
|
|
$(CCC) $(INCLUDES) -o $@ $(OBJECTS) $(GLIDEOBJS) unix/svga.o $(LDLIBS) $(GLIDELIBS) @SYSLIBS@ -lvga -lvgagl $(EXTRALIBS) -lm
|
|
|
|
gsnes9x: $(OBJECTS) $(GLIDEOBJS)
|
|
$(CCC) $(INCLUDES) -o $@ $(OBJECTS) $(GLIDEOBJS) $(LDLIBS) @SYSLIBS@ -lglide $(EXTRALIBS) -lm
|
|
|
|
ggisnes9x: $(OBJECTS) unix/ggi.o
|
|
$(CCC) $(INCLUDES) -o $@ $(OBJECTS) unix/ggi.o $(LDLIBS) @SYSLIBS@ -lggi $(EXTRALIBS) -lm
|
|
|
|
osnes9x: $(OBJECTS) unix/x11.o $(OPENGLOBJS)
|
|
$(CCC) $(INCLUDES) -o $@ $(OBJECTS) unix/x11.o $(OPENGLOBJS) $(LDLIBS) $(OPENGLLIBS) @SYSLIBS@ -lXext -lX11 $(EXTRALIBS) -lm
|
|
|
|
s9xserver: $(SERVER_OBJECTS)
|
|
$(CCC) $(INCLUDES) -o $@ $(SERVER_OBJECTS)
|
|
|
|
jma/s9x-jma.o: jma/s9x-jma.cpp
|
|
$(CCC) $(INCLUDES) -c $(CCFLAGS) -fexceptions $*.cpp -o $@
|
|
jma/7zlzma.o: jma/7zlzma.cpp
|
|
$(CCC) $(INCLUDES) -c $(CCFLAGS) -fexceptions $*.cpp -o $@
|
|
jma/crc32.o: jma/crc32.cpp
|
|
$(CCC) $(INCLUDES) -c $(CCFLAGS) -fexceptions $*.cpp -o $@
|
|
jma/iiostrm.o: jma/iiostrm.cpp
|
|
$(CCC) $(INCLUDES) -c $(CCFLAGS) -fexceptions $*.cpp -o $@
|
|
jma/inbyte.o: jma/inbyte.cpp
|
|
$(CCC) $(INCLUDES) -c $(CCFLAGS) -fexceptions $*.cpp -o $@
|
|
jma/jma.o: jma/jma.cpp
|
|
$(CCC) $(INCLUDES) -c $(CCFLAGS) -fexceptions $*.cpp -o $@
|
|
jma/lzma.o: jma/lzma.cpp
|
|
$(CCC) $(INCLUDES) -c $(CCFLAGS) -fexceptions $*.cpp -o $@
|
|
jma/lzmadec.o: jma/lzmadec.cpp
|
|
$(CCC) $(INCLUDES) -c $(CCFLAGS) -fexceptions $*.cpp -o $@
|
|
jma/winout.o: jma/winout.cpp
|
|
$(CCC) $(INCLUDES) -c $(CCFLAGS) -fexceptions $*.cpp -o $@
|
|
|
|
.cpp.o:
|
|
$(CCC) $(INCLUDES) -c $(CCFLAGS) $*.cpp -o $@
|
|
|
|
.c.o:
|
|
$(CC) $(INCLUDES) -c $(CCFLAGS) $*.c -o $@
|
|
|
|
.cpp.S:
|
|
$(GASM) $(INCLUDES) -S $(CCFLAGS) $*.cpp -o $@
|
|
|
|
.cpp.i:
|
|
$(GASM) $(INCLUDES) -E $(CCFLAGS) $*.cpp -o $@
|
|
|
|
.S.o:
|
|
$(GASM) $(INCLUDES) -c $(CCFLAGS) $*.S -o $@
|
|
|
|
.S.i:
|
|
$(GASM) $(INCLUDES) -c -E $(CCFLAGS) $*.S -o $@
|
|
|
|
.s.o:
|
|
@echo Compiling $*.s
|
|
sh-elf-as -little $*.s -o $@
|
|
|
|
.asm.o:
|
|
$(NASM) -f elf -DELF $(FXDEFINES) -i. -ii386 -o $@ $*.asm
|
|
|
|
.obj.o:
|
|
cp $*.obj $*.o
|
|
|
|
.CPP.O:
|
|
$(CCC) $(INCLUDES) -c $(CCFLAGS) -x c++ $*.CPP -o $@
|
|
|
|
.C.O:
|
|
$(CC) $(INCLUDES) -c $(CCFLAGS) $*.C -o $@
|
|
|
|
.ASM.O:
|
|
$(NASM) -f elf -DELF $(FXDEFINES) -i . -i i386 $*.ASM -o $@
|
|
|
|
unix/moc_snes9x_gui.cpp: unix/snes9x_gui.h
|
|
$(MOC) unix/snes9x_gui.h -o $@
|
|
|
|
clean:
|
|
rm -f $(OBJECTS) offsets.o unix/svga.o unix/aido.o unix/x11.o unix/ggi.o unix/xf86.o unix/glide.o
|
|
|
|
#release: CCFLAGS += -DNO_DEBUGGER
|
|
|
|
_bin-package:
|
|
RELNR=`grep "#define VERSION" snes9x.h | sed -e 's/"//g' | awk '{ print $$3 }'` && \
|
|
echo $$RELNR && \
|
|
RELNAME=snes9x-$${RELNR} && export RELNAME && \
|
|
test \! -f $${RELNAME}.tar.gz && \
|
|
DISTDIR=disttmp/$${RELNAME}/ && \
|
|
rm -rf disttmp && \
|
|
mkdir disttmp && \
|
|
mkdir $${DISTDIR} && \
|
|
cp snes9x $${DISTDIR} && \
|
|
cp config.info hardware.txt problems.txt changes.txt ../faqs.txt ../readme.txt ../readme.unix $${DISTDIR} && \
|
|
(cd disttmp && tar cvf - $${RELNAME}) | gzip -c > $${RELNAME}.tar.gz &&\
|
|
rm -rf disttmp
|
|
|
|
#FIXME: Should possibly have clean, but not in xenofarm build
|
|
bin-release: snes9x _bin-package
|
|
|
|
#FIXME: Intelligent messages when bailing out.
|
|
#FIXME: See those ls:s? Don't look to closely at the statements...
|
|
_src-package:
|
|
RELNR=`grep "#define VERSION" snes9x.h | sed -e 's/"//g' | awk '{ print $$3 }'` && \
|
|
echo $$RELNR && \
|
|
RELNAME=snes9x-$${RELNR}-src && \
|
|
test \! -f $${RELNAME}.tar.gz && \
|
|
test \! `ls *~` && \
|
|
test \! `ls *.o` && \
|
|
test \! -f snes9x && \
|
|
export RELNR && export RELNAME && \
|
|
(cd .. && PWD=`pwd` && SNESDIR=`basename $$PWD` && cd .. && \
|
|
DISTDIR=disttmp/$${RELNAME} && \
|
|
rm -rf disttmp && \
|
|
mkdir disttmp && \
|
|
cp -r $${SNESDIR} $${DISTDIR} && \
|
|
rm -f $${DISTDIR}/snes9x/config.* 2>/dev/null && \
|
|
rm -f $${DISTDIR}/snes9x/conftezt.out.* 2>/dev/null && \
|
|
rm -rf $${DISTDIR}/snes9x/autom4te.cache 2>/dev/null && \
|
|
rm $${DISTDIR}/snes9x/Makefile && \
|
|
find disttmp -name CVS -type f -exec rm "{}" \; && \
|
|
find disttmp -name CVS -type d -exec rm "{}" \; && \
|
|
(cd disttmp && tar cvf - $${RELNAME}) | gzip -c > $${RELNAME}.tar.gz && \
|
|
mv $${RELNAME}.tar.gz $${SNESDIR}/snes9x/ ) && \
|
|
rm -rf disttmp
|
|
|
|
#Requires:
|
|
# 1. Prestine checkout
|
|
# 2. `autoconf`
|
|
# 3. `./configure`
|
|
src-release: depend _src-package
|
|
|
|
xenofarm:
|
|
./xenofarm.sh
|
|
cd build/xenofarm && tar cf - . > ../../../xenofarm_result.tar
|
|
gzip -f9 ../xenofarm_result.tar
|
|
|
|
# And now for the impressive testsuite:
|
|
verify: snes9x
|
|
./snes9x --selftest
|
|
|
|
#FIXME: Make a auto-self-reference.
|
|
depend:
|
|
$(CC) $(CFLAGS) -MM -MG \
|
|
`find . '(' -name '*.c' -o -name '*.cpp' -o -name '*.S' ')' -print -o -name msdos -prune` \
|
|
| sed -e 's@^[^ :]*: *\([^ ]*/\)[^ /]*@\1&@' \
|
|
>dependencies
|
|
|
|
include dependencies
|
|
|