summaryrefslogtreecommitdiff
path: root/cleopatre/Makefile
blob: fd5cb0dfe953a28a79b8dcf74b078e67eddfe198 (plain)
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
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
##################################################################
ifeq ($(BUNDLE_TYPE),)
  BUNDLE_TYPE=av
endif

include Config.bundle-$(BUNDLE_TYPE)

##################################################################

GIT_DIRECTORIES=cleopatre cesar common

##################################################################

BUNDLE_VERSION=$(shell git describe --always 2>/dev/null)
LINUX_VERSION=2.6.25.10
UBOOT_VERSION=1.1.6

BUNDLE_NAME=SPiDBundle-$(BUNDLE_VERSION)
BUNDLE_TMPDIR_PATH?=$(shell mktemp -d -u --suffix=-BundleCleo)
# Evaluate now.
export BUNDLE_TMPDIR_PATH:=$(BUNDLE_TMPDIR_PATH)
BUNDLE_UPPER_PATH=$(BUNDLE_TMPDIR_PATH)/$(BUNDLE_NAME)
BUNDLE_TMP=$(BUNDLE_UPPER_PATH)-tmp

GIT_BASE=$(CURDIR)/..
WORK_DIRECTORY=$(BUNDLE_UPPER_PATH)/$(BUNDLE_NAME)

BUNDLE_PATH=$(WORK_DIRECTORY)/bundle
BUNDLE_TMP_PATH=$(BUNDLE_TMP)/$(BUNDLE_NAME)/bundle
BUNDLE_GENBIN_PATH=$(WORK_DIRECTORY)/binaries
BUNDLE_PLCBIN_PATH=$(BUNDLE_PATH)/binaries
BUNDLE_RT5572DRV_PATH=$(BUNDLE_PATH)/rt5572drv
BUNDLE_MT7601UDRV_PATH=$(BUNDLE_PATH)/mt7601udrv
BUNDLE_P1905BIN_PATH=$(BUNDLE_PATH)/p1905_managerd

CLEOPATRE_PATH=$(WORK_DIRECTORY)/cleopatre
CESAR_PATH=$(WORK_DIRECTORY)/cesar
COMMON_PATH=$(WORK_DIRECTORY)/common

MMTCGEN=$(COMMON_PATH)/lib/mmtcgen
LIBMME_PATH=$(CLEOPATRE_PATH)/application/libmme

PLCDRV_PATH=$(CLEOPATRE_PATH)/devkit/plcdrv
RT5572DRV_PATH=$(CLEOPATRE_PATH)/devkit/rt5572drv
MT7601UDRV_PATH=$(CLEOPATRE_PATH)/devkit/mt7601udrv
P1905_MANAGERD_PATH=$(CLEOPATRE_PATH)/devkit/p1905_managerd

PLCD_NAME=plcd
PLCD_PATH=$(CLEOPATRE_PATH)/devkit/plcd

CESAR_PRJ_PATH=$(CESAR_PATH)/projects

LINUX_NAME=linux-$(LINUX_VERSION)-arm
LINUX_PATH=$(CLEOPATRE_PATH)/linux-$(LINUX_VERSION)-spc300

# Buildroot is used once the cleopatre as been renamed to bundle
BUILDROOT_PATH=$(BUNDLE_PATH)/buildroot
BUILDROOT_TMP_PATH=$(BUNDLE_TMP_PATH)/buildroot

# U-boot is used once the cleopatre as been renamed to bundle
UBOOT_NAME=u-boot.bin
UBOOT_PATH=$(BUNDLE_PATH)/u-boot-$(UBOOT_VERSION)
UBOOT_TMP_PATH=$(BUNDLE_TMP_PATH)/u-boot-$(UBOOT_VERSION)

# FLASHFS is used once the cleopatre as been renamed to bundle
FLASHFS_NAME=flashfs.*.jffs2
FLASHFS_PATH=$(BUNDLE_TMP_PATH)/tools/flashfs

OPENOCD_PATH=$(BUNDLE_PATH)/tools/openocd-r668

##################################################################

ifdef V
  ifeq ("$(origin V)", "command line")
    KBUILD_VERBOSE = $(V)
  endif
endif
ifndef KBUILD_VERBOSE
  KBUILD_VERBOSE = 0
endif

ifeq ($(KBUILD_VERBOSE),1)
  Q =
else
  Q = @
endif

##################################################################

# Default rule to make a bundle related to the current branch
all:
	$(Q)$(MAKE) bundle-standalone BUNDLE_TYPE="av"

# Custom rule to choose the bundle type
bundle-%:
	$(Q)$(MAKE) bundle-standalone BUNDLE_TYPE="$*"

bundle-standalone:
	$(Q)echo "Prepare $(BUNDLE_NAME)..."
	$(Q)if [ -d $(WORK_DIRECTORY) ]; then \
	    echo "Bundle already exist please remove it before ($(WORK_DIRECTORY))"; false; \
	fi
	$(Q)echo "Generate bundle sources..."
	$(Q)mkdir -p $(WORK_DIRECTORY)
	$(Q)(cd $(GIT_BASE) && git archive --format=tar HEAD: $(GIT_DIRECTORIES)) | tar -x -C $(WORK_DIRECTORY)
	$(Q)echo $(BUNDLE_VERSION) > $(WORK_DIRECTORY)/.version
	$(Q)$(MAKE) -C $(LIBMME_PATH) bundle
	$(Q)cp -R $(CLEOPATRE_PATH) $(BUNDLE_PATH)
	$(Q)cp -R $(COMMON_PATH)/tools/flashfs $(BUNDLE_PATH)/tools
	$(Q)sed -i -e 's/buildjffs2-200//g' $(BUNDLE_PATH)/tools/flashfs/Makefile
	$(Q)cp -R $(COMMON_PATH)/tools/genNVRAM $(BUNDLE_PATH)/tools
	$(Q)sed -i -e 's/\(BUNDLE_DIR=\)n/\1y/' $(BUNDLE_PATH)/tools/genNVRAM/Makefile
	$(Q)echo "Generate PLC binaries..."
	$(Q)echo $(BUNDLE_VERSION) > $(CESAR_PRJ_PATH)/version.txt
	$(Q)mkdir -p $(BUNDLE_PLCBIN_PATH)
	$(Q)[ "$(PLC_BINS)" = "" ] || $(MAKE) $(PLC_BINS)
	$(Q)echo "Generate RT5572 binaries..."
	$(Q)mkdir -p $(BUNDLE_RT5572DRV_PATH)
	$(Q)[ "$(RT5572DRV_BINS)" = "" ] || $(MAKE) $(RT5572DRV_BINS)
	$(Q)echo "Generate MT7601U binaries..."
	$(Q)mkdir -p $(BUNDLE_MT7601UDRV_PATH)
	$(Q)[ "$(MT7601UDRV_BINS)" = "" ] || $(MAKE) $(MT7601UDRV_BINS)
	$(Q)echo "Generate 1905.1 binaries..."
	$(Q)mkdir -p $(BUNDLE_P1905BIN_PATH)
	$(Q)[ "$(P1905_BINS)" = "" ] || $(MAKE) $(P1905_BINS)
	$(Q)echo "Generate Bundle archive..."
	$(Q)$(MAKE) prepare-includes
	$(Q)find $(BUNDLE_PATH)/application/ -name Module -exec rm -f '{}' ';'
	$(Q)sed -i -e 's/\(BUNDLE_VERSION *= *\)\(.*\)/\1$(BUNDLE_VERSION)/' $(BUILDROOT_PATH)/target/device/Spidcom/Makefile.in
	$(Q)sed -i -e 's/\(EXTRAVERSION *= *\)\(.*\)/\1-$(BUNDLE_VERSION)/' $(BUNDLE_PATH)/u-boot-1.1.6/Makefile
	$(Q)echo -n "$(BUNDLE_VERSION)" | sed -e 's/\(.\{16\}\).*/\1/' > $(BUILDROOT_PATH)/.version
	$(Q)cd $(BUNDLE_PATH) ; rm -rf $(UNUSE)
	$(Q)cd $(BUNDLE_UPPER_PATH) ; tar -cf $(BUNDLE_NAME).tar $(subst $(BUNDLE_UPPER_PATH)/,, $(BUNDLE_PATH))
	$(Q)echo "Generate Bundle binaries..."
	$(Q)mkdir -p $(BUNDLE_GENBIN_PATH)
	$(Q)mkdir $(BUNDLE_TMP)
	$(Q)cd $(BUNDLE_TMP); tar xf $(BUNDLE_UPPER_PATH)/$(BUNDLE_NAME).tar
	$(Q)[ "$(GEN_BINS)" = "" ] || $(MAKE) $(GEN_BINS)
	$(Q)rm -rf $(BUNDLE_TMP)
	$(Q)echo "Generate end of Bundle archive..."
	$(Q)cd $(BUNDLE_UPPER_PATH) ; tar -rf $(BUNDLE_NAME).tar $(subst $(BUNDLE_UPPER_PATH)/,, $(BUNDLE_GENBIN_PATH))
	$(Q)bzip2 $(BUNDLE_UPPER_PATH)/$(BUNDLE_NAME).tar
	$(Q)[ "$(DEBUG_BINS)" = "" ] || $(MAKE) $(DEBUG_BINS)
	$(Q)mv $(BUNDLE_UPPER_PATH) $(GIT_BASE)
	$(Q)rmdir $(BUNDLE_TMPDIR_PATH)

prepare-includes:
# We have to remove gitignore files here because, in our git repository, those includes are based in the common/
# directory and the ones in linux and u-boot are just copies we must ignore. But, once copied in the bundle, linux
# and u-boot are their actual base locations and they must not be ignored anymore.
# Moreover, gitignore files are not usually removed, that is why we have to handle them individually.
	$(Q)rm $(BUNDLE_PATH)/linux-$(LINUX_VERSION)-spc300/scripts/mksimage
	$(Q)cp -r $(GIT_BASE)/common/tools/mksimage \
		$(BUNDLE_PATH)/linux-$(LINUX_VERSION)-spc300/scripts/mksimage
	$(Q)$(BUNDLE_PATH)/linux-$(LINUX_VERSION)-spc300/scripts/cpincludes $(BUNDLE_PATH)/linux-$(LINUX_VERSION)-spc300
	$(Q)rm -f $(BUNDLE_PATH)/linux-$(LINUX_VERSION)-spc300/scripts/cpincludes
	$(Q)rm -f $(BUNDLE_PATH)/linux-$(LINUX_VERSION)-spc300/include/asm-arm/arch-spc300/.gitignore
	$(Q)cd $(BUNDLE_PATH)/include; ln -sf ../linux-$(LINUX_VERSION)-spc300/include/asm-arm/arch-spc300/nvram.h nvram.h
	$(Q)$(MAKE) -C $(UBOOT_PATH) cpincludes
	$(Q)rm -f $(UBOOT_PATH)/cpincludes.mk
	$(Q)rm -f $(UBOOT_PATH)/include/asm-arm/arch-spc300/.gitignore
	$(Q)$(OPENOCD_PATH)/cpincludes $(OPENOCD_PATH)
	$(Q)rm -f $(OPENOCD_PATH)/cpincludes
	$(Q)rm -f $(OPENOCD_PATH)/.gitignore
	$(Q)rm -f $(BUNDLE_PATH)/include/ethernet.h $(BUNDLE_PATH)/include/spid_img_desc.h
	$(Q)cp -f $(GIT_BASE)/common/include/ethernet.h $(BUNDLE_PATH)/include/
	$(Q)cp $(GIT_BASE)/common/include/spid_img_desc.h \
		$(BUNDLE_PATH)/include/

cesar-plc-debug:
	$(Q)$(MAKE) -C $(CESAR_PRJ_PATH)/plc clean
	$(Q)rm -fr $(CESAR_PRJ_PATH)/plc/obj
	$(Q)$(MAKE) -C $(CESAR_PRJ_PATH)/plc PROJECT_CONFIG=Config.traces
	$(Q)cp $(CESAR_PRJ_PATH)/plc/obj/plc.rom $(BUNDLE_UPPER_PATH)/plc-with-traces.rom

plcd: $(foreach chip,$(CHIPS),plcd-$(chip))

plcd-%:
	-$(Q)$(MAKE) -C $(CLEOPATRE_PATH)/buildroot clean distclean
	$(Q)$(MAKE) -C $(CLEOPATRE_PATH)/buildroot ${$*_REF_BOARD}_defconfig
	$(Q)$(MAKE) -C $(CLEOPATRE_PATH)/buildroot plcd VERSION=$(BUNDLE_VERSION)
	$(Q)cp $(PLCD_PATH)/plcd $(BUNDLE_PLCBIN_PATH)/$(PLCD_NAME)-$*

plcdrv: $(foreach chip,$(CHIPS),plcdrv-$(chip))

plcdrv-%:
	-$(Q)$(MAKE) -C $(CLEOPATRE_PATH)/buildroot clean distclean
	$(Q)$(MAKE) -C $(CLEOPATRE_PATH)/buildroot ${$*_REF_BOARD}_defconfig
	$(Q)$(MAKE) -C $(CLEOPATRE_PATH)/buildroot plcdrv BUNDLE_VERSION=$(BUNDLE_VERSION)
	$(Q)cp $(PLCDRV_PATH)/plcdrv.ko $(BUNDLE_PLCBIN_PATH)/plcdrv-$*.ko
	$(Q)cp $(CESAR_PRJ_PATH)/plc/obj/plc.rom $(BUNDLE_PLCBIN_PATH)/plc.rom
	$(Q)cp $(PLCDRV_PATH)/hotplug-plcdrv $(BUNDLE_PLCBIN_PATH)
	
rt5572drv:
	-$(Q)$(MAKE) -C $(CLEOPATRE_PATH)/buildroot clean distclean
	$(Q)$(MAKE) -C $(CLEOPATRE_PATH)/buildroot ${mse500_REF_BOARD}_defconfig
	$(Q)$(MAKE) -C $(CLEOPATRE_PATH)/buildroot rt5572drv
	$(Q)cp $(RT5572DRV_PATH)/UTIL/os/linux/rtutil5572ap.ko $(BUNDLE_RT5572DRV_PATH)/rtutil5572ap.ko
	$(Q)cp $(RT5572DRV_PATH)/MODULE/os/linux/rt5572ap.ko $(BUNDLE_RT5572DRV_PATH)/rt5572ap.ko
	$(Q)cp $(RT5572DRV_PATH)/NETIF/os/linux/rtnet5572ap.ko $(BUNDLE_RT5572DRV_PATH)/rtnet5572ap.ko
	$(Q)cp $(RT5572DRV_PATH)/MODULE/RT2870AP.dat $(BUNDLE_RT5572DRV_PATH)/RT2870AP.dat
	$(Q)cp $(RT5572DRV_PATH)/S90wifi $(BUNDLE_RT5572DRV_PATH)/S90wifi
	$(Q)cp $(RT5572DRV_PATH)/hotplug-wifi $(BUNDLE_RT5572DRV_PATH)/hotplug-wifi

mt7601udrv:
	-$(Q)$(MAKE) -C $(CLEOPATRE_PATH)/buildroot clean distclean
	$(Q)$(MAKE) -C $(CLEOPATRE_PATH)/buildroot ${mse500_REF_BOARD}_defconfig
	$(Q)$(MAKE) -C $(CLEOPATRE_PATH)/buildroot mt7601udrv
	$(Q)cp $(MT7601UDRV_PATH)/os/linux/mt7601Uap.ko $(BUNDLE_MT7601UDRV_PATH)/mt7601Uap.ko
	$(Q)cp $(MT7601UDRV_PATH)/RT2870AP.dat $(BUNDLE_MT7601UDRV_PATH)/RT2870AP.dat
	$(Q)cp $(MT7601UDRV_PATH)/S32wifi $(BUNDLE_MT7601UDRV_PATH)/S32wifi

p1905_managerd:
	-$(Q)$(MAKE) -C $(CLEOPATRE_PATH)/buildroot clean distclean
	$(Q)$(MAKE) -C $(CLEOPATRE_PATH)/buildroot ${mse500_REF_BOARD}_defconfig
	$(Q)$(MAKE) -C $(CLEOPATRE_PATH)/buildroot p1905_managerd
	$(Q)cp $(P1905_MANAGERD_PATH)/p1905_managerd $(BUNDLE_P1905BIN_PATH)/p1905_managerd
	$(Q)cp $(P1905_MANAGERD_PATH)/S98p1905 $(BUNDLE_P1905BIN_PATH)/S98p1905

uboot:
	$(Q)$(MAKE) -C $(UBOOT_TMP_PATH) clean distclean sdk300_config
	$(Q)$(MAKE) -C $(UBOOT_TMP_PATH)
	$(Q)cp $(UBOOT_TMP_PATH)/u-boot.bin $(BUNDLE_GENBIN_PATH)/spc300-$(UBOOT_NAME)
	$(Q)$(MAKE) -C $(UBOOT_TMP_PATH) clean distclean mse500_config
	$(Q)$(MAKE) -C $(UBOOT_TMP_PATH)
	$(Q)cp $(UBOOT_TMP_PATH)/u-boot.bin $(BUNDLE_GENBIN_PATH)/mse500-$(UBOOT_NAME)

linux: $(foreach board,$(BOARDS), linux-$(board))

linux-%:
	-$(Q)$(MAKE) -C $(BUILDROOT_TMP_PATH) clean distclean
	$(Q)$(MAKE) -C $(BUILDROOT_TMP_PATH) $*_defconfig
	$(Q)$(MAKE) -C $(BUILDROOT_TMP_PATH)
	$(Q)cp $(BUILDROOT_TMP_PATH)/binaries/$*/linux-kernel-$(LINUX_VERSION)-arm $(BUNDLE_GENBIN_PATH)/$(LINUX_NAME)-$*

flashfs:
	$(Q)$(MAKE) -C $(FLASHFS_PATH)
	$(Q)cp $(FLASHFS_PATH)/$(FLASHFS_NAME) $(BUNDLE_GENBIN_PATH)/