2018-05-06 21:58:06 +00:00
|
|
|
# SPDX-License-Identifier: GPL-2.0+
|
2008-01-09 18:39:36 +00:00
|
|
|
#
|
|
|
|
# (C) Copyright 2007 Semihalf
|
|
|
|
|
2018-01-10 17:06:08 +00:00
|
|
|
# Provide symbol API_BUILD to signal that the API example is being built.
|
|
|
|
KBUILD_CPPFLAGS += -DAPI_BUILD
|
|
|
|
|
2010-04-15 14:07:28 +00:00
|
|
|
ifeq ($(ARCH),powerpc)
|
2008-01-09 18:39:36 +00:00
|
|
|
LOAD_ADDR = 0x40000
|
|
|
|
endif
|
2009-01-23 12:27:16 +00:00
|
|
|
ifeq ($(ARCH),arm)
|
|
|
|
LOAD_ADDR = 0x1000000
|
|
|
|
endif
|
2016-02-04 10:13:44 +00:00
|
|
|
ifeq ($(ARCH),mips)
|
2016-02-17 13:23:31 +00:00
|
|
|
ifdef CONFIG_64BIT
|
|
|
|
LOAD_ADDR = 0xffffffff80200000
|
|
|
|
else
|
2016-02-04 10:13:44 +00:00
|
|
|
LOAD_ADDR = 0x80200000
|
|
|
|
endif
|
2016-02-17 13:23:31 +00:00
|
|
|
endif
|
2008-01-09 18:39:36 +00:00
|
|
|
|
2009-06-22 23:01:39 +00:00
|
|
|
# Resulting ELF and binary exectuables will be named demo and demo.bin
|
2014-02-04 08:24:12 +00:00
|
|
|
extra-y = demo
|
2009-06-22 23:01:41 +00:00
|
|
|
|
2009-07-21 00:02:21 +00:00
|
|
|
# Source files located in the examples/api directory
|
2014-02-24 02:12:19 +00:00
|
|
|
OBJ-y += crt0.o
|
|
|
|
OBJ-y += demo.o
|
|
|
|
OBJ-y += glue.o
|
|
|
|
OBJ-y += libgenwrap.o
|
2009-06-22 23:01:41 +00:00
|
|
|
|
2009-07-21 00:02:21 +00:00
|
|
|
# Source files which exist outside the examples/api directory
|
2014-02-24 02:12:19 +00:00
|
|
|
EXT_COBJ-y += lib/crc32.o
|
|
|
|
EXT_COBJ-y += lib/ctype.o
|
|
|
|
EXT_COBJ-y += lib/div64.o
|
|
|
|
EXT_COBJ-y += lib/string.o
|
|
|
|
EXT_COBJ-y += lib/time.o
|
|
|
|
EXT_COBJ-y += lib/vsprintf.o
|
2017-09-09 10:47:41 +00:00
|
|
|
EXT_COBJ-y += lib/charset.o
|
2017-09-09 10:47:42 +00:00
|
|
|
EXT_COBJ-$(CONFIG_LIB_UUID) += lib/uuid.o
|
2014-02-24 02:12:19 +00:00
|
|
|
EXT_SOBJ-$(CONFIG_PPC) += arch/powerpc/lib/ppcstring.o
|
2017-01-12 18:16:02 +00:00
|
|
|
ifeq ($(ARCH),arm)
|
|
|
|
EXT_SOBJ-$(CONFIG_USE_ARCH_MEMSET) += arch/arm/lib/memset.o
|
|
|
|
endif
|
2009-06-22 23:01:39 +00:00
|
|
|
|
2009-06-22 23:01:41 +00:00
|
|
|
# Create a list of object files to be compiled
|
2014-02-24 02:12:19 +00:00
|
|
|
OBJS := $(OBJ-y) $(notdir $(EXT_COBJ-y) $(EXT_SOBJ-y))
|
|
|
|
targets += $(OBJS)
|
|
|
|
OBJS := $(addprefix $(obj)/,$(OBJS))
|
2008-01-09 18:39:36 +00:00
|
|
|
|
|
|
|
#########################################################################
|
2009-06-22 23:01:40 +00:00
|
|
|
|
2014-02-24 02:12:19 +00:00
|
|
|
quiet_cmd_link_demo = LD $@
|
|
|
|
cmd_link_demo = $(LD) --gc-sections -Ttext $(LOAD_ADDR) -o $@ $(filter-out $(PHONY), $^) $(PLATFORM_LIBS)
|
|
|
|
|
|
|
|
$(obj)/demo: $(OBJS) FORCE
|
|
|
|
$(call if_changed,link_demo)
|
2014-02-04 08:24:12 +00:00
|
|
|
|
2014-02-24 02:12:14 +00:00
|
|
|
# demo.bin is never genrated. Is this necessary?
|
|
|
|
OBJCOPYFLAGS_demo.bin := -O binary
|
|
|
|
$(obj)/demo.bin: $(obj)/demo FORCE
|
|
|
|
$(call if_changed,objcopy)
|
2008-01-09 18:39:36 +00:00
|
|
|
|
2009-06-22 23:01:41 +00:00
|
|
|
# Rule to build generic library C files
|
2014-02-24 02:12:19 +00:00
|
|
|
$(addprefix $(obj)/,$(notdir $(EXT_COBJ-y))): $(obj)/%.o: lib/%.c FORCE
|
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
|
|
|
$(call cmd,force_checksrc)
|
|
|
|
$(call if_changed_rule,cc_o_c)
|
2008-01-09 18:39:36 +00:00
|
|
|
|
2009-06-22 23:01:41 +00:00
|
|
|
# Rule to build architecture-specific library assembly files
|
2017-01-12 18:16:02 +00:00
|
|
|
$(addprefix $(obj)/,$(notdir $(EXT_SOBJ-y))): $(obj)/%.o: arch/$(ARCH)/lib/%.S FORCE
|
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
|
|
|
$(call if_changed_dep,as_o_S)
|