Merge branch 'c++1y-checks' into use_optional

This commit is contained in:
Dmitry Marakasov 2014-12-25 22:28:08 +03:00
commit 0ff5d3cf33
8 changed files with 81 additions and 3 deletions

View File

@ -2,10 +2,17 @@ language: cpp
compiler:
- gcc
- clang
env:
- SDL2PP_CSTD=c++11
- SDL2PP_CSTD=c++1y
before_install:
- sudo add-apt-repository --yes ppa:zoogie/sdl2-snapshots
- sudo add-apt-repository --yes ppa:ubuntu-toolchain-r/test
- sudo apt-get update -qq
- sudo apt-get install -qq cmake libsdl2-dev libsdl2-image-dev g++-4.8
- if [ "$CXX" = "g++" ]; then export CXX="g++-4.8" CC="gcc-4.8"; fi
script: cmake . -DSDL2PP_ENABLE_GUI_TEST=OFF -DCMAKE_INSTALL_PREFIX=`pwd`/_prefix -DSDL2PP_WITH_WERROR=YES && make && make test && make install
script:
- cmake . -DSDL2PP_ENABLE_GUI_TEST=OFF -DCMAKE_INSTALL_PREFIX=`pwd`/_prefix -DSDL2PP_WITH_WERROR=YES -DSDL2PP_CSTD=$SDL2PP_CSTD
- make
- make test
- make install

View File

@ -16,6 +16,8 @@ SET(SDL2PP_VERSION "${SDL2PP_MAJOR_VERSION}.${SDL2PP_MINOR_VERSION}.${SDL2PP_PAT
OPTION(SDL2PP_WITH_2_0_4 "Enable new functions available only in SDL2 2.0.4+" OFF)
OPTION(SDL2PP_WITH_WERROR "Make warnings fatal" OFF)
SET(SDL2PP_CSTD "c++11" CACHE STRING "Used c++ standard")
IF(CMAKE_SOURCE_DIR STREQUAL PROJECT_SOURCE_DIR)
OPTION(SDL2PP_WITH_IMAGE "Enable SDL2_image support" ON)
ELSE(CMAKE_SOURCE_DIR STREQUAL PROJECT_SOURCE_DIR)
@ -39,7 +41,7 @@ IF(MSVC)
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /W3")
SET(WERROR_FLAG "/WX")
ELSE(MSVC)
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -Wall -Wextra -pedantic")
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=${SDL2PP_CSTD} -Wall -Wextra -pedantic")
SET(WERROR_FLAG "-Werror")
ENDIF(MSVC)
@ -52,6 +54,19 @@ IF(SDL2PP_WITH_WERROR)
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${WERROR_FLAG}")
ENDIF(SDL2PP_WITH_WERROR)
# platform checks
INCLUDE(CheckCompile)
CHECK_COMPILE(
SDL2PP_WITH_EXPERIMENTAL_OPTIONAL
${PROJECT_SOURCE_DIR}/cmake/std_experimental_optional_test.cc
"Checking for experimental/optional header"
)
CHECK_COMPILE(
SDL2PP_WITH_DEPRECATED
${PROJECT_SOURCE_DIR}/cmake/attribute_deprecated_test.cc
"Checking for [[deprecated]] attribute"
)
# config.h
CONFIGURE_FILE(
SDL2pp/Config.hh.in
@ -82,6 +97,7 @@ SET(LIBRARY_HEADERS
SDL2pp/AudioSpec.hh
SDL2pp/ContainerRWops.hh
SDL2pp/Exception.hh
SDL2pp/Optional.hh
SDL2pp/Point.hh
SDL2pp/RWops.hh
SDL2pp/Rect.hh

View File

@ -30,5 +30,13 @@
#cmakedefine SDL2PP_WITH_IMAGE
#cmakedefine SDL2PP_WITH_2_0_4
#cmakedefine SDL2PP_WITH_EXPERIMENTAL_OPTIONAL
#cmakedefine SDL2PP_WITH_DEPRECATED
#if defined(SDL2PP_WITH_DEPRECATED)
# define SDL2PP_DEPRECATED [[deprecated]]
#else
# define SDL2PP_DEPRECATED
#endif
#endif

View File

@ -22,7 +22,26 @@
#ifndef SDL2PP_OPTIONAL_HH
#define SDL2PP_OPTIONAL_HH
#include <SDL2pp/libcpp_optional.hh>
#include <SDL2pp/Config.hh>
#if defined(SDL2PP_WITH_EXPERIMENTAL_OPTIONAL)
# include <experimental/optional>
namespace SDL2pp {
template<typename T>
using Optional = std::experimental::optional<T>;
using BadOptionalAccess = std::experimental::bad_optional_access;
constexpr std::experimental::nullopt_t NullOpt = std::experimental::nullopt;
}
#else
# include <SDL2pp/external/libcpp_optional.hh>
namespace SDL2pp {
@ -36,3 +55,5 @@ constexpr sdl2pp_libcpp_optional::nullopt_t NullOpt = sdl2pp_libcpp_optional::nu
}
#endif
#endif

11
cmake/CheckCompile.cmake Normal file
View File

@ -0,0 +1,11 @@
MACRO(CHECK_COMPILE RESULT_VAR SOURCE_FILE DESCRIPTION)
SET(SAVED_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${WERROR_FLAG}")
TRY_COMPILE(${RESULT_VAR} ${CMAKE_BINARY_DIR} ${SOURCE_FILE})
IF(${RESULT_VAR})
MESSAGE(STATUS "${DESCRIPTION}: yes")
ELSE(${RESULT_VAR})
MESSAGE(STATUS "${DESCRIPTION}: no")
ENDIF(${RESULT_VAR})
SET(CMAKE_CXX_FLAGS "${SAVED_CXX_FLAGS}")
ENDMACRO(CHECK_COMPILE)

View File

@ -0,0 +1,7 @@
[[deprecated]]
void f() {
}
int main() {
return 0;
}

View File

@ -0,0 +1,8 @@
#include <experimental/optional>
#include <string>
int main() {
std::experimental::optional<std::string> o;
return !o;
}