summaryrefslogtreecommitdiff
path: root/cleopatre/Makefile
blob: ff8fc65cb4cffa448e05d0cbfbe0340aa41279ee (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
AV_BOARDS=spk300g spk300 spr300 scr310 spk310 spr310
EOC_BOARDS=spk300g_eoc_master spk300g_eoc_slave scr310_eoc_master scr310_eoc_slave spk310_eoc_master spk310_eoc_slave scr310_eoc_master_8m scr310_eoc_slave_8m scr300_eoc_master

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/spidupd_host.c tools/spidupd/spidupd_host.h
AV_UNUSE=devkit Makefile application/onlined application/upnpd $(FCM3_UNUSE) $(FLASHFS_UNUSE) $(NVRAM_AV_UNUSE) $(SPIDUPD_UNUSE)
EOC_UNUSE=devkit Makefile application/upnpd $(FCM3_UNUSE) $(FLASHFS_UNUSE) $(NVRAM_EOC_UNUSE) $(SPIDUPD_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

##################################################################
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)
BUNDLE_PATH=$(BUNDLE_UPPER_PATH)/$(BUNDLE_NAME)
BUNDLE_COMPILE_PATH=$(BUNDLE_PATH)/bundle
BUNDLE_GENBIN_PATH=$(BUNDLE_PATH)/binaries
BUNDLE_PLCBIN_PATH=$(BUNDLE_COMPILE_PATH)/binaries

PLCDRV_NAME=plcdrv.ko
PLCDRV_PATH=$(CURDIR)/devkit/plcdrv/arm
PLCD_NAME=plcd
PLCD_PATH=$(CURDIR)/devkit/plcd
CESAR_PLC_NAME=plc.rom
CESAR_EOC_MASTER_NAME=master.rom
CESAR_EOC_SLAVE_NAME=slave.rom
CESAR_PATH=$(CURDIR)/../cesar/projects

LINUX_NAME=linux-$(LINUX_VERSION)-arm
LINUX_PATH=$(CURDIR)/linux-$(LINUX_VERSION)-spc300
BUILDROOT_GIT_PATH=$(CURDIR)/buildroot
BUILDROOT_PATH=$(BUNDLE_COMPILE_PATH)/buildroot
UBOOT_NAME=u-boot.bin
UBOOT_PATH=$(BUNDLE_COMPILE_PATH)/u-boot-$(UBOOT_VERSION)
FLASHFS_NAME=flashfs
FLASHFS_PATH=$(BUNDLE_COMPILE_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 $(BUNDLE_PATH) ]; then \
	    echo "Bundle already exist please remove it before ($(BUNDLE_PATH))"; false; \
	fi
	$(Q)echo "Generate bundle sources..."
	$(Q)mkdir -p $(BUNDLE_UPPER_PATH) $(BUNDLE_PATH)
	$(Q)git checkout-index --prefix=$(BUNDLE_PATH)/ -a -q
	$(Q)mv $(BUNDLE_PATH)/cleopatre $(BUNDLE_COMPILE_PATH)
	$(Q)rm -rf $(BUNDLE_PATH)/.git
	$(Q)sed -i -e 's/\(BUNDLE_VERSION_GIT *= *\)\(.*\)/\1$(BUNDLE_VERSION)/' $(BUILDROOT_PATH)/target/device/Spidcom/Makefile.in
	$(Q)sed -i -e 's/\(EXTRAVERSION *= *\)\(.*\)/\1-$(BUNDLE_VERSION)/' $(BUNDLE_COMPILE_PATH)/u-boot-1.1.6/Makefile
	$(Q)echo -n "$(BUNDLE_VERSION)" | sed -e 's/\(.\{16\}\).*/\1/' > $(BUILDROOT_PATH)/.version
	$(Q)cd $(BUNDLE_COMPILE_PATH) ; rm -rf $(UNUSE)
	$(Q)echo "Generate PLC binaries..."
	$(Q)mkdir -p $(BUNDLE_PLCBIN_PATH)
	$(Q)[ "$(PLC_BINS)" = "" ] || $(MAKE) $(PLC_BINS)
	$(Q)echo "Generate Bundle archive..."
	$(Q)cd $(BUNDLE_UPPER_PATH) ; tar -cf $(BUNDLE_NAME).tar $(notdir $(BUNDLE_PATH))
	$(Q)echo "Generate Bundle binaries..."
	$(Q)mkdir -p $(BUNDLE_GENBIN_PATH)
	$(Q)cp -R $(BUILDROOT_GIT_PATH)/download $(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 $(notdir $(BUNDLE_PATH))/$(notdir $(BUNDLE_GENBIN_PATH))
	$(Q)bzip2 $(BUNDLE_UPPER_PATH)/$(BUNDLE_NAME).tar
	$(Q)[ "$(DEBUG_BINS)" = "" ] || $(MAKE) $(DEBUG_BINS)

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



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

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

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

cesar-eoc-slave:
	$(Q)$(MAKE) -C $(CESAR_PATH)/eoc slave-clean
	$(Q)$(MAKE) -C $(CESAR_PATH)/eoc slave
	$(Q)cp $(CESAR_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)
	$(Q)cp $(PLCD_PATH)/plcd $(BUNDLE_PLCBIN_PATH)/$(PLCD_NAME)

plcdrv:
	$(Q)$(MAKE) -C $(LINUX_PATH) distclean
	$(Q)cp $(BUILDROOT_GIT_PATH)/target/device/Spidcom/spk300g_eoc_master/linux26_with_netfilter.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)
	$(Q)cp $(PLCDRV_PATH)/plcdrv.ko $(BUNDLE_PLCBIN_PATH)/plcdrv_with_netfilter.ko
	$(Q)$(MAKE) -C $(LINUX_PATH) distclean
	$(Q)cp $(BUILDROOT_GIT_PATH)/target/device/Spidcom/spk300g_eoc_master/linux26_without_netfilter.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)
	$(Q)cp $(PLCDRV_PATH)/plcdrv.ko $(BUNDLE_PLCBIN_PATH)/plcdrv_without_netfilter.ko
	$(Q)ln -s $(BUNDLE_PLCBIN_PATH)/plcdrv_without_netfilter.ko $(BUNDLE_PLCBIN_PATH)/$(PLCDRV_NAME)

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:
	$(MAKE) -C $(FLASHFS_PATH)
	cp $(FLASHFS_PATH)/$(FLASHFS_NAME).jffs2 $(BUNDLE_GENBIN_PATH)/