On Wed, Nov 25, 2020 at 2:23 AM Valek, Andrej <[email protected]> wrote:
>
> What does it mean? Should I also "remove" the ${lcl_maybe_fortify} From 
> C/CXXFLAGS?
> Because I would like to keep them only in _RELEASE case.
>

I think that will mean cmake will ignore security flags. Aside from
this I really don't encourage the concept of
release vs debug. one should debug what is shipped. This catches maximum bugs.

> Regards,
> Andrej
>
> >
> >>> Keep only flags related to release in particular part _RELEASE (same
> >> for debug). This option allows to really use the Release/Debug build
> >> type in cmake. The corresponding build type will have corresponding
> >> flags set with/without optimization. Flags are respecting selected
> >> optimization from the whole build.
> >>
> >> Signed-off-by: Andrej Valek <[email protected]>
> >> Signed-off-by: Pascal Bach <[email protected]>
> >> Signed-off-by: Adrian Freihofer <[email protected]>
> >> ---
> >>  meta/classes/cmake.bbclass | 36 ++++++++++++++++++++++++++++--------
> >>  1 file changed, 28 insertions(+), 8 deletions(-)
> >>
> >> diff --git a/meta/classes/cmake.bbclass b/meta/classes/cmake.bbclass
> >> index 7c055e8a3d..1305b40bf9 100644
> >> --- a/meta/classes/cmake.bbclass
> >> +++ b/meta/classes/cmake.bbclass
> >> @@ -25,14 +25,25 @@ python() {
> >>  OECMAKE_AR ?= "${AR}"
> >>
> >>  # Compiler flags
> >> -OECMAKE_C_FLAGS ?= "${HOST_CC_ARCH} ${TOOLCHAIN_OPTIONS} ${CFLAGS}"
> >> -OECMAKE_CXX_FLAGS ?= "${HOST_CC_ARCH} ${TOOLCHAIN_OPTIONS} ${CXXFLAGS}"
> >> -OECMAKE_C_FLAGS_RELEASE ?= "-DNDEBUG"
> >> -OECMAKE_CXX_FLAGS_RELEASE ?= "-DNDEBUG"
> >> -OECMAKE_C_LINK_FLAGS ?= "${HOST_CC_ARCH} ${TOOLCHAIN_OPTIONS} ${CPPFLAGS} 
> >> ${LDFLAGS}"
> >> -OECMAKE_CXX_LINK_FLAGS ?= "${HOST_CC_ARCH} ${TOOLCHAIN_OPTIONS} 
> >> ${CXXFLAGS} ${LDFLAGS}"
> >> -CXXFLAGS += "${HOST_CC_ARCH} ${TOOLCHAIN_OPTIONS}"
> >> -CFLAGS += "${HOST_CC_ARCH} ${TOOLCHAIN_OPTIONS}"
> >> +OECMAKE_C_FLAGS ?= "${HOST_CC_ARCH_COMMON} ${TOOLCHAIN_OPTIONS} 
> >> ${CFLAGS_COMMON}"
> >
> > CMAKE_<LANG>_FLAGS are seeded with CFLAGS/CXXFLAGS etc from the environment 
> > and used during configure steps when cmake is invoking compiler to compile 
> > small sample to determine functionality and these tests will start to fail. 
> > especially cases where we use security flags which should accompany some 
> > -On or else compile will warn and if warnings are being treated as errors 
> > then it will fail the test.
> >
> >> +OECMAKE_CXX_FLAGS ?= "${HOST_CC_ARCH_COMMON} ${TOOLCHAIN_OPTIONS} 
> >> ${CXXFLAGS_COMMON}"
> >> +OECMAKE_C_FLAGS_RELEASE ?= "${SELECTED_OPTIMIZATION} ${lcl_maybe_fortify} 
> >> -DNDEBUG"
> >> +OECMAKE_CXX_FLAGS_RELEASE ?= "${SELECTED_OPTIMIZATION} 
> >> ${lcl_maybe_fortify} -DNDEBUG"
> >> +OECMAKE_C_FLAGS_DEBUG ?= "${DEBUG_OPTIMIZATION}"
> >> +OECMAKE_CXX_FLAGS_DEBUG ?= "${DEBUG_OPTIMIZATION}"
> >> +OECMAKE_C_LINK_FLAGS ?= "${HOST_CC_ARCH_COMMON} ${TOOLCHAIN_OPTIONS} 
> >> ${CPPFLAGS} ${LDFLAGS}"
> >> +OECMAKE_CXX_LINK_FLAGS ?= "${HOST_CC_ARCH_COMMON} ${TOOLCHAIN_OPTIONS} 
> >> ${CXXFLAGS_COMMON} ${LDFLAGS}"
> >> +OECMAKE_LINKER_FLAGS_RELEASE ?= "${SELECTED_OPTIMIZATION} 
> >> ${lcl_maybe_fortify}"
> >> +OECMAKE_LINKER_FLAGS_DEBUG ?= "${DEBUG_OPTIMIZATION}"
> >> +CXXFLAGS += "${HOST_CC_ARCH_COMMON} ${TOOLCHAIN_OPTIONS}"
> >> +CFLAGS += "${HOST_CC_ARCH_COMMON} ${TOOLCHAIN_OPTIONS}"
> >> +
> >> +# Common compiler flags
> >> +# CFLAGS/CXXFLAGS without optimization # HOST_CC_ARCH without fortify
> >> +CFLAGS_COMMON = 
> >> "${@d.getVar('CFLAGS').replace(d.getVar('SELECTED_OPTIMIZATION'),'')}"
> >> +CXXFLAGS_COMMON = 
> >> "${@d.getVar('CXXFLAGS').replace(d.getVar('SELECTED_OPTIMIZATION'),'')}"
> >> +HOST_CC_ARCH_COMMON = 
> >> "${@d.getVar('HOST_CC_ARCH').replace(d.getVar('lcl_maybe_fortify'),'')}"
> >>
> >>  def oecmake_map_compiler(compiler, d):
> >>      args = d.getVar(compiler).split() @@ -107,8 +118,17 @@ set(
> >> CMAKE_ASM_FLAGS "${OECMAKE_C_FLAGS}" CACHE STRING "ASM FLAGS" )  set(
> >> CMAKE_C_FLAGS_RELEASE "${OECMAKE_C_FLAGS_RELEASE}" CACHE STRING
> >> "Additional CFLAGS for release" )  set( CMAKE_CXX_FLAGS_RELEASE
> >> "${OECMAKE_CXX_FLAGS_RELEASE}" CACHE STRING "Additional CXXFLAGS for
> >> release" )  set( CMAKE_ASM_FLAGS_RELEASE "${OECMAKE_C_FLAGS_RELEASE}"
> >> CACHE STRING "Additional ASM FLAGS for release" )
> >> +set( CMAKE_C_FLAGS_DEBUG "${OECMAKE_C_FLAGS_DEBUG}" CACHE STRING
> >> +"Additional CFLAGS for debug" ) set( CMAKE_CXX_FLAGS_DEBUG
> >> +"${OECMAKE_CXX_FLAGS_DEBUG}" CACHE STRING "Additional CXXFLAGS for
> >> +debug" ) set( CMAKE_ASM_FLAGS_DEBUG "${OECMAKE_C_FLAGS_DEBUG}" CACHE
> >> +STRING "Additional ASM FLAGS for debug" )
> >>  set( CMAKE_C_LINK_FLAGS "${OECMAKE_C_LINK_FLAGS}" CACHE STRING
> >> "LDFLAGS" )  set( CMAKE_CXX_LINK_FLAGS "${OECMAKE_CXX_LINK_FLAGS}"
> >> CACHE STRING "LDFLAGS" )
> >> +set( CMAKE_SHARED_LINKER_FLAGS_RELEASE
> >> +"${OECMAKE_LINKER_FLAGS_RELEASE}" CACHE STRING "Additional SHARED
> >> +LINKER FLAGS for release" ) set( CMAKE_SHARED_LINKER_FLAGS_DEBUG
> >> +"${OECMAKE_LINKER_FLAGS_DEBUG}" CACHE STRING "Additional SHARED
> >> +LINKER FLAGS for debug" ) set( CMAKE_MODULE_LINKER_FLAGS_RELEASE
> >> +"${OECMAKE_LINKER_FLAGS_RELEASE}" CACHE STRING "Additional MODULE
> >> +LINKER FLAGS for release" ) set( CMAKE_MODULE_LINKER_FLAGS_DEBUG
> >> +"${OECMAKE_LINKER_FLAGS_DEBUG}" CACHE STRING "Additional MODULE
> >> +LINKER FLAGS for debug" ) set( CMAKE_EXE_LINKER_FLAGS_RELEASE
> >> +"${OECMAKE_LINKER_FLAGS_RELEASE}" CACHE STRING "Additional EXE LINKER
> >> +FLAGS for release" ) set( CMAKE_EXE_LINKER_FLAGS_DEBUG
> >> +"${OECMAKE_LINKER_FLAGS_DEBUG}" CACHE STRING "Additional EXE LINKER
> >> +FLAGS for debug" )
> >>
> >>  # only search in the paths provided so cmake doesnt pick  # up
> >> libraries and tools from the native build machine
> >> --
> >> 2.11.0
> >>
> >>
> >> 
> >>
-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#144983): 
https://lists.openembedded.org/g/openembedded-core/message/144983
Mute This Topic: https://lists.openembedded.org/mt/78460660/21656
Group Owner: [email protected]
Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub 
[[email protected]]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to