diff options
Diffstat (limited to 'altera-socfpga/hardware-handoff/spl_bsp/Makefile')
-rw-r--r-- | altera-socfpga/hardware-handoff/spl_bsp/Makefile | 323 |
1 files changed, 323 insertions, 0 deletions
diff --git a/altera-socfpga/hardware-handoff/spl_bsp/Makefile b/altera-socfpga/hardware-handoff/spl_bsp/Makefile new file mode 100644 index 0000000..ec12f34 --- /dev/null +++ b/altera-socfpga/hardware-handoff/spl_bsp/Makefile @@ -0,0 +1,323 @@ +############################################################################### +# +# Altera SoC EDS Preloader/UBoot Build System +# +# Copyright (c) 2013,2014 Altera Corporation +# All Rights Reserved +# +############################################################################### + + +############################################################################### +# +# Generated Variables +# + +PRELOADER_SETTINGS_DIR := ../../hps_isw_handoff/hps_hps_0 + +TGZ := $(SOCEDS_DEST_ROOT)/host_tools/altera/preloader/uboot-socfpga.tar.gz + +CROSS_COMPILE := arm-altera-eabi- + +DEVICE_FAMILY := cyclone5 + +############################################################################### + + +############################################################################### +# +# Derived Variables +# + +MAKE_ARGS += CROSS_COMPILE=$(CROSS_COMPILE) + +PRELOADER_SRC_DIR := $(patsubst %.tar.gz,%,$(shell basename $(TGZ))) + +PRELOADER_UPDATE_DIR := $(PRELOADER_SRC_DIR)/board/altera/socfpga + +SOCFPGA_BOARD_CONFIG := socfpga_$(DEVICE_FAMILY)_config + +############################################################################### + + +############################################################################### +# +# Tools +# + +CAT := cat +CHMOD := chmod +CP := cp -rf +DIFF := diff +ECHO := echo +PATCH := patch +MKDIR := mkdir -p +RM := rm -rf +TOUCH := touch +UNTAR := tar zxf + +############################################################################### + + +############################################################################### +# +# Helper Variables and Functions +# + +STAMP_DIR ?= $(PRELOADER_SRC_DIR) + +define stamp +@$(MKDIR) $(@D) +@$(TOUCH) $@ +endef + +define untar_recipe +$(UNTAR) $(if $1,$1,$(if $<,$<,$(error ERROR: no input provided to gnu make function untar_recipe))) +endef + +# Stamps +UNTAR_SRC := $(STAMP_DIR)/.untar +CONFIG := $(STAMP_DIR)/.config +PATCH_APPLY := $(STAMP_DIR)/.patch + +############################################################################### + + +############################################################################### +# +# Windows Support +# +# +HOSTOS := $(shell uname -o 2>/dev/null | tr [:upper:] [:lower:]) + +ifeq ($(HOSTOS),cygwin) + +# When using UBoot build system on Windows it's good idea to use cygwin's GNU make +MAKE := $(shell cygpath -m "/bin/make") +MAKE_ARGS += MAKE=/bin/make + +CYGPATH := $(shell cygpath -m "$(shell which cygpath)") +MAKE_ARGS += CYGPATH=$(CYGPATH) + +UNAME_M := $(shell uname -m) +ifeq ($(UNAME_M),x86_64) +HOST_CROSS_COMPILE := x86_64-w64-mingw32- +else +HOST_CROSS_COMPILE := i686-pc-mingw32- +endif + +MAKE_ARGS += HOSTCC=$(HOST_CROSS_COMPILE)gcc HOSTSTRIP=$(HOST_CROSS_COMPILE)strip + +# Under cygwin, overload the untar_recipe function to use unix stype paths. This is required for cygwin tar +define untar_recipe +$(UNTAR) $(shell cygpath --unix "$(if $1,$1,$(if $<,$<,$(error ERROR: no input provided to gnu make function untar_recipe)))") +endef + +else # if HOSTOS != cygwin + +ifdef WINDIR +$(error ERROR: Windows build of preloader requires cygwin build environment. Ensure this makefile is executed from the SoC EDS Command Shell) +endif +ifdef windir +$(error ERROR: Windows build of preloader requires cygwin build environment. Ensure this makefile is executed from the SoC EDS Command Shell) +endif + +endif # HOSTOS == cygwin +############################################################################### + + +############################################################################### +# +# Source Files +# + +SDRAM_SOURCE_FILES := \ + alt_types.h \ + sdram_io.h \ + sequencer_auto_ac_init.c \ + sequencer_auto.h \ + sequencer_auto_inst_init.c \ + sequencer.c \ + sequencer_defines.h \ + sequencer.h \ + system.h \ + tclrpt.c \ + tclrpt.h + +GENERATED_SOURCE_FILES := \ + build.h \ + iocsr_config_$(DEVICE_FAMILY).c \ + iocsr_config_$(DEVICE_FAMILY).h \ + reset_config.h \ + pll_config.h \ + pinmux_config_$(DEVICE_FAMILY).c \ + pinmux_config.h \ + sdram/sdram_config.h + + +UPDATE_SDRAM_SOURCE_FILES := $(patsubst %,$(PRELOADER_UPDATE_DIR)/sdram/%,$(SDRAM_SOURCE_FILES)) + +UPDATE_GENERATED_SOURCE_FILES := $(patsubst %,$(PRELOADER_UPDATE_DIR)/%,$(GENERATED_SOURCE_FILES)) + +############################################################################### + + +############################################################################### +# +# Main build targets +# + +PRELOADER.BINARY := $(PRELOADER_SRC_DIR)/spl/u-boot-spl.bin +PRELOADER.MKPIMAGE_BINARY := preloader-mkpimage.bin +UBOOT.BINARY := $(PRELOADER_SRC_DIR)/u-boot.bin + +.PHONY: all +all: spl mkpimage-spl + +.PHONY: uboot +uboot: $(UBOOT.BINARY) + +$(UBOOT.BINARY): $(CONFIG) + $(MAKE) $(MAKE_ARGS) -C $(PRELOADER_SRC_DIR) + +.PHONY: spl +spl: $(PRELOADER.BINARY) + +$(PRELOADER.BINARY): $(CONFIG) + $(MAKE) $(MAKE_ARGS) -C $(PRELOADER_SRC_DIR) spl/u-boot-spl.bin + +.PHONY: mkpimage-spl +mkpimage-spl: $(PRELOADER.MKPIMAGE_BINARY) + +$(PRELOADER.MKPIMAGE_BINARY): $(PRELOADER.BINARY) + mkpimage --header-version 0 -o $@ $< $< $< $< + +.PHONY: tools +tools: $(CONFIG) + $(MAKE) $(MAKE_ARGS) -C $(PRELOADER_SRC_DIR) tools + + +############################################################################### + + +############################################################################### +# +# Untar, Update, & Configure Preloader Source +# + + +##### +# Untar +.PHONY: src +src: $(UNTAR_SRC) + +$(UNTAR_SRC): $(TGZ) + @$(RM) $(PRELOADER_SRC_DIR) + $(untar_recipe) + @$(CHMOD) -R 755 $(PRELOADER_SRC_DIR) + $(stamp) + +##### +# Update +.PHONY: update-src +update-src: $(UPDATE_SRC) + +UPDATE_SRC += $(UPDATE_GENERATED_SOURCE_FILES) $(UPDATE_SDRAM_SOURCE_FILES) + +$(UPDATE_SDRAM_SOURCE_FILES): $(PRELOADER_UPDATE_DIR)/sdram/%: $(PRELOADER_SETTINGS_DIR)/% $(UNTAR_SRC) $(PATCH.APPLY_TARGETS) + @$(MKDIR) $(@D) + @$(CP) -v $< $@ + +$(UPDATE_GENERATED_SOURCE_FILES): $(PRELOADER_UPDATE_DIR)/%: generated/% $(UNTAR_SRC) $(PATCH.APPLY_TARGETS) + @$(MKDIR) $(@D) + @$(CP) -v $< $@ + +##### +# Configure +.PHONY: config +config: $(CONFIG) + +$(CONFIG): $(UPDATE_SRC) $(UNTAR_SRC) $(PATCH_APPLY) + $(MAKE) $(MAKE_ARGS) -C $(PRELOADER_SRC_DIR) $(SOCFPGA_BOARD_CONFIG) + $(stamp) + +############################################################################### + + +############################################################################### +# +# Cleaning up +# + +.PHONY: clean +clean: +ifneq ($(wildcard $(PRELOADER_SRC_DIR)),) + $(MAKE) $(MAKE_ARGS) -C $(PRELOADER_SRC_DIR) mrproper +endif + $(RM) $(PRELOADER.MKPIMAGE_BINARY) $(CONFIG) + +.PHONY: clean-all +clean-all: + $(RM) $(PRELOADER_SRC_DIR) $(PRELOADER.MKPIMAGE_BINARY) $(CONFIG) $(PATCH_APPLY) $(UNTAR_SRC) + +############################################################################### + + +############################################################################### +# +# Applying patch files +# + +# GNU MAKE >= 3.81 is required to apply patch files correctly +.SECONDEXPANSION: + +# Patch files are discovered in current directory and in the directory adjacent +# to the tarball (TGZ) directory + +PATCH.FILES := $(strip \ + $(sort $(wildcard $(patsubst %.tar.gz,%.patch,$(TGZ))/*.patch)) \ + $(sort $(wildcard $(patsubst %.tar.gz,%.patch,$(TGZ))/$(HOSTOS)/*.patch)) \ + $(sort $(wildcard $(abspath .)/*.patch)) \ + $(EXTRA_PATCH_FILES)) + +PATCH.APPLY_TARGETS := $(strip $(foreach patchfile,$(PATCH.FILES), \ + $(eval patchfile_target := $(notdir $(basename $(patchfile)))) \ + $(eval $(patchfile_target).PATCH_FILE := $(patchfile)) \ + $(PRELOADER_SRC_DIR)/.applypatch.$(patchfile_target) \ +)) + +.PHONY: patch-apply +patch-apply: $(PATCH_APPLY) + +$(PATCH_APPLY): $(PATCH.APPLY_TARGETS) + $(stamp) + +$(PATCH.APPLY_TARGETS): $(PRELOADER_SRC_DIR)/.applypatch.%: $$(%.PATCH_FILE) $(UNTAR_SRC) + @$(ECHO) Applying Patch: $< + $(PATCH) -p1 --directory=$(PRELOADER_SRC_DIR) --input=$< + $(stamp) + +############################################################################### + + +############################################################################### +# +# Creating a patch file +# + +PATCH.USER_FILE := user.patch + +.PHONY: patch-create +patch-create: $(if $(PATCH.SKIP_CLEAN),,clean) +ifeq ($(wildcard $(PRELOADER_SRC_DIR).orig),) + $(error ERROR: $(PRELOADER_SRC_DIR).orig does not exist) +endif + $(DIFF) -rupN $(PRELOADER_SRC_DIR).orig/ $(PRELOADER_SRC_DIR)/ > $(PATCH.USER_FILE) || true +ifeq ($(HOSTOS),cygwin) + dos2unix $(PATCH.USER_FILE) +endif + $(CAT) $(PATCH.USER_FILE) + +############################################################################### + + |