# HG changeset patch # User Jacob Alexander # Date 1410750460 25200 # Node ID e9fdef19a0596856a3ddbc6c8874c55d9ba45329 # Parent 5805b1abb5d42e542ab5475973ab73c41217302d Fixing Mac OSX arm build options. - Bootloader doesn't build correctly on gcc 4.7.3 (LTO issues) - Even disabling isn't good enough - 4.9.1 is known to work on Arch Linux diff -r 5805b1abb5d4 -r e9fdef19a059 Bootloader/CMakeLists.txt --- a/Bootloader/CMakeLists.txt Sun Sep 14 19:27:22 2014 -0700 +++ b/Bootloader/CMakeLists.txt Sun Sep 14 20:07:40 2014 -0700 @@ -113,6 +113,19 @@ ### +# Disable -Wl,-search_paths_first for OSX (not supported by arm-none-eabi-gcc) +# + +if ( APPLE ) + string ( REPLACE "-Wl,-search_paths_first" "" CMAKE_C_LINK_FLAGS ${CMAKE_C_LINK_FLAGS} ) + string ( REPLACE "-Wl,-search_paths_first" "" CMAKE_CXX_LINK_FLAGS ${CMAKE_CXX_LINK_FLAGS} ) + + message ( AUTHOR_WARNING "Bootloader binary may not fit on device (must be less than 4096 bytes). Macports arm-none-eabi-gcc 4.7.3 doesn't seem to work properly with -flto. However, even disabling it doesn't shrink the binary enough... 4.9.1 is known to work on Arch Linux." ) +endif () + + + +### # Build Targets # diff -r 5805b1abb5d4 -r e9fdef19a059 Lib/CMake/arm.cmake --- a/Lib/CMake/arm.cmake Sun Sep 14 19:27:22 2014 -0700 +++ b/Lib/CMake/arm.cmake Sun Sep 14 20:07:40 2014 -0700 @@ -122,7 +122,7 @@ #| -f...: tuning, see GCC manual #| NOTE: -fshort-wchar is specified to allow USB strings be passed conveniently if( BOOTLOADER ) - set( TUNING "-D_bootloader_ -Wno-main -msoft-float -mthumb -fplan9-extensions -ffunction-sections -fdata-sections -fno-builtin -fstrict-volatile-bitfields -flto -fno-use-linker-plugin" ) + set( TUNING "-D_bootloader_ -Wno-main -msoft-float -mthumb -fplan9-extensions -ffunction-sections -fdata-sections -fno-builtin -fstrict-volatile-bitfields -flto -fno-use-linker-plugin -nostdlib" ) #set( TUNING "-mthumb -fdata-sections -ffunction-sections -fno-builtin -msoft-float -fstrict-volatile-bitfields -flto -fno-use-linker-plugin -fwhole-program -Wno-main -nostartfiles -fplan9-extensions -D_bootloader_" ) else() set( TUNING "-mthumb -nostdlib -fdata-sections -ffunction-sections -fshort-wchar -fno-builtin -nostartfiles" ) @@ -156,10 +156,9 @@ if( BOOTLOADER ) # Bootloader linker flags set( LINKER_FLAGS "${TUNING} -Wl,--gc-sections -fwhole-program -T${CMAKE_CURRENT_SOURCE_DIR}/../Lib/${CHIP}.bootloader.ld -nostartfiles -Wl,-Map=link.map" ) - #set( LINKER_FLAGS "-Wl,-Map=link.map,--cref -Wl,--gc-sections -Wl,--no-wchar-size-warning -T${CMAKE_CURRENT_SOURCE_DIR}/../Lib/${CHIP}.bootloader.ld" ) else() # Normal linker flags - set( LINKER_FLAGS "-Wl,-Map=link.map,--cref -Wl,--gc-sections -Wl,--no-wchar-size-warning -T${CMAKE_CURRENT_SOURCE_DIR}/Lib/${CHIP}.ld" ) + set( LINKER_FLAGS "${TUNING} -Wl,-Map=link.map,--cref -Wl,--gc-sections -Wl,--no-wchar-size-warning -T${CMAKE_CURRENT_SOURCE_DIR}/Lib/${CHIP}.ld" ) endif() diff -r 5805b1abb5d4 -r e9fdef19a059 Lib/CMake/build.cmake --- a/Lib/CMake/build.cmake Sun Sep 14 19:27:22 2014 -0700 +++ b/Lib/CMake/build.cmake Sun Sep 14 20:07:40 2014 -0700 @@ -8,10 +8,10 @@ ### -# Disable -Wl,-search_paths_first for AVR on OSX (not supported by avr-gcc) +# Disable -Wl,-search_paths_first for OSX (not supported by avr-gcc or arm-none-eabi-gcc) # -if ( "${CPU}" STREQUAL "megaAVR" AND APPLE ) +if ( APPLE ) string ( REPLACE "-Wl,-search_paths_first" "" CMAKE_C_LINK_FLAGS ${CMAKE_C_LINK_FLAGS} ) string ( REPLACE "-Wl,-search_paths_first" "" CMAKE_CXX_LINK_FLAGS ${CMAKE_CXX_LINK_FLAGS} ) endif ()