From 92dc19d8a0eaea4aac6327490695420deb226218 Mon Sep 17 00:00:00 2001
From: Alec Thomas <alec@swapoff.org>
Date: Thu, 18 Oct 2012 13:21:06 -0400
Subject: Add C++11 feature checking to cmake.

---
 CMakeLists.txt | 28 ++++++++++++++++++++++++----
 1 file changed, 24 insertions(+), 4 deletions(-)

(limited to 'CMakeLists.txt')

diff --git a/CMakeLists.txt b/CMakeLists.txt
index bb94909..8075f23 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,6 +1,22 @@
 cmake_minimum_required(VERSION 2.8)
 project(EntityX)
-include_directories(.)
+include_directories(. ./c++11)
+
+# C++11 feature checks
+include(CheckCXX11Features.cmake)
+
+MACRO(REQUIRE FEATURE_NAME MESSAGE_STRING)
+    if (NOT DEFINED ${FEATURE_NAME})
+        message(FATAL_ERROR ${MESSAGE_STRING})
+    endif()
+ENDMACRO(REQUIRE)
+
+require(HAS_CXX11_AUTO "C++11 auto support is required")
+require(HAS_CXX11_NULLPTR "C++11 nullptr support is required")
+require(HAS_CXX11_RVALUE_REFERENCES "C++11 rvalue reference support is required")
+require(HAS_CXX11_CSTDINT_H "C++11 stdint support is required")
+require(HAS_CXX11_VARIADIC_TEMPLATES "C++11 variadic templates required")
+
 enable_testing()
 find_package(GTest REQUIRED)
 set(Boost_USE_STATIC_LIBS OFF)
@@ -9,13 +25,17 @@ set(Boost_USE_STATIC_RUNTIME OFF)
 #find_package(Boost REQUIRED COMPONENTS)
 find_package(Boost 1.36.0 REQUIRED COMPONENTS signals)
 
+set(CMAKE_CXX_FLAGS "-ansi -pedantic -Werror -Wall -Wextra -Wno-unused-parameter -Wno-error=unused-variable -std=c++11")
+set(CMAKE_CXX_FLAGS_DEBUG "-O0 -g")
+set(CMAKE_CXX_FLAGS_MINSIZEREL "-Os -DNDEBUG")
+set(CMAKE_CXX_FLAGS_RELEASE "-O2 -DNDEBUG")
+set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O2 -g")
+
+
 include_directories(
     ${Boost_INCLUDE_DIR}
     ${GTest_INCLUDE_DIR}
     )
-add_definitions(
-    -ansi -pedantic -Werror -Wall -Wextra -Wno-unused-parameter -Wno-error=unused-variable -std=c++11
-    )
 add_executable(
     entityx_test
     entityx/Components_test.cc
-- 
cgit v1.2.3