Re: cmake does not use -O2 for Release builds

2020-10-07 Thread Julian Smith
On Tue, 6 Oct 2020 13:29:56 - (UTC)
Stuart Henderson  wrote:

> On 2020-10-05, Julian Smith  wrote:
> > It looks like OpenBSD's cmake port patches cmake to remove the use
> > of -O2 in Release and RelWithDebInfo builds -
> > /usr/ports/devel/cmake/patches/patch-Modules_Compiler_GNU_cmake has:
> >
> > -  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")
> >
> > Does anyone know why things are patched in this way?
> >
> >
> > [I think one can force optimisation with (for example):
> >
> > cmake -DCMAKE_CXX_FLAGS_RELWITHDEBINFO="-O2 -g -DNDEBUG"  ...
> > ]
> >
> >
> > Thanks,
> >
> > - Jules
> >  
> 
> It's setup to work with builds done from ports, which should not
> override whatever optimization level is set by either the user or the
> build infrastructure.
> 
> The downside is that you need to add this yourself for builds from
> outside ports.

Thanks for the explanation.

Would it be worth documenting this in the cmake(1) manpage? If so, i'll
submit a patch.

It's quite confusing to have cmake not optimise by default for Release
or RelWithDeb builds - i built OpenSceneGraph-3.6 while working on
Flightgear and it took a rather long time to figure out why i was
getting such a reduced frame rate.

Thanks,

- Jules

-- 
http://op59.net




Re: cmake does not use -O2 for Release builds

2020-10-06 Thread Stuart Henderson
On 2020-10-05, Julian Smith  wrote:
> It looks like OpenBSD's cmake port patches cmake to remove the use of
> -O2 in Release and RelWithDebInfo builds -
> /usr/ports/devel/cmake/patches/patch-Modules_Compiler_GNU_cmake has:
>
> -  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")
>
> Does anyone know why things are patched in this way?
>
>
> [I think one can force optimisation with (for example):
>
> cmake -DCMAKE_CXX_FLAGS_RELWITHDEBINFO="-O2 -g -DNDEBUG"  ...
> ]
>
>
> Thanks,
>
> - Jules
>

It's setup to work with builds done from ports, which should not
override whatever optimization level is set by either the user or the
build infrastructure.

The downside is that you need to add this yourself for builds from
outside ports.




cmake does not use -O2 for Release builds

2020-10-05 Thread Julian Smith
It looks like OpenBSD's cmake port patches cmake to remove the use of
-O2 in Release and RelWithDebInfo builds -
/usr/ports/devel/cmake/patches/patch-Modules_Compiler_GNU_cmake has:

-  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")

Does anyone know why things are patched in this way?


[I think one can force optimisation with (for example):

cmake -DCMAKE_CXX_FLAGS_RELWITHDEBINFO="-O2 -g -DNDEBUG"  ...
]


Thanks,

- Jules

-- 
http://op59.net