Home | History | Annotate | Download | only in ArmJunoPkg
      1 #
      2 #  Copyright (c) 2013-2014, ARM Limited. All rights reserved.
      3 #
      4 #  This program and the accompanying materials
      5 #  are licensed and made available under the terms and conditions of the BSD License
      6 #  which accompanies this distribution.  The full text of the license may be found at
      7 #  http://opensource.org/licenses/bsd-license.php
      8 #
      9 #  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
     10 #  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
     11 #
     12 
     13 # Define the following variable to specify an alternative toolchain to the one located in your PATH:
     14 # - RVCT_TOOLS_PATH: for RVCT and RVCTLINUX toolchains
     15 
     16 EDK2_TOOLCHAIN ?= GCC49
     17 GCC49_AARCH64_PREFIX ?= aarch64-none-elf-
     18 EDK2_ARCH ?= AARCH64
     19 EDK2_BUILD ?= DEBUG
     20 EDK2_DSC = ArmPlatformPkg/ArmJunoPkg/ArmJuno.dsc
     21 DEST_BIN_ROOT ?=
     22 
     23 ifeq ($(EDK2_DSC),"")
     24   $(error The Makefile macro 'EDK2_DSC' must be defined with an EDK2 DSC file.)
     25 endif
     26 
     27 ifeq ("$(OS)","Windows_NT")
     28 export WORKSPACE?=$(PWD)
     29 export EDK_TOOLS_PATH ?= $(WORKSPACE)\BaseTools
     30 else
     31 export WORKSPACE?=$(PWD)
     32 endif
     33 
     34 # Define the destination of the Firmware Image Package (FIP) if not defined
     35 ifndef JUNO_FIP
     36   ifdef DEST_BIN_ROOT
     37     JUNO_FIP=$(DEST_BIN_ROOT)/fip.bin
     38   else
     39     JUNO_FIP=fip.bin
     40   endif
     41 endif
     42 
     43 SHELL := /bin/bash
     44 SILENT ?= @
     45 ECHO ?= echo
     46 MAKE ?= make -i -k
     47 RM ?= rm -f
     48 CP ?= cp
     49 
     50 .PHONY: all clean
     51 
     52 EDK2_CONF = Conf/BuildEnv.sh Conf/build_rule.txt Conf/target.txt Conf/tools_def.txt
     53 
     54 all: $(EDK2_CONF)
     55 ifeq ("$(OS)","Windows_NT")
     56 	build -a $(EDK2_ARCH) -p $(EDK2_DSC) -t $(EDK2_TOOLCHAIN) -b $(EDK2_BUILD) $(EDK2_MACROS)
     57 else
     58 	. ./edksetup.sh; GCC49_AARCH64_PREFIX=$(GCC49_AARCH64_PREFIX) build -a $(EDK2_ARCH) -p $(EDK2_DSC) -t $(EDK2_TOOLCHAIN) -b $(EDK2_BUILD) $(EDK2_MACROS)
     59 endif
     60 ifeq ("$(OS)","Windows_NT")
     61 	$(SILENT)$(ECHO) "Warning: The UEFI Firmware must be added to the Firmware Image Package (FIP)."
     62 else
     63 	$(SILENT)which fip_create ; \
     64 	if [ $$? -ne 0 ]; then \
     65 		$(ECHO) "Warning: 'fip_create' tool is not in the PATH. The UEFI binary will not be added in the Firmware Image Package (FIP)."; \
     66 	else \
     67 		fip_create --bl33 $(WORKSPACE)/Build/ArmJuno/$(EDK2_BUILD)_$(EDK2_TOOLCHAIN)/FV/BL33_AP_UEFI.fd --dump $(JUNO_FIP); \
     68 	fi
     69 endif
     70 
     71 $(EDK2_CONF):
     72 ifeq ("$(OS)","Windows_NT")
     73 	copy $(EDK_TOOLS_PATH)\Conf\build_rule.template Conf\build_rule.txt
     74 	copy $(EDK_TOOLS_PATH)\Conf\FrameworkDatabase.template Conf\FrameworkDatabase.txt
     75 	copy $(EDK_TOOLS_PATH)\Conf\target.template Conf\target.txt
     76 	copy $(EDK_TOOLS_PATH)\Conf\tools_def.template Conf\tools_def.txt
     77 else
     78 	. ./edksetup.sh; $(MAKE) -C BaseTools
     79 endif
     80 
     81 clean:
     82 ifeq ("$(OS)","Windows_NT")
     83 	build -a $(EDK2_ARCH) -p $(EDK2_DSC) -t $(EDK2_TOOLCHAIN) -b $(EDK2_BUILD) $(EDK2_MACROS) cleanall
     84 else
     85 	. ./edksetup.sh; build -a $(EDK2_ARCH) -p $(EDK2_DSC) -t $(EDK2_TOOLCHAIN) -b $(EDK2_BUILD) $(EDK2_MACROS) cleanall; \
     86 	rm -Rf $(EDK2_CONF) Conf/.cache
     87 endif
     88