Blame view

dts/Makefile 3.56 KB
bbb0b128c   Simon Glass   fdt: Add support ...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
  #
  # Copyright (c) 2011 The Chromium OS Authors.
  #
  # 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 as
  # published by the Free Software Foundatio; either version 2 of
  # the License, or (at your option) any later version.
  #
  # 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
  #
  
  # 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...
29
  ifeq ($(DEVICE_TREE),)
bbb0b128c   Simon Glass   fdt: Add support ...
30
31
32
  $(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...
33
  endif
bbb0b128c   Simon Glass   fdt: Add support ...
34
35
36
37
38
39
  
  $(if $(CONFIG_ARCH_DEVICE_TREE),,\
  $(error Your architecture does not have device tree support enabled. \
  Please define CONFIG_ARCH_DEVICE_TREE))
  
  # We preprocess the device tree file provide a useful define
6487d88aa   Allen Martin   fdt: fix dts prep...
40
  DTS_CPPFLAGS := -x assembler-with-cpp \
b4f106be2   Horst Kronstorfer   dts/Makefile: Tur...
41
  		-DARCH_CPU_DTS=\"$(SRCTREE)/arch/$(ARCH)/dts/$(CONFIG_ARCH_DEVICE_TREE).dtsi\" \
6c5be646b   Tom Warren   Tegra: fdt: Chang...
42
43
  		-DBOARD_DTS=\"$(SRCTREE)/board/$(VENDOR)/$(BOARD)/dts/$(DEVICE_TREE).dts\" \
  		-I$(SRCTREE)/board/$(VENDOR)/dts -I$(SRCTREE)/arch/$(ARCH)/dts
bbb0b128c   Simon Glass   fdt: Add support ...
44
45
46
47
48
49
50
51
52
  
  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
896bbb531   Wolfgang Denk   fdt: avoid bad MA...
53
54
55
56
57
  	rc=$$( \
  		cat $< | $(CPP) -P $(DTS_CPPFLAGS) - | \
  		{ { $(DTC) -R 4 -p 0x1000 -O dtb -o ${DT_BIN} - 2>&1 ; \
  		    echo $$? >&3 ; } | \
  		  grep -v '^DTC: dts->dtb  on file' ; \
58e22f8a1   Stephen Warren   fdt: send all dtc...
58
  	        } 3>&1 1>&2 ) ; \
896bbb531   Wolfgang Denk   fdt: avoid bad MA...
59
  	exit $$rc
bbb0b128c   Simon Glass   fdt: Add support ...
60
61
62
63
64
65
66
67
68
69
70
71
72
  
  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...
73
74
75
  	[ -n "$(LDSCRIPT)" ] && \
  		oformat=`$(call process_lds,cat $(LDSCRIPT),FORMAT)` && \
  		oarch=`$(call process_lds,cat $(LDSCRIPT),ARCH)` ;\
bbb0b128c   Simon Glass   fdt: Add support ...
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
  	\
  	[ -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
  
  #########################################################################