xref: /DragonStub/Makefile (revision a09217116ba686489b46f0bee85581924604b2f6)
1530d68baSNigel Croxon#
2530d68baSNigel Croxon#  Copyright (C) 1999-2007 Hewlett-Packard Co.
3530d68baSNigel Croxon#	Contributed by David Mosberger <davidm@hpl.hp.com>
4530d68baSNigel Croxon#	Contributed by Stephane Eranian <eranian@hpl.hp.com>
5530d68baSNigel Croxon#
6530d68baSNigel Croxon#    All rights reserved.
7530d68baSNigel Croxon#
8530d68baSNigel Croxon#    Redistribution and use in source and binary forms, with or without
9530d68baSNigel Croxon#    modification, are permitted provided that the following conditions
10530d68baSNigel Croxon#    are met:
11530d68baSNigel Croxon#
12530d68baSNigel Croxon#    * Redistributions of source code must retain the above copyright
13530d68baSNigel Croxon#      notice, this list of conditions and the following disclaimer.
14530d68baSNigel Croxon#    * Redistributions in binary form must reproduce the above
15530d68baSNigel Croxon#      copyright notice, this list of conditions and the following
16530d68baSNigel Croxon#      disclaimer in the documentation and/or other materials
17530d68baSNigel Croxon#      provided with the distribution.
18530d68baSNigel Croxon#    * Neither the name of Hewlett-Packard Co. nor the names of its
19530d68baSNigel Croxon#      contributors may be used to endorse or promote products derived
20530d68baSNigel Croxon#      from this software without specific prior written permission.
21530d68baSNigel Croxon#
22530d68baSNigel Croxon#    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
23530d68baSNigel Croxon#    CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
24530d68baSNigel Croxon#    INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
25530d68baSNigel Croxon#    MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
26530d68baSNigel Croxon#    DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
27530d68baSNigel Croxon#    BE LIABLE FOR ANYDIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
28530d68baSNigel Croxon#    OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
29530d68baSNigel Croxon#    PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
30530d68baSNigel Croxon#    PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
31530d68baSNigel Croxon#    THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
32530d68baSNigel Croxon#    TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
33530d68baSNigel Croxon#    THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
34530d68baSNigel Croxon#    SUCH DAMAGE.
35530d68baSNigel Croxon#
36530d68baSNigel Croxon
375c0de15dSLoGininclude env.mk
385c0de15dSLoGin
395c0de15dSLoGin
4024c80efcSNigel Croxonexport VERSION = 3.0.17
41b868aa75SNigel Croxon
4215bcddc9SNigel CroxonMKFILE_PATH := $(abspath $(lastword $(MAKEFILE_LIST)))
4315bcddc9SNigel CroxonSRCDIR = $(dir $(MKFILE_PATH))
44530d68baSNigel Croxon
45530d68baSNigel CroxonVPATH = $(SRCDIR)
46530d68baSNigel Croxon
47530d68baSNigel Croxoninclude $(SRCDIR)/Make.defaults
48530d68baSNigel Croxon
49530d68baSNigel CroxonSUBDIRS = lib gnuefi inc apps
50530d68baSNigel Croxon
51f412fd2aSLoGinall_stagge2: check_gcc $(SUBDIRS)
52f412fd2aSLoGin
53f412fd2aSLoGinensure_dirs:
54f412fd2aSLoGin	@mkdir -p $(OBJDIR)/apps/lib
553e6106c4SLoGin	@mkdir -p $(OBJDIR)/apps/lib/libfdt
56f412fd2aSLoGin	@$(MAKE) all_stagge2
57f412fd2aSLoGin
58f412fd2aSLoGinall: ensure_dirs
595c0de15dSLoGinifeq ($(ARCH), riscv64)
605c0de15dSLoGin	@mkdir -p output
615c0de15dSLoGin	cp riscv64/apps/dragon_stub.efi ./output/dragon_stub-riscv64.efi
625c0de15dSLoGinendif
635c0de15dSLoGin
645c0de15dSLoGin.PHONY:
655c0de15dSLoGinrun:
665c0de15dSLoGin	@$(MAKE) all -j $(shell nproc)
675c0de15dSLoGin	@$(MAKE) qemu
685c0de15dSLoGin
695c0de15dSLoGinqemu:
705c0de15dSLoGin	cd tools && ./run-qemu.sh && cd ..
71530d68baSNigel Croxon
72*a0921711SLoGininstall: all
73*a0921711SLoGinifeq ($(ARCH), riscv64)
74*a0921711SLoGin	@mkdir -p $(TARGET_SYSROOT)/efi/boot/
75*a0921711SLoGin	cp ./output/dragon_stub-riscv64.efi $(TARGET_SYSROOT)/efi/boot/bootriscv64.efi
76*a0921711SLoGinelse
77*a0921711SLoGin	@echo "Not support `make install` for $(ARCH)"
78*a0921711SLoGin	exit 1
79*a0921711SLoGinendif
80*a0921711SLoGin
81c2627518SLetu Rengnuefi: lib
823f9a6569SCallum Farmerapps:	gnuefi
83c2627518SLetu Ren
84530d68baSNigel Croxonmkvars:
85530d68baSNigel Croxon	@echo AR=$(AR)
86530d68baSNigel Croxon	@echo ARCH=$(ARCH)
87530d68baSNigel Croxon	@echo ARCH3264=$(ARCH3264)
88530d68baSNigel Croxon	@echo AS=$(AS)
89530d68baSNigel Croxon	@echo ASFLAGS=$(ASFLAGS)
90530d68baSNigel Croxon	@echo CC=$(CC)
91530d68baSNigel Croxon	@echo CFLAGS=$(CFLAGS)
92530d68baSNigel Croxon	@echo CPPFLAGS=$(CPPFLAGS)
93530d68baSNigel Croxon	@echo GCCMINOR=$(GCCMINOR)
94530d68baSNigel Croxon	@echo GCCNEWENOUGH=$(GCCNEWENOUGH)
95530d68baSNigel Croxon	@echo GCCVERSION=$(GCCVERSION)
96530d68baSNigel Croxon	@echo HOSTARCH=$(HOSTARCH)
97530d68baSNigel Croxon	@echo INCDIR=$(INCDIR)
98530d68baSNigel Croxon	@echo INSTALL=$(INSTALL)
99530d68baSNigel Croxon	@echo INSTALLROOT=$(INSTALLROOT)
100530d68baSNigel Croxon	@echo LD=$(LD)
101530d68baSNigel Croxon	@echo LDFLAGS=$(LDFLAGS)
102530d68baSNigel Croxon	@echo LIBDIR=$(LIBDIR)
103530d68baSNigel Croxon	@echo OBJCOPY=$(OBJCOPY)
104530d68baSNigel Croxon	@echo OS=$(OS)
105530d68baSNigel Croxon	@echo prefix=$(prefix)
106530d68baSNigel Croxon	@echo PREFIX=$(PREFIX)
107530d68baSNigel Croxon	@echo RANLIB=$(RANLIB)
108530d68baSNigel Croxon	@echo SRCDIR=$(SRCDIR)
109530d68baSNigel Croxon	@echo TOPDIR=$(TOPDIR)
110f412fd2aSLoGin	@echo OBJDIR=$(OBJDIR)
111530d68baSNigel Croxon
112530d68baSNigel Croxon$(SUBDIRS):
113ce7098fbSNigel Croxon	mkdir -p $(OBJDIR)/$@
114ce7098fbSNigel Croxon	$(MAKE) -C $(OBJDIR)/$@ -f $(SRCDIR)/$@/Makefile SRCDIR=$(SRCDIR)/$@ ARCH=$(ARCH)
115530d68baSNigel Croxon
116530d68baSNigel Croxonclean:
117530d68baSNigel Croxon	rm -f *~
1183e6106c4SLoGin	rm -f $(shell find . -name "*.o")
1197c89273dSRichard Hughes	@set -e ; for d in $(SUBDIRS); do \
120ce7098fbSNigel Croxon		if [ -d $(OBJDIR)/$$d ]; then \
121ce7098fbSNigel Croxon			$(MAKE) -C $(OBJDIR)/$$d -f $(SRCDIR)/$$d/Makefile SRCDIR=$(SRCDIR)/$$d clean; \
122530d68baSNigel Croxon		fi; \
123530d68baSNigel Croxon	done
124530d68baSNigel Croxon
125823f0493SLoGingdb:
126823f0493SLoGin	gdb-multiarch -n -x tools/.gdbinit
127823f0493SLoGin
128*a0921711SLoGin#install:
129*a0921711SLoGin#	@set -e ; for d in $(SUBDIRS); do \
130*a0921711SLoGin#		mkdir -p $(OBJDIR)/$$d; \
131*a0921711SLoGin#		$(MAKE) -C $(OBJDIR)/$$d -f $(SRCDIR)/$$d/Makefile SRCDIR=$(SRCDIR)/$$d install; done
132530d68baSNigel Croxon
133530d68baSNigel Croxon.PHONY:	$(SUBDIRS) clean depend
134530d68baSNigel Croxon
135530d68baSNigel Croxon#
136530d68baSNigel Croxon# on both platforms you must use gcc 3.0 or higher
137530d68baSNigel Croxon#
138530d68baSNigel Croxoncheck_gcc:
139530d68baSNigel Croxonifeq ($(GCC_VERSION),2)
140530d68baSNigel Croxon	@echo "you need to use a version of gcc >= 3.0, you are using `$(CC) --version`"
141530d68baSNigel Croxon	@exit 1
142530d68baSNigel Croxonendif
143530d68baSNigel Croxon
144530d68baSNigel Croxoninclude $(SRCDIR)/Make.rules
145b868aa75SNigel Croxon
146b868aa75SNigel Croxontest-archive:
147b868aa75SNigel Croxon	@rm -rf /tmp/gnu-efi-$(VERSION) /tmp/gnu-efi-$(VERSION)-tmp
148b868aa75SNigel Croxon	@mkdir -p /tmp/gnu-efi-$(VERSION)-tmp
149b868aa75SNigel Croxon	@git archive --format=tar $(shell git branch | awk '/^*/ { print $$2 }') | ( cd /tmp/gnu-efi-$(VERSION)-tmp/ ; tar x )
150b868aa75SNigel Croxon	@git diff | ( cd /tmp/gnu-efi-$(VERSION)-tmp/ ; patch -s -p1 -b -z .gitdiff )
151b868aa75SNigel Croxon	@mv /tmp/gnu-efi-$(VERSION)-tmp/ /tmp/gnu-efi-$(VERSION)/
152b868aa75SNigel Croxon	@dir=$$PWD; cd /tmp; tar -c --bzip2 -f $$dir/gnu-efi-$(VERSION).tar.bz2 gnu-efi-$(VERSION)
153b868aa75SNigel Croxon	@rm -rf /tmp/gnu-efi-$(VERSION)
154b868aa75SNigel Croxon	@echo "The archive is in gnu-efi-$(VERSION).tar.bz2"
155b868aa75SNigel Croxon
156b868aa75SNigel Croxontag:
157b868aa75SNigel Croxon	git tag $(VERSION) refs/heads/master
158b868aa75SNigel Croxon
159b868aa75SNigel Croxonarchive: tag
160b868aa75SNigel Croxon	@rm -rf /tmp/gnu-efi-$(VERSION) /tmp/gnu-efi-$(VERSION)-tmp
161b868aa75SNigel Croxon	@mkdir -p /tmp/gnu-efi-$(VERSION)-tmp
162b868aa75SNigel Croxon	@git archive --format=tar $(VERSION) | ( cd /tmp/gnu-efi-$(VERSION)-tmp/ ; tar x )
163b868aa75SNigel Croxon	@mv /tmp/gnu-efi-$(VERSION)-tmp/ /tmp/gnu-efi-$(VERSION)/
164b868aa75SNigel Croxon	@dir=$$PWD; cd /tmp; tar -c --bzip2 -f $$dir/gnu-efi-$(VERSION).tar.bz2 gnu-efi-$(VERSION)
165b868aa75SNigel Croxon	@rm -rf /tmp/gnu-efi-$(VERSION)
166b868aa75SNigel Croxon	@echo "The archive is in gnu-efi-$(VERSION).tar.bz2"
167b868aa75SNigel Croxon
168