Index: Makefile =================================================================== --- Makefile (revision 11150) +++ Makefile (working copy) @@ -54,7 +54,7 @@ # ONLY_TEST=0 Only build the test suite. # STRICT=0 Treat warnings as errors. # MODERN=0 Pass more modern compiler options. -# STDCXX=c++11 C++ standard version (only for GCC and clang) +# STDCXX=c++14 C++ standard version (only for GCC and clang) # CHECKED=0 Enable run-time assertions. # CHECKED_ADDRESS=0 Enable address sanitizer # CHECKED_UNDEFINED=0 Enable undefined behaviour sanitizer @@ -629,7 +629,7 @@ endif CPPCHECK_FLAGS += -j $(NUMTHREADS) -CPPCHECK_FLAGS += --std=c99 --std=c++11 +CPPCHECK_FLAGS += --std=c99 --std=c++14 CPPCHECK_FLAGS += --quiet CPPCHECK_FLAGS += --enable=warning --inline-suppr --template='{file}:{line}: warning: {severity}: {message} [{id}]' CPPCHECK_FLAGS += --suppress=missingIncludeSystem Index: build/autotools/configure.ac =================================================================== --- build/autotools/configure.ac (revision 11150) +++ build/autotools/configure.ac (working copy) @@ -288,16 +288,11 @@ AC_PROG_CC_STDC #AC_PROG_CC_C99 -# We need C++11 support +# We need C++14 support AX_CXX_COMPILE_STDCXX(17, [noext], [optional]) AS_IF([test "x$HAVE_CXX17" != "x1"], [ - AX_CXX_COMPILE_STDCXX(14, [noext], [optional]) - AS_IF([test "x$HAVE_CXX14" != "x1"], - [ - AX_CXX_COMPILE_STDCXX(11, [noext], [mandatory]) - ],[] - ) + AX_CXX_COMPILE_STDCXX(14, [noext], [mandatory]) ],[] ) Index: build/make/config-afl.mk =================================================================== --- build/make/config-afl.mk (revision 11150) +++ build/make/config-afl.mk (working copy) @@ -12,13 +12,9 @@ else ifeq ($(shell printf '\n' > bin/empty.cpp ; if $(CXX) -std=c++14 -c bin/empty.cpp -o bin/empty.out > /dev/null 2>&1 ; then echo 'c++14' ; fi ), c++14) CXXFLAGS_STDCXX = -std=c++14 -else -ifeq ($(shell printf '\n' > bin/empty.cpp ; if $(CXX) -std=c++11 -c bin/empty.cpp -o bin/empty.out > /dev/null 2>&1 ; then echo 'c++11' ; fi ), c++11) -CXXFLAGS_STDCXX = -std=c++11 endif endif endif -endif CFLAGS_STDC = -std=c99 CXXFLAGS += $(CXXFLAGS_STDCXX) CFLAGS += $(CFLAGS_STDC) Index: build/make/config-clang.mk =================================================================== --- build/make/config-clang.mk (revision 11150) +++ build/make/config-clang.mk (working copy) @@ -12,13 +12,9 @@ else ifeq ($(shell printf '\n' > bin/empty.cpp ; if $(CXX) -std=c++14 -c bin/empty.cpp -o bin/empty.out > /dev/null 2>&1 ; then echo 'c++14' ; fi ), c++14) CXXFLAGS_STDCXX = -std=c++14 -else -ifeq ($(shell printf '\n' > bin/empty.cpp ; if $(CXX) -std=c++11 -c bin/empty.cpp -o bin/empty.out > /dev/null 2>&1 ; then echo 'c++11' ; fi ), c++11) -CXXFLAGS_STDCXX = -std=c++11 endif endif endif -endif CFLAGS_STDC = -std=c99 CXXFLAGS += $(CXXFLAGS_STDCXX) CFLAGS += $(CFLAGS_STDC) Index: build/make/config-djgpp.mk =================================================================== --- build/make/config-djgpp.mk (revision 11150) +++ build/make/config-djgpp.mk (working copy) @@ -6,7 +6,7 @@ # Note that we are using GNU extensions instead of 100% standards-compliant # mode, because otherwise DJGPP-specific headers/functions are unavailable. -CXXFLAGS_STDCXX = -std=gnu++11 +CXXFLAGS_STDCXX = -std=gnu++14 CFLAGS_STDC = -std=gnu99 CXXFLAGS += $(CXXFLAGS_STDCXX) CFLAGS += $(CFLAGS_STDC) Index: build/make/config-emscripten.mk =================================================================== --- build/make/config-emscripten.mk (revision 11150) +++ build/make/config-emscripten.mk (working copy) @@ -14,13 +14,9 @@ else ifeq ($(shell printf '\n' > bin/empty.cpp ; if $(CXX) -std=c++14 -c bin/empty.cpp -o bin/empty.out > /dev/null 2>&1 ; then echo 'c++14' ; fi ), c++14) CXXFLAGS_STDCXX = -std=c++14 -else -ifeq ($(shell printf '\n' > bin/empty.cpp ; if $(CXX) -std=c++11 -c bin/empty.cpp -o bin/empty.out > /dev/null 2>&1 ; then echo 'c++11' ; fi ), c++11) -CXXFLAGS_STDCXX = -std=c++11 endif endif endif -endif CFLAGS_STDC = -std=c99 CXXFLAGS += $(CXXFLAGS_STDCXX) CFLAGS += $(CFLAGS_STDC) Index: build/make/config-gcc.mk =================================================================== --- build/make/config-gcc.mk (revision 11150) +++ build/make/config-gcc.mk (working copy) @@ -12,13 +12,9 @@ else ifeq ($(shell printf '\n' > bin/empty.cpp ; if $(CXX) -std=c++14 -c bin/empty.cpp -o bin/empty.out > /dev/null 2>&1 ; then echo 'c++14' ; fi ), c++14) CXXFLAGS_STDCXX = -std=c++14 -else -ifeq ($(shell printf '\n' > bin/empty.cpp ; if $(CXX) -std=c++11 -c bin/empty.cpp -o bin/empty.out > /dev/null 2>&1 ; then echo 'c++11' ; fi ), c++11) -CXXFLAGS_STDCXX = -std=c++11 endif endif endif -endif CFLAGS_STDC = -std=c99 CXXFLAGS += $(CXXFLAGS_STDCXX) CFLAGS += $(CFLAGS_STDC) Index: build/make/config-generic.mk =================================================================== --- build/make/config-generic.mk (revision 11150) +++ build/make/config-generic.mk (working copy) @@ -4,7 +4,7 @@ LD ?= c++ AR = ar -CXXFLAGS_STDCXX = -std=c++11 +CXXFLAGS_STDCXX = -std=c++14 CFLAGS_STDC = -std=c99 CXXFLAGS += $(CXXFLAGS_STDCXX) CFLAGS += $(CFLAGS_STDC) Index: build/make/config-mingw64-win32.mk =================================================================== --- build/make/config-mingw64-win32.mk (revision 11150) +++ build/make/config-mingw64-win32.mk (working copy) @@ -4,7 +4,7 @@ LD = i686-w64-mingw32-g++$(MINGW_FLAVOUR) AR = i686-w64-mingw32-ar$(MINGW_FLAVOUR) -CXXFLAGS_STDCXX = -std=c++11 +CXXFLAGS_STDCXX = -std=c++14 CFLAGS_STDC = -std=c99 CXXFLAGS += $(CXXFLAGS_STDCXX) CFLAGS += $(CFLAGS_STDC) Index: build/make/config-mingw64-win64.mk =================================================================== --- build/make/config-mingw64-win64.mk (revision 11150) +++ build/make/config-mingw64-win64.mk (working copy) @@ -4,7 +4,7 @@ LD = x86_64-w64-mingw32-g++$(MINGW_FLAVOUR) AR = x86_64-w64-mingw32-ar$(MINGW_FLAVOUR) -CXXFLAGS_STDCXX = -std=c++11 +CXXFLAGS_STDCXX = -std=c++14 CFLAGS_STDC = -std=c99 CXXFLAGS += $(CXXFLAGS_STDCXX) CFLAGS += $(CFLAGS_STDC) Index: build/make/config-mingw64-winrt-amd64.mk =================================================================== --- build/make/config-mingw64-winrt-amd64.mk (revision 11150) +++ build/make/config-mingw64-winrt-amd64.mk (working copy) @@ -4,7 +4,7 @@ LD = x86_64-w64-mingw32-g++$(MINGW_FLAVOUR) AR = x86_64-w64-mingw32-ar$(MINGW_FLAVOUR) -CXXFLAGS_STDCXX = -std=c++11 +CXXFLAGS_STDCXX = -std=c++14 CFLAGS_STDC = -std=c99 CXXFLAGS += $(CXXFLAGS_STDCXX) CFLAGS += $(CFLAGS_STDC) Index: build/make/config-mingw64-winrt-x86.mk =================================================================== --- build/make/config-mingw64-winrt-x86.mk (revision 11150) +++ build/make/config-mingw64-winrt-x86.mk (working copy) @@ -4,7 +4,7 @@ LD = i686-w64-mingw32-g++$(MINGW_FLAVOUR) AR = i686-w64-mingw32-ar$(MINGW_FLAVOUR) -CXXFLAGS_STDCXX = -std=c++11 +CXXFLAGS_STDCXX = -std=c++14 CFLAGS_STDC = -std=c99 CXXFLAGS += $(CXXFLAGS_STDCXX) CFLAGS += $(CFLAGS_STDC) Index: build/make/config-standard.mk =================================================================== --- build/make/config-standard.mk (revision 11150) +++ build/make/config-standard.mk (working copy) @@ -4,7 +4,7 @@ LD ?= c++ AR = ar -CXXFLAGS_STDCXX = -std=c++11 +CXXFLAGS_STDCXX = -std=c++14 CFLAGS_STDC = -std=c99 CXXFLAGS += $(CXXFLAGS_STDCXX) CFLAGS += $(CFLAGS_STDC) Index: common/CompilerDetect.h =================================================================== --- common/CompilerDetect.h (revision 11150) +++ common/CompilerDetect.h (working copy) @@ -51,8 +51,8 @@ #define MPT_GCC_AT_LEAST(major,minor,patch) (MPT_COMPILER_GCC_VERSION >= MPT_COMPILER_MAKE_VERSION3((major),(minor),(patch))) #define MPT_GCC_BEFORE(major,minor,patch) (MPT_COMPILER_GCC_VERSION < MPT_COMPILER_MAKE_VERSION3((major),(minor),(patch))) -#if MPT_GCC_BEFORE(4,8,0) -#error "GCC version 4.8 required" +#if MPT_GCC_BEFORE(5,1,0) +#error "GCC version 5.1 required" #endif #elif defined(_MSC_VER) @@ -136,7 +136,7 @@ #elif (__cplusplus >= 201402) #define MPT_CXX 14 #else -#define MPT_CXX 11 +#define MPT_CXX 14 #endif #elif MPT_COMPILER_MSVC @@ -147,15 +147,15 @@ #elif (_MSVC_LANG >= 201402) #define MPT_CXX 14 #else -#define MPT_CXX 11 +#define MPT_CXX 14 #endif #else -#define MPT_CXX 11 +#define MPT_CXX 14 #endif #else -#define MPT_CXX 11 +#define MPT_CXX 14 #endif Index: common/Endianness.h =================================================================== --- common/Endianness.h (revision 11150) +++ common/Endianness.h (working copy) @@ -85,7 +85,7 @@ -#if MPT_PLATFORM_ENDIAN_KNOWN && MPT_CXX_AT_LEAST(14) +#if MPT_PLATFORM_ENDIAN_KNOWN //#define MPT_ENDIAN_IS_CONSTEXPR 1 // For now, we do not want to use constexpr endianness functions and types. // It bloats the binary size somewhat (possibly because of either the zeroing Index: common/mptAlloc.h =================================================================== --- common/mptAlloc.h (revision 11150) +++ common/mptAlloc.h (working copy) @@ -79,19 +79,9 @@ -#if MPT_CXX_AT_LEAST(14) namespace mpt { using std::make_unique; } // namespace mpt -#else -namespace mpt { -template -std::unique_ptr make_unique(Args&&... args) -{ - return std::unique_ptr(new T(std::forward(args)...)); -} -} // namespace mpt -#endif Index: common/mptBaseTypes.h =================================================================== --- common/mptBaseTypes.h (revision 11150) +++ common/mptBaseTypes.h (working copy) @@ -22,9 +22,6 @@ #include #include -#if MPT_GCC_BEFORE(4,9,0) -#include -#endif #include @@ -91,11 +88,7 @@ namespace mpt { -#if MPT_GCC_BEFORE(4,9,0) -typedef ::max_align_t max_align_t; -#else typedef std::max_align_t max_align_t; -#endif } // namespace mpt Index: common/mptMemory.h =================================================================== --- common/mptMemory.h (revision 11150) +++ common/mptMemory.h (working copy) @@ -132,7 +132,7 @@ inline void MemsetZero(T &a) { static_assert(std::is_pointer::value == false, "Won't memset pointers."); -#if MPT_GCC_BEFORE(5,1,0) || (MPT_COMPILER_CLANG && defined(__GLIBCXX__)) +#if MPT_COMPILER_CLANG && defined(__GLIBCXX__) MPT_STATIC_ASSERT(std::is_standard_layout::value); MPT_STATIC_ASSERT(std::is_trivial::value || mpt::is_binary_safe::value); // approximation #else // default @@ -158,7 +158,7 @@ MPT_FORCEINLINE Tdst bit_cast(const Tsrc & src) noexcept { MPT_STATIC_ASSERT(sizeof(Tdst) == sizeof(Tsrc)); -#if MPT_GCC_BEFORE(5,1,0) || (MPT_COMPILER_CLANG && defined(__GLIBCXX__)) +#if MPT_COMPILER_CLANG && defined(__GLIBCXX__) MPT_STATIC_ASSERT(std::is_trivial::value); // approximation MPT_STATIC_ASSERT(std::is_trivial::value); // approximation #else // default Index: libopenmpt/dox/changelog.md =================================================================== --- libopenmpt/dox/changelog.md (revision 11150) +++ libopenmpt/dox/changelog.md (working copy) @@ -7,6 +7,9 @@ ### libopenmpt 0.5.0-pre + * [**Regression**] Support for C++11 has been removed. C++14 is now required. + * [**Regression**] Support for GCC 4.8, 4.9 has been removed. + ### libopenmpt 0.4.0 * [**New**] libopenmpt now includes emulation of the OPL chip and thus plays Index: libopenmpt/dox/dependencies.md =================================================================== --- libopenmpt/dox/dependencies.md (revision 11150) +++ libopenmpt/dox/dependencies.md (working copy) @@ -11,15 +11,15 @@ * Supported compilers for building libopenmpt: * **Microsoft Visual Studio 2015** or higher, running on a x86-64 build system (other target systems are supported) - * **GCC 4.8** or higher + * **GCC 5.1** or higher * **Clang 3.6** or higher - * **MinGW-W64 4.8** or higher (it is recommended to preferably use + * **MinGW-W64 5.1** or higher (it is recommended to preferably use posix threading model as opposed to win32 threading model, or at least have mingw-std-threads available otherwise) * **emscripten 1.38.5** or higher * **DJGPP GCC 7.2** or higher - * any other **C++11 compliant** compiler (full standard compliant mode is - known to work with GCC >= 5.1 and Clang) + * any other **C++14 compliant** compiler (full standard compliant mode is + known to work with GCC >= 5.1 and Clang >= 3.6) libopenmpt makes the following assumptions about the C++ implementation used for building: @@ -75,11 +75,11 @@ * Supported compilers for building openmpt123: * **Microsoft Visual Studio 2015** or higher, running on a x86-64 build system (other target systems are supported) - * **GCC 4.8** or higher + * **GCC 5.1** or higher * **Clang 3.6** or higher - * **MinGW-W64 4.8** or higher + * **MinGW-W64 5.1** or higher * **DJGPP GCC 7.2** or higher - * any **C++11 compliant** compiler + * any **C++14 compliant** compiler * Live sound output requires one of: * **PulseAudio** * **SDL 2** Index: libopenmpt/dox/quickstart.md =================================================================== --- libopenmpt/dox/quickstart.md (revision 11150) +++ libopenmpt/dox/quickstart.md (working copy) @@ -7,7 +7,7 @@ 1. Grab a `libopenmpt-VERSION.autotools.tar.gz` tarball. 2. Get dependencies: - - **gcc >= 4.8** or **clang >= 3.6** + - **gcc >= 5.1** or **clang >= 3.6** - **pkg-config >= 0.24** - **zlib** - **libogg**, **libvorbis**, **libvorbisfile** @@ -42,7 +42,7 @@ 1. Get dependencies: - **GNU make** - - **gcc >= 4.8** or **clang >= 3.6** + - **gcc >= 5.1** or **clang >= 3.6** - **pkg-config** - **zlib** - **libogg**, **libvorbis**, **libvorbisfile** Index: libopenmpt/libopenmpt_version.h =================================================================== --- libopenmpt/libopenmpt_version.h (revision 11150) +++ libopenmpt/libopenmpt_version.h (working copy) @@ -21,7 +21,7 @@ /*! \brief libopenmpt patch version number */ #define OPENMPT_API_VERSION_PATCH 0 /*! \brief libopenmpt pre-release tag */ -#define OPENMPT_API_VERSION_PREREL "-pre.1" +#define OPENMPT_API_VERSION_PREREL "-pre.2" /*! \brief libopenmpt pre-release flag */ #define OPENMPT_API_VERSION_IS_PREREL 1 Index: libopenmpt/libopenmpt_version.mk =================================================================== --- libopenmpt/libopenmpt_version.mk (revision 11150) +++ libopenmpt/libopenmpt_version.mk (working copy) @@ -1,7 +1,7 @@ LIBOPENMPT_VERSION_MAJOR=0 LIBOPENMPT_VERSION_MINOR=5 LIBOPENMPT_VERSION_PATCH=0 -LIBOPENMPT_VERSION_PREREL=-pre.1 +LIBOPENMPT_VERSION_PREREL=-pre.2 LIBOPENMPT_LTVER_CURRENT=2 LIBOPENMPT_LTVER_REVISION=0