Browse Source

NVHPC: Support 21.07 change to '-MD' where it behaves like gcc

Robert Maynard 4 years ago
parent
commit
7ce718376c
3 changed files with 12 additions and 10 deletions
  1. 0 5
      Modules/Compiler/NVHPC-C.cmake
  2. 0 5
      Modules/Compiler/NVHPC-CXX.cmake
  3. 12 0
      Modules/Compiler/NVHPC.cmake

+ 0 - 5
Modules/Compiler/NVHPC-C.cmake

@@ -4,9 +4,4 @@ include(Compiler/NVHPC)
 # Needed so that we support `LANGUAGE` property correctly
 set(CMAKE_C_COMPILE_OPTIONS_EXPLICIT_LANGUAGE -x c)
 
-# Required since as of NVHPC 21.03 the `-MD` flag implicitly
-# implies `-E` and therefore compilation and dependency generation
-# can't occur in the same invocation
-set(CMAKE_C_DEPENDS_EXTRA_COMMANDS "<CMAKE_C_COMPILER> <DEFINES> <INCLUDES> <FLAGS> -x c -M <SOURCE> -MT <OBJECT> -MD<DEP_FILE>")
-
 __compiler_nvhpc(C)

+ 0 - 5
Modules/Compiler/NVHPC-CXX.cmake

@@ -4,9 +4,4 @@ include(Compiler/NVHPC)
 # Needed so that we support `LANGUAGE` property correctly
 set(CMAKE_CXX_COMPILE_OPTIONS_EXPLICIT_LANGUAGE -x c++)
 
-# Required since as of NVHPC 21.03 the `-MD` flag implicitly
-# implies `-E` and therefore compilation and dependency generation
-# can't occur in the same invocation
-set(CMAKE_CXX_DEPENDS_EXTRA_COMMANDS "<CMAKE_CXX_COMPILER> <DEFINES> <INCLUDES> <FLAGS> -x c++ -M <SOURCE> -MT <OBJECT> -MD<DEP_FILE>")
-
 __compiler_nvhpc(CXX)

+ 12 - 0
Modules/Compiler/NVHPC.cmake

@@ -12,4 +12,16 @@ include(Compiler/PGI)
 
 macro(__compiler_nvhpc lang)
   # Logic specific to NVHPC.
+
+  if(CMAKE_${lang}_COMPILER_VERSION VERSION_GREATER_EQUAL 21.07)
+    set(CMAKE_DEPFILE_FLAGS_${lang} "-MD -MT <DEP_TARGET> -MF <DEP_FILE>")
+    set(CMAKE_${lang}_DEPFILE_FORMAT gcc)
+    set(CMAKE_${lang}_DEPENDS_USE_COMPILER TRUE)
+  else()
+    # Before NVHPC 21.07 the `-MD` flag implicitly
+    # implies `-E` and therefore compilation and dependency generation
+    # can't occur in the same invocation
+    set(CMAKE_${lang}_DEPENDS_EXTRA_COMMANDS "<CMAKE_${lang}_COMPILER> <DEFINES> <INCLUDES> <FLAGS> ${CMAKE_${lang}_COMPILE_OPTIONS_EXPLICIT_LANGUAGE} -M <SOURCE> -MT <OBJECT> -MD<DEP_FILE>")
+  endif()
+
 endmacro()