carl9170 firmware: enable -fmodulo-sched
[carl9170fw.git] / carlfw / CMakeLists.txt
index f1dc23ca471c54bb3954f02613a08a38bd133886..a31e40bdad26109bfbf47e4c33a3d59dcae74f42 100644 (file)
@@ -9,7 +9,7 @@ set(CARLFW_CFLAGS_WARNING "-W -Wall -Wextra -Wunreachable-code -Winline -Wlogica
 set(CARLFW_CFLAGS_EXTRA "-mbitops -std=gnu99 -ffunction-sections -Wframe-larger-than=128 -Werror")
 set(CARLFW_CFLAGS_DEF "-D__CARL9170FW__")
 if (CONFIG_CARL9170FW_AGGRESSIVE_CFLAGS)
-       set(CARLFW_CFLAGS_AGGRESSIVE "-fomit-frame-pointer -fsee -frename-registers -ftree-vectorize")
+       set(CARLFW_CFLAGS_AGGRESSIVE "-fomit-frame-pointer -fsee -frename-registers -ftree-vectorize -flto -fstrict-volatile-bitfields -fmodulo-sched")
 endif (CONFIG_CARL9170FW_AGGRESSIVE_CFLAGS)
 
 include_directories (../include/linux ../include/shared ../include include)
@@ -36,14 +36,31 @@ set_target_properties(carl9170.elf PROPERTIES COMPILE_FLAGS
        " ${CARLFW_CFLAGS_DEF} ${CARLFW_CFLAGS_EXTRA} ${CARLFW_CFLAGS_AGGRESSIVE} ${CARLFW_CFLAGS_WARNING}")
 set_target_properties(carl9170.elf PROPERTIES LINK_FLAGS "-Tcarl9170.lds")
 
-add_custom_target(
-       carl9170.fw ALL
-       ${OBJCOPY} --strip-unneeded -O binary -R .sram -R .eeprom -R .fwdsc carl9170.elf carl9170.fw
-       DEPENDS carl9170.elf)
 
 
-add_custom_target(
-       carl9170.dsc ALL
-       ${OBJCOPY} --strip-unneeded -O binary -j .fwdsc carl9170.elf carl9170.dsc
-       DEPENDS carl9170.elf)
+add_custom_target(firmware ALL)
 
+add_custom_command(
+       SOURCE carl9170.elf
+       COMMAND ${OBJCOPY}
+       ARGS --strip-unneeded -O binary -R .sram -R .eeprom -R .fwdsc carl9170.elf carl9170.bin
+       TARGET firmware
+       OUTPUTS carl9170.bin)
+
+add_custom_command(
+       SOURCE carl9170.elf
+       COMMAND ${OBJCOPY}
+       ARGS --strip-unneeded -O binary -j .fwdsc carl9170.elf carl9170.dsc
+       TARGET firmware
+       OUTPUTS carl9170.dsc)
+       
+add_custom_command(
+       SOURCE firmware
+       TARGET firmware
+       COMMAND cat
+       ARGS "carl9170.bin" "carl9170.dsc" > "carl9170.fw"
+       DEPENDS carl9170.elf carl9170.bin carl9170.dsc
+       OUTPUTS carl9170.fw)
+
+SET_DIRECTORY_PROPERTIES(
+       PROPERTIES ADDITIONAL_MAKE_CLEAN_FILES "carl9170.fw")