mirror of
https://github.com/aantron/better-enums.git
synced 2025-12-08 01:36:44 +08:00
GCC 5.2 is a "bugfix" release over GCC 5.1 - not sure why the GCC team updated the minor version number. Package managers seem to have dropped GCC 5.1 and replaced it with 5.2, and I'm guessing usage of 5.1 is discouraged. The testing code has been updated accordingly. Travis is still distributing GCC 5.1 as of the time of this writing.
165 lines
4.6 KiB
Makefile
165 lines
4.6 KiB
Makefile
# Run "make" for quick builds while developing.
|
|
# Run "make default-all" before submitting a pull request.
|
|
# Run "make clean" to clean up.
|
|
# See doc/CONTRIBUTING.md for full instructions.
|
|
|
|
CXXTEST_GENERATED := cxxtest/tests.cc
|
|
|
|
UNIX_MAKE_COMMAND := make
|
|
WINDOWS_MAKE_COMMAND := "MSBuild.exe \"Better Enums Testing.sln\""
|
|
|
|
UNIX_OUTPUT_DIRECTORY := .
|
|
WINDOWS_OUTPUT_DIRECTORY := Debug
|
|
|
|
ifdef COMSPEC
|
|
WIN32 := true
|
|
endif
|
|
ifdef ComSpec
|
|
WIN32 := true
|
|
endif
|
|
|
|
ifndef WIN32
|
|
|
|
DEFAULT_MAKE_COMMAND := $(UNIX_MAKE_COMMAND)
|
|
DEFAULT_OUTPUT_DIRECTORY := $(UNIX_OUTPUT_DIRECTORY)
|
|
define PATH_FIX
|
|
@true
|
|
endef
|
|
SUFFIX :=
|
|
CXXTESTGEN := cxxtestgen
|
|
|
|
else
|
|
|
|
DEFAULT_MAKE_COMMAND := $(WINDOWS_MAKE_COMMAND)
|
|
DEFAULT_OUTPUT_DIRECTORY := $(WINDOWS_OUTPUT_DIRECTORY)
|
|
define PATH_FIX
|
|
sed 's!include "/!include "C:/cygwin/!g' $1 > $$$$ && mv $$$$ $1
|
|
endef
|
|
SUFFIX := .exe
|
|
CXXTESTGEN := python `which cxxtestgen | sed s!/cygdrive/c!c:/!`
|
|
|
|
endif
|
|
|
|
DEFAULTS := \
|
|
TITLE=default \
|
|
MAKE_COMMAND=$(DEFAULT_MAKE_COMMAND) \
|
|
OUTPUT_DIRECTORY=$(DEFAULT_OUTPUT_DIRECTORY)
|
|
|
|
# Builds one configuration with the system compiler. This will be either a
|
|
# regular C++11 or C++98 build (no constexpr to_string and no strict
|
|
# conversions).
|
|
.PHONY : default
|
|
default : examples
|
|
make $(DEFAULTS) one-configuration
|
|
|
|
# Builds all configurations with the system compiler.
|
|
.PHONY : default-all
|
|
default-all : examples
|
|
make $(DEFAULTS) all-configurations
|
|
|
|
.PHONY : examples
|
|
examples :
|
|
make -C ../doc examples
|
|
|
|
# Example: make COMPILER=clang++36 unix
|
|
.PHONY : unix
|
|
unix :
|
|
make TITLE=$(COMPILER) CMAKE_OPTIONS="-DCMAKE_CXX_COMPILER=$(COMPILER)" \
|
|
MAKE_COMMAND=$(UNIX_MAKE_COMMAND) \
|
|
OUTPUT_DIRECTORY=$(UNIX_OUTPUT_DIRECTORY) all-configurations
|
|
|
|
# Example: make TITLE=vc2013 COMPILER="Visual Studio 12 2013" ms
|
|
.PHONY : ms
|
|
ms :
|
|
make TITLE=$(TITLE) CMAKE_OPTIONS="-G \\\"$(COMPILER)\\\"" \
|
|
MAKE_COMMAND=$(WINDOWS_MAKE_COMMAND) \
|
|
OUTPUT_DIRECTORY=$(WINDOWS_OUTPUT_DIRECTORY) all-configurations
|
|
|
|
# Expects three variables to be defined:
|
|
# CMAKE_OPTIONS:
|
|
# First, the compiler:
|
|
# - Empty for a "default" build.
|
|
# - -G "Visual Studio XX YYYY" to select a specific Microsoft compiler.
|
|
# - -DCMAKE_CXX_COMPILER=AAA to select a specific Unix compiler binary.
|
|
# Configuration selection (e.g. -DCONFIGURATION=CXX98) also go here.
|
|
# TITLE:
|
|
# The build title (subdirectory). Some combination of compiler/configuration.
|
|
# MAKE_COMMAND:
|
|
# Either make or msbuild "Better Enums Testing.sln"
|
|
# OUTPUT_DIRECTORY:
|
|
# Path to generated binaries relative to build directory. Either "." or
|
|
# "Debug".
|
|
.PHONY : one-configuration
|
|
one-configuration : $(CXXTEST_GENERATED)
|
|
mkdir -p build/$(TITLE)
|
|
cd build/$(TITLE) && cmake $(CMAKE_OPTIONS) ../.. && $(MAKE_COMMAND)
|
|
rm -rf build/$(TITLE)/bin
|
|
[ -f build/$(TITLE)/do-not-test ] || \
|
|
( ln -s $(OUTPUT_DIRECTORY) build/$(TITLE)/bin && \
|
|
make BIN=build/$(TITLE)/bin run-tests )
|
|
|
|
.PHONY : run-tests
|
|
run-tests :
|
|
$(BIN)/cxxtest
|
|
@for FILE in $(BIN)/example-*$(SUFFIX) ; \
|
|
do \
|
|
EXAMPLE=$$(basename $$FILE | sed s/\.exe$$// | sed s/^example-//) ; \
|
|
$$FILE | sed 's/\r$$//' | cmp - expect/$$EXAMPLE ; \
|
|
RESULT=$$? ; \
|
|
if [ $$RESULT -ne 0 ] ; \
|
|
then \
|
|
echo \'$$FILE\' produced bad output ; \
|
|
exit $$RESULT ; \
|
|
fi ; \
|
|
done
|
|
@echo Example program output matches expected output
|
|
|
|
.PHONY : all-configurations
|
|
all-configurations :
|
|
make TITLE=$(TITLE)-c++11 \
|
|
CMAKE_OPTIONS="$(CMAKE_OPTIONS) -DCONFIGURATION=CONSTEXPR" \
|
|
one-configuration
|
|
make TITLE=$(TITLE)-full-constexpr \
|
|
CMAKE_OPTIONS="$(CMAKE_OPTIONS) -DCONFIGURATION=FULL_CONSTEXPR" \
|
|
one-configuration
|
|
make TITLE=$(TITLE)-enum-class \
|
|
CMAKE_OPTIONS="$(CMAKE_OPTIONS) -DCONFIGURATION=STRICT_CONVERSION" \
|
|
one-configuration
|
|
make TITLE=$(TITLE)-c++14 \
|
|
CMAKE_OPTIONS="$(CMAKE_OPTIONS) -DCONFIGURATION=CXX14" \
|
|
one-configuration
|
|
make TITLE=$(TITLE)-c++98 \
|
|
CMAKE_OPTIONS="$(CMAKE_OPTIONS) -DCONFIGURATION=CXX98" \
|
|
one-configuration
|
|
|
|
.PHONY : all-unix
|
|
all-unix : examples
|
|
make COMPILER=clang++36 unix
|
|
make COMPILER=g++52 unix
|
|
make COMPILER=g++46 unix
|
|
make COMPILER=g++47 unix
|
|
make COMPILER=g++43 unix
|
|
make COMPILER=g++48 unix
|
|
make COMPILER=g++49 unix
|
|
make COMPILER=g++44 unix
|
|
make COMPILER=g++45 unix
|
|
make COMPILER=clang++33 unix
|
|
make COMPILER=clang++34 unix
|
|
make COMPILER=clang++35 unix
|
|
|
|
.PHONY : all-ms
|
|
all-ms : examples
|
|
make TITLE=vc2015 COMPILER="Visual Studio 14 2015" ms
|
|
make TITLE=vc2008 COMPILER="Visual Studio 9 2008" ms
|
|
make TITLE=vc2010 COMPILER="Visual Studio 10 2010" ms
|
|
make TITLE=vc2012 COMPILER="Visual Studio 11 2012" ms
|
|
make TITLE=vc2013 COMPILER="Visual Studio 12 2013" ms
|
|
|
|
$(CXXTEST_GENERATED) : cxxtest/*.h
|
|
$(CXXTESTGEN) --error-printer -o $@ $^
|
|
$(call PATH_FIX,$@)
|
|
|
|
.PHONY : clean
|
|
clean :
|
|
rm -rf build $(CXXTEST_GENERATED)
|