mirror of
https://github.com/libSDL2pp/libSDL2pp.git
synced 2025-09-09 15:28:29 -04:00
Merge branch 'c++1y-checks' into use_optional
This commit is contained in:
commit
0ff5d3cf33
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
11
cmake/CheckCompile.cmake
Normal 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)
|
7
cmake/attribute_deprecated_test.cc
Normal file
7
cmake/attribute_deprecated_test.cc
Normal file
@ -0,0 +1,7 @@
|
||||
[[deprecated]]
|
||||
void f() {
|
||||
}
|
||||
|
||||
int main() {
|
||||
return 0;
|
||||
}
|
8
cmake/std_experimental_optional_test.cc
Normal file
8
cmake/std_experimental_optional_test.cc
Normal file
@ -0,0 +1,8 @@
|
||||
#include <experimental/optional>
|
||||
#include <string>
|
||||
|
||||
int main() {
|
||||
std::experimental::optional<std::string> o;
|
||||
|
||||
return !o;
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user