diff --git a/Utilities/cmtar/CMakeLists.txt b/Utilities/cmtar/CMakeLists.txt index e1d86518a..6450338f9 100644 --- a/Utilities/cmtar/CMakeLists.txt +++ b/Utilities/cmtar/CMakeLists.txt @@ -107,6 +107,7 @@ FOREACH(func glob major minor + makedev ) CHECK_SYMBOL_EXISTS_EX("${func}") ENDFOREACH(func) diff --git a/Utilities/cmtar/config.h.in b/Utilities/cmtar/config.h.in index b3b7f5ccc..db619b023 100644 --- a/Utilities/cmtar/config.h.in +++ b/Utilities/cmtar/config.h.in @@ -9,6 +9,9 @@ /* Define if your system has a working minor */ #cmakedefine HAVE_MINOR @HAVE_MINOR@ +/* Define if your system has a working minor */ +#cmakedefine HAVE_MAKEDEV @HAVE_MAKEDEV@ + /* Define to 1 if you have the header file. */ #cmakedefine HAVE_CTYPE_H @HAVE_CTYPE_H@ diff --git a/Utilities/cmtar/internal.h b/Utilities/cmtar/internal.h index 01dc9030c..c1bba632b 100644 --- a/Utilities/cmtar/internal.h +++ b/Utilities/cmtar/internal.h @@ -25,3 +25,11 @@ #ifndef HAVE_MINOR # define minor(dev) ((int)((dev) & 0xff)) #endif +/* On Cray XT3 when using thr PGI pgcc 7.0.4 sys/sysmacros.h ends up without + makedev(), since __i386__ is not defined when GLIBC_HAVE_LONG_LONG should + be enabled in features.h */ +#ifndef HAVE_MAKEDEV +# define makedev(major, minor) ((((int)((major) & 0xff)) << 8 ) \ + | ((int)((minor) & 0xff)) ) +#endif +