blob: 82e071ffd538f7eb10f948f70844edfa0ffb9feb (
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
|
# Top level makefile, repo tool should create a link on this file at the root
# of the build environement.
.DEFAULT_GOAL := image
# Parallelism is managed by bitbake for this project
.NOTPARALLEL:
# In this makefile, all targets are phony because dependencies are managed at the bitbake level.
# We don't need to specify all targets here because no files named like them exist at the top level directory.
.PHONY : bbcache
# Use a default build tag when none is set by the caller
NOWDATE := $(shell date +"%Y%m%d%H%M%S")
BUILD_TAG ?= custom_build_$(USER)@$(HOSTNAME)$(NOWDATE)
BB_DL_DIR ?= $(CURDIR)/bbcache/downloads
BB_SSTATE_DIR ?= $(CURDIR)/bbcache/sstate-cache
SDK_HOST ?= linux64
###############################################################################
# Main targets
###############################################################################
setup: pub bbcache
@echo Setup buildenv for SDK host $(SDK_HOST)
@mkdir -p out/$(SDK_HOST)
./meta-intel-edison/setup.sh $(SETUP_ARGS) --dl_dir=$(BB_DL_DIR) --sstate_dir=$(BB_SSTATE_DIR) --build_dir=$(CURDIR)/out/$(SDK_HOST) --build_name=$(BUILD_TAG) --sdk_host=$(SDK_HOST)
@rm -f out/current
@ln -s $(CURDIR)/out/$(SDK_HOST) $(CURDIR)/out/current
@if [ $(SDK_HOST) = macosx ]; then /bin/bash -c "source out/current/poky/oe-init-build-env $(CURDIR)/out/current/build ; bitbake odcctools2-crosssdk -c cleansstate" ; echo "Please make sure that OSX-sdk.zip is available in your bitbake download directory" ; fi
cleansstate: _check_setup_was_done
/bin/bash -c "source out/current/poky/oe-init-build-env $(CURDIR)/out/current/build ; $(CURDIR)/meta-intel-edison/utils/invalidate_sstate.sh $(CURDIR)/out/current/build"
devtools_package: _check_setup_was_done
/bin/bash -c "source out/current/poky/oe-init-build-env $(CURDIR)/out/current/build ; $(CURDIR)/meta-intel-edison-devtools/utils/create_devtools_package.sh $(CURDIR)/out/current/build"
sdk: _check_setup_was_done
/bin/bash -c "source out/current/poky/oe-init-build-env $(CURDIR)/out/current/build ; bitbake edison-image -c populate_sdk"
src-package: pub
./meta-intel-edison-devenv/utils/create_src_package.sh
mv edison-src.tgz $(CURDIR)/pub/edison-src-$(BUILD_TAG).tgz
clean:
rm -rf out
u-boot linux-externalsrc edison-image virtual/kernel: cleansstate
/bin/bash -c "source out/current/poky/oe-init-build-env $(CURDIR)/out/current/build ; bitbake $@"
./meta-intel-edison/utils/flash/postBuild.sh $(CURDIR)/out/current/build
meta-toolchain arduino-toolchain: _check_setup_was_done
/bin/bash -c "source out/current/poky/oe-init-build-env $(CURDIR)/out/current/build ; bitbake -c cleansstate $@ ; bitbake $@"
./meta-intel-edison/utils/flash/postBuild.sh $(CURDIR)/out/current/build
bootloader: u-boot
image: edison-image
kernel: virtual/kernel
toolchain: meta-toolchain
flash: _check_postbuild_was_done
./out/current/build/toFlash/flashall.sh
debian_image:
$(MAKE) setup SETUP_ARGS="$(SETUP_ARGS) --deb_packages"
$(MAKE) image
@echo '*******************************'
@echo '*******************************'
@echo 'Now run the following command to create the debian rootfs:'
@echo 'sudo $(CURDIR)/meta-intel-edison/utils/create-debian-image.sh --build_dir=$(CURDIR)/out/current/build'
@echo 'and run a regular make flash'
@echo '*******************************'
help:
@echo 'Main targets:'
@echo ' help - show this help'
@echo ' clean - remove the out and pub directory'
@echo ' setup - prepare the build env for later build operations'
@echo ' cleansstate - clean the sstate for some recipes to work-around some bitbake limitations'
@echo ' image - build the flashable edison image, results are in out/current/build/toFlash'
@echo ' flash - flash the current build image'
@echo ' sdk - build the SDK for the current build'
@echo ' toolchain - build the cross compilation toolchain for the current build'
@echo ' arduino-toolchain'
@echo ' - build the Arduino toolchain for the current build'
@echo ' src-package - create the external source package'
@echo ' devtools_package - build some extra dev tools packages, results are in out/current/build/devtools_packages/'
@echo
@echo 'Continuous Integration targets:'
@sh -c "$(MAKE) -p _no_targets | awk -F':' '/^ci_[a-zA-Z0-9][^\$$#\/\\t=]*:([^=]|$$)/ {split(\$$1,A,/ /);for(i in A)print \" \"A[i]}' | sort"
@echo
@echo 'Environment variables:'
@echo ' BUILD_TAG - set the build name used for e.g. artifact file naming'
@echo ' BB_DL_DIR - defines the directory (absolute path) where bitbake places downloaded files (defaults to bbcache/downloads)'
@echo ' BB_SSTATE_DIR - defines the directory (absolute path) where bitbake places shared-state files (defaults to bbcache/sstate-cache)'
@echo ' SETUP_ARGS - control advanced behaviour of the setup script (run ./meta-intel-edison/setup.sh --help for more details)'
@echo ' SDK_HOST - the host on which the SDK will run. Must be one of [win32, win64, linux32, linux64, macosx]'
###############################################################################
# Private targets
###############################################################################
_no_targets:
_check_setup_was_done:
@if [ ! -f $(CURDIR)/out/current/build/conf/local.conf ]; then echo Please run \"make setup\" first ; exit 1 ; fi
_check_postbuild_was_done:
@if [ ! -f $(CURDIR)/out/current/build/toFlash/flashall.sh ]; then echo Please run \"make image/bootloader/kernel\" first ; exit 1 ; fi
pub:
@mkdir -p $@
bbcache:
@mkdir -p bbcache
@mkdir -p $(BB_DL_DIR)
@mkdir -p $(BB_SSTATE_DIR)
_image_archive:
cd $(CURDIR)/out/current/build/toFlash ; zip -r $(CURDIR)/pub/edison-image-$(BUILD_TAG).zip `ls`
cd $(CURDIR)/out/current/build/symbols ; zip -r $(CURDIR)/pub/symbols-$(BUILD_TAG).zip `ls`
_devtools_package_archive:
cd $(CURDIR)/out/current/build/devtools_packages ; zip -r $(CURDIR)/pub/edison-devtools-packages-$(BUILD_TAG).zip `ls`
_sdk_archive:
cd $(CURDIR)/out/$(SDK_HOST)/build/tmp/deploy/sdk ; zip -r $(CURDIR)/pub/edison-sdk-$(SDK_HOST)-$(BUILD_TAG).zip `ls *-edison-image-*`
_toolchain_archive:
cd $(CURDIR)/out/$(SDK_HOST)/build/tmp/deploy/sdk ; zip -r $(CURDIR)/pub/edison-meta-toolchain-$(SDK_HOST)-$(BUILD_TAG).zip `ls *-meta-toolchain-*`
_arduino-toolchain_archive:
cd $(CURDIR)/out/$(SDK_HOST)/build/tmp/deploy/sdk ; zip -r $(CURDIR)/pub/edison-meta-toolchain-$(SDK_HOST)-$(BUILD_TAG).zip `ls arduino-toolchain-*`
###############################################################################
# Continuous Integration targets: one per checkbox available in jenkins
# Each target places the the end-user artifact in the pub/ directory
###############################################################################
ci_image: setup cleansstate devtools_package _devtools_package_archive image _image_archive
_ci_sdk:
$(MAKE) setup cleansstate sdk _sdk_archive SDK_HOST=$(SDK_HOST)
_ci_toolchain:
$(MAKE) setup cleansstate toolchain _toolchain_archive SDK_HOST=$(SDK_HOST)
_ci_arduino-toolchain:
$(MAKE) setup cleansstate arduino-toolchain _arduino-toolchain_archive SDK_HOST=$(SDK_HOST)
ci_sdk_win32:
$(MAKE) _ci_sdk SDK_HOST=win32
ci_sdk_win64:
$(MAKE) _ci_sdk SDK_HOST=win64
ci_sdk_linux32:
$(MAKE) _ci_sdk SDK_HOST=linux32
ci_sdk_linux64:
$(MAKE) _ci_sdk SDK_HOST=linux64
ci_sdk_macosx:
$(MAKE) _ci_sdk SDK_HOST=macosx
ci_toolchain_win32:
$(MAKE) _ci_toolchain SDK_HOST=win32
ci_toolchain_win64:
$(MAKE) _ci_toolchain SDK_HOST=win64
ci_toolchain_linux32:
$(MAKE) _ci_toolchain SDK_HOST=linux32
ci_toolchain_linux64:
$(MAKE) _ci_toolchain SDK_HOST=linux64
ci_toolchain_macosx:
$(MAKE) _ci_toolchain SDK_HOST=macosx
ci_arduino-toolchain_win32:
$(MAKE) _ci_arduino-toolchain SDK_HOST=win32
ci_arduino-toolchain_linux32:
$(MAKE) _ci_arduino-toolchain SDK_HOST=linux32
ci_arduino-toolchain_linux64:
$(MAKE) _ci_arduino-toolchain SDK_HOST=linux64
ci_arduino-toolchain_macosx:
$(MAKE) _ci_arduino-toolchain SDK_HOST=macosx
ci_image-from-src-package-and-GPL-LGPL-sources_archive: setup devtools_package _devtools_package_archive src-package
cp $(CURDIR)/pub/edison-src-$(BUILD_TAG).tgz $(CURDIR)/out/current
cd $(CURDIR)/out/current ; tar -xvf edison-src-$(BUILD_TAG).tgz
cd $(CURDIR)/out/current/edison-src ; /bin/bash -c "SETUP_ARGS=\"$(SETUP_ARGS) --create_src_archive\" make setup cleansstate image _image_archive SDK_HOST=$(SDK_HOST)"
cd $(CURDIR)/out/current/edison-src/out/current/build/toFlash ; zip -r $(CURDIR)/pub/edison-image-from-src-package-$(BUILD_TAG).zip `ls`
cd $(CURDIR)/out/current/edison-src/out/current/build/tmp/deploy/sources ; zip -r $(CURDIR)/pub/edison-GPL_LGPL-sources-$(BUILD_TAG).zip `ls`
ci_full:
$(MAKE) ci_image BUILD_TAG=$(BUILD_TAG)
$(MAKE) ci_image-from-src-package-and-GPL-LGPL-sources_archive BUILD_TAG=$(BUILD_TAG)
$(MAKE) ci_sdk_win32 ci_toolchain_win32 ci_arduino-toolchain_win32 BUILD_TAG=$(BUILD_TAG)
$(MAKE) ci_sdk_win64 ci_toolchain_win64 BUILD_TAG=$(BUILD_TAG)
$(MAKE) ci_sdk_linux32 ci_toolchain_linux32 ci_arduino-toolchain_linux32 BUILD_TAG=$(BUILD_TAG)
$(MAKE) ci_sdk_linux64 ci_toolchain_linux64 ci_arduino-toolchain_linux64 BUILD_TAG=$(BUILD_TAG)
$(MAKE) ci_sdk_macosx ci_toolchain_macosx ci_arduino-toolchain_macosx BUILD_TAG=$(BUILD_TAG)
|