[PATCH] [libcxx] Update the way the -std= flag is chosen by CMake and LibcxxTestFormat

Eric Fiselier eric at efcs.ca
Thu Aug 14 21:56:43 PDT 2014


Thanks for the notes! I'll update the way lit.cfg handles the std parameter.

================
Comment at: CMakeLists.txt:197
@@ -196,3 +196,3 @@
   endif()
-  if (LIBCXX_ENABLE_CXX0X AND LIBCXX_HAS_STDCXX0X_FLAG)
-    list(APPEND LIBCXX_CXX_REQUIRED_FLAGS -std=c++0x)
+  if (LIBCXX_ENABLE_CXX1Y AND LIBCXX_HAS_STDCXX1Y_FLAG)
+    set(LIBCXX_STD_VERSION c++1y)
----------------
Dan Albert wrote:
> I think the case of LIBCXX_ENABLE_CXX1Y && !LIBCXX_HAS_STDCXX1Y_FLAG should raise an error, not fall back to C++11.
If that were to be the case then we should turn LIBCXX_ENABLE_CXX1Y off by default. There is no need for CMake to fail because it can't find a c++1y flag since libc++ builds as c++11. 

Selfishly I want the c++1y to be enabled by default because I'm doing a lot of work on the LFTS that requires c++1y and I don't want to specify it to run the tests. 

================
Comment at: test/lit.cfg:311
@@ +310,3 @@
+    assert std is not None
+    lit_config.note('inferred std as: \'-std={}\''.format(std))
+else:
----------------
Dan Albert wrote:
> It wouldn't be inferred, since it was defined by the user. I also don't think we need to be asserting on the line above. If std isn't defined either from the command line or from lit.site.cfg, we should probably just not pass any -std flag to the compiler and let it do the default. Might add a lit_config.note() stating that this is happening in that case.
I'm not sure if we should fall back to default. The majority of the test-suite does not build unless its tested with >=c++11. I think we should instead fall back to c++11.

http://reviews.llvm.org/D4329






More information about the cfe-commits mailing list