mirror of https://github.com/stella-emu/stella.git
Pull in gtest for unit tests.
This commit is contained in:
parent
a606d294a4
commit
2fff5ec118
|
@ -10,7 +10,9 @@ src/**/*.tlog
|
|||
out
|
||||
out.pgo
|
||||
out.pgen
|
||||
out.test
|
||||
stella
|
||||
stella-test
|
||||
stella-pgo
|
||||
stella-pgo-generate
|
||||
*.diff
|
||||
|
|
53
Makefile
53
Makefile
|
@ -47,17 +47,38 @@ else
|
|||
CFLAGS:= -O2
|
||||
endif
|
||||
|
||||
ifndef CXXFLAGS_TEST
|
||||
CXXFLAGS_TEST := $(CXXFLAGS)
|
||||
endif
|
||||
|
||||
ifndef CFLAGS_TEST
|
||||
CFLAGS_TEST := $(CFLAGS)
|
||||
endif
|
||||
|
||||
ifndef LDFLAGS_TEST
|
||||
LDFLAGS_TEST := $(LDFLAGS)
|
||||
endif
|
||||
|
||||
CXXFLAGS+= -Wall -Wextra -Wno-unused-parameter
|
||||
CFLAGS+= -Wall -Wextra -Wno-unused-parameter
|
||||
|
||||
CXXFLAGS_TEST+= -Wall -Wextra -Wno-unused-parameter
|
||||
CFLAGS_TEST+= -Wall -Wextra -Wno-unused-parameter
|
||||
|
||||
ifdef HAVE_GCC
|
||||
CXXFLAGS+= -Wno-multichar -Wunused -Woverloaded-virtual -Wnon-virtual-dtor -std=c++20
|
||||
CFLAGS+= -Wno-multichar -Wunused
|
||||
|
||||
CXXFLAGS_TEST+= -Wno-multichar -Wunused -Woverloaded-virtual -Wnon-virtual-dtor -std=c++20
|
||||
CFLAGS_TEST+= -Wno-multichar -Wunused
|
||||
endif
|
||||
|
||||
ifdef HAVE_CLANG
|
||||
CXXFLAGS+= -Wno-multichar -Wunused -Woverloaded-virtual -Wnon-virtual-dtor -std=c++20
|
||||
CFLAGS+= -Wno-multichar -Wunused
|
||||
|
||||
CXXFLAGS_TEST+= -Wno-multichar -Wunused -Woverloaded-virtual -Wnon-virtual-dtor -std=c++20
|
||||
CFLAGS_TEST+= -Wno-multichar -Wunused
|
||||
endif
|
||||
|
||||
ifdef CLANG_WARNINGS
|
||||
|
@ -70,6 +91,9 @@ ifdef CLANG_WARNINGS
|
|||
|
||||
CXXFLAGS+= $(EXTRA_WARN)
|
||||
CFLAGS+= $(EXTRA_WARN)
|
||||
|
||||
CXXFLAGS_TEST+= $(EXTRA_WARN)
|
||||
CFLAGS_TEST+= $(EXTRA_WARN)
|
||||
endif
|
||||
|
||||
ifdef PROFILE
|
||||
|
@ -108,12 +132,14 @@ ifdef STELLA_BUILD_ROOT
|
|||
else
|
||||
OBJECT_ROOT := out
|
||||
endif
|
||||
OBJECT_ROOT_TEST := out.test
|
||||
OBJECT_ROOT_PROFILE_GENERERATE := out.pgen
|
||||
OBJECT_ROOT_PROFILE_USE := out.pgo
|
||||
|
||||
EXECUTABLE := stella$(EXEEXT)
|
||||
EXECUTABLE_PROFILE_GENERATE := stella-pgo-generate$(EXEEXT)
|
||||
EXECUTABLE_PROFILE_USE := stella-pgo$(EXEEXT)
|
||||
EXECUTABLE_TEST := stella-test$(EXEEXT)
|
||||
|
||||
PROFILE_DIR = $(CURDIR)/test/roms/profile
|
||||
PROFILE_OUT = $(PROFILE_DIR)/out
|
||||
|
@ -154,6 +180,9 @@ all: $(EXECUTABLE)
|
|||
|
||||
pgo: $(EXECUTABLE_PROFILE_USE)
|
||||
|
||||
test: $(EXECUTABLE_TEST)
|
||||
./$(EXECUTABLE_TEST)
|
||||
|
||||
######################################################################
|
||||
# Various minor settings
|
||||
######################################################################
|
||||
|
@ -195,6 +224,7 @@ DEPDIRS = $(addsuffix /$(DEPDIR),$(MODULE_DIRS))
|
|||
DEPFILES =
|
||||
|
||||
OBJ=$(addprefix $(OBJECT_ROOT)/,$(OBJS))
|
||||
OBJ_TEST=$(addprefix $(OBJECT_ROOT_TEST)/,$(OBJS_TEST))
|
||||
OBJ_PROFILE_GENERATE=$(addprefix $(OBJECT_ROOT_PROFILE_GENERERATE)/,$(OBJS))
|
||||
OBJ_PROFILE_USE=$(addprefix $(OBJECT_ROOT_PROFILE_USE)/,$(OBJS))
|
||||
|
||||
|
@ -202,6 +232,9 @@ OBJ_PROFILE_USE=$(addprefix $(OBJECT_ROOT_PROFILE_USE)/,$(OBJS))
|
|||
$(EXECUTABLE): $(OBJ)
|
||||
$(LD) $(LDFLAGS) $(PRE_OBJS_FLAGS) $+ $(POST_OBJS_FLAGS) $(LIBS) $(PROF) -o $@
|
||||
|
||||
$(EXECUTABLE_TEST): $(OBJ_TEST)
|
||||
$(LD) $(LDFLAGS_TEST) $(PRE_OBJS_FLAGS) $+ $(POST_OBJS_FLAGS) $(LIBS) -lgtest -lgtest_main -o $@
|
||||
|
||||
$(EXECUTABLE_PROFILE_GENERATE): $(OBJ_PROFILE_GENERATE)
|
||||
$(LD) $(LDFLAGS_PROFILE_GENERATE) $(PRE_OBJS_FLAGS) $+ $(POST_OBJS_FLAGS) $(LIBS) $(PROF) -o $@
|
||||
|
||||
|
@ -216,7 +249,7 @@ clean:
|
|||
-$(RM) -fr \
|
||||
$(OBJECT_ROOT) $(OBJECT_ROOT_PROFILE_GENERERATE) $(OBJECT_ROOT_PROFILE_USE) \
|
||||
$(EXECUTABLE) $(EXECUTABLE_PROFILE_GENERATE) $(EXECUTABLE_PROFILE_USE) \
|
||||
$(PROFILE_OUT) $(PROFILE_STAMP)
|
||||
$(OBJECT_ROOT_TEST) $(PROFILE_OUT) $(PROFILE_STAMP)
|
||||
|
||||
.PHONY: all clean dist distclean
|
||||
|
||||
|
@ -244,6 +277,16 @@ $(OBJECT_ROOT)/%.o: %.cxx
|
|||
$(merge_dep)
|
||||
|
||||
$(OBJECT_ROOT)/%.o: %.c
|
||||
$(create_dir)
|
||||
$(CC) $(CXX_UPDATE_DEP_FLAG) $(CFLAGS_TEST) $(CPPFLAGS) -c $(<) -o $@
|
||||
$(merge_dep)
|
||||
|
||||
$(OBJECT_ROOT_TEST)/%.o: %.cxx
|
||||
$(create_dir)
|
||||
$(CXX) $(CXX_UPDATE_DEP_FLAG) $(CXXFLAGS_TEST) $(CPPFLAGS) -c $(<) -o $@
|
||||
$(merge_dep)
|
||||
|
||||
$(OBJECT_ROOT_TEST)/%.o: %.c
|
||||
$(create_dir)
|
||||
$(CC) $(CXX_UPDATE_DEP_FLAG) $(CFLAGS) $(CPPFLAGS) -c $(<) -o $@
|
||||
$(merge_dep)
|
||||
|
@ -281,6 +324,14 @@ $(OBJECT_ROOT)/%.o: %.c
|
|||
$(create_dir)
|
||||
$(CC) $(CXX_UPDATE_DEP_FLAG) $(CFLAGS) $(CPPFLAGS) -c $(<) -o $@
|
||||
|
||||
$(OBJECT_ROOT_TEST)/%.o: %.cxx
|
||||
$(create_dir)
|
||||
$(CXX) $(CXX_UPDATE_DEP_FLAG) $(CXXFLAGS_TEST) $(CPPFLAGS) -c $(<) -o $@
|
||||
|
||||
$(OBJECT_ROOT_TEST)/%.o: %.c
|
||||
$(create_dir)
|
||||
$(CC) $(CXX_UPDATE_DEP_FLAG) $(CFLAGS_TEST) $(CPPFLAGS) -c $(<) -o $@
|
||||
|
||||
$(OBJECT_ROOT_PROFILE_GENERERATE)/%.o: %.cxx
|
||||
$(create_dir)
|
||||
$(CXX) $(CXX_UPDATE_DEP_FLAG) $(CXXFLAGS_PROFILE_GENERATE) $(CPPFLAGS) -c $(<) -o $@
|
||||
|
|
|
@ -4,7 +4,9 @@
|
|||
# contains the module name, a trick we use so we can keep multiple different
|
||||
# module object lists, one for each module.
|
||||
MODULE_OBJS-$(MODULE) := $(MODULE_OBJS)
|
||||
MODULE_TEST_OBJS-$(MODULE) := $(MODULE_TEST_OBJS)
|
||||
|
||||
# If not building as a plugin, add the object files to the main OBJS list
|
||||
#OBJS += $(MODULE_LIB-$(MODULE))
|
||||
OBJS += $(MODULE_OBJS)
|
||||
OBJS_TEST := $(MODULE_TEST_OBJS)
|
||||
|
|
|
@ -13,6 +13,16 @@
|
|||
# use environment vars if set
|
||||
CXXFLAGS="$CXXFLAGS $CPPFLAGS"
|
||||
|
||||
if test -n "$CXXFLAGS_TEST"; then
|
||||
CXXFLAGS_TEST="$CXXFLAGS_TEST $CPPFLAGS"
|
||||
else
|
||||
CXXFLAGS_TEST="$CXXFLAGS"
|
||||
fi
|
||||
|
||||
if test -z "$LDFLAGS_TEST"; then
|
||||
LDFLAGS_TEST="$LDFLAGS"
|
||||
fi
|
||||
|
||||
# default option behaviour yes/no
|
||||
_build_gui=yes
|
||||
_build_windowed=yes
|
||||
|
@ -225,6 +235,7 @@ Optional Libraries:
|
|||
--with-sdl-prefix=DIR Prefix where the sdl2-config script is installed (optional)
|
||||
--with-libpng-prefix=DIR Prefix where libpng is installed (optional)
|
||||
--with-zlib-prefix=DIR Prefix where zlib is installed (optional)
|
||||
--with-gtest-prefix=DIR Prefix where googletest is installed (optional)
|
||||
|
||||
Some influential environment variables:
|
||||
LDFLAGS linker flags, e.g. -L<lib dir> if you have libraries in a
|
||||
|
@ -233,6 +244,8 @@ Some influential environment variables:
|
|||
CXXFLAGS C++ compiler flags
|
||||
CPPFLAGS C++ preprocessor flags, e.g. -I<include dir> if you have
|
||||
headers in a nonstandard directory <include dir>
|
||||
LDFLAGS_TEST linker flags for unit tests
|
||||
CXXFLAGS_TEST C++ compiler flags for unit tests
|
||||
|
||||
EOF
|
||||
exit 0
|
||||
|
@ -280,6 +293,11 @@ for ac_option in $@; do
|
|||
_prefix=`echo $ac_option | cut -d '=' -f 2`
|
||||
ZLIB_CFLAGS="-I$_prefix/include"
|
||||
ZLIB_LIBS="-L$_prefix/lib"
|
||||
;;
|
||||
--with-gtest-prefix=*)
|
||||
_prefix=`echo $ac_option | cut -d '=' -f 2`
|
||||
CXXFLAGS_TEST="$CXXFLAGS_TEST -I$_prefix/include"
|
||||
LDFLAGS_TEST="$LDFLAGS_TEST -L$_prefix/lib"
|
||||
;;
|
||||
--host=*)
|
||||
_host=`echo $ac_option | cut -d '=' -f 2`
|
||||
|
@ -841,6 +859,9 @@ case $_host_os in
|
|||
INCLUDES="$INCLUDES -I$SRC_OS/unix"
|
||||
if test "$have_clang" == yes; then
|
||||
CXXFLAGS="$CXXFLAGS -Wno-poison-system-directories"
|
||||
if test -n "$CXXFLAGS_TEST"; then
|
||||
CXXFLAGS_TEST="$CXXFLAGS_TEST -Wno-poison-system-directories"
|
||||
fi
|
||||
fi
|
||||
_libsqlite3=no
|
||||
;;
|
||||
|
@ -954,6 +975,7 @@ cat > config.mak << EOF
|
|||
CC := $CC
|
||||
CXX := $CXX
|
||||
CXXFLAGS := $CXXFLAGS
|
||||
CXXFLAGS_TEST := $CXXFLAGS_TEST
|
||||
LD := $LD
|
||||
LIBS += $LIBS
|
||||
RANLIB := $_ranlib
|
||||
|
@ -991,6 +1013,7 @@ INCLUDES += $INCLUDES
|
|||
OBJS += $OBJS
|
||||
DEFINES += $DEFINES
|
||||
LDFLAGS += $LDFLAGS
|
||||
LDFLAGS_TEST += $LDFLAGS_TEST
|
||||
$_config_mk_data
|
||||
EOF
|
||||
|
||||
|
|
|
@ -0,0 +1,20 @@
|
|||
//============================================================================
|
||||
//
|
||||
// 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
|
||||
//
|
||||
// Copyright (c) 1995-2024 by Bradford W. Mott, Stephen Anthony
|
||||
// and the Stella Team
|
||||
//
|
||||
// See the file "License.txt" for information on usage and redistribution of
|
||||
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
||||
//============================================================================
|
||||
|
||||
#include <gtest/gtest.h>
|
||||
|
||||
TEST(HelloWorld, Passes) {}
|
|
@ -5,8 +5,12 @@ MODULE_OBJS = \
|
|||
src/emucore/elf/ElfLinker.o \
|
||||
src/emucore/elf/ElfUtil.o
|
||||
|
||||
MODULE_TEST_OBJS = \
|
||||
src/emucore/elf/ElfUtil.o \
|
||||
src/emucore/elf/EncodingTest.o
|
||||
|
||||
MODULE_DIRS += \
|
||||
src/emucore/elf
|
||||
src/emucore/elf/EncodingTest.o
|
||||
|
||||
# Include common rules
|
||||
include $(srcdir)/common.rules
|
||||
|
|
Loading…
Reference in New Issue