diff --git a/configs/arch/armv7/cortex-m4/tools-cfg.cmake b/configs/arch/armv7/cortex-m4/tools-cfg.cmake index f2f55c4..7478fc2 100644 --- a/configs/arch/armv7/cortex-m4/tools-cfg.cmake +++ b/configs/arch/armv7/cortex-m4/tools-cfg.cmake @@ -73,11 +73,18 @@ endif() # ============================================================================== # CMake Configuration # ============================================================================== +if(CMAKE_BUILD_TYPE STREQUAL "Debug") + set(OPTIMIZATION_FLAGS "-Og" CACHE STRING "Optimization flags" FORCE) +elseif(CMAKE_BUILD_TYPE STREQUAL "Release" OR CMAKE_BUILD_TYPE STREQUAL "RelWithDebInfo") + set(OPTIMIZATION_FLAGS "-O2" CACHE STRING "Optimization flags" FORCE) +else() + set(OPTIMIZATION_FLAGS "-O2" CACHE STRING "Optimization flags" FORCE) +endif() set(DMOD_ARCH "armv7-cortex-m4" CACHE STRING "Target architecture") set(DMOD_CPU "cortex-m4" CACHE STRING "Target CPU") set(COMMON_DEFINE_FLAGS "-DDMOD_ARCH=\\\"${DMOD_ARCH}\\\" -DDMOD_CPU=\\\"${DMOD_CPU}\\\"") set(FPU_FLAGS "-mfpu=fpv4-sp-d16 -mfloat-abi=hard" CACHE STRING "FPU configuration flags") -set(CPUCONFIG_CFLAGS "-mcpu=cortex-m4 -mthumb -mno-unaligned-access -DGCC_ARMCM4 ${COMMON_DEFINE_FLAGS} -mpic-data-is-text-relative -mabi=aapcs ${FPU_FLAGS}" CACHE STRING "C compiler flags") +set(CPUCONFIG_CFLAGS "-fno-builtin-memset-mcpu=cortex-m4 -mthumb -mno-unaligned-access -DGCC_ARMCM4 ${COMMON_DEFINE_FLAGS} -mpic-data-is-text-relative -mabi=aapcs ${FPU_FLAGS}" CACHE STRING "C compiler flags") set(CPUCONFIG_CXXFLAGS "-mcpu=cortex-m4 -mthumb -mno-unaligned-access -DGCC_ARMCM4 ${COMMON_DEFINE_FLAGS} -mpic-data-is-text-relative -mabi=aapcs ${FPU_FLAGS}" CACHE STRING "C++ compiler flags") set(CPUCONFIG_ASMFLAGS "-mcpu=cortex-m4 -mthumb -mno-unaligned-access -DGCC_ARMCM4 ${COMMON_DEFINE_FLAGS} -mpic-data-is-text-relative -mabi=aapcs ${FPU_FLAGS}" CACHE STRING "ASM compiler flags") set(CPUCONFIG_LDFLAGS "-mcpu=cortex-m4 -mthumb -mno-unaligned-access -Wl,--gc-sections -Wl,-static -mabi=aapcs ${FPU_FLAGS}" CACHE STRING "Linker flags") @@ -92,10 +99,10 @@ set(CMAKE_GDB "${ARM_GDB}" CACHE STRING "GDB") set(MAKE make CACHE STRING "Make") set(MKDIR mkdir CACHE STRING "Mkdir") set(RM rm CACHE STRING "Rm") -set(CMAKE_C_FLAGS "-Wall -std=c11 ${CPUCONFIG_CFLAGS}" CACHE STRING "C compiler flags") -set(CMAKE_CXX_FLAGS "-Wall -std=c++17 ${CPUCONFIG_CXXFLAGS}" CACHE STRING "C++ compiler flags") -set(CMAKE_ASM_FLAGS "${CPUCONFIG_ASMFLAGS}" CACHE STRING "ASM compiler flags") -set(CMAKE_ASM_FLAGS_DEBUG "${CPUCONFIG_ASMFLAGS} -g" CACHE STRING "ASM compiler flags for Debug") +set(CMAKE_C_FLAGS "${OPTIMIZATION_FLAGS} -Wall -std=c11 ${CPUCONFIG_CFLAGS}" CACHE STRING "C compiler flags") +set(CMAKE_CXX_FLAGS "${OPTIMIZATION_FLAGS} -Wall -std=c++17 ${CPUCONFIG_CXXFLAGS}" CACHE STRING "C++ compiler flags") +set(CMAKE_ASM_FLAGS "${OPTIMIZATION_FLAGS} ${CPUCONFIG_ASMFLAGS}" CACHE STRING "ASM compiler flags") +set(CMAKE_ASM_FLAGS_DEBUG "${OPTIMIZATION_FLAGS} ${CPUCONFIG_ASMFLAGS} -g" CACHE STRING "ASM compiler flags for Debug") set(CMAKE_EXE_LINKER_FLAGS "${CPUCONFIG_LDFLAGS}" CACHE STRING "Linker flags") set(CMAKE_TRY_COMPILE_TARGET_TYPE "STATIC_LIBRARY" CACHE STRING "Try compile target type") \ No newline at end of file diff --git a/configs/arch/armv7/cortex-m7/tools-cfg.cmake b/configs/arch/armv7/cortex-m7/tools-cfg.cmake index b92108a..bec8014 100644 --- a/configs/arch/armv7/cortex-m7/tools-cfg.cmake +++ b/configs/arch/armv7/cortex-m7/tools-cfg.cmake @@ -73,11 +73,19 @@ endif() # ============================================================================== # CMake Configuration # ============================================================================== +if(CMAKE_BUILD_TYPE STREQUAL "Debug") + set(OPTIMIZATION_FLAGS "-Og" CACHE STRING "Optimization flags" FORCE) +elseif(CMAKE_BUILD_TYPE STREQUAL "Release" OR CMAKE_BUILD_TYPE STREQUAL "RelWithDebInfo") + set(OPTIMIZATION_FLAGS "-O2" CACHE STRING "Optimization flags" FORCE) +else() + set(OPTIMIZATION_FLAGS "-O2" CACHE STRING "Optimization flags" FORCE) +endif() + set(DMOD_ARCH "armv7-cortex-m7" CACHE STRING "Target architecture") set(DMOD_CPU "cortex-m7" CACHE STRING "Target CPU") set(COMMON_DEFINE_FLAGS "-DDMOD_ARCH=\\\"${DMOD_ARCH}\\\" -DDMOD_CPU=\\\"${DMOD_CPU}\\\"") set(FPU_FLAGS "-mfpu=fpv5-sp-d16 -mfloat-abi=hard" CACHE STRING "FPU configuration flags") -set(CPUCONFIG_CFLAGS "-mcpu=cortex-m7 -mthumb -mno-unaligned-access -DGCC_ARMCM7 ${COMMON_DEFINE_FLAGS} -mpic-data-is-text-relative -mabi=aapcs ${FPU_FLAGS}" CACHE STRING "C compiler flags") +set(CPUCONFIG_CFLAGS "-fno-builtin-memset -mcpu=cortex-m7 -mthumb -mno-unaligned-access -DGCC_ARMCM7 ${COMMON_DEFINE_FLAGS} -mpic-data-is-text-relative -mabi=aapcs ${FPU_FLAGS}" CACHE STRING "C compiler flags") set(CPUCONFIG_CXXFLAGS "-mcpu=cortex-m7 -mthumb -mno-unaligned-access -DGCC_ARMCM7 ${COMMON_DEFINE_FLAGS} -mpic-data-is-text-relative -mabi=aapcs ${FPU_FLAGS}" CACHE STRING "C++ compiler flags") set(CPUCONFIG_ASMFLAGS "-mcpu=cortex-m7 -mthumb -mno-unaligned-access -DGCC_ARMCM7 ${COMMON_DEFINE_FLAGS} -mpic-data-is-text-relative -mabi=aapcs ${FPU_FLAGS}" CACHE STRING "ASM compiler flags") set(CPUCONFIG_LDFLAGS "-mcpu=cortex-m7 -mthumb -mno-unaligned-access -Wl,--gc-sections -Wl,-static -mabi=aapcs ${FPU_FLAGS}" CACHE STRING "Linker flags") @@ -92,10 +100,18 @@ set(CMAKE_GDB "${ARM_GDB}" CACHE STRING "GDB") set(MAKE make CACHE STRING "Make") set(MKDIR mkdir CACHE STRING "Mkdir") set(RM rm CACHE STRING "Rm") -set(CMAKE_C_FLAGS "-Wall -std=c11 ${CPUCONFIG_CFLAGS}" CACHE STRING "C compiler flags") -set(CMAKE_CXX_FLAGS "-Wall -std=c++17 ${CPUCONFIG_CXXFLAGS}" CACHE STRING "C++ compiler flags") -set(CMAKE_ASM_FLAGS "${CPUCONFIG_ASMFLAGS}" CACHE STRING "ASM compiler flags") -set(CMAKE_ASM_FLAGS_DEBUG "${CPUCONFIG_ASMFLAGS} -g" CACHE STRING "ASM compiler flags for Debug") +set(CMAKE_C_FLAGS "${OPTIMIZATION_FLAGS} -Wall -std=c11 ${CPUCONFIG_CFLAGS}" CACHE STRING "C compiler flags") +set(CMAKE_C_FLAGS_DEBUG "-Og -g" CACHE STRING "Flags used by the C compiler during DEBUG builds." FORCE) +set(CMAKE_C_FLAGS_RELEASE "-O2 -DNDEBUG" CACHE STRING "Flags used by the C compiler during RELEASE builds." FORCE) +set(CMAKE_C_FLAGS_RELWITHDEBINFO "-O2 -g -DNDEBUG" CACHE STRING "Flags used by the C compiler during RELWITHDEBINFO builds." FORCE) +set(CMAKE_CXX_FLAGS "${OPTIMIZATION_FLAGS} -Wall -std=c++17 ${CPUCONFIG_CXXFLAGS}" CACHE STRING "C++ compiler flags") +set(CMAKE_CXX_FLAGS_DEBUG "-Og -g" CACHE STRING "Flags used by the CXX compiler during DEBUG builds." FORCE) +set(CMAKE_CXX_FLAGS_RELEASE "-O2 -DNDEBUG" CACHE STRING "Flags used by the CXX compiler during RELEASE builds." FORCE) +set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O2 -g -DNDEBUG" CACHE STRING "Flags used by the CXX compiler during RELWITHDEBINFO builds." FORCE) +set(CMAKE_ASM_FLAGS "${OPTIMIZATION_FLAGS} ${CPUCONFIG_ASMFLAGS}" CACHE STRING "ASM compiler flags") +set(CMAKE_ASM_FLAGS_DEBUG "${CPUCONFIG_ASMFLAGS} -Og -g" CACHE STRING "ASM compiler flags for Debug" FORCE) +set(CMAKE_ASM_FLAGS_RELEASE "${CPUCONFIG_ASMFLAGS} -O2" CACHE STRING "ASM compiler flags for Release" FORCE) +set(CMAKE_ASM_FLAGS_RELWITHDEBINFO "${CPUCONFIG_ASMFLAGS} -O2 -g" CACHE STRING "ASM compiler flags for RelWithDebInfo" FORCE) set(CMAKE_EXE_LINKER_FLAGS "${CPUCONFIG_LDFLAGS}" CACHE STRING "Linker flags") set(CMAKE_TRY_COMPILE_TARGET_TYPE "STATIC_LIBRARY" CACHE STRING "Try compile target type") \ No newline at end of file diff --git a/src/module/string.c b/src/module/string.c index 47b3908..cd46530 100644 --- a/src/module/string.c +++ b/src/module/string.c @@ -9,6 +9,9 @@ #include +#pragma GCC push_options +#pragma GCC optimize ("no-tree-loop-distribute-patterns") + /** * @brief Set memory to a specified value */ @@ -338,3 +341,5 @@ char *__strcat_chk(char *dest, const char *src, size_t destlen) (void)destlen; return strcat(dest, src); } + +#pragma GCC pop_options \ No newline at end of file