On Mon, Nov 23, 2020 at 11:04 AM Andrej Valek <[email protected]> wrote:
>
> 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 (#144959):
https://lists.openembedded.org/g/openembedded-core/message/144959
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]]
-=-=-=-=-=-=-=-=-=-=-=-