stella/stella/Makefile

225 lines
7.3 KiB
Makefile
Raw Normal View History

# $Header: /home/stephena/STELLA_CVS-to-SVN/stella/Makefile,v 1.3 2005-06-29 00:31:48 urchlay Exp $
#######################################################################
# Default compilation parameters. Normally don't edit these #
#######################################################################
srcdir ?= .
DEFINES :=
LDFLAGS :=
INCLUDES :=
LIBS :=
OBJS :=
MODULES :=
MODULE_DIRS :=
# Load the make rules generated by configure
include config.mak
# Uncomment this for stricter compile time code verification
# CXXFLAGS+= -Werror
CXXFLAGS:= $(CXXFLAGS)
CXXFLAGS+= -O2 -Wall -Wuninitialized -Wno-multichar -Wunused
# Even more warnings...
#CXXFLAGS+= -pedantic -Wpointer-arith -Wcast-qual -Wconversion
#CXXFLAGS+= -Wshadow -Wimplicit -Wundef -Wnon-virtual-dtor
#CXXFLAGS+= -Wno-reorder -Wwrite-strings -fcheck-new -Wctor-dtor-privacy
#######################################################################
# Misc stuff - you should never have to edit this #
#######################################################################
EXECUTABLE := stella$(EXEEXT)
all: $(EXECUTABLE)
######################################################################
# Various minor settings
######################################################################
# Files that are to be included in the archive built by "make dist"
DISTFILES := \
Makefile Makefile.common \
AUTHORS NEWS README COPYING scummvm.6 Info.plist \
scumm.dsp scummvm.dsp scummvm.dsw scummvm.icns scummvm.ico \
scummvm.proj scummvm.rc scummvm.spec scummvm.xpm simon.dsp sky.dsp \
scummvm.vcproj scumm.vcproj simon.vcproj sky.vcproj scummvm.sln
# The dist file name
ZIPFILE := scummvm-`date '+%Y-%m-%d'`.zip
# The name for the directory used for dependency tracking
DEPDIR := .deps
######################################################################
# Module settings
######################################################################
MODULES := $(MODULES)
# After the game specific modules follow the shared modules
MODULES += \
src/emucore \
src/emucore/m6502 \
src/gui \
src/common
######################################################################
# The build rules follow - normally you should have no need to
# touch whatever comes after here.
######################################################################
# Concat DEFINES and INCLUDES to form the CPPFLAGS
CPPFLAGS:= $(DEFINES) $(INCLUDES)
# Include the build instructions for all modules
-include $(addprefix $(srcdir)/, $(addsuffix /module.mk,$(MODULES)))
# Depdir information
DEPDIRS = $(addsuffix /$(DEPDIR),$(MODULE_DIRS))
DEPFILES =
# The build rule for the Stella executable
$(EXECUTABLE): $(OBJS)
$(CXX) $(LDFLAGS) $(PRE_OBJS_FLAGS) $+ $(POST_OBJS_FLAGS) $(LIBS) -o $@
distclean: clean
$(RM_REC) $(DEPDIRS)
$(RM) build.rules config.h config.mak config.log
clean:
$(RM) $(OBJS) $(EXECUTABLE)
.PHONY: all clean dist distclean plugins
# Old (dumb) compile & dependcy rules
#INCS = scumm/scumm.h common/scummsys.h common/stdafx.h
#.cpp.o:
# $(CXX) $(CXXFLAGS) $(CPPFLAGS) -c $(<) -o $*.o
#$(OBJS): $(INCS)
.SUFFIXES: .cxx
ifndef HAVE_GCC3
# If you use GCC, disable the above and enable this for intelligent
# dependency tracking.
.cxx.o:
$(MKDIR) $(*D)/$(DEPDIR)
$(CXX) -Wp,-MMD,"$(*D)/$(DEPDIR)/$(*F).d2" $(CXXFLAGS) $(CPPFLAGS) -c $(<) -o $*.o
$(ECHO) "$(*D)/" > $(*D)/$(DEPDIR)/$(*F).d
$(CAT) "$(*D)/$(DEPDIR)/$(*F).d2" >> "$(*D)/$(DEPDIR)/$(*F).d"
$(RM) "$(*D)/$(DEPDIR)/$(*F).d2"
else
# If you even have GCC 3.x, you can use this build rule, which is safer; the above
# rule can get you into a bad state if you Ctrl-C at the wrong moment.
# Also, with this GCC inserts additional dummy rules for the involved headers,
# which ensures a smooth compilation even if said headers become obsolete.
.cxx.o:
$(MKDIR) $(*D)/$(DEPDIR)
$(CXX) -Wp,-MMD,"$(*D)/$(DEPDIR)/$(*F).d",-MQ,"$@",-MP $(CXXFLAGS) $(CPPFLAGS) -c $(<) -o $*.o
endif
ifdef HAVE_NASM
.SUFFIXES: .asm
.asm.o:
$(NASM) -O1 $(NASMFLAGS) -g -o $*.o $(<)
endif
# Include the dependency tracking files. We add /dev/null at the end
# of the list to avoid a warning/error if no .d file exist
-include $(wildcard $(addsuffix /*.d,$(DEPDIRS))) /dev/null
# check if configure has been run or has been changed since last run
config.mak: $(srcdir)/configure
@echo "You need to run ./configure before you can run make"
@echo "Either you haven't run it before or it has changed."
@exit 1
install: all
$(INSTALL) -d "$(DESTDIR)$(BINDIR)"
$(INSTALL) -c -s -m 755 "$(srcdir)/scummvm$(EXEEXT)" "$(DESTDIR)$(BINDIR)/scummvm$(EXEEXT)"
$(INSTALL) -d "$(DESTDIR)$(MANDIR)/man6/"
$(INSTALL) -c -m 644 "$(srcdir)/scummvm.6" "$(DESTDIR)$(MANDIR)/man6/scummvm.6"
$(INSTALL) -d "$(DESTDIR)$(PREFIX)/share/pixmaps/"
$(INSTALL) -c -m 644 "$(srcdir)/scummvm.xpm" "$(DESTDIR)$(PREFIX)/share/pixmaps/scummvm.xpm"
$(INSTALL) -d "$(DESTDIR)$(PREFIX)/share/doc/scummvm/"
$(INSTALL) -c -m 644 "$(srcdir)/AUTHORS" "$(srcdir)/COPYING" "$(srcdir)/NEWS" "$(srcdir)/README" "$(DESTDIR)$(PREFIX)/share/doc/scummvm/"
uninstall:
rm -f "$(DESTDIR)$(BINDIR)/scummvm$(EXEEXT)"
rm -f "$(DESTDIR)$(MANDIR)/man6/scummvm.6"
rm -f "$(DESTDIR)$(PREFIX)/share/pixmaps/scummvm.xpm"
rm -rf "$(DESTDIR)$(PREFIX)/share/doc/scummvm/"
scummvmico.o: scummvm.ico
windres scummvm.rc scummvmico.o
dist:
$(RM) $(ZIPFILE)
$(ZIP) $(ZIPFILE) $(DISTFILES)
deb:
ln -sf dists/debian;
debian/prepare
fakeroot debian/rules binary
# Special target to create a application wrapper for Mac OS X
bundle_name = ScummVM.app
bundle: scummvm-static
mkdir -p $(bundle_name)/Contents/MacOS
mkdir -p $(bundle_name)/Contents/Resources
echo "APPL????" > $(bundle_name)/Contents/PkgInfo
cp $(srcdir)/Info.plist $(bundle_name)/Contents/
cp $(srcdir)/scummvm.icns $(bundle_name)/Contents/Resources/
cp scummvm-static $(bundle_name)/Contents/MacOS/scummvm
$(srcdir)/tools/credits.pl --rtf > $(bundle_name)/Contents/Resources/Credits.rtf
strip $(bundle_name)/Contents/MacOS/scummvm
# location of additional libs for OS X usually /sw/ for fink or
# /opt/local/ for darwinports
OSXOPT=/sw
# Special target to create a static linked binary for Mac OS X
scummvm-static: $(OBJS)
$(CXX) $(LDFLAGS) -o scummvm-static $(OBJS) \
`sdl-config --static-libs` \
$(OSXOPT)/lib/libmad.a \
$(OSXOPT)/lib/libvorbisfile.a \
$(OSXOPT)/lib/libvorbis.a \
$(OSXOPT)/lib/libogg.a \
$(OSXOPT)/lib/libmpeg2.a \
$(OSXOPT)/lib/libFLAC.a \
-lz
# Special target to create a snapshot disk image for Mac OS X
osxsnap: bundle
mkdir ScummVM-snapshot
cp AUTHORS ./ScummVM-snapshot/ScummVM\ Authors
cp COPYING ./ScummVM-snapshot/License
cp NEWS ./ScummVM-snapshot/News
cp README ./ScummVM-snapshot/ScummVM\ ReadMe
/Developer/Tools/SetFile -t TEXT -c ttxt ./ScummVM-snapshot/*
/Developer/Tools/CpMac -r $(bundle_name) ./ScummVM-snapshot/
hdiutil create -ov -format UDZO -srcfolder ScummVM-snapshot ScummVM-snapshot.dmg
rm -rf ScummVM-snapshot
# Special target to create a win32 snapshot binary
win32dist: scummvm$(EXEEXT)
mkdir -p $(WIN32PATH)
strip scummvm.exe -o $(WIN32PATH)/scummvm$(EXEEXT)
cp AUTHORS $(WIN32PATH)/AUTHORS.txt
cp COPYING $(WIN32PATH)/COPYING.txt
cp NEWS $(WIN32PATH)/NEWS.txt
cp README $(WIN32PATH)/README.txt
cp /usr/local/README-SDL.txt $(WIN32PATH)
cp /usr/local/bin/SDL.dll $(WIN32PATH)
u2d $(WIN32PATH)/*.txt
.PHONY: deb bundle test osxsnap win32dist dist install uninstall