You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							245 lines
						
					
					
						
							6.9 KiB
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							245 lines
						
					
					
						
							6.9 KiB
						
					
					
				
								#
							 | 
						|
								# Master makefile
							 | 
						|
								#
							 | 
						|
								# -----------------------------------------------------------------------------
							 | 
						|
								
							 | 
						|
								UID := $(shell id -u)
							 | 
						|
								ifeq ($(UID),0)
							 | 
						|
								warn:
							 | 
						|
									@echo "You are running as root. Do not do this, it is dangerous."
							 | 
						|
									@echo "Aborting the build. Log in as a regular user and retry."
							 | 
						|
								else
							 | 
						|
								
							 | 
						|
								# Delete default rules. We don't use them. This saves a bit of time.
							 | 
						|
								.SUFFIXES:
							 | 
						|
								
							 | 
						|
								# we want bash as shell
							 | 
						|
								SHELL := $(shell if [ -x "$$BASH" ]; then echo $$BASH; \
							 | 
						|
									 else if [ -x /bin/bash ]; then echo /bin/bash; \
							 | 
						|
									 else echo sh; fi; fi)
							 | 
						|
								
							 | 
						|
								# Include some helper macros and variables
							 | 
						|
								include support/misc/utils.mk
							 | 
						|
								
							 | 
						|
								# bash prints the name of the directory on 'cd <dir>' if CDPATH is
							 | 
						|
								# set, so unset it here to not cause problems. Notice that the export
							 | 
						|
								# line doesn't affect the environment of $(shell ..) calls.
							 | 
						|
								export CDPATH :=
							 | 
						|
								
							 | 
						|
								# Disable top-level parallel build if per-package directories is not
							 | 
						|
								# used. Indeed, per-package directories is necessary to guarantee
							 | 
						|
								# determinism and reproducibility with top-level parallel build.
							 | 
						|
								.NOTPARALLEL:
							 | 
						|
								
							 | 
						|
								# To put more focus on warnings, be less verbose as default
							 | 
						|
								# Use 'make V=1' to see the full commands
							 | 
						|
								ifeq ("$(origin V)", "command line")
							 | 
						|
								  KBUILD_VERBOSE = $(V)
							 | 
						|
								endif
							 | 
						|
								ifndef KBUILD_VERBOSE
							 | 
						|
								  KBUILD_VERBOSE = 0
							 | 
						|
								endif
							 | 
						|
								
							 | 
						|
								ifeq ($(KBUILD_VERBOSE),1)
							 | 
						|
								  Q =
							 | 
						|
								ifndef VERBOSE
							 | 
						|
								  VERBOSE = 1
							 | 
						|
								endif
							 | 
						|
								export VERBOSE
							 | 
						|
								else
							 | 
						|
								  Q = @
							 | 
						|
								endif
							 | 
						|
								
							 | 
						|
								# kconfig uses CONFIG_SHELL
							 | 
						|
								CONFIG_SHELL := $(SHELL)
							 | 
						|
								
							 | 
						|
								export SHELL CONFIG_SHELL Q KBUILD_VERBOSE
							 | 
						|
								
							 | 
						|
								# -----------------------------------------------------------------------------
							 | 
						|
								
							 | 
						|
								# first target is default ...
							 | 
						|
								default: all
							 | 
						|
								
							 | 
						|
								local-files: config.local Makefile.local local
							 | 
						|
								
							 | 
						|
								# workaround unset variables at first start
							 | 
						|
								config.local: $(eval BOXMODEL=hd51)
							 | 
						|
									@clear
							 | 
						|
									@echo ""
							 | 
						|
									@echo "    ###   ###  ###"
							 | 
						|
									@echo "     ###   ##  ##"
							 | 
						|
									@echo "     ####  ##  ##"
							 | 
						|
									@echo "     ## ## ##  ##"
							 | 
						|
									@echo "     ##  ####  ##"
							 | 
						|
									@echo "     ##   ###  ##"
							 | 
						|
									@echo "     ##    ##  ##      http://www.neutrino-images.de"
							 | 
						|
									@echo "            #"
							 | 
						|
									@echo ""
							 | 
						|
									@$(call draw_line);
							 | 
						|
									@echo ""
							 | 
						|
									@echo "   1)  Coolstream Nevis (HD1, BSE, Neo, Neo², Zee)"
							 | 
						|
									@echo "   2)  Coolstream Apollo (Tank)"
							 | 
						|
									@echo "   3)  Coolstream Shiner (Trinity)"
							 | 
						|
									@echo "   4)  Coolstream Kronos (Zee², Trinity V2)"
							 | 
						|
									@echo "   5)  Coolstream Kronos V2 (Link, Trinity Duo)"
							 | 
						|
									@echo "  11)  AX/Mutant HD51"
							 | 
						|
									@echo "  12)  AX/Mutant HD60"
							 | 
						|
									@echo "  13)  AX/Mutant HD61"
							 | 
						|
									@echo "  14)  Maxytec Multibox 4K"
							 | 
						|
									@echo "  15)  Maxytec Multibox SE 4K"
							 | 
						|
									@echo "  21)  WWIO BRE2ZE4K"
							 | 
						|
									@echo "  31)  Air Digital Zgemma H7"
							 | 
						|
									@echo "  35)  AXAS E4HD 4K Ultra"
							 | 
						|
									@echo "  41)  VU+ Solo 4k"
							 | 
						|
									@echo "  42)  VU+ Duo 4k"
							 | 
						|
									@echo "  43)  VU+ Duo 4k SE"
							 | 
						|
									@echo "  44)  VU+ Ultimo 4k"
							 | 
						|
									@echo "  45)  VU+ Zero 4k"
							 | 
						|
									@echo "  46)  VU+ Uno 4k"
							 | 
						|
									@echo "  47)  VU+ Uno 4k SE"
							 | 
						|
									@echo "  51)  VU+ Duo"
							 | 
						|
									@echo ""
							 | 
						|
									@read -p "Select your boxmodel? [default: 11] " boxmodel; \
							 | 
						|
									boxmodel=$${boxmodel:-11}; \
							 | 
						|
									case "$$boxmodel" in \
							 | 
						|
										 1)	boxmodel=nevis;; \
							 | 
						|
										 2)	boxmodel=apollo;; \
							 | 
						|
										 3)	boxmodel=shiner;; \
							 | 
						|
										 4)	boxmodel=kronos;; \
							 | 
						|
										 5)	boxmodel=kronos_v2;; \
							 | 
						|
										11)	boxmodel=hd51;; \
							 | 
						|
										12)	boxmodel=hd60;; \
							 | 
						|
										13)	boxmodel=hd61;; \
							 | 
						|
										14)	boxmodel=multibox;; \
							 | 
						|
										15)	boxmodel=multiboxse;; \
							 | 
						|
										21)	boxmodel=bre2ze4k;; \
							 | 
						|
										31)	boxmodel=h7;; \
							 | 
						|
										35)	boxmodel=e4hdultra;; \
							 | 
						|
										41)	boxmodel=vusolo4k;; \
							 | 
						|
										42)	boxmodel=vuduo4k;; \
							 | 
						|
										43)	boxmodel=vuduo4kse;; \
							 | 
						|
										44)	boxmodel=vuultimo4k;; \
							 | 
						|
										45)	boxmodel=vuzero4k;; \
							 | 
						|
										46)	boxmodel=vuuno4k;; \
							 | 
						|
										47)	boxmodel=vuuno4kse;; \
							 | 
						|
										51)	boxmodel=vuduo;; \
							 | 
						|
										*)	boxmodel=hd51;; \
							 | 
						|
									esac; \
							 | 
						|
									cp support/config.example $@; \
							 | 
						|
									sed -i -e "s|^#BOXMODEL = $$boxmodel|BOXMODEL = $$boxmodel|" $@
							 | 
						|
								
							 | 
						|
								Makefile.local:
							 | 
						|
									@cp support/Makefile.example $@
							 | 
						|
								
							 | 
						|
								local:
							 | 
						|
									@mkdir -p $(@)/{root,scripts}
							 | 
						|
								
							 | 
						|
								printenv:
							 | 
						|
									@$(call draw_line);
							 | 
						|
									@echo "Build Environment Varibles:"
							 | 
						|
									@echo "CROSS_DIR:   $(CROSS_DIR)"
							 | 
						|
									@echo "TARGET:      $(TARGET)"
							 | 
						|
									@echo "BASE_DIR:    $(BASE_DIR)"
							 | 
						|
									@echo "SOURCE_DIR:  $(SOURCE_DIR)"
							 | 
						|
									@echo "BUILD:       $(BUILD)"
							 | 
						|
									@echo "PATH:        `type -p fmt>/dev/null&&echo $(PATH)|sed 's/:/ /g' |fmt -65|sed 's/ /:/g; 2,$$s/^/             /;'||echo $(PATH)`"
							 | 
						|
									@echo "BOXARCH:     $(BOXARCH)"
							 | 
						|
									@echo "BOXTYPE:     $(BOXTYPE)"
							 | 
						|
									@echo "BOXSERIES:   $(BOXSERIES)"
							 | 
						|
									@echo "BOXMODEL:    $(BOXMODEL)"
							 | 
						|
									@$(call draw_line);
							 | 
						|
									@echo ""
							 | 
						|
									@echo "'make help' lists useful targets."
							 | 
						|
									@echo ""
							 | 
						|
									@make --no-print-directory toolcheck
							 | 
						|
									@make -i -s $(TARGET_DIR)
							 | 
						|
									@PATH=$(PATH):$(CROSS_DIR)/bin && \
							 | 
						|
									if type -p $(TARGET_CC) >/dev/null 2>&1; then \
							 | 
						|
										echo "$(TARGET_CC) found in PATH or in \$$CROSS_DIR/bin."; \
							 | 
						|
									else \
							 | 
						|
										echo "$(TARGET_CC) not found in PATH or \$$CROSS_DIR/bin"; \
							 | 
						|
										echo "=> please check your setup. Maybe you need to 'make crosstool'."; \
							 | 
						|
									fi
							 | 
						|
									@if ! LANG=C make -n preqs|grep -q "Nothing to be done"; then \
							 | 
						|
										echo; \
							 | 
						|
										echo "Your next target to do is probably 'make preqs'"; \
							 | 
						|
									fi
							 | 
						|
									@if ! test -e $(BASE_DIR)/config.local; then \
							 | 
						|
										echo; \
							 | 
						|
										echo "If you want to change the configuration, then run 'make local-files'"; \
							 | 
						|
										echo "and edit config.local to fit your needs. See the comments in there."; \
							 | 
						|
										echo; \
							 | 
						|
									fi
							 | 
						|
								
							 | 
						|
								help:
							 | 
						|
									@$(call draw_line);
							 | 
						|
									@echo "A few helpful make targets:"
							 | 
						|
									@echo " * make preqs      - Downloads necessary stuff"
							 | 
						|
									@echo " * make crosstool  - Build cross toolchain"
							 | 
						|
									@echo " * make bootstrap  - Prepares for building"
							 | 
						|
									@echo " * make neutrino   - Builds Neutrino"
							 | 
						|
									@echo " * make image      - Builds our beautiful NI-Image"
							 | 
						|
									@echo ""
							 | 
						|
									@echo "Later, you might find those useful:"
							 | 
						|
									@echo " * make update     - Update buildsystem and all sources"
							 | 
						|
									@echo ""
							 | 
						|
									@echo "Cleanup:"
							 | 
						|
									@echo " * make clean      - Clean up from previous build an prepare for a new one"
							 | 
						|
									@echo ""
							 | 
						|
									@echo "Total renew:"
							 | 
						|
									@echo " * make all-clean  - Reset buildsystem to delivery state"
							 | 
						|
									@echo "                     but doesn't touch your local stuff"
							 | 
						|
									@$(call draw_line);
							 | 
						|
								
							 | 
						|
								all:
							 | 
						|
									@echo "'make all' is not a valid target."
							 | 
						|
								
							 | 
						|
								# target for testing only. not useful otherwise
							 | 
						|
								everything: $(shell find package/*/*.mk -type f | cut -d'/' -f2 | sort | uniq)
							 | 
						|
								
							 | 
						|
								# -----------------------------------------------------------------------------
							 | 
						|
								
							 | 
						|
								-include config.local
							 | 
						|
								
							 | 
						|
								include package/Makefile.in
							 | 
						|
								
							 | 
						|
								include make/environment-box.mk
							 | 
						|
								include make/environment-linux.mk
							 | 
						|
								include make/environment-build.mk
							 | 
						|
								include make/environment-image.mk
							 | 
						|
								include make/environment-update.mk
							 | 
						|
								
							 | 
						|
								-include internal/internal.mk
							 | 
						|
								
							 | 
						|
								include make/buildsystem-bootstrap.mk
							 | 
						|
								include make/buildsystem-clean.mk
							 | 
						|
								include make/buildsystem-helpers.mk
							 | 
						|
								include make/buildsystem-prerequisites.mk
							 | 
						|
								include make/buildsystem-update.mk
							 | 
						|
								include make/flash-updates.mk
							 | 
						|
								include make/flash-images.mk
							 | 
						|
								include make/linux-kernel.mk
							 | 
						|
								include make/target-blobs.mk
							 | 
						|
								include make/target-files.mk
							 | 
						|
								include make/target-libs-static.mk
							 | 
						|
								include make/target-rootfs.mk
							 | 
						|
								include make/host-tools.mk
							 | 
						|
								
							 | 
						|
								include $(sort $(wildcard package/*/*.mk))
							 | 
						|
								
							 | 
						|
								include make/ni.mk
							 | 
						|
								
							 | 
						|
								# for your local extensions, e.g. special plugins or similar ...
							 | 
						|
								-include ./Makefile.local
							 | 
						|
								
							 | 
						|
								# -----------------------------------------------------------------------------
							 | 
						|
								
							 | 
						|
								.print-phony:
							 | 
						|
									@echo $(PHONY)
							 | 
						|
								
							 | 
						|
								PHONY += local-files
							 | 
						|
								PHONY += printenv help all everything
							 | 
						|
								PHONY += .print-phony
							 | 
						|
								.PHONY: $(PHONY)
							 | 
						|
								
							 | 
						|
								endif
							 | 
						|
								
							 |