2005-06-29 13:11:03 +00:00
|
|
|
##============================================================================
|
|
|
|
##
|
|
|
|
## SSSS tt lll lll
|
|
|
|
## SS SS tt ll ll
|
|
|
|
## SS tttttt eeee ll ll aaaa
|
|
|
|
## SSSS tt ee ee ll ll aa
|
|
|
|
## SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator"
|
|
|
|
## SS SS tt ee ll ll aa aa
|
|
|
|
## SSSS ttt eeeee llll llll aaaaa
|
|
|
|
##
|
2015-12-29 19:22:46 +00:00
|
|
|
## Copyright (c) 1995-2016 by Bradford W. Mott, Stephen Anthony
|
2010-04-10 21:37:23 +00:00
|
|
|
## and the Stella Team
|
2005-06-29 13:11:03 +00:00
|
|
|
##
|
2010-01-10 03:23:32 +00:00
|
|
|
## See the file "License.txt" for information on usage and redistribution of
|
2005-06-29 13:11:03 +00:00
|
|
|
## this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
|
|
|
##
|
2009-01-11 21:31:21 +00:00
|
|
|
## $Id: Makefile,v 1.37 2009-01-11 21:31:21 stephena Exp $
|
2005-06-29 13:11:03 +00:00
|
|
|
##
|
|
|
|
## Based on code from ScummVM - Scumm Interpreter
|
|
|
|
## Copyright (C) 2002-2004 The ScummVM project
|
|
|
|
##============================================================================
|
2005-06-28 18:56:49 +00:00
|
|
|
|
|
|
|
#######################################################################
|
|
|
|
# Default compilation parameters. Normally don't edit these #
|
|
|
|
#######################################################################
|
|
|
|
|
|
|
|
srcdir ?= .
|
|
|
|
|
2016-09-04 23:03:01 +00:00
|
|
|
DEFINES := -D_GLIBCXX_USE_CXX11_ABI=1
|
2017-08-10 13:26:05 +00:00
|
|
|
LDFLAGS := -pthread
|
2005-06-28 18:56:49 +00:00
|
|
|
INCLUDES :=
|
2006-06-11 21:49:10 +00:00
|
|
|
LIBS :=
|
2005-06-28 18:56:49 +00:00
|
|
|
OBJS :=
|
2006-02-01 13:53:25 +00:00
|
|
|
PROF :=
|
2005-06-28 18:56:49 +00:00
|
|
|
|
|
|
|
MODULES :=
|
|
|
|
MODULE_DIRS :=
|
|
|
|
|
2005-10-22 20:33:57 +00:00
|
|
|
DISTNAME := stella-snapshot
|
|
|
|
|
2005-06-28 18:56:49 +00:00
|
|
|
# Load the make rules generated by configure
|
|
|
|
include config.mak
|
|
|
|
|
|
|
|
# Uncomment this for stricter compile time code verification
|
|
|
|
# CXXFLAGS+= -Werror
|
|
|
|
|
2005-06-29 13:11:03 +00:00
|
|
|
ifdef CXXFLAGS
|
2017-07-09 19:19:17 +00:00
|
|
|
CXXFLAGS:= $(CXXFLAGS) -x c++
|
2005-06-29 13:11:03 +00:00
|
|
|
else
|
2017-07-09 19:19:17 +00:00
|
|
|
CXXFLAGS:= -O2 -x c++
|
2005-06-29 13:11:03 +00:00
|
|
|
endif
|
2015-09-20 01:13:53 +00:00
|
|
|
CXXFLAGS+= -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers
|
2012-01-06 22:38:09 +00:00
|
|
|
ifdef HAVE_GCC
|
2017-07-21 23:40:13 +00:00
|
|
|
CXXFLAGS+= -Wno-multichar -Wunused -fno-rtti -Woverloaded-virtual -Wnon-virtual-dtor -std=c++14
|
2012-01-06 22:38:09 +00:00
|
|
|
endif
|
2017-10-12 00:19:31 +00:00
|
|
|
ifdef HAVE_CLANG
|
|
|
|
CXXFLAGS+= -Weverything -Wno-c++17-extensions -Wno-c++98-compat -Wno-c++98-compat-pedantic \
|
2017-10-15 21:02:32 +00:00
|
|
|
-Wno-double-promotion -Wno-switch-enum -Wno-conversion -Wno-covered-switch-default \
|
2017-10-12 00:19:31 +00:00
|
|
|
-Wno-inconsistent-missing-destructor-override \
|
|
|
|
-Wno-exit-time-destructors -Wno-global-constructors -Wno-weak-vtables \
|
|
|
|
-Wno-four-char-constants -Wno-padded
|
|
|
|
endif
|
2006-02-01 13:53:25 +00:00
|
|
|
|
|
|
|
ifdef PROFILE
|
|
|
|
PROF:= -g -pg -fprofile-arcs -ftest-coverage
|
|
|
|
CXXFLAGS+= $(PROF)
|
|
|
|
else
|
2012-01-06 22:38:09 +00:00
|
|
|
ifdef HAVE_GCC
|
|
|
|
CXXFLAGS+= -fomit-frame-pointer
|
|
|
|
endif
|
2006-02-01 13:53:25 +00:00
|
|
|
endif
|
|
|
|
|
2005-06-28 18:56:49 +00:00
|
|
|
|
|
|
|
#######################################################################
|
|
|
|
# Misc stuff - you should never have to edit this #
|
|
|
|
#######################################################################
|
|
|
|
|
|
|
|
EXECUTABLE := stella$(EXEEXT)
|
|
|
|
|
2011-04-22 18:57:20 +00:00
|
|
|
all: $(EXECUTABLE)
|
2005-06-28 23:18:16 +00:00
|
|
|
|
|
|
|
|
|
|
|
######################################################################
|
|
|
|
# Various minor settings
|
|
|
|
######################################################################
|
|
|
|
|
|
|
|
# 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 \
|
2016-12-10 17:08:28 +00:00
|
|
|
src/emucore/tia \
|
2017-07-26 22:33:39 +00:00
|
|
|
src/emucore/tia/frame-manager \
|
2005-06-28 23:18:16 +00:00
|
|
|
src/gui \
|
2012-02-26 20:11:59 +00:00
|
|
|
src/common \
|
|
|
|
src/common/tv_filters
|
2005-06-28 23:18:16 +00:00
|
|
|
|
|
|
|
######################################################################
|
|
|
|
# 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))
|
2017-07-09 19:19:17 +00:00
|
|
|
DEPFILES =
|
2005-06-28 23:18:16 +00:00
|
|
|
|
|
|
|
# The build rule for the Stella executable
|
2006-06-11 21:49:10 +00:00
|
|
|
$(EXECUTABLE): $(OBJS)
|
2006-02-01 13:53:25 +00:00
|
|
|
$(LD) $(LDFLAGS) $(PRE_OBJS_FLAGS) $+ $(POST_OBJS_FLAGS) $(LIBS) $(PROF) -o $@
|
2005-06-28 23:18:16 +00:00
|
|
|
|
|
|
|
distclean: clean
|
|
|
|
$(RM_REC) $(DEPDIRS)
|
|
|
|
$(RM) build.rules config.h config.mak config.log
|
|
|
|
|
|
|
|
clean:
|
|
|
|
$(RM) $(OBJS) $(EXECUTABLE)
|
|
|
|
|
2005-09-30 22:12:18 +00:00
|
|
|
.PHONY: all clean dist distclean
|
2005-06-28 23:18:16 +00:00
|
|
|
|
|
|
|
.SUFFIXES: .cxx
|
2012-01-06 22:38:09 +00:00
|
|
|
|
|
|
|
|
|
|
|
ifndef CXX_UPDATE_DEP_FLAG
|
2005-06-28 23:18:16 +00:00
|
|
|
# If you use GCC, disable the above and enable this for intelligent
|
2017-07-09 19:19:17 +00:00
|
|
|
# dependency tracking.
|
2012-01-06 22:38:09 +00:00
|
|
|
CXX_UPDATE_DEP_FLAG = -Wp,-MMD,"$(*D)/$(DEPDIR)/$(*F).d2"
|
2005-06-28 23:18:16 +00:00
|
|
|
.cxx.o:
|
|
|
|
$(MKDIR) $(*D)/$(DEPDIR)
|
2012-01-06 22:38:09 +00:00
|
|
|
$(CXX) $(CXX_UPDATE_DEP_FLAG) $(CXXFLAGS) $(CPPFLAGS) -c $(<) -o $*.o
|
2005-06-28 23:18:16 +00:00
|
|
|
$(ECHO) "$(*D)/" > $(*D)/$(DEPDIR)/$(*F).d
|
|
|
|
$(CAT) "$(*D)/$(DEPDIR)/$(*F).d2" >> "$(*D)/$(DEPDIR)/$(*F).d"
|
|
|
|
$(RM) "$(*D)/$(DEPDIR)/$(*F).d2"
|
2005-06-29 13:11:03 +00:00
|
|
|
|
|
|
|
.c.o:
|
|
|
|
$(MKDIR) $(*D)/$(DEPDIR)
|
2012-01-06 22:38:09 +00:00
|
|
|
$(CXX) $(CXX_UPDATE_DEP_FLAG) $(CXXFLAGS) $(CPPFLAGS) -c $(<) -o $*.o
|
2005-06-29 13:11:03 +00:00
|
|
|
$(ECHO) "$(*D)/" > $(*D)/$(DEPDIR)/$(*F).d
|
|
|
|
$(CAT) "$(*D)/$(DEPDIR)/$(*F).d2" >> "$(*D)/$(DEPDIR)/$(*F).d"
|
|
|
|
$(RM) "$(*D)/$(DEPDIR)/$(*F).d2"
|
2005-06-28 23:18:16 +00:00
|
|
|
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)
|
2012-01-06 22:38:09 +00:00
|
|
|
$(CXX) $(CXX_UPDATE_DEP_FLAG) $(CXXFLAGS) $(CPPFLAGS) -c $(<) -o $*.o
|
2005-06-29 13:11:03 +00:00
|
|
|
|
|
|
|
.c.o:
|
|
|
|
$(MKDIR) $(*D)/$(DEPDIR)
|
2012-01-06 22:38:09 +00:00
|
|
|
$(CXX) $(CXX_UPDATE_DEP_FLAG) $(CXXFLAGS) $(CPPFLAGS) -c $(<) -o $*.o
|
2005-06-28 23:18:16 +00:00
|
|
|
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
|
2005-06-28 18:56:49 +00:00
|
|
|
|
|
|
|
# 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)"
|
2005-09-30 22:12:18 +00:00
|
|
|
$(INSTALL) -c -s -m 755 "$(srcdir)/stella$(EXEEXT)" "$(DESTDIR)$(BINDIR)/stella$(EXEEXT)"
|
|
|
|
$(INSTALL) -d "$(DESTDIR)$(DOCDIR)"
|
2006-03-19 20:57:55 +00:00
|
|
|
$(INSTALL) -c -m 644 "$(srcdir)/Announce.txt" "$(srcdir)/Changes.txt" "$(srcdir)/Copyright.txt" "$(srcdir)/License.txt" "$(srcdir)/README-SDL.txt" "$(srcdir)/Readme.txt" "$(srcdir)/Todo.txt" "$(srcdir)/docs/index.html" "$(srcdir)/docs/debugger.html" "$(DESTDIR)$(DOCDIR)/"
|
2005-09-30 22:12:18 +00:00
|
|
|
$(INSTALL) -d "$(DESTDIR)$(DOCDIR)/graphics"
|
2007-08-16 16:42:46 +00:00
|
|
|
$(INSTALL) -c -m 644 $(wildcard $(srcdir)/docs/graphics/*.png) "$(DESTDIR)$(DOCDIR)/graphics"
|
2006-11-09 03:06:42 +00:00
|
|
|
$(INSTALL) -d "$(DESTDIR)$(DATADIR)/applications"
|
|
|
|
$(INSTALL) -c -m 644 "$(srcdir)/src/unix/stella.desktop" "$(DESTDIR)$(DATADIR)/applications"
|
2011-12-27 01:57:06 +00:00
|
|
|
$(INSTALL) -d "$(DESTDIR)$(DATADIR)/icons/hicolor/16x16/apps"
|
|
|
|
$(INSTALL) -d "$(DESTDIR)$(DATADIR)/icons/hicolor/22x22/apps"
|
|
|
|
$(INSTALL) -d "$(DESTDIR)$(DATADIR)/icons/hicolor/24x24/apps"
|
|
|
|
$(INSTALL) -d "$(DESTDIR)$(DATADIR)/icons/hicolor/32x32/apps"
|
|
|
|
$(INSTALL) -d "$(DESTDIR)$(DATADIR)/icons/hicolor/48x48/apps"
|
|
|
|
$(INSTALL) -d "$(DESTDIR)$(DATADIR)/icons/hicolor/64x64/apps"
|
|
|
|
$(INSTALL) -d "$(DESTDIR)$(DATADIR)/icons/hicolor/128x128/apps"
|
|
|
|
$(INSTALL) -c -m 644 "$(srcdir)/src/common/stella-16x16.png" "$(DESTDIR)$(DATADIR)/icons/hicolor/16x16/apps/stella.png"
|
|
|
|
$(INSTALL) -c -m 644 "$(srcdir)/src/common/stella-22x22.png" "$(DESTDIR)$(DATADIR)/icons/hicolor/22x22/apps/stella.png"
|
|
|
|
$(INSTALL) -c -m 644 "$(srcdir)/src/common/stella-24x24.png" "$(DESTDIR)$(DATADIR)/icons/hicolor/24x24/apps/stella.png"
|
|
|
|
$(INSTALL) -c -m 644 "$(srcdir)/src/common/stella-32x32.png" "$(DESTDIR)$(DATADIR)/icons/hicolor/32x32/apps/stella.png"
|
|
|
|
$(INSTALL) -c -m 644 "$(srcdir)/src/common/stella-48x48.png" "$(DESTDIR)$(DATADIR)/icons/hicolor/48x48/apps/stella.png"
|
|
|
|
$(INSTALL) -c -m 644 "$(srcdir)/src/common/stella-64x64.png" "$(DESTDIR)$(DATADIR)/icons/hicolor/64x64/apps/stella.png"
|
|
|
|
$(INSTALL) -c -m 644 "$(srcdir)/src/common/stella-128x128.png" "$(DESTDIR)$(DATADIR)/icons/hicolor/128x128/apps/stella.png"
|
2006-03-19 20:57:55 +00:00
|
|
|
|
2005-09-30 22:12:18 +00:00
|
|
|
install-strip: install
|
2008-03-09 15:30:27 +00:00
|
|
|
$(STRIP) stella$(EXEEXT)
|
2005-06-28 18:56:49 +00:00
|
|
|
|
|
|
|
uninstall:
|
2005-10-03 00:53:20 +00:00
|
|
|
rm -f "$(DESTDIR)$(BINDIR)/stella$(EXEEXT)"
|
2005-09-30 22:12:18 +00:00
|
|
|
rm -rf "$(DESTDIR)$(DOCDIR)/"
|
2006-11-09 03:06:42 +00:00
|
|
|
rm -f "$(DESTDIR)$(DATADIR)/applications/stella.desktop"
|
2011-12-27 01:57:06 +00:00
|
|
|
rm -f "$(DESTDIR)$(DATADIR)/icons/hicolor/16x16/apps/stella.png"
|
|
|
|
rm -f "$(DESTDIR)$(DATADIR)/icons/hicolor/22x22/apps/stella.png"
|
|
|
|
rm -f "$(DESTDIR)$(DATADIR)/icons/hicolor/24x24/apps/stella.png"
|
|
|
|
rm -f "$(DESTDIR)$(DATADIR)/icons/hicolor/32x32/apps/stella.png"
|
|
|
|
rm -f "$(DESTDIR)$(DATADIR)/icons/hicolor/48x48/apps/stella.png"
|
|
|
|
rm -f "$(DESTDIR)$(DATADIR)/icons/hicolor/64x64/apps/stella.png"
|
|
|
|
rm -f "$(DESTDIR)$(DATADIR)/icons/hicolor/128x128/apps/stella.png"
|
2005-09-30 22:12:18 +00:00
|
|
|
|
Added rule for recompiling the M6502.m4 script to the Makefile, because I'm
tired of doing it manually every time it changes.
Tweaked the handling of JSR, RTI and RTS commands, so they don't erroneously
mark associated addresses as CODE when in fact they're never actually
executed.
Several parts of the Distella code were marking areas as DATA, even though
it depending on knowing the values for the X and Y registers (which it
doesn't, as it's a static analysis). As such, these areas are now marked
as ROW instead, since that's as precise as a static analysis can do. The
processing blocks are left there, though, in case Distella is improved in
a future release.
All the above changes allow for better disassembly with less
'false positives' (ie, areas marked as CODE or DATA when they really aren't).
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2172 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2010-11-07 22:52:42 +00:00
|
|
|
# Special rule for M6502.ins, generated from m4 (there's probably a better way to do this ...)
|
|
|
|
src/emucore/M6502.ins: src/emucore/M6502.m4
|
|
|
|
m4 src/emucore/M6502.m4 > src/emucore/M6502.ins
|
|
|
|
|
2013-09-27 20:41:24 +00:00
|
|
|
# Special rule for windows icon stuff (there's probably a better way to do this ...)
|
|
|
|
src/windows/stella_icon.o: src/windows/stella.ico src/windows/stella.rc
|
2017-07-09 19:19:17 +00:00
|
|
|
windres --include-dir src/windows src/windows/stella.rc src/windows/stella_icon.o
|
|
|
|
|
2011-04-22 18:57:20 +00:00
|
|
|
.PHONY: deb bundle test install uninstall
|