--- /dev/null
+# This file is part of lyx.\r
+#\r
+# The module comes from the enblend project, slightly modified.\r
+#\r
+# Check if compiler supports C++11 features \r
+# and which compiler switches are necessary\r
+# CXX11_FLAG : contains the necessary compiler flag\r
+\r
+#\r
+# Copyright (c) 2013 Thomas Modes <tmodes@@users.sourceforge.net>\r
+#\r
+# Redistribution and use in source and binary forms, with or without\r
+# modification, are permitted provided that the following conditions\r
+# are met:\r
+#\r
+# 1. Redistributions of source code must retain the copyright\r
+# notice, this list of conditions and the following disclaimer.\r
+# 2. Redistributions in binary form must reproduce the copyright\r
+# notice, this list of conditions and the following disclaimer in the\r
+# documentation and/or other materials provided with the distribution.\r
+# 3. The name of the author may not be used to endorse or promote products\r
+# derived from this software without specific prior written permission.\r
+#\r
+# This file is distributed in the hope that it will be useful,\r
+# but WITHOUT ANY WARRANTY; without even the implied warranty of\r
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r
+# GNU General Public License for more details.\r
+#\r
+# You should have received a copy of the GNU General Public License\r
+# along with lyx; if not, write to the Free Software\r
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA\r
+#\r
+\r
+INCLUDE(CheckCXXSourceCompiles)\r
+INCLUDE(FindPackageHandleStandardArgs)\r
+\r
+if (CMAKE_CXX_COMPILER MATCHES "clang")\r
+ set(CXX11_FLAG_CANDIDATES "--std=c++11")\r
+else()\r
+ set(CXX11_FLAG_CANDIDATES\r
+ "--std=gnu++11"\r
+ "--std=c++11"\r
+ "--std=gnu++0x"\r
+ )\r
+endif()\r
+\r
+# sample openmp source code to test\r
+SET(CXX11_TEST_SOURCE \r
+"\r
+template <typename T>\r
+struct check\r
+{\r
+ static_assert(sizeof(int) <= sizeof(T), \"not big enough\");\r
+};\r
+\r
+typedef check<check<bool>> right_angle_brackets;\r
+\r
+class TestDeleted\r
+{\r
+public:\r
+ TestDeleted() = delete;\r
+};\r
+\r
+\r
+int a;\r
+decltype(a) b;\r
+\r
+typedef check<int> check_type;\r
+check_type c;\r
+check_type&& cr = static_cast<check_type&&>(c);\r
+\r
+auto d = a;\r
+\r
+int main() {\r
+ return 0;\r
+};\r
+")\r
+\r
+# check c compiler\r
+FOREACH(FLAG ${CXX11_FLAG_CANDIDATES})\r
+ SET(SAFE_CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS}")\r
+ SET(CMAKE_REQUIRED_FLAGS "${FLAG}")\r
+ UNSET(CXX11_FLAG_DETECTED CACHE)\r
+ CHECK_CXX_SOURCE_COMPILES("${CXX11_TEST_SOURCE}" CXX11_FLAG_DETECTED)\r
+ SET(CMAKE_REQUIRED_FLAGS "${SAFE_CMAKE_REQUIRED_FLAGS}")\r
+ IF(CXX11_FLAG_DETECTED)\r
+ SET(CXX11_FLAG "${FLAG}")\r
+ BREAK()\r
+ ENDIF()\r
+ENDFOREACH()\r
+\r
+# handle the standard arguments for find_package\r
+FIND_PACKAGE_HANDLE_STANDARD_ARGS(CXX11Compiler DEFAULT_MSG CXX11_FLAG)\r
+\r
+MARK_AS_ADVANCED(CXX11_FLAG)\r