[clang] 3baadff - [CMake] Remove CLANG_DEFAULT_STD_C/CLANG_DEFAULT_STD_CXX

Fangrui Song via cfe-commits cfe-commits at lists.llvm.org
Sun Oct 16 13:15:52 PDT 2022


Author: Fangrui Song
Date: 2022-10-16T13:15:44-07:00
New Revision: 3baadff896eddfa09fcd458d120bac95491992a7

URL: https://github.com/llvm/llvm-project/commit/3baadff896eddfa09fcd458d120bac95491992a7
DIFF: https://github.com/llvm/llvm-project/commit/3baadff896eddfa09fcd458d120bac95491992a7.diff

LOG: [CMake] Remove CLANG_DEFAULT_STD_C/CLANG_DEFAULT_STD_CXX

When Clang is used as a cross compiler, it should respect the target
platform default. Defaulting to a configure-time CLANG_DEFAULT_STD_C/CLANG_DEFAULT_STD_CXX
does not make much sense.

When Clang is used as a single-platform compiler, we should use Clang
configuration file (https://discourse.llvm.org/t/configuration-files/42529
https://clang.llvm.org/docs/UsersManual.html#configuration-files).

The Gentoo needs from D34365 has been satisfied by a configuration file.

Reviewed By: mgorny

Differential Revision: https://reviews.llvm.org/D133375

Added: 
    

Modified: 
    clang/CMakeLists.txt
    clang/include/clang/Config/config.h.cmake
    clang/lib/Basic/LangStandards.cpp
    clang/test/Preprocessor/lang-std.cpp
    clang/test/lit.cfg.py
    clang/test/lit.site.cfg.py.in
    llvm/utils/gn/secondary/clang/include/clang/Config/BUILD.gn
    llvm/utils/gn/secondary/clang/test/BUILD.gn
    utils/bazel/llvm-project-overlay/clang/include/clang/Config/config.h

Removed: 
    


################################################################################
diff  --git a/clang/CMakeLists.txt b/clang/CMakeLists.txt
index 875bd27e13206..87ce418424c96 100644
--- a/clang/CMakeLists.txt
+++ b/clang/CMakeLists.txt
@@ -189,12 +189,6 @@ set(CLANG_SPAWN_CC1 OFF CACHE BOOL
 
 option(CLANG_DEFAULT_PIE_ON_LINUX "Default to -fPIE and -pie on linux-gnu" ON)
 
-# TODO: verify the values against LangStandards.def?
-set(CLANG_DEFAULT_STD_C "" CACHE STRING
-  "Default standard to use for C/ObjC code (IDENT from LangStandards.def, empty for platform default)")
-set(CLANG_DEFAULT_STD_CXX "" CACHE STRING
-  "Default standard to use for C++/ObjC++ code (IDENT from LangStandards.def, empty for platform default)")
-
 set(CLANG_DEFAULT_LINKER "" CACHE STRING
   "Default linker to use (linker name or absolute path, empty for platform default)")
 

diff  --git a/clang/include/clang/Config/config.h.cmake b/clang/include/clang/Config/config.h.cmake
index 3ffc2a12a89fe..fdae92ba0edbb 100644
--- a/clang/include/clang/Config/config.h.cmake
+++ b/clang/include/clang/Config/config.h.cmake
@@ -14,24 +14,6 @@
 /* Default linker to use. */
 #define CLANG_DEFAULT_LINKER "${CLANG_DEFAULT_LINKER}"
 
-/* Default C/ObjC standard to use. */
-#cmakedefine CLANG_DEFAULT_STD_C LangStandard::lang_${CLANG_DEFAULT_STD_C}
-/* Always #define something so that missing the config.h #include at use sites
- * becomes a compile error.
- */
-#ifndef CLANG_DEFAULT_STD_C
-#define CLANG_DEFAULT_STD_C LangStandard::lang_unspecified
-#endif
-
-/* Default C++/ObjC++ standard to use. */
-#cmakedefine CLANG_DEFAULT_STD_CXX LangStandard::lang_${CLANG_DEFAULT_STD_CXX}
-/* Always #define something so that missing the config.h #include at use sites
- * becomes a compile error.
- */
-#ifndef CLANG_DEFAULT_STD_CXX
-#define CLANG_DEFAULT_STD_CXX LangStandard::lang_unspecified
-#endif
-
 /* Default C++ stdlib to use. */
 #define CLANG_DEFAULT_CXX_STDLIB "${CLANG_DEFAULT_CXX_STDLIB}"
 

diff  --git a/clang/lib/Basic/LangStandards.cpp b/clang/lib/Basic/LangStandards.cpp
index 92e8ab347dda1..4b36f7bf4786c 100644
--- a/clang/lib/Basic/LangStandards.cpp
+++ b/clang/lib/Basic/LangStandards.cpp
@@ -58,23 +58,14 @@ LangStandard::Kind clang::getDefaultLanguageStandard(clang::Language Lang,
     return LangStandard::lang_cuda;
   case Language::Asm:
   case Language::C:
-    if (CLANG_DEFAULT_STD_C != LangStandard::lang_unspecified)
-      return CLANG_DEFAULT_STD_C;
-
     // The PS4 uses C99 as the default C standard.
     if (T.isPS4())
       return LangStandard::lang_gnu99;
     return LangStandard::lang_gnu17;
   case Language::ObjC:
-    if (CLANG_DEFAULT_STD_C != LangStandard::lang_unspecified)
-      return CLANG_DEFAULT_STD_C;
-
     return LangStandard::lang_gnu11;
   case Language::CXX:
   case Language::ObjCXX:
-    if (CLANG_DEFAULT_STD_CXX != LangStandard::lang_unspecified)
-      return CLANG_DEFAULT_STD_CXX;
-
     if (T.isPS())
       return LangStandard::lang_gnucxx14;
     return LangStandard::lang_gnucxx17;

diff  --git a/clang/test/Preprocessor/lang-std.cpp b/clang/test/Preprocessor/lang-std.cpp
index 538f1b1976dad..e8260147f40ee 100644
--- a/clang/test/Preprocessor/lang-std.cpp
+++ b/clang/test/Preprocessor/lang-std.cpp
@@ -1,5 +1,5 @@
-// UNSUPPORTED: default-std-cxx, ps4, ps5
-/// Test default standards when CLANG_DEFAULT_STD_CXX is unspecified.
+// UNSUPPORTED: ps4, ps5
+/// Test default standards.
 /// PS4/PS5 default to gnu++14.
 
 // RUN: %clang_cc1 -dM -E %s | FileCheck --check-prefix=CXX17 %s

diff  --git a/clang/test/lit.cfg.py b/clang/test/lit.cfg.py
index 055fd0a4324e3..8cad77b57219b 100644
--- a/clang/test/lit.cfg.py
+++ b/clang/test/lit.cfg.py
@@ -126,9 +126,6 @@ def have_host_jit_feature_support(feature_name):
 if config.clang_default_pie_on_linux:
     config.available_features.add('default-pie-on-linux')
 
-if config.clang_default_std_cxx != '':
-    config.available_features.add('default-std-cxx')
-
 # Set available features we allow tests to conditionalize on.
 #
 if config.clang_default_cxx_stdlib != '':

diff  --git a/clang/test/lit.site.cfg.py.in b/clang/test/lit.site.cfg.py.in
index dc8c3fa554307..8ea359dcf3c5b 100644
--- a/clang/test/lit.site.cfg.py.in
+++ b/clang/test/lit.site.cfg.py.in
@@ -24,7 +24,6 @@ config.have_zlib = @LLVM_ENABLE_ZLIB@
 config.have_zstd = @LLVM_ENABLE_ZSTD@
 config.clang_arcmt = @CLANG_ENABLE_ARCMT@
 config.clang_default_pie_on_linux = @CLANG_DEFAULT_PIE_ON_LINUX@
-config.clang_default_std_cxx = "@CLANG_DEFAULT_STD_CXX@"
 config.clang_default_cxx_stdlib = "@CLANG_DEFAULT_CXX_STDLIB@"
 config.clang_staticanalyzer = @CLANG_ENABLE_STATIC_ANALYZER@
 config.clang_staticanalyzer_z3 = @LLVM_WITH_Z3@

diff  --git a/llvm/utils/gn/secondary/clang/include/clang/Config/BUILD.gn b/llvm/utils/gn/secondary/clang/include/clang/Config/BUILD.gn
index b5789b2b2192c..b446af195f5b1 100644
--- a/llvm/utils/gn/secondary/clang/include/clang/Config/BUILD.gn
+++ b/llvm/utils/gn/secondary/clang/include/clang/Config/BUILD.gn
@@ -11,8 +11,6 @@ write_cmake_config("Config") {
     "BUG_REPORT_URL=https://github.com/llvm/llvm-project/issues/",
     "CLANG_DEFAULT_PIE_ON_LINUX=1",
     "CLANG_DEFAULT_LINKER=",
-    "CLANG_DEFAULT_STD_C=",
-    "CLANG_DEFAULT_STD_CXX=",
     "CLANG_DEFAULT_CXX_STDLIB=",
     "CLANG_DEFAULT_RTLIB=",
     "CLANG_DEFAULT_OBJCOPY=objcopy",

diff  --git a/llvm/utils/gn/secondary/clang/test/BUILD.gn b/llvm/utils/gn/secondary/clang/test/BUILD.gn
index bd446a24c7963..63eb4f296b6c8 100644
--- a/llvm/utils/gn/secondary/clang/test/BUILD.gn
+++ b/llvm/utils/gn/secondary/clang/test/BUILD.gn
@@ -46,7 +46,6 @@ write_lit_config("lit_site_cfg") {
     "LLVM_WITH_Z3=0",
     "CLANG_BUILD_EXAMPLES=0",
     "CLANG_BUILT_STANDALONE=0",
-    "CLANG_DEFAULT_STD_CXX=",
     "CLANG_DEFAULT_CXX_STDLIB=",  # Empty string means "default value" here.
     "CLANG_DEFAULT_PIE_ON_LINUX=0",
     "CLANG_PLUGIN_SUPPORT=0",  # FIXME: Analysis/plugins need global -fPIC

diff  --git a/utils/bazel/llvm-project-overlay/clang/include/clang/Config/config.h b/utils/bazel/llvm-project-overlay/clang/include/clang/Config/config.h
index aea09101d0e26..bb404e8b7a8e6 100644
--- a/utils/bazel/llvm-project-overlay/clang/include/clang/Config/config.h
+++ b/utils/bazel/llvm-project-overlay/clang/include/clang/Config/config.h
@@ -28,24 +28,6 @@
 /* Default linker to use. */
 #define CLANG_DEFAULT_LINKER ""
 
-/* Default C/ObjC standard to use. */
-/* #undef CLANG_DEFAULT_STD_C */
-/* Always #define something so that missing the config.h #include at use sites
- * becomes a compile error.
- */
-#ifndef CLANG_DEFAULT_STD_C
-#define CLANG_DEFAULT_STD_C LangStandard::lang_unspecified
-#endif
-
-/* Default C++/ObjC++ standard to use. */
-/* #undef CLANG_DEFAULT_STD_CXX */
-/* Always #define something so that missing the config.h #include at use sites
- * becomes a compile error.
- */
-#ifndef CLANG_DEFAULT_STD_CXX
-#define CLANG_DEFAULT_STD_CXX LangStandard::lang_unspecified
-#endif
-
 /* Default C++ stdlib to use. */
 #define CLANG_DEFAULT_CXX_STDLIB ""
 


        


More information about the cfe-commits mailing list