summaryrefslogtreecommitdiff
path: root/cleopatre/Makefile
blob: 51e0655011e884de267abe0c608459f60ae4e945 (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
AV_BOARDS=spk300g spk300 spr300 scr310 spk310 spr310
EOC_BOARDS=spk300g_eoc_cco spk300g_eoc_sta scr310_eoc_cco scr310_eoc_sta spk310_eoc_cco spk310_eoc_sta

FCM3_UNUSE=buildroot/target/device/Spidcom/arizona \
	   buildroot/target/device/Spidcom/arizona_defconfig \
	   u-boot-1.1.6/board/arizona \
	   u-boot-1.1.6/cpu/spc300-fcm3 \
	   u-boot-1.1.6/include/asm-arm/arch-spc300-fcm3 \
	   linux-2.6.25.10-spc300/arch/arm/mach-spc300/board-arizona.c
FLASHFS_UNUSE=tools/flashfs/image/etc/init.d/S50plctest \
	    tools/flashfs/image/etc/plcdrv.conf
NVRAM_AV_UNUSE=
NVRAM_EOC_UNUSE=
SPIDUPD_UNUSE=tools/spidupd/Makefile tools/spidupd/inc tools/spidupd/src

COMMON_UNUSE=devkit Makefile bundleDelivery.py $(FCM3_UNUSE) $(FLASHFS_UNUSE)  $(SPIDUPD_UNUSE)
AV_UNUSE=$(COMMON_UNUSE) application/onlined application/upnpd $(NVRAM_AV_UNUSE)
EOC_UNUSE=$(COMMON_UNUSE) application/upnpd $(NVRAM_EOC_UNUSE)

AV_DEBUG_BINS= cesar-plc-debug
EOC_DEBUG_BINS=

AV_PLC_BINS= plcd plcdrv cesar-plc
EOC_PLC_BINS=plcd plcdrv cesar-eoc-master cesar-eoc-slave

GEN_BINS=uboot linux flashfs

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-spc300-$(BUNDLE_VERSION)
BUNDLE_UPPER_PATH=/tmp/$(BUNDLE_NAME)

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

BUNDLE_PATH=$(WORK_DIRECTORY)/bundle
BUNDLE_GENBIN_PATH=$(WORK_DIRECTORY)/binaries
BUNDLE_PLCBIN_PATH=$(BUNDLE_PATH)/binaries

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

PLCDRV_NAME=plcdrv.ko
PLCDRV_PATH=$(CLEOPATRE_PATH)/devkit/plcdrv

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

CESAR_PLC_NAME=plc.rom
CESAR_EOC_MASTER_NAME=master.rom
CESAR_EOC_SLAVE_NAME=slave.rom
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_DOWNLOAD_PATH=$(CURDIR)/buildroot/download
BUILDROOT_PATH=$(BUNDLE_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)

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

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

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

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

bundle: bundle-av bundle-eoc

bundle-clean: bundle-av-clean bundle-eoc-clean

bundle-av:
	$(Q)$(MAKE) bundle-standalone BUNDLE_TYPE=av BOARDS="$(AV_BOARDS)" PLC_BINS="$(AV_PLC_BINS)" UNUSE="$(AV_UNUSE)" DEBUG_BINS="$(AV_DEBUG_BINS)"

bundle-eoc:
	$(Q)$(MAKE) bundle-standalone BUNDLE_TYPE=eoc BOARDS="$(EOC_BOARDS)" PLC_BINS="$(EOC_PLC_BINS)" UNUSE="$(EOC_UNUSE)" DEBUG_BINS="$(EOC_DEBUG_BINS)"

bundle-av-clean:
	$(Q)$(MAKE) bundle-clean-standalone BUNDLE_TYPE=av

bundle-eoc-clean:
	$(Q)$(MAKE) bundle-clean-standalone BUNDLE_TYPE=eoc

bundle-standalone:
	$(Q)if [ "$(BUNDLE_TYPE)" = "" ]; then \
	    echo "You need to fill BUNDLE_TYPE variable (av or eoc)"; false; \
	fi
	$(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)cp -R $(CLEOPATRE_PATH) $(BUNDLE_PATH)
	$(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 Bundle archive..."
	$(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)cp -R $(BUILDROOT_DOWNLOAD_PATH) $(BUILDROOT_PATH)
	$(Q)[ "$(GEN_BINS)" = "" ] || $(MAKE) $(GEN_BINS)
	$(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)

bundle-clean-standalone:
	$(Q)rm -rf $(WORK_DIRECTORY)



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

cesar-plc:
	$(Q)$(MAKE) -C $(CESAR_PRJ_PATH)/plc clean
	$(Q)rm -fr $(CESAR_PRJ_PATH)/plc/obj
	$(Q)$(MAKE) -C $(CESAR_PRJ_PATH)/plc
	$(Q)cp $(CESAR_PRJ_PATH)/plc/obj/plc.rom $(BUNDLE_PLCBIN_PATH)/$(CESAR_PLC_NAME)

cesar-eoc-master:
	$(Q)$(MAKE) -C $(CESAR_PRJ_PATH)/eoc master-clean
	$(Q)$(MAKE) -C $(CESAR_PRJ_PATH)/eoc master
	$(Q)cp $(CESAR_PRJ_PATH)/eoc/obj/master/master.rom $(BUNDLE_PLCBIN_PATH)/$(CESAR_EOC_MASTER_NAME)

cesar-eoc-slave:
	$(Q)$(MAKE) -C $(CESAR_PRJ_PATH)/eoc slave-clean
	$(Q)$(MAKE) -C $(CESAR_PRJ_PATH)/eoc slave
	$(Q)cp $(CESAR_PRJ_PATH)/eoc/obj/slave/slave.rom $(BUNDLE_PLCBIN_PATH)/$(CESAR_EOC_SLAVE_NAME)

plcd:
	$(Q)$(MAKE) -C $(PLCD_PATH) clean
	$(Q)$(MAKE) -C $(PLCD_PATH) VERSION=$(BUNDLE_VERSION)
	$(Q)cp $(PLCD_PATH)/plcd $(BUNDLE_PLCBIN_PATH)/$(PLCD_NAME)

plcdrv:
	$(Q)$(MAKE) -C $(LINUX_PATH) distclean
	$(Q)cp $(CLEOPATRE_PATH)/buildroot/target/device/Spidcom/spk300g/linux26.config $(LINUX_PATH)/.config
	$(Q)$(MAKE) -C $(LINUX_PATH) ARCH=arm CROSS_COMPILE=arm-linux- oldconfig
	$(Q)$(MAKE) -C $(LINUX_PATH) ARCH=arm CROSS_COMPILE=arm-linux- modules_prepare
	$(Q)$(MAKE) -C $(PLCDRV_PATH) clean
	$(Q)$(MAKE) -C $(PLCDRV_PATH) BUNDLE_VERSION=$(BUNDLE_VERSION)
	$(Q)cp $(PLCDRV_PATH)/plcdrv.ko $(BUNDLE_PLCBIN_PATH)/$(PLCDRV_NAME)
	$(Q)cp $(PLCDRV_PATH)/hotplug-plcdrv $(BUNDLE_PLCBIN_PATH)

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

linux:
	$(Q)for BOARD in $(BOARDS); do \
		$(MAKE) -C $(BUILDROOT_PATH) clean distclean "$$BOARD"_defconfig; \
		$(MAKE) -C $(BUILDROOT_PATH); \
		cp $(BUILDROOT_PATH)/binaries/"$$BOARD"/linux-kernel-$(LINUX_VERSION)-arm $(BUNDLE_GENBIN_PATH)/$(LINUX_NAME)-"$$BOARD"; \
	done

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