Wed Aug 9 06:45:06 2023 UTC ()
cmake: don't attempt to use LTO with GCC 12 when building Fortran code


(tnn)
diff -r1.210 -r1.211 pkgsrc/devel/cmake/Makefile
diff -r1.213 -r1.214 pkgsrc/devel/cmake/distinfo
diff -r0 -r1.1 pkgsrc/devel/cmake/patches/patch-Modules_FortranCInterface_CMakeLists.txt

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

--- pkgsrc/devel/cmake/Makefile 2023/08/02 15:25:21 1.210
+++ pkgsrc/devel/cmake/Makefile 2023/08/09 06:45:06 1.211
@@ -1,16 +1,17 @@ @@ -1,16 +1,17 @@
1# $NetBSD: Makefile,v 1.210 2023/08/02 15:25:21 adam Exp $ 1# $NetBSD: Makefile,v 1.211 2023/08/09 06:45:06 tnn Exp $
2 2
3.include "Makefile.common" 3.include "Makefile.common"
 4PKGREVISION= 1
4 5
5COMMENT= Cross platform make 6COMMENT= Cross platform make
6 7
7USE_TOOLS+= gmake 8USE_TOOLS+= gmake
8HAS_CONFIGURE= yes 9HAS_CONFIGURE= yes
9CONFIGURE_SCRIPT= bootstrap 10CONFIGURE_SCRIPT= bootstrap
10 11
11BUILD_TARGET= default_target 12BUILD_TARGET= default_target
12 13
13CONFIGURE_HAS_MANDIR= no 14CONFIGURE_HAS_MANDIR= no
14CONFIGURE_ARGS+= --bootstrap-system-libuv 15CONFIGURE_ARGS+= --bootstrap-system-libuv
15CONFIGURE_ARGS+= --bootstrap-system-librhash 16CONFIGURE_ARGS+= --bootstrap-system-librhash
16CONFIGURE_ARGS+= --mandir=/${PKGMANDIR} 17CONFIGURE_ARGS+= --mandir=/${PKGMANDIR}
@@ -59,27 +60,27 @@ SUBST_VARS.cmake= LOCALBASE X11BASE @@ -59,27 +60,27 @@ SUBST_VARS.cmake= LOCALBASE X11BASE
59# On Darwin, system /bin/sh is restricted, so DYLD_LIBRARY_PATH can't be used. 60# On Darwin, system /bin/sh is restricted, so DYLD_LIBRARY_PATH can't be used.
60# This is needed for packages that execute binaries linked with not-yet 61# This is needed for packages that execute binaries linked with not-yet
61# installed shared libraries, like qt6-qtbase. 62# installed shared libraries, like qt6-qtbase.
62SUBST_CLASSES+= shell 63SUBST_CLASSES+= shell
63SUBST_STAGE.shell= pre-configure 64SUBST_STAGE.shell= pre-configure
64SUBST_MESSAGE.shell= Set custom SHELL in generated Makefiles. 65SUBST_MESSAGE.shell= Set custom SHELL in generated Makefiles.
65SUBST_FILES.shell+= Source/cmLocalUnixMakefileGenerator3.cxx 66SUBST_FILES.shell+= Source/cmLocalUnixMakefileGenerator3.cxx
66SUBST_SED.shell= -e 's,/bin/sh,${SH},g' 67SUBST_SED.shell= -e 's,/bin/sh,${SH},g'
67 68
68pre-configure: 69pre-configure:
69 ${CP} ${FILESDIR}/Source_Checks_cm_cxx_cbegin.cxx ${WRKSRC}/Source/Checks/cm_cxx_cbegin.cxx 70 ${CP} ${FILESDIR}/Source_Checks_cm_cxx_cbegin.cxx ${WRKSRC}/Source/Checks/cm_cxx_cbegin.cxx
70 ${CP} ${FILESDIR}/Source_Checks_cm_cxx_cend.cxx ${WRKSRC}/Source/Checks/cm_cxx_cend.cxx 71 ${CP} ${FILESDIR}/Source_Checks_cm_cxx_cend.cxx ${WRKSRC}/Source/Checks/cm_cxx_cend.cxx
71 ${CP} ${FILESDIR}/Source_Checks_cm_cxx_size_t.cxx ${WRKSRC}/Source/Checks/cm_cxx_size_t.cxx 72 ${CP} ${FILESDIR}/Source_Checks_cm_cxx_size_t.cxx ${WRKSRC}/Source/Checks/cm_cxx_size_t.cxx
72 ${RM} -f ${WRKSRC}/Modules/*.orig ${WRKSRC}/Modules/Compiler/*.orig ${WRKSRC}/Modules/Platform/*.orig ${WRKSRC}/Modules/FindPython/*.orig 73 ${FIND} ${WRKSRC}/Modules -type f -a -name "*.orig" -print | ${XARGS} ${RM}
73 ${LN} -f ${WRKSRC}/Modules/Platform/OpenBSD.cmake ${WRKSRC}/Modules/Platform/MirBSD.cmake 74 ${LN} -f ${WRKSRC}/Modules/Platform/OpenBSD.cmake ${WRKSRC}/Modules/Platform/MirBSD.cmake
74.for lang in C CXX Fortran 75.for lang in C CXX Fortran
75 ${LN} -f ${WRKSRC}/Modules/Platform/SunOS-GNU-${lang}.cmake \ 76 ${LN} -f ${WRKSRC}/Modules/Platform/SunOS-GNU-${lang}.cmake \
76 ${WRKSRC}/Modules/Platform/SunOS-Clang-${lang}.cmake 77 ${WRKSRC}/Modules/Platform/SunOS-Clang-${lang}.cmake
77.endfor 78.endfor
78 79
79USE_CURSES= wsyncup 80USE_CURSES= wsyncup
80 81
81BUILDLINK_API_DEPENDS.libarchive+= libarchive>=3.3.3 82BUILDLINK_API_DEPENDS.libarchive+= libarchive>=3.3.3
82BUILDLINK_API_DEPENDS.rhash+= rhash>=1.4.2nb1 83BUILDLINK_API_DEPENDS.rhash+= rhash>=1.4.2nb1
83.include "../../archivers/libarchive/buildlink3.mk" 84.include "../../archivers/libarchive/buildlink3.mk"
84.include "../../archivers/zstd/buildlink3.mk" 85.include "../../archivers/zstd/buildlink3.mk"
85.include "../../devel/libexecinfo/buildlink3.mk" 86.include "../../devel/libexecinfo/buildlink3.mk"

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

--- pkgsrc/devel/cmake/distinfo 2023/07/26 08:46:53 1.213
+++ pkgsrc/devel/cmake/distinfo 2023/08/09 06:45:06 1.214
@@ -1,24 +1,25 @@ @@ -1,24 +1,25 @@
1$NetBSD: distinfo,v 1.213 2023/07/26 08:46:53 adam Exp $ 1$NetBSD: distinfo,v 1.214 2023/08/09 06:45:06 tnn Exp $
2 2
3BLAKE2s (cmake-3.27.1.tar.gz) = 62f93b37fa71ed78684719f0f7afb08027112065152596aa5467adaefcf5a129 3BLAKE2s (cmake-3.27.1.tar.gz) = 62f93b37fa71ed78684719f0f7afb08027112065152596aa5467adaefcf5a129
4SHA512 (cmake-3.27.1.tar.gz) = d8831105fed3772bcb821a2b184fe0ffbff15795a5b0a89f2ad1cb0372a40c8f22f2bab72c671a6d17464521b7337067df929a5c3ece99f84848cc3a2fe6716f 4SHA512 (cmake-3.27.1.tar.gz) = d8831105fed3772bcb821a2b184fe0ffbff15795a5b0a89f2ad1cb0372a40c8f22f2bab72c671a6d17464521b7337067df929a5c3ece99f84848cc3a2fe6716f
5Size (cmake-3.27.1.tar.gz) = 10977868 bytes 5Size (cmake-3.27.1.tar.gz) = 10977868 bytes
6SHA1 (patch-Auxiliary_CMakeLists.txt) = 7a26ef79be53b9d0370029e83f203440aa0be2a4 6SHA1 (patch-Auxiliary_CMakeLists.txt) = 7a26ef79be53b9d0370029e83f203440aa0be2a4
7SHA1 (patch-CMakeLists.txt) = 0fb79458828a021a96e350bc4cf12875914f868b 7SHA1 (patch-CMakeLists.txt) = 0fb79458828a021a96e350bc4cf12875914f868b
8SHA1 (patch-Modules_Compiler_GNU.cmake) = e091c53ac3f3a6cd811119d3231563df32e76bf9 8SHA1 (patch-Modules_Compiler_GNU.cmake) = e091c53ac3f3a6cd811119d3231563df32e76bf9
9SHA1 (patch-Modules_FindCurses.cmake) = 98cac805a6abafcfb8b61e441b50a1d6aec27ad0 9SHA1 (patch-Modules_FindCurses.cmake) = 98cac805a6abafcfb8b61e441b50a1d6aec27ad0
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_FindPython_Support.cmake) = aaec7767cad795dd269c851bd110ccefbfc87eb3 13SHA1 (patch-Modules_FindPython_Support.cmake) = aaec7767cad795dd269c851bd110ccefbfc87eb3
14SHA1 (patch-Modules_FindX11.cmake) = 124a2d51155cb4455e8b829dc74598cbd50a4e1c 14SHA1 (patch-Modules_FindX11.cmake) = 124a2d51155cb4455e8b829dc74598cbd50a4e1c
 15SHA1 (patch-Modules_FortranCInterface_CMakeLists.txt) = 9782cba399e47770efc51a254267d6013fce9b50
15SHA1 (patch-Modules_Platform_Darwin.cmake) = 7629f034111ff64b144ff41316299d5edcfe081a 16SHA1 (patch-Modules_Platform_Darwin.cmake) = 7629f034111ff64b144ff41316299d5edcfe081a
16SHA1 (patch-Modules_Platform_UnixPaths.cmake) = 911271546d3ac52be0e8000857bdb236ac50ec1c 17SHA1 (patch-Modules_Platform_UnixPaths.cmake) = 911271546d3ac52be0e8000857bdb236ac50ec1c
17SHA1 (patch-Source_Checks_Curses_CMakeLists.txt) = 88b6eb834ce7f186f2ebf63a5c40355d0ace9cd9 18SHA1 (patch-Source_Checks_Curses_CMakeLists.txt) = 88b6eb834ce7f186f2ebf63a5c40355d0ace9cd9
18SHA1 (patch-Source_Checks_Curses_CheckCurses.c) = c86cae48f7b39fb735eba4788d4e9d595b2ccf3b 19SHA1 (patch-Source_Checks_Curses_CheckCurses.c) = c86cae48f7b39fb735eba4788d4e9d595b2ccf3b
19SHA1 (patch-Source_Checks_cm__cxx17__check.cpp) = d5e2708df6fcda078b1b5ea59264c663d2633ced 20SHA1 (patch-Source_Checks_cm__cxx17__check.cpp) = d5e2708df6fcda078b1b5ea59264c663d2633ced
20SHA1 (patch-Source_Modules_CMakeBuildUtilities.cmake) = 7046fb8a0d2aadb81e027d8e2f1a4bccf2bd79cf 21SHA1 (patch-Source_Modules_CMakeBuildUtilities.cmake) = 7046fb8a0d2aadb81e027d8e2f1a4bccf2bd79cf
21SHA1 (patch-Source_QtDialog_CMakeLists.txt) = 1cefaa7ee6cd09e84d699ea54844ae3811d890f7 22SHA1 (patch-Source_QtDialog_CMakeLists.txt) = 1cefaa7ee6cd09e84d699ea54844ae3811d890f7
22SHA1 (patch-Source_cmSystemTools.cxx) = 31d736e21ce7f03192cf029a8b6419caa6f00a65 23SHA1 (patch-Source_cmSystemTools.cxx) = 31d736e21ce7f03192cf029a8b6419caa6f00a65
23SHA1 (patch-Utilities_KWIML_CMakeLists.txt) = e4bdf9fc58757e87bf7e3e3e195839eededbc796 24SHA1 (patch-Utilities_KWIML_CMakeLists.txt) = e4bdf9fc58757e87bf7e3e3e195839eededbc796
24SHA1 (patch-bootstrap) = e34f5b888790e766338086b8c3680be79b71ef18 25SHA1 (patch-bootstrap) = e34f5b888790e766338086b8c3680be79b71ef18

File Added: pkgsrc/devel/cmake/patches/patch-Modules_FortranCInterface_CMakeLists.txt
$NetBSD: patch-Modules_FortranCInterface_CMakeLists.txt,v 1.1 2023/08/09 06:45:06 tnn Exp $

Don't attempt to use LTO with GCC 12 when building Fortran code.
It breaks FortranCInterface (math/lapack and others) when the compiler
lacks working LTO support. Such as with lang/gcc12 from pkgsrc.
Upstream PR about the problem:
https://gitlab.kitware.com/cmake/cmake/-/issues/23525

--- Modules/FortranCInterface/CMakeLists.txt.orig	2023-07-25 17:58:09.000000000 +0000
+++ Modules/FortranCInterface/CMakeLists.txt
@@ -113,11 +113,11 @@ target_link_libraries(FortranCInterface 
 if(CMAKE_Fortran_COMPILER_ID STREQUAL "GNU" AND
   CMAKE_Fortran_COMPILER_VERSION VERSION_GREATER_EQUAL 12)
   target_compile_options(FortranCInterface PRIVATE "-fno-lto")
-  target_compile_options(myfort PRIVATE "-flto=auto" "-ffat-lto-objects")
+  target_compile_options(myfort PRIVATE "-fno-lto")
 endif()
 if(CMAKE_C_COMPILER_ID STREQUAL "GNU" AND
   CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 12)
-  target_compile_options(symbols PRIVATE "-flto=auto" "-ffat-lto-objects")
+  target_compile_options(symbols PRIVATE "-fno-lto")
 endif()
 
 file(GENERATE OUTPUT exe-$<CONFIG>.cmake CONTENT [[