Wed Feb 27 13:18:01 2019 UTC ()
cmake: specifically test for some C++17 features.

In case the compiler used advertises C++17 but uses a C++ library that
lacks some features, we'll need specific testing.

Unbreaks the build for: libstdc++ from 5.4 and clang 7.0
Submitted upstream: https://gitlab.kitware.com/cmake/cmake/merge_requests/3030/diffs
(No response yet)

From wizermil.


(maya)
diff -r1.159 -r1.160 pkgsrc/devel/cmake/Makefile
diff -r1.135 -r1.136 pkgsrc/devel/cmake/distinfo
diff -r0 -r1.1 pkgsrc/devel/cmake/files/Source_Checks_cm_cxx_cbegin.cxx
diff -r0 -r1.1 pkgsrc/devel/cmake/files/Source_Checks_cm_cxx_cend.cxx
diff -r0 -r1.1 pkgsrc/devel/cmake/files/Source_Checks_cm_cxx_size_t.cxx
diff -r1.2 -r1.3 pkgsrc/devel/cmake/patches/patch-Source_Checks_cm_cxx_features.cmake
diff -r0 -r1.1 pkgsrc/devel/cmake/patches/patch-Source_cmAlgorithms.h

cvs diff -r1.159 -r1.160 pkgsrc/devel/cmake/Makefile (expand / switch to unified diff)

--- pkgsrc/devel/cmake/Makefile 2019/01/15 09:02:28 1.159
+++ pkgsrc/devel/cmake/Makefile 2019/02/27 13:18:01 1.160
@@ -1,14 +1,14 @@ @@ -1,14 +1,14 @@
1# $NetBSD: Makefile,v 1.159 2019/01/15 09:02:28 adam Exp $ 1# $NetBSD: Makefile,v 1.160 2019/02/27 13:18:01 maya Exp $
2 2
3.include "Makefile.version" 3.include "Makefile.version"
4 4
5DISTNAME= cmake-${CMAKE_VERSION} 5DISTNAME= cmake-${CMAKE_VERSION}
6CATEGORIES= devel 6CATEGORIES= devel
7MASTER_SITES= https://cmake.org/files/v${CMAKE_API}/ 7MASTER_SITES= https://cmake.org/files/v${CMAKE_API}/
8 8
9MAINTAINER= pkgsrc-users@NetBSD.org 9MAINTAINER= pkgsrc-users@NetBSD.org
10HOMEPAGE= http://www.cmake.org/ 10HOMEPAGE= http://www.cmake.org/
11COMMENT= Cross platform make 11COMMENT= Cross platform make
12LICENSE= modified-bsd 12LICENSE= modified-bsd
13 13
14USE_TOOLS+= gmake 14USE_TOOLS+= gmake
@@ -42,26 +42,29 @@ PLIST_SUBST+= CMAKE_API=${CMAKE_API} @@ -42,26 +42,29 @@ PLIST_SUBST+= CMAKE_API=${CMAKE_API}
42UNLIMIT_RESOURCES= datasize 42UNLIMIT_RESOURCES= datasize
43 43
44# as of 2.4.6, x11 and fortran tests fail in pkgsrc 44# as of 2.4.6, x11 and fortran tests fail in pkgsrc
45TEST_TARGET= test 45TEST_TARGET= test
46 46
47SUBST_CLASSES+= cmake 47SUBST_CLASSES+= cmake
48SUBST_STAGE.cmake= pre-configure 48SUBST_STAGE.cmake= pre-configure
49SUBST_MESSAGE.cmake= Fixing LOCALBASE and X11 paths. 49SUBST_MESSAGE.cmake= Fixing LOCALBASE and X11 paths.
50SUBST_FILES.cmake+= Modules/FindX11.cmake 50SUBST_FILES.cmake+= Modules/FindX11.cmake
51SUBST_FILES.cmake+= Modules/Platform/UnixPaths.cmake 51SUBST_FILES.cmake+= Modules/Platform/UnixPaths.cmake
52SUBST_VARS.cmake= LOCALBASE X11BASE 52SUBST_VARS.cmake= LOCALBASE X11BASE
53 53
54pre-configure: 54pre-configure:
 55 ${CP} ${FILESDIR}/Source_Checks_cm_cxx_cbegin.cxx ${WRKSRC}/Source/Checks/cm_cxx_cbegin.cxx
 56 ${CP} ${FILESDIR}/Source_Checks_cm_cxx_cend.cxx ${WRKSRC}/Source/Checks/cm_cxx_cend.cxx
 57 ${CP} ${FILESDIR}/Source_Checks_cm_cxx_size_t.cxx ${WRKSRC}/Source/Checks/cm_cxx_size_t.cxx
55 ${RM} -f ${WRKSRC}/Modules/*.orig ${WRKSRC}/Modules/Compiler/*.orig ${WRKSRC}/Modules/Platform/*.orig 58 ${RM} -f ${WRKSRC}/Modules/*.orig ${WRKSRC}/Modules/Compiler/*.orig ${WRKSRC}/Modules/Platform/*.orig
56 ${LN} -f ${WRKSRC}/Modules/Platform/OpenBSD.cmake ${WRKSRC}/Modules/Platform/MirBSD.cmake 59 ${LN} -f ${WRKSRC}/Modules/Platform/OpenBSD.cmake ${WRKSRC}/Modules/Platform/MirBSD.cmake
57.for lang in C CXX Fortran 60.for lang in C CXX Fortran
58 ${LN} -f ${WRKSRC}/Modules/Platform/SunOS-GNU-${lang}.cmake \ 61 ${LN} -f ${WRKSRC}/Modules/Platform/SunOS-GNU-${lang}.cmake \
59 ${WRKSRC}/Modules/Platform/SunOS-Clang-${lang}.cmake 62 ${WRKSRC}/Modules/Platform/SunOS-Clang-${lang}.cmake
60.endfor 63.endfor
61 64
62USE_CURSES= wsyncup 65USE_CURSES= wsyncup
63 66
64BUILDLINK_API_DEPENDS.libarchive+= libarchive>=3.0.0 67BUILDLINK_API_DEPENDS.libarchive+= libarchive>=3.0.0
65.include "../../archivers/libarchive/buildlink3.mk" 68.include "../../archivers/libarchive/buildlink3.mk"
66.include "../../devel/libexecinfo/buildlink3.mk" 69.include "../../devel/libexecinfo/buildlink3.mk"
67.include "../../devel/libuv/buildlink3.mk" 70.include "../../devel/libuv/buildlink3.mk"

cvs diff -r1.135 -r1.136 pkgsrc/devel/cmake/distinfo (expand / switch to unified diff)

--- pkgsrc/devel/cmake/distinfo 2019/02/05 09:52:23 1.135
+++ pkgsrc/devel/cmake/distinfo 2019/02/27 13:18:01 1.136
@@ -1,22 +1,23 @@ @@ -1,22 +1,23 @@
1$NetBSD: distinfo,v 1.135 2019/02/05 09:52:23 adam Exp $ 1$NetBSD: distinfo,v 1.136 2019/02/27 13:18:01 maya Exp $
2 2
3SHA1 (cmake-3.13.4.tar.gz) = 242ac4986ab38ddb06c7bfb7eb950e4c1b1ca770 3SHA1 (cmake-3.13.4.tar.gz) = 242ac4986ab38ddb06c7bfb7eb950e4c1b1ca770
4RMD160 (cmake-3.13.4.tar.gz) = 6211b5315071015d2a949af077e4301c47e36fd4 4RMD160 (cmake-3.13.4.tar.gz) = 6211b5315071015d2a949af077e4301c47e36fd4
5SHA512 (cmake-3.13.4.tar.gz) = 5a2cc092109652ced5a3a6ae00fe0c7d134efa7d90d59f376368408bb684343db9e144ee53b184f3437f8a86cf9976a130a1e1676c993d56b278a6640a418c93 5SHA512 (cmake-3.13.4.tar.gz) = 5a2cc092109652ced5a3a6ae00fe0c7d134efa7d90d59f376368408bb684343db9e144ee53b184f3437f8a86cf9976a130a1e1676c993d56b278a6640a418c93
6Size (cmake-3.13.4.tar.gz) = 8617881 bytes 6Size (cmake-3.13.4.tar.gz) = 8617881 bytes
7SHA1 (patch-CMakeLists.txt) = 01329182725814e27bc3945d1d62555b3a4a4033 7SHA1 (patch-CMakeLists.txt) = 01329182725814e27bc3945d1d62555b3a4a4033
8SHA1 (patch-Modules_Compiler_GNU.cmake) = e091c53ac3f3a6cd811119d3231563df32e76bf9 8SHA1 (patch-Modules_Compiler_GNU.cmake) = e091c53ac3f3a6cd811119d3231563df32e76bf9
9SHA1 (patch-Modules_FindCurses.cmake) = 1372faaf1b7a1b5f5f592c797f39e1a9002a24a6 9SHA1 (patch-Modules_FindCurses.cmake) = 1372faaf1b7a1b5f5f592c797f39e1a9002a24a6
10SHA1 (patch-Modules_FindGTK2.cmake) = 51b7520d35fdec2a7bfcf494fe35ce0e3863e4ee 10SHA1 (patch-Modules_FindGTK2.cmake) = 51b7520d35fdec2a7bfcf494fe35ce0e3863e4ee
11SHA1 (patch-Modules_FindPythonInterp.cmake) = d1b39bdcd654f2a4fc63463cd20de656cce3cf8f 11SHA1 (patch-Modules_FindPythonInterp.cmake) = d1b39bdcd654f2a4fc63463cd20de656cce3cf8f
12SHA1 (patch-Modules_FindPythonLibs.cmake) = b5cedc6a2354beaf08e06d416c150154a7dc1f05 12SHA1 (patch-Modules_FindPythonLibs.cmake) = b5cedc6a2354beaf08e06d416c150154a7dc1f05
13SHA1 (patch-Modules_FindX11.cmake) = 124a2d51155cb4455e8b829dc74598cbd50a4e1c 13SHA1 (patch-Modules_FindX11.cmake) = 124a2d51155cb4455e8b829dc74598cbd50a4e1c
14SHA1 (patch-Modules_Platform_UnixPaths.cmake) = 38720e11b7b62cb702e80da19e044f070298f2db 14SHA1 (patch-Modules_Platform_UnixPaths.cmake) = 38720e11b7b62cb702e80da19e044f070298f2db
15SHA1 (patch-Source_CMakeLists.txt) = 533667d43048b8bc2be17a766b5dc32f3101866e 15SHA1 (patch-Source_CMakeLists.txt) = 533667d43048b8bc2be17a766b5dc32f3101866e
16SHA1 (patch-Source_Checks_Curses_CMakeLists.txt) = 37d95c6162cc1f4c0e47b537ac8204cb9fe75b8c 16SHA1 (patch-Source_Checks_Curses_CMakeLists.txt) = 37d95c6162cc1f4c0e47b537ac8204cb9fe75b8c
17SHA1 (patch-Source_Checks_Curses_CheckCurses.c) = c86cae48f7b39fb735eba4788d4e9d595b2ccf3b 17SHA1 (patch-Source_Checks_Curses_CheckCurses.c) = c86cae48f7b39fb735eba4788d4e9d595b2ccf3b
18SHA1 (patch-Source_Checks_cm__cxx17__check.cpp) = 35817b7ad4c43d8f82300c21a9fb76166325de97 18SHA1 (patch-Source_Checks_cm__cxx17__check.cpp) = 35817b7ad4c43d8f82300c21a9fb76166325de97
19SHA1 (patch-Source_Checks_cm_cxx_features.cmake) = 3d6e3ac6ad25890d223601c15fb208b8e77ff77c 19SHA1 (patch-Source_Checks_cm_cxx_features.cmake) = 2ba746a927765361738914bf1d00ba191a2e849f
20SHA1 (patch-Source_CursesDialog_ccmake.cxx) = d7baafe6612b6ac9b0542ed10ffcf90cd8d1df87 20SHA1 (patch-Source_CursesDialog_ccmake.cxx) = d7baafe6612b6ac9b0542ed10ffcf90cd8d1df87
 21SHA1 (patch-Source_cmAlgorithms.h) = 9a9e997af5af78d004ff62d86cba5070cd5470ff
21SHA1 (patch-Utilities_KWIML_CMakeLists.txt) = e4bdf9fc58757e87bf7e3e3e195839eededbc796 22SHA1 (patch-Utilities_KWIML_CMakeLists.txt) = e4bdf9fc58757e87bf7e3e3e195839eededbc796
22SHA1 (patch-bootstrap) = 9d99cfe9f9ae826250f94bc297f5a22b8de09e84 23SHA1 (patch-bootstrap) = 9d99cfe9f9ae826250f94bc297f5a22b8de09e84

File Added: pkgsrc/devel/cmake/files/Source_Checks_cm_cxx_cbegin.cxx
#include <iterator>
int main()
{
  int a[] = { 0, 1, 2 };
  auto ai = std::cbegin(a);
  return *ai;
}

File Added: pkgsrc/devel/cmake/files/Source_Checks_cm_cxx_cend.cxx
#include <iterator>
int main()
{
  int a[] = { 2, 1, 0 };
  auto ai = std::cend(a);
  return *(ai - 1);
}

File Added: pkgsrc/devel/cmake/files/Source_Checks_cm_cxx_size_t.cxx
#include <cstddef>
int main()
{
  std::size_t t = 0;
  return static_cast<int>(t);
}

cvs diff -r1.2 -r1.3 pkgsrc/devel/cmake/patches/Attic/patch-Source_Checks_cm_cxx_features.cmake (expand / switch to unified diff)

--- pkgsrc/devel/cmake/patches/Attic/patch-Source_Checks_cm_cxx_features.cmake 2018/07/21 06:52:55 1.2
+++ pkgsrc/devel/cmake/patches/Attic/patch-Source_Checks_cm_cxx_features.cmake 2019/02/27 13:18:01 1.3
@@ -1,18 +1,42 @@ @@ -1,18 +1,42 @@
1$NetBSD: patch-Source_Checks_cm_cxx_features.cmake,v 1.2 2018/07/21 06:52:55 ryoon Exp $ 1$NetBSD: patch-Source_Checks_cm_cxx_features.cmake,v 1.3 2019/02/27 13:18:01 maya Exp $
2 2
3Ignore warnings like ... 3Ignore warnings like ...
4 4
5 ld: warning: text-based stub file /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/SharedFileList.framework/Versions/A/SharedFileList.tbd and library file /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/SharedFileList.framework/Versions/A/SharedFileList are out of sync. Falling back to library file for linking. 5 ld: warning: text-based stub file /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/SharedFileList.framework/Versions/A/SharedFileList.tbd and library file /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/SharedFileList.framework/Versions/A/SharedFileList are out of sync. Falling back to library file for linking.
6 6
7... caused by recent version of Xcode which break C++11 detection under macOS. 7... caused by recent version of Xcode which break C++11 detection under macOS.
8 8
9--- Source/Checks/cm_cxx_features.cmake.orig 2018-07-17 11:29:00.000000000 +0000 9
 10Handle mismatch between C++ compiler and C++ library by checking for C++17 features
 11(std::size, std::cend, std::cbegin)
 12https://gitlab.kitware.com/cmake/cmake/merge_requests/3030/diffs
 13
 14--- Source/Checks/cm_cxx_features.cmake.orig 2019-02-01 13:35:27.000000000 +0000
10+++ Source/Checks/cm_cxx_features.cmake 15+++ Source/Checks/cm_cxx_features.cmake
11@@ -21,6 +21,7 @@ function(cm_check_cxx_feature name) 16@@ -21,6 +21,7 @@ function(cm_check_cxx_feature name)
12 string(REGEX REPLACE "[^\n]*warning:[^\n]*-Winvalid-command-line-argument[^\n]*" "" check_output "${check_output}") 17 string(REGEX REPLACE "[^\n]*warning:[^\n]*-Winvalid-command-line-argument[^\n]*" "" check_output "${check_output}")
13 # Filter out warnings caused by local configuration. 18 # Filter out warnings caused by local configuration.
14 string(REGEX REPLACE "[^\n]*warning:[^\n]*directory not found for option[^\n]*" "" check_output "${check_output}") 19 string(REGEX REPLACE "[^\n]*warning:[^\n]*directory not found for option[^\n]*" "" check_output "${check_output}")
15+ string(REGEX REPLACE "[^\n]*warning:[^\n]*text-based stub file [^\n]* and library file [^\n]* are out of sync[^\n]*" "" check_output "${check_output}") 20+ string(REGEX REPLACE "[^\n]*warning:[^\n]*text-based stub file [^\n]* and library file [^\n]* are out of sync[^\n]*" "" check_output "${check_output}")
16 string(REGEX REPLACE "[^\n]*warning:[^\n]*object file compiled with -mlong-branch which is no longer needed[^\n]*" "" check_output "${check_output}") 21 string(REGEX REPLACE "[^\n]*warning:[^\n]*object file compiled with -mlong-branch which is no longer needed[^\n]*" "" check_output "${check_output}")
17 # Filter out xcodebuild warnings. 22 # Filter out xcodebuild warnings.
18 string(REGEX REPLACE "[^\n]* xcodebuild\\[[0-9]*:[0-9]*\\] warning: [^\n]*" "" check_output "${check_output}") 23 string(REGEX REPLACE "[^\n]* xcodebuild\\[[0-9]*:[0-9]*\\] warning: [^\n]*" "" check_output "${check_output}")
 24@@ -51,3 +52,18 @@ if(CMake_HAVE_CXX_MAKE_UNIQUE)
 25 set(CMake_HAVE_CXX_UNIQUE_PTR 1)
 26 endif()
 27 cm_check_cxx_feature(unique_ptr)
 28+
 29+cm_check_cxx_feature(size_t)
 30+if(CMake_HAVE_CXX_SIZE_T)
 31+ set(CMake_HAVE_CXX_SIZE_T 1)
 32+endif()
 33+
 34+cm_check_cxx_feature(cbegin)
 35+if(CMake_HAVE_CXX_CBEGIN)
 36+ set(CMake_HAVE_CXX_CBEGIN 1)
 37+endif()
 38+
 39+cm_check_cxx_feature(cend)
 40+if(CMake_HAVE_CXX_CEND)
 41+ set(CMake_HAVE_CXX_CEND 1)
 42+endif()

File Added: pkgsrc/devel/cmake/patches/Attic/patch-Source_cmAlgorithms.h
$NetBSD: patch-Source_cmAlgorithms.h,v 1.1 2019/02/27 13:18:01 maya Exp $

Handle mismatch between C++ compiler and C++ library by checking for C++17 features
(std::size, std::cend, std::cbegin)
https://gitlab.kitware.com/cmake/cmake/merge_requests/3030/diffs

--- Source/cmAlgorithms.h.orig	2019-02-01 13:35:27.000000000 +0000
+++ Source/cmAlgorithms.h
@@ -367,7 +367,8 @@ std::unique_ptr<T> make_unique(Args&&...
 
 #endif
 
-#if __cplusplus >= 201703L || defined(_MSVC_LANG) && _MSVC_LANG >= 201703L
+#if defined(CMake_HAVE_CXX_SIZE_T) ||                                         \
+  defined(_MSVC_LANG) && _MSVC_LANG >= 201703L
 
 using std::size;
 
@@ -396,14 +397,14 @@ constexpr
 
 #endif
 
-#if __cplusplus >= 201402L || defined(_MSVC_LANG) && _MSVC_LANG >= 201402L
+#if defined(CMake_HAVE_CXX_CBEGIN) ||                                         \
+  defined(_MSVC_LANG) && _MSVC_LANG >= 201402L
 
 using std::cbegin;
-using std::cend;
 
 #else
 
-// std::c{begin,end} backport from C++14
+// std::cbegin backport from C++14
 template <class C>
 #  if defined(_MSC_VER) && _MSC_VER < 1900
 auto cbegin(C const& c)
@@ -415,6 +416,16 @@ constexpr auto cbegin(C const& c) noexce
   return std::begin(c);
 }
 
+#endif
+
+#if defined(CMake_HAVE_CXX_CEND) ||                                           \
+  defined(_MSVC_LANG) && _MSVC_LANG >= 201402L
+
+using std::cend;
+
+#else
+
+// std::cend backport from C++14
 template <class C>
 #  if defined(_MSC_VER) && _MSC_VER < 1900
 auto cend(C const& c)