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.diff -r1.159 -r1.160 pkgsrc/devel/cmake/Makefile
(maya)
@@ -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 | |||
5 | DISTNAME= cmake-${CMAKE_VERSION} | 5 | DISTNAME= cmake-${CMAKE_VERSION} | |
6 | CATEGORIES= devel | 6 | CATEGORIES= devel | |
7 | MASTER_SITES= https://cmake.org/files/v${CMAKE_API}/ | 7 | MASTER_SITES= https://cmake.org/files/v${CMAKE_API}/ | |
8 | 8 | |||
9 | MAINTAINER= pkgsrc-users@NetBSD.org | 9 | MAINTAINER= pkgsrc-users@NetBSD.org | |
10 | HOMEPAGE= http://www.cmake.org/ | 10 | HOMEPAGE= http://www.cmake.org/ | |
11 | COMMENT= Cross platform make | 11 | COMMENT= Cross platform make | |
12 | LICENSE= modified-bsd | 12 | LICENSE= modified-bsd | |
13 | 13 | |||
14 | USE_TOOLS+= gmake | 14 | USE_TOOLS+= gmake | |
@@ -42,26 +42,29 @@ PLIST_SUBST+= CMAKE_API=${CMAKE_API} | @@ -42,26 +42,29 @@ PLIST_SUBST+= CMAKE_API=${CMAKE_API} | |||
42 | UNLIMIT_RESOURCES= datasize | 42 | UNLIMIT_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 | |
45 | TEST_TARGET= test | 45 | TEST_TARGET= test | |
46 | 46 | |||
47 | SUBST_CLASSES+= cmake | 47 | SUBST_CLASSES+= cmake | |
48 | SUBST_STAGE.cmake= pre-configure | 48 | SUBST_STAGE.cmake= pre-configure | |
49 | SUBST_MESSAGE.cmake= Fixing LOCALBASE and X11 paths. | 49 | SUBST_MESSAGE.cmake= Fixing LOCALBASE and X11 paths. | |
50 | SUBST_FILES.cmake+= Modules/FindX11.cmake | 50 | SUBST_FILES.cmake+= Modules/FindX11.cmake | |
51 | SUBST_FILES.cmake+= Modules/Platform/UnixPaths.cmake | 51 | SUBST_FILES.cmake+= Modules/Platform/UnixPaths.cmake | |
52 | SUBST_VARS.cmake= LOCALBASE X11BASE | 52 | SUBST_VARS.cmake= LOCALBASE X11BASE | |
53 | 53 | |||
54 | pre-configure: | 54 | pre-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 | |||
62 | USE_CURSES= wsyncup | 65 | USE_CURSES= wsyncup | |
63 | 66 | |||
64 | BUILDLINK_API_DEPENDS.libarchive+= libarchive>=3.0.0 | 67 | BUILDLINK_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" |
@@ -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 | |||
3 | SHA1 (cmake-3.13.4.tar.gz) = 242ac4986ab38ddb06c7bfb7eb950e4c1b1ca770 | 3 | SHA1 (cmake-3.13.4.tar.gz) = 242ac4986ab38ddb06c7bfb7eb950e4c1b1ca770 | |
4 | RMD160 (cmake-3.13.4.tar.gz) = 6211b5315071015d2a949af077e4301c47e36fd4 | 4 | RMD160 (cmake-3.13.4.tar.gz) = 6211b5315071015d2a949af077e4301c47e36fd4 | |
5 | SHA512 (cmake-3.13.4.tar.gz) = 5a2cc092109652ced5a3a6ae00fe0c7d134efa7d90d59f376368408bb684343db9e144ee53b184f3437f8a86cf9976a130a1e1676c993d56b278a6640a418c93 | 5 | SHA512 (cmake-3.13.4.tar.gz) = 5a2cc092109652ced5a3a6ae00fe0c7d134efa7d90d59f376368408bb684343db9e144ee53b184f3437f8a86cf9976a130a1e1676c993d56b278a6640a418c93 | |
6 | Size (cmake-3.13.4.tar.gz) = 8617881 bytes | 6 | Size (cmake-3.13.4.tar.gz) = 8617881 bytes | |
7 | SHA1 (patch-CMakeLists.txt) = 01329182725814e27bc3945d1d62555b3a4a4033 | 7 | SHA1 (patch-CMakeLists.txt) = 01329182725814e27bc3945d1d62555b3a4a4033 | |
8 | SHA1 (patch-Modules_Compiler_GNU.cmake) = e091c53ac3f3a6cd811119d3231563df32e76bf9 | 8 | SHA1 (patch-Modules_Compiler_GNU.cmake) = e091c53ac3f3a6cd811119d3231563df32e76bf9 | |
9 | SHA1 (patch-Modules_FindCurses.cmake) = 1372faaf1b7a1b5f5f592c797f39e1a9002a24a6 | 9 | SHA1 (patch-Modules_FindCurses.cmake) = 1372faaf1b7a1b5f5f592c797f39e1a9002a24a6 | |
10 | SHA1 (patch-Modules_FindGTK2.cmake) = 51b7520d35fdec2a7bfcf494fe35ce0e3863e4ee | 10 | SHA1 (patch-Modules_FindGTK2.cmake) = 51b7520d35fdec2a7bfcf494fe35ce0e3863e4ee | |
11 | SHA1 (patch-Modules_FindPythonInterp.cmake) = d1b39bdcd654f2a4fc63463cd20de656cce3cf8f | 11 | SHA1 (patch-Modules_FindPythonInterp.cmake) = d1b39bdcd654f2a4fc63463cd20de656cce3cf8f | |
12 | SHA1 (patch-Modules_FindPythonLibs.cmake) = b5cedc6a2354beaf08e06d416c150154a7dc1f05 | 12 | SHA1 (patch-Modules_FindPythonLibs.cmake) = b5cedc6a2354beaf08e06d416c150154a7dc1f05 | |
13 | SHA1 (patch-Modules_FindX11.cmake) = 124a2d51155cb4455e8b829dc74598cbd50a4e1c | 13 | SHA1 (patch-Modules_FindX11.cmake) = 124a2d51155cb4455e8b829dc74598cbd50a4e1c | |
14 | SHA1 (patch-Modules_Platform_UnixPaths.cmake) = 38720e11b7b62cb702e80da19e044f070298f2db | 14 | SHA1 (patch-Modules_Platform_UnixPaths.cmake) = 38720e11b7b62cb702e80da19e044f070298f2db | |
15 | SHA1 (patch-Source_CMakeLists.txt) = 533667d43048b8bc2be17a766b5dc32f3101866e | 15 | SHA1 (patch-Source_CMakeLists.txt) = 533667d43048b8bc2be17a766b5dc32f3101866e | |
16 | SHA1 (patch-Source_Checks_Curses_CMakeLists.txt) = 37d95c6162cc1f4c0e47b537ac8204cb9fe75b8c | 16 | SHA1 (patch-Source_Checks_Curses_CMakeLists.txt) = 37d95c6162cc1f4c0e47b537ac8204cb9fe75b8c | |
17 | SHA1 (patch-Source_Checks_Curses_CheckCurses.c) = c86cae48f7b39fb735eba4788d4e9d595b2ccf3b | 17 | SHA1 (patch-Source_Checks_Curses_CheckCurses.c) = c86cae48f7b39fb735eba4788d4e9d595b2ccf3b | |
18 | SHA1 (patch-Source_Checks_cm__cxx17__check.cpp) = 35817b7ad4c43d8f82300c21a9fb76166325de97 | 18 | SHA1 (patch-Source_Checks_cm__cxx17__check.cpp) = 35817b7ad4c43d8f82300c21a9fb76166325de97 | |
19 | SHA1 (patch-Source_Checks_cm_cxx_features.cmake) = 3d6e3ac6ad25890d223601c15fb208b8e77ff77c | 19 | SHA1 (patch-Source_Checks_cm_cxx_features.cmake) = 2ba746a927765361738914bf1d00ba191a2e849f | |
20 | SHA1 (patch-Source_CursesDialog_ccmake.cxx) = d7baafe6612b6ac9b0542ed10ffcf90cd8d1df87 | 20 | SHA1 (patch-Source_CursesDialog_ccmake.cxx) = d7baafe6612b6ac9b0542ed10ffcf90cd8d1df87 | |
21 | SHA1 (patch-Source_cmAlgorithms.h) = 9a9e997af5af78d004ff62d86cba5070cd5470ff | |||
21 | SHA1 (patch-Utilities_KWIML_CMakeLists.txt) = e4bdf9fc58757e87bf7e3e3e195839eededbc796 | 22 | SHA1 (patch-Utilities_KWIML_CMakeLists.txt) = e4bdf9fc58757e87bf7e3e3e195839eededbc796 | |
22 | SHA1 (patch-bootstrap) = 9d99cfe9f9ae826250f94bc297f5a22b8de09e84 | 23 | SHA1 (patch-bootstrap) = 9d99cfe9f9ae826250f94bc297f5a22b8de09e84 |
#include <iterator>
int main()
{
int a[] = { 0, 1, 2 };
auto ai = std::cbegin(a);
return *ai;
}
#include <iterator>
int main()
{
int a[] = { 2, 1, 0 };
auto ai = std::cend(a);
return *(ai - 1);
}
#include <cstddef>
int main()
{
std::size_t t = 0;
return static_cast<int>(t);
}
@@ -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 | |||
3 | Ignore warnings like ... | 3 | Ignore 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 | ||
10 | Handle mismatch between C++ compiler and C++ library by checking for C++17 features | |||
11 | (std::size, std::cend, std::cbegin) | |||
12 | https://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() |
$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)