Blame view

dts/Makefile 2.57 KB
bbb0b128c   Simon Glass   fdt: Add support ...
1
2
3
  #
  # Copyright (c) 2011 The Chromium OS Authors.
  #
1a4596601   Wolfgang Denk   Add GPL-2.0+ SPDX...
4
  # SPDX-License-Identifier:	GPL-2.0+
bbb0b128c   Simon Glass   fdt: Add support ...
5
6
7
8
9
10
11
12
  #
  
  # This Makefile builds the internal U-Boot fdt if CONFIG_OF_CONTROL is
  # enabled. See doc/README.fdt-control for more details.
  
  include $(TOPDIR)/config.mk
  
  LIB	= $(obj)libdts.o
74de8c9a1   Jagannadha Sutradharudu Teki   dts/Makefile: Bui...
13
  ifeq ($(DEVICE_TREE),)
bbb0b128c   Simon Glass   fdt: Add support ...
14
15
16
  $(if $(CONFIG_DEFAULT_DEVICE_TREE),,\
  $(error Please define CONFIG_DEFAULT_DEVICE_TREE in your board header file))
  DEVICE_TREE = $(subst ",,$(CONFIG_DEFAULT_DEVICE_TREE))
74de8c9a1   Jagannadha Sutradharudu Teki   dts/Makefile: Bui...
17
  endif
bbb0b128c   Simon Glass   fdt: Add support ...
18

c8391a0e9   Stephen Warren   dts/Makefile: uni...
19
20
21
  DTS_INCDIRS =  $(SRCTREE)/board/$(VENDOR)/$(BOARD)/dts
  DTS_INCDIRS += $(SRCTREE)/board/$(VENDOR)/dts
  DTS_INCDIRS += $(SRCTREE)/arch/$(ARCH)/dts
f53932add   Stephen Warren   dts/Makefile: pas...
22
  DTS_CPPFLAGS := -x assembler-with-cpp -undef -D__DTS__ \
c8391a0e9   Stephen Warren   dts/Makefile: uni...
23
24
25
26
  		-nostdinc $(addprefix -I,$(DTS_INCDIRS))
  
  DTC_FLAGS := -R 4 -p 0x1000 \
  	$(addprefix -i ,$(DTS_INCDIRS))
bbb0b128c   Simon Glass   fdt: Add support ...
27
28
29
30
31
32
33
34
35
  
  all:	$(obj).depend $(LIB)
  
  # Use a constant name for this so we can access it from C code.
  # objcopy doesn't seem to allow us to set the symbol name independently of
  # the filename.
  DT_BIN	:= $(obj)dt.dtb
  
  $(DT_BIN): $(TOPDIR)/board/$(VENDOR)/dts/$(DEVICE_TREE).dts
32ac4bd9c   Stephen Warren   dts/Makefile: don...
36
  	$(CPP) $(DTS_CPPFLAGS) $< -o $(DT_BIN).dts.tmp
c8391a0e9   Stephen Warren   dts/Makefile: uni...
37
  	$(DTC) $(DTC_FLAGS) -O dtb -o ${DT_BIN} $(DT_BIN).dts.tmp
bbb0b128c   Simon Glass   fdt: Add support ...
38
39
40
41
42
43
44
45
46
47
48
49
50
  
  process_lds = \
  	$(1) | sed -r -n 's/^OUTPUT_$(2)[ ("]*([^")]*).*/\1/p'
  
  # Run the compiler and get the link script from the linker
  GET_LDS = $(CC) $(CFLAGS) $(LDFLAGS) -Wl,--verbose 2>&1
  
  $(obj)dt.o: $(DT_BIN)
  	# We want the output format and arch.
  	# We also hope to win a prize for ugliest Makefile / shell interaction
  	# We look in the LDSCRIPT first.
  	# Then try the linker which should give us the answer.
  	# Then check it worked.
a4ff47197   Horst Kronstorfer   dts/Makefile: Che...
51
52
53
  	[ -n "$(LDSCRIPT)" ] && \
  		oformat=`$(call process_lds,cat $(LDSCRIPT),FORMAT)` && \
  		oarch=`$(call process_lds,cat $(LDSCRIPT),ARCH)` ;\
bbb0b128c   Simon Glass   fdt: Add support ...
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
  	\
  	[ -z $${oformat} ] && \
  		oformat=`$(call process_lds,$(GET_LDS),FORMAT)` ;\
  	[ -z $${oarch} ] && \
  		oarch=`$(call process_lds,$(GET_LDS),ARCH)` ;\
  	\
  	[ -z $${oformat} ] && \
  		echo "Cannot read OUTPUT_FORMAT from lds file $(LDSCRIPT)" && \
  		exit 1 || true ;\
  	[ -z $${oarch} ] && \
  		echo "Cannot read OUTPUT_ARCH from lds file $(LDSCRIPT)" && \
  		exit 1 || true ;\
  	\
  	cd $(dir ${DT_BIN}) && \
  	$(OBJCOPY) -I binary -O $${oformat} -B $${oarch} \
  		$(notdir ${DT_BIN}) $@
  	rm $(DT_BIN)
  
  OBJS-$(CONFIG_OF_EMBED)	:= dt.o
  
  COBJS	:= $(OBJS-y)
  
  OBJS	:= $(addprefix $(obj),$(COBJS))
  
  binary:	$(DT_BIN)
  
  $(LIB):	$(OBJS) $(DTB)
  	$(call cmd_link_o_target, $(OBJS))
  
  #########################################################################
  
  # defines $(obj).depend target
  include $(SRCTREE)/rules.mk
  
  sinclude $(obj).depend
  
  #########################################################################