mirror of
https://source.denx.de/u-boot/u-boot.git
synced 2025-08-29 10:31:29 +02:00
Commit f62fb99941c6 fixed handling of all rodata sections by using a wildcard combined with calls to ld's builtin functions SORT_BY_ALIGNMENT() and SORT_BY_NAME(). Unfortunately these functions were only introduced with biunutils version 2.16, so the modification broke building with all tool chains using older binutils. This patch makes it work again. This is done by omitting the use of these functions for such old tool chains. This will result in slightly larger target binaries, as the rodata sections are no longer in optimal order alignment-wise which reauls in unused gaps, but the effect was found to be insignificant - especially compared to the fact that you cannot build U-Boot at all in the current state. As ld seems to have no support for conditionals we run the linker script through the C preprocessor which can be easily used to remove the unwanted function calls. Note that the C preprocessor must be run with the "-ansi" (or a "-std=") option to make sure all the system-specific predefined macros outside the reserved namespace are suppressed. Otherise, cpp might for example substitute "powerpc" to "1", thus corrupting for example "OUTPUT_ARCH(powerpc)" etc. Signed-off-by: Wolfgang Denk <wd@denx.de> Cc: Mike Frysinger <vapier@gentoo.org>
78 lines
2.3 KiB
Makefile
78 lines
2.3 KiB
Makefile
# (C) Copyright 2000-2006
|
|
# Wolfgang Denk, DENX Software Engineering, wd@denx.de
|
|
#
|
|
# (C) Copyright 2005
|
|
# Ladislav Michl, 2N Telekomunikace, michl@2n.cz
|
|
#
|
|
# See file CREDITS for list of people who contributed to this
|
|
# project.
|
|
#
|
|
# This program is free software; you can redistribute it and/or modify
|
|
# it under the terms of the GNU General Public License version 2 as
|
|
# published by the Free Software Foundation.
|
|
#
|
|
# This program is distributed in the hope that it will be useful,
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
# GNU General Public License for more details.
|
|
#
|
|
# You should have received a copy of the GNU General Public License
|
|
# along with this program; if not, write to the Free Software
|
|
# Foundation, Inc., 59 Temple Place, Suite 330, Boston,
|
|
# MA 02111-1307 USA
|
|
#
|
|
|
|
include $(TOPDIR)/config.mk
|
|
|
|
LIB = $(obj)lib$(BOARD).a
|
|
|
|
COBJS := voiceblue.o
|
|
SOBJS := setup.o
|
|
|
|
SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c) eeprom.c eeprom_start.S
|
|
OBJS := $(addprefix $(obj),$(COBJS))
|
|
SOBJS := $(addprefix $(obj),$(SOBJS))
|
|
|
|
gcclibdir := $(shell dirname `$(CC) -print-libgcc-file-name`)
|
|
|
|
LOAD_ADDR = 0x10400000
|
|
LDSCRIPT = $(TOPDIR)/board/$(BOARDDIR)/eeprom.lds
|
|
lnk = $(if $(obj),$(obj),.)
|
|
|
|
all: $(obj).depend $(LIB) $(obj)eeprom.srec $(obj)eeprom.bin
|
|
|
|
$(LIB): $(OBJS) $(SOBJS)
|
|
$(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS)
|
|
|
|
$(obj)eeprom.srec: $(obj)eeprom.o $(obj)eeprom_start.o $(obj)u-boot.lds
|
|
cd $(lnk) && $(LD) -T $(obj)u-boot.lds -g -Ttext $(LOAD_ADDR) \
|
|
-o $(<:.o=) -e eeprom eeprom.o eeprom_start.o \
|
|
-L$(obj)../../examples/standalone -lstubs \
|
|
-L$(obj)../../lib_generic -lgeneric \
|
|
-L$(gcclibdir) -lgcc
|
|
$(OBJCOPY) -O srec $(<:.o=) $@
|
|
|
|
$(obj)eeprom.bin: $(obj)eeprom.srec
|
|
$(OBJCOPY) -I srec -O binary $< $@ 2>/dev/null
|
|
|
|
$(obj)u-boot.lds: $(LDSCRIPT)
|
|
$(CPP) $(CPPFLAGS) $(LDPPFLAGS) -ansi -D__ASSEMBLY__ -P - <$^ >$@
|
|
|
|
clean:
|
|
rm -f $(SOBJS) $(OBJS) $(obj)eeprom \
|
|
$(obj)eeprom.srec $(obj)eeprom.bin \
|
|
$(obj)eeprom.o $(obj)eeprom_start.o \
|
|
$(obj)u-boot.lds
|
|
|
|
distclean: clean
|
|
rm -f $(LIB) core *.bak $(obj).depend
|
|
|
|
#########################################################################
|
|
|
|
# defines $(obj).depend target
|
|
include $(SRCTREE)/rules.mk
|
|
|
|
sinclude $(obj).depend
|
|
|
|
#########################################################################
|