2002-04-27 11:09:31 +00:00
|
|
|
#
|
2006-09-01 17:49:50 +00:00
|
|
|
# (C) Copyright 2000-2006
|
2002-04-27 11:09:31 +00:00
|
|
|
# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
|
|
|
|
#
|
2013-07-08 07:37:19 +00:00
|
|
|
# SPDX-License-Identifier: GPL-2.0+
|
2002-04-27 11:09:31 +00:00
|
|
|
#
|
|
|
|
|
2014-02-04 08:24:12 +00:00
|
|
|
extra-y := hello_world
|
|
|
|
extra-$(CONFIG_SMC91111) += smc91111_eeprom
|
|
|
|
extra-$(CONFIG_SMC911X) += smc911x_eeprom
|
|
|
|
extra-$(CONFIG_SPI_FLASH_ATMEL) += atmel_df_pow2
|
|
|
|
extra-$(CONFIG_MPC5xxx) += interrupt
|
|
|
|
extra-$(CONFIG_8xx) += test_burst timer
|
|
|
|
extra-$(CONFIG_8260) += mem_to_mem_idma2intr
|
|
|
|
extra-$(CONFIG_PPC) += sched
|
2009-09-04 23:54:45 +00:00
|
|
|
|
2009-11-09 17:13:00 +00:00
|
|
|
#
|
|
|
|
# Some versions of make do not handle trailing white spaces properly;
|
|
|
|
# leading to build failures. The problem was found with GNU Make 3.80.
|
|
|
|
# Using 'strip' as a workaround for the problem.
|
|
|
|
#
|
2014-02-04 08:24:12 +00:00
|
|
|
ELF := $(strip $(extra-y))
|
|
|
|
|
|
|
|
extra-y += $(addsuffix .srec,$(extra-y)) $(addsuffix .bin,$(extra-y))
|
|
|
|
clean-files := $(extra-) $(addsuffix .srec,$(extra-)) $(addsuffix .bin,$(extra-))
|
2009-11-09 17:13:00 +00:00
|
|
|
|
2009-09-04 23:54:45 +00:00
|
|
|
|
|
|
|
COBJS := $(ELF:=.o)
|
2002-04-27 11:09:31 +00:00
|
|
|
|
2014-02-04 08:24:24 +00:00
|
|
|
LIB = $(obj)/libstubs.o
|
2009-09-04 23:54:45 +00:00
|
|
|
|
2013-11-28 03:09:59 +00:00
|
|
|
LIBAOBJS-$(CONFIG_PPC) += ppc_longjmp.o ppc_setjmp.o
|
|
|
|
LIBAOBJS-$(CONFIG_8xx) += test_burst_lib.o
|
|
|
|
LIBAOBJS := $(LIBAOBJS-y)
|
2009-09-04 23:54:45 +00:00
|
|
|
|
|
|
|
LIBCOBJS = stubs.o
|
2006-09-01 17:49:50 +00:00
|
|
|
|
kbuild: use Linux Kernel build scripts
Now we are ready to switch over to real Kbuild.
This commit disables temporary scripts:
scripts/{Makefile.build.tmp, Makefile.host.tmp}
and enables real Kbuild scripts:
scripts/{Makefile.build,Makefile.host,Makefile.lib}.
This switch is triggered by the line in scripts/Kbuild.include
-build := -f $(if $(KBUILD_SRC),$(srctree)/)scripts/Makefile.build.tmp obj
+build := -f $(if $(KBUILD_SRC),$(srctree)/)scripts/Makefile.build obj
We need to adjust some build scripts for U-Boot.
But smaller amount of modification is preferable.
Additionally, we need to fix compiler flags which are
locally added or removed.
In Kbuild, it is not allowed to change CFLAGS locally.
Instead, ccflags-y, asflags-y, cppflags-y,
CFLAGS_$(basetarget).o, CFLAGS_REMOVE_$(basetarget).o
are prepared for that purpose.
Signed-off-by: Masahiro Yamada <yamada.m@jp.panasonic.com>
Tested-by: Gerhard Sittig <gsi@denx.de>
2014-02-04 08:24:28 +00:00
|
|
|
.SECONDARY: $(call objectify,$(COBJS))
|
|
|
|
targets += $(patsubst $(obj)/%,%,$(LIB)) $(COBJS) $(LIBAOBJS) $(LIBCOBJS)
|
|
|
|
|
2014-02-04 08:24:24 +00:00
|
|
|
LIBOBJS = $(addprefix $(obj)/,$(LIBAOBJS) $(LIBCOBJS))
|
2006-09-01 17:49:50 +00:00
|
|
|
|
2014-02-04 08:24:24 +00:00
|
|
|
ELF := $(addprefix $(obj)/,$(ELF))
|
2002-04-27 11:09:31 +00:00
|
|
|
|
2013-09-10 13:51:44 +00:00
|
|
|
gcclibdir := $(shell dirname `$(CC) -print-libgcc-file-name`)
|
2003-08-29 20:57:53 +00:00
|
|
|
|
2010-06-15 19:48:25 +00:00
|
|
|
# For PowerPC there's no need to compile standalone applications as a
|
|
|
|
# relocatable executable. The relocation data is not needed, and
|
|
|
|
# also causes the entry point of the standalone application to be
|
|
|
|
# inconsistent.
|
|
|
|
ifeq ($(ARCH),powerpc)
|
kbuild: use Linux Kernel build scripts
Now we are ready to switch over to real Kbuild.
This commit disables temporary scripts:
scripts/{Makefile.build.tmp, Makefile.host.tmp}
and enables real Kbuild scripts:
scripts/{Makefile.build,Makefile.host,Makefile.lib}.
This switch is triggered by the line in scripts/Kbuild.include
-build := -f $(if $(KBUILD_SRC),$(srctree)/)scripts/Makefile.build.tmp obj
+build := -f $(if $(KBUILD_SRC),$(srctree)/)scripts/Makefile.build obj
We need to adjust some build scripts for U-Boot.
But smaller amount of modification is preferable.
Additionally, we need to fix compiler flags which are
locally added or removed.
In Kbuild, it is not allowed to change CFLAGS locally.
Instead, ccflags-y, asflags-y, cppflags-y,
CFLAGS_$(basetarget).o, CFLAGS_REMOVE_$(basetarget).o
are prepared for that purpose.
Signed-off-by: Masahiro Yamada <yamada.m@jp.panasonic.com>
Tested-by: Gerhard Sittig <gsi@denx.de>
2014-02-04 08:24:28 +00:00
|
|
|
# FIX ME
|
|
|
|
CPPFLAGS := $(filter-out $(RELFLAGS), $(CPPFLAGS))
|
2010-06-15 19:48:25 +00:00
|
|
|
endif
|
|
|
|
|
2010-09-12 22:38:49 +00:00
|
|
|
# We don't want gcc reordering functions if possible. This ensures that an
|
|
|
|
# application's entry point will be the first function in the application's
|
|
|
|
# source file.
|
kbuild: use Linux Kernel build scripts
Now we are ready to switch over to real Kbuild.
This commit disables temporary scripts:
scripts/{Makefile.build.tmp, Makefile.host.tmp}
and enables real Kbuild scripts:
scripts/{Makefile.build,Makefile.host,Makefile.lib}.
This switch is triggered by the line in scripts/Kbuild.include
-build := -f $(if $(KBUILD_SRC),$(srctree)/)scripts/Makefile.build.tmp obj
+build := -f $(if $(KBUILD_SRC),$(srctree)/)scripts/Makefile.build obj
We need to adjust some build scripts for U-Boot.
But smaller amount of modification is preferable.
Additionally, we need to fix compiler flags which are
locally added or removed.
In Kbuild, it is not allowed to change CFLAGS locally.
Instead, ccflags-y, asflags-y, cppflags-y,
CFLAGS_$(basetarget).o, CFLAGS_REMOVE_$(basetarget).o
are prepared for that purpose.
Signed-off-by: Masahiro Yamada <yamada.m@jp.panasonic.com>
Tested-by: Gerhard Sittig <gsi@denx.de>
2014-02-04 08:24:28 +00:00
|
|
|
ccflags-y += $(call cc-option,-fno-toplevel-reorder)
|
2002-04-27 11:09:31 +00:00
|
|
|
|
|
|
|
#########################################################################
|
kbuild: use Linux Kernel build scripts
Now we are ready to switch over to real Kbuild.
This commit disables temporary scripts:
scripts/{Makefile.build.tmp, Makefile.host.tmp}
and enables real Kbuild scripts:
scripts/{Makefile.build,Makefile.host,Makefile.lib}.
This switch is triggered by the line in scripts/Kbuild.include
-build := -f $(if $(KBUILD_SRC),$(srctree)/)scripts/Makefile.build.tmp obj
+build := -f $(if $(KBUILD_SRC),$(srctree)/)scripts/Makefile.build obj
We need to adjust some build scripts for U-Boot.
But smaller amount of modification is preferable.
Additionally, we need to fix compiler flags which are
locally added or removed.
In Kbuild, it is not allowed to change CFLAGS locally.
Instead, ccflags-y, asflags-y, cppflags-y,
CFLAGS_$(basetarget).o, CFLAGS_REMOVE_$(basetarget).o
are prepared for that purpose.
Signed-off-by: Masahiro Yamada <yamada.m@jp.panasonic.com>
Tested-by: Gerhard Sittig <gsi@denx.de>
2014-02-04 08:24:28 +00:00
|
|
|
|
|
|
|
quiet_cmd_link_lib = LD $@
|
|
|
|
cmd_link_lib = $(LD) $(ld_flags) -r -o $@ $(filter $(LIBOBJS), $^)
|
|
|
|
|
|
|
|
$(LIB): $(LIBOBJS) FORCE
|
|
|
|
$(call if_changed,link_lib)
|
2002-04-27 11:09:31 +00:00
|
|
|
|
2006-10-24 11:55:18 +00:00
|
|
|
$(ELF):
|
2014-02-04 08:24:24 +00:00
|
|
|
$(obj)/%: $(obj)/%.o $(LIB)
|
2012-03-05 23:44:22 +00:00
|
|
|
$(LD) $(LDFLAGS) -g -Ttext $(CONFIG_STANDALONE_LOAD_ADDR) \
|
2008-02-05 00:26:55 +00:00
|
|
|
-o $@ -e $(SYM_PREFIX)$(notdir $(<:.o=)) $< $(LIB) \
|
2013-09-10 13:51:44 +00:00
|
|
|
-L$(gcclibdir) -lgcc
|
2006-10-24 11:55:18 +00:00
|
|
|
|
2014-02-04 08:24:24 +00:00
|
|
|
$(obj)/%.srec: $(obj)/%
|
2006-09-01 17:49:50 +00:00
|
|
|
$(OBJCOPY) -O srec $< $@ 2>/dev/null
|
2002-04-27 11:09:31 +00:00
|
|
|
|
2014-02-04 08:24:24 +00:00
|
|
|
$(obj)/%.bin: $(obj)/%
|
2006-09-01 17:49:50 +00:00
|
|
|
$(OBJCOPY) -O binary $< $@ 2>/dev/null
|