On Fri Nov 20, 2020 at 08:06:27PM +0000, Stuart Henderson wrote:
> On 2020/11/20 20:49, Rafael Sadowski wrote:
> > I would like to add an new cmake module option.
> > 
> > MODCMAKE_PORT_BUILD:
> > If set to `Yes', CMake will set all necessary options for a port build.
> > This does not change any default settings for use outside the ports
> > tree. Default value is `Yes'.
> > 
> > I have tested it with some ports and it works as desired.
> > 
> > I look forward to feedback and OKs.
> > 
> > Rafael
> > 
> > 
> > Index: port-modules.5
> > ===================================================================
> > RCS file: /cvs/src/share/man/man5/port-modules.5,v
> > retrieving revision 1.248
> > diff -u -p -r1.248 port-modules.5
> > --- port-modules.5  9 Oct 2020 13:24:43 -0000       1.248
> > +++ port-modules.5  17 Nov 2020 20:33:05 -0000
> > @@ -567,6 +567,10 @@ Changes
> >  to `test' as this is standard for CMake projects.
> >  Also this module has the following knobs:
> >  .Bl -tag -width Ds
> > +.It MODCMAKE_PORT_BUILD
> > +If set to `Yes', CMake will set all necessary options for a port build.
> > +This does not change any default settings for use outside the ports
> > +tree. Default value is `Yes'.
> >  .It MODCMAKE_WANTCOLOR
> >  If set to `Yes', CMake will colorize its output.
> >  Should not be used in ports Makefiles.
> 
> I'd prefer to skip the port-modules variable unless there's a real need
> (I don't think there will be though, do you?) i.e. like the diff below.

Thanks Stuart. I like it too. I'll wait a few more days until I commit
the diff.

> 
> 
> Index: Makefile
> ===================================================================
> RCS file: /cvs/ports/devel/cmake/Makefile,v
> retrieving revision 1.187
> diff -u -p -r1.187 Makefile
> --- Makefile  23 Oct 2020 13:44:30 -0000      1.187
> +++ Makefile  20 Nov 2020 19:58:26 -0000
> @@ -8,6 +8,7 @@ VER =         3.17.5
>  EPOCH =              0
>  DISTNAME =   cmake-${VER}
>  CATEGORIES = devel
> +REVISION =   0
>  
>  HOMEPAGE =   https://www.cmake.org/
>  
> Index: cmake.port.mk
> ===================================================================
> RCS file: /cvs/ports/devel/cmake/cmake.port.mk,v
> retrieving revision 1.67
> diff -u -p -r1.67 cmake.port.mk
> --- cmake.port.mk     17 Nov 2020 19:33:55 -0000      1.67
> +++ cmake.port.mk     20 Nov 2020 20:02:08 -0000
> @@ -121,6 +121,9 @@ TEST_TARGET ?=    test
>  MODCMAKE_WANTCOLOR ?= No
>  MODCMAKE_VERBOSE ?= Yes
>  
> +# Disable cmake's default optimization flags, putting them under ports 
> control
> +MAKE_ENV += MODCMAKE_PORT_BUILD=yes
> +
>  .if ${MODCMAKE_WANTCOLOR:L} == "yes" && defined(TERM)
>  MAKE_ENV += TERM=${TERM}
>  .endif
> @@ -128,4 +131,3 @@ MAKE_ENV += TERM=${TERM}
>  .if ${MODCMAKE_VERBOSE:L} == "yes"
>  MAKE_ENV += VERBOSE=1
>  .endif
> -
> Index: patches/patch-Modules_Compiler_G95-Fortran_cmake
> ===================================================================
> RCS file: 
> /cvs/ports/devel/cmake/patches/patch-Modules_Compiler_G95-Fortran_cmake,v
> retrieving revision 1.4
> diff -u -p -r1.4 patch-Modules_Compiler_G95-Fortran_cmake
> --- patches/patch-Modules_Compiler_G95-Fortran_cmake  28 Nov 2016 09:15:13 
> -0000      1.4
> +++ patches/patch-Modules_Compiler_G95-Fortran_cmake  20 Nov 2020 19:58:26 
> -0000
> @@ -1,13 +1,22 @@
>  $OpenBSD: patch-Modules_Compiler_G95-Fortran_cmake,v 1.4 2016/11/28 09:15:13 
> dcoppa Exp $
> ---- Modules/Compiler/G95-Fortran.cmake.orig  Sat Nov 26 12:29:14 2016
> -+++ Modules/Compiler/G95-Fortran.cmake       Sat Nov 26 12:29:44 2016
> -@@ -1,8 +1,6 @@
> +Index: Modules/Compiler/G95-Fortran.cmake
> +--- Modules/Compiler/G95-Fortran.cmake.orig
> ++++ Modules/Compiler/G95-Fortran.cmake
> +@@ -1,8 +1,13 @@
>   string(APPEND CMAKE_Fortran_FLAGS_INIT " ")
> - string(APPEND CMAKE_Fortran_FLAGS_DEBUG_INIT " -g")
> +-string(APPEND CMAKE_Fortran_FLAGS_DEBUG_INIT " -g")
>  -string(APPEND CMAKE_Fortran_FLAGS_MINSIZEREL_INIT " -Os")
>  -string(APPEND CMAKE_Fortran_FLAGS_RELEASE_INIT " -O3")
>  -string(APPEND CMAKE_Fortran_FLAGS_RELWITHDEBINFO_INIT " -O2 -g")
> -+string(APPEND CMAKE_Fortran_FLAGS_RELWITHDEBINFO_INIT " -g")
> ++if(DEFINED ENV{MODCMAKE_PORT_BUILD})
> ++  string(APPEND CMAKE_Fortran_FLAGS_DEBUG_INIT " -g")
> ++  string(APPEND CMAKE_Fortran_FLAGS_RELWITHDEBINFO_INIT " -g")
> ++else()
> ++  string(APPEND CMAKE_Fortran_FLAGS_DEBUG_INIT " -g")
> ++  string(APPEND CMAKE_Fortran_FLAGS_MINSIZEREL_INIT " -Os")
> ++  string(APPEND CMAKE_Fortran_FLAGS_RELEASE_INIT " -O3")
> ++  string(APPEND CMAKE_Fortran_FLAGS_RELWITHDEBINFO_INIT " -O2 -g")
> ++endif()
>   set(CMAKE_Fortran_MODDIR_FLAG "-fmod=")
>   set(CMAKE_Fortran_VERBOSE_FLAG "-v")
>   set(CMAKE_Fortran_FORMAT_FIXED_FLAG "-ffixed-form")
> Index: patches/patch-Modules_Compiler_GNU-Fortran_cmake
> ===================================================================
> RCS file: 
> /cvs/ports/devel/cmake/patches/patch-Modules_Compiler_GNU-Fortran_cmake,v
> retrieving revision 1.8
> diff -u -p -r1.8 patch-Modules_Compiler_GNU-Fortran_cmake
> --- patches/patch-Modules_Compiler_GNU-Fortran_cmake  21 Aug 2019 05:47:40 
> -0000      1.8
> +++ patches/patch-Modules_Compiler_GNU-Fortran_cmake  20 Nov 2020 19:58:26 
> -0000
> @@ -2,14 +2,18 @@ $OpenBSD: patch-Modules_Compiler_GNU-For
>  Index: Modules/Compiler/GNU-Fortran.cmake
>  --- Modules/Compiler/GNU-Fortran.cmake.orig
>  +++ Modules/Compiler/GNU-Fortran.cmake
> -@@ -12,10 +12,6 @@ set(CMAKE_Fortran_FORMAT_FREE_FLAG "-ffree-form")
> +@@ -12,9 +12,11 @@ set(CMAKE_Fortran_FORMAT_FREE_FLAG "-ffree-form")
>   
>   set(CMAKE_Fortran_POSTPROCESS_FLAG "-fpreprocessed")
>   
>  -# No -DNDEBUG for Fortran.
>  -string(APPEND CMAKE_Fortran_FLAGS_MINSIZEREL_INIT " -Os")
>  -string(APPEND CMAKE_Fortran_FLAGS_RELEASE_INIT " -O3")
> --
> ++if(NOT DEFINED ENV{MODCMAKE_PORT_BUILD})
> ++  # No -DNDEBUG for Fortran.
> ++  string(APPEND CMAKE_Fortran_FLAGS_MINSIZEREL_INIT " -Os")
> ++  string(APPEND CMAKE_Fortran_FLAGS_RELEASE_INIT " -O3")
> ++endif()
> + 
>   # No -isystem for Fortran because it will not find .mod files.
>   unset(CMAKE_INCLUDE_SYSTEM_FLAG_Fortran)
> - 
> Index: patches/patch-Modules_Compiler_GNU_cmake
> ===================================================================
> RCS file: /cvs/ports/devel/cmake/patches/patch-Modules_Compiler_GNU_cmake,v
> retrieving revision 1.14
> diff -u -p -r1.14 patch-Modules_Compiler_GNU_cmake
> --- patches/patch-Modules_Compiler_GNU_cmake  11 Jan 2020 08:01:09 -0000      
> 1.14
> +++ patches/patch-Modules_Compiler_GNU_cmake  20 Nov 2020 19:58:26 -0000
> @@ -2,16 +2,26 @@ $OpenBSD: patch-Modules_Compiler_GNU_cma
>  Index: Modules/Compiler/GNU.cmake
>  --- Modules/Compiler/GNU.cmake.orig
>  +++ Modules/Compiler/GNU.cmake
> -@@ -54,9 +54,9 @@ macro(__compiler_gnu lang)
> +@@ -53,10 +53,18 @@ macro(__compiler_gnu lang)
> + 
>     # Initial configuration flags.
>     string(APPEND CMAKE_${lang}_FLAGS_INIT " ")
> -   string(APPEND CMAKE_${lang}_FLAGS_DEBUG_INIT " -g")
> +-  string(APPEND CMAKE_${lang}_FLAGS_DEBUG_INIT " -g")
>  -  string(APPEND CMAKE_${lang}_FLAGS_MINSIZEREL_INIT " -Os -DNDEBUG")
>  -  string(APPEND CMAKE_${lang}_FLAGS_RELEASE_INIT " -O3 -DNDEBUG")
>  -  string(APPEND CMAKE_${lang}_FLAGS_RELWITHDEBINFO_INIT " -O2 -g -DNDEBUG")
> -+  string(APPEND CMAKE_${lang}_FLAGS_MINSIZEREL_INIT " -DNDEBUG")
> -+  string(APPEND CMAKE_${lang}_FLAGS_RELEASE_INIT " -DNDEBUG")
> -+  string(APPEND CMAKE_${lang}_FLAGS_RELWITHDEBINFO_INIT " -g -DNDEBUG")
> ++  if(DEFINED ENV{MODCMAKE_PORT_BUILD})
> ++    string(APPEND CMAKE_${lang}_FLAGS_DEBUG_INIT " -g")
> ++    string(APPEND CMAKE_${lang}_FLAGS_MINSIZEREL_INIT " -DNDEBUG")
> ++    string(APPEND CMAKE_${lang}_FLAGS_RELEASE_INIT " -DNDEBUG")
> ++    string(APPEND CMAKE_${lang}_FLAGS_RELWITHDEBINFO_INIT " -g -DNDEBUG")
> ++  else()
> ++    string(APPEND CMAKE_${lang}_FLAGS_DEBUG_INIT " -g")
> ++    string(APPEND CMAKE_${lang}_FLAGS_MINSIZEREL_INIT " -Os -DNDEBUG")
> ++    string(APPEND CMAKE_${lang}_FLAGS_RELEASE_INIT " -O3 -DNDEBUG")
> ++    string(APPEND CMAKE_${lang}_FLAGS_RELWITHDEBINFO_INIT " -O2 -g 
> -DNDEBUG")
> ++  endif()
> ++
>     set(CMAKE_${lang}_CREATE_PREPROCESSED_SOURCE "<CMAKE_${lang}_COMPILER> 
> <DEFINES> <INCLUDES> <FLAGS> -E <SOURCE> > <PREPROCESSED_SOURCE>")
>     set(CMAKE_${lang}_CREATE_ASSEMBLY_SOURCE "<CMAKE_${lang}_COMPILER> 
> <DEFINES> <INCLUDES> <FLAGS> -S <SOURCE> -o <ASSEMBLY_SOURCE>")
>     if(NOT APPLE OR NOT CMAKE_${lang}_COMPILER_VERSION VERSION_LESS 4) # work 
> around #4462
> 

Reply via email to