diff --git a/CMakeLists.txt b/CMakeLists.txt index c7c84e859..6bc339b42 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -104,9 +104,9 @@ OPTION(BUILD_PLUGINS "Build the plugins." ON) # enable C++11 features IF(UNIX) add_definitions(-DLINUX_BUILD) - SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-g -Wall -Wno-unused-variable") - SET(CMAKE_CXX_FLAGS "-fvisibility=hidden -m32 -march=i686 -mtune=generic -std=c++0x") - SET(CMAKE_C_FLAGS "-fvisibility=hidden -m32 -march=i686 -mtune=generic") + SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} -g -Wall -Wno-unused-variable") + SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fvisibility=hidden -m32 -march=i686 -mtune=generic -std=c++0x") + SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fvisibility=hidden -m32 -march=i686 -mtune=generic") ELSEIF(MSVC) # for msvc, tell it to always use 8-byte pointers to member functions to avoid confusion SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /vmg /vmm /MP") diff --git a/library/include/Pragma.h b/library/include/Pragma.h index b6f776725..7a7e8268f 100644 --- a/library/include/Pragma.h +++ b/library/include/Pragma.h @@ -56,6 +56,8 @@ distribution. #pragma warning( disable: 4018) // nonstandard extension used: enum 'df::whatever::etc' used in qualified name #pragma warning( disable: 4482) + // nonstandard extension used: 'extern' before template explicit instantiation + #pragma warning( disable: 4231) #endif #endif diff --git a/library/include/modules/Random.h b/library/include/modules/Random.h index c6f9a3f6a..114336cd6 100644 --- a/library/include/modules/Random.h +++ b/library/include/modules/Random.h @@ -99,8 +99,10 @@ namespace Random } }; +#ifndef DFHACK_RANDOM_CPP extern template void MersenneRNG::unitvector(float *p, int size); extern template void MersenneRNG::unitvector(double *p, int size); +#endif } } diff --git a/library/modules/Random.cpp b/library/modules/Random.cpp index 5030d1449..06c885cad 100644 --- a/library/modules/Random.cpp +++ b/library/modules/Random.cpp @@ -29,6 +29,8 @@ distribution. #include using namespace std; +#define DFHACK_RANDOM_CPP + #include "modules/Random.h" #include "VersionInfo.h" #include "MemAccess.h" diff --git a/plugins/uicommon.h b/plugins/uicommon.h index 147556ff1..d9c225d88 100644 --- a/plugins/uicommon.h +++ b/plugins/uicommon.h @@ -427,7 +427,7 @@ public: void clearSelection() { - for_each_(list, [] (ListEntry &e) { e.selected = false; }); + for_each_(list, clear_fn); } void selectItem(const T elem) @@ -550,8 +550,7 @@ public: void sort() { if (force_sort || list.size() < 100) - std::sort(list.begin(), list.end(), - [] (ListEntry const& a, ListEntry const& b) { return a.text.compare(b.text) < 0; }); + std::sort(list.begin(), list.end(), sort_fn); filterDisplay(); } @@ -569,6 +568,9 @@ public: } private: + static void clear_fn(ListEntry &e) { e.selected = false; } + static bool sort_fn(ListEntry const& a, ListEntry const& b) { return a.text.compare(b.text) < 0; } + vector> list; vector*> display_list; string search_string;