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]] -=-=-=-=-=-=-=-=-=-=-=-
