From 1120289fdbf64deb45ae9f5b5723d76bd869563b Mon Sep 17 00:00:00 2001 From: Alexander Smorkalov Date: Thu, 24 Jan 2013 13:29:55 +0400 Subject: [PATCH] Compiler and linker flags for arm cross compilation fixed. --- platforms/linux/arm-gnueabi-hardfp.toolchain.cmake | 26 +++++++++++++++++++--- platforms/linux/arm-gnueabi-softfp.toolchain.cmake | 26 +++++++++++++++++++--- 2 files changed, 46 insertions(+), 6 deletions(-) diff --git a/platforms/linux/arm-gnueabi-hardfp.toolchain.cmake b/platforms/linux/arm-gnueabi-hardfp.toolchain.cmake index d1af222..b307b13 100644 --- a/platforms/linux/arm-gnueabi-hardfp.toolchain.cmake +++ b/platforms/linux/arm-gnueabi-hardfp.toolchain.cmake @@ -5,9 +5,29 @@ set(CMAKE_SYSTEM_PROCESSOR arm) set(CMAKE_C_COMPILER arm-linux-gnueabihf-gcc-4.6) set(CMAKE_CXX_COMPILER arm-linux-gnueabihf-g++-4.6) -#suppress compiller varning -set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-psabi" ) -set( CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-psabi" ) +set(CMAKE_CXX_FLAGS "" CACHE STRING "c++ flags") +set(CMAKE_C_FLAGS "" CACHE STRING "c flags") +set(CMAKE_SHARED_LINKER_FLAGS "" CACHE STRING "shared linker flags") +set(CMAKE_MODULE_LINKER_FLAGS "" CACHE STRING "module linker flags") +set(CMAKE_EXE_LINKER_FLAGS "-Wl,-z,nocopyreloc" CACHE STRING "executable linker flags") + +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mthumb -fdata-sections -Wa,--noexecstack -fsigned-char -Wno-psabi") +set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mthumb -fdata-sections -Wa,--noexecstack -fsigned-char -Wno-psabi") + +set(CMAKE_SHARED_LINKER_FLAGS "-Wl,--fix-cortex-a8 -Wl,--no-undefined -Wl,--gc-sections -Wl,-z,noexecstack -Wl,-z,relro -Wl,-z,now ${CMAKE_SHARED_LINKER_FLAGS}") +set(CMAKE_MODULE_LINKER_FLAGS "-Wl,--fix-cortex-a8 -Wl,--no-undefined -Wl,--gc-sections -Wl,-z,noexecstack -Wl,-z,relro -Wl,-z,now ${CMAKE_MODULE_LINKER_FLAGS}") +set(CMAKE_EXE_LINKER_FLAGS "-Wl,--fix-cortex-a8 -Wl,--no-undefined -Wl,--gc-sections -Wl,-z,noexecstack -Wl,-z,relro -Wl,-z,now ${CMAKE_EXE_LINKER_FLAGS}") + +if(USE_NEON) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mfpu=neon") + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mfpu=neon") +elseif(USE_VFPV3) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mfpu=vfpv3") + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mfpu=vfpv3") +else() + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mfpu=vfpv3-d16") + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mfpu=vfpv3-d16") +endif() # can be any other plases set(ARM_LINUX_SYSROOT /usr/arm-linux-gnueabihf CACHE PATH "ARM cross compilation system root") diff --git a/platforms/linux/arm-gnueabi-softfp.toolchain.cmake b/platforms/linux/arm-gnueabi-softfp.toolchain.cmake index 597f1ec..73c14c3 100644 --- a/platforms/linux/arm-gnueabi-softfp.toolchain.cmake +++ b/platforms/linux/arm-gnueabi-softfp.toolchain.cmake @@ -5,9 +5,29 @@ set(CMAKE_SYSTEM_PROCESSOR arm) set(CMAKE_C_COMPILER arm-linux-gnueabi-gcc-4.6) set(CMAKE_CXX_COMPILER arm-linux-gnueabi-g++-4.6) -#suppress compiller varning -set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-psabi" ) -set( CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-psabi" ) +set(CMAKE_CXX_FLAGS "" CACHE STRING "c++ flags") +set(CMAKE_C_FLAGS "" CACHE STRING "c flags") +set(CMAKE_SHARED_LINKER_FLAGS "" CACHE STRING "shared linker flags") +set(CMAKE_MODULE_LINKER_FLAGS "" CACHE STRING "module linker flags") +set(CMAKE_EXE_LINKER_FLAGS "-Wl,-z,nocopyreloc" CACHE STRING "executable linker flags") + +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mthumb -fdata-sections -Wa,--noexecstack -fsigned-char -Wno-psabi") +set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mthumb -fdata-sections -Wa,--noexecstack -fsigned-char -Wno-psabi") + +set(CMAKE_SHARED_LINKER_FLAGS "-Wl,--fix-cortex-a8 -Wl,--no-undefined -Wl,--gc-sections -Wl,-z,noexecstack -Wl,-z,relro -Wl,-z,now ${CMAKE_SHARED_LINKER_FLAGS}") +set(CMAKE_MODULE_LINKER_FLAGS "-Wl,--fix-cortex-a8 -Wl,--no-undefined -Wl,--gc-sections -Wl,-z,noexecstack -Wl,-z,relro -Wl,-z,now ${CMAKE_MODULE_LINKER_FLAGS}") +set(CMAKE_EXE_LINKER_FLAGS "-Wl,--fix-cortex-a8 -Wl,--no-undefined -Wl,--gc-sections -Wl,-z,noexecstack -Wl,-z,relro -Wl,-z,now ${CMAKE_EXE_LINKER_FLAGS}") + +if(USE_NEON) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mfpu=neon") + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mfpu=neon") +elseif(USE_VFPV3) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mfpu=vfpv3") + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mfpu=vfpv3") +else() + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mfpu=vfpv3-d16") + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mfpu=vfpv3-d16") +endif() # can be any other plases set(ARM_LINUX_SYSROOT /usr/arm-linux-gnueabi CACHE PATH "ARM cross compilation system root") -- 2.7.4