275 lines
7.8 KiB
Makefile
Executable File
275 lines
7.8 KiB
Makefile
Executable File
include lib/nall/Makefile
|
|
ui = ui_qt
|
|
|
|
|
|
platform=mac
|
|
compiler=gcc
|
|
enable_gzip=false
|
|
|
|
################
|
|
### compiler ###
|
|
################
|
|
|
|
c := $(compiler)
|
|
cpp := $(subst cc,++,$(compiler))
|
|
flags := -ggdb3 -O3 -fomit-frame-pointer -Ilib
|
|
|
|
link :=
|
|
|
|
################
|
|
### platform ###
|
|
################
|
|
|
|
ifeq ($(platform),mac)
|
|
flags +=-I/Developer/SDKs/Qt/include \
|
|
-I/Developer/SDKs/Qt/include/QtCore \
|
|
-I/Developer/SDKs/Qt/include/QtGui \
|
|
-I/System/Library/Frameworks/OpenGL.framework/Versions/A/Headers \
|
|
-I/System/Library/Frameworks/AGL.framework/Headers \
|
|
-I/System/Library/Frameworks/OpenAL.framework/Versions/A/Headers \
|
|
-I/usr/X11R6/include \
|
|
-I/opt/local/include
|
|
|
|
link += -lz \
|
|
-lm \
|
|
-lao \
|
|
-framework ApplicationServices \
|
|
-framework OpenGL \
|
|
-framework OpenAL \
|
|
-framework AGL \
|
|
-L/opt/local/lib \
|
|
-lSDL -Wl,-framework,Cocoa \
|
|
-lXext \
|
|
-lgl \
|
|
-lX11
|
|
#ruby := video.glx video.sdl
|
|
#ruby += audio.openal audio.ao
|
|
#ruby += input.sdl
|
|
#-DVIDEO_GLX -DVIDEO_XV -DVIDEO_SDL -DAUDIO_ALS
|
|
#-DAUDIO_OPENAL -DAUDIO_OSS -DAUDIO_PULSEAUDIO
|
|
#-DAUDIO_AO -DINPUT_SDL -DINPUT_X
|
|
flags += -DVIDEO_SDL -DINPUT_SDL -DVIDEO_GLX -DAUDIO_AO -DAUDIO_OPENAL
|
|
|
|
endif
|
|
|
|
ifeq ($(platform),x)
|
|
ruby := video.glx video.xv video.sdl
|
|
ruby += audio.alsa audio.openal audio.oss audio.pulseaudio audio.ao
|
|
ruby += input.sdl input.x
|
|
else ifeq ($(platform),win)
|
|
ruby := video.direct3d video.wgl video.directdraw video.gdi
|
|
ruby += audio.directsound
|
|
ruby += input.rawinput input.directinput
|
|
|
|
link += -mwindows
|
|
link += -luuid -lkernel32 -luser32 -lgdi32 -lshell32
|
|
# statically link Qt for Windows build
|
|
link += -enable-stdcall-fixup -Wl,-s -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-reloc
|
|
endif
|
|
|
|
############
|
|
### ruby ###
|
|
############
|
|
|
|
rubyflags = $(call ifhas,.sdl,$(ruby),`sdl-config --cflags`)
|
|
|
|
link += $(call ifhas,.sdl,$(ruby),`sdl-config --libs`)
|
|
link += $(call ifhas,video.direct3d,$(ruby),-ld3d9)
|
|
link += $(call ifhas,video.directdraw,$(ruby),-lddraw)
|
|
link += $(call ifhas,video.glx,$(ruby),-lGL)
|
|
link += $(call ifhas,video.wgl,$(ruby),-lopengl32)
|
|
link += $(call ifhas,video.xv,$(ruby),-lXv)
|
|
link += $(call ifhas,audio.alsa,$(ruby),-lasound)
|
|
link += $(call ifhas,audio.ao,$(ruby),-lao)
|
|
link += $(call ifhas,audio.directsound,$(ruby),-ldsound)
|
|
link += $(call ifhas,audio.openal,$(ruby),$(if $(call streq,$(platform),x),-lopenal,-lopenal32))
|
|
link += $(call ifhas,audio.pulseaudio,$(ruby),-lpulse-simple)
|
|
link += $(call ifhas,input.directinput,$(ruby),-ldinput8 -ldxguid)
|
|
link += $(call ifhas,input.rawinput,$(ruby),-lxinput -ldinput8 -ldxguid)
|
|
|
|
####################
|
|
### core objects ###
|
|
####################
|
|
|
|
objects = libco ruby libreader libfilter string \
|
|
system cartridge cheat \
|
|
memory smemory cpu cpucore scpu smp smpcore ssmp sdsp ppu bppu \
|
|
sgb sa1 bsx srtc sdd1 spc7110 cx4 dsp1 dsp2 dsp3 dsp4 obc1 st010
|
|
|
|
ifeq ($(enable_gzip),true)
|
|
objects += adler32 compress crc32 deflate gzio inffast inflate inftrees ioapi trees unzip zip zutil
|
|
flags += -DGZIP_SUPPORT
|
|
endif
|
|
|
|
ifeq ($(enable_jma),true)
|
|
objects += jma jcrc32 lzmadec 7zlzma iiostrm inbyte lzma winout
|
|
flags += -DJMA_SUPPORT
|
|
endif
|
|
|
|
######################
|
|
### implicit rules ###
|
|
######################
|
|
|
|
compile = \
|
|
$(strip \
|
|
$(if $(filter %.c,$<), \
|
|
$(c) $(flags) $1 -c $< -o $@, \
|
|
$(if $(filter %.cpp,$<), \
|
|
$(cpp) $(flags) $1 -c $< -o $@ \
|
|
) \
|
|
) \
|
|
)
|
|
|
|
%.o: $<; $(call compile)
|
|
|
|
all: build;
|
|
|
|
include $(ui)/Makefile
|
|
objects := $(patsubst %,obj/%.o,$(objects))
|
|
rubydef := $(foreach c,$(subst .,_,$(call strupper,$(ruby))),-D$c)
|
|
#################
|
|
### libraries ###
|
|
#################
|
|
|
|
obj/ruby.o: lib/ruby/ruby.cpp $(call rwildcard,lib/ruby/*)
|
|
$(call compile,$(rubydef) $(rubyflags))
|
|
obj/libco.o: lib/libco/libco.c lib/libco/*
|
|
$(c) -O3 -fomit-frame-pointer -static -Ilib -c $< -o $@
|
|
obj/libreader.o: lib/libreader/libreader.cpp lib/libreader/*
|
|
obj/libfilter.o: lib/libfilter/libfilter.cpp lib/libfilter/*
|
|
obj/string.o: lib/nall/string.cpp lib/nall/*
|
|
|
|
#################
|
|
### utilities ###
|
|
#################
|
|
|
|
obj/cartridge.o: cartridge/cartridge.cpp cartridge/*
|
|
obj/cheat.o : cheat/cheat.cpp cheat/*
|
|
|
|
##############
|
|
### memory ###
|
|
##############
|
|
|
|
obj/memory.o : memory/memory.cpp memory/*
|
|
obj/smemory.o: memory/smemory/smemory.cpp $(call rwildcard,memory/smemory/)
|
|
|
|
###########
|
|
### cpu ###
|
|
###########
|
|
|
|
obj/cpu.o : cpu/cpu.cpp cpu/*
|
|
obj/cpucore.o: cpu/core/core.cpp $(call rwildcard,cpu/core/)
|
|
obj/scpu.o : cpu/scpu/scpu.cpp $(call rwildcard,cpu/scpu/)
|
|
|
|
###########
|
|
### smp ###
|
|
###########
|
|
|
|
obj/smp.o : smp/smp.cpp smp/*
|
|
obj/smpcore.o: smp/core/core.cpp $(call rwildcard,smp/core/)
|
|
obj/ssmp.o : smp/ssmp/ssmp.cpp $(call rwildcard,smp/ssmp/)
|
|
|
|
###########
|
|
### dsp ###
|
|
###########
|
|
|
|
obj/adsp.o: dsp/adsp/adsp.cpp dsp/adsp/*
|
|
obj/sdsp.o: dsp/sdsp/sdsp.cpp dsp/sdsp/*
|
|
|
|
###########
|
|
### ppu ###
|
|
###########
|
|
|
|
obj/ppu.o : ppu/ppu.cpp ppu/*
|
|
obj/bppu.o: ppu/bppu/bppu.cpp ppu/bppu/*
|
|
|
|
##############
|
|
### system ###
|
|
##############
|
|
|
|
obj/system.o: system/system.cpp $(call rwildcard,system/)
|
|
|
|
#####################
|
|
### special chips ###
|
|
#####################
|
|
|
|
obj/sgb.o : chip/sgb/sgb.cpp $(call rwildcard,chip/sgb/)
|
|
obj/sa1.o : chip/sa1/sa1.cpp $(call rwildcard,chip/sa1/)
|
|
obj/bsx.o : chip/bsx/bsx.cpp chip/bsx/*
|
|
obj/srtc.o : chip/srtc/srtc.cpp chip/srtc/*
|
|
obj/sdd1.o : chip/sdd1/sdd1.cpp chip/sdd1/*
|
|
obj/spc7110.o: chip/spc7110/spc7110.cpp chip/spc7110/*
|
|
obj/cx4.o : chip/cx4/cx4.cpp chip/cx4/*
|
|
obj/dsp1.o : chip/dsp1/dsp1.cpp chip/dsp1/*
|
|
obj/dsp2.o : chip/dsp2/dsp2.cpp chip/dsp2/*
|
|
obj/dsp3.o : chip/dsp3/dsp3.cpp chip/dsp3/*
|
|
obj/dsp4.o : chip/dsp4/dsp4.cpp chip/dsp4/*
|
|
obj/obc1.o : chip/obc1/obc1.cpp chip/obc1/*
|
|
obj/st010.o : chip/st010/st010.cpp chip/st010/*
|
|
|
|
############
|
|
### zlib ###
|
|
############
|
|
|
|
obj/adler32.o : lib/zlib/adler32.c lib/zlib/*
|
|
obj/compress.o: lib/zlib/compress.c lib/zlib/*
|
|
obj/crc32.o : lib/zlib/crc32.c lib/zlib/*
|
|
obj/deflate.o : lib/zlib/deflate.c lib/zlib/*
|
|
obj/gzio.o : lib/zlib/gzio.c lib/zlib/*
|
|
obj/inffast.o : lib/zlib/inffast.c lib/zlib/*
|
|
obj/inflate.o : lib/zlib/inflate.c lib/zlib/*
|
|
obj/inftrees.o: lib/zlib/inftrees.c lib/zlib/*
|
|
obj/ioapi.o : lib/zlib/ioapi.c lib/zlib/*
|
|
obj/trees.o : lib/zlib/trees.c lib/zlib/*
|
|
obj/unzip.o : lib/zlib/unzip.c lib/zlib/*
|
|
obj/zip.o : lib/zlib/zip.c lib/zlib/*
|
|
obj/zutil.o : lib/zlib/zutil.c lib/zlib/*
|
|
|
|
##############
|
|
### libjma ###
|
|
##############
|
|
|
|
obj/jma.o : lib/libjma/jma.cpp lib/libjma/*
|
|
obj/jcrc32.o : lib/libjma/jcrc32.cpp lib/libjma/*
|
|
obj/lzmadec.o: lib/libjma/lzmadec.cpp lib/libjma/*
|
|
obj/7zlzma.o : lib/libjma/7zlzma.cpp lib/libjma/*
|
|
obj/iiostrm.o: lib/libjma/iiostrm.cpp lib/libjma/*
|
|
obj/inbyte.o : lib/libjma/inbyte.cpp lib/libjma/*
|
|
obj/lzma.o : lib/libjma/lzma.cpp lib/libjma/*
|
|
obj/winout.o : lib/libjma/winout.cpp lib/libjma/*
|
|
|
|
###############
|
|
### targets ###
|
|
###############
|
|
|
|
build: ui_build $(objects)
|
|
$(strip g++ -o bsnes $(objects) $(link))
|
|
|
|
install:
|
|
install -D -m 755 ../bsnes $(DESTDIR)$(prefix)/bin/bsnes
|
|
install -D -m 644 data/bsnes.png $(DESTDIR)$(prefix)/share/pixmaps/bsnes.png
|
|
install -D -m 644 data/bsnes.desktop $(DESTDIR)$(prefix)/share/applications/bsnes.desktop
|
|
|
|
clean: ui_clean
|
|
rm obj/*.o
|
|
|
|
help:
|
|
@echo "Usage: $(MAKE) platform=(os) compiler=(cc) [options]"
|
|
@echo ""
|
|
@echo "Supported platforms:"
|
|
@echo " x - Linux / BSD (x86, x86-64)"
|
|
@echo " win - Windows (x86, x86-64)"
|
|
@echo ""
|
|
@echo "Supported compilers:"
|
|
@echo " gcc - GCC compiler"
|
|
@echo " mingw32-gcc - MinGW compiler"
|
|
@echo " i586-mingw32-gcc - MinGW cross compiler"
|
|
@echo ""
|
|
@echo "Available options:"
|
|
@echo " enable_gzip=[true|false] - Enable ZIP / GZ support (default=false)"
|
|
@echo " enable_jma=[true|false] - Enable JMA support (default=false)"
|
|
@echo ""
|
|
@echo "Example: $(MAKE) platform=x compiler=gcc enable_gzip=true"
|
|
@echo ""
|
|
|