[PATCH] D38406: [dump] Remove NDEBUG from test to enable dump methods [NFC]

Don Hinton via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Tue Dec 5 10:51:39 PST 2017


hintonda added a comment.

When variables are passed on the command line, they are automatically cached 
so that subsequent cmake runs will give identical results, i.e., as if the variables 
were passed again.  However, this makes it somewhat difficult to toggle options 
since they look exactly the same and you don't know if the variable came from 
the command line or the cache.

The current version of this patch doesn't handle this cleanly, but below is a simple 
example of how to toggle variables (FOO in this case) on a per config basis.  
Once set, the variable stays set until explicitly cleared.

I believe this technique could be used for both LLVM_ENABLE_DUMP 
and LLVM_ENABLE_ASSERTIONS.  Please let me know what you think.

  local:/Users/dhinton/cmt/test $ cat ../CMakeLists.txt
  cmake_minimum_required(VERSION 3.5)
  string(TOUPPER ${CMAKE_BUILD_TYPE} uppercase_CMAKE_BUILD_TYPE)
  
  # Do not cache FOO -- only allow it to be passed from the command line
  # -- but set and cache the appropriate build type version instead.
  if (DEFINED FOO)
    foreach(lang C CXX)
                  if (FOO AND NOT FOO_${uppercase_CMAKE_BUILD_TYPE})
        set(CMAKE_${lang}_FLAGS_${uppercase_CMAKE_BUILD_TYPE}
            "${CMAKE_${lang}_FLAGS_${uppercase_CMAKE_BUILD_TYPE}} -DFOO")
                  elseif (NOT ${FOO})
        string(REGEX REPLACE " *-DFOO *" " "
               CMAKE_${lang}_FLAGS_${uppercase_CMAKE_BUILD_TYPE}
               "${CMAKE_${lang}_FLAGS_${uppercase_CMAKE_BUILD_TYPE}}")
      endif()
      string(STRIP "${CMAKE_${lang}_FLAGS_${uppercase_CMAKE_BUILD_TYPE}}"
             CMAKE_${lang}_FLAGS_${uppercase_CMAKE_BUILD_TYPE})
      set(CMAKE_${lang}_FLAGS_${uppercase_CMAKE_BUILD_TYPE}
          "${CMAKE_${lang}_FLAGS_${uppercase_CMAKE_BUILD_TYPE}}" CACHE STRING "" FORCE)
    endforeach()
  
    set(FOO_${uppercase_CMAKE_BUILD_TYPE} ${FOO} CACHE BOOL "" FORCE)
          unset(FOO CACHE)
  endif()
  
  local:/Users/dhinton/cmt/test $ rm -rf *
  local:/Users/dhinton/cmt/test $ cmake ../ -DCMAKE_BUILD_TYPE=Debug > /dev/null 2>&1 && grep -E "_CXX_FLAGS_(DEBUG|RELEASE):" CMakeCache.txt
  CMAKE_CXX_FLAGS_DEBUG:STRING=-g
  CMAKE_CXX_FLAGS_RELEASE:STRING=-O3 -DNDEBUG
  
  local:/Users/dhinton/cmt/test $ cmake ../ -DCMAKE_BUILD_TYPE=Release > /dev/null 2>&1 && grep -E "_CXX_FLAGS_(DEBUG|RELEASE):" CMakeCache.txt
  CMAKE_CXX_FLAGS_DEBUG:STRING=-g
  CMAKE_CXX_FLAGS_RELEASE:STRING=-O3 -DNDEBUG
  
  local:/Users/dhinton/cmt/test $ cmake ../ -DCMAKE_BUILD_TYPE=Release -DFOO=On > /dev/null 2>&1 && grep -E "_CXX_FLAGS_(DEBUG|RELEASE):" CMakeCache.txt
  CMAKE_CXX_FLAGS_DEBUG:STRING=-g
  CMAKE_CXX_FLAGS_RELEASE:STRING=-O3 -DNDEBUG -DFOO
  
  local:/Users/dhinton/cmt/test $ cmake ../ -DCMAKE_BUILD_TYPE=Debug > /dev/null 2>&1 && grep -E "_CXX_FLAGS_(DEBUG|RELEASE):" CMakeCache.txt
  CMAKE_CXX_FLAGS_DEBUG:STRING=-g
  CMAKE_CXX_FLAGS_RELEASE:STRING=-O3 -DNDEBUG -DFOO
  
  local:/Users/dhinton/cmt/test $ cmake ../ -DCMAKE_BUILD_TYPE=Debug -DFOO=Off > /dev/null 2>&1 && grep -E "_CXX_FLAGS_(DEBUG|RELEASE):" CMakeCache.txt
  CMAKE_CXX_FLAGS_DEBUG:STRING=-g
  CMAKE_CXX_FLAGS_RELEASE:STRING=-O3 -DNDEBUG -DFOO
  
  local:/Users/dhinton/cmt/test $ cmake ../ -DCMAKE_BUILD_TYPE=Release > /dev/null 2>&1 && grep -E "_CXX_FLAGS_(DEBUG|RELEASE):" CMakeCache.txt
  CMAKE_CXX_FLAGS_DEBUG:STRING=-g
  CMAKE_CXX_FLAGS_RELEASE:STRING=-O3 -DNDEBUG -DFOO
  
  local:/Users/dhinton/cmt/test $ cmake ../ -DCMAKE_BUILD_TYPE=Release -DFOO=Off > /dev/null 2>&1 && grep -E "_CXX_FLAGS_(DEBUG|RELEASE):" CMakeCache.txt
  CMAKE_CXX_FLAGS_DEBUG:STRING=-g
  CMAKE_CXX_FLAGS_RELEASE:STRING=-O3 -DNDEBUG


https://reviews.llvm.org/D38406





More information about the llvm-commits mailing list