forked from InfraSIM/idic
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
119 lines (97 loc) · 3.35 KB
/
Makefile
File metadata and controls
119 lines (97 loc) · 3.35 KB
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
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
113
114
115
116
117
118
.NOTPARALLEL:
VNODE_DIR := vcompute
VPDU_DIR := vpdu
VNODE_TARGETS = $(filter-out common, $(shell find ${VNODE_DIR} -maxdepth 1 -type d -not -name ${VNODE_DIR} -exec basename {} \;))
VPDU_TARGETS = $(filter-out embedded_rootfs, $(shell find ${VPDU_DIR} -maxdepth 1 -type d -not -name ${VPDU_DIR} -exec basename {} \;))
MAKE := make
.DEFAULT: help
.PHONY: all
all: ${VNODE_TARGETS} ${VPDU_TARGETS}
define BUILD_TARGET
@${MAKE} -C $1/$2
endef
#
# Build Targets
#
${VNODE_TARGETS}:
$(call BUILD_TARGET, ${VNODE_DIR},$@)
${VPDU_TARGETS}:
$(call BUILD_TARGET, ${VPDU_DIR},$@)
#
# function for menu config
# $1 - Node or PDU directory
# $2 - Target
#
define MENUCONFIG
@${MAKE} -C $1/$2 menuconfig
endef
menuconfig:
$(if ${PDU},$(call MENUCONFIG,${VPDU_DIR},${PDU}),$(if ${NODE}, $(call MENUCONFIG,${VNODE_DIR},${NODE}),$(error "Please specify PDU or NODE.")))
ifneq ("$(wildcard /etc/lsb-release)", "")
-include /etc/lsb-release
DIST=${DISTRIB_ID}
endif
.PHONY: setupenv
setupenv:
@if [ -e .envset ];then echo "Environment already setup."; fi
@case ${DIST} in \
Ubuntu) apt-get update -q; \
apt-get install -y libncurses5 libncurses5-dev mkisofs zlib1g-dev \
libglib2.0-dev autoconf pkg-config libtool libpopt-dev libssl-dev python-dev nsis \
libdumbnet1 libdumbnet-dev python-dev python-setuptools bison flex tclsh bc docbook-to-man docbook-utils; \
cp -f pdk/linux/embedded_rootfs/scripts/installkernel /sbin/installkernel-idic; ;; \
*) echo "Unsupported platform"; ;; \
esac
@touch .envset
#
# function for clean signle target
# $1 - Node or PDU directory
# $2 - Target
# $3 - Action (clean/clean-root)
#
define CLEAN-SINGLE
@${MAKE} -C $1/$2 $3
endef
.PHONY: clean-single
clean-single:
$(if ${NODE},$(call CLEAN-SINGLE,${VNODE_DIR},${NODE},clean),$(if ${PDU},$(call CLEAN-SINGLE,${VPDU_DIR},${PDU},clean),$(error "Please specify PDU or NODE.")))
.PHONY: clean-single-root
clean-single-root:
$(if ${NODE},$(call CLEAN-SINGLE,${VNODE_DIR},${NODE},clean-root),$(if ${PDU},$(call CLEAN-SINGLE,${VPDU_DIR},${PDU},clean-root),$(error "Please specify PDU or NODE.")))
.PHONY: distclean-single
distclean-single:
$(if ${NODE},$(call CLEAN-SINGLE,${VNODE_DIR},${NODE},distclean),$(if ${PDU},$(call CLEAN-SINGLE,${VPDU_DIR},${PDU},clean-root),$(error "Please specify PDU or NODE.")))
#
# $1 - Targets
# $2 - Target Dir
# $3 - Action (clean/clean-root)
#
define CLEAN
@for sub in $1; do ${MAKE} -C $2/$$sub $3; done
endef
#
# Clean all targets
#
.PHONY: clean
clean:
$(call CLEAN,${VNODE_TARGETS},${VNODE_DIR},clean)
$(call CLEAN,${VPDU_TARGETS},${VPDU_DIR},clean)
.PHONY: clean-root
clean-root:
$(call CLEAN,${VNODE_TARGETS},${VNODE_DIR},clean-root)
$(call CLEAN,${VPDU_TARGETS},${VPDU_DIR},clean-root)
.PHONY: distclean
distclean:
$(call CLEAN,${VNODE_TARGETS},${VNODE_DIR},distclean)
$(call CLEAN,${VPDU_TARGETS},${VPDU_DIR},distclean)
.PHONY: help
help:
@echo
@echo "Build options: "
@echo " all - Build all virtual nodes and virtual PDUs packages (Quanta T41/D51, s2600kp, Sika, hawk, sentry)"
@echo " target - target name"
@echo " clean - Clean entire build environment"
@echo " clean-root - Just clean embedded rootfs built packages untouched for all"
@echo " clean-single - Clean build environment for one specified node/pdu"
@echo " clean-single-root - Just clean rootfs built packages for one node/pdu"
@echo