From d210f0e4e1387092c05926aeb2814eb101f8882e Mon Sep 17 00:00:00 2001 From: Jason Turner Date: Sat, 2 May 2015 21:05:45 -0600 Subject: [PATCH] Enable thread_local in more cases, ignore clang warnings --- CMakeLists.txt | 17 +++++++++-------- include/chaiscript/chaiscript_defines.hpp | 2 +- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 3108d946..f8425918 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -13,12 +13,7 @@ ELSE() project(chaiscript) -# MINGW does not yet support C++11's concurrency features -if(MINGW) - option(MULTITHREAD_SUPPORT_ENABLED "Multithreaded Support Enabled" FALSE) -else() - option(MULTITHREAD_SUPPORT_ENABLED "Multithreaded Support Enabled" TRUE) -endif() +option(MULTITHREAD_SUPPORT_ENABLED "Multithreaded Support Enabled" TRUE) option(BUILD_MODULES "Build Extra Modules (stl)" TRUE) @@ -158,7 +153,13 @@ else() endif() if(MSVC) - add_definitions(/W4 /w44640) + add_definitions(/W4) + + # VS2013 doesn't have magic statics + if (MSVC_VERSION STREQUAL "1800") + add_definitions(/w44640) + endif() + add_definitions(/bigobj) # Note on MSVC compiler flags. # The code base selective disables warnings as necessary when the compiler is complaining too much @@ -172,7 +173,7 @@ else() add_definitions(-Wall -Wextra -Wshadow -Wnon-virtual-dtor -Wold-style-cast -Wcast-align -Wcast-qual -Wunused -Woverloaded-virtual -pedantic ${CPP11_FLAG}) if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang") - add_definitions(-Weverything -Wno-c++98-compat -Wno-documentation -Wno-switch-enum -Wno-weak-vtables -Wno-sign-conversion -Wno-missing-prototypes -Wno-padded -Wno-missing-noreturn) + add_definitions(-Weverything -Wno-c++98-compat -Wno-documentation -Wno-switch-enum -Wno-weak-vtables -Wno-sign-conversion -Wno-missing-prototypes -Wno-padded -Wno-missing-noreturn -Wno-exit-time-destructors) else() add_definitions(-Wnoexcept) endif() diff --git a/include/chaiscript/chaiscript_defines.hpp b/include/chaiscript/chaiscript_defines.hpp index 92f590c7..5a43a286 100644 --- a/include/chaiscript/chaiscript_defines.hpp +++ b/include/chaiscript/chaiscript_defines.hpp @@ -29,7 +29,7 @@ #define CHAISCRIPT_WINDOWS #endif -#if (defined(__GNUC__) && __GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8) +#if (defined(__GNUC__) && __GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8) || (defined(__llvm__) && !defined(CHAISCRIPT_LIBCPP)) || (defined(CHAISCRIPT_MSVC) && !defined(CHAISCRIPT_MSVC_12)) /// Currently only g++>=4.8 supports this natively /// \todo Make this support other compilers when possible #define CHAISCRIPT_HAS_THREAD_LOCAL