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.
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 (#144968):
https://lists.openembedded.org/g/openembedded-core/message/144968
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]]
-=-=-=-=-=-=-=-=-=-=-=-